aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/ximtool
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/x11iraf/ximtool
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/x11iraf/ximtool')
-rw-r--r--vendor/x11iraf/ximtool/.alias5
-rw-r--r--vendor/x11iraf/ximtool/.gdb_history33
-rw-r--r--vendor/x11iraf/ximtool/BUGS196
-rw-r--r--vendor/x11iraf/ximtool/BUGS-v2.056
-rw-r--r--vendor/x11iraf/ximtool/Imakefile100
-rw-r--r--vendor/x11iraf/ximtool/NOTES222
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-0.5.info798
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-alt.man1568
-rwxr-xr-xvendor/x11iraf/ximtool/OLD/ximtool-mag5494
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-mag.c419
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-mag.gui5388
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-mag.html697
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-mag.man1493
-rw-r--r--vendor/x11iraf/ximtool/OLD/ximtool-mag.ps10025
-rw-r--r--vendor/x11iraf/ximtool/TODO241
-rw-r--r--vendor/x11iraf/ximtool/clients.old/.DONE0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/DONE0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/Imakefile32
-rw-r--r--vendor/x11iraf/ximtool/clients.old/README0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/_spplint489
-rw-r--r--vendor/x11iraf/ximtool/clients.old/doc/Notes199
-rw-r--r--vendor/x11iraf/ximtool/clients.old/doc/README0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/README0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/dspmmap.f356
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/dspmmap.x244
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/idxstr.f44
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/idxstr.x54
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/mkpkg17
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/reopen.f70
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/reopen.x55
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/README302
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/ccsystems.hlp134
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skclose.hlp23
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skcopy.hlp24
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecim.hlp55
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwcs.hlp62
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwstr.hlp46
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skenwcs.hlp32
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skequatorial.hlp59
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiprint.hlp39
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiwrite.hlp43
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sklltran.hlp60
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksaveim.hlp39
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksetd.hlp53
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skseti.hlp93
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksets.hlp36
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstatd.hlp49
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstati.hlp79
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstats.hlp40
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skultran.hlp51
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hd25
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hlp306
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.men15
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/mkpkg16
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.f1412
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.x999
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.f363
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.x157
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.f179
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.x90
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.f179
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.x90
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.f756
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.x577
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.f45
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.x53
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.f1014
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.x510
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcs.h132
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcsdef.h24
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.f89
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.x61
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/ximtool.f510
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/ximtool.x459
-rw-r--r--vendor/x11iraf/ximtool/clients.old/lib/zfiond.c723
-rw-r--r--vendor/x11iraf/ximtool/clients.old/mkpkg34
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/README0
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/class.com6
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/mkpkg15
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.f1124
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.x769
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.f1975
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.x1268
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.f30
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.x50
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.f30
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.x50
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcspix.h111
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.f229
-rw-r--r--vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.x185
-rw-r--r--vendor/x11iraf/ximtool/clients.old/x_ism.f145
-rw-r--r--vendor/x11iraf/ximtool/clients.old/x_ism.x1
-rw-r--r--vendor/x11iraf/ximtool/clients/DONE0
-rw-r--r--vendor/x11iraf/ximtool/clients/Imakefile32
-rw-r--r--vendor/x11iraf/ximtool/clients/Makefile1067
-rw-r--r--vendor/x11iraf/ximtool/clients/README3
-rw-r--r--vendor/x11iraf/ximtool/clients/doc/Notes199
-rw-r--r--vendor/x11iraf/ximtool/clients/doc/README3
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/README11
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/dspmmap.x244
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/idxstr.x54
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/ism.x432
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/ismcom.com4
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/ismfd.com11
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/mkpkg15
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/wcsgfterm.x61
-rw-r--r--vendor/x11iraf/ximtool/clients/lib/ximtool.x531
-rw-r--r--vendor/x11iraf/ximtool/clients/mkpkg34
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/README0
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/class.com6
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/mkpkg16
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/t_wcspix.x792
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcimage.x1465
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcimage.x.bak1515
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcmef.x50
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcmspec.x50
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcspix.h112
-rw-r--r--vendor/x11iraf/ximtool/clients/wcspix/wcunknown.x185
-rw-r--r--vendor/x11iraf/ximtool/clients/x_ism.x1
-rw-r--r--vendor/x11iraf/ximtool/data/README2
-rw-r--r--vendor/x11iraf/ximtool/data/aips0.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/blue.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/brightness.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/color.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/contrast.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/green.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/halley.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/heat.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/hflip.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/larrow.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/panel.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/panel1.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/qmark.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/rainbow.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/rarrow.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/red.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/solid.xbm19
-rw-r--r--vendor/x11iraf/ximtool/data/staircase.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/standard.lut257
-rw-r--r--vendor/x11iraf/ximtool/data/vflip.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/xflip.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/xflip2.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/yflip.xbm6
-rw-r--r--vendor/x11iraf/ximtool/data/yflip2.xbm6
-rw-r--r--vendor/x11iraf/ximtool/eps.c1902
-rw-r--r--vendor/x11iraf/ximtool/eps.h146
-rw-r--r--vendor/x11iraf/ximtool/fitsio.c923
-rw-r--r--vendor/x11iraf/ximtool/gifio.c1325
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/blink.obj46
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/blink.res167
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/boot.tcl74
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/compass.tcl205
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/compass.tcl.bak195
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/display.res451
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/func.tcl123
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/global.res103
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/global.tcl147
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/hdr.obj36
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/hdr.res138
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/hdr.tcl105
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/help.obj27
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/help.res111
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/help.tcl209
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/imagewin.tcl1123
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/info.res58
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/info.tcl86
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/ism.tcl423
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/ism.tcl.bak411
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/load.res173
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/load.tcl247
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/magnifier.tcl576
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/main-old.obj51
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/main-old.res422
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/main.obj85
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/main.res521
-rwxr-xr-xvendor/x11iraf/ximtool/gui.bak/mkgui81
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/panel.obj412
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/panel.res69
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/panel.tcl833
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/panner.tcl535
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/param.obj32
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/pixtab.obj30
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/pixtab.res128
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/pixtab.tcl144
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/plots.tcl659
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/print.res304
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/print.tcl342
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/resources.res26
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/rulers.tcl524
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/save.res143
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/save.tcl156
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/tcl.obj13
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/tcl.res44
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/tcl.tcl36
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/tile.res149
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/tile.tcl214
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/toolbars.tcl555
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/warn.obj12
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/warn.res49
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/warn.tcl49
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/wcs.res212
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/wcs.tcl464
-rw-r--r--vendor/x11iraf/ximtool/gui.bak/zztest56
-rw-r--r--vendor/x11iraf/ximtool/gui/blink.obj46
-rw-r--r--vendor/x11iraf/ximtool/gui/blink.res167
-rw-r--r--vendor/x11iraf/ximtool/gui/boot.tcl74
-rw-r--r--vendor/x11iraf/ximtool/gui/compass.tcl215
-rw-r--r--vendor/x11iraf/ximtool/gui/compass.tcl.bak195
-rw-r--r--vendor/x11iraf/ximtool/gui/compass.tcl.new205
-rw-r--r--vendor/x11iraf/ximtool/gui/display.res451
-rw-r--r--vendor/x11iraf/ximtool/gui/func.tcl202
-rw-r--r--vendor/x11iraf/ximtool/gui/global.res161
-rw-r--r--vendor/x11iraf/ximtool/gui/global.tcl147
-rw-r--r--vendor/x11iraf/ximtool/gui/hdr.obj36
-rw-r--r--vendor/x11iraf/ximtool/gui/hdr.res138
-rw-r--r--vendor/x11iraf/ximtool/gui/hdr.tcl105
-rw-r--r--vendor/x11iraf/ximtool/gui/help.obj27
-rw-r--r--vendor/x11iraf/ximtool/gui/help.res111
-rw-r--r--vendor/x11iraf/ximtool/gui/help.tcl209
-rw-r--r--vendor/x11iraf/ximtool/gui/imagewin.tcl1155
-rw-r--r--vendor/x11iraf/ximtool/gui/info.res58
-rw-r--r--vendor/x11iraf/ximtool/gui/info.tcl86
-rw-r--r--vendor/x11iraf/ximtool/gui/ism.tcl423
-rw-r--r--vendor/x11iraf/ximtool/gui/ism.tcl.bak411
-rw-r--r--vendor/x11iraf/ximtool/gui/load.res173
-rw-r--r--vendor/x11iraf/ximtool/gui/load.tcl247
-rw-r--r--vendor/x11iraf/ximtool/gui/magnifier.tcl577
-rw-r--r--vendor/x11iraf/ximtool/gui/main-old.obj52
-rw-r--r--vendor/x11iraf/ximtool/gui/main-old.res422
-rw-r--r--vendor/x11iraf/ximtool/gui/main.obj86
-rw-r--r--vendor/x11iraf/ximtool/gui/main.res525
-rwxr-xr-xvendor/x11iraf/ximtool/gui/mkgui81
-rw-r--r--vendor/x11iraf/ximtool/gui/panel.obj412
-rw-r--r--vendor/x11iraf/ximtool/gui/panel.res69
-rw-r--r--vendor/x11iraf/ximtool/gui/panel.tcl835
-rw-r--r--vendor/x11iraf/ximtool/gui/panner.tcl536
-rw-r--r--vendor/x11iraf/ximtool/gui/param.obj33
-rw-r--r--vendor/x11iraf/ximtool/gui/pixtab.obj30
-rw-r--r--vendor/x11iraf/ximtool/gui/pixtab.res128
-rw-r--r--vendor/x11iraf/ximtool/gui/pixtab.tcl144
-rw-r--r--vendor/x11iraf/ximtool/gui/plots.tcl667
-rw-r--r--vendor/x11iraf/ximtool/gui/print.res304
-rw-r--r--vendor/x11iraf/ximtool/gui/print.tcl342
-rw-r--r--vendor/x11iraf/ximtool/gui/resources.res26
-rw-r--r--vendor/x11iraf/ximtool/gui/rulers.tcl524
-rw-r--r--vendor/x11iraf/ximtool/gui/save.res143
-rw-r--r--vendor/x11iraf/ximtool/gui/save.tcl156
-rw-r--r--vendor/x11iraf/ximtool/gui/tcl.obj13
-rw-r--r--vendor/x11iraf/ximtool/gui/tcl.res44
-rw-r--r--vendor/x11iraf/ximtool/gui/tcl.tcl36
-rw-r--r--vendor/x11iraf/ximtool/gui/tile.res149
-rw-r--r--vendor/x11iraf/ximtool/gui/tile.tcl214
-rw-r--r--vendor/x11iraf/ximtool/gui/toolbars.tcl557
-rw-r--r--vendor/x11iraf/ximtool/gui/warn.obj12
-rw-r--r--vendor/x11iraf/ximtool/gui/warn.res49
-rw-r--r--vendor/x11iraf/ximtool/gui/warn.tcl49
-rw-r--r--vendor/x11iraf/ximtool/gui/wcs.res212
-rw-r--r--vendor/x11iraf/ximtool/gui/wcs.tcl464
-rw-r--r--vendor/x11iraf/ximtool/gui2c.sed6
-rw-r--r--vendor/x11iraf/ximtool/iis.c1698
-rw-r--r--vendor/x11iraf/ximtool/iis.h18
-rw-r--r--vendor/x11iraf/ximtool/irafio.c585
-rw-r--r--vendor/x11iraf/ximtool/ism.c706
-rw-r--r--vendor/x11iraf/ximtool/ism_wcspix.c140
-rw-r--r--vendor/x11iraf/ximtool/load.c925
-rw-r--r--vendor/x11iraf/ximtool/logo.c36
-rw-r--r--vendor/x11iraf/ximtool/logo.h17485
-rw-r--r--vendor/x11iraf/ximtool/logo/NOTES17
-rw-r--r--vendor/x11iraf/ximtool/logo/logo.bin.gzbin0 -> 70597 bytes
-rw-r--r--vendor/x11iraf/ximtool/logo/logo.fitsbin0 -> 1054080 bytes
-rw-r--r--vendor/x11iraf/ximtool/logo/logo.fits.gzbin0 -> 112284 bytes
-rw-r--r--vendor/x11iraf/ximtool/logo/mkhdr.c31
-rw-r--r--vendor/x11iraf/ximtool/luts/README37
-rw-r--r--vendor/x11iraf/ximtool/luts/alex.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/backgr.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/blulut.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/flag.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl11.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl12.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl14.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl15.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl2.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl4.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl5.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/idl6.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/ikon.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/isophot.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/light.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/lnspiral.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/manycol.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/mousse.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/pastel.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/pseudo1.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/pseudo2.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/rainbow.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/rainbow1.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/rainbow2.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/rainbow3.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/rainbow4.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/random.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/random1.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/random2.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/random3.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/random4.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/real.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/smooth.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/staircase.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/stairs8.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/stairs9.lut256
-rw-r--r--vendor/x11iraf/ximtool/luts/standard.lut256
-rw-r--r--vendor/x11iraf/ximtool/print.c387
-rw-r--r--vendor/x11iraf/ximtool/quant.c797
-rw-r--r--vendor/x11iraf/ximtool/rasio.c660
-rw-r--r--vendor/x11iraf/ximtool/raster.c2995
-rw-r--r--vendor/x11iraf/ximtool/save.c377
-rw-r--r--vendor/x11iraf/ximtool/tiffio.c197
-rw-r--r--vendor/x11iraf/ximtool/util.c251
-rw-r--r--vendor/x11iraf/ximtool/ximclient.c2576
-rw-r--r--vendor/x11iraf/ximtool/ximprint.cfg30
-rwxr-xr-xvendor/x11iraf/ximtool/ximtool-alt.csh98
l---------vendor/x11iraf/ximtool/ximtool-alt.gui1
-rwxr-xr-xvendor/x11iraf/ximtool/ximtool-old.csh78
-rw-r--r--vendor/x11iraf/ximtool/ximtool-old.gui10873
-rw-r--r--vendor/x11iraf/ximtool/ximtool.c640
-rw-r--r--vendor/x11iraf/ximtool/ximtool.gui11567
-rw-r--r--vendor/x11iraf/ximtool/ximtool.gui.h11567
-rw-r--r--vendor/x11iraf/ximtool/ximtool.h733
-rw-r--r--vendor/x11iraf/ximtool/ximtool.html1219
-rw-r--r--vendor/x11iraf/ximtool/ximtool.html.h1219
-rw-r--r--vendor/x11iraf/ximtool/ximtool.man2338
-rw-r--r--vendor/x11iraf/ximtool/ximtool.ps16410
-rw-r--r--vendor/x11iraf/ximtool/zscale.c532
332 files changed, 180496 insertions, 0 deletions
diff --git a/vendor/x11iraf/ximtool/.alias b/vendor/x11iraf/ximtool/.alias
new file mode 100644
index 00000000..21e56fc4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/.alias
@@ -0,0 +1,5 @@
+
+alias mx "c;make ; ./ximtool -gui ximtool-alt.gui zz.fits"
+alias x "c;./ximtool -gui ximtool-alt.gui zz.fits"
+alias z "c;(chdir gui; mkgui) ; ./ximtool -gui ximtool-alt.gui zz.fits"
+alias zz "c;(chdir gui; mkgui) ; make; ./ximtool -gui ximtool-alt.gui zz.fits"
diff --git a/vendor/x11iraf/ximtool/.gdb_history b/vendor/x11iraf/ximtool/.gdb_history
new file mode 100644
index 00000000..9967bc5e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/.gdb_history
@@ -0,0 +1,33 @@
+b bob
+run -gui xmin.gui
+wgere
+where
+s
+p w->gterm.window
+p *w->gterm.window
+s
+p gc
+p *gc
+c
+s
+p w->gterm.window
+quit
+quit
+b wcs_update
+run
+quit
+b wcs_update
+run
+quit
+b wcs_update
+run
+where
+c
+c
+quit
+run
+where
+quit
+run
+where
+quit
diff --git a/vendor/x11iraf/ximtool/BUGS b/vendor/x11iraf/ximtool/BUGS
new file mode 100644
index 00000000..5d6a3bbe
--- /dev/null
+++ b/vendor/x11iraf/ximtool/BUGS
@@ -0,0 +1,196 @@
+From stetson@dao.nrc.ca Fri Aug 16 14:21:30 1996
+Received: from noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA19724; Fri, 16 Aug 96 14:21:28 MST; for fitz
+Received: from dao.nrc.ca (dns.dao.nrc.ca [204.174.103.34]) by noao.edu (8.7.5/8.7.3/SAG-16Aug96) with SMTP id OAA09562 for <fitz@noao.edu>; Fri, 16 Aug 1996 14:21:25 -0700 (MST)
+Received: from kwakiutl.nrc.ca by dao.nrc.ca (5.x/SMI-SVR4)
+ id AA02855; Fri, 16 Aug 1996 14:21:11 -0700
+Received: by kwakiutl.nrc.ca (5.x/SMI-SVR4)
+ id AA29687; Fri, 16 Aug 1996 14:16:17 -0700
+Date: Fri, 16 Aug 1996 14:16:17 -0700
+From: stetson@dao.nrc.ca (Peter B. Stetson)
+Message-Id: <9608162116.AA29687@kwakiutl.nrc.ca>
+To: fitz@noao.edu
+Subject: Re: two more
+Content-Length: 529
+X-Lines: 16
+Status: RO
+X-Status:
+
+Not only does it not reset the toggle on the control panel, it doesn't
+seem to cause antialiasing to happen in the main window.
+
+I am certain that I am not zooming into a blank area of the image.
+I am zooming onto the center of the image. Zoom factors
+
+1 2 3 4 5 6 7 8
+
+work fine, but when I go from 8 to 9 the image goes black, going back
+to 8 the image reappears. Like other apparent Ximtool anomalies, this
+may be a function of my having an oldish X-terminal with 8 Mbytes of
+memory?
+
+Obviously, none of this is vital.
+
+PBS
+
+From sharp@noao.edu Fri Sep 20 00:21:01 1996
+Received: from noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA00715; Fri, 20 Sep 96 00:20:59 MST; for fitz
+Received: from robur.tuc.noao.edu (robur.tuc.noao.edu [140.252.1.10]) by noao.edu (8.7.5/8.7.3/SAG-16Aug96) with SMTP id AAA28798 for <fitz@noao.edu>; Fri, 20 Sep 1996 00:20:57 -0700 (MST)
+Received: by vms.noao.edu (MX V4.1 VAX) id 3; Fri, 20 Sep 1996 00:20:53 MST
+Sender: sharp@noao.edu
+Date: Fri, 20 Sep 1996 00:20:52 MST
+From: Nigel Sharp <sharp@vms.noao.edu>
+Reply-To: sharp@noao.edu
+To: fitz@noao.edu
+Cc: sharp@noao.edu
+Message-Id: <009A8A12.0BC5D9B4.3@vms.noao.edu>
+Subject: Re: ximtool
+Status: RO
+
+I'll tell you first.
+a) sometimes I get a display where the image sent from IRAF appears in
+ the panner window but not in the main window, no matter where I
+ move the window around in the whole frame. I have soetimes cured this
+ by quitting ximtool and restarting it.
+b) if I use the auotscale to fit the entire image in the window, and
+ the frame is not the same aspect ratio as the ximtool window, then
+ I get residual image in the borders around the shrunk-to-fit full
+ frame.
+I can't get these consistently, although it happened several times this
+evening (it makes imedit very tricky when there's no image in the main
+ximtool window !!).
+
+From fitz Fri Sep 20 00:34:38 1996
+Received: by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA03455; Fri, 20 Sep 96 00:34:37 MST; for fitz
+Date: Fri, 20 Sep 96 00:34:37 MST
+From: fitz (Mike Fitzpatrick)
+Message-Id: <9609200734.AA03455@tucana.tuc.noao.edu>
+To: sharp
+Subject: Re: ximtool
+Cc: fitz
+Status: RO
+
+I don't really recognize either problem, but have a few comments
+
+> a) sometimes I get a display where the image sent from IRAF appears in
+> the panner window but not in the main window, no matter where I
+> move the window around in the whole frame. I have soetimes cured this
+> by quitting ximtool and restarting it.
+ Was the image zoomed at the time. I do know of a bug where a zoom
+factor of 9 causes this, zooming out then back in seems to cure it.
+
+> b) if I use the auotscale to fit the entire image in the window, and
+> the frame is not the same aspect ratio as the ximtool window, then
+> I get residual image in the borders around the shrunk-to-fit full frame.
+ On the wishlist is a 'snap-to-equal-aspect' option, I think this
+may be what you're talking about. To be honest I haven't played much with
+the autoscale so it could be something else.
+ I'll have a look at both of these but much can't be done until after
+the ADASS unfortunately. I'll see if Doug knows more about these (he was
+keeper of the buglist until I started working on it, then I got my own
+list of bugs!).
+
+From sharp@noao.edu Fri Sep 20 00:39:37 1996
+Received: from noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA03541; Fri, 20 Sep 96 00:39:33 MST; for fitz
+Received: from robur.tuc.noao.edu (robur.tuc.noao.edu [140.252.1.10]) by noao.edu (8.7.5/8.7.3/SAG-16Aug96) with SMTP id AAA28981 for <fitz@noao.edu>; Fri, 20 Sep 1996 00:39:27 -0700 (MST)
+Received: by vms.noao.edu (MX V4.1 VAX) id 2; Fri, 20 Sep 1996 00:39:23 MST
+Sender: sharp@noao.edu
+Date: Fri, 20 Sep 1996 00:39:22 MST
+From: Nigel Sharp <sharp@vms.noao.edu>
+Reply-To: sharp@noao.edu
+To: fitz@noao.edu
+Cc: sharp@noao.edu
+Message-Id: <009A8A14.A14D0BF4.2@vms.noao.edu>
+Subject: Re: ximtool
+Status: RO
+
+Oh, it's not urgent and can certainly wait until after ADASS and beyond,
+but no, neither thing you mention seems relevant. I don't want to
+go to equal aspect necessarily, I just wondered why the border wasn't
+cleared when I zoomed out by using auto, and the former is not affected
+by anything I can do - zoom in/out, window, anything - the image is
+just not there in the main window.
+
+Anyway, just so it gets into the system somewhere so I don't feel
+quite so lonely with my problems (neither JB nor Dave B had seen or
+heard of missing images of this sort).
+
+Time for me to move on - you go on back to ADASS - or your mailing
+problem - I have to sleep for a bit.
+
+From jacoby@noao.edu Fri Sep 20 17:18:43 1996
+Received: from noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA10420; Fri, 20 Sep 96 17:18:40 MST; for fitz
+Received: from madrona.tuc.noao.edu (madrona.tuc.noao.edu [140.252.3.86]) by noao.edu (8.7.5/8.7.3/SAG-16Aug96) with SMTP id RAA27447 for <fitz>; Fri, 20 Sep 1996 17:18:35 -0700 (MST)
+Received: by madrona.tuc.noao.edu (4.1/SAG.sun.11)
+ id AA02504; Fri, 20 Sep 96 17:18:35 MST; for fitz
+Date: Fri, 20 Sep 96 17:18:35 MST
+From: jacoby@noao.edu (George Jacoby X292)
+Message-Id: <9609210018.AA02504@madrona.tuc.noao.edu>
+To: fitz@noao.edu
+Subject: minor bug in ximtool
+Status: R
+
+
+Mike,
+
+It seems that the print window text entry for "lpr" also needs
+a CR to accept a revision. For example, if I want to enter "lpr -Plw9",
+I must hit CR, or the default of "lpr" is used.
+
+I haven't looked at the "Save As..." window, but it may suffer similarly.
+
+George
+
+From jacoby@noao.edu Wed Nov 27 16:58:07 1996
+Received: from noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA06536; Wed, 27 Nov 96 16:58:06 MST; for fitz
+Received: from madrona.tuc.noao.edu (madrona.tuc.noao.edu [140.252.3.86]) by noao.edu (8.7.5/8.7.3/SAG-16Aug96) with SMTP id QAA06950 for <fitz>; Wed, 27 Nov 1996 16:58:05 -0700 (MST)
+Received: by madrona.tuc.noao.edu (4.1/SAG.sun.11)
+ id AA28504; Wed, 27 Nov 96 16:58:04 MST; for fitz
+Date: Wed, 27 Nov 96 16:58:04 MST
+From: jacoby@noao.edu (George Jacoby X292)
+Message-Id: <9611272358.AA28504@madrona.tuc.noao.edu>
+To: fitz@noao.edu
+Subject: ximtool
+Status: RO
+
+
+Mike,
+
+I found a couple of oddities in Ximtool.
+
+1. Loading an image into a frame buffer clears other frame buffers.
+ I tried to load a GIF file into frame 1, and another into frame 2.
+ Only the last image loaded survived.
+
+2. In the load panel, one must hit RETURN after entering a file name
+ before the load will occur via the LOAD button. This is similar to
+ earlier problems with the typing buffers.
+
+3. Also in a typing buffer, if I highlight text and then begin typing,
+ I expect the highlighted text to be deleted. Instead, the new text
+ is inserted along with the old text.
+
+George
+
+From dbell@bigx Tue Dec 10 14:21:46 1996
+Received: from bigx.tuc.noao.edu by tucana.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA26048; Tue, 10 Dec 96 14:21:46 MST; for fitz
+Received: by bigx.tuc.noao.edu (4.1/SAG.sat.14)
+ id AA21334; Tue, 10 Dec 96 14:21:45 MST; for fitz
+Date: Tue, 10 Dec 96 14:21:45 MST
+From: dbell@bigx (David Bell)
+Message-Id: <9612102121.AA21334@bigx.tuc.noao.edu>
+To: fitz
+Status: RO
+
+
+Warning: Cannot convert string "-adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1" to type FontStruct
+Warning: Cannot convert string "-adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" to type FontStruct
+Warning: Cannot convert string "-*-helvetica-medium-r-normal-*-12-*-iso8859-1" to type FontStruct
+Warning: Cannot convert string "-adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" to type FontStruct
+
diff --git a/vendor/x11iraf/ximtool/BUGS-v2.0 b/vendor/x11iraf/ximtool/BUGS-v2.0
new file mode 100644
index 00000000..bf049f20
--- /dev/null
+++ b/vendor/x11iraf/ximtool/BUGS-v2.0
@@ -0,0 +1,56 @@
+ 11/1/08
+TODO:
+-----
+ - 15/16/32-bit visual support
+
+BUGS:
+-----
+1/13 - Compass needs a redraw after a new image display
+ - Vertical plot marker slow to update when horizontal plot open
+??? - Reports of ism_wcspix.e crash
+11/8 - GUI layout sizes when plots are closed
+ - "X" window button closes entire app
+11/7 - Packaging of "-alt" and "-old" versions
+11/8 - Max app version
+11/1 - Check for "v1.3" in gui/docs
+ - color9 on plot backgrounds not showing up properly
+ - Opening vertical cut-plot first expands window too wide, doing
+ horizontal first is okay
+
+11/4 - Compass color shows up as red, should be yellow
+ - Window resize breaks colormap focus box
+11/4 - Compass doesn't respond to X/Y flips
+ - When using image data for cut-plots, need to reset plot scale
+ - Zoom-out => cursor readout becomes invalid when off-image
+ => magnifier doesn't show black background, shows parts
+ of the previous background image
+11/10 - Resetting the cmap focus box size to less than the full window
+ and changing the colormap from the control panel updates only
+ the focus box on the display.
+11/10 - Displaying dev$pix into two frames and using the 'Match' button
+ doesn't clear the entire frame buffer with the background
+ color
+11/10 - Frames display with different colormaps only update to the size of
+ the cmap focus box when switching frames.
+11/10 - Background and text colors for Tcl shell, Info panel, etc "not right"
+11/10 - Ctrl-a sets toggles the Auto-register but doesn't reset the toolbar
+ button
+11/10 - Ctrl-t toggles tile-frame on control panel, but doesn't change
+ image display or toolbar
+11/10 - Alt-c doean't properly toggle the Control Panel
+11/18 - BadAlloc from XCreatePixmqp seen on some systems (e.g. Leopard PPC)
+12/1 - BadValue error from XQueryColors on Leopard Intel systems.
+ Complaint is about color '0x2f4f4f' (color9=darkslategrey, used in
+ hcut/vcut in GUI and main color9 resource definition). Duplicated
+ on Leopard/PPC but only with 15-plane colors (i.e. 'Thousands' in
+ X11 display preferences).
+11/20 - ISM prints 'bad fd' (and perhaps also a 'memory corrupted') message
+ when quitting ximtool
+ - The -alt and -old script use of '+' flag on "tail" doesn't work
+ on newer linux systems
+12/5 - Save panel doesn't save a tiled screen display, just the current
+ display to a window the size of the display
+ - On PPC systems, Save shows a yellow background for PseudoColor GIF
+ - Colormap focus box wrong size for e.g. imt4096 zoomed out
+12/3 - Print box on Leopard PPC shows garbage status and crashes
+12/3 - Save box on Leopard PPC shows garbage status message
diff --git a/vendor/x11iraf/ximtool/Imakefile b/vendor/x11iraf/ximtool/Imakefile
new file mode 100644
index 00000000..28d4bc8c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/Imakefile
@@ -0,0 +1,100 @@
+# Imakefile for the XImtool image display server.
+# 18Aug93 - Doug Tody, NOAO/IRAF
+
+X11IRAFDIR = ../
+#include <../X11IRAF.tmpl>
+
+/* Hack to build on NOAO HP systems where the Xmu and Xaw libs had to be added
+ * specially to the system they don't come with the default X11 development
+ * system. This also avoids the binary requiring the shared lib version on
+ * systems which may not have it.
+ */
+
+#define IHaveSubdirs
+#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
+
+#if defined(HPArchitecture) && OSMajorVersion >= 10
+ XMULIB = /usr/lib/X11R6/libXmu.a
+ XAWLIB = /usr/lib/X11R6/libXaw.a
+#endif
+
+
+ CDEBUGFLAGS = -g
+ XAWLIB = LibXaw3d
+
+ LOCAL_LDFLAGS = $(X11IRAF_LDFLAGS)
+ EXTRA_INCLUDES = $(X11IRAF_INCLUDES)
+ OBMLIBS = LibObm LibXpm
+ MATHLIB = -lm
+ DEPOBM = DepLibObm
+
+ SRCS = eps.c iis.c load.c print.c raster.c save.c \
+ rasio.c fitsio.c ximclient.c ximtool.c quant.c util.c \
+ zscale.c gifio.c tiffio.c irafio.c ism.c ism_wcspix.c \
+ logo.c
+ OBJS = eps.o iis.o load.o print.o raster.o save.o \
+ rasio.o fitsio.o ximclient.o ximtool.o quant.o util.o \
+ zscale.o gifio.o tiffio.o irafio.o ism.o ism_wcspix.o \
+ logo.o
+ ISM_DIRS = clients
+ ISM_DONE = clients/DONE
+
+ SUBDIRS = $(ISM_DIRS)
+
+
+AllTarget(ximtool ximtool-alt ximtool-old ism_clients)
+
+all::
+ @(cd clients; $(MAKE) $(MFLAGS) all X11IRAFDIR=../../)
+
+NormalProgramTarget(ximtool,$(OBJS),${DEPOBM},${OBMLIBS} XawClientLibs, $(MATHLIB))
+
+ximtool-alt::
+ cat ximtool-alt.csh ximtool.gui > ximtool-alt
+ chmod 755 ximtool-alt
+
+ximtool-old::
+ cat ximtool-old.csh ximtool-old.gui > ximtool-old
+ chmod 755 ximtool-old
+
+ism_clients: $(ISM_DIRS) $(ISM_DONE)
+ @(cd clients; $(MAKE) $(MFLAGS) all X11IRAFDIR=../../)
+
+#install::
+# @(cd clients; $(MAKE) $(MFLAGS) install X11IRAFDIR=../../)
+
+clean::
+ $(RM) ximtool-old ximtool-alt
+
+
+${DEPOBM}:
+
+ximtool.o: ximtool.gui.h ../version.h
+ximtool.c: ximtool.gui.h
+ximclient.o: ximtool.html.h
+ximclient.c: ximtool.html.h
+
+ximtool.gui.h: ximtool.gui
+ sed -f gui2c.sed ximtool.gui > ximtool.gui.h
+ximtool.html.h: ximtool.html
+ sed -f gui2c.sed ximtool.html > ximtool.html.h
+
+XCOMM XImtool.ad: ximtool.gui
+XCOMM sed -e '1,/^appInitialize/d' -e '/^}/,\$d' ximtool.gui > XImtool.ad
+
+#if InstallBinaries
+install:: ximtool
+ -@if [ -d X11irafBinDir ]; then set +x; \
+ else (set -x; $(MKDIRHIER) X11irafBinDir); fi
+ $(CP) ximtool X11irafBinDir
+ $(CP) ximtool-old X11irafBinDir
+ $(CP) ximtool-alt X11irafBinDir
+#endif
+
+#if InstallManuals
+install::
+ MakeDir(X11irafManDir)
+ $(CP) ximtool.man X11irafManDir/ximtool.1
+#endif
+
+DependTarget()
diff --git a/vendor/x11iraf/ximtool/NOTES b/vendor/x11iraf/ximtool/NOTES
new file mode 100644
index 00000000..cce5458c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/NOTES
@@ -0,0 +1,222 @@
+ XIMTOOL GUI
+
+
+1. CONTROL PANEL
+
+1.1 View
+
+current frame: radio button
+next frame button
+prev frame button
+
+center: button
+fitframe: button
+flip X: toggle
+flip Y: toggle
+flip XY: button
+zoom factor: buttons for -8 -4 -2 1 +2 +4 +8 in out
+ or unzoom, zoom in, zoom out (buttons)
+
+ -- Frame 1 --
+ X center: 123.45
+ Y center: 123.45
+ X scale: 4
+ Y scale: 4
+
+
+1.2 Enhancement
+
+enhancement: string scrolled list or 2 level menu
+
+
+1.3 Blink
+
+blink frames: several cycle buttons, reset button
+blink rate: numeric display, menu select
+register: button
+match: button
+blink: toggle on/off
+
+1.4 Options
+
+panner: toggle on/off
+coords box: toggle on/off
+autoscale: toggle on/off
+antialias: toggle on/off
+
+1.5 Other
+
+initialize: button
+normalize: button
+done: button
+
+
+2. INFO BOX
+
+version number
+gui identification
+configuration: number of frames, frame size
+image title: string
+help: scrolled text
+messages: text line
+output: scrolled text
+
+
+3. COMMAND ENTRY
+
+command entry: text (Tcl commands)
+control: user assignable buttons, text output
+
+
+---------------------------
+Original Notes
+
+
+ XIMTOOL
+
+
+Specifications
+
+ 1 - 4 frame buffers
+ frame buffers any size, selected from config file
+ all N frames are the same size
+ frame buffers are 8 bits deep
+
+ each frame buffer has its own independent zoom/pan, colortable, wcs, etc.
+ attributes
+
+
+Frame Buffer Strategy
+
+ Frame buffer pixel array is a gterm raster (ximage)
+ Memory model: fast nice-to-server small
+
+ If server pixmaps are being used the frame raster is mapped to a gterm
+ server pixmap raster the size of the display window
+ The server pixmap raster is mapped to the screen with a 1-1 mapping
+ Zoom and pan are controlled by the ximage->pixmap mapping
+ The frame being displayed is controlled by the pixmap->screen mapping
+
+ If server pixmaps are not used the first raster will be mapped
+ either to another ximage raster, or directly to the screen.
+ The first option still provides a reasonable blink capability,
+ the second will be slow if zoom is in effect.
+
+
+Program Structure
+
+ main
+ obm <- gui file
+ gui program
+ widget tree
+ iisio
+ gterm widget
+
+
+ The GUI program handles:
+ keyboard and function key input
+ pointer input
+ frame selection, blink, zoom/pan, colortable selection, windowing
+ control panel options
+
+ The IISIO section handles:
+ communication with the client
+ frame buffer configuration
+ read/write frame buffer
+ frame selection
+ cursor readback
+
+
+Optional features
+ Magnifier - region under the cursor
+ Split screen - controlled by popup control panel
+ Split region - display alternate frame in region under cursor
+ Zoom box - display de-zoomed or zoomed subregion in a marker
+ Load/save file (sunraster or fits)
+
+
+CLIENT STATE
+
+ nframes number of frame buffers
+ frame size frame buffer width, height
+ frame depth frame buffer depth, bits
+ frame number current display frame
+ frame event something frame related changed (string)
+ frame title title of current frame
+ enhancement color enhancement selected (name offset slope)
+ cursor mode cursor mode on/off
+
+
+GUI SPECIFICATION
+
+ Menu bar
+ File ->
+ View ->
+ Options ->
+
+ File menu
+ Load
+ Save
+ Print
+ Quit
+
+ View menu
+ Next frame
+ Prev frame
+ Zoom
+ Unzoom
+ Normalize
+ Flip X
+ Flip Y
+ Blink [on|off] **
+
+ Options menu
+ Enhancement ->
+ grayscale
+ pseudocolor
+ (etc.)
+ Fitframe
+ Match colortables
+ Autoscale {on off}
+ Coords {on off}
+ Locator {on off} **
+ Other (popup) **
+ Exit cursor mode
+ Initialize
+
+ Title display **
+ horiz scrolled text
+ button to popup full label
+
+ Buttons
+ forward
+ back
+ flip X
+ flip Y
+ zoom/dezoom
+
+ Help **
+
+ Marker menu
+ Zoom
+ Fill
+ Print
+ Attributes -> **
+ Destroy
+
+ Image menu
+ Zoom
+ Dezoom
+ Unzoom
+ Pan
+ Marker ->
+ marker type
+ Enhancement ->
+ grayscale
+ pseudocolor
+ (etc.)
+ Next
+ Prev
+
+
+oo
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-0.5.info b/vendor/x11iraf/ximtool/OLD/ximtool-0.5.info
new file mode 100644
index 00000000..c9346675
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-0.5.info
@@ -0,0 +1,798 @@
+Path: iraf!irafmail-gateway
+From: tody@noao.edu (Doug Tody)
+Newsgroups: adass.iraf.announce
+Subject: XImtool version 0.5 released
+Date: 24 May 1994 00:26:46 -0700
+Organization: IRAF Project, National Optical Astronomy Observatories
+Lines: 787
+Sender: daemon@iraf.noao.edu
+Message-ID: <9405240726.AA11099@lepus.tuc.noao.edu>
+NNTP-Posting-Host: tucana.tuc.noao.edu
+
+ XIMTOOL VERSION 0.5
+ May 22 1994
+
+
+Version 0.5 of the alpha test ximtool is now available in pub/v2103-beta
+on iraf.noao.edu and consists of the following files:
+
+ 1589248 May 22 15:14 ximtool-0.5 # executable
+
+Anyone using an earlier version of ximtool is encouraged to update to the
+new version, which is a major new version. Keep the old version around in
+case you run into any problems.
+
+This is ALPHA TEST software. This means that the software is still under
+development and may lack planned features. The software is only partially
+tested and can be expected to have some bugs. Anyone using an alpha test
+version of ximtool is asked to update to version 1.0 when it becomes
+available.
+
+
+INSTALLATION
+
+To install ximtool, download the executable, rename it "ximtool" and place
+it somewhere in your search path (e.g. /usr/bin/X11 or /usr/local/bin).
+An app-defaults file is not required to run ximtool.
+
+Don't install the new version while someone is using ximtool, or you will
+crash their session. The simplest way to avoid this is to "mv" the old
+executable to change the name, e.g. "mv ximtool ximtool.old".
+
+Since this is still alpha test software, all we are releasing is a snapshot
+from our development system, which is a Sun sparc running SunOS. Hence only
+a Sun binary is available at this time (unless someone wants to hack the
+sources and generate their own binary for a new platform).
+
+
+BASIC USAGE
+
+Ximtool is an image display server. To view images with it you need some
+client software, such as IRAF, to load images into the display. Ximtool is
+upwards compatible with older display servers such as SAOimage and imtool.
+For example, to use ximtool instead of SAOimage, start up ximtool instead of
+SAOimage and display in the usual fashion.
+
+You shouldn't need much documentation to be able to use ximtool effectively.
+Just start it up, load images into one or more frames, and experiment with
+the GUI to see what can be done to manipulate the display. Most of the
+controls are obvious, but here are a few things which might not be obvious:
+
+ o Clicking and dragging MB1 (mouse button 1) in the main image
+ window creates a rectangular region marker, used to select a
+ region of the image. If you do this accidentally and don't want
+ the marker, put the pointer in the marker and type DELETE or
+ BACKSPACE to delete the marker. With the pointer in the marker,
+ MB3 will call up a menu listing some thing you can do with the
+ marker, like zoom the outlined region. MB1 can be used to drag
+ or resize the marker.
+
+ o Clicking on MB2 in the main image window pans (one click) or
+ zooms (two clicks) the image. Further clicks cycle through the
+ builtin zoom factors. Moving the pointer to a new location and
+ clicking moves the feature under the pointer to the center of
+ the display window.
+
+ o MB3 is used to adjust the contrast and brightness of the displayed
+ image. The position of the pointer within the display window
+ determines the contrast and brightness values. Click once to
+ set the values corresponding to the pointer location, or click
+ and drag to continuously adjust the display.
+
+ o Ctrl-f, Ctrl-b can be used to move forward or backward through
+ the current set of frame buffers.
+
+ A frame buffer is an image (picture) stored in the display server.
+ Ximtool supports up to four frame buffers. Frame buffers can be any
+ size; the size is set by the client when an image is loaded into a
+ frame. For example, in IRAF "set stdimage = imt800" would set the
+ frame buffer size to 800x800 pixels. Changing the frame buffer size
+ forces an initialize of the display server. In IRAF the command
+ "gdev" will list the frame buffer configurations defined on your
+ system.
+
+Ximtool has a control panel which can be used to exercise most the
+capabilities the program has for image display. The control panel can be
+accessed either via the Options menu from the main window menubar, or by
+pressing the leftmost button in the row of buttons at the upper right side
+of the display.
+
+A more detailed overview of the ximtool capabilities and usage is given
+below.
+
+
+THINGS TO WATCH OUT FOR
+
+ o It is possible to run multiple ximtools, or ximtool and other
+ display servers such as saoimage, imtool, skyview, etc.,
+ simultaneously on the same computer, but don't attempt this unless
+ you know how to set the servers up on different i/o ports. In the
+ default configuration there will be conflicts with multiple servers
+ trying to listen on the same port.
+
+ o Most workstations have a single 8 bit, 256 element colortable per
+ screen. This means that only 256 unique colors can be displayed at
+ any one time. Image display programs like ximtool (or SAOimage, or
+ xv, xloadimage, mosaic, etc.) need a lot of colortable entries in
+ order to display smoothly varying images. If you try to run
+ multiple image display programs at the same time you are likely to
+ run out of colortable space. This may result in warning messages
+ when a program starts up, cause images to be displayed funny,
+ causing flashing when the pointer moves in and out of image display
+ windows, and so on.
+
+ It is best to avoid these problems by killing off any other display
+ programs when running ximtool. If you do run out of colortable
+ space when using ximtool this is harmless, but the image won't be
+ displayed correctly when the pointer is not in the image window. To
+ correct this condition, free up some colortable space (by killing
+ off some other X programs, especially any display programs) and then
+ move the pointer into the ximtool image window and back out. This
+ will cause ximtool to update the default colormap of the display and
+ in most cases will make the ximtool image display correctly.
+ Ximtool will always display correctly when the pointer is in the
+ image window, the problem occurs only when the pointer (colormap
+ focus) is in other windows.
+
+
+WHAT'S NEW?
+
+Ximtool 0.5, while still incomplete, is a major new version, probably the
+first really usable version of ximtool. Major new features in this version
+include the following:
+
+ o A popup control panel, providing control over frame selection,
+ zoom and pan, colortable selection from a list (including user
+ defined colortables), contrast and brightness display and controls,
+ blink control, including blink frames and blink rate, and option
+ control. (The ximtool control panel uses the new widgets and other
+ OBM enhancements discussed in the Xgterm 0.11 announcement.)
+
+ o An option called the "panner". The panner displays a reduced
+ version of the entire frame buffer, with the region currently
+ displayed outlined with a marker. One can pan and zoom within
+ the panner window, e.g. by dragging the panner region marker,
+ to pan or zoom the main image window. This is useful when viewing
+ images too large to fit on the screen.
+
+ o Autoscale option. If autoscale is enabled then at zoom=1, the
+ frame buffer will be automatically scaled to fit within the display
+ window. With autoscale disabled (the default), the image scale
+ is more predictable, but the image may be clipped by the display
+ window, or may not fill the display window.
+
+ o Integer zoom. Ximtool supports both fractional zoom and integer
+ zoom. Fractional zoom uses a non-integer scale factor to scale an
+ image region as necessary to fill the display window. Integer zoom
+ ensures that each frame buffer pixel is displayed as exactly N
+ display pixels. Integer zoom is slightly faster than a fractional
+ zoom.
+
+ o Antialiasing. When dezooming an image, i.e., displaying a large
+ image in a smaller display window, antialiasing causes all the
+ data to be used to compute the displayed image. If antialiasing
+ is disabled then image is subsampled to compute the displayed image.
+ Antialiasing can prevent subsampling from omitting image features
+ that don't fall in the sample grid, but it is significantly slower
+ than dezooming via subsampling. The default is no antialising.
+
+ o Tile frames. The default display mode is to view one frame at a
+ time. In tile frames mode, 2 or 4 frames may be viewed
+ simultaneously in the display window. All the usual operations
+ (zoom and pan, colortable enhancement, cursor readback, etc.)
+ still work for each frame even when in tile frames mode.
+
+ o Fitframe now works. Fitframe resizes the display window to the
+ same size as the frame buffer.
+
+ o Ximtool allows clients to connect in any of the following ways:
+
+ fifo pipes The traditional approach. The default,
+ global /dev/imt1[io] pipes may be used,
+ or a private set of fifos.
+
+ tcp/ip socket Clients connect via a tcp/ip socket.
+ There is a default port, or a custom port
+ may be specified. This permits connecting
+ to the server over a remote network
+ connection anywhere on the Internet.
+
+ unix domain socket Like a tcp/ip socket, but limited to a
+ single host system. Usually faster than a
+ tcp/ip socket, and comparable to a fifo. By
+ default each user gets their own unix domain
+ socket, so this option allows multiple users
+ to run ximtools on the same host without
+ having to customize things.
+
+ By default ximtool listens simultaneously for client connctions on
+ all three types of ports.
+
+ o Ximtool now supports multiple simultaneous client connections.
+ For example, one can be using the IRAF imexamine task to interact
+ with the image displayed in frame 1, while some other program
+ simultaneously displays an image in frame 2 (or any frame, including
+ the frame being examined).
+
+ o An improved set of builtin colormaps are now provided. The user
+ can define additional custom colormaps when ximtool is started.
+
+There were many additional minor changes and bug fixes not worth going into
+here.
+
+
+TECHNICAL NOTES
+
+This isn't the place to write a detailed comprehensive reference manual for
+ximtool, but since there isn't any such manual yet (this is still prerelease
+software) some additional information on a few selected topics will probably
+be useful.
+
+
+COMMAND LINE OPTIONS
+
+This prerelease version of ximtool doesn't support general command line
+options yet (except for the -defgui option described below). However, one
+can accomplish the same thing by setting resources on the command line. For
+example,
+
+ ximtool \
+ -xrm "*port:0" \
+ -xrm "*input_fifo:none" \
+ -xrm "*userCmapDir1:/user/smith/cmaps" \
+ -xrm "*displayPanner:false"
+
+would start up ximtool with tcp/ip sockets and fifos disabled (leaving
+only unix sockets for client connections). Ximtool will look for user
+colormaps in the directory /user/smith/cmaps. The panner option will be
+disabled at startup.
+
+
+RESOURCES
+
+Ximtool has a ton of resources (hundreds of them), but in practice only a
+few are likely to be useful at the user level.
+
+BUILTIN RESOURCES
+
+ Resource Name Default Value
+
+ defConfig: 1
+ defNFrames: 0
+ tileBorderWidth: 3
+ tileBorderColor: 9
+ autoscale: false
+ antialias: false
+ tileFrames: false
+ highlightFrames: true
+ gui: default
+ imtoolrc: /usr/local/lib/imtoolrc
+ memModel: fast
+ cmap1: none
+ cmap2: none
+ cmapDir1: none
+ cmapDir2: /usr/local/lib/imtoolcmap
+ input_fifo: /dev/imt1i
+ output_fifo: /dev/imt1o
+ unixaddr: /tmp/.IMT%d
+ port: 5137
+
+All of these are application resources, hence they would be specified in
+the .Xdefaults file as, e.g., "XImtool.autoscale: true", etc.
+
+
+Description of ximtool client resources:
+
+ defConfig Default frame buffer configuration on startup.
+
+ defNFrames Default number of frames on startup. Set to zero
+ to use value from imtoolrc file. There isn't a
+ whole lot of reason to preallocate frames here,
+ since new frames will be created on demand if needed.
+
+ tileBorderWidth Used by the tile frames option. Specifies how far
+ tileBorderColor apart to space the frames in tile frames mode.
+ Color "9" refers to the Gterm widget resource color9,
+ which is assigned a color with its own resource.
+
+ autoscale Enable/disable the autoscale option.
+ antialias Enable/disable the antialias option.
+ tileFrames Enable/disable the tile frames option.
+
+ highlightFrames Determines whether the current frame is highlighted
+ when in tile frames mode.
+
+ gui The GUI to be executed. "default" refers to the
+ default, builtin ximtool GUI. You can replace this
+ with your own GUI file if you are bold enough, and
+ completely change the look and functionality of
+ the GUI if desired.
+
+ imtoolrc Where to find the imtoolrc file. This defines the
+ recognized frame buffer configurations.
+
+ memModel Determines how ximtool uses memory in the ximtool
+ client and the X server. The options are "fast",
+ "beNiceToServer", and "small". The default is fast,
+ which uses server pixmaps to make frame blink fast.
+ This is recommended unless server memory is very
+ limited. Note that even in fast mode, the server
+ pixmap is only the size of the display window, so
+ memory usage is reasonable even if the frame buffer
+ is very large.
+
+ cmap1 User colormap files. The intent here is to allow
+ cmap2 individual colormaps to be conveniently specified
+ on the command line.
+
+ cmapDir1 User or system colormap directories. By default
+ cmapDir2 cmapDir2 points to the system directory
+ /usr/local/lib/imtoolcmap, allowing a set of site
+ default colormaps to be defined here. This leaves
+ cmapDir1 available to a user colormap directory.
+
+ input_fifo The input and output fifos for fifo i/o. "Input"
+ output_fifo and "output" are from the client's point of view.
+ Note that only one display server can use a
+ fifo-pair at one time.
+
+ unixaddr Template address for unix domain socket. The user
+ must have write permission on this directory, or
+ the file must already exist. %d, if given, is
+ replaced by the user's UID.
+
+ port TCP/IP port for the server. Note that only one
+ server can listen on a port at one time, so if
+ multiple ximtool servers are desired on the same
+ machine, they should be given different ports.
+
+
+GUI RESOURCES
+
+In principle ximtool can have any number of different GUIs, each of which
+defines its own set of resources. GUIs typically define a great many
+resources, but most of these are not really intended for modification by
+the user (although one can modify them if desired).
+
+The following are some of the more useful resources used by the default
+ximtool GUI.
+
+ Resource Name Default Value
+
+ .geometry:
+ *controlShell.geometry:
+ *info.geometry: 420x120
+
+ *cmapName: image
+ *basePixel: 64
+ *maxColors: 216
+
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.color8: #7c8498
+ *imagewin.color9: steelblue
+
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *warnings: True
+
+
+Description of selected resources:
+
+ .geometry Geometry of main image window
+ *controlShell.geometry Geometry of control panel shell
+ *info.geometry Geometry of info box
+
+ *cmapName Name used for private colormap.
+ The default for all IRAF imaging
+ applications is "image". Gterm
+ widget based imaging applications
+ which have the same value of cmapName
+ will share the same colormap,
+ minimizing colormap flashing and
+ allowing multiple applications to be
+ run at the same time.
+
+ *basePixel These two resources determine the
+ *maxColors region of colormap space used to
+ render image pixels.
+
+ *imagewin.warpCursor Warp pointer into image window when
+ initiating a cursor read.
+ *imagewin.raiseWindow Raise image window when initiating
+ a cursor read.
+ *imagewin.deiconifyWindow Deiconify image window if necessary
+ when initiating a cursor read.
+
+ *imagewin.ginmodeCursor Type of cursor when a cursor read
+ is in progress. The default is a
+ circle. Any selection from the X
+ cursor font can be used. A special
+ case is "full_crosshair" which is
+ the full crosshair cursor of the
+ Gterm widget.
+
+ *imagewin.ginmodeBlinkInterval Determines whether the cursor blinks
+ when a cursor read is in progress.
+ The value is given in milliseconds.
+
+ *imagewin.color8 Color assigned the panner window.
+ *imagewin.color9 Color used for the tileFrames highlight.
+
+ *pannerArea Area in pixels of the panner window.
+ *pannerGeom Where to place the panner window.
+ *wcsboxGeom Where to place the coords box.
+ *maxContrast Maximum contrast value.
+
+For a complete description of the ximtool resources, refer to the GUI file.
+The "appInitialize" command contains the full resource list for the GUI.
+
+
+CONTROL PANEL NOTES
+
+VIEW CONTROLS
+
+ o The "Frame" box will list only the frame buffers you currently have
+ defined. Currently, the only way to destroy a frame buffer is to
+ change the frame buffer configuration.
+
+ o The text display gives the field X,Y center, X,Y scale factors, and
+ the X,Y zoom factors. The scale factor and the zoom factor will be
+ the same unless autoscale is enabled. The scale is in units of
+ display pixels per frame buffer pixel, and is an absolute measure
+ (it doesn't matter whether or not autoscale is enabled). Zoom is
+ relative to the autoscale factor, which is 1.0 if autoscaling is
+ disabled.
+
+ o The numbers in the Zoom box are zoom factors. Blue numbers zoom,
+ red numbers dezoom. Zoom In and Zoom Out may be used to go to
+ larger or smaller zoom factors, e.g. "5" followed by "Zoom In" will
+ get you to zoom factor 10. Center centers the field. Toggle Zoom
+ toggles between the current zoom/center values, and the unzoomed
+ image.
+
+ o Aspect recomputes the view so that the aspect ratio is 1.0. Aspect
+ also integerizes the zoom factor (use the version in the View menu
+ if you don't want integerization).
+
+ o Fit Frame makes the display window the same size as the frame buffer.
+ Note that autoscale has much the same effect, and allows you to
+ resize the display window to any size you want, or view images to
+ large to fit on the screen.
+
+
+ENHANCEMENT CONTROLS
+
+ o At the top is a scrolled list of all the available colormaps. Click
+ on the one you want to load it. You can add your own custom colormaps
+ to this list.
+
+ o The two sliders adjust the contrast (upper slider) and brightness
+ (lower slider) of the display. The Invert button inverts the
+ colormap (multiples the contrast by -1.0). Note that due to the use
+ of the private colormap the sliders are a bit sluggish when dragged
+ to window the display. If this is annoying, using MB3 in the
+ display window is faster.
+
+ o The Normalize button (on the bottom of the control panel) will
+ normalize the enhancement, i.e. set the contrast and brightness to
+ the default one-to-one values (1.0, 0.5). This is the preferred
+ setting for many of the pseudocolor colortables.
+
+
+BLINK CONTROLS
+
+ o Blink frames is the list of frames to be blink. When blink mode is
+ in effect ximtool just cycles through these frames endlessly,
+ pausing "blink rate" seconds between each frame. The same frame
+ can be entered in the list more than once. To program an arbitrary
+ list of blink frames, hit the Reset button and click on each blink
+ frame button until it is set to the desired frame number.
+
+ o The blink rate can be adjusted as slow or as fast as you want using
+ the arrow buttons. If you set the blink rate small enough it will
+ go to zero, enabling single step mode (see below).
+
+ o The Register button registers all the blink frames with the current
+ display frame. Frames not in the blink list are not affected.
+
+ o The Match LUTs button sets the enhancement of all blink frames to
+ the same values as the display frame. Frames not in the blink list
+ are not affected.
+
+ o The Blink button turns blink on and off. When the blink rate is
+ set to zero the Blink button will single step through the blink
+ frames, one frame per button press.
+
+ NOTE: you can blink no matter what ximtool options are in effect, but
+ many of these will slow blink down. To get the fastest blink you may
+ want to turn off the panner and coords box, and match the LUTs of all
+ the blink frames. All the ximtool controls are fully active during
+ blink mode, plus you can load frames etc.
+
+
+OPTIONS CONTROLS
+
+ o The options box contains a set of option toggles. If the toggle
+ is yellow the option is in effect.
+
+
+OTHER
+
+ o Initialize initializes ximtool. This resets a lot of things, but
+ tries to not change the view. Select Reset in the File menu on the
+ main window menubar to fully reset things.
+
+ o Normalize normalizes the view for the current display frame.
+
+ o Done makes the control panel go away.
+
+
+CUSTOM COLOR TABLES
+
+The cmap[12] and cmapDir[12] resources are used to tell ximtool where to
+look for colortables. The colortables are loaded when ximtool starts up, or
+when it is reinitialized (e.g. by pressing the Initialize button in the
+control panel). Ximtool will ignore any files in the colormap directory
+which do not look like colortables.
+
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green,
+and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+
+ R G B
+ R G B
+ (etc.)
+
+Blank lines and comment lines (# ...) are ignored.
+
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. Ximtool will interpolate the table as necessary to
+compute the colortable values used in Ximtool. Ximtool uses only 201 colors
+to render pixel data, so it is usually necessary to interpolate the table
+when it is loaded.
+
+Tables are loaded into Ximtool by setting one of the user colormap directory
+resources. When Ximtool starts up it will read all the files in the
+colormap directory, disregarding any files that are unreadable or that do
+not appear to be colortables. The name of the colortable as it will appear
+in the Ximtool control panel is the root name of the file, e.g., if the file
+is "rainbow.lut" the colortable name will be "rainbow". Lower case names
+are suggested to avoid name collisions with the builtin colortables. If the
+same colortable file appears in multiple user colortable directories, the
+first one will be used.
+
+The directory "luts" in the ximtool source directory contains a sample set
+of colortable files. This can be installed as /usr/local/lib/imtoolcmap
+when ximtool is installed.
+
+
+THE MARKER MENU
+
+ o MB3 (mouse button 3) calls up the marker menu (by default).
+
+ o Zoom does an equal aspect zoom of the region outlined by the marker.
+ In this way you can mark a region of the image and zoom it up.
+
+ o Fill exactly zooms the area outlined by the marker, making it fill
+ the display window. Since the marker is not likely to be exactly
+ square, the aspect ratio of the resultant image will not be unitary.
+
+ o Print prints a description of the marked region. The text is printed
+ in the Info box.
+
+ o Unrotate unrotates a rotated marker.
+
+ o Color is a menu of possible marker colors.
+
+ o Type is a menu of possible marker types. This is still a little
+ buggy and it isn't very useful, but you can use it to play with
+ different types of markers.
+
+ o Destroy destroys the marker. You can also hit the delete or
+ backspace key in a marker to destroy the marker.
+
+
+MORE ON GRAPHICS MARKERS
+
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the Gterm widget and are used more extensively in other programs
+(e.g. the prototype IRAF science GUI applications). Ximtool uses markers
+for the marker zoom feature discussed above, and also for the panner and the
+coords box. All markers share some of the same characteristics, so it is
+worthwhile learning basic marker manipulation keystrokes.
+
+ o MB1 anywhere inside a marker may be used to drag the marker.
+
+ o MB1 near a marker corner or edge, depending on the type of marker,
+ resizes the marker.
+
+ o Shift-MB1 on the corner of most markers will rotate the marker.
+
+ o Markers stack, if you have several markers and you put one on top
+ of the other. The active marker is highlighted to tell you which
+ of the stacked markers is active. If the markers overlap, this
+ will be marker "on top" in the stacking order.
+
+ o MB2 in the body of a marker "lowers" the marker, i.e. moves it to
+ the bottom of the stacking order.
+
+ o Delete or backspace in a marker deletes the marker.
+
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The Initialize button will get the
+original coords box back).
+
+
+NOTES ON THE PANNER
+
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned above apply to these markers as well, e.g. you can use MB1 to
+reposition on the panner window within the main image display window, or to
+drag the region marker within the panner (pan the image). Resizing the
+region marker zooms the image; this is a non-aspect constrained zoom.
+The panner window itself can be resized by dragging a corner with MB1.
+Typing delete or backspace anywhere in the panner window deletes the panner.
+
+A special case is MB2. Typing MB2 anywhere in the panner window pans the
+image to that point. This is analogous to typing MB2 in the main display
+window to pan the image.
+
+
+THE COORDS BOX
+
+Ximtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+client defined coordinate system. The coords box feature is used to display
+these world coordinates as the pointer is moved about in the image window.
+
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated
+a "+" will be displayed after the intensity value.
+
+The coords box is a marker (text marker) and it can be moved and resized
+with the pointer like any other marker.
+
+
+VIEWING THE IMAGE TITLE
+
+The title of the image loaded into the current display frame is displayed
+centered in the control area at the top of the main display window. If the
+title string is too long to be fully displayed it will be clipped at either
+end. To see the full title string, either resize the display window, or
+pop up the Info box. The Info box always displays the full image title.
+
+
+NOTES ON CLIENT-SERVER I/O
+
+As mentioned earlier ximtool allows clients to connect using any of three
+different communications domains: fifos, tcp/ip sockets, and unix domain
+sockets.
+
+By default ximtool will listen and accept connections on all three types of
+ports. This is fine if there is only one display server running on a host,
+but conflicts arise if multiple display servers try to listen on the same
+port. If this happens one needs to either disable a port, or change the
+address.
+
+ FIFOs The default fifos are /dev/imt1i and /dev/imt1o.
+ The resources input_fifo and output_fifo may be
+ set to use a different set of fifos. To disable
+ the fifo port entirely set input_fifo=none. The
+ fifos must be created and must have read and write
+ permission, before starting ximtool.
+
+ TCP/IP socket The default tcp/ip port is 5137. The resource
+ "port" may be set to set a different port. To
+ disable tcp/ip sockets completely set port=0.
+ If ximtool is terminated it may take a couple of
+ minutes before unix allows ximtool to use the
+ port again.
+
+ UNIX socket The default unix domain socket is /tmp/.IMT%d,
+ where %d is the user's UID number. Hence, each user
+ has a private unix domain socket, allowing multiple
+ ximtools to be run on the same host (but only one
+ per user unless the addresss is changed). To
+ disable unix domain sockets set unixaddr=none. The
+ server will automatically create and delete the unix
+ domain socket if none exists.
+
+In 2.10.3 beta-3 and later versions of IRAF the default action when
+connecting to the display server is to first try a unix domain socket
+connection using the socket /tmp/.IMT%d. If this fails the IRAF client
+tries to connect via the old style FIFOs /dev/imt1[io]. Hence, if ximtool
+is being used with only newer versions of IRAF and all connections are
+local, FIFOs and tcp/ip sockets can be disabled and different users can
+transparently run ximtool on the same host system.
+
+IRAF 2.10.3 or later uses the new ZFIOND network driver (described
+elsewhere) to connect to the server. The graphcap file defines how to
+connect to the server. This can be overridden however, by defining IMTDEV
+in the host environment. For example to connect to a TCP/IP socket on host
+foo.bar.edu, one could define
+
+ setenv IMTDEV inet:5137:foo.bar.edu
+
+before logging into IRAF.
+
+
+CUSTOM GUIs
+
+The default GUI of ximtool can be viewed by running ximtool as follows:
+
+ ximtool -defgui
+
+This will print the default builtin GUI to the standard output. If this
+output is saved in a file one can set the "gui" resource to point to this
+file, and when ximtool starts up it will use this GUI file instead of the
+builtin default GUI. The user can modify the GUI file as desired to
+customize the GUI. Since the full GUI of ximtool is encapsulated in the GUI
+file, ths is a very powerful option; one can generate quite a different
+program merely by modifying the GUI file, without need to recompile any code.
+
+
+PLANNED FUTURE WORK
+
+The following items are on the near term TODO list for ximtool.
+
+ o Print dialog. Will be used to print whatever is displayed in the
+ main image window, generating a variety of types of output.
+
+ o File load/save. For standalone use it is desirable to be able to
+ load the display from a disk file. The plan is to support at least
+ FITS for file input.
+
+ o Info box. The info box is due for a major rewrite (the existing
+ one isn't very useful).
+
+ o TclShell. This will allow experienced users to type Tcl commands
+ directly into the OBM interpreter at the heart of ximtool.
+
+ o Add global translation actions for a variety of GUI functions, so
+ that the user can bind keystrokes and function keys to these actions.
+
+ o Implement online help (question mark button in main window).
+
+ o "Snap to equal aspect" feature for use when resizing panner.
+
+There are still quite a few useful features that could be implemented.
+For example, a magnifier window (similar to the panner but displays a
+magnified view of the region under the cursor). Similarly, one could have
+a magnifier which pops up under the pointer. Split screen would be useful
+for comparing multiple frame buffers. A window into an alternate frame
+would be a useful alternative to frame blink. The Optimize button in the
+Enhancement portion of the control panel will be used to automatically
+compute the optimum contrast and brightness valus for the region for the
+image in the main display window.
+
+More dramatically, alternate, completely different GUIs for ximtool are
+possible, merely by loading a different GUI file. The planned SAOtng user
+interface (being developed by SAO) is an example of this. SAOtng will
+also provide enhanced client-server communications via an alternative,
+more general communications protocol based on the X selection mechanism.
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-alt.man b/vendor/x11iraf/ximtool/OLD/ximtool-alt.man
new file mode 100644
index 00000000..4ca5b8a7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-alt.man
@@ -0,0 +1,1568 @@
+.\" @(#)ximtool.1 1.1 10-Dec-96 MJF
+.TH XIMTOOL-ALT 1 "10 Dec 1996" "X11IRAF Project"
+.SH NAME
+ximtool-alt \- interactive image display program for the X Window System with experimental GUI
+.SH SYNOPSIS
+.B "ximtool-alt" [\-\fItoolkitoption\fP ...] [ \fIoptions\fP ...] [\fIimagename\fP]
+.SH OPTIONS
+.TP 5
+.B "-basePixel \fIN\fP"
+The base colormap cell used by the colormap. This essentially allows you
+to reserve \fIbasePixel\fP colors in the global colormap for other applications.
+The default is 64, if changed you'll need to also specify the
+\fI-cmapInitialize\fP option or resource.
+.TP 5
+.B "-cmap1 \fIfile\fP"
+User colormap 1. This flag allows you to specify a colormap to be made
+available at task startup.
+.TP 5
+.B "-cmap2 \fIfile\fP"
+User colormap 2. This flag allows you to specify a second colormap to be
+made available at task startup.
+.TP 5
+.B "-cmapDir1 \fIdir\fP"
+User colormap directory 1. Specifies a directory to be searched for colormaps.
+.TP 5
+.B "-cmapDir2 \fIdir\fP"
+User colormap directory 2. Specifies a directory to be searched for colormaps.
+By default this points to the system directory /usr/local/lib/imtoolcmap,
+allowing a set of site default colormaps to be defined here.
+.TP 5
+.B "-cmapInitialize \fIbool\fP"
+Initialize the ximtool colormap at startup. When setting the \fIbasePixel\fP
+option or resource this is required in order to force the Gterm widget to
+update its global colormap resource in the X server. The default is
+\fIfalse\fP.
+.TP 5
+.B "-cmapName \fIname\fP"
+Name used for private colormap. The default for all IRAF imaging
+applications is \fIimage\fP. Gterm widget based imaging applications
+which have the same value of cmapName will share the same colormap,
+minimizing colormap flashing and allowing multiple applications to be
+run at the same time.
+.TP 5
+.B "-config \fIN\fP"
+Initial frame buffer configuration number. The default value is 1, indicating
+a 512x512 frame buffer with 2 frames. See below for information on the frame
+buffers.
+.TP 5
+.B "-defgui"
+Print the default GUI to the stdout. The GUI is a Tcl program that may be
+customized by the user and reloaded using the \fI-gui\fP option or
+the \fIgui\fP resource parameter.
+.TP 5
+.B "-displayPanner \fIbool\fP"
+Display panner marker window at startup. If set, a panner window showing
+the full frame buffer will appear in the upper-right side of the main display
+window.
+.TP 5
+.B "-displayMagnifier \fIbool\fP"
+Display magnifier marker window at startup. If set, a magnifier window showing
+a zoomed section around the cursor will appear in the upper-left side of the
+mail display window.
+.TP 5
+.B "-displayCoords \fIbool\fP"
+Display WCS coordinate marker window at startup. If set, a coordinate
+readout text marker showing will appear in the lower-right side of the main
+display window.
+.TP 5
+.B "-fifo \fIpipe\fP"
+Specifies the name of the fifo pipe to be used, the \fIi\fP
+and \fIo\fP suffixes will be added automatically. The default pipe names
+will be /dev/imt1i (input pipe) and /dev/imt1o (output pipe).
+.TP 5
+.B "-fifo_only"
+If set, only fifo pipes will be used for communication with a client program,
+sockets will be disabled.
+.TP 5
+.B "-gui \fIfile\fP"
+Specifies the GUI file to be used.
+.TP 5
+.B "-help"
+Print a summary of command line options to the screen.
+.TP 5
+.B "-imtoolrc \fIfile\fP"
+Specifies the frame buffer configuration file to be used. See below for
+information on frame buffers.
+.TP 5
+.B "-inet_only"
+If set, only inet sockets will be used for communication with a client program,
+fifo pipes and unix sockets will be disabled.
+.TP 5
+.B "-invert"
+Start XImtool using inverted colormaps. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 5
+.B "-maxColors \fIN\fP"
+Specify the max number of colors to be used for the display.
+.TP 5
+.B "-memModel \fItype\fP"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are \fIfast\fP, \fIbeNiceToServer\fP, and \fIsmall\fP. The
+default is \fIfast\fP, which uses server pixmaps to make frame blink fast.
+This is recommended unless server memory is very limited. Note that even in
+fast mode, the server pixmap is only the size of the display window, so memory
+usage is reasonable even if the frame buffer is very large.
+.TP 5
+.B "-nframes \fIN\fP"
+Specifies the number of frame buffers to configure at startup. By default
+there will be 2 frames available, a maximum of 4 frames are allowed.
+.TP 5
+.B "-port \fIN\fP"
+Specifies the port number to use when connecting through an inet socket.
+.TP 5
+.B "-port_only"
+Same as \fI-inet_only\fP option. If set, only inet sockets will be used for
+communication with a client program.
+.TP 5
+.B "-printConfig \fIname\fP"
+Specifies the printer configuration file to use. By default this will be
+/usr/local/lib/ximprint.cfg. See below for more information on configuring
+output devices.
+.TP 5
+.B "-showToolBar"
+Show the Toolbox menubar at startup.
+.TP 5
+.B "-showPanelBar"
+Show the Panels menubar at startup.
+.TP 5
+.B "-tile"
+The default display mode is to view one frame at a time. In tile frames mode,
+2 or 4 frames may be viewed simultaneously in the display window. All the
+usual operations (zoom and pan, colortable enhancement, cursor readback, etc.)
+still work for each frame even when in tile frames mode.
+.TP 5
+.B "-unix \fIname\fP"
+Specifies the unix domain socket name to use. A "%d" in the filename will
+be replaced with the user id.
+.TP 5
+.B "-unix_only"
+If set, only unix domain sockets will be used for communication with a client
+program, inet sockets and fifos will be disabled.
+
+.SH "RESOURCES"
+XImtool is implemented as a client program which is responsible for loading
+the frame buffers/colormaps, communicating with clients, etc, and a
+user-modifiable GUI file written as a Tcl script which handles all the user
+interface details. The \fIclient resources\fP described below will be common
+to any user-defined GUI, the \fIgui resources\fP may change depending on how
+extensively the GUI has been modified by the user. Each of these components
+has its own set of resources, but to the user setting them is the same as
+with any other application.
+
+\fIGterm\fP widget resources (i.e. those for the main image window or
+colorbar) may be set as either client or GUI resources. See the
+\fIxgterm(1)\fP man page for a complete description of \fIGterm\fP widget
+resources.
+
+.SS "CLIENT RESOURCES"
+The client resources generally define the initial state of the application
+or set configuration parameters.
+.RS
+.TP 25
+.B "Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 25
+defConfig
+1
+.sp -0.5
+.TP 25
+defNFrames
+0
+.sp -0.5
+.TP 25
+tileBorderWidth
+3
+.sp -0.5
+.TP 25
+tileBorderColor
+9
+.sp -0.5
+.TP 25
+autoscale
+false
+.sp -0.5
+.TP 25
+antialias
+false
+.sp -0.5
+.TP 25
+antialiasType
+boxcar
+.sp -0.5
+.TP 25
+tileFrames
+false
+.sp -0.5
+.TP 25
+highlightFrames
+true
+.sp -0.5
+.TP 25
+gui
+default
+.sp -0.5
+.TP 25
+imtoolrc
+/usr/local/lib/imtoolrc
+.sp -0.5
+.TP 25
+invert
+false
+.sp -0.5
+.TP 25
+memModel
+fast
+.sp -0.5
+.TP 25
+basePixel:
+64
+.sp -0.5
+.TP 25
+maxColors:
+216
+.sp -0.5
+.TP 25
+cmapInitialize:
+false
+.sp -0.5
+.TP 25
+cmap1
+none
+.sp -0.5
+.TP 25
+cmap2
+none
+.sp -0.5
+.TP 25
+cmapDir1
+none
+.sp -0.5
+.TP 25
+cmapDir2
+/usr/local/lib/imtoolcmap
+.sp -0.5
+.TP 25
+input_fifo
+/dev/imt1i
+.sp -0.5
+.TP 25
+output_fifo
+/dev/imt1o
+.sp -0.5
+.TP 25
+unixaddr
+/tmp/.IMT%d
+.sp -0.5
+.TP 25
+port
+5137
+.RE
+.LP
+Description of ximtool client resources:
+
+.TP 18
+.B "defConfig"
+Default frame buffer configuration number on startup. See below for more
+information on frame buffers.
+.TP 18
+.B "defNFrames"
+Default number of frames on startup. Set to zero to use the value from
+the frame buffer configuration (\fIimtoolrc\fP) file.
+.TP 18
+.B "tileBorderWidth"
+.sp -0.5
+.TP 18
+.B "tileBorderColor"
+Used by the tile frames option. Specifies how far
+apart to space the frames in tile frames mode.
+Color "9" refers to the Gterm widget resource color9,
+which is assigned a color with its own resource.
+.TP 18
+.B "autoscale"
+Enable/disable the autoscale option.
+.TP 18
+.B "antialias"
+Enable/disable the antialias option.
+.TP 18
+.B "antialiasType"
+Type of antialiasing.
+.TP 18
+.B "tileFrames"
+Enable/disable the tile frames option.
+.TP 18
+.B "highlightFrames"
+Determines whether the current frame is highlighted when in tile frames mode.
+.TP 18
+.B "gui"
+The GUI to be executed. "default" refers to the default, builtin ximtool GUI.
+You can replace this with your own GUI file if you are bold enough, and
+completely change the look and functionality of the GUI if desired.
+.TP 18
+.B "imtoolrc"
+Where to find the imtoolrc file. This defines the
+recognized frame buffer configurations.
+.TP 18
+.B "invert"
+Start Ximtool using an inverted colormap. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 18
+.B "memModel"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are "fast", "beNiceToServer", and "small". The default is fast,
+which uses server pixmaps to make frame blink fast. This is recommended
+unless server memory is very limited. Note that even in fast mode, the server
+pixmap is only the size of the display window, so memory usage is reasonable
+even if the frame buffer is very large.
+.sp -0.5
+.TP 18
+.B "basePixel"
+.sp -0.5
+.TP 18
+.B "maxColors"
+These two resources determine the region of colormap space used to
+render image pixels.
+.TP 18
+.B "cmapInitialize"
+Initialize the ximtool colormap at startup. This is sometimes necessary to
+clear a previous ximtool colormap allowing a new basePixel and maxColors to
+take effect.
+.TP 18
+.B "cmap1"
+.sp -0.5
+.TP 18
+.B "cmap2"
+User colormap files. The intent here is to allow individual colormaps to be
+conveniently specified as a resource.
+.TP 18
+.B "cmapDir1"
+.sp -0.5
+.TP 18
+.B "cmapDir2"
+User or system colormap directories. By default cmapDir2 points to the system
+directory /usr/local/lib/imtoolcmap, allowing a set of site default colormaps
+to be defined here. This leaves cmapDir1 available to a user colormap
+directory.
+.TP 18
+.B "input_fifo"
+.sp -0.5
+.TP 18
+.B "output_fifo"
+The input and output fifos for fifo i/o. "Input" and "output" are from the
+client's point of view. Note that only one display server can use a
+fifo-pair at one time.
+.TP 18
+.B "unixaddr"
+Template address for unix domain socket. The user must have write permission
+on this directory, or the file must already exist. %d, if given, is
+replaced by the user's UID.
+.TP 18
+.B "port"
+TCP/IP port for the server. Note that only one server can listen on a port
+at one time, so if multiple ximtool servers are desired on the same
+machine, they should be given different ports.
+
+.SS "GUI RESOURCES"
+
+In principle ximtool can have any number of different GUIs, each of which
+defines its own set of resources. GUIs typically define a great many
+resources, but most of these are not really intended for modification by
+the user (although one can modify them if desired).
+
+The following are some of the more useful resources used by the default
+ximtool GUI. The \fIimagewin\fR resources are Gterm widget resources.
+.RS
+.TP 35
+.B " Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 35
+ .geometry:
+
+.sp -0.5
+.TP 35
+ *controlShell.geometry:
+
+.sp -0.5
+.TP 35
+ *info.geometry:
+420x240
+.sp -0.5
+.TP 35
+ *load_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *save_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *print_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *help_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *cmapName:
+image
+.sp -0.5
+.TP 35
+ *basePixel:
+64
+.sp -0.5
+.TP 35
+ *imagewin.warpCursor:
+true
+.sp -0.5
+.TP 35
+ *imagewin.raiseWindow:
+true
+.sp -0.5
+.TP 35
+ *imagewin.deiconifyWindow:
+true
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeCursor:
+circle
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeBlinkInterval:
+500
+.sp -0.5
+.TP 35
+ *imagewin.color0:
+black
+.sp -0.5
+.TP 35
+ *imagewin.color1:
+white
+.sp -0.5
+.TP 35
+ *imagewin.color8:
+#7c8498
+.sp -0.5
+.TP 35
+ *imagewin.color9:
+steelblue
+.sp -0.5
+.TP 35
+ *imagewin.width:
+512
+.sp -0.5
+.TP 35
+ *imagewin.height:
+512
+.sp -0.5
+.TP 35
+ *autoscale:
+True
+.sp -0.5
+.TP 35
+ *zoomfactors:
+1 2 4 8
+.sp -0.5
+.TP 35
+ *displayCoords:
+True
+.sp -0.5
+.TP 35
+ *displayPanner:
+True
+.sp -0.5
+.TP 35
+ *displayMagnifier:
+False
+.sp -0.5
+.TP 35
+ *showToolBar:
+False
+.sp -0.5
+.TP 35
+ *showPanelBar:
+False
+.sp -0.5
+.TP 35
+.TP 35
+ *blinkRate:
+1.0
+.sp -0.5
+.TP 35
+ *pannerArea:
+150*150
+.sp -0.5
+.TP 35
+ *pannerGeom:
+-5+5
+.sp -0.5
+.TP 35
+ *magnifierArea:
+100*100
+.sp -0.5
+.TP 35
+ *magnifierGeom:
++5+5
+.sp -0.5
+.TP 35
+ *wcsboxGeom:
+-5-5
+.sp -0.5
+.TP 35
+ *maxContrast:
+5.0
+.sp -0.5
+.TP 35
+ *warnings:
+True
+.RE
+.LP
+Description of selected resources:
+
+.TP 22
+.B ".geometry"
+Geometry of main image window.
+.TP 22
+.B "*controlShell.geometry"
+Geometry of control panel shell.
+.TP 22
+.B "*info.geometry"
+Geometry of info box.
+.TP 22
+.B "*load_panel.geometry"
+Geometry of file load panel.
+.TP 22
+.B "*save_panel.geometry"
+Geometry of save control panel.
+.TP 22
+.B "*print_panel.geometry"
+Geometry of print control panel.
+.TP 22
+.B "*help_panel.geometry"
+Geometry of help box.
+.TP 22
+.B "*cmapName"
+Name used for private colormap. The default for all IRAF imaging applications
+is "image". Gterm widget based imaging applications which have the same value
+of cmapName will share the same colormap, minimizing colormap flashing and
+allowing multiple applications to be run at the same time.
+.TP 22
+.B "*basePixel"
+The base colormap cell used by the display colormap.
+.TP 22
+.B "*imagewin.warpCursor"
+Warp pointer into image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.raiseWindow"
+Raise image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.deiconifyWindow"
+Deiconify image window if necessary when initiating a cursor read.
+.TP 22
+.B "*imagewin.ginmodeCursor"
+Type of cursor when a cursor read is in progress. The default is a
+circle. Any selection from the X cursor font can be used. A special
+case is "full_crosshair" which is the full crosshair cursor of the
+Gterm widget.
+.TP 22
+.B "*imagewin.ginmodeBlinkInterval"
+Determines whether the cursor blinks when a cursor read is in progress.
+The value is given in milliseconds.
+.TP 22
+.B "*imagewin.color0"
+Background color.
+.TP 22
+.B "*imagewin.color1"
+Foreground color.
+.TP 22
+.B "*imagewin.color8"
+Color assigned the panner window.
+.TP 22
+.B "*imagewin.color9"
+Color used for the tileFrames highlight.
+.TP 22
+.B "*imagewin.width"
+Width of the main image window.
+.TP 22
+.B "*imagewin.height"
+Height of the main image window.
+.TP 22
+.B "*pannerArea"
+Area in pixels of the panner/magnifier window.
+.TP 22
+.B "*pannerGeom"
+Where to place the panner/magnifier window.
+.TP 22
+.B "*magnifierArea"
+Area in pixels of the magnifier window.
+.TP 22
+.B "*magnifierGeom"
+Where to place the magnifier window.
+.TP 22
+.B "*wcsboxGeom"
+Where to place the coords box.
+.TP 22
+.B "*maxContrast"
+Maximum contrast value.
+.TP 22
+.B "*showToolBar"
+Show the Toolbox menubar on startup.
+.TP 22
+.B "*showPanelBar"
+Show the Panels menubar on startup.
+
+.sp
+.SH DESCRIPTION
+.LP
+As a display server, XImtool is started as a separate process from client
+software such as IRAF. Once it is running it will accept client connections
+simultaneously on fifo pipes, unix domain sockets, or inet sockets. A
+display client like the IRAF \fIDISPLAY\fP task makes a connection and sends
+the image across using an IIS protocol. Once the image is loaded in the
+display buffer it may be enhanced, saved to a disk file in a number of
+different formats, or printed as Encapsulated Postscript to a printer or
+disk file. Up to four frame buffers are allowed, these may be displayed
+simultaneously in a tiled mode, or blinked frame-to-frame. Each frame may
+have its own colormap or brightness/contrast enhancement. Pan/Zoom and
+cursor readout are permitted using \fImarkers\fP, on-line help is also
+available.
+
+When run in standalone mode, images (currently IRAF OIF, GIF, Sun Rasterfiles
+or simple FITS formats are permitted) may be loaded on the command line or by
+using the Load Panel. This allows you to browse images and perform the same
+manipulations as if they had been displayed by a client.
+
+.SS "GUI OVERVIEW"
+
+The GUI consists of a large image display window and a number of smaller
+pannels that control various specific functions such as image Load, Save
+and Print as well as a general purpose Control Panel. The main window
+menubar has several menu buttons to the left: the \fIFiles\fR menu is used
+to load/save/print an image as well as quit the task. The \fIView\fR menu
+let's you select the image orientation, zoom, colormap or frame. The
+\fIOptions\fR menu allows you to call up control panels, toggle markers
+or blinking etc. Some of this functionality is duplicated elsewhere in
+the GUI.
+
+The right side of the menubar contains command buttons to flip the
+image as well as buttons for frame selection. The \fIToolbox Button\fR is
+labelled with a 'T', when this is enabled a second menubar appears below
+the main one containing a number of command buttons providing quick access
+to functions otherwise found elsewhere in the GUI. From the left these
+buttons include:
+.nf
+ + symbol - zoom in
+ Magnify - set zoom factor 1
+ - symbol - zoom out
+ Inv - Invert contrast
+ Norm - Normalize colormap
+ Match - Match LUTs
+ Reg - Register
+ Cntr - Center frame
+ < arrow - decrease blink interval
+ Blink - Toggle frame blink
+ > arrow - inrease blink interval
+ <-> symbol - X-flip and Y-flip
+ |+| symbol - Tile Frame toggle
+ < arrow - previous frame
+ <number> - select frame
+ > arrow - next frame
+.fi
+The image flip and
+frame selection buttons are also moved from the main menubar to provide
+more space for the image title. Next to the toolbox toggle is the
+\fIControl Panels\fR button which operates in a similar manner. When enabled
+a second menubar appears with more buttons: on the left side are two icons
+used as accelerators for a disk save (the floppy icon) and print function
+(the printer icon), the parameters used for these operations are those which
+have seen set through their respective control panel or the task resources.
+The middle two sections of buttons are toggles which manage the control
+panels for each function or the main imagewindow markers. Finally a help
+and a quit button for the task. By default these two extra menubars are
+disabled to provide more screen space for the image, they are controlled
+by the task \fI*showToolBar\fR and \fI*showPanelBar\fR resources or the
+\fI-showToolBar\fR and \fI-showPanelBar\fR command line flags.
+
+For more detailed information on the operation of the control panels please
+see the on-line help (i.e. use the '?' button or Alt-h keystroke in the
+main image window).
+
+.SS "MOUSE OPERATIONS"
+
+Clicking and dragging MB1 (mouse button 1) in the main image window creates
+a rectangular region marker, used to select a region of the image. If you do
+this accidentally and don't want the marker, put the pointer in the marker
+and type DELETE or BACKSPACE to delete the marker. With the pointer in the
+marker, MB3 will call up a marker menu listing some things you can do with
+the marker, like zoom the outlined region. MB1 can be used to drag or resize
+the marker. See below for more information on markers.
+
+Clicking on MB2 in the main image window pans (one click) or zooms (two
+clicks) the image. Further clicks cycle through the builtin zoom factors.
+Moving the pointer to a new location and clicking moves the feature under
+the pointer to the center of the display window. Holding down the Shift
+key while clicking MB2 will cause a full-screen crosshair cursor to appear
+until the button is released, this can be useful for fine positioning of the
+cursor.
+
+MB3 is used to adjust the contrast and brightness of the displayed image.
+The position of the pointer within the display window determines the
+contrast and brightness values. Click once to set the values corresponding
+to the pointer location, or click and drag to continuously adjust the
+display.
+
+.SS "KEYSTROKE ACCELERATORS"
+
+The following keystrokes are currently defined in the GUI:
+
+.TP 12
+.B "Ctrl-b"
+Backward frame
+.sp -0.5
+.TP 12
+.B "Ctrl-c"
+Center frame
+.sp -0.5
+.TP 12
+.B "Ctrl-f"
+Forward frame
+.sp -0.5
+.TP 12
+.B "Ctrl-i"
+Invert
+.sp -0.5
+.TP 12
+.B "Ctrl-m"
+Toggle magnifier
+.sp -0.5
+.TP 12
+.B "Ctrl-n"
+Normalize
+.sp -0.5
+.TP 12
+.B "Ctrl-p"
+Toggle panner
+.sp -0.5
+.TP 12
+.B "Ctrl-r"
+Register
+.sp -0.5
+.TP 12
+.B "Ctrl-s"
+Match LUT scaling
+.sp -0.5
+.TP 12
+.B "Ctrl-t"
+Tile frames toggle
+.sp -0.5
+.TP 12
+.B "Ctrl-u"
+Unzoom (zoom=1)
+.sp -0.5
+.TP 12
+.B "Ctrl-x"
+Flip X
+.sp -0.5
+.TP 12
+.B "Ctrl-y"
+Flip Y
+
+.TP 12
+.B "Alt-b"
+Blink frames (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-c"
+Control panel (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-h"
+Help popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-i"
+Info box popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-l"
+Load file popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-p"
+Print popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-s"
+Save popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-t"
+TclShell popup (toggle)
+
+.TP 12
+.B "Ctrl-Alt-q"
+Quit
+.sp -0.5
+.TP 12
+.B "Ctrl-Alt-f"
+Fitframe
+
+.TP 12
+.B "Ctrl-="
+Print using current setup
+.sp -0.5
+.TP 12
+.B "Ctrl-<"
+Decrease blink rate (blink faster)
+.sp -0.5
+.TP 12
+.B "Ctrl->"
+Increase blink rate (blink slower)
+.sp -0.5
+.TP 12
+.B "Ctrl-+"
+Zoom in
+.sp -0.5
+.TP 12
+.B "Ctrl--"
+Zoom out
+
+.TP 12
+.B "Ctrl-[hjkl] or <arrow_key>"
+Move cursor one pixel in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-Shift-[hjkl] or Shift-<arrow_key>"
+Move cursor ten pixels in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-<arrow_key>"
+Move one full panner frame in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-Alt-<arrow_key>"
+Move one half panner frame in each direction
+.sp -0.5
+.TP 12
+.B "Alt-1 thru Alt-4"
+Set frame displayed
+.sp -0.5
+.TP 12
+.B "Ctrl-1 thru Ctrl-9"
+Set integer zoom factor
+
+.LP
+\fBNOTE:\fP These keystrokes only work with the cursor in the main image window,
+not on the subwindows or in markers since they are implemented as
+\fIimagewin\fP translations. If a command does not work, check the cursor
+location.
+
+.SH "CLIENT CONNECTIONS"
+.LP
+XImtool allows clients to connect in any of the following ways:
+.TP 5
+.B "fifo pipes"
+The traditional approach. The default global /dev/imt1[io]
+pipes may be used, or a private set of fifos can be specified using the
+\fI-fifo\fP command line argument or \fI*fifo\fP resource. Values should
+be specified as the root pathname to a pair of fifo pipes whose last
+character is 'i' or 'o', these characters will be added automatically when
+opening the pipes. For example, to use the default pipes the path would
+be specified as simply "/dev/imt1". A value of "none" disables this connection.
+.TP 5
+.B "tcp/ip sockets"
+Clients connect via a tcp/ip socket. The default port is \fI5137\fP, or a
+custom port may be specified using the \fI-port\fP command line switch or
+a \fI*port\fP resource. This permits connecting to the server
+over a remote network connection anywhere on the Internet.
+A port number of 0 (zero) disables this connection.
+.TP 5
+.B "unix domain sockets"
+Like a tcp/ip socket, but limited to a single host system. Usually faster
+than a tcp/ip socket, and comparable to a fifo. By default each user gets
+their own unix domain socket, so this option allows multiple users to run
+ximtools on the same host without having to customize things. The default
+value is "/tmp/.IMT%d", other sockets may be defined using the \fI-unix\fP
+command line switch or the \fI*unixaddr\fR resource. Legal values
+should be specified as a filename to be used for the socket, up to two "%d"
+fields are allowed and will be replaced by the userid. An empty string value
+disables this connection.
+.LP
+By default ximtool listens simultaneously for client connections on all three
+types of ports. Clients may connect simultaneously by different
+means allowing up to three different displays to be loading at the same
+time into different frames.
+
+.SS "COMMUNICATIONS PROTOCOL"
+
+Clients communicate with XImtool using a protocol developed originally for
+IIS (International Imaging Systems) Frame Buffer hardware, the so-called
+"IIS protocol"; other more modern protocols will likely be supported in the
+future. The IIS protocol is basically a command packet stream with a header
+describing the operation to be performed (select frame, load display, read
+cursor, etc), and an optional data packet containing e.g. pixels. It is beyond
+the scope of this document to describe fully the details of the protocol;
+interested users should contact \fIiraf@noao.edu\fP for further information.
+
+.SH "FRAME BUFFERS"
+
+XImtool starts up using default frame buffer size of 512x512 pixels, two
+(of four possible) frames will be created. When loading
+disk images (i.e. run in standalone mode) the frame buffer configuration file
+will be searched for a defined frame buffer that is the same size or larger
+than the current image, if no suitable buffer can be found a custom frame
+buffer the same size as the image will be created in an unused portion of
+the configuration table. When used as a display server the frame buffer
+configuration number is passed in by the client and loaded explicitly even
+if it means clipping the image. If a new frame buffer is
+a different size than previously defined frames, all available frames
+will be initialized and cleared prior to the display. The default frame buffer
+configuration file is /usr/local/lib/imtoolrc,
+this can be overridden by defining a IMTOOLRC environment variable naming
+the file to be used, by creating a .imtoolrc file in your home directory, or
+a new file may be specified using the \fI-imtoolrc\fR command line flag or
+\fIimtoolrc\fR application resource.
+
+The format of the frame buffer configuration file is
+
+ \fIconfigno nframes width height [extra fields]\fP
+ e.g.
+ 1 2 512 512
+ 2 2 800 800
+ 3 1 1024 1024 # comment
+ : : : :
+
+At most 128 frame buffer sizes may be defined, each configuration may define
+up to 4 frames, configuration numbers need not be sequential.
+
+\fBNOTE:\fR When defining a new frame buffer for use with client software
+such as IRAF the user must also remember to define those frame buffers in
+the IRAF \fIdev$graphcap\fR file.
+
+.SH "MARKERS"
+
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the \fIGterm\fP widget and are used more extensively in other
+programs (e.g. the prototype IRAF science GUI applications). XImtool uses
+markers for the marker zoom feature discussed above, and also for the panner,
+magnifier and the coordinates box. All markers share some of the same
+characteristics, so it is worthwhile learning basic marker manipulation
+keystrokes.
+.TP 3
+\fBo\fP
+MB1 anywhere inside a marker may be used to drag the marker.
+.TP 3
+\fBo\fP
+MB1 near a marker corner or edge, depending on the type of marker,
+resizes the marker.
+.TP 3
+\fBo\fP
+Shift-MB1 on the corner of most markers will rotate the marker.
+.TP 3
+\fBo\fP
+Markers stack, if you have several markers and you put one on top of
+the other. The active marker is highlighted to tell you which of the
+stacked markers is active. If the markers overlap, this will be marker
+"on top" in the stacking order.
+.TP 3
+\fBo\fP
+MB2 in the body of a marker "lowers" the marker, i.e. moves it to the
+bottom of the stacking order.
+.TP 3
+\fBo\fP
+Delete or backspace in a marker deletes it.
+.TP 3
+\fBo\fP
+Markers have their own translation resources and so the default
+keystroke commands will not be recognized when the cursor is in a marker.
+.LP
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The Initialize button will get the
+original coords box back if you delete it, or you can reset the toggle in
+the control panel).
+
+.SS "PANNER MARKER"
+
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned below apply to these markers as well, e.g. you can use MB1 to
+reposition on the panner window within the main image display window, or to
+drag the region marker within the panner (pan the image). Resizing the
+region marker zooms the image; this is a non-aspect constrained zoom. The
+panner window itself can be resized by dragging a corner with MB1. Typing
+delete or backspace anywhere in the panner window deletes the panner.
+
+A special case is MB2. Hitting MB2 anywhere in the panner window pans the
+image to that point. This is analogous to hitting MB2 in the main display
+window to pan the image.
+
+The panner marker can be disabled by defining the \fIdisplayPanner\fP
+GUI resource, its size and location can be controlled using the
+\fIpannerArea\fP and \fIpannerGeom\fP GUI resources respectively.
+
+.SS "MAGNIFIER MARKER"
+
+The magnifier marker can be used to zoom in on a small area around the cursor.
+It will be updated as the cursor moves but only for small motions (either
+mouse movement or with the cursor movement keystrokes) to minimize the
+impact on the system. The zoom factor is expressed as some fraction of the
+size of the magnifier marker itself. The default zoom is 4, i.e. the area
+in the marker represents and area in the image that's one-fourth the size
+of the marker. Other zoom factors may be selected using the popup menu
+created by hitting MB1 in the marker.
+
+By default the magnifier marker is not visible, to toggle it select the
+\fIMagnifier\fR option from the \fIOptions\fR menubar button. Alternatively,
+for just a quick look holding down the Shift and MB1 buttons will display
+the marker until the button is released.
+
+The magnifier marker can be disabled by defining the \fIdisplayMagnifier\fP
+GUI resource, its size and location can be controlled using the
+\fImagnifierArea\fP and \fImagnifierGeom\fP GUI resources respectively.
+
+.SS "COORDS BOX MARKER"
+
+XImtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+linear client-defined coordinate system. The coords box feature is used to
+display these world coordinates as the pointer is moved about in the image
+window.
+
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated a
+"+" will be displayed after the intensity value.
+
+The coords box is a text marker, it can be moved and resized
+with the pointer like any other marker. The coords box marker can be
+disabled by defining the \fIdisplayCoords\fP GUI resource, its location
+can be controlled by the \fIwcsboxGeom\fP GUI resource.
+
+.SS "MARKER MENU OPTIONS"
+
+Except for the panner and WCS markers, MB3 (mouse button 3) calls up the
+marker menu providing a limited set of functions common to all markers:
+.TP 3
+\fBo
+Zoom\fP does an equal aspect zoom of the region outlined by the marker. In
+this way you can mark a region of the image and zoom it up.
+.TP 3
+\fBo
+Fill\fP exactly zooms the area outlined by the marker, making it fill the
+display window. Since the marker is not likely to be exactly square,
+the aspect ratio of the resultant image will not be unitary.
+.TP 3
+\fBo
+Print\fP prints the region outlined by the marker to the printer or file
+currently configured by the Print Panel.
+.TP 3
+\fBo
+Save\fP saves the region outlined by the marker to the file currently
+configured by the Save Panel.
+.TP 3
+\fBo
+Info\fP prints a description of the marked region. The text is printed in
+the Info Panel.
+.TP 3
+\fBo
+Unrotate\fP unrotates a rotated marker.
+.TP 3
+\fBo
+Color\fP is a menu of possible marker colors.
+.TP 3
+\fBo
+Type\fP is a menu of possible marker types. This is still a little buggy
+and it isn't very useful, but you can use it to play with different
+types of markers.
+.TP 3
+\fBo
+Destroy\fP destroys the marker. You can also hit the delete or backspace
+key in a marker to destroy the marker.
+
+.SH "CONTROL PANEL"
+
+XImtool has a control panel which can be used to exercise most of the
+capabilities the program has for image display. The control panel can be
+accessed either via the \fBOptions\fP menu from the main window menubar, or by
+pressing the leftmost button in the row of buttons at the upper right side
+of the display.
+
+.SS "VIEW CONTROLS"
+
+The \fBFrame box\fP will list only the frame buffers you currently have
+defined. Currently, the only way to destroy a frame buffer is to change the
+frame buffer configuration, new frame buffers (up to 4) will be created
+automatically if requested by the client. The number of frame buffers
+created at startup can be controlled using the \fI-nframes\fP command-line
+switch or the \fIdefNFrames\fP resource.
+
+The \fBtext display\fP window gives the field X,Y center, X,Y scale factors,
+and the X,Y zoom factors. The scale factor and the zoom factor will be the same
+unless \fIautoscale\fP is enabled. The scale is in units of display pixels per
+frame buffer pixel, and is an absolute measure (it doesn't matter whether or
+not autoscale is enabled). Zoom is relative to the autoscale factor, which
+is 1.0 if autoscaling is disabled. This information is also presented in the
+Info panel.
+
+The numbers in the \fBZoom box\fP are zoom factors. Blue numbers zoom, red
+numbers dezoom. \fIZoom In\fP and \fIZoom Out\fP may be used to go to larger
+or smaller zoom factors, e.g. "Ctrl-5" followed by "Zoom In" will get you to
+zoom factor 10. Specific zoom factors may also be accessed directly as Control
+keystrokes, e.g. Ctrl-5 will set zoom factor 5. \fICenter\fP centers the field.
+\fIToggle Zoom\fP toggles between the current zoom/center values, and the
+unzoomed image.
+
+\fIAspect\fP recomputes the view so that the aspect ratio is 1.0. Aspect also
+integerizes the zoom factor (use the version in the View menu if you don't
+want integerization).
+
+\fIFit Frame\fP makes the display window the same size as the frame buffer. Note
+that autoscale has much the same effect, and allows you to resize the
+display window to any size you want, or view images too large to fit on the
+screen.
+
+.SS "ENHANCEMENT CONTROLS"
+
+At the top is a scrolled list of all the available colormaps. Click on the
+one you want to load. You can add your own colormaps to this list by
+defining the \fIcmap[12]\fP or \fIcmapDir[12]\fP command line flags or
+application resources.
+
+The two sliders adjust the contrast (upper slider) and brightness (lower
+slider) of the display. The \fIInvert\fP button inverts the colormap (multiples
+the contrast by -1.0). Note that due to the use of the private colormap the
+sliders are a bit sluggish when dragged to window the display. If this is
+annoying, using MB3 in the display window is faster.
+
+The \fINormalize\fP button (on the bottom of the control panel) will normalize
+the enhancement, i.e. set the contrast and brightness to the default one-to-one
+values (1.0, 0.5). This is the preferred setting for many of the pseudocolor
+colortables and for private colormaps loaded from disk images. The
+\fIInitialize\fP button does a reset of the server.
+
+.SS "BLINK CONTROLS"
+
+\fIBlink frames\fP is the list of frames to be blinked. When blink mode is
+in effect ximtool just cycles through these frames endlessly, pausing
+"blink rate" seconds between each frame. The same frame can be entered
+in the list more than once. To program an arbitrary list of blink
+frames, hit the Reset button and click on each blink frame button until
+it is set to the desired frame number.
+
+The \fIBlink Rate\fP can be adjusted as slow or as fast as you want using the
+arrow buttons. If you set the blink rate small enough it will go to
+zero, enabling single step mode (see below).
+
+The \fIRegister\fP button registers all the blink frames with the current
+display frame. Frames not in the blink list are not affected.
+
+The \fIMatch LUTs\fP button sets the enhancement of all blink frames to the
+same values as the display frame. Frames not in the blink list are not affected.
+
+The \fIBlink\fP button turns blink on and off. When the blink rate is set to
+zero the Blink button will single step through the blink frames, one
+frame per button press.
+
+\fBNOTE:\fP You can blink no matter what ximtool options are in effect, but
+many of these will slow blink down. To get the fastest blink you may want to
+turn off the panner and coords box, and match the LUTs of all the blink frames.
+All the ximtool controls are fully active during blink mode, plus you can
+load frames etc.
+
+.SS "OPTIONS:"
+.TP 5
+.B "Panner"
+Toggles whether to display the panner marker.
+.TP 5
+.B "Coords Box"
+Toggles whether to display the coordinate box marker.
+.TP 5
+.B "Autoscale"
+If autoscale is enabled then at zoom=1, the frame buffer will be
+automatically scaled to fit within the display window. With autoscale
+disabled (the default), the image scale is more predictable, but the
+image may be clipped by the display window, or may not fill the display
+window.
+.TP 5
+.B "Antialiasing"
+When dezooming an image, i.e., displaying a large image in a smaller
+display window, antialiasing causes all the data to be used to compute
+the displayed image. If antialiasing is disabled then image is
+subsampled to compute the displayed image. Antialiasing can prevent
+subsampling from omitting image features that don't fall in the sample
+grid, but it is significantly slower than dezooming via subsampling.
+The default is no antialising.
+.TP 5
+.B "Tile Frames"
+The default display mode is to view one frame at a time. In tile frames
+mode, 2 or 4 frames may be viewed simultaneously in the display window.
+All the usual operations (zoom and pan, colortable enhancement, cursor
+readback, etc.) still work for each frame even when in tile frames mode.
+.TP 5
+.B "Warnings"
+The warnings options toggles whether you see warning dialog boxes in
+situations like overwriting an existing file, clearing the frame
+buffer, etc.
+
+.SH "COLORMAP SELECTION"
+
+By default XImtool will display images using either a grayscale colormap (e.g.
+if loaded by a client), or a private colormap when loading an image from disk
+that contains a colormap. Each frame defines its own colormap so you can
+define different colormaps or enhancements for each frame, they will change
+automatically as you cycle through the frames.
+
+.SS "BUILTIN COLORMAPS"
+
+Once loaded, the colormap may either be changed using the builtin colormap
+menu under the View menu button on the main window, or from the Enhancement
+box on the control panel. XImtool has about a dozen colormap options
+builtin, other user-defined colormaps may optionally be loaded. It is not
+presently possible to save colormaps for later use.
+
+.SS "USER-DEFINED COLORMAPS"
+
+The \fIcmap[12]\fP and \fIcmapDir[12]\fP resources (or command line arguments)
+are used to tell which specific colormaps to make available or where to look
+for colortables respectively. The colortables are loaded when ximtool starts
+up, or when it is reinitialized (e.g. by pressing the Initialize button in
+the control panel). XImtool will ignore any files in the colormap directory
+which do not look like colortables. New colortables will also be added
+automatically for each image loaded from disk.
+
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green, and
+blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+
+ R G B
+ R G B
+ (etc.)
+
+Blank and comment lines (lines beginning with a '#') are ignored.
+
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. XImtool will interpolate the table as necessary to
+compute the colortable values used in XImtool. XImtool uses at most 201
+colors to render pixel data, so it is usually necessary to interpolate the
+table when it is loaded.
+
+The name of the colortable as it will appear in the XImtool control panel is
+the root name of the file, e.g., if the file is "rainbow.lut" the colortable
+name will be "rainbow". Lower case names are suggested to avoid name
+collisions with the builtin colortables. Private colormaps for disk images
+will be have the same name as the image loaded. If the same colortable file
+appears in multiple user colortable directories, the first one found will be
+used.
+
+.SS "MINIMIZING COLORMAP CONFLICTS"
+
+The Gterm widget used by XImtool (i.e. the main display window) uses a private
+global colormap for display, this allows it to have greater control over color
+cell allocation but can occasionally also cause "colormap flashing" as the
+mouse is moved in and out of the application. The problem here is that
+in a system with only an 8-bit colormap (256 colors) all applications must
+compete for colors, programs such as XV or Netscape allocate colors from the
+default colormap leaving only a few free cells for XImtool. Since XImtool
+defines a private global colormap it is still able to allocate the needed
+cells rather than failing, but it's allocating cells already used by other
+applications. As the mouse moves out of the ximtool window those cells are
+once again defined in terms of the default colormap, so the ximtool window
+is then using a different colormap. It is this switching of the colormap
+context that causes the flashing to occur, but there are a few things that
+can be done to help minimize this.
+
+XImtool logically defines 200 colors which the client image display program
+can use to render pixels. However, ximtool may or may not actually allocate
+all of those colors. By default it currently allocates only about 192
+colors, to reserve 64 colors for the other windows on the screen. You don't
+normally notice this as 1) usually the default screen colormap has enough
+free cells to allow ximtool to match the colors, and 2) the extra unallocated
+cells correspond to the brightest pixels in the rendered image, and these
+colors may not be used or usually only correspond to a few small regions
+near the saturated cores of bright objects.
+
+You can eliminate this problem by setting the \fIbasePixel\fP resource to e.g.
+48 instead of 64, which will let the gterm widget allocate all 200 colors.
+However, this isn't recommended for normal use as it will increase the
+likelihood of colormap flashing. If you change \fIbasePixel\fP, either restart
+the X server or set the resource \fIcmapInitialize\fP=\fITrue\fP to force the
+gterm widget to update its global colormap resource in the X server.
+The colormap resource may also be deleted by using the command
+
+ \fIxprop -root -remove GT_image\fP
+
+These options may also be set on the command line when first starting up.
+
+In general one can set the Gterm widget resources \fIbasePixel\fP
+and \fImaxColors\fP to specify the region of colormap space to be used for
+image display. If you set \fImaxColors\fP to a small value, the 200 logical
+colors defined by the widget will be mapped by the imtool color model into
+whatever number of colors are actually available to the widget. For example,
+in the default setup, 200 color values are really being mapped into 192 color
+cells used for display, the remaining colors are used for buttons, menus etc
+and are allocated from the default colormap by the X toolkit when the
+application starts up.
+
+Even though the Gterm widget uses a private colormap, it is a private
+\fIglobal\fP colormap meaning that all Gterm widgets share the same colormap.
+An example of colormap sharing in ximtool is the main image window and the
+colorbar window. These are two separate gterm widgets that share the same
+colormap. They have to share the same colormap, as otherwise when you
+windowed the main image window the colorbar window would not accurately
+reflect the modified colormap. By default two separate ximtools would also
+share the same colormap meaning contrast enhancements in one window would
+affect the other. By resetting the \fIcmapName\fP command line option or
+resource you can change the name of the private colormap used causing
+separate ximtools to use different colormaps, but note this also creates
+colormap flashing between the two windows that cannot easily be avoided.
+By setting the \fIcmapName\fR to "default" the widget will allocate colors
+from the default colormap, but this is of little use at the moment.
+
+There are a number of other resources that can be used to modify the behavior
+of the Gterm widget color management scheme, but these are the most useful ones.
+For question and further information feel free to contact \fIiraf@noao.edu\fP.
+
+.SH "LOAD PANEL"
+
+The Load Panel allows you load images from disk directly to the frame
+buffer, this is analogous to loading an image on the command line except
+that browsing is possible. At present recognized formats include IRAF OIF
+format (i.e. \fI.imh\fP extension), simple FITS files, GIF, and Sun rasterfiles.
+The task will automatically sense the format of the image and load it
+appropriately. Images with private colormaps (such as GIF) will be loaded
+using the private colormap (meaning that changing the brightness/contrast
+enhancements will render a random-colored image), all others will be loaded
+with a grayscale colormap. If the \fIGrayscale\fP button is enabled the image
+colormap will be converted to grayscale and loaded as the standard grayscale
+colormap. The Load panel will close automatically once the image has loaded
+unless the \fIBrowse\fP button has been set.
+
+When loading new images the frame buffer configuration table will
+be searched for a frame buffer that is the same size or larger than the new
+image size, if no frame buffer can be found a custom buffer exactly the size
+of the image will be created. This means that the image may not fill the
+display window when loaded, or you may see a subsection of the image in the
+main display window. Setting the \fIautoscale\fP option will scale the entire
+image to fit the main display window, the full frame buffer will always be
+visible in the Panner marker window.
+
+Images with more colors than can be displayed will automatically be
+quantized to the number of available colors before display, 24-bit formats
+are not currently supported (but may be in the future and will be similarly
+quantized).
+
+Formats which permit larger than 8-bit pixels will be sampled on a grid
+to determine an optimal range in the data to be used to compute a linear
+transformation to the number of display colors. This is the same sampling
+and transformation used by the IRAF \fIDISPLAY\fR task when computing the
+\fIz1/z2\fP values and provides a much better initial display than simple
+truncation to 8-bits.
+.TP 5
+.B "Directory Browsing"
+The load panel contains a list of files in the current directory that
+may be selected for loading by selecting with left mouse button. If the
+file is a directory the contents of the new directory will be loaded,
+if it's a plain file an attempt will be made to load it as an image
+otherwise an error popup will appear. Directories in the list are identified
+with a trailing '/' character, you will always see any subdirectories
+listed even if a filter is specified.
+
+The \fIRoot\fP button will reset the current directory to the system root
+directory. The \fIHome\fP button will reset the current directory to the
+user's login directory, the \fIUp\fP button moves up one directory level, and
+\fIRescan\fP reloads the file list by rescanning the directory. The current
+working directory is given below the file selection window.
+.TP 5
+.B "File Patterns"
+By default all files and directories will be listed. You may specify a
+filter to e.g. select only those files with a given extension like
+"*.fits" to list only files with a ".fits" extension. Directories will
+always be seen in the list and are identified with a trailing '/'
+character. Any valid unix pattern matching string will be recognized.
+.TP 5
+.B "Direct File Load"
+If you know exactly which file you wish to load, you may enter its
+name in the \fILoad File\fP text box and either hit <cr> or the Load button
+to load it. An absolute or relative path name may be given, if a simple
+filename is specified it will be searched for in the current working directory.
+.TP 5
+.B "Frame Selections"
+By default images will be loaded into frame number 1, you may select a
+different frame using the Frame menu button to cycle through the available
+frames.
+
+.SH "SAVE PANEL"
+
+The Save Panel lets you save the current contents of the main display window
+to a disk file (including the Panner/Coords markers, any general graphics
+markers, or overlay graphics displayed by the client program). Presently,
+only the contents of the main display window may be saved, there is no
+facility for saving the undisplayed contents of the entire frame buffer
+other than to enable the autoscale feature. A limited number of formats are
+currently available, others will be added in future versions.
+.TP 5
+.B "File Name"
+The File Name text box allows you to enter the file name of the saved
+file. A "%d" anywhere in the name will be replaced by a sequence number
+allowing multiple frames to be saved with unique names.
+.TP 5
+.B "Format"
+The Format box allows you to choose the format of the image to be
+created. Not all formats are currently implemented.
+.TP 5
+.B "Color"
+The Color box lets you choose the color type of the image to be
+created. The options will change depending on the format, e.g. FITS
+doesn't allow color so no color options will be allowed. Formats which
+allow 24-bit images will be written using the current colormap after
+converting to a 24-bit image, pseudocolor images will be written with
+the current colormap.
+
+.SH "PRINT PANEL"
+
+The Print Panel allows you dump the contents of the main display window as
+Encapsulated Postscript to either a named printer device or to a disk file.
+The \fIPrint To\fP selects the type of output, the \fIPrint Command\fP box
+will adjust accordingly, either as a Unix printer command or as a file name.
+A "%d" anywhere in the name for disk output will be replaced by a sequence
+number allowing multiple frames to be saved with unique names. Selecting
+printers from the installed list will automatically change the command to be
+used to generate the output. This command does not necessarily need to be a
+printer command, the printer configuration file lets you define any command
+string to process the image.
+
+.SS "COLOR OPTIONS"
+
+The Color box lets you choose the color type of the image to be created.
+PseudoColor or 24-bit postscript will be created using the current colormap
+and enhancements.
+
+.SS "POSTSCRIPT OPTIONS"
+
+.TP 5
+.B "Orientation"
+Set the page orientation.
+.TP 5
+.B "Paper Size"
+Select the paper size to be used.
+.TP 5
+.B "Image Scale"
+Set the scale factor used to compute the final image size. No checking is
+done to make sure the image will fit correctly on the page.
+
+.SS "PROCESSING OPTIONS"
+.TP 5
+.B "Auto Scale"
+Toggles whether or not the image is automatically scaled
+to fit the page. If not enabled, the image scale will be used to
+determine the output image size, otherwise the image will be scaled down
+(if necessary) to fit on the page.
+.TP 5
+.B "Auto Rotate"
+Determines whether or not the image will be rotated to fit
+on the page. When set, an image larger than the current orientation
+will be rotated and possibly scaled to fit the page, otherwise the image
+may be scaled so that it fits in the current orientation.
+.TP 5
+.B "Max Aspect"
+Automatically increases the scale so the image fills the page in the current
+orientation.
+.TP 5
+.B "Annotate"
+The annotate option toggles whether or not the final file includes
+annotation such as the image title, a colorbar, and axis labels. There is
+currently no option for partial annotation.
+
+.SS "ANNOTATION OPTIONS"
+
+.TP 5
+.B "Annotate"
+Selects whether Postscript image is to be annotated.
+.B "Title"
+Annotate with a title on the top of the image.
+.B "Borders"
+Annotate with borders surrounding the image giving image coordinates.
+.B "Colorbar"
+Annotate with colorbar at the bottom of the image
+.B "Title String"
+Title string to use when \fItitle\fR is selected. The special value
+\fIimtitle\fR will force the title to be the currently displayed image title,
+otherwise it will be this user-selected field.
+
+.SS "PRINTER SELECTION"
+
+The printer selection list lets choose the printer to be used. The printer
+configuration file is /usr/local/lib/ximprint.cfg by default or may be reset
+using the \fI-printConfig\fP command line switch or \fIprintConfig\fP
+resource. The format of the file is simply
+
+ \fIname\\tcommand\fP
+
+The \fIname\fP value is what appears in the selection list and may be more
+than a single word, the \fIcommand\fP can be any command that accepts EPS
+input from a pipe, the two fields must be separated by a tab character.
+Normally the command
+will be a simple \fIlpr -Pfoo\fP or some such, but can also include converters
+or previewers. At most 128 printer commands may be used.
+
+.SH "INFO PANEL"
+
+The information panel is underused at present but is meant to provide basic
+information about the frame being displayed. It is updated to be current
+while changing enhancements, pan/zoom regions, or frame selection. In cases
+where the image title string is truncated in the main display window, the
+user can always pop up the info window to see the full title.
+
+.SH "TCLSHELL"
+
+The \fITclShell\fP allows the user to type commands directly to the TCL
+interpreter, letting you send messages to the object manager or execute
+specific procedures in the TCL code that makes up the GUI. It is used as a
+development or debugging tool for the GUI, but for an example of what it
+does, bring it up and type a command such as
+
+ \fIsend helpButton set background red\fP
+
+
+.SH ENVIRONMENT
+DISPLAY specifies which display terminal to use
+.br
+IMTOOLRC frame buffer configuration file
+.br
+imtoolrc frame buffer configuration file (alternative)
+
+.SH FILES
+/usr/local/lib/imtoolrc default frame buffer configuration file
+.br
+/usr/local/lib/ximprint.cfg default printer configuration file
+.br
+/usr/local/lib/imtoolcmap default colormap directory
+.br
+/dev/imt1i default input fifo
+.br
+/dev/imt1o default output fifo
+.br
+/tmp/.IMT%d default unix socket
+
+.SH BUGS
+
+.SH SEE ALSO
+xgterm(1), xtapemon(1)
+
+.SH COPYRIGHT
+Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag b/vendor/x11iraf/ximtool/OLD/ximtool-mag
new file mode 100755
index 00000000..8e051fc8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag
@@ -0,0 +1,5494 @@
+#!/bin/csh -f
+#
+# XIMTOOL-ALT -- Script wrapper to start XImtool using the alternate GUI.
+# The GUI file is contained is this script which is created when the system
+# is built, it may be used to run any alternate GUI by simply replacing the
+# Tcl script making up the GUI at the end of this script or by using the
+# "-gui" command line flag. The only configurable item is the path to the
+# XImtool binary to be used, by default the one found in the user's path will
+# be used.
+# Arguments specific to this GUI include:
+#
+# -displayMagnifier <bool> show magnifier marker on startup
+# -showToolBar <bool> show toolbar on startup
+# -showPanelBar <bool> show panelbar on startup
+#
+#----------------------------------------------------------------------------
+
+# Configurable parameters
+set XIMTOOL = ximtool # Path to default ximtool binary
+
+
+#------------------------------------------------------------------
+#--------------- Do not modify below this line --------------------
+#------------------------------------------------------------------
+unset noclobber
+onintr cleanup
+
+set SKIP = 106 # offset to GUI file
+
+# Dump the GUI from this script file.
+tail +$SKIP $0 > /tmp/_gui.$$
+
+# Check for no arguments.
+set q = '"'
+set cmd = "-gui /tmp/_gui.$$ -title $q XImtool Experimental GUI $q"
+
+# Process the script arguments, quoting args when necessary.
+if ($#argv > 0) then
+ while ("$1" != "")
+ if ("$1" == "-xrm") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-xrm <resource>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q$1$q"
+ else if ("$1" == "-help") then
+ $XIMTOOL -help
+ exit 0
+ else if ("$1" == "-defgui") then
+ tail +$SKIP $0
+ exit 0
+ else if ("$1" == "-displayMagnifier") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-displayMagnifier <bool>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q XImtool.displayMagnifier:$1$q"
+ else if ("$1" == "-showToolBar") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-showToolBar <bool>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q XImtool.showToolBar:$1$q"
+ else if ("$1" == "-showPanelBar") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-showPanelBar <bool>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q XImtool.showPanelBar:$1$q"
+ else
+ set cmd = "$cmd $1"
+ endif
+
+ if ("$2" == "") then
+ break
+ else
+ shift
+ endif
+ end
+endif
+
+# Run the command.
+echo "$XIMTOOL $cmd ; /bin/rm -f /tmp/_gui*.$$" > /tmp/_gui.cmds.$$
+sh /tmp/_gui.cmds.$$
+
+cleanup:
+ /bin/rm -f /tmp/_gui*.$$
+ exit 0
+
+#--------------------------------------------------------------------------
+#-------------------------- XIMTOOL-ALT.GUI -------------------------------
+#------ ------
+#------ To change the GUI run by this script just delete everything ------
+#------ below here and replace with the new GUI Tcl script. ------
+#------ ------
+#--------------------------------------------------------------------------
+#--------------------------------------------------------------------------
+
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL-MAG.GUI -- Default GUI for the Ximtool-mag image display server.
+#
+# Version 1.2 -- Released 4/30/2000
+
+
+reset-server
+appInitialize ximtool XImtool {
+ *objects:\
+ toplevel Layout display \
+ display Layout menubar \
+ menubar MenuButton fileButton \
+ menubar MenuButton viewButton \
+ menubar MenuButton optionsButton \
+ menubar TextBox imageTitle \
+ menubar Toggle panelButton \
+ menubar Toggle xflipButton \
+ menubar Toggle yflipButton \
+ menubar Command prevButton \
+ menubar MenuButton frameButton \
+ menubar Command nextButton \
+ menubar Toggle helpButton \
+ display Gterm imagewin \
+ display Gterm colorbar \
+\
+ toplevel TopLevelShell info \
+ info Paned infoPanel \
+ infoPanel Box infoBox \
+ infoBox Command infoDone \
+ infoBox Command infoDown \
+ infoBox Command infoUp \
+ infoBox Command infoSave \
+ infoBox Command infoUpdate \
+ infoBox Command infoClear \
+ infoPanel AsciiText infoText \
+\
+ toplevel TopLevelShell controlShell \
+ controlShell Layout controlPanel \
+ controlPanel Group viewBox \
+ controlPanel Group enhancementBox \
+ controlPanel Group blinkBox \
+ controlPanel Group optionsBox \
+ controlPanel Frame controlBox \
+\
+ viewBox Layout view \
+ view Group frameSelect \
+ frameSelect Layout frameBox \
+ frameBox TextToggle frame1 \
+ frameBox TextToggle frame2 \
+ frameBox TextToggle frame3 \
+ frameBox TextToggle frame4 \
+ frameBox Command prevFrame \
+ frameBox Command nextFrame \
+ view Frame frameDataBox \
+ frameDataBox TextBox frameData \
+ view Group zoomBox \
+ zoomBox Layout zoom \
+ zoom TextButton toggleZoom \
+ zoom TextButton zoomIn \
+ zoom Command x1 \
+ zoom Command z2 \
+ zoom Command z3 \
+ zoom Command z4 \
+ zoom Command z5 \
+ zoom Command z8 \
+ zoom TextButton zoomOut \
+ zoom TextButton centerFrame \
+ zoom Command d2 \
+ zoom Command d3 \
+ zoom Command d4 \
+ zoom Command d5 \
+ zoom Command d8 \
+ view Layout viewButtons \
+ viewButtons Command aspect \
+ viewButtons Command flipX \
+ viewButtons Command flipY \
+ viewButtons Command flipXY \
+ viewButtons Command clearFrame \
+ viewButtons Command fitFrame \
+\
+ enhancementBox Layout enhance \
+ enhance Scrollbar2 colorlistScroll \
+ enhance Frame colorlistFrame \
+ colorlistFrame Porthole colorlistPort \
+ colorlistPort MultiList colorlist \
+ enhance Frame colordataFrame \
+ colordataFrame TextBox colordata \
+ enhance Label contrastLabel \
+ enhance Slider2d contrastSlider \
+ enhance Label brightnessLabel \
+ enhance Slider2d brightnessSlider \
+ enhance Command invertButton \
+ enhance Command optimizeButton \
+\
+ blinkBox Layout blink \
+ blink Label blinkFramesLabel \
+ blink Command blinkFrame1 \
+ blink Command blinkFrame2 \
+ blink Command blinkFrame3 \
+ blink Command blinkFrame4 \
+ blink Command blinkReset \
+ blink Label blinkRateLabel \
+ blink Frame BRframe \
+ BRframe Layout BRlayout \
+ BRlayout Arrow BRdecrease \
+ BRlayout TextBox BRtext \
+ BRlayout Arrow BRincrease \
+ blink Command registerButton \
+ blink Command matchButton \
+ blink Toggle blinkButton \
+\
+ optionsBox TextToggle pannerButton \
+ optionsBox TextToggle magnifierButton \
+ optionsBox TextToggle coordsBoxButton \
+ optionsBox TextToggle autoscaleButton \
+ optionsBox TextToggle antialiasButton \
+ optionsBox TextToggle tileFramesButton \
+ optionsBox TextToggle warningsButton \
+\
+ controlBox Layout control \
+ control Command initializeButton \
+ control Command normalizeButton \
+ control Command doneButton \
+\
+ toplevel TopLevelShell tclShell\
+ tclShell Paned tclPanel\
+ tclPanel Box tclForm\
+ tclForm Label tclLabel\
+ tclForm Command tclClear\
+ tclForm Command tclExecute\
+ tclForm Command tclcloseButton\
+ tclPanel AsciiText tclEntry\
+\
+ toplevel TransientShell warning \
+ warning Layout warn \
+ warn Frame warnFrame \
+ warnFrame Layout WFlayout \
+ WFlayout Icon warnIcon \
+ WFlayout TextBox warnText \
+ warn TextButton warnOk \
+ warn TextButton warnCancel \
+ warn TextButton warnHelp \
+\
+ toplevel TopLevelShell print_panel\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame \
+ ScaleFrame Layout ScaleLayout \
+ ScaleLayout Arrow SCdecrease \
+ ScaleLayout TextBox SCtext \
+ ScaleLayout Arrow SCincrease \
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle annotateButton\
+ options TextToggle compressButton\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers \
+ printers Scrollbar2 printlistScroll \
+ printers Frame printlistFrame \
+ printlistFrame Porthole printlistPort \
+ printlistPort MultiList printlist \
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout TextButton okayPrint\
+ cmdLayout Label printStatus\
+ cmdLayout TextButton donePrint\
+\
+ toplevel TopLevelShell save_panel\
+ save_panel Layout saveLayout\
+\
+ saveLayout Group saveNameGroup\
+ saveLayout Group saveOptGroup\
+ saveLayout Group saveCmdGroup\
+\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox \
+ saveDataBox TextBox saveData \
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle x11Button\
+ formats TextToggle pnmButton\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout TextButton okaySave\
+ saveCmdLayout Label saveStatus\
+ saveCmdLayout TextButton doneSave\
+\
+ toplevel TopLevelShell load_panel \
+ load_panel Layout filesLayout \
+ filesLayout Group imagesGroup \
+ imagesGroup Layout imagesLayout \
+ imagesLayout Label imtemplateLabel \
+ imagesLayout Frame imtemplateFrame \
+ imtemplateFrame AsciiText imtemplateText \
+ imagesLayout Scrollbar2 imlistScrollbar \
+ imagesLayout Frame imlistFrame \
+ imlistFrame Porthole imlistPorthole \
+ imlistPorthole MultiList imageList \
+ imagesLayout TextButton rootButton \
+ imagesLayout TextButton homeButton \
+ imagesLayout TextButton upButton \
+ imagesLayout TextButton rescanButton \
+ imagesLayout TextToggle grayToggle \
+ imagesLayout TextToggle browseToggle \
+ imagesLayout Label dirLabel \
+ imagesLayout Label fnameLabel \
+ imagesLayout Frame filnamFrame \
+ imagesLayout Label frameLabel \
+ imagesLayout Command frameFrame \
+ filnamFrame AsciiText fnameText \
+\
+ filesLayout Group fbuttonsGroup \
+ fbuttonsGroup Layout fbuttonsLayout \
+ fbuttonsLayout Command filesLoadButton \
+ fbuttonsLayout Label filesStatus \
+ fbuttonsLayout Command filesCloseButton \
+\
+ toplevel TopLevelShell help_panel \
+ help_panel Layout helpLayout \
+ helpLayout Layout helpMenuLayout \
+ helpLayout Layout helpInfoLayout \
+\
+ helpMenuLayout Command helpBack \
+ helpMenuLayout Command helpForward \
+ helpMenuLayout Command helpHome \
+ helpMenuLayout Command helpClose \
+\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText \
+\
+ helpInfoLayout Label helpIRAFLogo \
+ helpInfoLayout Label helpInfo1 \
+ helpInfoLayout Label helpInfo2 \
+ helpInfoLayout Label helpInfo3 \
+ helpInfoLayout Label helpNOAOLogo \
+\
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help
+
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: Black
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: Black
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+
+ *display.background: gray
+ *display.borderWidth: 0
+
+ *display.debug: False
+ *display.layout: horizontal { \
+ -1 \
+ vertical { \
+ 3 \
+ menubar < +inf -inf * > \
+ 3 \
+ imagewin < +inf -inf * +inf - inf > \
+ 3 \
+ colorbar < +inf -inf * > \
+ } \
+ -1 \
+ }
+
+ *menubar.layout: horizontal { \
+ 1 < -1 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ panelButton 1 < -1 > \
+ 1 < -1 > \
+ xflipButton 1 < -1 > yflipButton \
+ 1 < -1 > \
+ prevButton 1 < -1 > frameButton 1 < -1 > nextButton \
+ 1 < -1 > \
+ helpButton \
+ 1 < -1 > \
+ }
+
+ *menubar*SimpleMenu.foreground: Black
+ *menubar*SimpleMenu.background: gray65
+ *menubar*SimpleMenu.borderColor: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *SmeBSB.vertSpace: 10
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *menubar.width: 512
+ *menubar*background: gray
+ *menubar*foreground: black
+ *menubar*borderWidth: 0
+ *menubar*Command.label: x
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.color8: #7c8498
+ *imagewin.color9: steelblue
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(panel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !Shift<Btn1Down>: call(setDynamicMagnifier,1) \n\
+ !Shift<Btn1Up>: call(setDynamicMagnifier,0) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift<Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.width: 512
+ *colorbar.height: 10
+
+ ! INFO box resources.
+ ! ------------------------------
+ *info.geometry: 420x240
+ *info.title: Information Panel
+ *info*Command.font: 7x13bold
+ *infoPanel*background: gray
+ *infoDone.label: Done
+ *infoDown.label: Down
+ *infoDown.sensitive: False
+ *infoUp.label: Up
+ *infoUp.sensitive: False
+ *infoSave.label: Save
+ *infoSave.sensitive: False
+ *infoUpdate.label: Update
+ *infoClear.label: Clear
+ *infoText*scrollVertical: always
+ *infoText*scrollHorizontal: whenNeeded
+ *infoText*displayCaret: False
+ *infoText*editType: append
+ *info*ScrollbarBackground: #c0c0c0
+ *info*Scrollbar*background: #c0c0c0
+ *info*Scrollbar*width: 17
+ *info*Scrollbar*height: 17
+ *info*Scrollbar*shadowWidth: 2
+ *info*Scrollbar*cursorName: top_left_arrow
+ *info*Scrollbar*pushThumb: true
+
+
+ ! Main Control Panel.
+ ! ------------------------------
+ *controlShell.title: XImtool Control
+ *controlShell.iconName: XimCon
+ *controlPanel*background: gray
+ *controlPanel*foreground: black
+ *controlPanel*TextBox.background: gray63
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+ *controlPanel*Command.highlightThickness: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+ *blinkFrame1.font: 7x13bold
+ *blinkFrame2.font: 7x13bold
+ *blinkFrame3.font: 7x13bold
+ *blinkFrame4.font: 7x13bold
+
+ *controlPanel.debug: False
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -1 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ controlBox < +inf * > \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 5
+
+ *view.debug: False
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 5 < -5 > \
+ } \
+ -1 \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 2
+ *frameData.width: 130
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 5
+ *frameSelect.innerOffset: 5
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame:
+
+ *frameBox.debug: False
+ *frameBox.layout: vertical { \
+ frame1 < +inf * > \
+ frame2 < +inf * > \
+ frame3 < +inf * > \
+ frame4 < +inf * > \
+ 10 < +inf -10 > \
+ horizontal { \
+ -1 \
+ prevFrame \
+ 10 < +inf -5 > \
+ nextFrame \
+ -1 \
+ } \
+ -1 \
+ }
+
+ *frameBox*location: 0 0 10 20
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*highlightThickness: 0
+ *frameBox*frame1.label: \ 1\ \
+ *frameBox*frame2.label: \ 2\ \
+ *frameBox*frame3.label: \ 3\ \
+ *frameBox*frame4.label: \ 4\ \
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xx
+ *frameBox*nextFrame.label: xx
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 5
+ *zoomBox.shrinkToFit: True
+
+ *zoom.debug: False
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { \
+ toggleZoom < +inf * +inf > \
+ 2 \
+ } \
+ 2 \
+ vertical { \
+ 2 < +inf > \
+ z5 \
+ 1 < +inf > \
+ z3 \
+ 0 < +inf > \
+ } \
+ 2 \
+ vertical { \
+ zoomIn < +inf * +inf > \
+ 2 \
+ } \
+ } \
+ 1 < +inf > \
+ horizontal { \
+ 2 < +inf > \
+ d8 d4 d2 x1 z2 z4 z8 \
+ 2 < +inf > \
+ } \
+ 1 < +inf > \
+ horizontal { \
+ vertical { \
+ 2 \
+ zoomOut < +inf * +inf > \
+ } \
+ 2 \
+ vertical { \
+ 0 < +inf > \
+ d3 \
+ 1 < +inf > \
+ d5 \
+ 2 < +inf > \
+ } \
+ 2 \
+ vertical { \
+ 2 \
+ centerFrame < +inf * +inf > \
+ } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 0
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 0
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 0
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 0
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.debug: False
+ *viewButtons.layout: horizontal { \
+ 5 < -2 > \
+ aspect < +inf * > \
+ 5 < -2 > \
+ flipX < +inf * > \
+ 5 < -2 > \
+ flipY < +inf * > \
+ 5 < -2 > \
+ flipXY < +inf * > \
+ 5 < -2 > \
+ clearFrame < +inf * > \
+ 5 < -2 > \
+ fitFrame < +inf * > \
+ 5 < -2 > \
+ }
+
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 5
+
+ *enhance.debug: False
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistScroll < * +inff -inff > \
+ -1 \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ -1 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { \
+ -1 \
+ contrastLabel \
+ 3 < -3 > \
+ brightnessLabel \
+ -1 \
+ } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*FrameType: sunken
+ *enhance*FrameWidth: 2
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+ *enhance*thumbColor: gray
+
+ *colorlistScroll.location: 0 0 20 10
+ *colorlistScroll.vertical: True
+ *colorlistScroll*minsize: 10
+ *colorlist.width: 100
+ *colorlist.height: 78
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 20
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 20
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+ ! BLINK
+ ! ---------------------
+ *blinkBox.label: Blink
+ *blinkBox.location: 0 0 230 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 5
+
+
+ *blink.debug: False
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ 3 \
+ registerButton < +inf * > \
+ 5 < -5 > \
+ matchButton < +inf * > \
+ 5 < -5 > \
+ blinkButton < +inf * > \
+ 2 \
+ } \
+ 3 < -3 > \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *controlPanel*blink*Arrow.foreground: gray
+ *controlPanel*blink*Arrow.background: gray63
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+ *blinkFramesLabel.label: Blink Frames:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 2
+ *BRtext.width: 40
+ *BRtext.height: 25
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 5
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 25
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *magnifierButton.label: Magnifier
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *warningsButton.label: Warnings
+
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 5
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.debug: False
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ doneButton < +inf * > \
+ 1 \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+ *doneButton.label: Done
+
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*background: gray
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+ *warning*TextButton.frameWidth: 2
+ *warning*TextButton.width: 40
+ *warning*TextButton.height: 25
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 5 < -5 > \
+ warnFrame < +inf * +inf > \
+ 5 < -5 > \
+ } \
+ 1 < -1 > \
+ horizontal { \
+ 5 < -5 > \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 5 < +inf -5 > \
+ warnHelp < +inf * > \
+ 5 < -5 > \
+ } \
+ 1 < -1 > \
+ }
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { \
+ 5 < +inf -5 > \
+ warnIcon \
+ 5 < +inf -5 > \
+ } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnOk.label: OK
+ *warnCancel.label: Cancel
+ *warnHelp.label: Help
+ *warnHelp.sensitive: False
+
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel.title: Printer Setup
+ *print_panel.highlightThickness: 1
+ *print_panel*background: gray
+ *print_panel*TextBox.background: gray63
+ *print_panel*TextBox.foreground: black
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.background: gray63
+ *print_panel*Arrow.foreground: gray
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 25
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*Label.background: gray
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -1 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 85
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 2
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout*Label.font: 7x13bold
+ *printCmdLayout.layout: horizontal { \
+ -1 \
+ labelLayout \
+ 5 < -5 > \
+ inputLayout < +inf -inf * +inf > \
+ 2 \
+ }
+
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { \
+ 5 \
+ toLabel \
+ 11 \
+ printerLabel \
+ -3 \
+ }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+
+ *inputLayout*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { \
+ 5 < -5 > \
+ toPrinter \
+ 5 < -5 > \
+ toFile \
+ 5 < +inf -inf > \
+ } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+ *printcmd*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 265
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 0
+ *optLayout*borderWidth: 0
+ *optLayout.layout: horizontal { \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ epsPageGroup < +inf -inf * > \
+ 0 < -0 > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ 0 < -0 > \
+ vertical { \
+ 5 < -5 > \
+ printColorGroup < +inf -inf * > \
+ 0 < -0 > \
+ printerGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 5
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage*Label.font: 7x13bold
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel \
+ 4 < -4 > \
+ horizontal { \
+ 10 \
+ epsPortButton \
+ epsLandButton \
+ -1 \
+ } \
+ 4 < -4 > \
+ epsSizeLabel \
+ -1 \
+ horizontal { \
+ 10 \
+ epsLetterButton \
+ epsLegalButton \
+ epsA4Button \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ epsScaleLabel \
+ 4 < -4 > \
+ ScaleFrame \
+ } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 90
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 90
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 75
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 75
+ *epsA4Button.label: A4
+ *epsA4Button.width: 75
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Image Scale:
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 2
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 50
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease \
+ SCtext < +inf -100% * > \
+ SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 25
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 5
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 100
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.frameWidth: 2
+ *options.location: 0 0 250 75
+ *options.layout: horizontal { \
+ 10 \
+ vertical { \
+ -1 \
+ epsscaleButton \
+ 2 \
+ autorotateButton \
+ 2 \
+ aspectButton \
+ -1 \
+ } \
+ 3 \
+ vertical { \
+ -1 \
+ annotateButton \
+ 2 \
+ compressButton \
+ 25 \
+ -1 \
+ } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *annotateButton.label: Annotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: Compress
+ *compressButton.sensitive: False
+
+! *epsscaleButton.on: True
+! *autorotateButton.on: False
+! *spectButton.on: False
+! *annotateButton.on: True
+! *compressButton.on: False
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 5
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 100
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 15 \
+ vertical { \
+ -1 \
+ prGrayButton \
+ 2 \
+ prPseudoButton \
+ 2 \
+ prRGBButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 100
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 5
+
+ *printers.debug: False
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ -1 \
+ printlistScroll < * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*FrameType: sunken
+ *printers*FrameWidth: 2
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+ *printers*thumbColor: gray
+
+ *printlistScroll.location: 0 0 20 10
+ *printlistScroll.vertical: True
+ *printlistScroll*minsize: 10
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 54
+ *cmdGroup*Command.font: 7x13bold
+ *cmdLayout.borderWidth: 0
+ *cmdLayout.layout: horizontal { \
+ -1 \
+ okayPrint \
+ 1 < +inf -1 > \
+ printStatus < +inf -inf * +inf -inf > \
+ 1 < +inf -1 > \
+ donePrint \
+ -1 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+ *donePrint.label: Done
+
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel.title: Save to Disk...
+ *save_panel*background: gray
+ *save_panel*TextBox.background: gray63
+ *save_panel*TextToggle.alignment: left
+ *save_panel*AsciiText*background: gray63
+ *save_panel*Arrow.background: gray63
+ *save_panel*Arrow.foreground: gray
+ *save_panel*Arrow.width: 16
+ *save_panel*Arrow.height: 25
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+
+ *save_panel*debug: False
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ -1 \
+ saveNameGroup < +inf * > \
+ -1 \
+ saveOptGroup < +inf -inf * +inf -inf > \
+ -1 \
+ saveCmdGroup < +inf * > \
+ -1\
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 60
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 2
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *saveNameGroup*TextBox*font:-*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout*Label.font: 7x13bold
+ *saveNameLayout.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ saveLabel \
+ 5 \
+ fnameFrame < +inf -inf * > \
+ 5 \
+ } \
+ 5 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+! *save_panel*saveFile*background: gray63
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 145
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ fmtGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -100% * +inff -100% > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ saveColorGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 125 120
+ *saveColorGroup.outerOffset: 5
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 100
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ svGrayButton \
+ 2 \
+ svPseudoButton \
+ 2 \
+ svRGBButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svPseudoButton.on: true
+ *svRGBButton.label: RGB
+
+ *saveDataBox*TextBox.background: gray63
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 2
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 5
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { \
+ 7 \
+ fitsButton \
+ 2 \
+ gifButton \
+ 2 \
+ x11Button \
+ 2 \
+ rawButton \
+ -1 \
+ } \
+ 2 < -2 > \
+ vertical { \
+ 7 \
+ rasButton \
+ 2 \
+ tiffButton \
+ 2 \
+ jpegButton \
+ 2 \
+ pnmButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *pnmButton.label: PNM
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: false
+ *x11Button.sensitive: false
+ *pnmButton.sensitive: false
+ *rawButton.sensitive: false
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 54
+! *saveCmdLayout*Command.font: 7x13bold
+ *saveCmdLayout.layout: horizontal { \
+ -1 \
+ okaySave \
+ 1 < +inf -1 > \
+ saveStatus \
+ 1 < +inf -1 > \
+ doneSave \
+ -1 \
+ }
+ *okaySave.label: Save
+ *doneSave.label: Done
+
+ ! File Load Control Panel.
+ !-------------------------------
+ *load_panel.geometry: 400x320
+ *load_panel.title: File Load Panel
+ *filesLayout*borderWidth: 0
+ *filesLayout*highlightThickness: 0
+ *filesLayout*background: gray
+ *filesLayout*Group.outerOffset: 7
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 2
+ *filesLayout*Text*background: gray63
+ *filesLayout*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *filesLayout*TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.width: 80
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*Scrollbar2*background: gray63
+ *filesLayout*scrollbarForeground: gray
+ *filesLayout*Scrollbar2*location: 0 0 20 10
+ *filesLayout*Scrollbar2*vertical: True
+ *filesLayout*Scrollbar2*minsize: 20
+ *filesLayout*MultiList*background: gray63
+ *filesLayout*MultiList*foreground: black
+ *filesLayout*MultiList*shadeSurplus: False
+ *filesLayout*MultiList*width: 120
+ *filesLayout*MultiList.font: 7x13bold
+ *filesLayout*Label.font: 7x13bold
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ 5 < +0 -5 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ imagesGroup < +inf -inf * +inf -inf > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ fbuttonsGroup < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ }
+
+ *imagesGroup.label: Images
+ *imagesGroup.frameWidth: 2
+! *imagesGroup.outerOffset: 5
+ *imagesGroup*offIcon: square0s
+ *imagesGroup*onIcon: square1s
+ *imagesGroup*highlightColor: yellow
+ *imagesLayout*Label.shadowWidth: 0
+ *imagesLayout*Label.justify: left
+ *imagesLayout*Command.width: 90
+ *imagesLayout*TextButton.width: 90
+ *imagesLayout*TextButton.height: 23
+ *imagesLayout*TextButton.font: *times*medium*r*normal*-12-*
+ *imagesLayout.layout: vertical { \
+ 7 < +0 -7 > \
+ horizontal { \
+ 5 \
+ rootButton < +inf -inf * > \
+ 2 \
+ homeButton < +inf -inf * > \
+ 2 \
+ upButton < +inf -inf * > \
+ 2 \
+ rescanButton < +inf -inf * > \
+ 5 \
+ } \
+ 7 \
+ horizontal { \
+ 5 < +0 -5 > \
+ vertical { \
+ 5 \
+ imtemplateLabel < * > \
+ 5 \
+ imtemplateFrame < +inf -inf * > \
+ 10 < +inf -inf > \
+ grayToggle < * > \
+ 5 \
+ browseToggle < * > \
+ 5 \
+ } \
+ 5 \
+ horizontal { \
+ 5 < +0 -5 > \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 < +0 -3 > \
+ imlistScrollbar < * +inf - inf > \
+ 0 < +0 -0 > \
+ } \
+ 5 < +0 -5 > \
+ } \
+ 5 \
+ horizontal { \
+ 5 \
+ dirLabel < +inf -inf * > \
+ 5 \
+ } \
+ 10 \
+ horizontal { \
+ 5 < +0 -5 > \
+ fnameLabel < * > \
+ 5 < +0 -5 > \
+ filnamFrame < +inf -inf * > \
+ 5 < +0 -5 > \
+ frameLabel < * > \
+ 5 < +0 -5 > \
+ frameFrame < -50% * > \
+ 5 < +0 -5 > \
+ } \
+ 5 < +0 -5 > \
+ }
+ *imtemplateLabel.label: File Pattern:
+ *imtemplateText*editType: edit
+ *imtemplateText.height: 20
+ *imageList.width: 100
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *browseToggle.label: Browse
+ *browseToggle.on: True
+ *grayToggle.label: Greyscale
+ *dirLabel.label: Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 20
+ *frameLabel.label: Frame:
+ *frameFrame.label: 1
+
+ *fbuttonsGroup.label:
+ *fbuttonsGroup*frameWidth: 2
+ *fbuttonsGroup*outerOffset: 5
+ *fbuttonsGroup*innerOffset: 5
+ *fbuttonsGroup.frameType: sunken
+ *fbuttonsGroup*Command.font: 7x13bold
+ *fbuttonsLayout*Command.height: 50
+ *fbuttonsLayout*Command.width: 70
+ *fbuttonsLayout.layout: horizontal { \
+ -1 \
+ filesLoadButton \
+ 1 < +inf -1 > \
+ filesStatus \
+ 1 < +inf -1 > \
+ filesCloseButton \
+ -1 \
+ }
+
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+ *filesCloseButton.label: Done
+
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 450
+ *help_panel.height: 525
+ *helpLayout*borderWidth: 0
+ *helpLayout.background: gray
+ *helpLayout*Frame*frameType: sunken
+ *helpLayout*Frame*frameWidth: 2
+ *helpLayout*Frame.background: gray
+ *helpLayout*Layout.background: gray
+ *helpLayout*ScrollbarBackground: #c0c0c0
+ *helpLayout*Scrollbar*background: #c0c0c0
+ *helpLayout*Scrollbar*width: 17
+ *helpLayout*Scrollbar*height: 17
+ *helpLayout*Scrollbar*shadowWidth: 2
+ *helpLayout*Scrollbar*cursorName: top_left_arrow
+ *helpLayout*Scrollbar*pushThumb: true
+
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpMenuLayout < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpTextFrame < +inf -inf * +inf -inf > \
+ 0 \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpInfoLayout < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ -1 \
+ }
+ *helptext*background: white
+ *helptext*foreground: black
+
+ *helpMenuLayout*background: gray
+ *helpMenuLayout*Command.highlightThickness: 2
+ *helpMenuLayout*Command.internalHeight: 2
+ *helpMenuLayout*Command.font: -*-helvetica-bold-r-normal-*-12-*-*-*
+ *helpMenuLayout.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 < +0 -5 > \
+ helpBack \
+ 2 < +0 -2 > \
+ helpForward \
+ 2 < +0 -2 > \
+ helpHome \
+ 20 < +inf -20 > \
+ helpClose \
+ 5 < +0 -5 > \
+ } \
+ 5 \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Done
+
+ *helpInfoLayout*background: gray
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { \
+ 5 \
+ helpIRAFLogo \
+ 5 \
+ } \
+ 1 \
+ vertical { \
+ 5 \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo1 \
+ 0 < +inf -inf > \
+ } \
+ 0 < +inf -0 > \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo2 \
+ 0 < +inf -inf > \
+ } \
+ 0 < +inf -0 > \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo3 \
+ 0 < +inf -inf > \
+ } \
+ 5 \
+ } \
+ 1 \
+ vertical { \
+ 5 \
+ helpNOAOLogo \
+ 5 \
+ } \
+ 5 \
+ }
+ *helpInfo1.label: XImtool V1.2 -- Released: 4/30/2000
+ *helpInfo2.label: iraf@noao.edu (520) 318-8160
+ *helpInfo3.label: NOAO is operated by AURA under cooperative agreement with the NSF
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalheight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: steelblue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalheight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: steelblue
+ *helpInfoLayout.helpNOAOLogo.background: white
+
+ *helpText.width: 450
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText.plainFont: 6x13
+
+
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tclShell.title: Interactive Tcl Shell
+ *tclForm.background: gray
+ *tclForm*Label.background: gray
+ *tclForm*Label.borderWidth: 0
+ *tclForm*Label.resize: False
+ *tclForm*Command.resize: False
+ *tclForm*Command.background: grey75
+ *tclForm*Command.font: 7x13bold
+ *tclLabel.label: Server Command Entry
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclEntry*Text.font: 7x13
+ *tclEntry*width: 500
+ *tclEntry*borderWidth: 1
+ *tclEntry*height: 150
+ *tclEntry*editType: edit
+ *tclEntry*scrollHorizontal: whenNeeded
+ *tclEntry*scrollVertical: never
+ *tclEntry*displayCaret: True
+ *tclcloseButton.label: Done
+
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *warnings: True
+}
+
+# Start up the GUI.
+createObjects
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+activate
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 1.2"
+
+set winWidth [send imagewin get width] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set blinkFrames "1 2" ;# list of blink/tile frames
+
+set loadP_up 0
+set saveP_up 0
+set printP_up 0
+set infoP_up 0
+set panel_up 0
+set helpP_up 0
+
+
+proc winResize {w width height} \
+ { global winWidth winHeight; set winWidth $width; set winHeight $height}
+send imagewin addCallback winResize resize
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { warnings }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set enhancement($i) none ;# colortable enhancement
+}
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} {
+ global frameMenuDescription nframes frames
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+ editMenu frameMenu frameButton $frameMenuDescription
+ }
+ foreach i $frames {
+ if {$i <= $nframes} {
+ send frameBox manage frame$i
+ } else {
+ send frameBox unmanage frame$i
+ }
+ }
+}; send nframes addCallback setNFrames
+
+set frameMenuDescription {
+ { 1 f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ { 2 f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ { 3 f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ { 4 f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} {
+ global frame
+ set frame $new
+ send frameButton set label $frame
+}; send frame addCallback frameChanged
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} {
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} {
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frame
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+}; send frameView addCallback setFrameView
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} {
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} {
+ send imageTitle set label [string trimright $new]
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} {
+ send ${param}Button set state [true $new]
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+proc Quit args { send client Quit }
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x }
+proc yflip args { send client flip y }
+proc xyflip args { send client flip x y }
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00};
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00};
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00};
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f};
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00};
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+send panelButton "set bitmap panel; addCallback panel"
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send helpButton "set bitmap qmark; addCallback Help"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+
+
+# WINDOW the current frame.
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs $xmag $ymag $xcen $ycen
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor()
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.line }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.line }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+# WCSBOX -- Real time coordinate display.
+set track_enable 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$track_enable} {
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ } else {
+ set text [format " %7.2f %7.2f %7.1f " $rx $ry $rz]
+ }
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+}
+
+proc setTrack {state} \
+{
+ global track_enable wcsboxGeom
+ global winWidth winHeight
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+ }
+}
+
+proc wcsboxDestroyCallback args {
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args {
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ }
+}
+
+proc wcsboxMoved {marker event position} {
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} {
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args {
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args {
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args {
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} {
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} {
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ send client zoom $xscale $yscale $x $y
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} {
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} {
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} {
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} {
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args {
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} {
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
+
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+
+proc toggleMagnifier args {
+ global magnifier_enable
+
+ if {$magnifier_enable} {
+ setMagnifier 0
+ send pbMagM set state False
+ } else {
+ setMagnifier 1
+ send pbMagM set state True
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args {
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} {
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} {
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} {
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args {
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} {
+ global magnifierGeom displayMagnifier
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args {
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+ if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+ # For efficiency we won't compute the sqrt of the distance but instead
+ # just compare the square. Use a threshold of 6 pixels so when we
+ # narrow in on the ROI the magnifier is still (mostly) correctly.
+ set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+ (($last_mag_y-$y) * ($last_mag_y-$y))]
+ if {$diff > 36} {
+ set last_mag_x $x
+ set last_mag_y $y
+ return
+ }
+ }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } {
+ return
+ }
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
+
+# FRAME BLINK.
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args {
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args {
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args {
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args {
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client windowColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec {
+ send info map
+ infoUpdate
+ } }
+ { "Load" f.exec {
+ send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ } }
+ { "Save" f.exec {
+ Save
+ } }
+ { "Save As..." f.exec {
+ send save_panel map
+ set saveP_up 1
+ } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec {
+ send print_panel map
+ set printP_up 1
+ } }
+ { "TclShell" f.exec {
+ send tclShell map
+ } }
+ { f.line }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Quit" f.exec Quit }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.line }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.line }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Colormaps" f.title }
+ { f.dblline }
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.line }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.line }
+ { "Control Panel" f.exec { panel
+ set panel_up 1
+ } }
+ { "Print Panel" f.exec { send print_panel map
+ set printP_up 1
+ } }
+ { "Load Panel" f.exec { send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ } }
+ { "Save Panel" f.exec { send save_panel map
+ set saveP_up 1
+ } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+# MAIN CONTROL PANEL
+# ---------------------------
+
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+
+proc controlPanelDone args {
+ global panel_up
+ send controlShell unmap
+ send panelButton set state 0
+ set panel_up 0
+}; send doneButton addCallback controlPanelDone
+
+# panel -- Toggle control panel display.
+proc panel args {
+ global panel_up
+ if {$panel_up} {
+ send controlShell unmap
+ send panelButton set state 0
+ set panel_up 0
+ } else {
+ send controlShell map
+ send panelButton set state 1
+ set panel_up 1
+ }
+}
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} {
+ global frame nframes frames
+ global displayPanner displayCoords displayMagnifier
+ global blinkFrames warnings
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i $blinkFrames {
+ send blinkFrame$button set label $i
+ incr button
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} {
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} {
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+foreach i $frames {send frame$i addCallback cpSetFrame}
+
+# Frame buttons.
+proc cpFrameAction {widget args} {
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args {
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args {
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+};
+
+proc initFitFrame { param old new } {
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} {
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} {
+ global frameZoomX frameZoomY zoomindex frame
+
+ if {$mode == "fixed"} {
+ send client zoom $zoom_x $zoom_y
+ } else {
+ send client zoom \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y]
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args {
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget {toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8} {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+
+proc cpDisplayFrameData {name old new} {
+ global cpFrame cpXcen cpYcen
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpYmag $ymag
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args {
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} {
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args {
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args {
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} {
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set cpScrollHeight 0
+
+proc cpSetColorList {param old new} {
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc cpResizeScrollbar {widget cbtype flags x y w h cw ch} {
+ global cpScrollHeight
+ set newHeight [expr $ch - $h]
+ if {$newHeight && $newHeight != $cpScrollHeight} {
+ send colorlistScroll setScrollbar 0.0 [expr double($h) / $ch]
+ set rowHeight [send colorlist get rowHeight]
+ set rowSpacing [send colorlist get rowSpacing]
+ send colorlistScroll set increment [expr ($ch <= $h) ? 0 : \
+ "double ($rowHeight + $rowSpacing) / ($ch - $h)"]
+ set cpScrollHeight $newHeight
+ }
+}; send colorlistPort addCallback cpResizeScrollbar
+
+proc cpScrollColorlist {widget cbtype pos} {
+ global cpScrollHeight
+ send colorlist set y [expr -int($cpScrollHeight * $pos)]
+}; send colorlistScroll addCallback cpScrollColorlist scroll
+
+proc cpSelectColor {widget cbtype selections indices} {
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+
+proc cpSetBlinkRate {widget args} {
+ global blinkRate
+ if {$widget == "BRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+}
+foreach widget {BRincrease BRdecrease} {
+ send $widget addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} {
+ global blinkFrames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i $frames {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} {
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send $widget set state 0
+ blink
+ } elseif {($blinkId != 0) != [send $widget get state]} {
+ toggleBlink
+ }
+}; send blinkButton addCallback cpBlink
+
+proc cpResetBlink args {
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i $frames {
+ send blinkFrame$i set label " "
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ set blinkIndex 0
+}; send blinkReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} {
+ upvar $name blinkId
+ send blinkButton set state [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} {
+ global blinkFrames frames
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ foreach i $blinkFrames {
+ send blinkFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args {
+ global blinkFrames
+ send client registerFrames \{$blinkFrames\}
+}; send registerButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args {
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}; send matchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} {
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} {
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} {
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} {
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} {
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} {
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args {
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args {
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} {
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args {
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} {
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames args {
+ global blinkFrames
+ set value [send tileFramesButton get on]
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $blinkFrames \}
+}; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} {
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
+
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+
+set W_object ""
+set W_ok_command ""
+set W_cancel_command ""
+
+proc Wexec {object msg args} {
+ global W_object W_ok_command W_cancel_command
+ set W_object $object
+ set W_ok_command [lindex $args 0]
+ set W_cancel_command [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} {
+ global W_object W_ok_command W_cancel_command
+ switch $widget {
+ warnOk { if [llength $W_ok_command] {
+ send $W_object $W_ok_command
+ }
+ }
+ warnCancel { if [llength $W_cancel_command] {
+ send $W_object $W_cancel_command
+ }
+ }
+ }
+ send warning unmap
+}; foreach w {warnOk warnCancel} {send $w addCallback Wbutton}
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} {
+ Wexec client [lindex $new 0] [lindex $new 1] [lindex $new 2]
+}; send alert addCallback setAlert
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args {
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+
+# INFO box.
+#-----------
+proc infoDone args { send info unmap }
+send infoDone addCallback infoDone
+proc infoClear args { send infoText set string "" }
+send infoUpdate addCallback infoUpdate
+send infoClear addCallback infoClear
+
+proc infoUpdate args {
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set center [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $center]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8
+ ]
+ }
+}
+foreach param { frame frameView nframes frameSize frameTitle enhancement } {
+ send $param addCallback infoUpdate
+}
+
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } {
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Print Panel Functions.
+#------------------------
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args {
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } {
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+}
+
+proc prPrintCommand { widget cbtype args } {
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prOptionToggle { widget cbtype args } {
+ global imageScale
+
+ # Handle the image scale widgets first.
+ #print [ format "prOptionToggle %s" $widget ]
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } {
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set psScrollHeight 0
+
+proc psSetPrintList {param old new} {
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc psResizeScrollbar {widget cbtype flags x y w h cw ch} {
+ global psScrollHeight
+ set newHeight [expr $ch - $h]
+ if {$newHeight && $newHeight != $psScrollHeight} {
+ send printlistScroll setScrollbar 0.0 [expr double($h) / $ch]
+ set rowHeight [send printlist get rowHeight]
+ set rowSpacing [send printlist get rowSpacing]
+ send printlistScroll set increment [expr ($ch <= $h) ? 0 : \
+ "double ($rowHeight + $rowSpacing) / ($ch - $h)"]
+ set psScrollHeight $newHeight
+ }
+}; send printlistPort addCallback psResizeScrollbar
+
+proc psScrollPrintlist {widget cbtype pos} {
+ global psScrollHeight
+ send printlist set y [expr -int($psScrollHeight * $pos)]
+}; send printlistScroll addCallback psScrollPrintlist scroll
+
+proc psSelectPrint {widget cbtype selections indices} {
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc printQuit { args } {
+ send print_panel unmap
+} ; send donePrint addCallback printQuit
+
+proc Print { args } {
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } {
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
+#--------------------------
+# Save panel functions.
+#--------------------------
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button pnmButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } {
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ pnmButton { send client setSaveOption format pnm }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } {
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } {
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ pnm { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format pnmButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+send doneSave addCallback "send save_panel unmap"
+
+proc Save { args } {
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+ #send save_panel unmap
+} ; send okaySave addCallback Save
+
+
+# ------------------------------------------
+# Image and objects list display and section
+# ------------------------------------------
+
+set load_frame 1
+
+proc filesTextHighlight { widget event args } {
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+send imtemplateText addEventHandler filesTextHighlight enterWindowMask
+send imtemplateText addEventHandler filesTextHighlight leaveWindowMask
+send fnameText addEventHandler filesTextHighlight enterWindowMask
+send fnameText addEventHandler filesTextHighlight leaveWindowMask
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+proc setPattern { widget mode pattern args } {
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+proc doLoadOptions { param old new } {
+ global warnings loadP_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ #print [format "doLoadOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format "Directory: %s" $val ] }
+ newfile { send fnameText set string $val
+ if { [ string last / $val ] < 0 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ }
+ status { send filesStatus set label $val
+ if { ! $loadP_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayToggle set on $val }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+proc toggleGraymap { widget args } {
+ send client setLoadOption gray [ send grayToggle get on ]
+} ; send grayToggle addCallback toggleGraymap
+
+proc fileLoad { widget mode fname args } {
+ global load_frame loadP_up
+ send imagewin setCursorType busy
+ send client load $fname $load_frame
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] \
+ $fname ]
+ if { [ string last / $fname ] < 0 && [ file isfile $fpath] == 1 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ send imagewin setCursorType idle
+} ; send fnameText addCallback fileLoad
+
+
+set imlistScrollheight 0
+
+proc setFileList {param old new} {
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flresizeScrollbar { widget cbtype flags x y w h cw ch } {
+ global imlistScrollheight
+ set newheight [expr $ch - $h]
+ if { $newheight != $imlistScrollheight } {
+ send imlistScrollbar setScrollbar 0.0 [expr double($h) / $ch]
+ set imlistScrollheight $newheight
+ }
+} ; send imlistPorthole addCallback flresizeScrollbar
+
+proc flscrollList { widget cbtype pos } {
+ global imlistScrollheight
+ send imageList set y [expr -int($imlistScrollheight * $pos)]
+} ; send imlistScrollbar addCallback flscrollList scroll
+
+proc flSelectPrint {widget cbtype selections args} {
+ global load_frame loadP_up
+ foreach selection $selections {
+ send client load $selection $load_frame
+ if { [ string last / $selection ] < 0 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+proc fileSetFrame {widget args} {
+ global nframes load_frame
+
+ set frame [send $widget get label]
+ if {$frame == $nframes} {
+ set frame 1
+ } else {
+ incr frame
+ }
+ send $widget set label $frame
+ set load_frame $frame
+}; send frameFrame addCallback fileSetFrame
+
+proc fileLoadB args {
+ global load_frame loadP_up
+ send imagewin setCursorType busy
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ send client load $fname $load_frame
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] \
+ $fname ]
+ if { [ string last / $fname ] < 0 && [ file isfile $fpath] == 1 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ send imagewin setCursorType idle
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+proc fileQuit args {
+ send load_panel unmap
+ set loadP_up 0
+} ; send filesCloseButton addCallback fileQuit
+
+
+# More Panel toggles
+
+proc infoPanel args {
+ global infoP_up
+ if {$infoP_up} {
+ send info unmap
+ set infoP_up 0
+ } else {
+ send info map
+ set infoP_up 1
+ }
+}
+
+proc pannerPanel args {
+ global panner_enable
+ setPanner [expr !$panner_enable]
+}
+
+proc magnifierPanel args {
+ global magnifier_enable
+ setMagnifier [expr !$magnifier_enable]
+}
+
+proc wcsPanel args {
+ global track_enable
+ setTrack [expr !$track_enable]
+}
+
+proc loadPanel args {
+ global loadP_up
+ if {$loadP_up} {
+ send load_panel unmap
+ set loadP_up 0
+ } else {
+ send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ }
+}
+
+proc savePanel args {
+ global saveP_up
+ if {$saveP_up} {
+ send save_panel unmap
+ set saveP_up 0
+ } else {
+ send save_panel map
+ set saveP_up 1
+ }
+}
+
+proc printPanel args {
+ global printP_up
+ if {$printP_up} {
+ send print_panel unmap
+ set printP_up 0
+ } else {
+ send print_panel map
+ set printP_up 1
+ }
+}
+
+
+#------------------------------------
+# Define procedure for the help panel
+#------------------------------------
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+send helpInfo1 set label $version
+
+proc Help args {
+ global helpP_up
+ if {$helpP_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set helpP_up 0
+ }
+}
+
+proc helpPanel args {
+ global helpP_up
+ if {$helpP_up} {
+ send help_panel unmap
+ set helpP_up 0
+ } else {
+ send help_panel map
+ set helpP_up 1
+ }
+}
+
+proc helpQuit args {
+ global helpP_up
+ send help_panel unmap
+ set helpP_up 0
+ send helpButton set state 0
+ send helpText setText ""
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } {
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} {
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack set sensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward set sensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward set sensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward set sensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} {
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args {
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward set sensitive False
+ send helpBack set sensitive True
+ } else {
+ send helpBack set sensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args {
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack set sensitive False }
+ if {$linkIndex >= 0} { send helpForward set sensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args {
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward set sensitive False
+ send helpBack set sensitive False
+}; send helpHome addCallback hlpHome
+
+
+
+#------------------------------------
+# Define some TCL debug procedures.
+#------------------------------------
+
+set tclP_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { send tclShell unmap }
+proc tclOpen { args } {
+ global tclP_up
+ send tclShell map
+ set tclP_up 1
+}
+
+proc tclPanel args {
+ global tclP_up
+ if {$tclP_up} {
+ send tclShell unmap
+ set tclP_up 0
+ } else {
+ send tclShell map
+ set tclP_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclcloseButton addCallback tclClose
+
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag.c b/vendor/x11iraf/ximtool/OLD/ximtool-mag.c
new file mode 100644
index 00000000..142a99fc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag.c
@@ -0,0 +1,419 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <Obm.h>
+
+#define XIMTOOL_MAIN
+#include "ximtool.h"
+
+/*
+ * XIMTOOL -- X11 based image display server and standalone image display
+ * client. This program is based on the IRAF prototype widget server (object
+ * manager library or OBM) and the gterm-image widget.
+ */
+
+/* Compatibility hacks. */
+#ifdef AUX
+void *memmove(a,b,n) void *a; const void *b; size_t n; { bcopy(b,a,n); }
+#else
+#if defined(sun) && !defined(SYSV)
+void *memmove(a,b,n) void *a, *b; int n; { bcopy(b,a,n); }
+#endif
+#endif
+
+/* Data. */
+XtAppContext app_context;
+static char server[] = "server";
+
+/* The builtin default GUI. */
+char *defgui_text[] = {
+# include "ximtool.gui.h"
+ NULL
+};
+
+
+
+/* MAIN -- XImtool main program. This is the only ximtool routine containing
+ * window system specific code.
+ */
+main (argc, argv)
+int argc;
+char *argv[];
+{
+ register XimDataPtr xim = &ximtool_data;
+ register int i;
+ XtPointer obm;
+ char **sv_argv, *init_file = NULL, *str;
+ int sv_argc, ncolors, base;
+
+
+ /* Process the command line arguments. Scan the arglist first to see
+ * if we're requesting help or a printout of the default GUI, if so
+ * print these out and exit.
+ */
+ if (argc > 1) {
+ if (strcmp (argv[1], "-help") == 0) {
+ Usage ();
+ exit (-1);
+
+ } else if (strcmp (argv[1], "-defgui") == 0) {
+ register int i;
+ for (i=0; defgui_text[i]; i++)
+ printf ("%s\n", defgui_text[i]);
+ exit (0);
+ }
+ }
+
+
+ /* Loop over the command line options and preprocess the ones that
+ * are widget/GUI resources we want to make available more easily.
+ * To do this we'll tweak the argument list so it appears to be a
+ * "-xrm" resource setting, this means the X initialization code
+ * below will do all the real work.
+ */
+ for (i=1; i < argc; i++) {
+
+ if (strcmp (argv[i], "-cmapName") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*cmapName:%s\0", str);
+
+ } else if (strcmp (argv[i], "-maxColors") == 0) {
+ ncolors = atoi (argv[++i]);
+ ncolors = max (32, min (201, ncolors));
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*maxColors:%d\0", ncolors);
+
+ } else if (strcmp (argv[i], "-basePixel") == 0) {
+ base = atoi (argv[++i]);
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*basePixel:%d", base);
+
+ } else if (strcmp (argv[i], "-cmapInitialize") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*cmapInitialize:%s", str);
+
+ } else if (strcmp (argv[i], "-displayPanner") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayPanner:%s", str);
+
+ } else if (strcmp (argv[i], "-displayMagnifier") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayMagnifier:%s", str);
+
+ } else if (strcmp (argv[i], "-displayCoords") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayCoords:%s", str);
+
+ } else if (strcmp (argv[i], "-printConfig") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*printConfig:%s", str);
+ }
+ }
+
+ /* Get local copy of argc and argv. */
+ if ((sv_argc = argc) > 0) {
+ sv_argv = (char **) XtMalloc (argc * sizeof(char *));
+ memmove (sv_argv, argv, argc * sizeof(char *));
+ } else
+ sv_argv = argv;
+
+ /* Initialize applications context. We don't use the top level
+ * shell created here, but we need to deal with it in order to
+ * get the application resources. The object manager opens its own
+ * connection to the display server and manages a separate window
+ * hierarchy with its own top level shell.
+ */
+ xim->toplevel = XtAppInitialize (&app_context, "XImtool",
+ (XrmOptionDescList) NULL, 0, &sv_argc, sv_argv,
+ (String *) NULL, (ArgList) NULL, 0);
+
+ /* Free saved arglist. */
+ free ((char *)sv_argv);
+
+ /* Get application resources. */
+ XtVaGetApplicationResources (xim->toplevel, xim,
+ resources, XtNumber(resources),
+ /* Add any resource overrides here */
+ NULL);
+
+ /* Initialize the object manager. */
+ xim->obm = obm = (XtPointer) ObmOpen (app_context, argc, argv);
+ ObmAddCallback (obm, OBMCB_setGterm|OBMCB_preserve, xim_reset,
+ (XtPointer)xim);
+
+
+ /* Loop over the command line options. The default xim structure
+ * should be defined at this point so the command options can be
+ * used to override them.
+ */
+ for (i=1; i < argc; i++) {
+
+ /* Anything without a '-' is a file name to load at startup.
+ * Only use the first name defined.
+ */
+ if (argv[i][0] != '-') { /* File name */
+ if (!init_file) {
+ init_file = argv[i];
+ if (access (init_file, R_OK) < 0) {
+ fprintf (stderr, "%s: File does not exist: '%s'\n",
+ argv[0], init_file);
+ exit (-1);
+ }
+ }
+
+ } else if (strcmp (argv[i], "-gui") == 0) {
+ xim->gui = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmap1") == 0) {
+ xim->userCMap1 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmap2") == 0) {
+ xim->userCMap2 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmapDir1") == 0) {
+ xim->userCMapDir1 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmapDir1") == 0) {
+ xim->userCMapDir2 = argv[++i];
+
+ } else if (strcmp (argv[i], "-imtoolrc") == 0) {
+ xim->imtoolrc = argv[++i];
+
+ } else if (strcmp (argv[i], "-memModel") == 0) {
+ xim->memModel = argv[++i];
+
+ } else if (strcmp (argv[i], "-config") == 0) {
+ xim->def_config = atoi (argv[++i]);
+
+ } else if (strcmp (argv[i], "-nframes") == 0) {
+ i++;
+ xim->def_nframes = min (MAX_FRAMES, atoi (argv[i]));
+
+ } else if (strcmp (argv[i], "-tile") == 0) {
+ xim->tileFrames++;
+
+ } else if (strcmp (argv[i], "-invert") == 0) {
+ xim->invert++;
+
+ } else if (strcmp (argv[i], "-fifo") == 0) {
+ xim->input_fifo = malloc (strlen (argv[++i]+2));
+ xim->output_fifo = malloc (strlen (argv[i]+2));
+ sprintf (xim->input_fifo, "%si", argv[i]);
+ sprintf (xim->output_fifo, "%so", argv[i]);
+
+ } else if (strcmp (argv[i], "-port") == 0) {
+ if (xim->port != 0 )
+ xim->port = atoi (argv[++i]);
+ else
+ i++;
+
+ } else if (strcmp (argv[i], "-unix") == 0) {
+ if (strcmp ("none", xim->input_fifo) )
+ xim->unixaddr = argv[++i];
+ else
+ i++;
+
+ } else if (strcmp (argv[i], "-fifo_only") == 0) {
+ xim->unixaddr = "none";
+ xim->port = 0;
+
+ } else if (strcmp (argv[i], "-inet_only") == 0 ||
+ strcmp (argv[i], "-port_only") == 0 ) {
+ xim->input_fifo = "";
+ xim->unixaddr = "none";
+
+ } else if (strcmp (argv[i], "-unix_only") == 0) {
+ xim->input_fifo = "";
+ xim->port = 0;
+
+
+ /* Skip any standard X toolkit flags, they're handled above.
+ */
+ } else if (strcmp (argv[i], "-bg") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-fg") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-iconic") == 0) {
+ ;
+ } else if (strcmp (argv[i], "-display") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-geometry") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-title") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-xrm") == 0) {
+ i++;
+
+ } else {
+ fprintf (stderr, "Unrecognized flag '%s'\n", argv[i]);
+ Usage();
+ exit (-1);
+ }
+ }
+
+
+ /* Initialize the ximtool/obm client code. */
+ xim_clientOpen (xim);
+
+ /* Load the Ximtool GUI. If the GUI name is "default" the builtin
+ * default GUI is used. This is stored as an array of text lines,
+ * which we must append newlines to and concatenate together to
+ * form the GUI message.
+ */
+ if (strcmp (xim->gui, "default") == 0 ||
+ (ObmDeliverMsgFromFile (obm, server, xim->gui) != 0)) {
+
+ register char *ip, *op;
+ char *message;
+ int i;
+
+ message = (char *) malloc (204800);
+ for (i=0, op=message; ip = defgui_text[i]; i++) {
+ while (*ip)
+ *op++ = *ip++;
+ *op++ = '\n';
+ }
+ *op++ = '\0';
+
+ ObmDeliverMsg (obm, server, message);
+ free ((char *)message);
+
+ }
+
+ /* Activate the GUI. */
+ ObmActivate (obm);
+
+ /* Initialize the frame buffers and graphics pipeline. */
+ xim_initialize (xim, xim->def_config, xim->def_nframes, 1);
+
+ /* Listen for a client connection. */
+ xim_iisopen (xim);
+
+ /* Initialize the hardcopy option and printer configuration. */
+ xim_initPrinterOps (xim);
+
+ /* Open the file Load/Save structures. */
+ xim_initLoad (xim);
+ xim_initSave (xim);
+
+ /* Load a file at startup if it was defined. */
+ if ( init_file != NULL )
+ xim_loadFile (xim, init_file, 1);
+
+ /* EXECUTE */
+ XtAppMainLoop (app_context);
+
+ xim_shutdown (xim);
+}
+
+
+/* XIM_SHUTDOWN -- Terminate ximtool.
+ */
+xim_shutdown (xim)
+register XimDataPtr xim;
+{
+ eps_close (xim->psim);
+ xim_loadClose (xim);
+ xim_saveClose (xim);
+ xim_clientClose (xim);
+ xim_iisclose (xim);
+ xim_close (xim);
+ ObmClose (xim->obm);
+ exit (0);
+}
+
+
+/* XIM_ADDINPUT -- Register a procedure to be called when there is input
+ * to be processed on the given input source. The ximtool code doesn't
+ * talk to X directly so we need to provide this interface routine.
+ */
+XtPointer
+xim_addInput (xim, input, proc, client_data)
+register XimDataPtr xim;
+int input;
+void (*proc)();
+XtPointer client_data;
+{
+ return ((XtPointer) XtAppAddInput (app_context, input,
+ (XtPointer)XtInputReadMask, *proc, client_data));
+}
+
+
+/* XIM_REMOVEINPUT -- Remove a callback previously posted with xim_addInput.
+ */
+void
+xim_removeInput (xim, id)
+register XimDataPtr xim;
+XtPointer id;
+{
+ XtRemoveInput ((XtInputId)id);
+}
+
+
+/* USAGE -- Print a list of command-line options.
+ */
+Usage ()
+{
+ fprintf (stderr, "Usage:\n\n");
+ printoption (" ximtool");
+ printoption ("[-basePixel <num>]"); /* base cmap pixel */
+ printoption ("[-cmap1 <file>]"); /* User cmap 1 */
+ printoption ("[-cmap2 <file>]"); /* User cmap 2 */
+ printoption ("[-cmapDir1 <dir>]"); /* User cmapDir 1 */
+ printoption ("[-cmapDir1 <dir>]"); /* User cmapDir 2 */
+ printoption ("[-cmapInitialize <bool>]"); /* initialize colormap */
+ printoption ("[-cmapName <name>]"); /* colormap name */
+ printoption ("[-config <num>]"); /* initial config */
+ printoption ("[-defgui]"); /* Print default GUI */
+ printoption ("[-displayPanner <bool>]"); /* display panner box */
+ printoption ("[-displayMagnifier <bool>]"); /* display magnifier */
+ printoption ("[-displayCoords <bool>]"); /* display coords box */
+ printoption ("[-fifo <pipe>]"); /* fifo pipe */
+ printoption ("[-fifo_only]"); /* use fifo only */
+ printoption ("[-gui <file>]"); /* GUI file */
+ printoption ("[-help]"); /* Print help */
+ printoption ("[-imtoolrc <file>]"); /* fbconfig file */
+ printoption ("[-inet_only | -port_only]"); /* use inet only */
+ printoption ("[-invert]"); /* invert colormap */
+ printoption ("[-maxColors <num>]"); /* # of colors */
+ printoption ("[-memModel <type>]"); /* memory model */
+ printoption ("[-nframes <num>]"); /* # of frames */
+ printoption ("[-port <num>]"); /* inet port */
+ printoption ("[-printConfig <name>]"); /* printer config file */
+ printoption ("[-tile]"); /* tile frames */
+ printoption ("[-unix <name>]"); /* unix socket */
+ printoption ("[-unix_only]"); /* use unix only */
+ printoption ("[<file>]"); /* file to load */
+ fprintf (stderr,"\n");
+}
+
+
+/* PRINTOPTION -- Pretty-print an option string.
+ */
+static int cpos = 0;
+printoption(st)
+char *st;
+{
+ if (strlen(st) + cpos > 78) {
+ fprintf (stderr,"\n\t");
+ cpos = 8;
+ }
+ fprintf (stderr,"%s ",st);
+ cpos = cpos + strlen(st) + 1;
+}
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag.gui b/vendor/x11iraf/ximtool/OLD/ximtool-mag.gui
new file mode 100644
index 00000000..19167e6e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag.gui
@@ -0,0 +1,5388 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL-MAG.GUI -- Default GUI for the Ximtool-mag image display server.
+#
+# Version 1.2 -- Released 4/30/2000
+
+
+reset-server
+appInitialize ximtool XImtool {
+ *objects:\
+ toplevel Layout display \
+ display Layout menubar \
+ menubar MenuButton fileButton \
+ menubar MenuButton viewButton \
+ menubar MenuButton optionsButton \
+ menubar TextBox imageTitle \
+ menubar Toggle panelButton \
+ menubar Toggle xflipButton \
+ menubar Toggle yflipButton \
+ menubar Command prevButton \
+ menubar MenuButton frameButton \
+ menubar Command nextButton \
+ menubar Toggle helpButton \
+ display Gterm imagewin \
+ display Gterm colorbar \
+\
+ toplevel TopLevelShell info \
+ info Paned infoPanel \
+ infoPanel Box infoBox \
+ infoBox Command infoDone \
+ infoBox Command infoDown \
+ infoBox Command infoUp \
+ infoBox Command infoSave \
+ infoBox Command infoUpdate \
+ infoBox Command infoClear \
+ infoPanel AsciiText infoText \
+\
+ toplevel TopLevelShell controlShell \
+ controlShell Layout controlPanel \
+ controlPanel Group viewBox \
+ controlPanel Group enhancementBox \
+ controlPanel Group blinkBox \
+ controlPanel Group optionsBox \
+ controlPanel Frame controlBox \
+\
+ viewBox Layout view \
+ view Group frameSelect \
+ frameSelect Layout frameBox \
+ frameBox TextToggle frame1 \
+ frameBox TextToggle frame2 \
+ frameBox TextToggle frame3 \
+ frameBox TextToggle frame4 \
+ frameBox Command prevFrame \
+ frameBox Command nextFrame \
+ view Frame frameDataBox \
+ frameDataBox TextBox frameData \
+ view Group zoomBox \
+ zoomBox Layout zoom \
+ zoom TextButton toggleZoom \
+ zoom TextButton zoomIn \
+ zoom Command x1 \
+ zoom Command z2 \
+ zoom Command z3 \
+ zoom Command z4 \
+ zoom Command z5 \
+ zoom Command z8 \
+ zoom TextButton zoomOut \
+ zoom TextButton centerFrame \
+ zoom Command d2 \
+ zoom Command d3 \
+ zoom Command d4 \
+ zoom Command d5 \
+ zoom Command d8 \
+ view Layout viewButtons \
+ viewButtons Command aspect \
+ viewButtons Command flipX \
+ viewButtons Command flipY \
+ viewButtons Command flipXY \
+ viewButtons Command clearFrame \
+ viewButtons Command fitFrame \
+\
+ enhancementBox Layout enhance \
+ enhance Scrollbar2 colorlistScroll \
+ enhance Frame colorlistFrame \
+ colorlistFrame Porthole colorlistPort \
+ colorlistPort MultiList colorlist \
+ enhance Frame colordataFrame \
+ colordataFrame TextBox colordata \
+ enhance Label contrastLabel \
+ enhance Slider2d contrastSlider \
+ enhance Label brightnessLabel \
+ enhance Slider2d brightnessSlider \
+ enhance Command invertButton \
+ enhance Command optimizeButton \
+\
+ blinkBox Layout blink \
+ blink Label blinkFramesLabel \
+ blink Command blinkFrame1 \
+ blink Command blinkFrame2 \
+ blink Command blinkFrame3 \
+ blink Command blinkFrame4 \
+ blink Command blinkReset \
+ blink Label blinkRateLabel \
+ blink Frame BRframe \
+ BRframe Layout BRlayout \
+ BRlayout Arrow BRdecrease \
+ BRlayout TextBox BRtext \
+ BRlayout Arrow BRincrease \
+ blink Command registerButton \
+ blink Command matchButton \
+ blink Toggle blinkButton \
+\
+ optionsBox TextToggle pannerButton \
+ optionsBox TextToggle magnifierButton \
+ optionsBox TextToggle coordsBoxButton \
+ optionsBox TextToggle autoscaleButton \
+ optionsBox TextToggle antialiasButton \
+ optionsBox TextToggle tileFramesButton \
+ optionsBox TextToggle warningsButton \
+\
+ controlBox Layout control \
+ control Command initializeButton \
+ control Command normalizeButton \
+ control Command doneButton \
+\
+ toplevel TopLevelShell tclShell\
+ tclShell Paned tclPanel\
+ tclPanel Box tclForm\
+ tclForm Label tclLabel\
+ tclForm Command tclClear\
+ tclForm Command tclExecute\
+ tclForm Command tclcloseButton\
+ tclPanel AsciiText tclEntry\
+\
+ toplevel TransientShell warning \
+ warning Layout warn \
+ warn Frame warnFrame \
+ warnFrame Layout WFlayout \
+ WFlayout Icon warnIcon \
+ WFlayout TextBox warnText \
+ warn TextButton warnOk \
+ warn TextButton warnCancel \
+ warn TextButton warnHelp \
+\
+ toplevel TopLevelShell print_panel\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame \
+ ScaleFrame Layout ScaleLayout \
+ ScaleLayout Arrow SCdecrease \
+ ScaleLayout TextBox SCtext \
+ ScaleLayout Arrow SCincrease \
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle annotateButton\
+ options TextToggle compressButton\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers \
+ printers Scrollbar2 printlistScroll \
+ printers Frame printlistFrame \
+ printlistFrame Porthole printlistPort \
+ printlistPort MultiList printlist \
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout TextButton okayPrint\
+ cmdLayout Label printStatus\
+ cmdLayout TextButton donePrint\
+\
+ toplevel TopLevelShell save_panel\
+ save_panel Layout saveLayout\
+\
+ saveLayout Group saveNameGroup\
+ saveLayout Group saveOptGroup\
+ saveLayout Group saveCmdGroup\
+\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox \
+ saveDataBox TextBox saveData \
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle x11Button\
+ formats TextToggle pnmButton\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout TextButton okaySave\
+ saveCmdLayout Label saveStatus\
+ saveCmdLayout TextButton doneSave\
+\
+ toplevel TopLevelShell load_panel \
+ load_panel Layout filesLayout \
+ filesLayout Group imagesGroup \
+ imagesGroup Layout imagesLayout \
+ imagesLayout Label imtemplateLabel \
+ imagesLayout Frame imtemplateFrame \
+ imtemplateFrame AsciiText imtemplateText \
+ imagesLayout Scrollbar2 imlistScrollbar \
+ imagesLayout Frame imlistFrame \
+ imlistFrame Porthole imlistPorthole \
+ imlistPorthole MultiList imageList \
+ imagesLayout TextButton rootButton \
+ imagesLayout TextButton homeButton \
+ imagesLayout TextButton upButton \
+ imagesLayout TextButton rescanButton \
+ imagesLayout TextToggle grayToggle \
+ imagesLayout TextToggle browseToggle \
+ imagesLayout Label dirLabel \
+ imagesLayout Label fnameLabel \
+ imagesLayout Frame filnamFrame \
+ imagesLayout Label frameLabel \
+ imagesLayout Command frameFrame \
+ filnamFrame AsciiText fnameText \
+\
+ filesLayout Group fbuttonsGroup \
+ fbuttonsGroup Layout fbuttonsLayout \
+ fbuttonsLayout Command filesLoadButton \
+ fbuttonsLayout Label filesStatus \
+ fbuttonsLayout Command filesCloseButton \
+\
+ toplevel TopLevelShell help_panel \
+ help_panel Layout helpLayout \
+ helpLayout Layout helpMenuLayout \
+ helpLayout Layout helpInfoLayout \
+\
+ helpMenuLayout Command helpBack \
+ helpMenuLayout Command helpForward \
+ helpMenuLayout Command helpHome \
+ helpMenuLayout Command helpClose \
+\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText \
+\
+ helpInfoLayout Label helpIRAFLogo \
+ helpInfoLayout Label helpInfo1 \
+ helpInfoLayout Label helpInfo2 \
+ helpInfoLayout Label helpInfo3 \
+ helpInfoLayout Label helpNOAOLogo \
+\
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help
+
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: Black
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: Black
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+
+ *display.background: gray
+ *display.borderWidth: 0
+
+ *display.debug: False
+ *display.layout: horizontal { \
+ -1 \
+ vertical { \
+ 3 \
+ menubar < +inf -inf * > \
+ 3 \
+ imagewin < +inf -inf * +inf - inf > \
+ 3 \
+ colorbar < +inf -inf * > \
+ } \
+ -1 \
+ }
+
+ *menubar.layout: horizontal { \
+ 1 < -1 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ panelButton 1 < -1 > \
+ 1 < -1 > \
+ xflipButton 1 < -1 > yflipButton \
+ 1 < -1 > \
+ prevButton 1 < -1 > frameButton 1 < -1 > nextButton \
+ 1 < -1 > \
+ helpButton \
+ 1 < -1 > \
+ }
+
+ *menubar*SimpleMenu.foreground: Black
+ *menubar*SimpleMenu.background: gray65
+ *menubar*SimpleMenu.borderColor: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *SmeBSB.vertSpace: 10
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *menubar.width: 512
+ *menubar*background: gray
+ *menubar*foreground: black
+ *menubar*borderWidth: 0
+ *menubar*Command.label: x
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.color8: #7c8498
+ *imagewin.color9: steelblue
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(panel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !Shift<Btn1Down>: call(setDynamicMagnifier,1) \n\
+ !Shift<Btn1Up>: call(setDynamicMagnifier,0) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift<Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.width: 512
+ *colorbar.height: 10
+
+ ! INFO box resources.
+ ! ------------------------------
+ *info.geometry: 420x240
+ *info.title: Information Panel
+ *info*Command.font: 7x13bold
+ *infoPanel*background: gray
+ *infoDone.label: Done
+ *infoDown.label: Down
+ *infoDown.sensitive: False
+ *infoUp.label: Up
+ *infoUp.sensitive: False
+ *infoSave.label: Save
+ *infoSave.sensitive: False
+ *infoUpdate.label: Update
+ *infoClear.label: Clear
+ *infoText*scrollVertical: always
+ *infoText*scrollHorizontal: whenNeeded
+ *infoText*displayCaret: False
+ *infoText*editType: append
+ *info*ScrollbarBackground: #c0c0c0
+ *info*Scrollbar*background: #c0c0c0
+ *info*Scrollbar*width: 17
+ *info*Scrollbar*height: 17
+ *info*Scrollbar*shadowWidth: 2
+ *info*Scrollbar*cursorName: top_left_arrow
+ *info*Scrollbar*pushThumb: true
+
+
+ ! Main Control Panel.
+ ! ------------------------------
+ *controlShell.title: XImtool Control
+ *controlShell.iconName: XimCon
+ *controlPanel*background: gray
+ *controlPanel*foreground: black
+ *controlPanel*TextBox.background: gray63
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+ *controlPanel*Command.highlightThickness: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+ *blinkFrame1.font: 7x13bold
+ *blinkFrame2.font: 7x13bold
+ *blinkFrame3.font: 7x13bold
+ *blinkFrame4.font: 7x13bold
+
+ *controlPanel.debug: False
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -1 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ controlBox < +inf * > \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 5
+
+ *view.debug: False
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 5 < -5 > \
+ } \
+ -1 \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 2
+ *frameData.width: 130
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 5
+ *frameSelect.innerOffset: 5
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame:
+
+ *frameBox.debug: False
+ *frameBox.layout: vertical { \
+ frame1 < +inf * > \
+ frame2 < +inf * > \
+ frame3 < +inf * > \
+ frame4 < +inf * > \
+ 10 < +inf -10 > \
+ horizontal { \
+ -1 \
+ prevFrame \
+ 10 < +inf -5 > \
+ nextFrame \
+ -1 \
+ } \
+ -1 \
+ }
+
+ *frameBox*location: 0 0 10 20
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*highlightThickness: 0
+ *frameBox*frame1.label: \ 1\ \
+ *frameBox*frame2.label: \ 2\ \
+ *frameBox*frame3.label: \ 3\ \
+ *frameBox*frame4.label: \ 4\ \
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xx
+ *frameBox*nextFrame.label: xx
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 5
+ *zoomBox.shrinkToFit: True
+
+ *zoom.debug: False
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { \
+ toggleZoom < +inf * +inf > \
+ 2 \
+ } \
+ 2 \
+ vertical { \
+ 2 < +inf > \
+ z5 \
+ 1 < +inf > \
+ z3 \
+ 0 < +inf > \
+ } \
+ 2 \
+ vertical { \
+ zoomIn < +inf * +inf > \
+ 2 \
+ } \
+ } \
+ 1 < +inf > \
+ horizontal { \
+ 2 < +inf > \
+ d8 d4 d2 x1 z2 z4 z8 \
+ 2 < +inf > \
+ } \
+ 1 < +inf > \
+ horizontal { \
+ vertical { \
+ 2 \
+ zoomOut < +inf * +inf > \
+ } \
+ 2 \
+ vertical { \
+ 0 < +inf > \
+ d3 \
+ 1 < +inf > \
+ d5 \
+ 2 < +inf > \
+ } \
+ 2 \
+ vertical { \
+ 2 \
+ centerFrame < +inf * +inf > \
+ } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 0
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 0
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 0
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 0
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.debug: False
+ *viewButtons.layout: horizontal { \
+ 5 < -2 > \
+ aspect < +inf * > \
+ 5 < -2 > \
+ flipX < +inf * > \
+ 5 < -2 > \
+ flipY < +inf * > \
+ 5 < -2 > \
+ flipXY < +inf * > \
+ 5 < -2 > \
+ clearFrame < +inf * > \
+ 5 < -2 > \
+ fitFrame < +inf * > \
+ 5 < -2 > \
+ }
+
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 5
+
+ *enhance.debug: False
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistScroll < * +inff -inff > \
+ -1 \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ -1 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { \
+ -1 \
+ contrastLabel \
+ 3 < -3 > \
+ brightnessLabel \
+ -1 \
+ } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*FrameType: sunken
+ *enhance*FrameWidth: 2
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+ *enhance*thumbColor: gray
+
+ *colorlistScroll.location: 0 0 20 10
+ *colorlistScroll.vertical: True
+ *colorlistScroll*minsize: 10
+ *colorlist.width: 100
+ *colorlist.height: 78
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 20
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 20
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+ ! BLINK
+ ! ---------------------
+ *blinkBox.label: Blink
+ *blinkBox.location: 0 0 230 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 5
+
+
+ *blink.debug: False
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ 3 \
+ registerButton < +inf * > \
+ 5 < -5 > \
+ matchButton < +inf * > \
+ 5 < -5 > \
+ blinkButton < +inf * > \
+ 2 \
+ } \
+ 3 < -3 > \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *controlPanel*blink*Arrow.foreground: gray
+ *controlPanel*blink*Arrow.background: gray63
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+ *blinkFramesLabel.label: Blink Frames:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 2
+ *BRtext.width: 40
+ *BRtext.height: 25
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 5
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 25
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *magnifierButton.label: Magnifier
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *warningsButton.label: Warnings
+
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 5
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.debug: False
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ doneButton < +inf * > \
+ 1 \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+ *doneButton.label: Done
+
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*background: gray
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+ *warning*TextButton.frameWidth: 2
+ *warning*TextButton.width: 40
+ *warning*TextButton.height: 25
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 5 < -5 > \
+ warnFrame < +inf * +inf > \
+ 5 < -5 > \
+ } \
+ 1 < -1 > \
+ horizontal { \
+ 5 < -5 > \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 5 < +inf -5 > \
+ warnHelp < +inf * > \
+ 5 < -5 > \
+ } \
+ 1 < -1 > \
+ }
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { \
+ 5 < +inf -5 > \
+ warnIcon \
+ 5 < +inf -5 > \
+ } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnOk.label: OK
+ *warnCancel.label: Cancel
+ *warnHelp.label: Help
+ *warnHelp.sensitive: False
+
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel.title: Printer Setup
+ *print_panel.highlightThickness: 1
+ *print_panel*background: gray
+ *print_panel*TextBox.background: gray63
+ *print_panel*TextBox.foreground: black
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.background: gray63
+ *print_panel*Arrow.foreground: gray
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 25
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*Label.background: gray
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -1 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 85
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 2
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout*Label.font: 7x13bold
+ *printCmdLayout.layout: horizontal { \
+ -1 \
+ labelLayout \
+ 5 < -5 > \
+ inputLayout < +inf -inf * +inf > \
+ 2 \
+ }
+
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { \
+ 5 \
+ toLabel \
+ 11 \
+ printerLabel \
+ -3 \
+ }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+
+ *inputLayout*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { \
+ 5 < -5 > \
+ toPrinter \
+ 5 < -5 > \
+ toFile \
+ 5 < +inf -inf > \
+ } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+ *printcmd*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 265
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 0
+ *optLayout*borderWidth: 0
+ *optLayout.layout: horizontal { \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ epsPageGroup < +inf -inf * > \
+ 0 < -0 > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ 0 < -0 > \
+ vertical { \
+ 5 < -5 > \
+ printColorGroup < +inf -inf * > \
+ 0 < -0 > \
+ printerGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 5
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage*Label.font: 7x13bold
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel \
+ 4 < -4 > \
+ horizontal { \
+ 10 \
+ epsPortButton \
+ epsLandButton \
+ -1 \
+ } \
+ 4 < -4 > \
+ epsSizeLabel \
+ -1 \
+ horizontal { \
+ 10 \
+ epsLetterButton \
+ epsLegalButton \
+ epsA4Button \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ epsScaleLabel \
+ 4 < -4 > \
+ ScaleFrame \
+ } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 90
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 90
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 75
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 75
+ *epsA4Button.label: A4
+ *epsA4Button.width: 75
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Image Scale:
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 2
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 50
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease \
+ SCtext < +inf -100% * > \
+ SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 25
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 5
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 100
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.frameWidth: 2
+ *options.location: 0 0 250 75
+ *options.layout: horizontal { \
+ 10 \
+ vertical { \
+ -1 \
+ epsscaleButton \
+ 2 \
+ autorotateButton \
+ 2 \
+ aspectButton \
+ -1 \
+ } \
+ 3 \
+ vertical { \
+ -1 \
+ annotateButton \
+ 2 \
+ compressButton \
+ 25 \
+ -1 \
+ } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *annotateButton.label: Annotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: Compress
+ *compressButton.sensitive: False
+
+! *epsscaleButton.on: True
+! *autorotateButton.on: False
+! *spectButton.on: False
+! *annotateButton.on: True
+! *compressButton.on: False
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 5
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 100
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 15 \
+ vertical { \
+ -1 \
+ prGrayButton \
+ 2 \
+ prPseudoButton \
+ 2 \
+ prRGBButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 100
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 5
+
+ *printers.debug: False
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ -1 \
+ printlistScroll < * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*FrameType: sunken
+ *printers*FrameWidth: 2
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+ *printers*thumbColor: gray
+
+ *printlistScroll.location: 0 0 20 10
+ *printlistScroll.vertical: True
+ *printlistScroll*minsize: 10
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 54
+ *cmdGroup*Command.font: 7x13bold
+ *cmdLayout.borderWidth: 0
+ *cmdLayout.layout: horizontal { \
+ -1 \
+ okayPrint \
+ 1 < +inf -1 > \
+ printStatus < +inf -inf * +inf -inf > \
+ 1 < +inf -1 > \
+ donePrint \
+ -1 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+ *donePrint.label: Done
+
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel.title: Save to Disk...
+ *save_panel*background: gray
+ *save_panel*TextBox.background: gray63
+ *save_panel*TextToggle.alignment: left
+ *save_panel*AsciiText*background: gray63
+ *save_panel*Arrow.background: gray63
+ *save_panel*Arrow.foreground: gray
+ *save_panel*Arrow.width: 16
+ *save_panel*Arrow.height: 25
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+
+ *save_panel*debug: False
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ -1 \
+ saveNameGroup < +inf * > \
+ -1 \
+ saveOptGroup < +inf -inf * +inf -inf > \
+ -1 \
+ saveCmdGroup < +inf * > \
+ -1\
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 60
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 2
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *saveNameGroup*TextBox*font:-*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout*Label.font: 7x13bold
+ *saveNameLayout.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ saveLabel \
+ 5 \
+ fnameFrame < +inf -inf * > \
+ 5 \
+ } \
+ 5 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+! *save_panel*saveFile*background: gray63
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 145
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ fmtGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -100% * +inff -100% > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { \
+ 5 < -5 > \
+ saveColorGroup < +inf * +inf > \
+ -1 \
+ } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 125 120
+ *saveColorGroup.outerOffset: 5
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 100
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ svGrayButton \
+ 2 \
+ svPseudoButton \
+ 2 \
+ svRGBButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svPseudoButton.on: true
+ *svRGBButton.label: RGB
+
+ *saveDataBox*TextBox.background: gray63
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 2
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 5
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { \
+ 7 \
+ fitsButton \
+ 2 \
+ gifButton \
+ 2 \
+ x11Button \
+ 2 \
+ rawButton \
+ -1 \
+ } \
+ 2 < -2 > \
+ vertical { \
+ 7 \
+ rasButton \
+ 2 \
+ tiffButton \
+ 2 \
+ jpegButton \
+ 2 \
+ pnmButton \
+ -1 \
+ } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *pnmButton.label: PNM
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: false
+ *x11Button.sensitive: false
+ *pnmButton.sensitive: false
+ *rawButton.sensitive: false
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 54
+! *saveCmdLayout*Command.font: 7x13bold
+ *saveCmdLayout.layout: horizontal { \
+ -1 \
+ okaySave \
+ 1 < +inf -1 > \
+ saveStatus \
+ 1 < +inf -1 > \
+ doneSave \
+ -1 \
+ }
+ *okaySave.label: Save
+ *doneSave.label: Done
+
+ ! File Load Control Panel.
+ !-------------------------------
+ *load_panel.geometry: 400x320
+ *load_panel.title: File Load Panel
+ *filesLayout*borderWidth: 0
+ *filesLayout*highlightThickness: 0
+ *filesLayout*background: gray
+ *filesLayout*Group.outerOffset: 7
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 2
+ *filesLayout*Text*background: gray63
+ *filesLayout*Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *filesLayout*TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.width: 80
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*Scrollbar2*background: gray63
+ *filesLayout*scrollbarForeground: gray
+ *filesLayout*Scrollbar2*location: 0 0 20 10
+ *filesLayout*Scrollbar2*vertical: True
+ *filesLayout*Scrollbar2*minsize: 20
+ *filesLayout*MultiList*background: gray63
+ *filesLayout*MultiList*foreground: black
+ *filesLayout*MultiList*shadeSurplus: False
+ *filesLayout*MultiList*width: 120
+ *filesLayout*MultiList.font: 7x13bold
+ *filesLayout*Label.font: 7x13bold
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ 5 < +0 -5 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ imagesGroup < +inf -inf * +inf -inf > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ fbuttonsGroup < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ }
+
+ *imagesGroup.label: Images
+ *imagesGroup.frameWidth: 2
+! *imagesGroup.outerOffset: 5
+ *imagesGroup*offIcon: square0s
+ *imagesGroup*onIcon: square1s
+ *imagesGroup*highlightColor: yellow
+ *imagesLayout*Label.shadowWidth: 0
+ *imagesLayout*Label.justify: left
+ *imagesLayout*Command.width: 90
+ *imagesLayout*TextButton.width: 90
+ *imagesLayout*TextButton.height: 23
+ *imagesLayout*TextButton.font: *times*medium*r*normal*-12-*
+ *imagesLayout.layout: vertical { \
+ 7 < +0 -7 > \
+ horizontal { \
+ 5 \
+ rootButton < +inf -inf * > \
+ 2 \
+ homeButton < +inf -inf * > \
+ 2 \
+ upButton < +inf -inf * > \
+ 2 \
+ rescanButton < +inf -inf * > \
+ 5 \
+ } \
+ 7 \
+ horizontal { \
+ 5 < +0 -5 > \
+ vertical { \
+ 5 \
+ imtemplateLabel < * > \
+ 5 \
+ imtemplateFrame < +inf -inf * > \
+ 10 < +inf -inf > \
+ grayToggle < * > \
+ 5 \
+ browseToggle < * > \
+ 5 \
+ } \
+ 5 \
+ horizontal { \
+ 5 < +0 -5 > \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 < +0 -3 > \
+ imlistScrollbar < * +inf - inf > \
+ 0 < +0 -0 > \
+ } \
+ 5 < +0 -5 > \
+ } \
+ 5 \
+ horizontal { \
+ 5 \
+ dirLabel < +inf -inf * > \
+ 5 \
+ } \
+ 10 \
+ horizontal { \
+ 5 < +0 -5 > \
+ fnameLabel < * > \
+ 5 < +0 -5 > \
+ filnamFrame < +inf -inf * > \
+ 5 < +0 -5 > \
+ frameLabel < * > \
+ 5 < +0 -5 > \
+ frameFrame < -50% * > \
+ 5 < +0 -5 > \
+ } \
+ 5 < +0 -5 > \
+ }
+ *imtemplateLabel.label: File Pattern:
+ *imtemplateText*editType: edit
+ *imtemplateText.height: 20
+ *imageList.width: 100
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *browseToggle.label: Browse
+ *browseToggle.on: True
+ *grayToggle.label: Greyscale
+ *dirLabel.label: Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 20
+ *frameLabel.label: Frame:
+ *frameFrame.label: 1
+
+ *fbuttonsGroup.label:
+ *fbuttonsGroup*frameWidth: 2
+ *fbuttonsGroup*outerOffset: 5
+ *fbuttonsGroup*innerOffset: 5
+ *fbuttonsGroup.frameType: sunken
+ *fbuttonsGroup*Command.font: 7x13bold
+ *fbuttonsLayout*Command.height: 50
+ *fbuttonsLayout*Command.width: 70
+ *fbuttonsLayout.layout: horizontal { \
+ -1 \
+ filesLoadButton \
+ 1 < +inf -1 > \
+ filesStatus \
+ 1 < +inf -1 > \
+ filesCloseButton \
+ -1 \
+ }
+
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+ *filesCloseButton.label: Done
+
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 450
+ *help_panel.height: 525
+ *helpLayout*borderWidth: 0
+ *helpLayout.background: gray
+ *helpLayout*Frame*frameType: sunken
+ *helpLayout*Frame*frameWidth: 2
+ *helpLayout*Frame.background: gray
+ *helpLayout*Layout.background: gray
+ *helpLayout*ScrollbarBackground: #c0c0c0
+ *helpLayout*Scrollbar*background: #c0c0c0
+ *helpLayout*Scrollbar*width: 17
+ *helpLayout*Scrollbar*height: 17
+ *helpLayout*Scrollbar*shadowWidth: 2
+ *helpLayout*Scrollbar*cursorName: top_left_arrow
+ *helpLayout*Scrollbar*pushThumb: true
+
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpMenuLayout < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpTextFrame < +inf -inf * +inf -inf > \
+ 0 \
+ } \
+ 0 < +0 -0 > \
+ horizontal { \
+ 0 < +0 -0 > \
+ helpInfoLayout < +inf -inf * > \
+ 0 < +0 -0 > \
+ } \
+ -1 \
+ }
+ *helptext*background: white
+ *helptext*foreground: black
+
+ *helpMenuLayout*background: gray
+ *helpMenuLayout*Command.highlightThickness: 2
+ *helpMenuLayout*Command.internalHeight: 2
+ *helpMenuLayout*Command.font: -*-helvetica-bold-r-normal-*-12-*-*-*
+ *helpMenuLayout.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 < +0 -5 > \
+ helpBack \
+ 2 < +0 -2 > \
+ helpForward \
+ 2 < +0 -2 > \
+ helpHome \
+ 20 < +inf -20 > \
+ helpClose \
+ 5 < +0 -5 > \
+ } \
+ 5 \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Done
+
+ *helpInfoLayout*background: gray
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { \
+ 5 \
+ helpIRAFLogo \
+ 5 \
+ } \
+ 1 \
+ vertical { \
+ 5 \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo1 \
+ 0 < +inf -inf > \
+ } \
+ 0 < +inf -0 > \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo2 \
+ 0 < +inf -inf > \
+ } \
+ 0 < +inf -0 > \
+ horizontal { \
+ 0 < +inf -inf > \
+ helpInfo3 \
+ 0 < +inf -inf > \
+ } \
+ 5 \
+ } \
+ 1 \
+ vertical { \
+ 5 \
+ helpNOAOLogo \
+ 5 \
+ } \
+ 5 \
+ }
+ *helpInfo1.label: XImtool V1.2 -- Released: 4/30/2000
+ *helpInfo2.label: iraf@noao.edu (520) 318-8160
+ *helpInfo3.label: NOAO is operated by AURA under cooperative agreement with the NSF
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalheight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: steelblue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalheight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: steelblue
+ *helpInfoLayout.helpNOAOLogo.background: white
+
+ *helpText.width: 450
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText.plainFont: 6x13
+
+
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tclShell.title: Interactive Tcl Shell
+ *tclForm.background: gray
+ *tclForm*Label.background: gray
+ *tclForm*Label.borderWidth: 0
+ *tclForm*Label.resize: False
+ *tclForm*Command.resize: False
+ *tclForm*Command.background: grey75
+ *tclForm*Command.font: 7x13bold
+ *tclLabel.label: Server Command Entry
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclEntry*Text.font: 7x13
+ *tclEntry*width: 500
+ *tclEntry*borderWidth: 1
+ *tclEntry*height: 150
+ *tclEntry*editType: edit
+ *tclEntry*scrollHorizontal: whenNeeded
+ *tclEntry*scrollVertical: never
+ *tclEntry*displayCaret: True
+ *tclcloseButton.label: Done
+
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *warnings: True
+}
+
+# Start up the GUI.
+createObjects
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+activate
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 1.2"
+
+set winWidth [send imagewin get width] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set blinkFrames "1 2" ;# list of blink/tile frames
+
+set loadP_up 0
+set saveP_up 0
+set printP_up 0
+set infoP_up 0
+set panel_up 0
+set helpP_up 0
+
+
+proc winResize {w width height} \
+ { global winWidth winHeight; set winWidth $width; set winHeight $height}
+send imagewin addCallback winResize resize
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { warnings }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set enhancement($i) none ;# colortable enhancement
+}
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} {
+ global frameMenuDescription nframes frames
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+ editMenu frameMenu frameButton $frameMenuDescription
+ }
+ foreach i $frames {
+ if {$i <= $nframes} {
+ send frameBox manage frame$i
+ } else {
+ send frameBox unmanage frame$i
+ }
+ }
+}; send nframes addCallback setNFrames
+
+set frameMenuDescription {
+ { 1 f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ { 2 f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ { 3 f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ { 4 f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} {
+ global frame
+ set frame $new
+ send frameButton set label $frame
+}; send frame addCallback frameChanged
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} {
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} {
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frame
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+}; send frameView addCallback setFrameView
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} {
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} {
+ send imageTitle set label [string trimright $new]
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} {
+ send ${param}Button set state [true $new]
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+proc Quit args { send client Quit }
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x }
+proc yflip args { send client flip y }
+proc xyflip args { send client flip x y }
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00};
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00};
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00};
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f};
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00};
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+send panelButton "set bitmap panel; addCallback panel"
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send helpButton "set bitmap qmark; addCallback Help"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+
+
+# WINDOW the current frame.
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs $xmag $ymag $xcen $ycen
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor()
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.line }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.line }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+# WCSBOX -- Real time coordinate display.
+set track_enable 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$track_enable} {
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ } else {
+ set text [format " %7.2f %7.2f %7.1f " $rx $ry $rz]
+ }
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+}
+
+proc setTrack {state} \
+{
+ global track_enable wcsboxGeom
+ global winWidth winHeight
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+ }
+}
+
+proc wcsboxDestroyCallback args {
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args {
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ }
+}
+
+proc wcsboxMoved {marker event position} {
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} {
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args {
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args {
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args {
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} {
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} {
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ send client zoom $xscale $yscale $x $y
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} {
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} {
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} {
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} {
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args {
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} {
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
+
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+
+proc toggleMagnifier args {
+ global magnifier_enable
+
+ if {$magnifier_enable} {
+ setMagnifier 0
+ send pbMagM set state False
+ } else {
+ setMagnifier 1
+ send pbMagM set state True
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args {
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} {
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} {
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} {
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args {
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} {
+ global magnifierGeom displayMagnifier
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args {
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+ if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+ # For efficiency we won't compute the sqrt of the distance but instead
+ # just compare the square. Use a threshold of 6 pixels so when we
+ # narrow in on the ROI the magnifier is still (mostly) correctly.
+ set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+ (($last_mag_y-$y) * ($last_mag_y-$y))]
+ if {$diff > 36} {
+ set last_mag_x $x
+ set last_mag_y $y
+ return
+ }
+ }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } {
+ return
+ }
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
+
+# FRAME BLINK.
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args {
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args {
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args {
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args {
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client windowColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec {
+ send info map
+ infoUpdate
+ } }
+ { "Load" f.exec {
+ send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ } }
+ { "Save" f.exec {
+ Save
+ } }
+ { "Save As..." f.exec {
+ send save_panel map
+ set saveP_up 1
+ } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec {
+ send print_panel map
+ set printP_up 1
+ } }
+ { "TclShell" f.exec {
+ send tclShell map
+ } }
+ { f.line }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Quit" f.exec Quit }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.line }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.line }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Colormaps" f.title }
+ { f.dblline }
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.line }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.line }
+ { "Control Panel" f.exec { panel
+ set panel_up 1
+ } }
+ { "Print Panel" f.exec { send print_panel map
+ set printP_up 1
+ } }
+ { "Load Panel" f.exec { send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ } }
+ { "Save Panel" f.exec { send save_panel map
+ set saveP_up 1
+ } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+# MAIN CONTROL PANEL
+# ---------------------------
+
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+
+proc controlPanelDone args {
+ global panel_up
+ send controlShell unmap
+ send panelButton set state 0
+ set panel_up 0
+}; send doneButton addCallback controlPanelDone
+
+# panel -- Toggle control panel display.
+proc panel args {
+ global panel_up
+ if {$panel_up} {
+ send controlShell unmap
+ send panelButton set state 0
+ set panel_up 0
+ } else {
+ send controlShell map
+ send panelButton set state 1
+ set panel_up 1
+ }
+}
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} {
+ global frame nframes frames
+ global displayPanner displayCoords displayMagnifier
+ global blinkFrames warnings
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i $blinkFrames {
+ send blinkFrame$button set label $i
+ incr button
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} {
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} {
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+foreach i $frames {send frame$i addCallback cpSetFrame}
+
+# Frame buttons.
+proc cpFrameAction {widget args} {
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args {
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args {
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+};
+
+proc initFitFrame { param old new } {
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} {
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} {
+ global frameZoomX frameZoomY zoomindex frame
+
+ if {$mode == "fixed"} {
+ send client zoom $zoom_x $zoom_y
+ } else {
+ send client zoom \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y]
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args {
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget {toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8} {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+
+proc cpDisplayFrameData {name old new} {
+ global cpFrame cpXcen cpYcen
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpYmag $ymag
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args {
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} {
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args {
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args {
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} {
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set cpScrollHeight 0
+
+proc cpSetColorList {param old new} {
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc cpResizeScrollbar {widget cbtype flags x y w h cw ch} {
+ global cpScrollHeight
+ set newHeight [expr $ch - $h]
+ if {$newHeight && $newHeight != $cpScrollHeight} {
+ send colorlistScroll setScrollbar 0.0 [expr double($h) / $ch]
+ set rowHeight [send colorlist get rowHeight]
+ set rowSpacing [send colorlist get rowSpacing]
+ send colorlistScroll set increment [expr ($ch <= $h) ? 0 : \
+ "double ($rowHeight + $rowSpacing) / ($ch - $h)"]
+ set cpScrollHeight $newHeight
+ }
+}; send colorlistPort addCallback cpResizeScrollbar
+
+proc cpScrollColorlist {widget cbtype pos} {
+ global cpScrollHeight
+ send colorlist set y [expr -int($cpScrollHeight * $pos)]
+}; send colorlistScroll addCallback cpScrollColorlist scroll
+
+proc cpSelectColor {widget cbtype selections indices} {
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+
+proc cpSetBlinkRate {widget args} {
+ global blinkRate
+ if {$widget == "BRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+}
+foreach widget {BRincrease BRdecrease} {
+ send $widget addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} {
+ global blinkFrames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i $frames {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} {
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send $widget set state 0
+ blink
+ } elseif {($blinkId != 0) != [send $widget get state]} {
+ toggleBlink
+ }
+}; send blinkButton addCallback cpBlink
+
+proc cpResetBlink args {
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i $frames {
+ send blinkFrame$i set label " "
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ set blinkIndex 0
+}; send blinkReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} {
+ upvar $name blinkId
+ send blinkButton set state [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} {
+ global blinkFrames frames
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ foreach i $blinkFrames {
+ send blinkFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args {
+ global blinkFrames
+ send client registerFrames \{$blinkFrames\}
+}; send registerButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args {
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}; send matchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} {
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} {
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} {
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} {
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} {
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} {
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args {
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args {
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} {
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args {
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} {
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames args {
+ global blinkFrames
+ set value [send tileFramesButton get on]
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $blinkFrames \}
+}; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} {
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
+
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+
+set W_object ""
+set W_ok_command ""
+set W_cancel_command ""
+
+proc Wexec {object msg args} {
+ global W_object W_ok_command W_cancel_command
+ set W_object $object
+ set W_ok_command [lindex $args 0]
+ set W_cancel_command [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} {
+ global W_object W_ok_command W_cancel_command
+ switch $widget {
+ warnOk { if [llength $W_ok_command] {
+ send $W_object $W_ok_command
+ }
+ }
+ warnCancel { if [llength $W_cancel_command] {
+ send $W_object $W_cancel_command
+ }
+ }
+ }
+ send warning unmap
+}; foreach w {warnOk warnCancel} {send $w addCallback Wbutton}
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} {
+ Wexec client [lindex $new 0] [lindex $new 1] [lindex $new 2]
+}; send alert addCallback setAlert
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args {
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+
+# INFO box.
+#-----------
+proc infoDone args { send info unmap }
+send infoDone addCallback infoDone
+proc infoClear args { send infoText set string "" }
+send infoUpdate addCallback infoUpdate
+send infoClear addCallback infoClear
+
+proc infoUpdate args {
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set center [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $center]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8
+ ]
+ }
+}
+foreach param { frame frameView nframes frameSize frameTitle enhancement } {
+ send $param addCallback infoUpdate
+}
+
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } {
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Print Panel Functions.
+#------------------------
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args {
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } {
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+}
+
+proc prPrintCommand { widget cbtype args } {
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prOptionToggle { widget cbtype args } {
+ global imageScale
+
+ # Handle the image scale widgets first.
+ #print [ format "prOptionToggle %s" $widget ]
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } {
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set psScrollHeight 0
+
+proc psSetPrintList {param old new} {
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc psResizeScrollbar {widget cbtype flags x y w h cw ch} {
+ global psScrollHeight
+ set newHeight [expr $ch - $h]
+ if {$newHeight && $newHeight != $psScrollHeight} {
+ send printlistScroll setScrollbar 0.0 [expr double($h) / $ch]
+ set rowHeight [send printlist get rowHeight]
+ set rowSpacing [send printlist get rowSpacing]
+ send printlistScroll set increment [expr ($ch <= $h) ? 0 : \
+ "double ($rowHeight + $rowSpacing) / ($ch - $h)"]
+ set psScrollHeight $newHeight
+ }
+}; send printlistPort addCallback psResizeScrollbar
+
+proc psScrollPrintlist {widget cbtype pos} {
+ global psScrollHeight
+ send printlist set y [expr -int($psScrollHeight * $pos)]
+}; send printlistScroll addCallback psScrollPrintlist scroll
+
+proc psSelectPrint {widget cbtype selections indices} {
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc printQuit { args } {
+ send print_panel unmap
+} ; send donePrint addCallback printQuit
+
+proc Print { args } {
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } {
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
+#--------------------------
+# Save panel functions.
+#--------------------------
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button pnmButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } {
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ pnmButton { send client setSaveOption format pnm }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } {
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } {
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ pnm { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format pnmButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+send doneSave addCallback "send save_panel unmap"
+
+proc Save { args } {
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+ #send save_panel unmap
+} ; send okaySave addCallback Save
+
+
+# ------------------------------------------
+# Image and objects list display and section
+# ------------------------------------------
+
+set load_frame 1
+
+proc filesTextHighlight { widget event args } {
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+send imtemplateText addEventHandler filesTextHighlight enterWindowMask
+send imtemplateText addEventHandler filesTextHighlight leaveWindowMask
+send fnameText addEventHandler filesTextHighlight enterWindowMask
+send fnameText addEventHandler filesTextHighlight leaveWindowMask
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+proc setPattern { widget mode pattern args } {
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+proc doLoadOptions { param old new } {
+ global warnings loadP_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ #print [format "doLoadOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format "Directory: %s" $val ] }
+ newfile { send fnameText set string $val
+ if { [ string last / $val ] < 0 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ }
+ status { send filesStatus set label $val
+ if { ! $loadP_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayToggle set on $val }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+proc toggleGraymap { widget args } {
+ send client setLoadOption gray [ send grayToggle get on ]
+} ; send grayToggle addCallback toggleGraymap
+
+proc fileLoad { widget mode fname args } {
+ global load_frame loadP_up
+ send imagewin setCursorType busy
+ send client load $fname $load_frame
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] \
+ $fname ]
+ if { [ string last / $fname ] < 0 && [ file isfile $fpath] == 1 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ send imagewin setCursorType idle
+} ; send fnameText addCallback fileLoad
+
+
+set imlistScrollheight 0
+
+proc setFileList {param old new} {
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flresizeScrollbar { widget cbtype flags x y w h cw ch } {
+ global imlistScrollheight
+ set newheight [expr $ch - $h]
+ if { $newheight != $imlistScrollheight } {
+ send imlistScrollbar setScrollbar 0.0 [expr double($h) / $ch]
+ set imlistScrollheight $newheight
+ }
+} ; send imlistPorthole addCallback flresizeScrollbar
+
+proc flscrollList { widget cbtype pos } {
+ global imlistScrollheight
+ send imageList set y [expr -int($imlistScrollheight * $pos)]
+} ; send imlistScrollbar addCallback flscrollList scroll
+
+proc flSelectPrint {widget cbtype selections args} {
+ global load_frame loadP_up
+ foreach selection $selections {
+ send client load $selection $load_frame
+ if { [ string last / $selection ] < 0 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+proc fileSetFrame {widget args} {
+ global nframes load_frame
+
+ set frame [send $widget get label]
+ if {$frame == $nframes} {
+ set frame 1
+ } else {
+ incr frame
+ }
+ send $widget set label $frame
+ set load_frame $frame
+}; send frameFrame addCallback fileSetFrame
+
+proc fileLoadB args {
+ global load_frame loadP_up
+ send imagewin setCursorType busy
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ send client load $fname $load_frame
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] \
+ $fname ]
+ if { [ string last / $fname ] < 0 && [ file isfile $fpath] == 1 } {
+ if { [send browseToggle get on] == 0 } {
+ send load_panel unmap
+ set loadP_up 0
+ }
+ }
+ send imagewin setCursorType idle
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+proc fileQuit args {
+ send load_panel unmap
+ set loadP_up 0
+} ; send filesCloseButton addCallback fileQuit
+
+
+# More Panel toggles
+
+proc infoPanel args {
+ global infoP_up
+ if {$infoP_up} {
+ send info unmap
+ set infoP_up 0
+ } else {
+ send info map
+ set infoP_up 1
+ }
+}
+
+proc pannerPanel args {
+ global panner_enable
+ setPanner [expr !$panner_enable]
+}
+
+proc magnifierPanel args {
+ global magnifier_enable
+ setMagnifier [expr !$magnifier_enable]
+}
+
+proc wcsPanel args {
+ global track_enable
+ setTrack [expr !$track_enable]
+}
+
+proc loadPanel args {
+ global loadP_up
+ if {$loadP_up} {
+ send load_panel unmap
+ set loadP_up 0
+ } else {
+ send client setLoadOption rescan
+ send load_panel map
+ set loadP_up 1
+ }
+}
+
+proc savePanel args {
+ global saveP_up
+ if {$saveP_up} {
+ send save_panel unmap
+ set saveP_up 0
+ } else {
+ send save_panel map
+ set saveP_up 1
+ }
+}
+
+proc printPanel args {
+ global printP_up
+ if {$printP_up} {
+ send print_panel unmap
+ set printP_up 0
+ } else {
+ send print_panel map
+ set printP_up 1
+ }
+}
+
+
+#------------------------------------
+# Define procedure for the help panel
+#------------------------------------
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+send helpInfo1 set label $version
+
+proc Help args {
+ global helpP_up
+ if {$helpP_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set helpP_up 0
+ }
+}
+
+proc helpPanel args {
+ global helpP_up
+ if {$helpP_up} {
+ send help_panel unmap
+ set helpP_up 0
+ } else {
+ send help_panel map
+ set helpP_up 1
+ }
+}
+
+proc helpQuit args {
+ global helpP_up
+ send help_panel unmap
+ set helpP_up 0
+ send helpButton set state 0
+ send helpText setText ""
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } {
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} {
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack set sensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward set sensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward set sensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward set sensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} {
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args {
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward set sensitive False
+ send helpBack set sensitive True
+ } else {
+ send helpBack set sensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args {
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack set sensitive False }
+ if {$linkIndex >= 0} { send helpForward set sensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args {
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward set sensitive False
+ send helpBack set sensitive False
+}; send helpHome addCallback hlpHome
+
+
+
+#------------------------------------
+# Define some TCL debug procedures.
+#------------------------------------
+
+set tclP_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { send tclShell unmap }
+proc tclOpen { args } {
+ global tclP_up
+ send tclShell map
+ set tclP_up 1
+}
+
+proc tclPanel args {
+ global tclP_up
+ if {$tclP_up} {
+ send tclShell unmap
+ set tclP_up 0
+ } else {
+ send tclShell map
+ set tclP_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclcloseButton addCallback tclClose
+
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag.html b/vendor/x11iraf/ximtool/OLD/ximtool-mag.html
new file mode 100644
index 00000000..96a959f7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag.html
@@ -0,0 +1,697 @@
+<HTML> <HEAD>
+<TITLE>XImtool On-Line Help Summary</TITLE>
+</HEAD> <BODY>
+<H2>Welcome to XImtool V1.1</H2>
+
+XImtool is an image display server developed by the IRAF Project at the
+National Optical Astronomy Observatories. To view images you need
+client software (such as IRAF) to load images into the display, or it can
+load images directly when run as a standalone task. XImtool is
+interchangeable with older display servers such as <I>SAOimage</I> /
+<I>IMTOOL</I> and with newer servers like <I>SAOtng</I>, but offers many new
+features not available elsewhere.
+<P>
+More <a href=#toc>detailed help</a> is available on the following topics:
+<DL><DL>
+<DT>Basic Usage:</DT>
+<UL>
+<LI><A HREF="#basic">Getting Started</A> -- The basics. </LI>
+<LI><A HREF="#gui">GUI Overview</A> -- What it looks like. </LI>
+<LI><A HREF="#mouse">Mouse Operations</A> -- Doing stuff. </LI>
+<LI><A HREF="#keystroke">Keystroke Accelerators</A> -- Keystroke summary.</LI>
+<LI><A HREF="#markers">Markers</A> -- Pan/Mag/WCS markers, general markers.</LI>
+<LI><A HREF="#control">Control Panel</A> -- Operating the Control panel.</LI>
+<LI><A HREF="#load">Load Panel</A> -- Load panel operation and options.</LI>
+<LI><A HREF="#save">Save Panel</A> -- Save panel operation and options.</LI>
+<LI><A HREF="#print">Print Panel</A> -- Print panel operation and options.</LI>
+<LI><A HREF="#info">Info Panel</A> -- Information panel.</LI>
+</UL></DL></DL>
+<DL><DL>
+<DT>Advanced Features:</DT>
+<UL>
+<LI><A HREF="#comline">Command-line Options</A> -- Startup flags. </LI>
+<LI><A HREF="#client">Client Connections</A> -- Use as a display server. </LI>
+<LI><A HREF="#framebuf">Frame Buffers</A> -- Explanation of Frame buffers. </LI>
+<LI><A HREF="#pprinter">Printer Configurations</A> -- Configuring output devices. </LI>
+<LI><A HREF="#tclshell">TclShell</A> -- Expert-mode interactive shell.</LI>
+</UL></DL></DL>
+<P>
+Please contact <I>iraf@noao.edu</I> with comments, bugs, or suggestions.
+<P>
+<HR></P>
+
+<a name=#toc> <h2>Table of Contents:</h2> </a>
+<PRE>
+ <A HREF="#basic">Getting Started</A>
+ <A HREF="#gui">GUI Overview</A>
+ <A HREF="#mouse">Mouse Operations</A>
+ <A HREF="#keystroke">Keystroke Accelerators</A>
+ <A HREF="#comline">Command-line Options</A>
+ <A HREF="#client">Client Connections</A>
+ <A HREF="#framebuf">Frame Buffers</A>
+ <A HREF="#markers">Markers</A>
+ <A HREF="#panner">Panner Marker</A>
+ <A HREF="#magnifier">Magnifier Marker</A>
+ <A HREF="#coords">Coords Box Marker</A>
+ <A HREF="#genmark">General Markers</A>
+ <A HREF="#markmenu">Menu Options</A>
+ <A HREF="#control">Control Panel</A>
+ <A HREF="#cview">View Controls</A>
+ <A HREF="#cenhance">Enhancement Controls</A>
+ <A HREF="#cblink">Blink Controls</A>
+ <A HREF="#copts">Options:</A>
+ <A HREF="#cautoscale">Autoscale</A>
+ <A HREF="#cantialias">Antialiasing</A>
+ <A HREF="#ctile">Tile Frames</A>
+ <A HREF="#cwarnings">Warnings</A>
+ <A HREF="#ccmap">Colormap Selection</A>
+ <A HREF="#cbltin">Builtin Colormaps</A>
+ <A HREF="#cuser">User-defined Colormaps</A>
+ <A HREF="#load">Load Panel</A>
+ <A HREF="#lbrowse">Directory browsing</A>
+ <A HREF="#lpattern">File Patterns</A>
+ <A HREF="#lload">Direct File Load</A>
+ <A HREF="#lframe">Frame Selections</A>
+ <A HREF="#save">Save Panel</A>
+ <A HREF="#sfname">File Name</A>
+ <A HREF="#sformat">Format</A>
+ <A HREF="#scolor">Color</A>
+ <A HREF="#print">Print Panel</A>
+ <A HREF="#popts">Postscript Options</A>
+ <A HREF="#pcolors">Color Options</A>
+ <A HREF="#pproc">Processing Options</A>
+ <A HREF="#pprinter">Printer selection</A>
+ <A HREF="#info">Info Panel</A>
+ <A HREF="#tclshell">TclShell</A>
+</PRE>
+<P>
+<HR>
+<h2><a name=#basic>Getting Started</a></h2>
+As a display server, XImtool is started as a separate process from client
+software such as IRAF. Once it is running it will accept
+<a href=#client>client connections</a> simultaneously on fifo pipes, unix
+domain sockets, or inet sockets. A display client like the IRAF DISPLAY
+task makes a connection and sends the image across using an IIS protocol
+(other/different protocols may be supported in the future). Once the image
+is loaded in the display buffer it may be <a href=#cenhance>enhanced</a>,
+<a href=#save>saved to a disk file</a> in a number of different formats, or
+<a href=#print>printed</a> as Encapsulated Postscript to a printer or disk file.
+<P>
+When run in standalone mode, images may be loaded on the
+<a href=#comline>command line</a> or by using the <a href=#load>Load Panel</a>.
+This allows you to browse images and perform the same manipulations as if
+they had been displayed by a client.
+<hr>
+
+<h2><a name=#gui>GUI Overview</a></h2>
+<p>
+The GUI consists of a large image display window and a number of smaller
+pannels that control various specific functions such as image
+<a href=#load>Load</a>, <a href=#save>Save</a> and <a href=#print>Print</a>
+as well as a general purpose <a href=#control>Control Panel</a>. The main
+window menubar has several menu buttons to the left: the <I>Files</I> menu
+is used to load/save/print an image as well as quit the task. The <I>View</I>
+menu let's you select the image orientation, zoom, colormap or frame. The
+<I>Options</I> menu allows you to call up control panels, toggle markers
+or blinking etc. Some of this functionality is duplicated elsewhere in
+the GUI. The right side of the menubar contains command buttons to flip the
+image as well as buttons for frame selection and the help button.
+<p>
+For more detailed information on the operation of the control panels please
+see the on-line help (i.e. use the '?' button or Alt-h keystroke in the
+main image window).
+
+<h2><a name=#mouse>Mouse Operations</a></h2>
+Clicking and dragging MB1 (mouse button 1) in the main image
+window creates a rectangular region <a href=#markers>marker</a>, used
+to select a region of the image. If you do this accidentally and don't
+want the marker, put the pointer in the marker and type DELETE or
+BACKSPACE to delete the marker. With the pointer in the marker,
+MB3 will call up a <a href=#markmenu>marker menu</a> listing some things
+ you can do with the marker, like zoom the outlined region. MB1 can be used
+to drag or resize the marker. <a href=#markers>See below</a> for more
+information on markers.
+<p>
+Clicking on MB2 in the main image window pans (one click) or zooms (two
+clicks) the image. Further clicks cycle through the builtin zoom factors.
+Moving the pointer to a new location and clicking moves the feature under
+the pointer to the center of the display window. Holding down the Shift
+key while clicking MB2 will cause a full-screen crosshair cursor to appear
+until the button is released, this can be useful for fine positioning of the
+cursor.
+<p>
+MB3 is used to adjust the contrast and brightness of the displayed image.
+The position of the pointer within the display window determines the
+contrast and brightness values. Click once to set the values corresponding
+to the pointer location, or click and drag to continuously adjust the display.
+<hr>
+
+<h2><a name=#keystroke>Keystroke Accelerators</a></h2>
+ The following keystrokes are currently defined in the GUI:
+<pre>
+
+Ctrl-b Backward frame Alt-b Blink frames (toggle)
+Ctrl-c Center frame? Alt-c Control panel
+Ctrl-f Forward frame Alt-h Help
+Ctrl-i Invert? Alt-i Info box popup
+Ctrl-m Match LUTs Alt-l Load file popup
+Ctrl-n Normalize Alt-p Print popup
+Ctrl-p Print Alt-s Save popup
+Ctrl-r Register Alt-t TclShell popup
+Ctrl-t Tile frames toggle
+Ctrl-u Unzoom (zoom=1)
+Ctrl-x Flip X Ctrl-Alt-q Quit
+Ctrl-y Flip Y Ctrl-Alt-f Fitframe
+
+Ctrl-= Print
+Ctrl-< Decrease blink rate Ctrl-+ Zoom in
+Ctrl-> Increase blink rate Ctrl-- Zoom out
+
+Ctrl-[hjkl] Move cursor one pixel
+Ctrl-[arrow] Move cursor one pixel
+Ctrl-Shift-[hjkl] Move cursor ten pixels
+Ctrl-Shift-[arrow] Move cursor ten pixels
+Alt-1 thru Alt-4 Set frame displayed
+Ctrl-1 thru Ctrl-9 Set integer zoom factor
+</pre>
+NOTE: These keystrokes only work with the cursor in the main image window,
+not on the subwindows or in markers.
+<hr>
+
+<h2><a name=#client>Client Connections</a></h2>
+Ximtool allows clients to connect in any of the following ways:
+</DL>
+<DT><B>fifo pipes</B></DT>
+<DD>The traditional approach. The default, global /dev/imt1[io] pipes may
+be used, or a private set of fifos.</DD>
+<DT><B>tcp/ip socket</B></DT>
+<DD>Clients connect via a tcp/ip socket. There is a default port, or a
+custom port may be specified. This permits connecting to the server over a
+remote network connection anywhere on the Internet.</DD>
+<DT><B>unix domain socket</B></DT>
+<DD> Like a tcp/ip socket, but limited to a single host system. Usually
+faster than a tcp/ip socket, and comparable to a fifo. By default each user
+gets their own unix domain socket, so this option allows multiple users
+to run ximtools on the same host without having to customize things.</DD>
+</DL>
+By default ximtool listens simultaneously for client connctions on all three
+types of ports. Clients communicate with XImtool using the IIS protocol,
+other protocols may be supported in the future.
+<hr>
+
+<h2><a name=#framebuf>Frame Buffers</a></h2>
+XImtool starts up using default frame buffer of 512x512 pixels. When loading
+disk images the frame buffer configuration file will be searched for a
+defined frame buffer that is the same size or larger than the current image,
+when used as a display server the frame buffer configuration number is passed
+in by the client. The default file used is /usr/local/lib/imtoolrc, this can
+be overridden by defining a <b>IMTOOLRC</b> environment variable naming the
+file to be used, or by creating a <b>.imtoolrc</b> file in your home
+directory.
+<P>
+The format of the frame buffer configuration file is
+<pre>
+ configno nframes width height [extra fields]
+e.g.
+ 1 2 512 512
+ 2 2 800 800
+ 3 1 1024 1024 # comment
+</pre>
+At most 128 frame buffer sizes may be defined.
+<hr>
+
+<h2><a name=#comline>Command-line Options</a></h2>
+ The following command-line options are currently recognized:
+<pre>
+ -basePixel &lt num &gt Base colormap pixel number
+ -cmap1 &lt file &gt User cmap 1
+ -cmap2 &lt file &gt User cmap 2
+ -cmapDir1 &lt dir &gt User cmapDir 1
+ -cmapDir1 &lt dir &gt User cmapDir 2
+ -cmapInitialize &lt bool &gt Initialize colormap at startup
+ -cmapName &lt name &gt Private colormap name
+ -config &lt num &gt Initial config number
+ -defgui Print default GUI to stdout
+ -displayPanner &lt bool &gt Display panner box
+ -displayCoords &lt bool &gt Display wcs coords box
+ -displayMagnifier &lt bool &gt Display magnifier box
+ -fifo &lt pipe &gt Fifo pipe to use
+ -fifo_only Use fifo pipes only
+ -gui &lt file &gt GUI file to use
+ -help Print command-line summary
+ -imtoolrc &lt file &gt Frame buffer configuration file
+ -inet_only Use inet sockets only
+ -invert Invert colormap on startup?
+ -maxColors &lt num &gt Number of colors
+ -memModel &lt type &gt Memory model (fast,small,beNiceToServer)
+ -nframes &lt num &gt Number of frames at startup
+ -port &lt num &gt Inet port to use
+ -printConfig &lt file &gt Printer configuration file
+ -port_only Use inet sockets only
+ -tile Tile frames on startup?
+ -unix &lt name &gt Unix socket to use
+ -unix_only Use unix sockets only
+ &lt file &gt File to load on startup
+</pre>
+<hr>
+<h2><a name=#markers>Markers</a></h2>
+<h3><a name=#panner>Panner Marker</a></h3>
+<P>
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+<P>
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned <a href=#genmark>below</a> apply to these markers as well, e.g.
+you can use MB1 to reposition on the panner window within the main image
+display window, or to drag the region marker within the panner (pan the
+image). Resizing the region marker zooms the image; this is a non-aspect
+constrained zoom. The panner window itself can be resized by dragging a
+corner with MB1. Typing delete or backspace anywhere in the panner window
+deletes the panner.
+<P>
+A special case is MB2. Hitting MB2 anywhere in the panner window pans the
+image to that point. This is analogous to typing MB2 in the main display
+window to pan the image.
+
+<h3><a name=#magnifier>Magnifier Marker</a></h3>
+<P>
+The magnifier marker can be used to zoom in on a small area around the
+cursor. It will be updated as the cursor moves but only for small motions
+(either mouse movement or with the <a href=#mouse>cursor movement
+keystrokes</a>) to minimize the
+impact on the system. The zoom factor is expressed as some fraction of the
+size of the magnifier marker itself. The default zoom is 4, i.e. the area
+in the marker represents and area in the image that's one-fourth the size
+of the marker. Other zoom factors may be selected using the popup menu
+created by hitting MB1 in the marker.
+<P>
+By default the magnifier marker is not visible, to toggle it select the
+<I>Magnifier</I> option from the <I>Options</I> menubar button. Alternatively,
+for just a quick look holding down the Shift and MB1 buttons will display
+the marker until the button is released.
+
+<h3><a name=#coords>Coords Box Marker</a></h3>
+<P>
+Ximtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+client defined coordinate system. The coords box feature is used to display
+these world coordinates as the pointer is moved about in the image window.
+<P>
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated
+a "+" will be displayed after the intensity value.
+<P>
+The coords box is a marker (text marker) and it can be moved and resized
+with the pointer like any other marker.
+
+<h3><a name=#genmark>General Markers</a></h3>
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the Gterm widget and are used more extensively in other programs
+(e.g. the prototype IRAF science GUI applications). Ximtool uses markers
+for the marker zoom feature discussed above, and also for the
+<a href=#panner>panner</a> and the <a href=#coords>coords box</a>. All
+markers share some of the same characteristics, so it is worthwhile learning
+basic marker manipulation keystrokes.
+<UL>
+<LI> MB1 anywhere inside a marker may be used to drag the marker.
+<LI> MB1 near a marker corner or edge, depending on the type of marker,
+resizes the marker.
+<LI> Shift-MB1 on the corner of most markers will rotate the marker.
+<LI> Markers stack, if you have several markers and you put one on top
+of the other. The active marker is highlighted to tell you which of the
+stacked markers is active. If the markers overlap, this will be marker
+"on top" in the stacking order.
+<LI> MB2 in the body of a marker "lowers" the marker, i.e. moves it to
+the bottom of the stacking order.
+<LI> Delete or backspace in a marker deletes it.
+<LI> Markers have their own translation resources and so the default
+<a href=#keystroke>keystroke commands</a> will not be recognized when the
+cursor is in a marker.
+</UL>
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The Initialize button will get the
+original coords box back if you delete it).
+<P>
+<h4><a name=#markmenu>Marker Menu Options</a></h4>
+<UL>
+<LI> MB3 (mouse button 3) calls up the marker menu (by default).
+<LI> <B>Zoom</B> does an equal aspect zoom of the region outlined by the marker.
+In this way you can mark a region of the image and zoom it up.
+<LI> <B>Fill</B> exactly zooms the area outlined by the marker, making it fill
+the display window. Since the marker is not likely to be exactly square,
+the aspect ratio of the resultant image will not be unitary.
+<LI> <B>Print</B> prints the region outlined by the marker to the printer or
+file currently configured by the <a href=#print>Print Panel</a>.
+<LI> <B>Save</B> saves the region outlined by the marker to the file currently
+configured by the <a href=#save>Save Panel</a>.
+<LI> <B>Info</B> prints a description of the marked region. The text is
+printed in the <a href=#info>Info Panel</a>.
+<LI> <B>Unrotate</B> unrotates a rotated marker.
+<LI> <B>Color</B> is a menu of possible marker colors.
+<LI> <B>Type</B> is a menu of possible marker types. This is still a little
+buggy and it isn't very useful, but you can use it to play with different
+types of markers.
+<LI> <B>Destroy</B> destroys the marker. You can also hit the delete or
+backspace key in a marker to destroy the marker.
+</UL>
+
+<hr>
+<h2><a name=#control>Control Panel</a></h2>
+<h3><a name=#cview>View Controls</a></h3>
+<P> The <b>Frame</b> box will list only the frame buffers you currently have
+defined. Currently, the only way to destroy a frame buffer is to change the
+frame buffer configuration, new frame buffers (up to 4) will be created
+automatically if requested by the client.
+<P> The <b>text display window</b> gives the field X,Y center, X,Y scale
+factors, and the X,Y zoom factors. The scale factor and the zoom factor
+will be the same unless autoscale is enabled. The scale is in units of
+display pixels per frame buffer pixel, and is an absolute measure (it doesn't
+matter whether or not <a href=#cautoscale>autoscale</a> is enabled). Zoom is
+relative to the autoscale factor, which is 1.0 if autoscaling is disabled.
+This information is also presented in the <a href=#info>Info panel</a>.
+<P> The numbers in the <b>Zoom</b> box are zoom factors. Blue numbers zoom,
+red numbers dezoom. <b>Zoom In</b> and <b>Zoom Out</b> may be used to go to
+larger or smaller zoom factors, e.g. "Ctrl-5" followed by "Zoom In" will get you
+to zoom factor 10. Specific zoom factors may also be accessed directly as
+Control <a href=#keystrokes>keystrokes</a>, e.g. Ctrl-5 will set zoom factor 5.
+<b>Center</b> centers the field. <b>Toggle Zoom</b> toggles between the
+current zoom/center values, and the unzoomed image.
+<P> <b>Aspect</b> recomputes the view so that the aspect ratio is 1.0.
+Aspect also integerizes the zoom factor (use the version in the View menu
+if you don't want integerization).
+<P> <b>Fit Frame</b> makes the display window the same size as the frame
+buffer. Note that <a href=#cautoscale>autoscale</a> has much the same effect,
+and allows you to resize the display window to any size you want, or view
+images to large to fit on the screen.
+
+<h3><a name=#cenhance>Enhancement Controls</a></h3>
+
+<P> At the top is a scrolled list of all the <a href=#cbltin>available
+colormaps</a>. Click on the one you want to load it. You can add your own
+<a href=#cuser>colormaps</a> to this list.
+<P> The two sliders adjust the <b>contrast</b> (upper slider) and
+<b>brightness</b> (lower slider) of the display. The <b>Invert</b> button
+inverts the colormap (multiples the contrast by -1.0). Note that due to the
+use of the private colormap the sliders are a bit sluggish when dragged to
+window the display. If this is annoying, using MB3 in the display window is
+faster.
+<P>The <b>Normalize</b> button (on the bottom of the control panel) will
+normalize the enhancement, i.e. set the contrast and brightness to the default
+one-to-one values (1.0, 0.5). This is the preferred setting for many of the
+pseudocolor colortables and for private colormaps loaded from disk images.
+
+<h3><a name=#cblink>Blink Controls</a></h3>
+<UL>
+<LI> <b>Blink frames</b> is the list of frames to be blinked. When blink
+mode is in effect ximtool just cycles through these frames endlessly, pausing
+"blink rate" seconds between each frame. The same frame can be entered in
+the list more than once. To program an arbitrary list of blink frames, hit
+the <b>Reset</b> button and click on each blink frame button until it is set
+to the desired frame number.
+<LI> The <b>Blink Rate</b> can be adjusted as slow or as fast as you want
+using the arrow buttons. If you set the blink rate small enough it will go
+to zero, enabling single step mode (see below).
+<LI> The <b>Register</b> button registers all the blink frames with the current
+display frame. Frames not in the blink list are not affected.
+<LI> The <b>Match LUTs</b> button sets the enhancement of all blink frames to
+the same values as the display frame. Frames not in the blink list are not
+affected.
+<LI> The <b>Blink</b> button turns blink on and off. When the blink rate is
+set to zero the Blink button will single step through the blink frames, one
+frame per button press.
+</UL>
+<P>
+NOTE: you can blink no matter what ximtool options are in effect, but many
+of these will slow blink down. To get the fastest blink you may want to
+turn off the panner and coords box, and match the LUTs of all the blink
+frames. All the ximtool controls are fully active during blink mode, plus
+you can load frames etc.
+
+
+<h3><a name=#copts>Options:</a></h3>
+<DL>
+<DT><b><a name=#cautoscale>Autoscale</a></b></DT>
+<DD> If autoscale is enabled then at zoom=1, the frame buffer will be
+automatically scaled to fit within the display window. With autoscale
+disabled (the default), the image scale is more predictable, but the image
+may be clipped by the display window, or may not fill the display window.</DD>
+
+<DT><b><a name=#cantialias>Antialiasing</a></b></DT>
+<DD> When dezooming an image, i.e., displaying a large image in a smaller
+display window, antialiasing causes all the data to be used to compute the
+displayed image. If antialiasing is disabled then image is subsampled to
+compute the displayed image. Antialiasing can prevent subsampling from
+omitting image features that don't fall in the sample grid, but it is
+significantly slower than dezooming via subsampling. The default is no
+antialising. </DD>
+
+<DT><b><a name=#ctile>Tile Frames</a></b></DT>
+<DD> The default display mode is to view one frame at a time. In tile frames
+mode, 2 or 4 frames may be viewed simultaneously in the display window. All
+the usual operations (zoom and pan, colortable enhancement, cursor readback,
+etc.) still work for each frame even when in tile frames mode. </DD>
+
+<DT><b><a name=#cwarnings>Warnings</a></b></DT>
+<DD> The warnings options toggles whether you see warning dialog boxes in
+situations like overwriting an existing file, clearing the frame buffer, etc.
+</DD>
+</DL>
+
+<h3><a name=#ccmap>Colormap Selection</a></h3>
+By default XImtool will display images using either a grayscale colormap
+if loaded by a client, or a private colormap when loading an image from
+disk that contains a colormap. Each frame defines its own colormap so
+you can define different colormaps or enhancements for each frame, they
+will change automatically as you cycle through the frames.
+
+<h4><a name=#cbltin>Builtin Colormaps</a></h4>
+Once loaded, the colormap may either be changed using the builtin colormap
+menu under the <b>View</b> menu button on the main window, or from the
+<a href=#cenhance>Enhancement</a> box on the <a href=#control>control panel</a>. Ximtool has about a dozen colormap
+options builtin, other <a href=#cuser>user-defined colormaps</a> may
+optionally be loaded.
+
+<h4><a name=#cuser>User-defined Colormaps</a></h4>
+The cmap[12] and cmapDir[12] resources (or <a href=#comline>command line
+arguments</a> are used to tell ximtool which specific colormaps to make
+available or where to look for colortables respectively. The colortables
+are loaded when ximtool starts up, or when it is reinitialized (e.g. by
+pressing the <b>Initialize</b> button in the <a href=#control>control
+panel</a>). Ximtool will ignore any files in the colormap directory
+which do not look like colortables. New colortables will also be added
+for each images loaded from disk.
+<P>
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green,
+and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+<PRE>
+ R G B
+ R G B
+ (etc.)
+</PRE>
+Blank lines and comment lines (# ...) are ignored.
+<P>
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. Ximtool will interpolate the table as necessary to
+compute the colortable values used in Ximtool. Ximtool uses at most 201
+colors to render pixel data, so it is usually necessary to interpolate the
+table when it is loaded.
+<P>
+The name of the colortable as it will appear in the Ximtool control panel
+is the root name of the file, e.g., if the file is "rainbow.lut" the
+colortable name will be "rainbow". Lower case names are suggested to avoid
+name collisions with the builtin colortables. Private colormaps for disk
+images will be have the same name as the image loaded. If the same colortable
+file appears in multiple user colortable directories, the first one will be
+used.
+<P>
+The directory "luts" in the ximtool source directory contains a sample set
+of colortable files. This can be installed as /usr/local/lib/imtoolcmap
+when ximtool is installed.
+<hr>
+
+<h2><a name=#load>Load Panel</a></h2>
+The Load Panel allows you load images from disk directly to the frame buffer,
+this is analogous to loading an image on the command line except that
+browsing is possible. At present recognized formats include IRAF OIF format
+(i.e. .imh extension), simple FITS files, GIF, and Sun rasterfiles. The
+task will automatically sense the format of the image and load it
+appropriately. Images with private colormaps (such as GIF) will be loaded
+using the private colormap by default (meaning that changing the
+brightness/contrast enhancements will render a random-colored image). If
+the <b>Grayscale</b> button is enabled the image will be converted to
+grayscale and loaded with the standard grayscale colormap.
+<P>
+When loading new images the frame buffer configuration table
+(<em>imtoolrc</em>) will be searched for a frame buffer that is the same size
+or larger than the new image size, if no frame buffer can be found a custom
+buffer exactly the size of the image will be created. This means that the
+image may not fill the display window when loaded, or you may see a subsection
+of the image in the main display window. Setting the
+<a href=#cautoscale>autoscale</a> option will scale the entire image to fit
+the main display window.
+<P>
+Images with more colors than can be displayed will automatically be quantized
+to the number of available colors before display. Formats which allow more
+than 8-bit pixels will be sampled to determine an optimal range in the data
+to be used to compute the transformation to the number of display colors.
+This is the same transformation used by the IRAF DISPLAY task.
+
+<DL>
+<DT><B><a name=#lbrowse>Directory browsing</a></B></DT>
+<DD>
+The load panel contains a list of files in the current directory that may
+be selected for loading by selecting with left mouse button. If the file
+is a directory the contents of the new directory will be loaded, if it's
+a plain file an attempt will be made to load it as an image. Directories
+in the list are identified with a trailing '/' character, you will always
+see any directories available even if a <a href=#lpattern>filter</a> is
+specified.
+<P>
+The <b>Root</b> button will reset the current directory to the system root
+directory. The <b>Home</b> button will reset the current directory to the
+user's login directory, the <b>Up</b> button moves up one directory level,
+and <b>Rescan</b> reloads the file list by rescanning the directory. The
+current working directory is given below the file selection window.</DD>
+
+<DT><B><a name=#lpattern>File Patterns</a></B></DT>
+<DD> By default all files and directories will be listed. You may specify a
+filter to e.g. select only those files with a given extension like "*.fits"
+to list only files with a ".fits" extension. Directories will always be seen
+in the list and are identified with a trailing '/' character. Any valid
+unix pattern matching string will be recognized.</DD>
+<DT><B><a name=#lload>Direct File Load</a></B></DT>
+<DD> If you know exactly which file you wish to load, you may enter its name
+in the <b>Load File</b> text box and either hit <cr> or the Load button to
+load it. An absolute or relative path name may be given, if a simple filename
+is specified it will be searched for in the current working directory.</DD>
+<DT><B><a name=#lframe>Frame Selections</a></B></DT>
+<DD> By default images will be loaded into frame number 1, you may select a
+different frame using the <b>Frame</b> menu button.</DD>
+</DL>
+<hr>
+
+<h2><a name=#save>Save Panel</a></h2>
+The Save Panel lets you save the current contents of the main display window
+to a disk file (including the Panner/Coords markers, any general graphics
+markers, or overlay graphics displayed by the client program). Presently,
+only the contents of the main display window may be saved, there is no
+facility for saving the undisplayed contents of the entire frame buffer
+other than to enable the <a href=#cautoscale>autoscale</a> feature. A limited
+number of formats are currently available, others will be added in future
+versions.
+<DL>
+<DT><b><a name=#sfname>File Name</a></b></DT>
+<DD> The <b>File Name</b> text box allows you to enter the file name of the
+saved file. A "%d" anywhere in the name will be replaced by a sequence number
+allowing multiple frames to be saved with unique names. </DD>
+<DT><b><a name=#sformat>Format</a></b></DT>
+<DD> The <B>Format</B> box allows you to choose the format of the image to be
+created. Not all formats are currently implemented. </DD>
+<DT><b><a name=#scolor>Color</a></b></DT>
+<DD> The <b>Color</b> box lets you choose the color type of the image to be
+created. The options will change depending on the format, e.g. FITS doesn't
+allow color so no color options will be allowed. Formats which allow 24-bit
+images will be written using the current colormap after converting to a 24-bit
+image, pseudocolor images will be written with the current colormap. </DD>
+</DL>
+<hr>
+
+<h2><a name=#print>Print Panel</a></h2>
+The Print Panel allows you dump the contents of the main display window as
+Enacpsulated Postscript to either a named printer device or to a disk file.
+The <b>Print To</b> selects the type of output, the <b>Print Command</b>
+box will adjust accordingly, either as a Unix printer command or as a file
+name. A "%d" anywhere in the name for disk output will be replaced by a
+sequence number allowing multiple frames to be saved with unique names.
+<a href=#pprinter>Selecting printers</a> from the installed list will
+automatically change the command to be used to generate the output. This
+command does not necessarily need to be a printer command, the
+<a href=#pprinter>printer configuration file</a> lets you define any command
+string to process the image.
+<h3><a name=#pcolors>Color Options</a></h3>
+The <b>Color</b> box lets you choose the color type of the image to be created.
+PseudoColor or 24-bit postscript will be created using the current colormap.
+<h3><a name=#popts>Postscript Options</a></h3>
+<DL>
+<DT>Orientation</DT>
+<DD> Set the page orientation.
+<DT>Paper Size</DT>
+<DD> Select the paper size to be used.
+<DT>Image Scale</DT>
+<DD> Set the scale factor used to compute the final image size.
+</DL>
+<h3><a name=#pproc>Processing Options</a></h3>
+<DL>
+<DT>Auto Scale</DT>
+<DD> The auto scale toggles whether or not the image is automatically scaled
+to fit the page. If not enabled, the <b>image scale</b> will be used to
+dtermine the output image size.
+<DT>Auto Rotate</DT>
+<DD> Auto rotate determines whether or not the image will be rotated to fit
+on the page. When set, an image larger than the current orientation will be
+rotated and possibly scaled to fit the page.
+<DT>Max Aspect</DT>
+<DD> Max Aspect takes images smaller than the page and automatically increases
+the scale so the image fills the page in the current orientation.
+<DT>Annotate</DT>
+<DD> The annotate option toggles whether or not the final file includes
+annotation such as the image title, a colorbar, and axis labels.
+</DL>
+<h3><a name=#pprinter>Printer selection</a></h3>
+The printer selection list lets choose the printer to be used. The printer
+configuration file is /usr/local/lib/ximprint.cfg by default or may be reset
+using the <em>printConfig</em> resource. The format of the file is simply
+<pre>
+ <b>name</b> &lt tab &gt <em>command</em>
+</pre>
+The <b>name</b> value is what appears in the selection list and may be more
+than a single word, the <em>command</em> can be any command that accepts EPS
+input from a pipe, the two fields must be separated by a tab character.
+Normally the command will be
+a simple 'lpr -Pfoo' or some such, but can also include converters or
+previewers. At most 128 printer commands may be used.
+<hr>
+
+<h2><a name=#info>Info Panel</a></h2>
+ The information panel is underused at present but is meant to provide
+basic information about the frame being displayed. It is updated to be
+current while changing enhancements, pan/zoom regions, or frame selection.
+In cases where the image title string is truncated in the main display window,
+the user can always pop up the info window to see the full title.
+<hr>
+
+<h2><a name=#tclshell>TclShell</a></h2>
+ The <em>TclShell</em> is mostly used as a development or debugging
+tool for the GUI. It allows the user to type commands directly to the
+TCL interpreter letting you send messages to the object manager or execute
+specific procedures in the TCL code that makes up the GUI. Most users will
+never need this, but for an example of what it does, bring it up and type a
+command such as
+<pre>
+ send helpButton set background red
+</pre>
+Cool, huh.
+<hr>
+
+<h2><a name=#acknowledgements>Acknowledgements</a></h2>
+ <I>XImtool</I> was developed by the IRAF Group at the National Optical
+Astronomy Observatories in Tucson, AZ. For further information or to report
+problems please contact <I>iraf@noao.edu</I>
+<hr>
+This document was last updated 11/6/96.
+
+</BODY>
+</HTML>
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag.man b/vendor/x11iraf/ximtool/OLD/ximtool-mag.man
new file mode 100644
index 00000000..c4fcaae0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag.man
@@ -0,0 +1,1493 @@
+.\" @(#)ximtool.1 1.1 10-Dec-96 MJF
+.TH XIMTOOL-MAG 1 "10 Dec 1996" "X11IRAF Project"
+.SH NAME
+ximtool-mag \- interactive image display program for the X Window System with experimental GUI
+.SH SYNOPSIS
+.B "ximtool-mag" [\-\fItoolkitoption\fP ...] [ \fIoptions\fP ...] [\fIimagename\fP]
+.SH OPTIONS
+.TP 5
+.B "-basePixel \fIN\fP"
+The base colormap cell used by the colormap. This essentially allows you
+to reserve \fIbasePixel\fP colors in the global colormap for other applications.
+The default is 64, if changed you'll need to also specify the
+\fI-cmapInitialize\fP option or resource.
+.TP 5
+.B "-cmap1 \fIfile\fP"
+User colormap 1. This flag allows you to specify a colormap to be made
+available at task startup.
+.TP 5
+.B "-cmap2 \fIfile\fP"
+User colormap 2. This flag allows you to specify a second colormap to be
+made available at task startup.
+.TP 5
+.B "-cmapDir1 \fIdir\fP"
+User colormap directory 1. Specifies a directory to be searched for colormaps.
+.TP 5
+.B "-cmapDir2 \fIdir\fP"
+User colormap directory 2. Specifies a directory to be searched for colormaps.
+By default this points to the system directory /usr/local/lib/imtoolcmap,
+allowing a set of site default colormaps to be defined here.
+.TP 5
+.B "-cmapInitialize \fIbool\fP"
+Initialize the ximtool colormap at startup. When setting the \fIbasePixel\fP
+option or resource this is required in order to force the Gterm widget to
+update its global colormap resource in the X server. The default is
+\fIfalse\fP.
+.TP 5
+.B "-cmapName \fIname\fP"
+Name used for private colormap. The default for all IRAF imaging
+applications is \fIimage\fP. Gterm widget based imaging applications
+which have the same value of cmapName will share the same colormap,
+minimizing colormap flashing and allowing multiple applications to be
+run at the same time.
+.TP 5
+.B "-config \fIN\fP"
+Initial frame buffer configuration number. The default value is 1, indicating
+a 512x512 frame buffer with 2 frames. See below for information on the frame
+buffers.
+.TP 5
+.B "-defgui"
+Print the default GUI to the stdout. The GUI is a Tcl program that may be
+customized by the user and reloaded using the \fI-gui\fP option or
+the \fIgui\fP resource parameter.
+.TP 5
+.B "-displayPanner \fIbool\fP"
+Display panner marker window at startup. If set, a panner window showing
+the full frame buffer will appear in the upper-right side of the main display
+window.
+.TP 5
+.B "-displayMagnifier \fIbool\fP"
+Display magnifier marker window at startup. If set, a magnifier window showing
+a zoomed section around the cursor will appear in the upper-left side of the
+mail display window.
+.TP 5
+.B "-displayCoords \fIbool\fP"
+Display WCS coordinate marker window at startup. If set, a coordinate
+readout text marker showing will appear in the lower-right side of the main
+display window.
+.TP 5
+.B "-fifo \fIpipe\fP"
+Specifies the name of the fifo pipe to be used, the \fIi\fP
+and \fIo\fP suffixes will be added automatically. The default pipe names
+will be /dev/imt1i (input pipe) and /dev/imt1o (output pipe).
+.TP 5
+.B "-fifo_only"
+If set, only fifo pipes will be used for communication with a client program,
+sockets will be disabled.
+.TP 5
+.B "-gui \fIfile\fP"
+Specifies the GUI file to be used.
+.TP 5
+.B "-help"
+Print a summary of command line options to the screen.
+.TP 5
+.B "-imtoolrc \fIfile\fP"
+Specifies the frame buffer configuration file to be used. See below for
+information on frame buffers.
+.TP 5
+.B "-inet_only"
+If set, only inet sockets will be used for communication with a client program,
+fifo pipes and unix sockets will be disabled.
+.TP 5
+.B "-invert"
+Start XImtool using inverted colormaps. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 5
+.B "-maxColors \fIN\fP"
+Specify the max number of colors to be used for the display.
+.TP 5
+.B "-memModel \fItype\fP"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are \fIfast\fP, \fIbeNiceToServer\fP, and \fIsmall\fP. The
+default is \fIfast\fP, which uses server pixmaps to make frame blink fast.
+This is recommended unless server memory is very limited. Note that even in
+fast mode, the server pixmap is only the size of the display window, so memory
+usage is reasonable even if the frame buffer is very large.
+.TP 5
+.B "-nframes \fIN\fP"
+Specifies the number of frame buffers to configure at startup. By default
+there will be 2 frames available, a maximum of 4 frames are allowed.
+.TP 5
+.B "-port \fIN\fP"
+Specifies the port number to use when connecting through an inet socket.
+.TP 5
+.B "-port_only"
+Same as \fI-inet_only\fP option. If set, only inet sockets will be used for
+communication with a client program.
+.TP 5
+.B "-printConfig \fIname\fP"
+Specifies the printer configuration file to use. By default this will be
+/usr/local/lib/ximprint.cfg. See below for more information on configuring
+output devices.
+.TP 5
+.B "-tile"
+The default display mode is to view one frame at a time. In tile frames mode,
+2 or 4 frames may be viewed simultaneously in the display window. All the
+usual operations (zoom and pan, colortable enhancement, cursor readback, etc.)
+still work for each frame even when in tile frames mode.
+.TP 5
+.B "-unix \fIname\fP"
+Specifies the unix domain socket name to use. A "%d" in the filename will
+be replaced with the user id.
+.TP 5
+.B "-unix_only"
+If set, only unix domain sockets will be used for communication with a client
+program, inet sockets and fifos will be disabled.
+
+.SH "RESOURCES"
+XImtool is implemented as a client program which is responsible for loading
+the frame buffers/colormaps, communicating with clients, etc, and a
+user-modifiable GUI file written as a Tcl script which handles all the user
+interface details. The \fIclient resources\fP described below will be common
+to any user-defined GUI, the \fIgui resources\fP may change depending on how
+extensively the GUI has been modified by the user. Each of these components
+has its own set of resources, but to the user setting them is the same as
+with any other application.
+
+\fIGterm\fP widget resources (i.e. those for the main image window or
+colorbar) may be set as either client or GUI resources. See the
+\fIxgterm(1)\fP man page for a complete description of \fIGterm\fP widget
+resources.
+
+.SS "CLIENT RESOURCES"
+The client resources generally define the initial state of the application
+or set configuration parameters.
+.RS
+.TP 25
+.B "Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 25
+defConfig
+1
+.sp -0.5
+.TP 25
+defNFrames
+0
+.sp -0.5
+.TP 25
+tileBorderWidth
+3
+.sp -0.5
+.TP 25
+tileBorderColor
+9
+.sp -0.5
+.TP 25
+autoscale
+false
+.sp -0.5
+.TP 25
+antialias
+false
+.sp -0.5
+.TP 25
+antialiasType
+boxcar
+.sp -0.5
+.TP 25
+tileFrames
+false
+.sp -0.5
+.TP 25
+highlightFrames
+true
+.sp -0.5
+.TP 25
+gui
+default
+.sp -0.5
+.TP 25
+imtoolrc
+/usr/local/lib/imtoolrc
+.sp -0.5
+.TP 25
+invert
+false
+.sp -0.5
+.TP 25
+memModel
+fast
+.sp -0.5
+.TP 25
+basePixel:
+64
+.sp -0.5
+.TP 25
+maxColors:
+216
+.sp -0.5
+.TP 25
+cmapInitialize:
+false
+.sp -0.5
+.TP 25
+cmap1
+none
+.sp -0.5
+.TP 25
+cmap2
+none
+.sp -0.5
+.TP 25
+cmapDir1
+none
+.sp -0.5
+.TP 25
+cmapDir2
+/usr/local/lib/imtoolcmap
+.sp -0.5
+.TP 25
+input_fifo
+/dev/imt1i
+.sp -0.5
+.TP 25
+output_fifo
+/dev/imt1o
+.sp -0.5
+.TP 25
+unixaddr
+/tmp/.IMT%d
+.sp -0.5
+.TP 25
+port
+5137
+.RE
+.LP
+Description of ximtool client resources:
+
+.TP 18
+.B "defConfig"
+Default frame buffer configuration number on startup. See below for more
+information on frame buffers.
+.TP 18
+.B "defNFrames"
+Default number of frames on startup. Set to zero to use the value from
+the frame buffer configuration (\fIimtoolrc\fP) file.
+.TP 18
+.B "tileBorderWidth"
+.sp -0.5
+.TP 18
+.B "tileBorderColor"
+Used by the tile frames option. Specifies how far
+apart to space the frames in tile frames mode.
+Color "9" refers to the Gterm widget resource color9,
+which is assigned a color with its own resource.
+.TP 18
+.B "autoscale"
+Enable/disable the autoscale option.
+.TP 18
+.B "antialias"
+Enable/disable the antialias option.
+.TP 18
+.B "antialiasType"
+Type of antialiasing.
+.TP 18
+.B "tileFrames"
+Enable/disable the tile frames option.
+.TP 18
+.B "highlightFrames"
+Determines whether the current frame is highlighted when in tile frames mode.
+.TP 18
+.B "gui"
+The GUI to be executed. "default" refers to the default, builtin ximtool GUI.
+You can replace this with your own GUI file if you are bold enough, and
+completely change the look and functionality of the GUI if desired.
+.TP 18
+.B "imtoolrc"
+Where to find the imtoolrc file. This defines the
+recognized frame buffer configurations.
+.TP 18
+.B "invert"
+Start Ximtool using an inverted colormap. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 18
+.B "memModel"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are "fast", "beNiceToServer", and "small". The default is fast,
+which uses server pixmaps to make frame blink fast. This is recommended
+unless server memory is very limited. Note that even in fast mode, the server
+pixmap is only the size of the display window, so memory usage is reasonable
+even if the frame buffer is very large.
+.sp -0.5
+.TP 18
+.B "basePixel"
+.sp -0.5
+.TP 18
+.B "maxColors"
+These two resources determine the region of colormap space used to
+render image pixels.
+.TP 18
+.B "cmapInitialize"
+Initialize the ximtool colormap at startup. This is sometimes necessary to
+clear a previous ximtool colormap allowing a new basePixel and maxColors to
+take effect.
+.TP 18
+.B "cmap1"
+.sp -0.5
+.TP 18
+.B "cmap2"
+User colormap files. The intent here is to allow individual colormaps to be
+conveniently specified as a resource.
+.TP 18
+.B "cmapDir1"
+.sp -0.5
+.TP 18
+.B "cmapDir2"
+User or system colormap directories. By default cmapDir2 points to the system
+directory /usr/local/lib/imtoolcmap, allowing a set of site default colormaps
+to be defined here. This leaves cmapDir1 available to a user colormap
+directory.
+.TP 18
+.B "input_fifo"
+.sp -0.5
+.TP 18
+.B "output_fifo"
+The input and output fifos for fifo i/o. "Input" and "output" are from the
+client's point of view. Note that only one display server can use a
+fifo-pair at one time.
+.TP 18
+.B "unixaddr"
+Template address for unix domain socket. The user must have write permission
+on this directory, or the file must already exist. %d, if given, is
+replaced by the user's UID.
+.TP 18
+.B "port"
+TCP/IP port for the server. Note that only one server can listen on a port
+at one time, so if multiple ximtool servers are desired on the same
+machine, they should be given different ports.
+
+.SS "GUI RESOURCES"
+
+In principle ximtool can have any number of different GUIs, each of which
+defines its own set of resources. GUIs typically define a great many
+resources, but most of these are not really intended for modification by
+the user (although one can modify them if desired).
+
+The following are some of the more useful resources used by the default
+ximtool GUI. The \fIimagewin\fR resources are Gterm widget resources.
+.RS
+.TP 35
+.B " Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 35
+ .geometry:
+
+.sp -0.5
+.TP 35
+ *controlShell.geometry:
+
+.sp -0.5
+.TP 35
+ *info.geometry:
+420x240
+.sp -0.5
+.TP 35
+ *load_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *save_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *print_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *help_panel.geometry:
+
+.sp -0.5
+.TP 35
+ *cmapName:
+image
+.sp -0.5
+.TP 35
+ *basePixel:
+64
+.sp -0.5
+.TP 35
+ *imagewin.warpCursor:
+true
+.sp -0.5
+.TP 35
+ *imagewin.raiseWindow:
+true
+.sp -0.5
+.TP 35
+ *imagewin.deiconifyWindow:
+true
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeCursor:
+circle
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeBlinkInterval:
+500
+.sp -0.5
+.TP 35
+ *imagewin.color0:
+black
+.sp -0.5
+.TP 35
+ *imagewin.color1:
+white
+.sp -0.5
+.TP 35
+ *imagewin.color8:
+#7c8498
+.sp -0.5
+.TP 35
+ *imagewin.color9:
+steelblue
+.sp -0.5
+.TP 35
+ *imagewin.width:
+512
+.sp -0.5
+.TP 35
+ *imagewin.height:
+512
+.sp -0.5
+.TP 35
+ *autoscale:
+True
+.sp -0.5
+.TP 35
+ *zoomfactors:
+1 2 4 8
+.sp -0.5
+.TP 35
+ *displayCoords:
+True
+.sp -0.5
+.TP 35
+ *displayPanner:
+True
+.sp -0.5
+.TP 35
+ *displayMagnifier:
+False
+.sp -0.5
+.TP 35
+ *blinkRate:
+1.0
+.sp -0.5
+.TP 35
+ *pannerArea:
+150*150
+.sp -0.5
+.TP 35
+ *pannerGeom:
+-5+5
+.sp -0.5
+.TP 35
+ *magnifierArea:
+100*100
+.sp -0.5
+.TP 35
+ *magnifierGeom:
++5+5
+.sp -0.5
+.TP 35
+ *wcsboxGeom:
+-5-5
+.sp -0.5
+.TP 35
+ *maxContrast:
+5.0
+.sp -0.5
+.TP 35
+ *warnings:
+True
+.RE
+.LP
+Description of selected resources:
+
+.TP 22
+.B ".geometry"
+Geometry of main image window.
+.TP 22
+.B "*controlShell.geometry"
+Geometry of control panel shell.
+.TP 22
+.B "*info.geometry"
+Geometry of info box.
+.TP 22
+.B "*load_panel.geometry"
+Geometry of file load panel.
+.TP 22
+.B "*save_panel.geometry"
+Geometry of save control panel.
+.TP 22
+.B "*print_panel.geometry"
+Geometry of print control panel.
+.TP 22
+.B "*help_panel.geometry"
+Geometry of help box.
+.TP 22
+.B "*cmapName"
+Name used for private colormap. The default for all IRAF imaging applications
+is "image". Gterm widget based imaging applications which have the same value
+of cmapName will share the same colormap, minimizing colormap flashing and
+allowing multiple applications to be run at the same time.
+.TP 22
+.B "*basePixel"
+The base colormap cell used by the display colormap.
+.TP 22
+.B "*imagewin.warpCursor"
+Warp pointer into image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.raiseWindow"
+Raise image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.deiconifyWindow"
+Deiconify image window if necessary when initiating a cursor read.
+.TP 22
+.B "*imagewin.ginmodeCursor"
+Type of cursor when a cursor read is in progress. The default is a
+circle. Any selection from the X cursor font can be used. A special
+case is "full_crosshair" which is the full crosshair cursor of the
+Gterm widget.
+.TP 22
+.B "*imagewin.ginmodeBlinkInterval"
+Determines whether the cursor blinks when a cursor read is in progress.
+The value is given in milliseconds.
+.TP 22
+.B "*imagewin.color0"
+Background color.
+.TP 22
+.B "*imagewin.color1"
+Foreground color.
+.TP 22
+.B "*imagewin.color8"
+Color assigned the panner window.
+.TP 22
+.B "*imagewin.color9"
+Color used for the tileFrames highlight.
+.TP 22
+.B "*imagewin.width"
+Width of the main image window.
+.TP 22
+.B "*imagewin.height"
+Height of the main image window.
+.TP 22
+.B "*pannerArea"
+Area in pixels of the panner window.
+.TP 22
+.B "*pannerGeom"
+Where to place the panner window.
+.TP 22
+.B "*magnifierArea"
+Area in pixels of the magnifier window.
+.TP 22
+.B "*magnifierGeom"
+Where to place the magnifier window.
+.TP 22
+.B "*wcsboxGeom"
+Where to place the coords box.
+.TP 22
+.B "*maxContrast"
+Maximum contrast value.
+
+.sp
+.SH DESCRIPTION
+.LP
+As a display server, XImtool is started as a separate process from client
+software such as IRAF. Once it is running it will accept client connections
+simultaneously on fifo pipes, unix domain sockets, or inet sockets. A
+display client like the IRAF \fIDISPLAY\fP task makes a connection and sends
+the image across using an IIS protocol. Once the image is loaded in the
+display buffer it may be enhanced, saved to a disk file in a number of
+different formats, or printed as Encapsulated Postscript to a printer or
+disk file. Up to four frame buffers are allowed, these may be displayed
+simultaneously in a tiled mode, or blinked frame-to-frame. Each frame may
+have its own colormap or brightness/contrast enhancement. Pan/Zoom and
+cursor readout are permitted using \fImarkers\fP, on-line help is also
+available.
+
+When run in standalone mode, images (currently IRAF OIF, GIF, Sun Rasterfiles
+or simple FITS formats are permitted) may be loaded on the command line or by
+using the Load Panel. This allows you to browse images and perform the same
+manipulations as if they had been displayed by a client.
+
+.SS "MOUSE OPERATIONS"
+
+Clicking and dragging MB1 (mouse button 1) in the main image window creates
+a rectangular region marker, used to select a region of the image. If you do
+this accidentally and don't want the marker, put the pointer in the marker
+and type DELETE or BACKSPACE to delete the marker. With the pointer in the
+marker, MB3 will call up a marker menu listing some things you can do with
+the marker, like zoom the outlined region. MB1 can be used to drag or resize
+the marker. See below for more information on markers.
+
+Clicking on MB2 in the main image window pans (one click) or zooms (two
+clicks) the image. Further clicks cycle through the builtin zoom factors.
+Moving the pointer to a new location and clicking moves the feature under
+the pointer to the center of the display window. Holding down the Shift
+key while clicking MB2 will cause a full-screen crosshair cursor to appear
+until the button is released, this can be useful for fine positioning of the
+cursor.
+
+MB3 is used to adjust the contrast and brightness of the displayed image.
+The position of the pointer within the display window determines the
+contrast and brightness values. Click once to set the values corresponding
+to the pointer location, or click and drag to continuously adjust the
+display.
+
+.SS "KEYSTROKE ACCELERATORS"
+
+The following keystrokes are currently defined in the GUI:
+
+.TP 12
+.B "Ctrl-b"
+Backward frame
+.sp -0.5
+.TP 12
+.B "Ctrl-c"
+Center frame
+.sp -0.5
+.TP 12
+.B "Ctrl-f"
+Forward frame
+.sp -0.5
+.TP 12
+.B "Ctrl-i"
+Invert
+.sp -0.5
+.B "Ctrl-m"
+Toggle magnifier
+.sp -0.5
+.TP 12
+.TP 12
+.B "Ctrl-n"
+Normalize
+.sp -0.5
+.TP 12
+.B "Ctrl-p"
+Toggle panner
+.sp -0.5
+.TP 12
+.B "Ctrl-r"
+Register
+.sp -0.5
+.TP 12
+.B "Ctrl-s"
+Match LUT scaling
+.sp -0.5
+.TP 12
+.B "Ctrl-t"
+Tile frames toggle
+.sp -0.5
+.TP 12
+.B "Ctrl-u"
+Unzoom (zoom=1)
+.sp -0.5
+.TP 12
+.B "Ctrl-x"
+Flip X
+.sp -0.5
+.TP 12
+.B "Ctrl-y"
+Flip Y
+
+.TP 12
+.B "Alt-b"
+Blink frames (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-c"
+Control panel (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-h"
+Help popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-i"
+Info box popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-l"
+Load file popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-p"
+Print popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-s"
+Save popup (toggle)
+.sp -0.5
+.TP 12
+.B "Alt-t"
+TclShell popup (toggle)
+
+.TP 12
+.B "Ctrl-Alt-q"
+Quit
+.sp -0.5
+.TP 12
+.B "Ctrl-Alt-f"
+Fitframe
+
+.TP 12
+.B "Ctrl-="
+Print using current setup
+.sp -0.5
+.TP 12
+.B "Ctrl-<"
+Decrease blink rate (blink faster)
+.sp -0.5
+.TP 12
+.B "Ctrl->"
+Increase blink rate (blink slower)
+.sp -0.5
+.TP 12
+.B "Ctrl-+"
+Zoom in
+.sp -0.5
+.TP 12
+.B "Ctrl--"
+Zoom out
+
+.TP 12
+.B "Ctrl-[hjkl] or <arrow_key>"
+Move cursor one pixel in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-Shift-[hjkl] or Shift-<arrow_key>"
+Move cursor ten pixels in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-<arrow_key>"
+Move panner one full width in each direction
+.sp -0.5
+.TP 12
+.B "Ctrl-Alt-<arrow_key>"
+Move panner one half width in each direction
+.sp -0.5
+.TP 12
+.B "Alt-1 thru Alt-4"
+Set frame displayed
+.sp -0.5
+.TP 12
+.B "Ctrl-1 thru Ctrl-9"
+Set integer zoom factor
+
+.LP
+\fBNOTE:\fP These keystrokes only work with the cursor in the main image window,
+not on the subwindows or in markers since they are implemented as
+\fIimagewin\fP translations. If a command does not work, check the cursor
+location.
+
+.SH "CLIENT CONNECTIONS"
+.LP
+XImtool allows clients to connect in any of the following ways:
+.TP 5
+.B "fifo pipes"
+The traditional approach. The default global /dev/imt1[io]
+pipes may be used, or a private set of fifos can be specified using the
+\fI-fifo\fP command line argument or \fI*fifo\fP resource. Values should
+be specified as the root pathname to a pair of fifo pipes whose last
+character is 'i' or 'o', these characters will be added automatically when
+opening the pipes. For example, to use the default pipes the path would
+be specified as simply "/dev/imt1". A value of "none" disables this connection.
+.TP 5
+.B "tcp/ip sockets"
+Clients connect via a tcp/ip socket. The default port is \fI5137\fP, or a
+custom port may be specified using the \fI-port\fP command line switch or
+a \fI*port\fP resource. This permits connecting to the server
+over a remote network connection anywhere on the Internet.
+A port number of 0 (zero) disables this connection.
+.TP 5
+.B "unix domain sockets"
+Like a tcp/ip socket, but limited to a single host system. Usually faster
+than a tcp/ip socket, and comparable to a fifo. By default each user gets
+their own unix domain socket, so this option allows multiple users to run
+ximtools on the same host without having to customize things. The default
+value is "/tmp/.IMT%d", other sockets may be defined using the \fI-unix\fP
+command line switch or the \fI*unixaddr\fR resource. Legal values
+should be specified as a filename to be used for the socket, up to two "%d"
+fields are allowed and will be replaced by the userid. An empty string value
+disables this connection.
+.LP
+By default ximtool listens simultaneously for client connections on all three
+types of ports. Clients may connect simultaneously by different
+means allowing up to three different displays to be loading at the same
+time into different frames.
+
+.SS "COMMUNICATIONS PROTOCOL"
+
+Clients communicate with XImtool using a protocol developed originally for
+IIS (International Imaging Systems) Frame Buffer hardware, the so-called
+"IIS protocol"; other more modern protocols will likely be supported in the
+future. The IIS protocol is basically a command packet stream with a header
+describing the operation to be performed (select frame, load display, read
+cursor, etc), and an optional data packet containing e.g. pixels. It is beyond
+the scope of this document to describe fully the details of the protocol;
+interested users should contact \fIiraf@noao.edu\fP for further information.
+
+.SH "FRAME BUFFERS"
+
+XImtool starts up using default frame buffer size of 512x512 pixels, two
+(of four possible) frames will be created. When loading
+disk images (i.e. run in standalone mode) the frame buffer configuration file
+will be searched for a defined frame buffer that is the same size or larger
+than the current image, if no suitable buffer can be found a custom frame
+buffer the same size as the image will be created in an unused portion of
+the configuration table. When used as a display server the frame buffer
+configuration number is passed in by the client and loaded explicitly even
+if it means clipping the image. If a new frame buffer is
+a different size than previously defined frames, all available frames
+will be initialized and cleared prior to the display. The default frame buffer
+configuration file is /usr/local/lib/imtoolrc,
+this can be overridden by defining a IMTOOLRC environment variable naming
+the file to be used, by creating a .imtoolrc file in your home directory, or
+a new file may be specified using the \fI-imtoolrc\fR command line flag or
+\fIimtoolrc\fR application resource.
+
+The format of the frame buffer configuration file is
+
+ \fIconfigno nframes width height [extra fields]\fP
+ e.g.
+ 1 2 512 512
+ 2 2 800 800
+ 3 1 1024 1024 # comment
+ : : : :
+
+At most 128 frame buffer sizes may be defined, each configuration may define
+up to 4 frames, configuration numbers need not be sequential.
+
+\fBNOTE:\fR When defining a new frame buffer for use with client software
+such as IRAF the user must also remember to define those frame buffers in
+the IRAF \fIdev$graphcap\fR file.
+
+.SH "MARKERS"
+
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the \fIGterm\fP widget and are used more extensively in other
+programs (e.g. the prototype IRAF science GUI applications). XImtool uses
+markers for the marker zoom feature discussed above, and also for the panner,
+magnifier and the coordinates box. All markers share some of the same
+characteristics, so it is worthwhile learning basic marker manipulation
+keystrokes.
+.TP 3
+\fBo\fP
+MB1 anywhere inside a marker may be used to drag the marker.
+.TP 3
+\fBo\fP
+MB1 near a marker corner or edge, depending on the type of marker,
+resizes the marker.
+.TP 3
+\fBo\fP
+Shift-MB1 on the corner of most markers will rotate the marker.
+.TP 3
+\fBo\fP
+Markers stack, if you have several markers and you put one on top of
+the other. The active marker is highlighted to tell you which of the
+stacked markers is active. If the markers overlap, this will be marker
+"on top" in the stacking order.
+.TP 3
+\fBo\fP
+MB2 in the body of a marker "lowers" the marker, i.e. moves it to the
+bottom of the stacking order.
+.TP 3
+\fBo\fP
+Delete or backspace in a marker deletes it.
+.TP 3
+\fBo\fP
+Markers have their own translation resources and so the default
+keystroke commands will not be recognized when the cursor is in a marker.
+.LP
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The Initialize button will get the
+original coords box back if you delete it, or you can reset the toggle in
+the control panel).
+
+.SS "PANNER MARKER"
+
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned below apply to these markers as well, e.g. you can use MB1 to
+reposition on the panner window within the main image display window, or to
+drag the region marker within the panner (pan the image). Resizing the
+region marker zooms the image; this is a non-aspect constrained zoom. The
+panner window itself can be resized by dragging a corner with MB1. Typing
+delete or backspace anywhere in the panner window deletes the panner.
+
+A special case is MB2. Hitting MB2 anywhere in the panner window pans the
+image to that point. This is analogous to hitting MB2 in the main display
+window to pan the image.
+
+The panner marker can be disabled by defining the \fIdisplayPanner\fP
+GUI resource, its size and location can be controlled using the
+\fIpannerArea\fP and \fIpannerGeom\fP GUI resources respectively.
+
+.SS "MAGNIFIER MARKER"
+
+The magnifier marker can be used to zoom in on a small area around the cursor.
+It will be updated as the cursor moves but only for small motions (either
+mouse movement or with the cursor movement keystrokes) to minimize the
+impact on the system. The zoom factor is expressed as some fraction of the
+size of the magnifier marker itself. The default zoom is 4, i.e. the area
+in the marker represents and area in the image that's one-fourth the size
+of the marker. Other zoom factors may be selected using the popup menu
+created by hitting MB1 in the marker.
+
+By default the magnifier marker is not visible, to toggle it select the
+\fIMagnifier\fR option from the \fIOptions\fR menubar button. Alternatively,
+for just a quick look holding down the Shift and MB1 buttons will display
+the marker until the button is released.
+
+The magnifier marker can be disabled by defining the \fIdisplayMagnifier\fP
+GUI resource, its size and location can be controlled using the
+\fImagnifierArea\fP and \fImagnifierGeom\fP GUI resources respectively.
+
+.SS "COORDS BOX MARKER"
+
+XImtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+linear client-defined coordinate system. The coords box feature is used to
+display these world coordinates as the pointer is moved about in the image
+window.
+
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated a
+"+" will be displayed after the intensity value.
+
+The coords box is a text marker, it can be moved and resized
+with the pointer like any other marker. The coords box marker can be
+disabled by defining the \fIdisplayCoords\fP GUI resource, its location
+can be controlled by the \fIwcsboxGeom\fP GUI resource.
+
+.SS "MARKER MENU OPTIONS"
+
+Except for the panner and WCS markers, MB3 (mouse button 3) calls up the
+marker menu providing a limited set of functions common to all markers:
+.TP 3
+\fBo
+Zoom\fP does an equal aspect zoom of the region outlined by the marker. In
+this way you can mark a region of the image and zoom it up.
+.TP 3
+\fBo
+Fill\fP exactly zooms the area outlined by the marker, making it fill the
+display window. Since the marker is not likely to be exactly square,
+the aspect ratio of the resultant image will not be unitary.
+.TP 3
+\fBo
+Print\fP prints the region outlined by the marker to the printer or file
+currently configured by the Print Panel.
+.TP 3
+\fBo
+Save\fP saves the region outlined by the marker to the file currently
+configured by the Save Panel.
+.TP 3
+\fBo
+Info\fP prints a description of the marked region. The text is printed in
+the Info Panel.
+.TP 3
+\fBo
+Unrotate\fP unrotates a rotated marker.
+.TP 3
+\fBo
+Color\fP is a menu of possible marker colors.
+.TP 3
+\fBo
+Type\fP is a menu of possible marker types. This is still a little buggy
+and it isn't very useful, but you can use it to play with different
+types of markers.
+.TP 3
+\fBo
+Destroy\fP destroys the marker. You can also hit the delete or backspace
+key in a marker to destroy the marker.
+
+.SH "CONTROL PANEL"
+
+XImtool has a control panel which can be used to exercise most of the
+capabilities the program has for image display. The control panel can be
+accessed either via the \fBOptions\fP menu from the main window menubar, or by
+pressing the leftmost button in the row of buttons at the upper right side
+of the display.
+
+.SS "VIEW CONTROLS"
+
+The \fBFrame box\fP will list only the frame buffers you currently have
+defined. Currently, the only way to destroy a frame buffer is to change the
+frame buffer configuration, new frame buffers (up to 4) will be created
+automatically if requested by the client. The number of frame buffers
+created at startup can be controlled using the \fI-nframes\fP command-line
+switch or the \fIdefNFrames\fP resource.
+
+The \fBtext display\fP window gives the field X,Y center, X,Y scale factors,
+and the X,Y zoom factors. The scale factor and the zoom factor will be the same
+unless \fIautoscale\fP is enabled. The scale is in units of display pixels per
+frame buffer pixel, and is an absolute measure (it doesn't matter whether or
+not autoscale is enabled). Zoom is relative to the autoscale factor, which
+is 1.0 if autoscaling is disabled. This information is also presented in the
+Info panel.
+
+The numbers in the \fBZoom box\fP are zoom factors. Blue numbers zoom, red
+numbers dezoom. \fIZoom In\fP and \fIZoom Out\fP may be used to go to larger
+or smaller zoom factors, e.g. "Ctrl-5" followed by "Zoom In" will get you to
+zoom factor 10. Specific zoom factors may also be accessed directly as Control
+keystrokes, e.g. Ctrl-5 will set zoom factor 5. \fICenter\fP centers the field.
+\fIToggle Zoom\fP toggles between the current zoom/center values, and the
+unzoomed image.
+
+\fIAspect\fP recomputes the view so that the aspect ratio is 1.0. Aspect also
+integerizes the zoom factor (use the version in the View menu if you don't
+want integerization).
+
+\fIFit Frame\fP makes the display window the same size as the frame buffer. Note
+that autoscale has much the same effect, and allows you to resize the
+display window to any size you want, or view images too large to fit on the
+screen.
+
+.SS "ENHANCEMENT CONTROLS"
+
+At the top is a scrolled list of all the available colormaps. Click on the
+one you want to load. You can add your own colormaps to this list by
+defining the \fIcmap[12]\fP or \fIcmapDir[12]\fP command line flags or
+application resources.
+
+The two sliders adjust the contrast (upper slider) and brightness (lower
+slider) of the display. The \fIInvert\fP button inverts the colormap (multiples
+the contrast by -1.0). Note that due to the use of the private colormap the
+sliders are a bit sluggish when dragged to window the display. If this is
+annoying, using MB3 in the display window is faster.
+
+The \fINormalize\fP button (on the bottom of the control panel) will normalize
+the enhancement, i.e. set the contrast and brightness to the default one-to-one
+values (1.0, 0.5). This is the preferred setting for many of the pseudocolor
+colortables and for private colormaps loaded from disk images. The
+\fIInitialize\fP button does a reset of the server.
+
+.SS "BLINK CONTROLS"
+
+\fIBlink frames\fP is the list of frames to be blinked. When blink mode is
+in effect ximtool just cycles through these frames endlessly, pausing
+"blink rate" seconds between each frame. The same frame can be entered
+in the list more than once. To program an arbitrary list of blink
+frames, hit the Reset button and click on each blink frame button until
+it is set to the desired frame number.
+
+The \fIBlink Rate\fP can be adjusted as slow or as fast as you want using the
+arrow buttons. If you set the blink rate small enough it will go to
+zero, enabling single step mode (see below).
+
+The \fIRegister\fP button registers all the blink frames with the current
+display frame. Frames not in the blink list are not affected.
+
+The \fIMatch LUTs\fP button sets the enhancement of all blink frames to the
+same values as the display frame. Frames not in the blink list are not affected.
+
+The \fIBlink\fP button turns blink on and off. When the blink rate is set to
+zero the Blink button will single step through the blink frames, one
+frame per button press.
+
+\fBNOTE:\fP You can blink no matter what ximtool options are in effect, but
+many of these will slow blink down. To get the fastest blink you may want to
+turn off the panner and coords box, and match the LUTs of all the blink frames.
+All the ximtool controls are fully active during blink mode, plus you can
+load frames etc.
+
+.SS "OPTIONS:"
+.TP 5
+.B "Panner"
+Toggles whether to display the panner marker.
+.TP 5
+.B "Coords Box"
+Toggles whether to display the coordinate box marker.
+.TP 5
+.B "Autoscale"
+If autoscale is enabled then at zoom=1, the frame buffer will be
+automatically scaled to fit within the display window. With autoscale
+disabled (the default), the image scale is more predictable, but the
+image may be clipped by the display window, or may not fill the display
+window.
+.TP 5
+.B "Antialiasing"
+When dezooming an image, i.e., displaying a large image in a smaller
+display window, antialiasing causes all the data to be used to compute
+the displayed image. If antialiasing is disabled then image is
+subsampled to compute the displayed image. Antialiasing can prevent
+subsampling from omitting image features that don't fall in the sample
+grid, but it is significantly slower than dezooming via subsampling.
+The default is no antialising.
+.TP 5
+.B "Tile Frames"
+The default display mode is to view one frame at a time. In tile frames
+mode, 2 or 4 frames may be viewed simultaneously in the display window.
+All the usual operations (zoom and pan, colortable enhancement, cursor
+readback, etc.) still work for each frame even when in tile frames mode.
+.TP 5
+.B "Warnings"
+The warnings options toggles whether you see warning dialog boxes in
+situations like overwriting an existing file, clearing the frame
+buffer, etc.
+
+.SH "COLORMAP SELECTION"
+
+By default XImtool will display images using either a grayscale colormap (e.g.
+if loaded by a client), or a private colormap when loading an image from disk
+that contains a colormap. Each frame defines its own colormap so you can
+define different colormaps or enhancements for each frame, they will change
+automatically as you cycle through the frames.
+
+.SS "BUILTIN COLORMAPS"
+
+Once loaded, the colormap may either be changed using the builtin colormap
+menu under the View menu button on the main window, or from the Enhancement
+box on the control panel. XImtool has about a dozen colormap options
+builtin, other user-defined colormaps may optionally be loaded. It is not
+presently possible to save colormaps for later use.
+
+.SS "USER-DEFINED COLORMAPS"
+
+The \fIcmap[12]\fP and \fIcmapDir[12]\fP resources (or command line arguments)
+are used to tell which specific colormaps to make available or where to look
+for colortables respectively. The colortables are loaded when ximtool starts
+up, or when it is reinitialized (e.g. by pressing the Initialize button in
+the control panel). XImtool will ignore any files in the colormap directory
+which do not look like colortables. New colortables will also be added
+automatically for each image loaded from disk.
+
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green, and
+blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+
+ R G B
+ R G B
+ (etc.)
+
+Blank and comment lines (lines beginning with a '#') are ignored.
+
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. XImtool will interpolate the table as necessary to
+compute the colortable values used in XImtool. XImtool uses at most 201
+colors to render pixel data, so it is usually necessary to interpolate the
+table when it is loaded.
+
+The name of the colortable as it will appear in the XImtool control panel is
+the root name of the file, e.g., if the file is "rainbow.lut" the colortable
+name will be "rainbow". Lower case names are suggested to avoid name
+collisions with the builtin colortables. Private colormaps for disk images
+will be have the same name as the image loaded. If the same colortable file
+appears in multiple user colortable directories, the first one found will be
+used.
+
+.SS "MINIMIZING COLORMAP CONFLICTS"
+
+The Gterm widget used by XImtool (i.e. the main display window) uses a private
+global colormap for display, this allows it to have greater control over color
+cell allocation but can occasionally also cause "colormap flashing" as the
+mouse is moved in and out of the application. The problem here is that
+in a system with only an 8-bit colormap (256 colors) all applications must
+compete for colors, programs such as XV or Netscape allocate colors from the
+default colormap leaving only a few free cells for XImtool. Since XImtool
+defines a private global colormap it is still able to allocate the needed
+cells rather than failing, but it's allocating cells already used by other
+applications. As the mouse moves out of the ximtool window those cells are
+once again defined in terms of the default colormap, so the ximtool window
+is then using a different colormap. It is this switching of the colormap
+context that causes the flashing to occur, but there are a few things that
+can be done to help minimize this.
+
+XImtool logically defines 200 colors which the client image display program
+can use to render pixels. However, ximtool may or may not actually allocate
+all of those colors. By default it currently allocates only about 192
+colors, to reserve 64 colors for the other windows on the screen. You don't
+normally notice this as 1) usually the default screen colormap has enough
+free cells to allow ximtool to match the colors, and 2) the extra unallocated
+cells correspond to the brightest pixels in the rendered image, and these
+colors may not be used or usually only correspond to a few small regions
+near the saturated cores of bright objects.
+
+You can eliminate this problem by setting the \fIbasePixel\fP resource to e.g.
+48 instead of 64, which will let the gterm widget allocate all 200 colors.
+However, this isn't recommended for normal use as it will increase the
+likelihood of colormap flashing. If you change \fIbasePixel\fP, either restart
+the X server or set the resource \fIcmapInitialize\fP=\fITrue\fP to force the
+gterm widget to update its global colormap resource in the X server.
+The colormap resource may also be deleted by using the command
+
+ \fIxprop -root -remove GT_image\fP
+
+These options may also be set on the command line when first starting up.
+
+In general one can set the Gterm widget resources \fIbasePixel\fP
+and \fImaxColors\fP to specify the region of colormap space to be used for
+image display. If you set \fImaxColors\fP to a small value, the 200 logical
+colors defined by the widget will be mapped by the imtool color model into
+whatever number of colors are actually available to the widget. For example,
+in the default setup, 200 color values are really being mapped into 192 color
+cells used for display, the remaining colors are used for buttons, menus etc
+and are allocated from the default colormap by the X toolkit when the
+application starts up.
+
+Even though the Gterm widget uses a private colormap, it is a private
+\fIglobal\fP colormap meaning that all Gterm widgets share the same colormap.
+An example of colormap sharing in ximtool is the main image window and the
+colorbar window. These are two separate gterm widgets that share the same
+colormap. They have to share the same colormap, as otherwise when you
+windowed the main image window the colorbar window would not accurately
+reflect the modified colormap. By default two separate ximtools would also
+share the same colormap meaning contrast enhancements in one window would
+affect the other. By resetting the \fIcmapName\fP command line option or
+resource you can change the name of the private colormap used causing
+separate ximtools to use different colormaps, but note this also creates
+colormap flashing between the two windows that cannot easily be avoided.
+By setting the \fIcmapName\fR to "default" the widget will allocate colors
+from the default colormap, but this is of little use at the moment.
+
+There are a number of other resources that can be used to modify the behavior
+of the Gterm widget color management scheme, but these are the most useful ones.
+For question and further information feel free to contact \fIiraf@noao.edu\fP.
+
+.SH "LOAD PANEL"
+
+The Load Panel allows you load images from disk directly to the frame
+buffer, this is analogous to loading an image on the command line except
+that browsing is possible. At present recognized formats include IRAF OIF
+format (i.e. \fI.imh\fP extension), simple FITS files, GIF, and Sun rasterfiles.
+The task will automatically sense the format of the image and load it
+appropriately. Images with private colormaps (such as GIF) will be loaded
+using the private colormap (meaning that changing the brightness/contrast
+enhancements will render a random-colored image), all others will be loaded
+with a grayscale colormap. If the \fIGrayscale\fP button is enabled the image
+colormap will be converted to grayscale and loaded as the standard grayscale
+colormap. The Load panel will close automatically once the image has loaded
+unless the \fIBrowse\fP button has been set.
+
+When loading new images the frame buffer configuration table will
+be searched for a frame buffer that is the same size or larger than the new
+image size, if no frame buffer can be found a custom buffer exactly the size
+of the image will be created. This means that the image may not fill the
+display window when loaded, or you may see a subsection of the image in the
+main display window. Setting the \fIautoscale\fP option will scale the entire
+image to fit the main display window, the full frame buffer will always be
+visible in the Panner marker window.
+
+Images with more colors than can be displayed will automatically be
+quantized to the number of available colors before display, 24-bit formats
+are not currently supported (but may be in the future and will be similarly
+quantized).
+
+Formats which permit larger than 8-bit pixels will be sampled on a grid
+to determine an optimal range in the data to be used to compute a linear
+transformation to the number of display colors. This is the same sampling
+and transformation used by the IRAF \fIDISPLAY\fR task when computing the
+\fIz1/z2\fP values and provides a much better initial display than simple
+truncation to 8-bits.
+.TP 5
+.B "Directory Browsing"
+The load panel contains a list of files in the current directory that
+may be selected for loading by selecting with left mouse button. If the
+file is a directory the contents of the new directory will be loaded,
+if it's a plain file an attempt will be made to load it as an image
+otherwise an error popup will appear. Directories in the list are identified
+with a trailing '/' character, you will always see any subdirectories
+listed even if a filter is specified.
+
+The \fIRoot\fP button will reset the current directory to the system root
+directory. The \fIHome\fP button will reset the current directory to the
+user's login directory, the \fIUp\fP button moves up one directory level, and
+\fIRescan\fP reloads the file list by rescanning the directory. The current
+working directory is given below the file selection window.
+.TP 5
+.B "File Patterns"
+By default all files and directories will be listed. You may specify a
+filter to e.g. select only those files with a given extension like
+"*.fits" to list only files with a ".fits" extension. Directories will
+always be seen in the list and are identified with a trailing '/'
+character. Any valid unix pattern matching string will be recognized.
+.TP 5
+.B "Direct File Load"
+If you know exactly which file you wish to load, you may enter its
+name in the \fILoad File\fP text box and either hit <cr> or the Load button
+to load it. An absolute or relative path name may be given, if a simple
+filename is specified it will be searched for in the current working directory.
+.TP 5
+.B "Frame Selections"
+By default images will be loaded into frame number 1, you may select a
+different frame using the Frame menu button to cycle through the available
+frames.
+
+.SH "SAVE PANEL"
+
+The Save Panel lets you save the current contents of the main display window
+to a disk file (including the Panner/Coords markers, any general graphics
+markers, or overlay graphics displayed by the client program). Presently,
+only the contents of the main display window may be saved, there is no
+facility for saving the undisplayed contents of the entire frame buffer
+other than to enable the autoscale feature. A limited number of formats are
+currently available, others will be added in future versions.
+.TP 5
+.B "File Name"
+The File Name text box allows you to enter the file name of the saved
+file. A "%d" anywhere in the name will be replaced by a sequence number
+allowing multiple frames to be saved with unique names.
+.TP 5
+.B "Format"
+The Format box allows you to choose the format of the image to be
+created. Not all formats are currently implemented.
+.TP 5
+.B "Color"
+The Color box lets you choose the color type of the image to be
+created. The options will change depending on the format, e.g. FITS
+doesn't allow color so no color options will be allowed. Formats which
+allow 24-bit images will be written using the current colormap after
+converting to a 24-bit image, pseudocolor images will be written with
+the current colormap.
+
+.SH "PRINT PANEL"
+
+The Print Panel allows you dump the contents of the main display window as
+Encapsulated Postscript to either a named printer device or to a disk file.
+The \fIPrint To\fP selects the type of output, the \fIPrint Command\fP box
+will adjust accordingly, either as a Unix printer command or as a file name.
+A "%d" anywhere in the name for disk output will be replaced by a sequence
+number allowing multiple frames to be saved with unique names. Selecting
+printers from the installed list will automatically change the command to be
+used to generate the output. This command does not necessarily need to be a
+printer command, the printer configuration file lets you define any command
+string to process the image.
+
+.SS "COLOR OPTIONS"
+
+The Color box lets you choose the color type of the image to be created.
+PseudoColor or 24-bit postscript will be created using the current colormap
+and enhancements.
+
+.SS "POSTSCRIPT OPTIONS"
+
+.TP 5
+.B "Orientation"
+Set the page orientation.
+.TP 5
+.B "Paper Size"
+Select the paper size to be used.
+.TP 5
+.B "Image Scale"
+Set the scale factor used to compute the final image size. No checking is
+done to make sure the image will fit correctly on the page.
+
+.SS "PROCESSING OPTIONS"
+.TP 5
+.B "Auto Scale"
+Toggles whether or not the image is automatically scaled
+to fit the page. If not enabled, the image scale will be used to
+determine the output image size, otherwise the image will be scaled down
+(if necessary) to fit on the page.
+.TP 5
+.B "Auto Rotate"
+Determines whether or not the image will be rotated to fit
+on the page. When set, an image larger than the current orientation
+will be rotated and possibly scaled to fit the page, otherwise the image
+may be scaled so that it fits in the current orientation.
+.TP 5
+.B "Max Aspect"
+Automatically increases the scale so the image fills the page in the current
+orientation.
+.TP 5
+.B "Annotate"
+The annotate option toggles whether or not the final file includes
+annotation such as the image title, a colorbar, and axis labels. There is
+currently no option for partial annotation.
+
+.SS "PRINTER SELECTION"
+
+The printer selection list lets choose the printer to be used. The printer
+configuration file is /usr/local/lib/ximprint.cfg by default or may be reset
+using the \fI-printConfig\fP command line switch or \fIprintConfig\fP
+resource. The format of the file is simply
+
+ \fIname\\tcommand\fP
+
+The \fIname\fP value is what appears in the selection list and may be more
+than a single word, the \fIcommand\fP can be any command that accepts EPS
+input from a pipe, the two fields must be separated by a tab character.
+Normally the command
+will be a simple \fIlpr -Pfoo\fP or some such, but can also include converters
+or previewers. At most 128 printer commands may be used.
+
+.SS "ANNOTATION OPTIONS"
+
+.TP 5
+.B "Annotate"
+Selects whether Postscript image is to be annotated.
+.B "Title"
+Annotate with a title on the top of the image.
+.B "Borders"
+Annotate with borders surrounding the image giving image coordinates.
+.B "Colorbar"
+Annotate with colorbar at the bottom of the image
+.B "Title String"
+Title string to use when \fItitle\fR is selected. The special value
+\fIimtitle\fR will force the title to be the currently displayed image title,
+otherwise it will be this user-selected field.
+
+
+.SH "INFO PANEL"
+
+The information panel is underused at present but is meant to provide basic
+information about the frame being displayed. It is updated to be current
+while changing enhancements, pan/zoom regions, or frame selection. In cases
+where the image title string is truncated in the main display window, the
+user can always pop up the info window to see the full title.
+
+.SH "TCLSHELL"
+
+The \fITclShell\fP allows the user to type commands directly to the TCL
+interpreter, letting you send messages to the object manager or execute
+specific procedures in the TCL code that makes up the GUI. It is used as a
+development or debugging tool for the GUI, but for an example of what it
+does, bring it up and type a command such as
+
+ \fIsend helpButton set background red\fP
+
+
+.SH ENVIRONMENT
+DISPLAY specifies which display terminal to use
+.br
+IMTOOLRC frame buffer configuration file
+.br
+imtoolrc frame buffer configuration file (alternative)
+
+.SH FILES
+/usr/local/lib/imtoolrc default frame buffer configuration file
+.br
+/usr/local/lib/ximprint.cfg default printer configuration file
+.br
+/usr/local/lib/imtoolcmap default colormap directory
+.br
+/dev/imt1i default input fifo
+.br
+/dev/imt1o default output fifo
+.br
+/tmp/.IMT%d default unix socket
+
+.SH BUGS
+
+.SH SEE ALSO
+xgterm(1), xtapemon(1)
+
+.SH COPYRIGHT
+Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
diff --git a/vendor/x11iraf/ximtool/OLD/ximtool-mag.ps b/vendor/x11iraf/ximtool/OLD/ximtool-mag.ps
new file mode 100644
index 00000000..aa974a41
--- /dev/null
+++ b/vendor/x11iraf/ximtool/OLD/ximtool-mag.ps
@@ -0,0 +1,10025 @@
+%!PS-Adobe-1.0
+%%Creator: devps (Pipeline Associates, Inc.)
+%%CreationDate: Wed Sep 10 10:17:53 1997
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+
+/X{exch}def
+/r{rmoveto}def
+/m{moveto}def
+/l{lineto}def
+/rl{rlineto}def
+/lc{yc X xc X l st}def
+/mc{yc X xc X m}def
+/el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr}def
+/ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st}def
+/sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct}def
+/st{stroke}def
+/gs{gsave}def
+/gr{grestore}def
+/cp{currentpoint}def
+/np{newpath}def
+/ct{curveto}def
+/m0{0 0 moveto}def
+/BP{/devps-save save def m0}def
+/EP{
+clear devps-save restore
+showpage}def
+/res 10.000000 def
+/V{res neg div 792 add
+currentpoint pop X
+m}def
+/H{res div
+currentpoint X pop
+moveto}def
+/h{res div 0 r}def
+/v{res neg div 0 X r}def
+/xc{res div}def
+/yc{res neg div 792 add}def
+/S{X H show}def
+/psize 10 def
+/height 1 def
+/slant 0 def
+/FF{findfont X dup 12 div setlinewidth /psize X def
+ [psize 0 psize height mul slant sin slant cos div mul psize height mul 0 0]
+ makefont setfont}def
+/shade{gs
+ /dy X def
+ /dx X def
+ np m
+ setgray
+ 0 dy rl
+ dx 0 rl
+ 0 dy neg rl
+ dx neg 0 rl
+ closepath
+ fill
+gr}def
+1 setlinecap
+/R{/Times-Roman FF}def
+/B{/Times-Bold FF}def
+/I{/Times-Italic FF}def
+/Y{/Symbol FF}def
+%%EndProlog
+%%Page: 1 1
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+900(NAME)S
+1080 V
+10 R
+1260(ximtool-mag)S
+1807(\261)S
+1887(interactive)S
+2338(image)S
+2612(display)S
+2931(program)S
+3299(for)S
+3445(the)S
+3597(X)S
+3699(Window)S
+4073(System)S
+4398(with)S
+4606(experimental)S
+5157(GUI)S
+1248 V
+9 B
+900(SYNOPSIS)S
+1368 V
+10 B
+1260(ximtool-mag)S
+1828([\261)S
+10 I
+1911(toolkitoption)S
+10 B
+2453(...])S
+2591([)S
+10 I
+2654(options)S
+10 B
+2979(...])S
+1536 V
+9 B
+900(OPTIONS)S
+1656 V
+10 B
+1260(-basePixel)S
+10 I
+1723(N)S
+1776 V
+10 R
+1510(The)S
+1709(base)S
+1930(colormap)S
+2351(cell)S
+2539(used)S
+2766(by)S
+2910(the)S
+3076(colormap.)S
+3552(This)S
+3774(essentially)S
+4240(allows)S
+4545(you)S
+4739(to)S
+4861(reserve)S
+10 I
+5192(basePixel)S
+1896 V
+10 R
+1510(colors)S
+1793(in)S
+1910(the)S
+2071(global)S
+2360(colormap)S
+2776(for)S
+2931(other)S
+3175(applications.)S
+3752(The)S
+3946(default)S
+4262(is)S
+4367(64,)S
+4530(if)S
+4629(changed)S
+4999(you'll)S
+5276(need)S
+5502(to)S
+2016 V
+1510(also)S
+1701(specify)S
+2019(the)S
+10 I
+2171(-cmapInitialize)S
+10 R
+2806(option)S
+3092(or)S
+3205(resource.)S
+2184 V
+10 B
+1260(-cmap1)S
+10 I
+1606(\256le)S
+2304 V
+10 R
+1510(User)S
+1728(colormap)S
+2135(1.)S
+2270(This)S
+2478(\257ag)S
+2658(allows)S
+2949(you)S
+3129(to)S
+3237(specify)S
+3555(a)S
+3629(colormap)S
+4036(to)S
+4144(be)S
+4268(made)S
+4514(available)S
+4904(at)S
+5006(task)S
+5197(startup.)S
+2472 V
+10 B
+1260(-cmap2)S
+10 I
+1606(\256le)S
+2592 V
+10 R
+1510(User)S
+1734(colormap)S
+2147(2.)S
+2288(This)S
+2502(\257ag)S
+2688(allows)S
+2985(you)S
+3171(to)S
+3285(specify)S
+3609(a)S
+3689(second)S
+4002(colormap)S
+4415(to)S
+4529(be)S
+4660(made)S
+4913(available)S
+5310(at)S
+5419(task)S
+2712 V
+1510(startup.)S
+2880 V
+10 B
+1260(-cmapDir1)S
+10 I
+1750(dir)S
+3000 V
+10 R
+1510(User)S
+1728(colormap)S
+2135(directory)S
+2525(1.)S
+2660(Speci\256es)S
+3051(a)S
+3125(directory)S
+3515(to)S
+3623(be)S
+3747(searched)S
+4125(for)S
+4271(colormaps.)S
+3168 V
+10 B
+1260(-cmapDir2)S
+10 I
+1750(dir)S
+3288 V
+10 R
+1510(User)S
+1742(colormap)S
+2164(directory)S
+2569(2.)S
+2719(Speci\256es)S
+3125(a)S
+3214(directory)S
+3619(to)S
+3742(be)S
+3881(searched)S
+4274(for)S
+4435(colormaps.)S
+4951(By)S
+5113(default)S
+5435(this)S
+3408 V
+1510(points)S
+1790(to)S
+1903(the)S
+2060(system)S
+2373(directory)S
+2768(/usr/local/lib/imtoolcmap,)S
+3840(allowing)S
+4225(a)S
+4304(set)S
+4450(of)S
+4568(site)S
+4741(default)S
+5052(colormaps)S
+5502(to)S
+3528 V
+1510(be)S
+1634(de\256ned)S
+1958(here.)S
+3696 V
+10 B
+1260(-cmapInitialize)S
+10 I
+1934(bool)S
+3816 V
+10 R
+1510(Initialize)S
+1908(the)S
+2073(ximtool)S
+2428(colormap)S
+2848(at)S
+2963(startup.)S
+3333(When)S
+3614(setting)S
+3924(the)S
+10 I
+4089(basePixel)S
+10 R
+4520(option)S
+4819(or)S
+4945(resource)S
+5325(this)S
+5513(is)S
+3936 V
+1510(required)S
+1876(in)S
+1988(order)S
+2232(to)S
+2344(force)S
+2582(the)S
+2738(Gterm)S
+3027(widget)S
+3333(to)S
+3445(update)S
+3745(its)S
+3874(global)S
+4158(colormap)S
+4569(resource)S
+4940(in)S
+5052(the)S
+5207(X)S
+5312(server.)S
+4056 V
+1510(The)S
+1695(default)S
+2002(is)S
+10 I
+2099(false)S
+10 R
+2288(.)S
+4224 V
+10 B
+1260(-cmapName)S
+10 I
+1805(name)S
+4344 V
+10 R
+1510(Name)S
+1784(used)S
+2003(for)S
+2156(private)S
+2470(colormap.)S
+2939(The)S
+3131(default)S
+3445(for)S
+3598(all)S
+3735(IRAF)S
+4000(imaging)S
+4365(applications)S
+4885(is)S
+10 I
+4989(image)S
+10 R
+5233(.)S
+5325(Gterm)S
+4464 V
+1510(widget)S
+1822(based)S
+2089(imaging)S
+2457(applications)S
+2980(which)S
+3264(have)S
+3492(the)S
+3654(same)S
+3899(value)S
+4155(of)S
+4277(cmapName)S
+4770(will)S
+4965(share)S
+5214(the)S
+5375(same)S
+4584 V
+1510(colormap,)S
+1950(minimizing)S
+2450(colormap)S
+2865(\257ashing)S
+3220(and)S
+3402(allowing)S
+3790(multiple)S
+4162(applications)S
+4683(to)S
+4799(be)S
+4931(run)S
+5103(at)S
+5214(the)S
+5375(same)S
+4704 V
+1510(time.)S
+4872 V
+10 B
+1260(-con\256g)S
+10 I
+1579(N)S
+4992 V
+10 R
+1510(Initial)S
+1799(frame)S
+2081(bu)S
+2181 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2242(er)S
+2369(con\256guration)S
+2952(number.)S
+3362(The)S
+3567(default)S
+3894(value)S
+4160(is)S
+4277(1,)S
+4402(indicating)S
+4852(a)S
+4947(512x512)S
+5348(frame)S
+5112 V
+1510(bu)S
+1610 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1671(er)S
+1778(with)S
+1986(2)S
+2066(frames.)S
+2422(See)S
+2596(below)S
+2870(for)S
+3016(information)S
+3518(on)S
+3648(the)S
+3800(frame)S
+4062(bu)S
+4162 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4223(ers.)S
+5280 V
+10 B
+1260(-defgui)S
+5400 V
+10 R
+1510(Print)S
+1737(the)S
+1892(default)S
+2202(GUI)S
+2412(to)S
+2523(the)S
+2678(stdout.)S
+3011(The)S
+3199(GUI)S
+3409(is)S
+3509(a)S
+3586(Tcl)S
+3752(program)S
+4123(that)S
+4306(may)S
+4511(be)S
+4638(customized)S
+5126(by)S
+5259(the)S
+5414(user)S
+5520 V
+1510(and)S
+1684(reloaded)S
+2057(using)S
+2304(the)S
+10 I
+2456(-gui)S
+10 R
+2647(option)S
+2933(or)S
+3046(the)S
+10 I
+3198(gui)S
+10 R
+3356(resource)S
+3723(parameter.)S
+5688 V
+10 B
+1260(-displayPanner)S
+10 I
+1941(bool)S
+5808 V
+10 R
+1510(Display)S
+1859(panner)S
+2168(marker)S
+2488(window)S
+2848(at)S
+2958(startup.)S
+3323(If)S
+3427(set,)S
+3601(a)S
+3683(panner)S
+3993(window)S
+4354(showing)S
+4732(the)S
+4893(full)S
+5071(frame)S
+5342(bu)S
+5442 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5503(er)S
+5928 V
+1510(will)S
+1696(appear)S
+1991(in)S
+2099(the)S
+2251(upper-right)S
+2730(side)S
+2921(of)S
+3034(the)S
+3186(main)S
+3416(display)S
+3735(window.)S
+6096 V
+10 B
+1260(-displayMagni\256er)S
+10 I
+2052(bool)S
+6216 V
+10 R
+1510(Display)S
+1852(magni\256er)S
+2266(marker)S
+2579(window)S
+2932(at)S
+3035(startup.)S
+3393(If)S
+3490(set,)S
+3657(a)S
+3733(magni\256er)S
+4148(window)S
+4502(showing)S
+4873(a)S
+4949(zoomed)S
+5297(section)S
+6336 V
+1510(around)S
+1817(the)S
+1969(cursor)S
+2248(will)S
+2434(appear)S
+2729(in)S
+2837(the)S
+2989(upper-left)S
+3412(side)S
+3603(of)S
+3716(the)S
+3868(mail)S
+4076(display)S
+4395(window.)S
+6504 V
+10 B
+1260(-displayCoords)S
+10 I
+1941(bool)S
+6624 V
+10 R
+1510(Display)S
+1855(WCS)S
+2106(coordinate)S
+2561(marker)S
+2877(window)S
+3233(at)S
+3339(startup.)S
+3700(If)S
+3800(set,)S
+3970(a)S
+4048(coordinate)S
+4503(readout)S
+4836(text)S
+5020(marker)S
+5336(show-)S
+6744 V
+1510(ing)S
+1668(will)S
+1854(appear)S
+2149(in)S
+2257(the)S
+2409(lower-right)S
+2888(side)S
+3079(of)S
+3192(the)S
+3344(main)S
+3574(display)S
+3893(window.)S
+6912 V
+10 B
+1260(-\256fo)S
+10 I
+1462(pipe)S
+7032 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(name)S
+2299(of)S
+2412(the)S
+2564(\256fo)S
+2733(pipe)S
+2936(to)S
+3045(be)S
+3170(used,)S
+3409(the)S
+10 I
+3562(i)S
+10 R
+3621(and)S
+10 I
+3796(o)S
+10 R
+3877(su)S
+3966 H
+ (f)show 10 -.5 mul h (\256)show
+10 R
+4050(xes)S
+4214(will)S
+4401(be)S
+4526(added)S
+4795(automatically.)S
+5425(The)S
+7152 V
+1510(default)S
+1817(pipe)S
+2019(names)S
+2304(will)S
+2490(be)S
+2614(/dev/imt1i)S
+3056(\(input)S
+3325(pipe\))S
+3560(and)S
+3734(/dev/imt1o)S
+4198(\(output)S
+4517(pipe\).)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(1)S
+7920 V
+EP
+%%Page: 2 2
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(-\256fo_only)S
+1080 V
+10 R
+1510(If)S
+1615(set,)S
+1790(only)S
+2007(\256fo)S
+2185(pipes)S
+2435(will)S
+2630(be)S
+2763(used)S
+2985(for)S
+3140(communication)S
+3801(with)S
+4018(a)S
+4101(client)S
+4363(program,)S
+4766(sockets)S
+5100(will)S
+5296(be)S
+5430(dis-)S
+1200 V
+1510(abled.)S
+1368 V
+10 B
+1260(-gui)S
+10 I
+1457(\256le)S
+1488 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(GUI)S
+2260(\256le)S
+2418(to)S
+2526(be)S
+2650(used.)S
+1656 V
+10 B
+1260(-help)S
+10 R
+1510(Print)S
+1735(a)S
+1809(summary)S
+2211(of)S
+2324(command)S
+2748(line)S
+2928(options)S
+3253(to)S
+3361(the)S
+3513(screen.)S
+1824 V
+10 B
+1260(-imtoolrc)S
+10 I
+1683(\256le)S
+1944 V
+10 R
+1510(Speci\256es)S
+1923(the)S
+2097(frame)S
+2381(bu)S
+2481 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2542(er)S
+2671(con\256guration)S
+3257(\256le)S
+3438(to)S
+3569(be)S
+3716(used.)S
+4007(See)S
+4204(below)S
+4501(for)S
+4670(information)S
+5195(on)S
+5348(frame)S
+2064 V
+1510(bu)S
+1610 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1671(ers.)S
+2232 V
+10 B
+1260(-inet_only)S
+2352 V
+10 R
+1510(If)S
+1611(set,)S
+1782(only)S
+1995(inet)S
+2180(sockets)S
+2509(will)S
+2700(be)S
+2829(used)S
+3047(for)S
+3198(communication)S
+3855(with)S
+4068(a)S
+4147(client)S
+4404(program,)S
+4802(\256fo)S
+4976(pipes)S
+5222(and)S
+5402(unix)S
+2472 V
+1510(sockets)S
+1834(will)S
+2020(be)S
+2144(disabled.)S
+2640 V
+10 B
+1260(-invert)S
+2760 V
+10 R
+1510(Start)S
+1748(XImtool)S
+2136(using)S
+2402(inverted)S
+2778(colormaps.)S
+3298(When)S
+3585(set,)S
+3770(a)S
+3863("normalized")S
+4443(display)S
+4781(will)S
+4987(always)S
+5314(be)S
+5458(the)S
+2880 V
+1510(inverse)S
+1828(of)S
+1941(the)S
+2093(selected)S
+2444(colormap.)S
+3048 V
+10 B
+1260(-maxColors)S
+10 I
+1789(N)S
+3168 V
+10 R
+1510(Specify)S
+1845(the)S
+1997(max)S
+2199(number)S
+2534(of)S
+2647(colors)S
+2921(to)S
+3029(be)S
+3153(used)S
+3366(for)S
+3512(the)S
+3664(display.)S
+3336 V
+10 B
+1260(-memModel)S
+10 I
+1805(type)S
+3456 V
+10 R
+1510(Determines)S
+2003(how)S
+2208(ximtool)S
+2553(uses)S
+2758(memory)S
+3125(in)S
+3237(the)S
+3393(ximtool)S
+3739(client)S
+3995(and)S
+4173(the)S
+4329(X)S
+4435(server.)S
+4737(The)S
+4926(options)S
+5255(are)S
+10 I
+5410(fast)S
+10 R
+5555(,)S
+3576 V
+10 I
+1510(beNiceToServer)S
+10 R
+2153(,)S
+2220(and)S
+10 I
+2406(small)S
+10 R
+2623(.)S
+2720(The)S
+2917(default)S
+3236(is)S
+10 I
+3345(fast)S
+10 R
+3490(,)S
+3557(which)S
+3843(uses)S
+4057(server)S
+4342(pixmaps)S
+4723(to)S
+4843(make)S
+5101(frame)S
+5374(blink)S
+3696 V
+1510(fast.)S
+1742(This)S
+1953(is)S
+2053(recommended)S
+2651(unless)S
+2934(server)S
+3210(memory)S
+3576(is)S
+3676(very)S
+3886(limited.)S
+4258(Note)S
+4485(that)S
+4668(even)S
+4889(in)S
+5000(fast)S
+5177(mode,)S
+5458(the)S
+3816 V
+1510(server)S
+1792(pixmap)S
+2131(is)S
+2237(only)S
+2454(the)S
+2615(size)S
+2808(of)S
+2929(the)S
+3089(display)S
+3416(window,)S
+3801(so)S
+3928(memory)S
+4299(usage)S
+4564(is)S
+4669(reasonable)S
+5133(even)S
+5359(if)S
+5458(the)S
+3936 V
+1510(frame)S
+1772(bu)S
+1872 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1933(er)S
+2040(is)S
+2137(very)S
+2344(large.)S
+4104 V
+10 B
+1260(-nframes)S
+10 I
+1672(N)S
+4224 V
+10 R
+1510(Speci\256es)S
+1913(the)S
+2077(number)S
+2424(of)S
+2549(frame)S
+2823(bu)S
+2923 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2984(ers)S
+3142(to)S
+3262(con\256gure)S
+3681(at)S
+3795(startup.)S
+4164(By)S
+4323(default)S
+4642(there)S
+4883(will)S
+5081(be)S
+5217(2)S
+5309(frames)S
+4344 V
+1510(available,)S
+1925(a)S
+1999(maximum)S
+2435(of)S
+2548(4)S
+2628(frames)S
+2929(are)S
+3080(allowed.)S
+4512 V
+10 B
+1260(-port)S
+10 I
+1506(N)S
+4632 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(port)S
+2244(number)S
+2579(to)S
+2687(use)S
+2850(when)S
+3096(connecting)S
+3564(through)S
+3905(an)S
+4029(inet)S
+4209(socket.)S
+4800 V
+10 B
+1260(-port_only)S
+4920 V
+10 R
+1510(Same)S
+1770(as)S
+10 I
+1891(-inet_only)S
+10 R
+2334(option.)S
+2683(If)S
+2787(set,)S
+2961(only)S
+3177(inet)S
+3365(sockets)S
+3697(will)S
+3891(be)S
+4023(used)S
+4244(for)S
+4398(communication)S
+5058(with)S
+5275(a)S
+5358(client)S
+5040 V
+1510(program.)S
+5208 V
+10 B
+1260(-printCon\256g)S
+10 I
+1824(name)S
+5328 V
+10 R
+1510(Speci\256es)S
+1916(the)S
+2083(printer)S
+2394(con\256guration)S
+2973(\256le)S
+3147(to)S
+3271(use.)S
+3505(By)S
+3668(default)S
+3991(this)S
+4182(will)S
+4384(be)S
+4524(/usr/local/lib/ximprint.cfg.)S
+5448 V
+1510(See)S
+1684(below)S
+1958(for)S
+2104(more)S
+2339(information)S
+2841(on)S
+2971(con\256guring)S
+3462(output)S
+3748(devices.)S
+5616 V
+10 B
+1260(-tile)S
+10 R
+1510(The)S
+1695(default)S
+2002(display)S
+2321(mode)S
+2573(is)S
+2670(to)S
+2778(view)S
+3002(one)S
+3177(frame)S
+3440(at)S
+3543(a)S
+3618(time.)S
+3852(In)S
+3966(tile)S
+4125(frames)S
+4427(mode,)S
+4705(2)S
+4786(or)S
+4900(4)S
+4981(frames)S
+5283(may)S
+5486(be)S
+5736 V
+1510(viewed)S
+1834(simultaneously)S
+2476(in)S
+2590(the)S
+2748(display)S
+3073(window.)S
+3486(All)S
+3650(the)S
+3808(usual)S
+4055(operations)S
+4507(\(zoom)S
+4798(and)S
+4977(pan,)S
+5181(colortable)S
+5856 V
+1510(enhancement,)S
+2091(cursor)S
+2370(readback,)S
+2784(etc.\))S
+3018(still)S
+3199(work)S
+3434(for)S
+3580(each)S
+3792(frame)S
+4054(even)S
+4272(when)S
+4518(in)S
+4626(tile)S
+4784(frames)S
+5085(mode.)S
+6024 V
+10 B
+1260(-unix)S
+10 I
+1513(name)S
+6144 V
+10 R
+1510(Speci\256es)S
+1909(the)S
+2069(unix)S
+2285(domain)S
+2623(socket)S
+2916(name)S
+3170(to)S
+3286(use.)S
+3512(A)S
+3622("%d")S
+3876(in)S
+3993(the)S
+4154(\256lename)S
+4537(will)S
+4732(be)S
+4865(replaced)S
+5241(with)S
+5458(the)S
+6264 V
+1510(user)S
+1706(id.)S
+6432 V
+10 B
+1260(-unix_only)S
+6552 V
+10 R
+1510(If)S
+1607(set,)S
+1774(only)S
+1983(unix)S
+2192(domain)S
+2523(sockets)S
+2848(will)S
+3035(be)S
+3160(used)S
+3374(for)S
+3521(communication)S
+4174(with)S
+4383(a)S
+4458(client)S
+4711(program,)S
+5105(inet)S
+5286(sockets)S
+6672 V
+1510(and)S
+1684(\256fos)S
+1892(will)S
+2078(be)S
+2202(disabled.)S
+6960 V
+9 B
+900(RESOURCES)S
+7080 V
+10 R
+1260(XImtool)S
+1629(is)S
+1726(implemented)S
+2278(as)S
+2391(a)S
+2465(client)S
+2717(program)S
+3085(which)S
+3359(is)S
+3456(responsible)S
+3941(for)S
+4087(loading)S
+4418(the)S
+4571(frame)S
+4834(bu)S
+4934 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4995(ers/colormaps,)S
+7200 V
+1260(communicating)S
+1917(with)S
+2130(clients,)S
+2451(etc,)S
+2627(and)S
+2806(a)S
+2885(user-modi\256able)S
+3547(GUI)S
+3759(\256le)S
+3922(written)S
+4240(as)S
+4358(a)S
+4437(Tcl)S
+4605(script)S
+4862(which)S
+5141(handles)S
+5480(all)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(2)S
+7920 V
+EP
+%%Page: 3 3
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(the)S
+1412(user)S
+1608(interface)S
+1986(details.)S
+2332(The)S
+10 I
+2517(client)S
+2770(resources)S
+10 R
+3189(described)S
+3602(below)S
+3877(will)S
+4064(be)S
+4189(common)S
+4570(to)S
+4679(any)S
+4854(user-de\256ned)S
+5378(GUI,)S
+1080 V
+1260(the)S
+10 I
+1426(gui)S
+1598(resources)S
+10 R
+2030(may)S
+2246(change)S
+2572(depending)S
+3032(on)S
+3176(how)S
+3392(extensively)S
+3890(the)S
+4055(GUI)S
+4275(has)S
+4451(been)S
+4682(modi\256ed)S
+5081(by)S
+5224(the)S
+5389(user.)S
+1200 V
+1260(Each)S
+1495(of)S
+1615(these)S
+1857(components)S
+2377(has)S
+2547(its)S
+2679(own)S
+2888(set)S
+3036(of)S
+3156(resources,)S
+3594(but)S
+3759(to)S
+3874(the)S
+4033(user)S
+4236(setting)S
+4540(them)S
+4777(is)S
+4881(the)S
+5040(same)S
+5282(as)S
+5402(with)S
+1320 V
+1260(any)S
+1434(other)S
+1669(application.)S
+1560 V
+10 I
+1260(Gterm)S
+10 R
+1548(widget)S
+1853(resources)S
+2262(\(i.e.)S
+2450(those)S
+2694(for)S
+2844(the)S
+3000(main)S
+3234(image)S
+3512(window)S
+3868(or)S
+3985(colorbar\))S
+4384(may)S
+4590(be)S
+4718(set)S
+4863(as)S
+4980(either)S
+5241(client)S
+5497(or)S
+1680 V
+1260(GUI)S
+1467(resources.)S
+1928(See)S
+2102(the)S
+10 I
+2254(xgterm\(1\))S
+10 R
+2677(man)S
+2879(page)S
+3097(for)S
+3243(a)S
+3317(complete)S
+3713(description)S
+4187(of)S
+10 I
+4300(Gterm)S
+10 R
+4585(widget)S
+4887(resources.)S
+1968 V
+9 B
+1080(CLIENT)S
+1452(RESOURCES)S
+2088 V
+10 R
+1260(The)S
+1445(client)S
+1697(resources)S
+2103(generally)S
+2504(de\256ne)S
+2778(the)S
+2930(initial)S
+3194(state)S
+3407(of)S
+3520(the)S
+3672(application)S
+4146(or)S
+4259(set)S
+4400(con\256guration)S
+4963(parameters.)S
+2256 V
+10 B
+1620(Resource)S
+2043(Name)S
+2870(Default)S
+3216(Value)S
+2364 V
+10 R
+1620(defCon\256g)S
+2870(1)S
+2472 V
+1620(defNFrames)S
+2870(0)S
+2580 V
+1620(tileBorderWidth)S
+2870(3)S
+2688 V
+1620(tileBorderColor)S
+2870(9)S
+2796 V
+1620(autoscale)S
+2870(false)S
+2904 V
+1620(antialias)S
+2870(false)S
+3012 V
+1620(antialiasType)S
+2870(boxcar)S
+3120 V
+1620(tileFrames)S
+2870(false)S
+3228 V
+1620(highlightFrames)S
+2870(true)S
+3336 V
+1620(gui)S
+2870(default)S
+3444 V
+1620(imtoolrc)S
+2870(/usr/local/lib/imtoolrc)S
+3552 V
+1620(invert)S
+2870(false)S
+3660 V
+1620(memModel)S
+2870(fast)S
+3768 V
+1620(basePixel:)S
+2870(64)S
+3876 V
+1620(maxColors:)S
+2870(216)S
+3984 V
+1620(cmapInitialize:)S
+2870(false)S
+4092 V
+1620(cmap1)S
+2870(none)S
+4200 V
+1620(cmap2)S
+2870(none)S
+4308 V
+1620(cmapDir1)S
+2870(none)S
+4416 V
+1620(cmapDir2)S
+2870(/usr/local/lib/imtoolcmap)S
+4524 V
+1620(input_\256fo)S
+2870(/dev/imt1i)S
+4632 V
+1620(output_\256fo)S
+2870(/dev/imt1o)S
+4740 V
+1620(unixaddr)S
+2870(/tmp/.IMT%d)S
+4848 V
+1620(port)S
+2870(5137)S
+5016 V
+1260(Description)S
+1756(of)S
+1869(ximtool)S
+2211(client)S
+2463(resources:)S
+5304 V
+10 B
+1260(defCon\256g)S
+10 R
+2160(Default)S
+2499(frame)S
+2772(bu)S
+2872 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2933(er)S
+3051(con\256guration)S
+3625(number)S
+3971(on)S
+4112(startup.)S
+4480(See)S
+4665(below)S
+4950(for)S
+5107(more)S
+5353(infor-)S
+5424 V
+2160(mation)S
+2468(on)S
+2598(frame)S
+2860(bu)S
+2960 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3021(ers.)S
+5592 V
+10 B
+1260(defNFrames)S
+10 R
+2160(Default)S
+2496(number)S
+2838(of)S
+2958(frames)S
+3266(on)S
+3403(startup.)S
+3767(Set)S
+3932(to)S
+4047(zero)S
+4255(to)S
+4371(use)S
+4542(the)S
+4702(value)S
+4956(from)S
+5188(the)S
+5348(frame)S
+5712 V
+2160(bu)S
+2260 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2321(er)S
+2428(con\256guration)S
+2991(\()S
+10 I
+3024(imtoolrc)S
+10 R
+3363(\))S
+3426(\256le.)S
+5880 V
+10 B
+1260(tileBorderWidth)S
+5988 V
+1260(tileBorderColor)S
+10 R
+2160(Used)S
+2401(by)S
+2537(the)S
+2695(tile)S
+2859(frames)S
+3166(option.)S
+3513(Speci\256es)S
+3910(how)S
+4118(far)S
+4264(apart)S
+4499(to)S
+4613(space)S
+4870(the)S
+5029(frames)S
+5337(in)S
+5452(tile)S
+6108 V
+2160(frames)S
+2484(mode.)S
+2814(Color)S
+3095("9")S
+3280(refers)S
+3559(to)S
+3690(the)S
+3865(Gterm)S
+4172(widget)S
+4496(resource)S
+4885(color9,)S
+5217(which)S
+5513(is)S
+6228 V
+2160(assigned)S
+2534(a)S
+2608(color)S
+2843(with)S
+3051(its)S
+3176(own)S
+3378(resource.)S
+6396 V
+10 B
+1260(autoscale)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(autoscale)S
+3331(option.)S
+6564 V
+10 B
+1260(antialias)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(antialias)S
+3293(option.)S
+6732 V
+10 B
+1260(antialiasType)S
+10 R
+2160(Type)S
+2395(of)S
+2508(antialiasing.)S
+6900 V
+10 B
+1260(tileFrames)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(tile)S
+3088(frames)S
+3389(option.)S
+7068 V
+10 B
+1260(highlightFrames)S
+10 R
+2160(Determines)S
+2650(whether)S
+3001(the)S
+3153(current)S
+3465(frame)S
+3727(is)S
+3824(highlighted)S
+4310(when)S
+4556(in)S
+4664(tile)S
+4822(frames)S
+5123(mode.)S
+7236 V
+10 B
+1260(gui)S
+10 R
+2160(The)S
+2349(GUI)S
+2560(to)S
+2672(be)S
+2800(executed.)S
+3243("default")S
+3636(refers)S
+3896(to)S
+4008(the)S
+4164(default,)S
+4500(builtin)S
+4796(ximtool)S
+5142(GUI.)S
+5408(You)S
+7716 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(3)S
+7920 V
+EP
+%%Page: 4 4
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+2160(can)S
+2341(replace)S
+2671(this)S
+2859(with)S
+3080(your)S
+3306(own)S
+3521(GUI)S
+3741(\256le)S
+3911(if)S
+4014(you)S
+4206(are)S
+4369(bold)S
+4589(enough,)S
+4950(and)S
+5136(completely)S
+1080 V
+2160(change)S
+2472(the)S
+2624(look)S
+2832(and)S
+3006(functionality)S
+3547(of)S
+3660(the)S
+3812(GUI)S
+4019(if)S
+4110(desired.)S
+1248 V
+10 B
+1260(imtoolrc)S
+10 R
+2160(Where)S
+2496(to)S
+2645(\256nd)S
+2872(the)S
+3065(imtoolrc)S
+3475(\256le.)S
+3730(This)S
+3980(de\256nes)S
+4335(the)S
+4529(recognized)S
+5038(frame)S
+5342(bu)S
+5442 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5503(er)S
+1368 V
+2160(con\256gurations.)S
+1536 V
+10 B
+1260(invert)S
+10 R
+2160(Start)S
+2388(Ximtool)S
+2761(using)S
+3017(an)S
+3150(inverted)S
+3516(colormap.)S
+3987(When)S
+4264(set,)S
+4440(a)S
+4524("normalized")S
+5095(display)S
+5424(will)S
+1656 V
+2160(always)S
+2467(be)S
+2591(the)S
+2743(inverse)S
+3061(of)S
+3174(the)S
+3326(selected)S
+3677(colormap.)S
+1824 V
+10 B
+1260(memModel)S
+10 R
+2160(Determines)S
+2656(how)S
+2864(ximtool)S
+3212(uses)S
+3420(memory)S
+3789(in)S
+3904(the)S
+4063(ximtool)S
+4412(client)S
+4671(and)S
+4852(the)S
+5011(X)S
+5120(server.)S
+5425(The)S
+1944 V
+2160(options)S
+2493(are)S
+2652("fast",)S
+2941("beNiceToServer",)S
+3739(and)S
+3920("small".)S
+4311(The)S
+4503(default)S
+4817(is)S
+4921(fast,)S
+5127(which)S
+5408(uses)S
+2064 V
+2160(server)S
+2457(pixmaps)S
+2851(to)S
+2984(make)S
+3255(frame)S
+3542(blink)S
+3803(fast.)S
+4057(This)S
+4290(is)S
+4412(recommended)S
+5032(unless)S
+5337(server)S
+2184 V
+2160(memory)S
+2525(is)S
+2624(very)S
+2833(limited.)S
+3204(Note)S
+3430(that)S
+3612(even)S
+3831(in)S
+3940(fast)S
+4115(mode,)S
+4393(the)S
+4546(server)S
+4820(pixmap)S
+5151(is)S
+5249(only)S
+5458(the)S
+2304 V
+2160(size)S
+2346(of)S
+2460(the)S
+2613(display)S
+2933(window,)S
+3311(so)S
+3431(memory)S
+3795(usage)S
+4054(is)S
+4153(reasonable)S
+4611(even)S
+4831(if)S
+4924(the)S
+5078(frame)S
+5342(bu)S
+5442 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5503(er)S
+2424 V
+2160(is)S
+2257(very)S
+2464(large.)S
+2532 V
+10 Y
+1260(*)S
+10 B
+1310(basePixel)S
+2640 V
+10 Y
+1260(*)S
+10 B
+1310(maxColors)S
+10 R
+2160(These)S
+2434(two)S
+2620(resources)S
+3032(determine)S
+3467(the)S
+3626(region)S
+3918(of)S
+4038(colormap)S
+4452(space)S
+4710(used)S
+4930(to)S
+5045(render)S
+5336(image)S
+2760 V
+2160(pixels.)S
+2928 V
+10 Y
+1260(*)S
+10 B
+1310(cmapInitialize)S
+10 R
+2160(Initialize)S
+2555(the)S
+2717(ximtool)S
+3069(colormap)S
+3486(at)S
+3598(startup.)S
+3965(This)S
+4183(is)S
+4290(sometimes)S
+4758(necessary)S
+5185(to)S
+5303(clear)S
+5536(a)S
+3048 V
+2160(previous)S
+2534(ximtool)S
+2876(colormap)S
+3283(allowing)S
+3663(a)S
+3737(new)S
+3933(basePixel)S
+4346(and)S
+4520(maxColors)S
+4989(to)S
+5097(take)S
+5293(e)S
+5337 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5398(ect.)S
+3216 V
+10 B
+1260(cmap1)S
+3324 V
+1260(cmap2)S
+10 R
+2160(User)S
+2389(colormap)S
+2807(\256les.)S
+3070(The)S
+3266(intent)S
+3535(here)S
+3748(is)S
+3857(to)S
+3977(allow)S
+4241(individual)S
+4689(colormaps)S
+5147(to)S
+5267(be)S
+5403(con-)S
+3444 V
+2160(veniently)S
+2562(speci\256ed)S
+2947(as)S
+3060(a)S
+3134(resource.)S
+3612 V
+10 B
+1260(cmapDir1)S
+3720 V
+1260(cmapDir2)S
+10 R
+2160(User)S
+2393(or)S
+2521(system)S
+2844(colormap)S
+3266(directories.)S
+3788(By)S
+3951(default)S
+4274(cmapDir2)S
+4719(points)S
+5010(to)S
+5134(the)S
+5302(system)S
+3840 V
+2160(directory)S
+2564(/usr/local/lib/imtoolcmap,)S
+3644(allowing)S
+4037(a)S
+4124(set)S
+4278(of)S
+4404(site)S
+4586(default)S
+4906(colormaps)S
+5365(to)S
+5486(be)S
+3960 V
+2160(de\256ned)S
+2484(here.)S
+2740(This)S
+2948(leaves)S
+3227(cmapDir1)S
+3656(available)S
+4046(to)S
+4154(a)S
+4228(user)S
+4424(colormap)S
+4831(directory.)S
+4128 V
+10 B
+1260(input_\256fo)S
+4236 V
+1260(output_\256fo)S
+10 R
+2160(The)S
+2354(input)S
+2600(and)S
+2784(output)S
+3080(\256fos)S
+3298(for)S
+3454(\256fo)S
+3633(i/o.)S
+3834("Input")S
+4167(and)S
+4351("output")S
+4729(are)S
+4890(from)S
+5124(the)S
+5286(client's)S
+4356 V
+2160(point)S
+2396(of)S
+2509(view.)S
+2788(Note)S
+3012(that)S
+3192(only)S
+3400(one)S
+3574(display)S
+3893(server)S
+4166(can)S
+4334(use)S
+4497(a)S
+4571(\256fo-pair)S
+4928(at)S
+5030(one)S
+5204(time.)S
+4524 V
+10 B
+1260(unixaddr)S
+10 R
+2160(Template)S
+2569(address)S
+2900(for)S
+3048(unix)S
+3258(domain)S
+3591(socket.)S
+3934(The)S
+4122(user)S
+4321(must)S
+4549(have)S
+4770(write)S
+5008(permission)S
+5480(on)S
+4644 V
+2160(this)S
+2338(directory,)S
+2756(or)S
+2872(the)S
+3027(\256le)S
+3188(must)S
+3416(already)S
+3742(exist.)S
+4019(%d,)S
+4210(if)S
+4304(given,)S
+4584(is)S
+4684(replaced)S
+5054(by)S
+5187(the)S
+5342(user's)S
+4764 V
+2160(UID.)S
+4932 V
+10 B
+1260(port)S
+10 R
+2160(TCP/IP)S
+2500(port)S
+2700(for)S
+2855(the)S
+3017(server.)S
+3355(Note)S
+3589(that)S
+3779(only)S
+3997(one)S
+4181(server)S
+4464(can)S
+4642(listen)S
+4899(on)S
+5039(a)S
+5123(port)S
+5324(at)S
+5436(one)S
+5052 V
+2160(time,)S
+2402(so)S
+2530(if)S
+2630(multiple)S
+3003(ximtool)S
+3354(servers)S
+3675(are)S
+3835(desired)S
+4161(on)S
+4299(the)S
+4459(same)S
+4702(machine,)S
+5103(they)S
+5313(should)S
+5172 V
+2160(be)S
+2284(given)S
+2536(di)S
+2614 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2675(erent)S
+2904(ports.)S
+5460 V
+9 B
+1080(GUI)S
+1277(RESOURCES)S
+5580 V
+10 R
+1260(In)S
+1394(principle)S
+1800(ximtool)S
+2163(can)S
+2352(have)S
+2592(any)S
+2788(number)S
+3145(of)S
+3280(di)S
+3358 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3419(erent)S
+3670(GUIs,)S
+3963(each)S
+4197(of)S
+4332(which)S
+4628(de\256nes)S
+4963(its)S
+5110(own)S
+5334(set)S
+5497(of)S
+5700 V
+1260(resources.)S
+1733(GUIs)S
+1991(typically)S
+2383(de\256ne)S
+2669(a)S
+2755(great)S
+2996(many)S
+3260(resources,)S
+3703(but)S
+3873(most)S
+4110(of)S
+4234(these)S
+4480(are)S
+4642(not)S
+4811(really)S
+5079(intended)S
+5464(for)S
+5820 V
+1260(modi\256cation)S
+1796(by)S
+1926(the)S
+2078(user)S
+2274(\(although)S
+2687(one)S
+2861(can)S
+3029(modify)S
+3348(them)S
+3578(if)S
+3669(desired\).)S
+6060 V
+1260(The)S
+1455(following)S
+1884(are)S
+2045(some)S
+2296(of)S
+2419(the)S
+2581(more)S
+2826(useful)S
+3110(resources)S
+3526(used)S
+3749(by)S
+3889(the)S
+4051(default)S
+4369(ximtool)S
+4722(GUI.)S
+4995(The)S
+10 I
+5191(imagewin)S
+6180 V
+10 R
+1260(resources)S
+1666(are)S
+1817(Gterm)S
+2102(widget)S
+2404(resources.)S
+6348 V
+10 B
+1650(Resource)S
+2073(Name)S
+3370(Default)S
+3716(Value)S
+6456 V
+10 R
+1650(.geometry:)S
+6564 V
+10 Y
+1650(*)S
+10 R
+1700(controlShell.geometry:)S
+6672 V
+10 Y
+1650(*)S
+10 R
+1700(info.geometry:)S
+3370(420x240)S
+6780 V
+10 Y
+1650(*)S
+10 R
+1700(load_panel.geometry:)S
+6888 V
+10 Y
+1650(*)S
+10 R
+1700(save_panel.geometry:)S
+6996 V
+10 Y
+1650(*)S
+10 R
+1700(print_panel.geometry:)S
+7104 V
+10 Y
+1650(*)S
+10 R
+1700(help_panel.geometry:)S
+7212 V
+10 Y
+1650(*)S
+10 R
+1700(cmapName:)S
+3370(image)S
+7692 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(4)S
+7920 V
+EP
+%%Page: 5 5
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 Y
+1650(*)S
+10 R
+1700(basePixel:)S
+3370(64)S
+1068 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.warpCursor:)S
+3370(true)S
+1176 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.raiseWindow:)S
+3370(true)S
+1284 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.deiconifyWindow:)S
+3370(true)S
+1392 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.ginmodeCursor:)S
+3370(circle)S
+1500 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.ginmodeBlinkInterval:)S
+3370(500)S
+1608 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color0:)S
+3370(black)S
+1716 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color1:)S
+3370(white)S
+1824 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color8:)S
+3370(#7c8498)S
+1932 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color9:)S
+3370(steelblue)S
+2040 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.width:)S
+3370(512)S
+2148 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.height:)S
+3370(512)S
+2256 V
+10 Y
+1650(*)S
+10 R
+1700(autoscale:)S
+3370(True)S
+2364 V
+10 Y
+1650(*)S
+10 R
+1700(zoomfactors:)S
+3370(1)S
+3450(2)S
+3530(4)S
+3610(8)S
+2472 V
+10 Y
+1650(*)S
+10 R
+1700(displayCoords:)S
+3370(True)S
+2580 V
+10 Y
+1650(*)S
+10 R
+1700(displayPanner:)S
+3370(True)S
+2688 V
+10 Y
+1650(*)S
+10 R
+1700(displayMagni\256er:)S
+3370(False)S
+2796 V
+10 Y
+1650(*)S
+10 R
+1700(blinkRate:)S
+3370(1.0)S
+2904 V
+10 Y
+1650(*)S
+10 R
+1700(pannerArea:)S
+3370(150)S
+10 Y
+3520(*)S
+10 R
+3570(150)S
+3012 V
+10 Y
+1650(*)S
+10 R
+1700(pannerGeom:)S
+3370(-5+5)S
+3120 V
+10 Y
+1650(*)S
+10 R
+1700(magni\256erArea:)S
+3370(100)S
+10 Y
+3520(*)S
+10 R
+3570(100)S
+3228 V
+10 Y
+1650(*)S
+10 R
+1700(magni\256erGeom:)S
+3370(+5+5)S
+3336 V
+10 Y
+1650(*)S
+10 R
+1700(wcsboxGeom:)S
+3370(-5-5)S
+3444 V
+10 Y
+1650(*)S
+10 R
+1700(maxContrast:)S
+3370(5.0)S
+3552 V
+10 Y
+1650(*)S
+10 R
+1700(warnings:)S
+3370(True)S
+3720 V
+1260(Description)S
+1756(of)S
+1869(selected)S
+2220(resources:)S
+4008 V
+10 B
+1260(.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(main)S
+3132(image)S
+3406(window.)S
+4176 V
+10 Y
+1260(*)S
+10 B
+1310(controlShell.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(control)S
+3215(panel)S
+3461(shell.)S
+4344 V
+10 Y
+1260(*)S
+10 B
+1310(info.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(info)S
+3093(box.)S
+4512 V
+10 Y
+1260(*)S
+10 B
+1310(load_panel.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(\256le)S
+3060(load)S
+3262(panel.)S
+4680 V
+10 Y
+1260(*)S
+10 B
+1310(save_panel.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(save)S
+3109(control)S
+3422(panel.)S
+4848 V
+10 Y
+1260(*)S
+10 B
+1310(print_panel.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(print)S
+3121(control)S
+3434(panel.)S
+5016 V
+10 Y
+1260(*)S
+10 B
+1310(help_panel.geometry)S
+10 R
+2360(Geometry)S
+2789(of)S
+2902(help)S
+3104(box.)S
+5184 V
+10 Y
+1260(*)S
+10 B
+1310(cmapName)S
+10 R
+2360(Name)S
+2638(used)S
+2861(for)S
+3018(private)S
+3336(colormap.)S
+3809(The)S
+4005(default)S
+4323(for)S
+4480(all)S
+4621(IRAF)S
+4890(imaging)S
+5259(applica-)S
+5304 V
+2360(tions)S
+2601(is)S
+2714("image".)S
+3141(Gterm)S
+3442(widget)S
+3760(based)S
+4033(imaging)S
+4407(applications)S
+4936(which)S
+5225(have)S
+5458(the)S
+5424 V
+2360(same)S
+2597(value)S
+2845(of)S
+2961(cmapName)S
+3448(will)S
+3637(share)S
+3880(the)S
+4035(same)S
+4273(colormap,)S
+4708(minimizing)S
+5203(colormap)S
+5544 V
+2360(\257ashing)S
+2707(and)S
+2881(allowing)S
+3261(multiple)S
+3625(applications)S
+4138(to)S
+4246(be)S
+4370(run)S
+4533(at)S
+4635(the)S
+4787(same)S
+5022(time.)S
+5712 V
+10 Y
+1260(*)S
+10 B
+1310(basePixel)S
+10 R
+2360(The)S
+2545(base)S
+2752(colormap)S
+3159(cell)S
+3333(used)S
+3546(by)S
+3676(the)S
+3828(display)S
+4147(colormap.)S
+5880 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.warpCursor)S
+10 R
+2360(Warp)S
+2611(pointer)S
+2924(into)S
+3110(image)S
+3384(window)S
+3736(when)S
+3982(initiating)S
+4374(a)S
+4448(cursor)S
+4727(read.)S
+6048 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.raiseWindow)S
+10 R
+2360(Raise)S
+2612(image)S
+2886(window)S
+3238(when)S
+3484(initiating)S
+3876(a)S
+3950(cursor)S
+4229(read.)S
+6216 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.deiconifyWindow)S
+6336 V
+10 R
+2360(Deiconify)S
+2789(image)S
+3063(window)S
+3415(if)S
+3506(necessary)S
+3923(when)S
+4169(initiating)S
+4561(a)S
+4635(cursor)S
+4914(read.)S
+6504 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.ginmodeCursor)S
+6624 V
+10 R
+2360(Type)S
+2596(of)S
+2710(cursor)S
+2990(when)S
+3237(a)S
+3312(cursor)S
+3592(read)S
+3795(is)S
+3894(in)S
+4004(progress.)S
+4429(The)S
+4616(default)S
+4925(is)S
+5024(a)S
+5100(circle.)S
+5408(Any)S
+6744 V
+2360(selection)S
+2800(from)S
+3079(the)S
+3285(X)S
+3441(cursor)S
+3774(font)S
+4019(can)S
+4241(be)S
+4419(used.)S
+4741(A)S
+4897(special)S
+5258(case)S
+5513(is)S
+6864 V
+2360("full_crosshair")S
+3021(which)S
+3295(is)S
+3392(the)S
+3544(full)S
+3713(crosshair)S
+4103(cursor)S
+4382(of)S
+4495(the)S
+4647(Gterm)S
+4932(widget.)S
+7032 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.ginmodeBlinkInterval)S
+7152 V
+10 R
+2360(Determines)S
+2857(whether)S
+3215(the)S
+3374(cursor)S
+3660(blinks)S
+3942(when)S
+4195(a)S
+4277(cursor)S
+4564(read)S
+4773(is)S
+4878(in)S
+4994(progress.)S
+5425(The)S
+7272 V
+2360(value)S
+2606(is)S
+2703(given)S
+2955(in)S
+3063(milliseconds.)S
+7752 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(5)S
+7920 V
+EP
+%%Page: 6 6
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color0)S
+10 R
+2360(Background)S
+2878(color.)S
+1128 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color1)S
+10 R
+2360(Foreground)S
+2856(color.)S
+1296 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color8)S
+10 R
+2360(Color)S
+2618(assigned)S
+2992(the)S
+3144(panner)S
+3445(window.)S
+1464 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color9)S
+10 R
+2360(Color)S
+2618(used)S
+2831(for)S
+2977(the)S
+3129(tileFrames)S
+3581(highlight.)S
+1632 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.width)S
+10 R
+2360(Width)S
+2640(of)S
+2753(the)S
+2905(main)S
+3135(image)S
+3409(window.)S
+1800 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.height)S
+10 R
+2360(Height)S
+2662(of)S
+2775(the)S
+2927(main)S
+3157(image)S
+3431(window.)S
+1968 V
+10 Y
+1260(*)S
+10 B
+1310(pannerArea)S
+10 R
+2360(Area)S
+2583(in)S
+2691(pixels)S
+2960(of)S
+3073(the)S
+3225(panner)S
+3526(window.)S
+2136 V
+10 Y
+1260(*)S
+10 B
+1310(pannerGeom)S
+10 R
+2360(Where)S
+2655(to)S
+2763(place)S
+3003(the)S
+3155(panner)S
+3456(window.)S
+2304 V
+10 Y
+1260(*)S
+10 B
+1310(magni\256erArea)S
+10 R
+2360(Area)S
+2583(in)S
+2691(pixels)S
+2960(of)S
+3073(the)S
+3225(magni\256er)S
+3638(window.)S
+2472 V
+10 Y
+1260(*)S
+10 B
+1310(magni\256erGeom)S
+10 R
+2360(Where)S
+2655(to)S
+2763(place)S
+3003(the)S
+3155(magni\256er)S
+3568(window.)S
+2640 V
+10 Y
+1260(*)S
+10 B
+1310(wcsboxGeom)S
+10 R
+2360(Where)S
+2655(to)S
+2763(place)S
+3003(the)S
+3155(coords)S
+3451(box.)S
+2808 V
+10 Y
+1260(*)S
+10 B
+1310(maxContrast)S
+10 R
+2360(Maximum)S
+2807(contrast)S
+3153(value.)S
+3216 V
+9 B
+900(DESCRIPTION)S
+3336 V
+10 R
+1260(As)S
+1401(a)S
+1475(display)S
+1794(server,)S
+2092(XImtool)S
+2461(is)S
+2558(started)S
+2854(as)S
+2967(a)S
+3041(separate)S
+3397(process)S
+3726(from)S
+3950(client)S
+4202(software)S
+4575(such)S
+4788(as)S
+4901(IRAF.)S
+5185(Once)S
+5426(it)S
+5513(is)S
+3456 V
+1260(running)S
+1606(it)S
+1697(will)S
+1888(accept)S
+2177(client)S
+2434(connections)S
+2946(simultaneously)S
+3587(on)S
+3721(\256fo)S
+3894(pipes,)S
+4164(unix)S
+4376(domain)S
+4710(sockets,)S
+5063(or)S
+5180(inet)S
+5364(sock-)S
+3576 V
+1260(ets.)S
+1432(A)S
+1540(display)S
+1865(client)S
+2123(like)S
+2309(the)S
+2467(IRAF)S
+10 I
+2731(DISPLAY)S
+10 R
+3156(task)S
+3353(makes)S
+3644(a)S
+3724(connection)S
+4198(and)S
+4378(sends)S
+4637(the)S
+4796(image)S
+5077(across)S
+5363(using)S
+3696 V
+1260(an)S
+1385(IIS)S
+1538(protocol.)S
+1957(Once)S
+2198(the)S
+2351(image)S
+2625(is)S
+2722(loaded)S
+3018(in)S
+3126(the)S
+3278(display)S
+3597(bu)S
+3697 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3758(er)S
+3865(it)S
+3951(may)S
+4153(be)S
+4277(enhanced,)S
+4708(saved)S
+4965(to)S
+5073(a)S
+5147(disk)S
+5344(\256le)S
+5502(in)S
+3816 V
+1260(a)S
+1340(number)S
+1681(of)S
+1800(di)S
+1878 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1939(erent)S
+2174(formats,)S
+2540(or)S
+2659(printed)S
+2978(as)S
+3097(Encapsulated)S
+3665(Postscript)S
+4097(to)S
+4212(a)S
+4293(printer)S
+4596(or)S
+4716(disk)S
+4920(\256le.)S
+5140(Up)S
+5299(to)S
+5414(four)S
+3936 V
+1260(frame)S
+1531(bu)S
+1631 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1692(ers)S
+1847(are)S
+2007(allowed,)S
+2387(these)S
+2631(may)S
+2842(be)S
+2975(displayed)S
+3397(simultaneously)S
+4042(in)S
+4159(a)S
+4242(tiled)S
+4459(mode,)S
+4745(or)S
+4866(blinked)S
+5204(frame-to-)S
+4056 V
+1260(frame.)S
+1582(Each)S
+1816(frame)S
+2083(may)S
+2290(have)S
+2513(its)S
+2643(own)S
+2850(colormap)S
+3262(or)S
+3380(brightness/contrast)S
+4170(enhancement.)S
+4787(Pan/Zoom)S
+5240(and)S
+5420(cur-)S
+4176 V
+1260(sor)S
+1412(readout)S
+1741(are)S
+1892(permitted)S
+2305(using)S
+10 I
+2552(markers)S
+10 R
+2879(,)S
+2934(on-line)S
+3247(help)S
+3449(is)S
+3546(also)S
+3737(available.)S
+4416 V
+1260(When)S
+1530(run)S
+1695(in)S
+1805(standalone)S
+2264(mode,)S
+2543(images)S
+2858(\(currently)S
+3283(IRAF)S
+3543(OIF,)S
+3761(GIF,)S
+3979(Sun)S
+4167(Raster\256les)S
+4621(or)S
+4736(simple)S
+5036(FITS)S
+5275(formats)S
+4536 V
+1260(are)S
+1428(permitted\))S
+1891(may)S
+2110(be)S
+2251(loaded)S
+2564(on)S
+2711(the)S
+2880(command)S
+3321(line)S
+3518(or)S
+3648(by)S
+3795(using)S
+4059(the)S
+4228(Load)S
+4480(Panel.)S
+4774(This)S
+4999(allows)S
+5306(you)S
+5502(to)S
+4656 V
+1260(browse)S
+1578(images)S
+1891(and)S
+2065(perform)S
+2416(the)S
+2568(same)S
+2803(manipulations)S
+3400(as)S
+3513(if)S
+3604(they)S
+3806(had)S
+3980(been)S
+4198(displayed)S
+4611(by)S
+4741(a)S
+4815(client.)S
+4944 V
+9 B
+1080(MOUSE)S
+1437(OPERATIONS)S
+5064 V
+10 R
+1260(Clicking)S
+1648(and)S
+1835(dragging)S
+2233(MB1)S
+2482(\(mouse)S
+2819(button)S
+3118(1\))S
+3244(in)S
+3365(the)S
+3530(main)S
+3773(image)S
+4060(window)S
+4425(creates)S
+4745(a)S
+4833(rectangular)S
+5325(region)S
+5184 V
+1260(marker,)S
+1604(used)S
+1824(to)S
+1939(select)S
+2203(a)S
+2284(region)S
+2576(of)S
+2696(the)S
+2855(image.)S
+3161(If)S
+3264(you)S
+3451(do)S
+3588(this)S
+3770(accidentally)S
+4289(and)S
+4470(don't)S
+4718(want)S
+4949(the)S
+5108(marker,)S
+5452(put)S
+5304 V
+1260(the)S
+1419(pointer)S
+1739(in)S
+1854(the)S
+2013(marker)S
+2332(and)S
+2513(type)S
+2722(DELETE)S
+3137(or)S
+3258(BACKSPACE)S
+3886(to)S
+4002(delete)S
+4278(the)S
+4438(marker.)S
+4783(With)S
+5021(the)S
+5181(pointer)S
+5502(in)S
+5424 V
+1260(the)S
+1417(marker,)S
+1759(MB3)S
+2000(will)S
+2191(call)S
+2370(up)S
+2505(a)S
+2584(marker)S
+2901(menu)S
+3158(listing)S
+3444(some)S
+3690(things)S
+3970(you)S
+4155(can)S
+4328(do)S
+4463(with)S
+4676(the)S
+4833(marker,)S
+5174(like)S
+5358(zoom)S
+5544 V
+1260(the)S
+1420(outlined)S
+1786(region.)S
+2104(MB1)S
+2348(can)S
+2524(be)S
+2656(used)S
+2877(to)S
+2993(drag)S
+3208(or)S
+3329(resize)S
+3599(the)S
+3759(marker.)S
+4104(See)S
+4287(below)S
+4570(for)S
+4725(more)S
+4969(information)S
+5480(on)S
+5664 V
+1260(markers.)S
+5904 V
+1260(Clicking)S
+1642(on)S
+1779(MB2)S
+2022(in)S
+2137(the)S
+2296(main)S
+2533(image)S
+2814(window)S
+3173(pans)S
+3394(\(one)S
+3609(click\))S
+3874(or)S
+3995(zooms)S
+4294(\(two)S
+4515(clicks\))S
+4819(the)S
+4979(image.)S
+5286(Further)S
+6024 V
+1260(clicks)S
+1529(cycle)S
+1775(through)S
+2122(the)S
+2280(builtin)S
+2578(zoom)S
+2836(factors.)S
+3198(Moving)S
+3551(the)S
+3709(pointer)S
+4028(to)S
+4142(a)S
+4222(new)S
+4424(location)S
+4782(and)S
+4962(clicking)S
+5319(moves)S
+6144 V
+1260(the)S
+1425(feature)S
+1744(under)S
+2014(the)S
+2179(pointer)S
+2505(to)S
+2627(the)S
+2793(center)S
+3080(of)S
+3207(the)S
+3373(display)S
+3706(window.)S
+4127(Holding)S
+4499(down)S
+4765(the)S
+4931(Shift)S
+5170(key)S
+5358(while)S
+6264 V
+1260(clicking)S
+1620(MB2)S
+1864(will)S
+2058(cause)S
+2317(a)S
+2399(full-screen)S
+2863(crosshair)S
+3261(cursor)S
+3547(to)S
+3662(appear)S
+3964(until)S
+4185(the)S
+4344(button)S
+4637(is)S
+4741(released,)S
+5129(this)S
+5311(can)S
+5486(be)S
+6384 V
+1260(useful)S
+1534(for)S
+1680(\256ne)S
+1860(positioning)S
+2341(of)S
+2454(the)S
+2606(cursor.)S
+6624 V
+1260(MB3)S
+1507(is)S
+1615(used)S
+1839(to)S
+1958(adjust)S
+2238(the)S
+2401(contrast)S
+2758(and)S
+2943(brightness)S
+3395(of)S
+3519(the)S
+3682(displayed)S
+4106(image.)S
+4446(The)S
+4643(position)S
+5008(of)S
+5133(the)S
+5297(pointer)S
+6744 V
+1260(within)S
+1560(the)S
+1726(display)S
+2059(window)S
+2425(determines)S
+2906(the)S
+3071(contrast)S
+3430(and)S
+3617(brightness)S
+4071(values.)S
+4394(Click)S
+4654(once)S
+4885(to)S
+5006(set)S
+5160(the)S
+5325(values)S
+6864 V
+1260(corresponding)S
+1861(to)S
+1969(the)S
+2121(pointer)S
+2434(location,)S
+2811(or)S
+2924(click)S
+3148(and)S
+3322(drag)S
+3529(to)S
+3637(continuously)S
+4184(adjust)S
+4453(the)S
+4605(display.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(6)S
+7920 V
+EP
+%%Page: 7 7
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+1080(KEYSTROKE)S
+1677(ACCELERATORS)S
+1080 V
+10 R
+1260(The)S
+1445(following)S
+1864(keystrokes)S
+2321(are)S
+2472(currently)S
+2862(de\256ned)S
+3186(in)S
+3294(the)S
+3446(GUI:)S
+1368 V
+10 B
+1260(Ctrl-b)S
+10 R
+1860(Backward)S
+2294(frame)S
+1476 V
+10 B
+1260(Ctrl-c)S
+10 R
+1860(Center)S
+2156(frame?)S
+1584 V
+10 B
+1260(Ctrl-f)S
+10 R
+1860(Forward)S
+2228(frame)S
+1692 V
+10 B
+1260(Ctrl-i)S
+10 R
+1860(Invert?)S
+1800 V
+10 B
+1260(Ctrl-m)S
+10 R
+1860(Match)S
+2145(LUTs)S
+1908 V
+10 B
+1260(Ctrl-n)S
+10 R
+1860(Normalize)S
+2016 V
+10 B
+1260(Ctrl-r)S
+10 R
+1860(Register)S
+2124 V
+10 B
+1260(Ctrl-t)S
+10 R
+1860(Tile)S
+2051(frames)S
+2352(toggle)S
+2232 V
+10 B
+1260(Ctrl-u)S
+10 R
+1860(Unzoom)S
+2234(\(zoom=1\))S
+2340 V
+10 B
+1260(Ctrl-x)S
+10 R
+1860(Flip)S
+2052(X)S
+2448 V
+10 B
+1260(Ctrl-y)S
+10 R
+1860(Flip)S
+2052(Y)S
+2736 V
+10 B
+1260(Alt-b)S
+10 R
+1860(Blink)S
+2113(frames)S
+2414(\(toggle\))S
+2844 V
+10 B
+1260(Alt-c)S
+10 R
+1860(Control)S
+2196(panel)S
+2442(\(toggle\))S
+2952 V
+10 B
+1260(Alt-h)S
+10 R
+1860(Help)S
+2084(popup)S
+2364(\(toggle\))S
+3060 V
+10 B
+1260(Alt-i)S
+10 R
+1860(Info)S
+2056(box)S
+2236(popup)S
+2516(\(toggle\))S
+3168 V
+10 B
+1260(Alt-l)S
+10 R
+1860(Load)S
+2095(\256le)S
+2253(popup)S
+2533(\(toggle\))S
+3276 V
+10 B
+1260(Alt-p)S
+10 R
+1860(Print)S
+2085(popup)S
+2365(\(toggle\))S
+3384 V
+10 B
+1260(Alt-s)S
+10 R
+1860(Save)S
+2084(popup)S
+2364(\(toggle\))S
+3492 V
+10 B
+1260(Alt-t)S
+10 R
+1860(TclShell)S
+2229(popup)S
+2509(\(toggle\))S
+3780 V
+10 B
+1260(Ctrl-Alt-q)S
+10 R
+1860(Quit)S
+3888 V
+10 B
+1260(Ctrl-Alt-f)S
+10 R
+1860(Fitframe)S
+4176 V
+10 B
+1260(Ctrl-=)S
+10 R
+1860(Print)S
+2085(using)S
+2332(current)S
+2644(setup)S
+4284 V
+10 B
+1260(Ctrl-<)S
+10 R
+1860(Decrease)S
+2254(blink)S
+2490(rate)S
+2669(\(blink)S
+2938(faster\))S
+4392 V
+10 B
+1260(Ctrl->)S
+10 R
+1860(Increase)S
+2221(blink)S
+2457(rate)S
+2636(\(blink)S
+2905(slower\))S
+4500 V
+10 B
+1260(Ctrl-+)S
+10 R
+1860(Zoom)S
+2129(in)S
+4608 V
+10 B
+1260(Ctrl--)S
+10 R
+1860(Zoom)S
+2129(out)S
+4896 V
+10 B
+1260(Ctrl-[hjkl])S
+1769(or)S
+1923(Ctrl-[arrow_key])S
+5016 V
+10 R
+1860(Move)S
+2123(cursor)S
+2402(one)S
+2576(pixel)S
+2806(in)S
+2914(each)S
+3126(direction)S
+5124 V
+10 B
+1260(Ctrl-Shift-[hjkl])S
+2008(or)S
+2162(Ctrl-Shift-[arrow_key])S
+5244 V
+10 R
+1860(Move)S
+2123(cursor)S
+2402(ten)S
+2554(pixels)S
+2823(in)S
+2931(each)S
+3143(direction)S
+5352 V
+10 B
+1260(Alt-1)S
+1506(thru)S
+1725(Alt-4)S
+5472 V
+10 R
+1860(Set)S
+2018(frame)S
+2280(displayed)S
+5580 V
+10 B
+1260(Ctrl-1)S
+1550(thru)S
+1769(Ctrl-9)S
+5700 V
+10 R
+1860(Set)S
+2018(integer)S
+2325(zoom)S
+2577(factor)S
+5988 V
+10 B
+1260(NOTE:)S
+10 R
+1612(These)S
+1885(keystrokes)S
+2347(only)S
+2560(work)S
+2800(with)S
+3013(the)S
+3170(cursor)S
+3454(in)S
+3567(the)S
+3724(main)S
+3959(image)S
+4239(window,)S
+4622(not)S
+4786(on)S
+4922(the)S
+5080(subwindows)S
+6108 V
+1260(or)S
+1378(in)S
+1491(markers)S
+1847(since)S
+2087(they)S
+2294(are)S
+2450(implemented)S
+3007(as)S
+10 I
+3125(imagewin)S
+10 R
+3549(translations.)S
+4099(If)S
+4199(a)S
+4277(command)S
+4705(does)S
+4922(not)S
+5084(work,)S
+5348(check)S
+6228 V
+1260(the)S
+1412(cursor)S
+1691(location.)S
+6516 V
+9 B
+900(CLIENT)S
+1272(CONNECTIONS)S
+6636 V
+10 R
+1260(XImtool)S
+1629(allows)S
+1920(clients)S
+2211(to)S
+2319(connect)S
+2659(in)S
+2767(any)S
+2941(of)S
+3054(the)S
+3206(following)S
+3625(ways:)S
+6804 V
+10 B
+1260(\256fo)S
+1429(pipes)S
+6924 V
+10 R
+1510(The)S
+1706(traditional)S
+2158(approach.)S
+2589(The)S
+2785(default)S
+3103(global)S
+3394(/dev/imt1[io])S
+3963(pipes)S
+4215(may)S
+4428(be)S
+4564(used,)S
+4814(or)S
+4939(a)S
+5025(private)S
+5344(set)S
+5497(of)S
+7044 V
+1510(\256fos)S
+1728(can)S
+1906(be)S
+2040(speci\256ed)S
+2435(using)S
+2692(the)S
+10 I
+2854(-\256fo)S
+10 R
+3055(command)S
+3489(line)S
+3678(argument)S
+4094(or)S
+10 Y
+4216(*)S
+10 I
+4266(\256fo)S
+10 R
+4433(resource.)S
+4864(Values)S
+5180(should)S
+5486(be)S
+7164 V
+1510(speci\256ed)S
+1895(as)S
+2008(the)S
+2160(root)S
+2351(pathname)S
+2769(to)S
+2877(a)S
+2951(pair)S
+3136(of)S
+3250(\256fo)S
+3420(pipes)S
+3662(whose)S
+3948(last)S
+4118(character)S
+4513(is)S
+4611('i')S
+4736(or)S
+4850('o',)S
+5052(these)S
+5288(charac-)S
+7284 V
+1510(ters)S
+1687(will)S
+1876(be)S
+2003(added)S
+2274(automatically)S
+2851(when)S
+3100(opening)S
+3455(the)S
+3610(pipes.)S
+3909(For)S
+4081(example,)S
+4477(to)S
+4587(use)S
+4752(the)S
+4906(default)S
+5215(pipes)S
+5458(the)S
+7764 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(7)S
+7920 V
+EP
+%%Page: 8 8
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1510(path)S
+1712(would)S
+1992(be)S
+2116(speci\256ed)S
+2501(as)S
+2614(simply)S
+2917("/dev/imt1".)S
+3438(A)S
+3540(value)S
+3786(of)S
+3899("none")S
+4205(disables)S
+4557(this)S
+4732(connection.)S
+1128 V
+10 B
+1260(tcp/ip)S
+1535(sockets)S
+1248 V
+10 R
+1510(Clients)S
+1836(connect)S
+2188(via)S
+2352(a)S
+2438(tcp/ip)S
+2708(socket.)S
+3030(The)S
+3227(default)S
+3546(port)S
+3749(is)S
+10 I
+3858(5137)S
+10 R
+4058(,)S
+4125(or)S
+4250(a)S
+4337(custom)S
+4669(port)S
+4873(may)S
+5088(be)S
+5225(speci\256ed)S
+1368 V
+1510(using)S
+1758(the)S
+10 I
+1911(-port)S
+10 R
+2142(command)S
+2567(line)S
+2747(switch)S
+3038(or)S
+3151(a)S
+10 Y
+3225(*)S
+10 I
+3275(port)S
+10 R
+3472(resource.)S
+3864(This)S
+4072(permits)S
+4402(connecting)S
+4870(to)S
+4978(the)S
+5130(server)S
+5403(over)S
+1488 V
+1510(a)S
+1584(remote)S
+1891(network)S
+2248(connection)S
+2716(anywhere)S
+3133(on)S
+3263(the)S
+3415(Internet.)S
+3780(A)S
+3883(port)S
+4075(number)S
+4411(of)S
+4525(0)S
+4606(\(zero\))S
+4874(disables)S
+5227(this)S
+5403(con-)S
+1608 V
+1510(nection.)S
+1776 V
+10 B
+1260(unix)S
+1480(domain)S
+1833(sockets)S
+1896 V
+10 R
+1510(Like)S
+1733(a)S
+1817(tcp/ip)S
+2085(socket,)S
+2405(but)S
+2573(limited)S
+2898(to)S
+3017(a)S
+3102(single)S
+3382(host)S
+3590(system.)S
+3934(Usually)S
+4286(faster)S
+4548(than)S
+4761(a)S
+4846(tcp/ip)S
+5115(socket,)S
+5436(and)S
+2016 V
+1510(comparable)S
+2008(to)S
+2119(a)S
+2196(\256fo.)S
+2393(By)S
+2543(default)S
+2853(each)S
+3068(user)S
+3267(gets)S
+3460(their)S
+3675(own)S
+3879(unix)S
+4089(domain)S
+4421(socket,)S
+4733(so)S
+4854(this)S
+5031(option)S
+5319(allows)S
+2136 V
+1510(multiple)S
+1882(users)S
+2125(to)S
+2241(run)S
+2413(ximtools)S
+2803(on)S
+2942(the)S
+3103(same)S
+3347(host)S
+3553(without)S
+3898(having)S
+4209(to)S
+4326(customize)S
+4770(things.)S
+5109(The)S
+5303(default)S
+2256 V
+1510(value)S
+1761(is)S
+1863("/tmp/.IMT%d",)S
+2558(other)S
+2798(sockets)S
+3126(may)S
+3332(be)S
+3460(de\256ned)S
+3788(using)S
+4039(the)S
+10 I
+4195(-unix)S
+10 R
+4434(command)S
+4862(line)S
+5046(switch)S
+5341(or)S
+5458(the)S
+2376 V
+10 Y
+1510(*)S
+10 I
+1560(unixaddr)S
+10 R
+1953(resource.)S
+2377(Legal)S
+2636(values)S
+2923(should)S
+3222(be)S
+3348(speci\256ed)S
+3735(as)S
+3850(a)S
+3926(\256lename)S
+4302(to)S
+4412(be)S
+4538(used)S
+4753(for)S
+4901(the)S
+5056(socket,)S
+5369(up)S
+5502(to)S
+2496 V
+1510(two)S
+1693("%d")S
+1941(\256elds)S
+2190(are)S
+2343(allowed)S
+2691(and)S
+2867(will)S
+3055(be)S
+3181(replaced)S
+3550(by)S
+3682(the)S
+3836(userid.)S
+4137(An)S
+4291(empty)S
+4573(string)S
+4833(value)S
+5081(disables)S
+5435(this)S
+2616 V
+1510(connection.)S
+2784 V
+1260(By)S
+1410(default)S
+1720(ximtool)S
+2065(listens)S
+2354(simultaneously)S
+2993(for)S
+3142(client)S
+3397(connections)S
+3908(on)S
+4042(all)S
+4176(three)S
+4409(types)S
+4654(of)S
+4771(ports.)S
+5090(Clients)S
+5408(may)S
+2904 V
+1260(connect)S
+1614(simultaneously)S
+2264(by)S
+2408(di)S
+2486 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2547(erent)S
+2790(means)S
+3089(allowing)S
+3483(up)S
+3627(to)S
+3748(three)S
+3990(di)S
+4068 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4129(erent)S
+4371(displays)S
+4742(to)S
+4863(be)S
+5000(loading)S
+5343(at)S
+5458(the)S
+3024 V
+1260(same)S
+1495(time)S
+1703(into)S
+1889(di)S
+1967 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2028(erent)S
+2257(frames.)S
+3312 V
+9 B
+1080(COMMUNICATIONS)S
+1987(PROTOCOL)S
+3432 V
+10 R
+1260(Clients)S
+1583(communicate)S
+2160(with)S
+2377(XImtool)S
+2755(using)S
+3011(a)S
+3094(protocol)S
+3467(developed)S
+3917(originally)S
+4346(for)S
+4502(IIS)S
+4664(\(International)S
+5247(Imaging)S
+3552 V
+1260(Systems\))S
+1659(Frame)S
+1946(Bu)S
+2063 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2124(er)S
+2232(hardware,)S
+2658(the)S
+2811(so-called)S
+3202("IIS)S
+3396(protocol";)S
+3829(other)S
+4065(more)S
+4301(modern)S
+4637(protocols)S
+5040(will)S
+5227(likely)S
+5486(be)S
+3672 V
+1260(supported)S
+1687(in)S
+1798(the)S
+1953(future.)S
+2279(The)S
+2467(IIS)S
+2622(protocol)S
+2988(is)S
+3088(basically)S
+3476(a)S
+3553(command)S
+3981(packet)S
+4275(stream)S
+4575(with)S
+4787(a)S
+4865(header)S
+5164(describing)S
+3792 V
+1260(the)S
+1421(operation)S
+1837(to)S
+1954(be)S
+2087(performed)S
+2541(\(select)S
+2840(frame,)S
+3136(load)S
+3347(display,)S
+3700(read)S
+3910(cursor,)S
+4223(etc\),)S
+4436(and)S
+4618(an)S
+4750(optional)S
+5116(data)S
+5320(packet)S
+3912 V
+1260(containing)S
+1712(e.g.)S
+1886(pixels.)S
+2180(It)S
+2271(is)S
+2368(beyond)S
+2692(the)S
+2844(scope)S
+3101(of)S
+3214(this)S
+3390(document)S
+3815(to)S
+3924(describe)S
+4287(fully)S
+4507(the)S
+4660(details)S
+4952(of)S
+5066(the)S
+5219(protocol;)S
+4032 V
+1260(interested)S
+1678(users)S
+1913(should)S
+2210(contact)S
+10 I
+2528(iraf@noao.edu)S
+10 R
+3164(for)S
+3310(further)S
+3611(information.)S
+4320 V
+9 B
+900(FRAME)S
+1257(BUFFERS)S
+4440 V
+10 R
+1260(XImtool)S
+1630(starts)S
+1872(up)S
+2003(using)S
+2251(default)S
+2560(frame)S
+2824(bu)S
+2924 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2985(er)S
+3094(size)S
+3281(of)S
+3396(512x512)S
+3778(pixels,)S
+4074(two)S
+4256(\(of)S
+4404(four)S
+4602(possible\))S
+4995(frames)S
+5298(will)S
+5486(be)S
+4560 V
+1260(created.)S
+1610(When)S
+1886(loading)S
+2224(disk)S
+2429(images)S
+2750(\(i.e.)S
+2943(run)S
+3114(in)S
+3230(standalone)S
+3694(mode\))S
+3986(the)S
+4145(frame)S
+4414(bu)S
+4514 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4575(er)S
+4689(con\256guration)S
+5259(\256le)S
+5424(will)S
+4680 V
+1260(be)S
+1385(searched)S
+1764(for)S
+1911(a)S
+1986(de\256ned)S
+2311(frame)S
+2574(bu)S
+2674 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2735(er)S
+2843(that)S
+3024(is)S
+3122(the)S
+3275(same)S
+3511(size)S
+3697(or)S
+3811(larger)S
+4074(than)S
+4277(the)S
+4430(current)S
+4743(image,)S
+5044(if)S
+5137(no)S
+5269(suitable)S
+4800 V
+1260(bu)S
+1360 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1421(er)S
+1529(can)S
+1698(be)S
+1822(found)S
+2085(a)S
+2159(custom)S
+2478(frame)S
+2740(bu)S
+2840 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2901(er)S
+3008(the)S
+3160(same)S
+3395(size)S
+3580(as)S
+3693(the)S
+3845(image)S
+4119(will)S
+4305(be)S
+4429(created)S
+4746(in)S
+4854(an)S
+4978(unused)S
+5291(portion)S
+4920 V
+1260(of)S
+1373(the)S
+1525(con\256guration)S
+2088(table.)S
+2367(When)S
+2635(used)S
+2848(as)S
+2962(a)S
+3037(display)S
+3357(server)S
+3631(the)S
+3784(frame)S
+4047(bu)S
+4147 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4208(er)S
+4316(con\256guration)S
+4880(number)S
+5216(is)S
+5314(passed)S
+5040 V
+1260(in)S
+1381(by)S
+1524(the)S
+1689(client)S
+1954(and)S
+2140(loaded)S
+2448(explicitly)S
+2868(even)S
+3098(if)S
+3201(it)S
+3299(means)S
+3596(clipping)S
+3966(the)S
+4130(image.)S
+4471(If)S
+4579(a)S
+4665(new)S
+4873(frame)S
+5147(bu)S
+5247 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5308(er)S
+5427(is)S
+5536(a)S
+5160 V
+1260(di)S
+1338 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1399(erent)S
+1635(size)S
+1827(than)S
+2036(previously)S
+2495(de\256ned)S
+2826(frames,)S
+3159(all)S
+3296(available)S
+3693(frames)S
+4001(will)S
+4194(be)S
+4325(initialized)S
+4763(and)S
+4945(cleared)S
+5270(prior)S
+5502(to)S
+5280 V
+1260(the)S
+1422(display.)S
+1806(The)S
+2001(default)S
+2318(frame)S
+2590(bu)S
+2690 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2751(er)S
+2868(con\256guration)S
+3441(\256le)S
+3609(is)S
+3716(/usr/local/lib/imtoolrc,)S
+4654(this)S
+4838(can)S
+5015(be)S
+5148(overridden)S
+5400 V
+1260(by)S
+1391(de\256ning)S
+1750(a)S
+1825(IMTOOLRC)S
+2378(environment)S
+2914(variable)S
+3266(naming)S
+3597(the)S
+3750(\256le)S
+3909(to)S
+4019(be)S
+4145(used,)S
+4385(by)S
+4517(creating)S
+4870(a)S
+4946(.imtoolrc)S
+5342(\256le)S
+5502(in)S
+5520 V
+1260(your)S
+1482(home)S
+1743(directory,)S
+2167(or)S
+2289(a)S
+2372(new)S
+2577(\256le)S
+2744(may)S
+2955(be)S
+3088(speci\256ed)S
+3482(using)S
+3738(the)S
+10 I
+3899(-imtoolrc)S
+10 R
+4310(command)S
+4743(line)S
+4932(\257ag)S
+5120(or)S
+10 I
+5241(imtoolrc)S
+5640 V
+10 R
+1260(application)S
+1734(resource.)S
+5880 V
+1260(The)S
+1445(format)S
+1741(of)S
+1854(the)S
+2006(frame)S
+2268(bu)S
+2368 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2429(er)S
+2536(con\256guration)S
+3099(\256le)S
+3257(is)S
+6120 V
+10 I
+1410(con\256gno)S
+1784(nframes)S
+2136(width)S
+2389(height)S
+2669([extra)S
+2943(\256elds])S
+6240 V
+10 R
+1290(e.g.)S
+6360 V
+1560(1)S
+1670(2)S
+1780(512)S
+1990(512)S
+6480 V
+1560(2)S
+1670(2)S
+1780(800)S
+1990(800)S
+6600 V
+1560(3)S
+1670(1)S
+1750(1024)S
+1980(1024)S
+2480(#)S
+2560(comment)S
+6720 V
+1560(:)S
+1648(:)S
+1766(:)S
+1914(:)S
+6960 V
+1260(At)S
+1420(most)S
+1675(128)S
+1885(frame)S
+2177(bu)S
+2277 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2338(er)S
+2475(sizes)S
+2730(may)S
+2963(be)S
+3118(de\256ned,)S
+3498(each)S
+3741(con\256guration)S
+4335(may)S
+4568(de\256ne)S
+4873(up)S
+5034(to)S
+5173(4)S
+5284(frames,)S
+7080 V
+1260(con\256guration)S
+1823(numbers)S
+2197(need)S
+2415(not)S
+2573(be)S
+2697(sequential.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(8)S
+7920 V
+EP
+%%Page: 9 9
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(NOTE:)S
+10 R
+1640(When)S
+1911(de\256ning)S
+2272(a)S
+2349(new)S
+2548(frame)S
+2813(bu)S
+2913 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2974(er)S
+3084(for)S
+3233(use)S
+3399(with)S
+3610(client)S
+3865(software)S
+4241(such)S
+4457(as)S
+4573(IRAF)S
+4834(the)S
+4990(user)S
+5190(must)S
+5419(also)S
+1080 V
+1260(remember)S
+1694(to)S
+1802(de\256ne)S
+2076(those)S
+2317(frame)S
+2579(bu)S
+2679 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2740(ers)S
+2886(in)S
+2994(the)S
+3146(IRAF)S
+10 I
+3404(dev$graphcap)S
+10 R
+4005(\256le.)S
+1368 V
+9 B
+900(MARKERS)S
+1488 V
+10 R
+1260(Although)S
+1668(ximtool)S
+2010(doesn't)S
+2334(do)S
+2464(much)S
+2717(with)S
+2926(markers)S
+3278(currently,)S
+3694(they)S
+3897(are)S
+4049(a)S
+4124(general)S
+4448(feature)S
+4755(of)S
+4869(the)S
+10 I
+5022(Gterm)S
+10 R
+5308(widget)S
+1608 V
+1260(and)S
+1450(are)S
+1616(used)S
+1844(more)S
+2094(extensively)S
+2594(in)S
+2717(other)S
+2967(programs)S
+3389(\(e.g.)S
+3611(the)S
+3778(prototype)S
+4206(IRAF)S
+4479(science)S
+4817(GUI)S
+5039(applications\).)S
+1728 V
+1260(XImtool)S
+1639(uses)S
+1851(markers)S
+2212(for)S
+2368(the)S
+2530(marker)S
+2852(zoom)S
+3114(feature)S
+3430(discussed)S
+3853(above,)S
+4156(and)S
+4340(also)S
+4541(for)S
+4697(the)S
+4860(panner,)S
+5197(magni\256er)S
+1848 V
+1260(and)S
+1439(the)S
+1596(coordinates)S
+2091(box.)S
+2301(All)S
+2464(markers)S
+2820(share)S
+3064(some)S
+3309(of)S
+3426(the)S
+3582(same)S
+3821(characteristics,)S
+4450(so)S
+4573(it)S
+4663(is)S
+4764(worthwhile)S
+5253(learning)S
+1968 V
+1260(basic)S
+1495(marker)S
+1807(manipulation)S
+2365(keystrokes.)S
+2136 V
+10 B
+1260(o)S
+10 R
+1410(MB1)S
+1646(anywhere)S
+2063(inside)S
+2332(a)S
+2406(marker)S
+2718(may)S
+2920(be)S
+3044(used)S
+3257(to)S
+3365(drag)S
+3572(the)S
+3724(marker.)S
+2304 V
+10 B
+1260(o)S
+10 R
+1410(MB1)S
+1646(near)S
+1847(a)S
+1921(marker)S
+2233(corner)S
+2517(or)S
+2630(edge,)S
+2873(depending)S
+3319(on)S
+3449(the)S
+3601(type)S
+3803(of)S
+3916(marker,)S
+4253(resizes)S
+4554(the)S
+4706(marker.)S
+2472 V
+10 B
+1260(o)S
+10 R
+1410(Shift-MB1)S
+1874(on)S
+2004(the)S
+2156(corner)S
+2440(of)S
+2553(most)S
+2778(markers)S
+3129(will)S
+3315(rotate)S
+3572(the)S
+3724(marker.)S
+2640 V
+10 B
+1260(o)S
+10 R
+1410(Markers)S
+1775(stack,)S
+2038(if)S
+2132(you)S
+2315(have)S
+2536(several)S
+2851(markers)S
+3205(and)S
+3382(you)S
+3565(put)S
+3726(one)S
+3903(on)S
+4037(top)S
+4199(of)S
+4316(the)S
+4472(other.)S
+4736(The)S
+4925(active)S
+5197(marker)S
+5513(is)S
+2760 V
+1410(highlighted)S
+1909(to)S
+2030(tell)S
+2201(you)S
+2394(which)S
+2681(of)S
+2807(the)S
+2972(stacked)S
+3314(markers)S
+3678(is)S
+3788(active.)S
+4094(If)S
+4203(the)S
+4368(markers)S
+4732(overlap,)S
+5099(this)S
+5287(will)S
+5486(be)S
+2880 V
+1410(marker)S
+1722("on)S
+1893(top")S
+2092(in)S
+2200(the)S
+2352(stacking)S
+2715(order.)S
+3048 V
+10 B
+1260(o)S
+10 R
+1410(MB2)S
+1646(in)S
+1754(the)S
+1906(body)S
+2136(of)S
+2249(a)S
+2323(marker)S
+2635("lowers")S
+3013(the)S
+3165(marker,)S
+3502(i.e.)S
+3654(moves)S
+3945(it)S
+4031(to)S
+4139(the)S
+4291(bottom)S
+4605(of)S
+4718(the)S
+4870(stacking)S
+5233(order.)S
+3216 V
+10 B
+1260(o)S
+10 R
+1410(Delete)S
+1700(or)S
+1813(backspace)S
+2252(in)S
+2360(a)S
+2434(marker)S
+2746(deletes)S
+3053(it.)S
+3384 V
+10 B
+1260(o)S
+10 R
+1410(Markers)S
+1789(have)S
+2024(their)S
+2254(own)S
+2473(translation)S
+2942(resources)S
+3365(and)S
+3557(so)S
+3694(the)S
+3864(default)S
+4189(keystroke)S
+4625(commands)S
+5106(will)S
+5310(not)S
+5486(be)S
+3504 V
+1410(recognized)S
+1877(when)S
+2123(the)S
+2275(cursor)S
+2554(is)S
+2651(in)S
+2759(a)S
+2833(marker.)S
+3672 V
+1260(For)S
+1433(example,)S
+1830(try)S
+1976(placing)S
+2305(the)S
+2462(pointer)S
+2780(anywhere)S
+3202(in)S
+3315(the)S
+3472(coords)S
+3773(box,)S
+3983(then)S
+4190(press)S
+4430(MB1)S
+4671(and)S
+4850(hold)S
+5063(it)S
+5154(down,)S
+5436(and)S
+3792 V
+1260(drag)S
+1474(the)S
+1633(coords)S
+1936(box)S
+2123(marker)S
+2442(somewhere)S
+2933(else)S
+3125(on)S
+3262(the)S
+3421(screen.)S
+3737(You)S
+3946(can)S
+4121(also)S
+4319(resize)S
+4588(the)S
+4746(coords)S
+5048(box)S
+5234(by)S
+5370(drag-)S
+3912 V
+1260(ging)S
+1478(a)S
+1562(corner,)S
+1881(or)S
+2004(delete)S
+2282(it)S
+2379(with)S
+2598(the)S
+2761(delete)S
+3040(or)S
+3164(backspace)S
+3614(key.)S
+3824(\(The)S
+4053(Initialize)S
+4449(button)S
+4746(will)S
+4943(get)S
+5106(the)S
+5269(original)S
+4032 V
+1260(coords)S
+1556(box)S
+1736(back)S
+1954(if)S
+2045(you)S
+2225(delete)S
+2493(it,)S
+2604(or)S
+2717(you)S
+2897(can)S
+3065(reset)S
+3283(the)S
+3435(toggle)S
+3715(in)S
+3823(the)S
+3975(control)S
+4288(panel\).)S
+4320 V
+9 B
+1080(PANNER)S
+1482(MARKER)S
+4440 V
+10 R
+1260(The)S
+1449(panner)S
+1754(window)S
+2110(always)S
+2421(displays)S
+2783(the)S
+2939(full)S
+3112(frame)S
+3379(bu)S
+3479 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3540(er.)S
+3677(Try)S
+3856(setting)S
+4158(the)S
+4315(frame)S
+4582(bu)S
+4682 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4743(er)S
+4855(con\256guration)S
+5423(to)S
+5536(a)S
+4560 V
+1260(nonsquare)S
+1708(frame)S
+1978(bu)S
+2078 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2139(er)S
+2254(\(e.g.)S
+2469(imtcryo\))S
+2851(and)S
+3033(then)S
+3243(displaying)S
+3698(a)S
+3780(square)S
+4078(image)S
+4360(\(e.g.)S
+4575(dev$pix\))S
+4968(and)S
+5150(the)S
+5309(panner)S
+4680 V
+1260(will)S
+1446(show)S
+1687(you)S
+1867(exactly)S
+2185(where)S
+2458(the)S
+2610(image)S
+2884(has)S
+3047(been)S
+3265(loaded)S
+3561(into)S
+3747(the)S
+3899(frame.)S
+4920 V
+1260(The)S
+1450(panner)S
+1756(window)S
+2113(uses)S
+2321(two)S
+2507(markers,)S
+2889(one)S
+3069(for)S
+3221(the)S
+3379(window)S
+3737(border)S
+4033(and)S
+4213(one)S
+4393(to)S
+4507(mark)S
+4748(the)S
+4906(displayed)S
+5325(region)S
+5040 V
+1260(of)S
+1379(the)S
+1537(frame.)S
+1830(Most)S
+2072(of)S
+2191(the)S
+2349(usual)S
+2596(marker)S
+2914(keystrokes)S
+3377(mentioned)S
+3835(below)S
+4115(apply)S
+4373(to)S
+4487(these)S
+4728(markers)S
+5085(as)S
+5204(well,)S
+5436(e.g.)S
+5160 V
+1260(you)S
+1443(can)S
+1614(use)S
+1780(MB1)S
+2019(to)S
+2130(reposition)S
+2563(on)S
+2696(the)S
+2851(panner)S
+3156(window)S
+3512(within)S
+3802(the)S
+3958(main)S
+4192(image)S
+4470(display)S
+4793(window,)S
+5174(or)S
+5291(to)S
+5403(drag)S
+5280 V
+1260(the)S
+1414(region)S
+1701(marker)S
+2015(within)S
+2303(the)S
+2457(panner)S
+2760(\(pan)S
+2969(the)S
+3123(image\).)S
+3456(Resizing)S
+3837(the)S
+3990(region)S
+4276(marker)S
+4589(zooms)S
+4881(the)S
+5034(image;)S
+5337(this)S
+5513(is)S
+5400 V
+1260(a)S
+1336(non-aspect)S
+1800(constrained)S
+2292(zoom.)S
+2571(The)S
+2758(panner)S
+3061(window)S
+3415(itself)S
+3647(can)S
+3817(be)S
+3943(resized)S
+4257(by)S
+4389(dragging)S
+4776(a)S
+4852(corner)S
+5138(with)S
+5349(MB1.)S
+5520 V
+1260(Typing)S
+1579(delete)S
+1847(or)S
+1960(backspace)S
+2399(anywhere)S
+2816(in)S
+2924(the)S
+3076(panner)S
+3377(window)S
+3729(deletes)S
+4036(the)S
+4188(panner.)S
+5760 V
+1260(A)S
+1362(special)S
+1669(case)S
+1870(is)S
+1967(MB2.)S
+2228(Hitting)S
+2542(MB2)S
+2778(anywhere)S
+3195(in)S
+3303(the)S
+3455(panner)S
+3757(window)S
+4110(pans)S
+4324(the)S
+4477(image)S
+4752(to)S
+4861(that)S
+5042(point.)S
+5304(This)S
+5513(is)S
+5880 V
+1260(analogous)S
+1695(to)S
+1803(hitting)S
+2095(MB2)S
+2331(in)S
+2439(the)S
+2591(main)S
+2821(display)S
+3140(window)S
+3492(to)S
+3600(pan)S
+3774(the)S
+3926(image.)S
+6120 V
+1260(The)S
+1447(panner)S
+1750(marker)S
+2064(can)S
+2234(be)S
+2360(disabled)S
+2725(by)S
+2857(de\256ning)S
+3218(the)S
+10 I
+3373(displayPanner)S
+10 R
+3989(GUI)S
+4199(resource,)S
+4594(its)S
+4722(size)S
+4910(and)S
+5087(location)S
+5442(can)S
+6240 V
+1260(be)S
+1384(controlled)S
+1819(using)S
+2066(the)S
+10 I
+2218(pannerArea)S
+10 R
+2725(and)S
+10 I
+2899(pannerGeom)S
+10 R
+3450(GUI)S
+3657(resources)S
+4063(respectively.)S
+6528 V
+9 B
+1080(MAGNIFIER)S
+1642(MARKER)S
+6648 V
+10 R
+1260(The)S
+1445(magni\256er)S
+1858(marker)S
+2170(can)S
+2338(be)S
+2462(used)S
+2676(to)S
+2785(zoom)S
+3038(in)S
+3147(on)S
+3278(a)S
+3353(small)S
+3601(area)S
+3797(around)S
+4105(the)S
+4258(cursor.)S
+4593(It)S
+4685(will)S
+4872(be)S
+4997(updated)S
+5344(as)S
+5458(the)S
+6768 V
+1260(cursor)S
+1552(moves)S
+1856(but)S
+2027(only)S
+2248(for)S
+2407(small)S
+2666(motions)S
+3031(\(either)S
+3333(mouse)S
+3636(movement)S
+4100(or)S
+4225(with)S
+4445(the)S
+4609(cursor)S
+4900(movement)S
+5364(keys-)S
+6888 V
+1260(trokes\))S
+1570(to)S
+1681(minimize)S
+2092(the)S
+2247(impact)S
+2552(on)S
+2685(the)S
+2840(system.)S
+3207(The)S
+3396(zoom)S
+3652(factor)S
+3918(is)S
+4019(expressed)S
+4446(as)S
+4563(some)S
+4808(fraction)S
+5152(of)S
+5269(the)S
+5425(size)S
+7008 V
+1260(of)S
+1381(the)S
+1541(magni\256er)S
+1962(marker)S
+2282(itself.)S
+2575(The)S
+2768(default)S
+3083(zoom)S
+3343(is)S
+3448(4,)S
+3561(i.e.)S
+3721(the)S
+3881(area)S
+4084(in)S
+4200(the)S
+4359(marker)S
+4678(represents)S
+5119(and)S
+5300(area)S
+5502(in)S
+7128 V
+1260(the)S
+1417(image)S
+1696(that's)S
+1953(one-fourth)S
+2409(the)S
+2566(size)S
+2756(of)S
+2874(the)S
+3031(marker.)S
+3403(Other)S
+3665(zoom)S
+3922(factors)S
+4228(may)S
+4435(be)S
+4564(selected)S
+4920(using)S
+5172(the)S
+5330(popup)S
+7248 V
+1260(menu)S
+1512(created)S
+1829(by)S
+1959(hitting)S
+2251(MB1)S
+2487(in)S
+2595(the)S
+2747(marker.)S
+7728 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5530(9)S
+7920 V
+EP
+%%Page: 10 10
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(By)S
+1414(default)S
+1728(the)S
+1887(magni\256er)S
+2307(marker)S
+2626(is)S
+2730(not)S
+2895(visible,)S
+3224(to)S
+3339(toggle)S
+3626(it)S
+3720(select)S
+3985(the)S
+10 I
+4145(Magni\256er)S
+10 R
+4577(option)S
+4871(from)S
+5103(the)S
+10 I
+5263(Options)S
+1080 V
+10 R
+1260(menubar)S
+1660(button.)S
+2022(Alternatively,)S
+2625(for)S
+2792(just)S
+2988(a)S
+3083(quick)S
+3356(look)S
+3584(holding)S
+3940(down)S
+4212(the)S
+4384(Shift)S
+4629(and)S
+4823(MB1)S
+5079(buttons)S
+5424(will)S
+1200 V
+1260(display)S
+1579(the)S
+1731(marker)S
+2043(until)S
+2257(the)S
+2409(button)S
+2695(is)S
+2792(released.)S
+1440 V
+1260(The)S
+1453(magni\256er)S
+1874(marker)S
+2194(can)S
+2370(be)S
+2502(disabled)S
+2873(by)S
+3011(de\256ning)S
+3377(the)S
+10 I
+3537(displayMagni\256er)S
+10 R
+4258(GUI)S
+4473(resource,)S
+4873(its)S
+5006(size)S
+5199(and)S
+5381(loca-)S
+1560 V
+1260(tion)S
+1446(can)S
+1614(be)S
+1738(controlled)S
+2173(using)S
+2420(the)S
+10 I
+2572(magni\256erArea)S
+10 R
+3179(and)S
+10 I
+3353(magni\256erGeom)S
+10 R
+4004(GUI)S
+4211(resources)S
+4617(respectively.)S
+1848 V
+9 B
+1080(COORDS)S
+1492(BOX)S
+1714(MARKER)S
+1968 V
+10 R
+1260(XImtool)S
+1629(provides)S
+2003(a)S
+2077(limited)S
+2391(notion)S
+2677(of)S
+2790(world)S
+3054(coordinates,)S
+3570(allowing)S
+3951(frame)S
+4214(bu)S
+4314 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4375(er)S
+4483(pixel)S
+4714(coordinates)S
+5205(and)S
+5380(pixel)S
+2088 V
+1260(values)S
+1546(to)S
+1655(be)S
+1780(converted)S
+2204(to)S
+2312(some)S
+2553(arbitrary)S
+2926(linear)S
+3183(client-de\256ned)S
+3762(coordinate)S
+4213(system.)S
+4546(The)S
+4731(coords)S
+5027(box)S
+5207(feature)S
+5513(is)S
+2208 V
+1260(used)S
+1473(to)S
+1581(display)S
+1900(these)S
+2135(world)S
+2398(coordinates)S
+2888(as)S
+3001(the)S
+3153(pointer)S
+3466(is)S
+3563(moved)S
+3865(about)S
+4117(in)S
+4225(the)S
+4377(image)S
+4651(window.)S
+2448 V
+1260(The)S
+1445(quantities)S
+1865(displayed)S
+2279(in)S
+2388(the)S
+2541(coords)S
+2838(box)S
+3019(are)S
+3171(X,)S
+3299(Y,)S
+3427(and)S
+3602(Z:)S
+3722(the)S
+3875(X,Y)S
+4075(world)S
+4339(coordinates)S
+4830(of)S
+4944(the)S
+5097(pointer,)S
+5436(and)S
+2568 V
+1260(Z,)S
+1379(the)S
+1534(world)S
+1800(equivalent)S
+2249(of)S
+2365(the)S
+2520(pixel)S
+2753(value)S
+3002(under)S
+3262(the)S
+3417(pointer.)S
+3758(All)S
+3919(coordinate)S
+4373(systems)S
+4723(are)S
+4877(linear.)S
+5161(The)S
+5348(preci-)S
+2688 V
+1260(sion)S
+1466(of)S
+1588(a)S
+1671(displayed)S
+2093(quantity)S
+2460(is)S
+2566(limited)S
+2889(by)S
+3028(the)S
+3189(range)S
+3449(of)S
+3571(values)S
+3865(of)S
+3988(the)S
+4150(associated)S
+4600(raw)S
+4789(frame)S
+5061(bu)S
+5161 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5222(er)S
+5339(value.)S
+2808 V
+1260(For)S
+1431(example,)S
+1826(if)S
+1919(the)S
+2073(display)S
+2394(window)S
+2748(is)S
+2846(512x512)S
+3227(only)S
+3436(512)S
+3617(coordinate)S
+4069(values)S
+4355(are)S
+4507(possible)S
+4866(in)S
+4975(either)S
+5233(axis)S
+5425(\(the)S
+2928 V
+1260(positional)S
+1687(precision)S
+2085(can)S
+2256(be)S
+2383(increased)S
+2792(however)S
+3168(by)S
+3301(zooming)S
+3684(the)S
+3839(image\).)S
+4174(More)S
+4423(seriously,)S
+4842(at)S
+4947(most)S
+5175(about)S
+5430(200)S
+3048 V
+1260(pixel)S
+1501(values)S
+1797(can)S
+1976(be)S
+2111(displayed)S
+2534(since)S
+2779(this)S
+2964(is)S
+3071(the)S
+3233(limit)S
+3463(on)S
+3603(the)S
+3765(range)S
+4026(of)S
+4149(pixel)S
+4389(values)S
+4684(loaded)S
+4990(into)S
+5186(the)S
+5348(frame)S
+3168 V
+1260(bu)S
+1360 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1421(er.)S
+1553(If)S
+1649(a)S
+1723(display)S
+2042(pixel)S
+2272(is)S
+2369(saturated)S
+2759(a)S
+2833("+")S
+3001(will)S
+3187(be)S
+3311(displayed)S
+3724(after)S
+3936(the)S
+4088(intensity)S
+4463(value.)S
+3408 V
+1260(The)S
+1446(coords)S
+1743(box)S
+1924(is)S
+2022(a)S
+2097(text)S
+2278(marker,)S
+2616(it)S
+2703(can)S
+2872(be)S
+2997(moved)S
+3300(and)S
+3475(resized)S
+3788(with)S
+3997(the)S
+4150(pointer)S
+4464(like)S
+4645(any)S
+4820(other)S
+5056(marker.)S
+5425(The)S
+3528 V
+1260(coords)S
+1561(box)S
+1746(marker)S
+2063(can)S
+2236(be)S
+2365(disabled)S
+2733(by)S
+2868(de\256ning)S
+3231(the)S
+10 I
+3388(displayCoords)S
+10 R
+4007(GUI)S
+4219(resource,)S
+4616(its)S
+4746(location)S
+5103(can)S
+5275(be)S
+5403(con-)S
+3648 V
+1260(trolled)S
+1551(by)S
+1681(the)S
+10 I
+1833(wcsboxGeom)S
+10 R
+2395(GUI)S
+2602(resource.)S
+3936 V
+9 B
+1080(MARKER)S
+1517(MENU)S
+1819(OPTIONS)S
+4056 V
+10 R
+1260(Except)S
+1575(for)S
+1729(the)S
+1889(panner)S
+2198(and)S
+2380(WCS)S
+2635(markers,)S
+3019(MB3)S
+3263(\(mouse)S
+3595(button)S
+3889(3\))S
+4010(calls)S
+4231(up)S
+4369(the)S
+4529(marker)S
+4849(menu)S
+5109(providing)S
+5536(a)S
+4176 V
+1260(limited)S
+1574(set)S
+1715(of)S
+1828(functions)S
+2230(common)S
+2610(to)S
+2718(all)S
+2848(markers:)S
+4344 V
+10 B
+1260(o)S
+10 R
+1410(Zoom)S
+1686(does)S
+1906(an)S
+2037(equal)S
+2291(aspect)S
+2578(zoom)S
+2838(of)S
+2959(the)S
+3119(region)S
+3412(outlined)S
+3778(by)S
+3916(the)S
+4076(marker.)S
+4421(In)S
+4542(this)S
+4725(way)S
+4929(you)S
+5117(can)S
+5293(mark)S
+5536(a)S
+4464 V
+1410(region)S
+1695(of)S
+1808(the)S
+1960(image)S
+2234(and)S
+2408(zoom)S
+2660(it)S
+2746(up.)S
+4632 V
+10 B
+1260(o)S
+10 R
+1410(Fill)S
+1597(exactly)S
+1933(zooms)S
+2242(the)S
+2412(area)S
+2625(outlined)S
+3001(by)S
+3149(the)S
+3319(marker,)S
+3674(making)S
+4022(it)S
+4126(\256ll)S
+4286(the)S
+4456(display)S
+4793(window.)S
+5188(Since)S
+5458(the)S
+4752 V
+1410(marker)S
+1722(is)S
+1819(not)S
+1977(likely)S
+2235(to)S
+2343(be)S
+2467(exactly)S
+2785(square,)S
+3100(the)S
+3252(aspect)S
+3531(ratio)S
+3744(of)S
+3857(the)S
+4009(resultant)S
+4383(image)S
+4657(will)S
+4843(not)S
+5001(be)S
+5125(unitary.)S
+4920 V
+10 B
+1260(o)S
+10 R
+1410(Print)S
+1643(prints)S
+1909(the)S
+2069(region)S
+2362(outlined)S
+2728(by)S
+2866(the)S
+3027(marker)S
+3348(to)S
+3465(the)S
+3626(printer)S
+3931(or)S
+4053(\256le)S
+4220(currently)S
+4619(con\256gured)S
+5085(by)S
+5224(the)S
+5385(Print)S
+5040 V
+1410(Panel.)S
+5208 V
+10 B
+1260(o)S
+10 R
+1410(Save)S
+1634(saves)S
+1880(the)S
+2032(region)S
+2317(outlined)S
+2675(by)S
+2805(the)S
+2957(marker)S
+3269(to)S
+3377(the)S
+3529(\256le)S
+3687(currently)S
+4077(con\256gured)S
+4534(by)S
+4664(the)S
+4816(Save)S
+5040(Panel.)S
+5376 V
+10 B
+1260(o)S
+10 R
+1410(Info)S
+1606(prints)S
+1864(a)S
+1938(description)S
+2412(of)S
+2525(the)S
+2677(marked)S
+3006(region.)S
+3316(The)S
+3501(text)S
+3681(is)S
+3778(printed)S
+4091(in)S
+4199(the)S
+4351(Info)S
+4547(Panel.)S
+5544 V
+10 B
+1260(o)S
+10 R
+1410(Unrotate)S
+1789(unrotates)S
+2185(a)S
+2259(rotated)S
+2566(marker.)S
+5712 V
+10 B
+1260(o)S
+10 R
+1410(Color)S
+1668(is)S
+1765(a)S
+1839(menu)S
+2091(of)S
+2204(possible)S
+2562(marker)S
+2874(colors.)S
+5880 V
+10 B
+1260(o)S
+10 R
+1410(Type)S
+1651(is)S
+1754(a)S
+1834(menu)S
+2092(of)S
+2211(possible)S
+2575(marker)S
+2893(types.)S
+3165(This)S
+3379(is)S
+3482(still)S
+3669(a)S
+3749(little)S
+3969(buggy)S
+4256(and)S
+4437(it)S
+4530(isn't)S
+4745(very)S
+4959(useful,)S
+5265(but)S
+5430(you)S
+6000 V
+1410(can)S
+1578(use)S
+1741(it)S
+1827(to)S
+1935(play)S
+2137(with)S
+2345(di)S
+2423 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2484(erent)S
+2713(types)S
+2954(of)S
+3067(markers.)S
+6168 V
+10 B
+1260(o)S
+10 R
+1410(Destroy)S
+1760(destroys)S
+2127(the)S
+2283(marker.)S
+2624(You)S
+2830(can)S
+3002(also)S
+3197(hit)S
+3337(the)S
+3493(delete)S
+3766(or)S
+3884(backspace)S
+4328(key)S
+4507(in)S
+4620(a)S
+4699(marker)S
+5016(to)S
+5129(destroy)S
+5458(the)S
+6288 V
+1410(marker.)S
+6576 V
+9 B
+900(CONTROL)S
+1382(PANEL)S
+6696 V
+10 R
+1260(XImtool)S
+1636(has)S
+1806(a)S
+1887(control)S
+2207(panel)S
+2460(which)S
+2741(can)S
+2917(be)S
+3049(used)S
+3270(to)S
+3386(exercise)S
+3750(most)S
+3983(of)S
+4104(the)S
+4264(capabilities)S
+4757(the)S
+4917(program)S
+5293(has)S
+5464(for)S
+6816 V
+1260(image)S
+1544(display.)S
+1928(The)S
+2123(control)S
+2445(panel)S
+2700(can)S
+2877(be)S
+3010(accessed)S
+3397(either)S
+3663(via)S
+3824(the)S
+10 B
+3985(Options)S
+10 R
+4364(menu)S
+4625(from)S
+4858(the)S
+5019(main)S
+5258(window)S
+6936 V
+1260(menubar,)S
+1664(or)S
+1777(by)S
+1907(pressing)S
+2270(the)S
+2422(leftmost)S
+2780(button)S
+3066(in)S
+3174(the)S
+3326(row)S
+3511(of)S
+3624(buttons)S
+3949(at)S
+4051(the)S
+4203(upper)S
+4460(right)S
+4679(side)S
+4870(of)S
+4983(the)S
+5135(display.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(10)S
+7920 V
+EP
+%%Page: 11 11
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+1080(VIEW)S
+1357(CONTROLS)S
+1080 V
+10 R
+1260(The)S
+10 B
+1452(Frame)S
+1771(box)S
+10 R
+1964(will)S
+2157(list)S
+2317(only)S
+2532(the)S
+2692(frame)S
+2962(bu)S
+3062 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3123(ers)S
+3277(you)S
+3465(currently)S
+3863(have)S
+4089(de\256ned.)S
+4476(Currently,)S
+4922(the)S
+5082(only)S
+5298(way)S
+5502(to)S
+1200 V
+1260(destroy)S
+1594(a)S
+1678(frame)S
+1950(bu)S
+2050 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2111(er)S
+2228(is)S
+2335(to)S
+2453(change)S
+2775(the)S
+2937(frame)S
+3209(bu)S
+3309 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3370(er)S
+3487(con\256guration,)S
+4085(new)S
+4291(frame)S
+4563(bu)S
+4663 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4724(ers)S
+4880(\(up)S
+5052(to)S
+5169(4\))S
+5291(will)S
+5486(be)S
+1320 V
+1260(created)S
+1586(automatically)S
+2169(if)S
+2269(requested)S
+2690(by)S
+2829(the)S
+2990(client.)S
+3306(The)S
+3500(number)S
+3845(of)S
+3968(frame)S
+4240(bu)S
+4340 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4401(ers)S
+4557(created)S
+4884(at)S
+4996(startup)S
+5308(can)S
+5486(be)S
+1440 V
+1260(controlled)S
+1695(using)S
+1942(the)S
+10 I
+2094(-nframes)S
+10 R
+2479(command-line)S
+3086(switch)S
+3377(or)S
+3490(the)S
+10 I
+3642(defNFrames)S
+10 R
+4166(resource.)S
+1680 V
+1260(The)S
+10 B
+1453(text)S
+1651(display)S
+10 R
+1996(window)S
+2356(gives)S
+2605(the)S
+2765(\256eld)S
+2981(X,Y)S
+3189(center,)S
+3496(X,Y)S
+3704(scale)S
+3942(factors,)S
+4277(and)S
+4460(the)S
+4621(X,Y)S
+4829(zoom)S
+5090(factors.)S
+5425(The)S
+1800 V
+1260(scale)S
+1501(factor)S
+1774(and)S
+1959(the)S
+2122(zoom)S
+2385(factor)S
+2658(will)S
+2855(be)S
+2990(the)S
+3153(same)S
+3399(unless)S
+10 I
+3690(autoscale)S
+10 R
+4114(is)S
+4222(enabled.)S
+4598(The)S
+4794(scale)S
+5034(is)S
+5142(in)S
+5261(units)S
+5497(of)S
+1920 V
+1260(display)S
+1583(pixels)S
+1856(per)S
+2017(frame)S
+2283(bu)S
+2383 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2444(er)S
+2555(pixel,)S
+2814(and)S
+2992(is)S
+3093(an)S
+3221(absolute)S
+3589(measure)S
+3956(\(it)S
+4080(doesn't)S
+4409(matter)S
+4699(whether)S
+5055(or)S
+5173(not)S
+5336(autos-)S
+2040 V
+1260(cale)S
+1464(is)S
+1575(enabled\).)S
+1987(Zoom)S
+2270(is)S
+2381(relative)S
+2724(to)S
+2845(the)S
+3010(autoscale)S
+3424(factor,)S
+3724(which)S
+4011(is)S
+4121(1.0)S
+4289(if)S
+4393(autoscaling)S
+4891(is)S
+5001(disabled.)S
+5402(This)S
+2160 V
+1260(information)S
+1762(is)S
+1859(also)S
+2050(presented)S
+2462(in)S
+2570(the)S
+2722(Info)S
+2918(panel.)S
+2400 V
+1260(The)S
+1446(numbers)S
+1821(in)S
+1930(the)S
+10 B
+2083(Zoom)S
+2364(box)S
+10 R
+2551(are)S
+2703(zoom)S
+2956(factors.)S
+3283(Blue)S
+3503(numbers)S
+3878(zoom,)S
+4156(red)S
+4314(numbers)S
+4689(dezoom.)S
+10 I
+5061(Zoom)S
+5321(In)S
+10 R
+5436(and)S
+2520 V
+10 I
+1260(Zoom)S
+1522(Out)S
+10 R
+1706(may)S
+1912(be)S
+2039(used)S
+2255(to)S
+2366(go)S
+2499(to)S
+2610(larger)S
+2875(or)S
+2991(smaller)S
+3318(zoom)S
+3573(factors,)S
+3902(e.g.)S
+4079("Ctrl-5")S
+4433(followed)S
+4821(by)S
+4954("Zoom)S
+5267(In")S
+5424(will)S
+2640 V
+1260(get)S
+1421(you)S
+1610(to)S
+1727(zoom)S
+1988(factor)S
+2259(10.)S
+2453(Speci\256c)S
+2814(zoom)S
+3075(factors)S
+3385(may)S
+3596(also)S
+3796(be)S
+3929(accessed)S
+4316(directly)S
+4660(as)S
+4782(Control)S
+5128(keystrokes,)S
+2760 V
+1260(e.g.)S
+1448(Ctrl-5)S
+1731(will)S
+1931(set)S
+2086(zoom)S
+2352(factor)S
+2628(5.)S
+10 I
+2747(Center)S
+10 R
+3063(centers)S
+3389(the)S
+3555(\256eld.)S
+10 I
+3832(Toggle)S
+4154(Zoom)S
+10 R
+4426(toggles)S
+4758(between)S
+5133(the)S
+5298(current)S
+2880 V
+1260(zoom/center)S
+1783(values,)S
+2093(and)S
+2267(the)S
+2419(unzoomed)S
+2865(image.)S
+3120 V
+10 I
+1260(Aspect)S
+10 R
+1564(recomputes)S
+2062(the)S
+2222(view)S
+2454(so)S
+2581(that)S
+2769(the)S
+2929(aspect)S
+3217(ratio)S
+3439(is)S
+3545(1.0.)S
+3734(Aspect)S
+4050(also)S
+4250(integerizes)S
+4721(the)S
+4882(zoom)S
+5143(factor)S
+5414(\(use)S
+3240 V
+1260(the)S
+1412(version)S
+1736(in)S
+1844(the)S
+1996(View)S
+2242(menu)S
+2494(if)S
+2585(you)S
+2765(don't)S
+3006(want)S
+3230(integerization\).)S
+3480 V
+10 I
+1260(Fit)S
+1408(Frame)S
+10 R
+1706(makes)S
+1993(the)S
+2147(display)S
+2468(window)S
+2822(the)S
+2976(same)S
+3213(size)S
+3400(as)S
+3515(the)S
+3669(frame)S
+3933(bu)S
+4033 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4094(er.)S
+4228(Note)S
+4454(that)S
+4636(autoscale)S
+5039(has)S
+5204(much)S
+5458(the)S
+3600 V
+1260(same)S
+1499(e)S
+1543 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1604(ect,)S
+1779(and)S
+1957(allows)S
+2252(you)S
+2436(to)S
+2548(resize)S
+2814(the)S
+2970(display)S
+3293(window)S
+3649(to)S
+3761(any)S
+3938(size)S
+4126(you)S
+4309(want,)S
+4561(or)S
+4677(view)S
+4904(images)S
+5220(too)S
+5381(large)S
+3720 V
+1260(to)S
+1368(\256t)S
+1482(on)S
+1612(the)S
+1764(screen.)S
+4008 V
+9 B
+1080(ENHANCEMENT)S
+1827(CONTROLS)S
+4128 V
+10 R
+1260(At)S
+1398(the)S
+1558(top)S
+1724(is)S
+1829(a)S
+1911(scrolled)S
+2265(list)S
+2426(of)S
+2547(all)S
+2685(the)S
+2845(available)S
+3243(colormaps.)S
+3722(Click)S
+3977(on)S
+4115(the)S
+4275(one)S
+4457(you)S
+4645(want)S
+4878(to)S
+4995(load.)S
+5231(You)S
+5442(can)S
+4248 V
+1260(add)S
+1447(your)S
+1673(own)S
+1888(colormaps)S
+2347(to)S
+2468(this)S
+2656(list)S
+2822(by)S
+2965(de\256ning)S
+3336(the)S
+10 I
+3501(cmap[12])S
+10 R
+3938(or)S
+10 I
+4063(cmapDir[12])S
+10 R
+4638(command)S
+5074(line)S
+5266(\257ags)S
+5497(or)S
+4368 V
+1260(application)S
+1734(resources.)S
+4608 V
+1260(The)S
+1451(two)S
+1637(sliders)S
+1934(adjust)S
+2209(the)S
+2367(contrast)S
+2719(\(upper)S
+3015(slider\))S
+3306(and)S
+3486(brightness)S
+3933(\(lower)S
+4229(slider\))S
+4520(of)S
+4640(the)S
+4799(display.)S
+5150(The)S
+10 I
+5342(Invert)S
+4728 V
+10 R
+1260(button)S
+1549(inverts)S
+1854(the)S
+2009(colormap)S
+2419(\(multiples)S
+2858(the)S
+3013(contrast)S
+3362(by)S
+3495(-1.0\).)S
+3744(Note)S
+3971(that)S
+4154(due)S
+4331(to)S
+4442(the)S
+4597(use)S
+4763(of)S
+4879(the)S
+5033(private)S
+5342(color-)S
+4848 V
+1260(map)S
+1464(the)S
+1618(sliders)S
+1911(are)S
+2064(a)S
+2140(bit)S
+2278(sluggish)S
+2644(when)S
+2892(dragged)S
+3245(to)S
+3355(window)S
+3709(the)S
+3863(display.)S
+4209(If)S
+4307(this)S
+4484(is)S
+4583(annoying,)S
+5013(using)S
+5263(MB3)S
+5502(in)S
+4968 V
+1260(the)S
+1412(display)S
+1731(window)S
+2083(is)S
+2180(faster.)S
+5208 V
+1260(The)S
+10 I
+1454(Normalize)S
+10 R
+1910(button)S
+2205(\(on)S
+2377(the)S
+2538(bottom)S
+2861(of)S
+2983(the)S
+3145(control)S
+3468(panel\))S
+3757(will)S
+3953(normalize)S
+4392(the)S
+4554(enhancement,)S
+5145(i.e.)S
+5307(set)S
+5458(the)S
+5328 V
+1260(contrast)S
+1613(and)S
+1794(brightness)S
+2242(to)S
+2357(the)S
+2516(default)S
+2830(one-to-one)S
+3299(values)S
+3590(\(1.0,)S
+3809(0.5\).)S
+4028(This)S
+4242(is)S
+4345(the)S
+4503(preferred)S
+4903(setting)S
+5206(for)S
+5358(many)S
+5448 V
+1260(of)S
+1381(the)S
+1541(pseudocolor)S
+2067(colortables)S
+2543(and)S
+2725(for)S
+2879(private)S
+3194(colormaps)S
+3648(loaded)S
+3952(from)S
+4184(disk)S
+4389(images.)S
+4735(The)S
+10 I
+4929(Initialize)S
+10 R
+5324(button)S
+5568 V
+1260(does)S
+1473(a)S
+1547(reset)S
+1765(of)S
+1878(the)S
+2030(server.)S
+5856 V
+9 B
+1080(BLINK)S
+1397(CONTROLS)S
+5976 V
+10 I
+1260(Blink)S
+1503(frames)S
+10 R
+1807(is)S
+1907(the)S
+2062(list)S
+2218(of)S
+2334(frames)S
+2638(to)S
+2749(be)S
+2876(blinked.)S
+3234(When)S
+3505(blink)S
+3744(mode)S
+3999(is)S
+4099(in)S
+4210(e)S
+4254 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4315(ect)S
+4464(ximtool)S
+4809(just)S
+4987(cycles)S
+5269(through)S
+6096 V
+1260(these)S
+1498(frames)S
+1802(endlessly,)S
+2232(pausing)S
+2576("blink)S
+2856(rate")S
+3079(seconds)S
+3428(between)S
+3793(each)S
+4008(frame.)S
+4298(The)S
+4486(same)S
+4724(frame)S
+4989(can)S
+5160(be)S
+5287(entered)S
+6216 V
+1260(in)S
+1371(the)S
+1526(list)S
+1682(more)S
+1920(than)S
+2125(once.)S
+2371(To)S
+2515(program)S
+2886(an)S
+3013(arbitrary)S
+3389(list)S
+3545(of)S
+3662(blink)S
+3902(frames,)S
+4232(hit)S
+4372(the)S
+4528(Reset)S
+4784(button)S
+5074(and)S
+5252(click)S
+5480(on)S
+6336 V
+1260(each)S
+1472(blink)S
+1708(frame)S
+1970(button)S
+2256(until)S
+2470(it)S
+2556(is)S
+2653(set)S
+2794(to)S
+2902(the)S
+3054(desired)S
+3372(frame)S
+3634(number.)S
+6576 V
+1260(The)S
+10 I
+1455(Blink)S
+1706(Rate)S
+10 R
+1929(can)S
+2107(be)S
+2242(adjusted)S
+2616(as)S
+2740(slow)S
+2970(or)S
+3094(as)S
+3218(fast)S
+3403(as)S
+3527(you)S
+3718(want)S
+3953(using)S
+4211(the)S
+4374(arrow)S
+4647(buttons.)S
+5008(If)S
+5115(you)S
+5306(set)S
+5458(the)S
+6696 V
+1260(blink)S
+1496(rate)S
+1675(small)S
+1922(enough)S
+2246(it)S
+2332(will)S
+2518(go)S
+2648(to)S
+2756(zero,)S
+2982(enabling)S
+3356(single)S
+3625(step)S
+3816(mode)S
+4068(\(see)S
+4258(below\).)S
+6936 V
+1260(The)S
+10 I
+1449(Register)S
+10 R
+1816(button)S
+2106(registers)S
+2478(all)S
+2612(the)S
+2768(blink)S
+3008(frames)S
+3313(with)S
+3525(the)S
+3681(current)S
+3997(display)S
+4320(frame.)S
+4612(Frames)S
+4941(not)S
+5104(in)S
+5217(the)S
+5374(blink)S
+7056 V
+1260(list)S
+1413(are)S
+1564(not)S
+1722(a)S
+1766 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1827(ected.)S
+7296 V
+1260(The)S
+10 I
+1446(Match)S
+1732(LUTs)S
+10 R
+1986(button)S
+2273(sets)S
+2454(the)S
+2607(enhancement)S
+3164(of)S
+3278(all)S
+3409(blink)S
+3646(frames)S
+3948(to)S
+4057(the)S
+4210(same)S
+4446(values)S
+4733(as)S
+4848(the)S
+5002(display)S
+5323(frame.)S
+7776 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(11)S
+7920 V
+EP
+%%Page: 12 12
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(Frames)S
+1584(not)S
+1742(in)S
+1850(the)S
+2002(blink)S
+2238(list)S
+2391(are)S
+2542(not)S
+2700(a)S
+2744 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2805(ected.)S
+1200 V
+1260(The)S
+10 I
+1453(Blink)S
+10 R
+1702(button)S
+1996(turns)S
+2234(blink)S
+2478(on)S
+2616(and)S
+2799(o)S
+2849 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2910(.)S
+2974(When)S
+3251(the)S
+3412(blink)S
+3657(rate)S
+3845(is)S
+3951(set)S
+4101(to)S
+4218(zero)S
+4428(the)S
+4589(Blink)S
+4851(button)S
+5146(will)S
+5341(single)S
+1320 V
+1260(step)S
+1451(through)S
+1792(the)S
+1944(blink)S
+2180(frames,)S
+2506(one)S
+2680(frame)S
+2942(per)S
+3099(button)S
+3385(press.)S
+1560 V
+10 B
+1260(NOTE:)S
+10 R
+1615(You)S
+1825(can)S
+2001(blink)S
+2245(no)S
+2383(matter)S
+2677(what)S
+2910(ximtool)S
+3261(options)S
+3595(are)S
+3755(in)S
+3872(e)S
+3916 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3977(ect,)S
+4157(but)S
+4324(many)S
+4585(of)S
+4707(these)S
+4951(will)S
+5146(slow)S
+5374(blink)S
+1680 V
+1260(down.)S
+1541(To)S
+1686(get)S
+1842(the)S
+1998(fastest)S
+2287(blink)S
+2527(you)S
+2711(may)S
+2917(want)S
+3145(to)S
+3257(turn)S
+3451(o)S
+3501 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3595(the)S
+3750(panner)S
+4054(and)S
+4231(coords)S
+4530(box,)S
+4738(and)S
+4915(match)S
+5192(the)S
+5347(LUTs)S
+1800 V
+1260(of)S
+1382(all)S
+1521(the)S
+1682(blink)S
+1927(frames.)S
+2292(All)S
+2459(the)S
+2620(ximtool)S
+2971(controls)S
+3332(are)S
+3492(fully)S
+3721(active)S
+3999(during)S
+4300(blink)S
+4546(mode,)S
+4833(plus)S
+5040(you)S
+5230(can)S
+5408(load)S
+1920 V
+1260(frames)S
+1561(etc.)S
+2208 V
+9 B
+1080(OPTIONS:)S
+2328 V
+10 B
+1260(Panner)S
+2448 V
+10 R
+1510(Toggles)S
+1862(whether)S
+2213(to)S
+2321(display)S
+2640(the)S
+2792(panner)S
+3093(marker.)S
+2616 V
+10 B
+1260(Coords)S
+1601(Box)S
+2736 V
+10 R
+1510(Toggles)S
+1862(whether)S
+2213(to)S
+2321(display)S
+2640(the)S
+2792(coordinate)S
+3243(box)S
+3423(marker.)S
+2904 V
+10 B
+1260(Autoscale)S
+3024 V
+10 R
+1510(If)S
+1613(autoscale)S
+2021(is)S
+2126(enabled)S
+2474(then)S
+2684(at)S
+2794(zoom=1,)S
+3185(the)S
+3345(frame)S
+3615(bu)S
+3715 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3776(er)S
+3891(will)S
+4085(be)S
+4217(automatically)S
+4799(scaled)S
+5086(to)S
+5202(\256t)S
+5324(within)S
+3144 V
+1510(the)S
+1667(display)S
+1991(window.)S
+2373(With)S
+2608(autoscale)S
+3014(disabled)S
+3382(\(the)S
+3572(default\),)S
+3942(the)S
+4099(image)S
+4377(scale)S
+4610(is)S
+4711(more)S
+4950(predictable,)S
+5452(but)S
+3264 V
+1510(the)S
+1662(image)S
+1936(may)S
+2138(be)S
+2262(clipped)S
+2586(by)S
+2716(the)S
+2868(display)S
+3187(window,)S
+3564(or)S
+3677(may)S
+3879(not)S
+4037(\256ll)S
+4179(the)S
+4331(display)S
+4650(window.)S
+3432 V
+10 B
+1260(Antialiasing)S
+3552 V
+10 R
+1510(When)S
+1780(dezooming)S
+2257(an)S
+2384(image,)S
+2686(i.e.,)S
+2866(displaying)S
+3316(a)S
+3393(large)S
+3625(image)S
+3902(in)S
+4013(a)S
+4090(smaller)S
+4417(display)S
+4739(window,)S
+5119(antialiasing)S
+3672 V
+1510(causes)S
+1802(all)S
+1933(the)S
+2086(data)S
+2283(to)S
+2392(be)S
+2517(used)S
+2731(to)S
+2840(compute)S
+3215(the)S
+3368(displayed)S
+3782(image.)S
+4082(If)S
+4179(antialiasing)S
+4671(is)S
+4769(disabled)S
+5133(then)S
+5336(image)S
+3792 V
+1510(is)S
+1607(subsampled)S
+2109(to)S
+2217(compute)S
+2592(the)S
+2745(displayed)S
+3159(image.)S
+3459(Antialiasing)S
+3979(can)S
+4148(prevent)S
+4478(subsampling)S
+5015(from)S
+5240(omitting)S
+3912 V
+1510(image)S
+1792(features)S
+2145(that)S
+2333(don't)S
+2582(fall)S
+2753(in)S
+2869(the)S
+3028(sample)S
+3348(grid,)S
+3571(but)S
+3736(it)S
+3829(is)S
+3933(signi\256cantly)S
+4465(slower)S
+4768(than)S
+4977(dezooming)S
+5458(via)S
+4032 V
+1510(subsampling.)S
+2101(The)S
+2286(default)S
+2593(is)S
+2690(no)S
+2820(antialising.)S
+4200 V
+10 B
+1260(Tile)S
+1457(Frames)S
+4320 V
+10 R
+1510(The)S
+1695(default)S
+2002(display)S
+2321(mode)S
+2573(is)S
+2670(to)S
+2778(view)S
+3002(one)S
+3177(frame)S
+3440(at)S
+3543(a)S
+3618(time.)S
+3852(In)S
+3966(tile)S
+4125(frames)S
+4427(mode,)S
+4705(2)S
+4786(or)S
+4900(4)S
+4981(frames)S
+5283(may)S
+5486(be)S
+4440 V
+1510(viewed)S
+1834(simultaneously)S
+2476(in)S
+2590(the)S
+2748(display)S
+3073(window.)S
+3486(All)S
+3650(the)S
+3808(usual)S
+4055(operations)S
+4507(\(zoom)S
+4798(and)S
+4977(pan,)S
+5181(colortable)S
+4560 V
+1510(enhancement,)S
+2091(cursor)S
+2370(readback,)S
+2784(etc.\))S
+2988(still)S
+3169(work)S
+3404(for)S
+3550(each)S
+3762(frame)S
+4024(even)S
+4242(when)S
+4488(in)S
+4596(tile)S
+4754(frames)S
+5055(mode.)S
+4728 V
+10 B
+1260(Warnings)S
+4848 V
+10 R
+1510(The)S
+1701(warnings)S
+2103(options)S
+2435(toggles)S
+2761(whether)S
+3119(you)S
+3306(see)S
+3470(warning)S
+3834(dialog)S
+4121(boxes)S
+4391(in)S
+4506(situations)S
+4927(like)S
+5114(overwriting)S
+4968 V
+1510(an)S
+1634(existing)S
+1981(\256le,)S
+2164(clearing)S
+2515(the)S
+2667(frame)S
+2929(bu)S
+3029 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3090(er,)S
+3222(etc.)S
+5256 V
+9 B
+900(COLORMAP)S
+1462(SELECTION)S
+5376 V
+10 R
+1260(By)S
+1410(default)S
+1721(XImtool)S
+2094(will)S
+2284(display)S
+2607(images)S
+2924(using)S
+3175(either)S
+3436(a)S
+3514(grayscale)S
+3924(colormap)S
+4335(\(e.g.)S
+4576(if)S
+4671(loaded)S
+4971(by)S
+5105(a)S
+5183(client\),)S
+5497(or)S
+5496 V
+1260(a)S
+1346(private)S
+1665(colormap)S
+2084(when)S
+2342(loading)S
+2684(an)S
+2820(image)S
+3106(from)S
+3342(disk)S
+3551(that)S
+3743(contains)S
+4118(a)S
+4204(colormap.)S
+4648(Each)S
+4888(frame)S
+5161(de\256nes)S
+5485(its)S
+5616 V
+1260(own)S
+1470(colormap)S
+1885(so)S
+2013(you)S
+2202(can)S
+2379(de\256ne)S
+2662(di)S
+2740 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2801(erent)S
+3039(colormaps)S
+3494(or)S
+3616(enhancements)S
+4220(for)S
+4375(each)S
+4596(frame,)S
+4892(they)S
+5103(will)S
+5298(change)S
+5736 V
+1260(automatically)S
+1834(as)S
+1947(you)S
+2127(cycle)S
+2367(through)S
+2708(the)S
+2860(frames.)S
+6024 V
+9 B
+1080(BUILTIN)S
+1487(COLORMAPS)S
+6144 V
+10 R
+1260(Once)S
+1501(loaded,)S
+1823(the)S
+1976(colormap)S
+2384(may)S
+2588(either)S
+2847(be)S
+2973(changed)S
+3337(using)S
+3586(the)S
+3740(builtin)S
+4034(colormap)S
+4443(menu)S
+4697(under)S
+4956(the)S
+5110(View)S
+5358(menu)S
+6264 V
+1260(button)S
+1559(on)S
+1702(the)S
+1867(main)S
+2110(window,)S
+2500(or)S
+2625(from)S
+2861(the)S
+3025(Enhancement)S
+3610(box)S
+3802(on)S
+3944(the)S
+4108(control)S
+4433(panel.)S
+4716(XImtool)S
+5097(has)S
+5272(about)S
+5536(a)S
+6384 V
+1260(dozen)S
+1556(colormap)S
+1991(options)S
+2344(builtin,)S
+2689(other)S
+2952(user-de\256ned)S
+3503(colormaps)S
+3977(may)S
+4208(optionally)S
+4673(be)S
+4826(loaded.)S
+5206(It)S
+5326(is)S
+5452(not)S
+6504 V
+1260(presently)S
+1656(possible)S
+2014(to)S
+2122(save)S
+2329(colormaps)S
+2775(for)S
+2921(later)S
+3128(use.)S
+6792 V
+9 B
+1080(USER-DEFINED)S
+1782(COLORMAPS)S
+6912 V
+10 R
+1260(The)S
+10 I
+1454(cmap[12])S
+10 R
+1887(and)S
+10 I
+2070(cmapDir[12])S
+10 R
+2642(resources)S
+3057(\(or)S
+3212(command)S
+3645(line)S
+3834(arguments\))S
+4322(are)S
+4482(used)S
+4705(to)S
+4823(tell)S
+4991(which)S
+5275(speci\256c)S
+7032 V
+1260(colormaps)S
+1719(to)S
+1840(make)S
+2099(available)S
+2502(or)S
+2628(where)S
+2914(to)S
+3035(look)S
+3256(for)S
+3415(colortables)S
+3895(respectively.)S
+4474(The)S
+4671(colortables)S
+5151(are)S
+5314(loaded)S
+7152 V
+1260(when)S
+1519(ximtool)S
+1874(starts)S
+2128(up,)S
+2296(or)S
+2422(when)S
+2681(it)S
+2780(is)S
+2890(reinitialized)S
+3410(\(e.g.)S
+3630(by)S
+3773(pressing)S
+4149(the)S
+4314(Initialize)S
+4712(button)S
+5011(in)S
+5132(the)S
+5297(control)S
+7272 V
+1260(panel\).)S
+1598(XImtool)S
+1971(will)S
+2161(ignore)S
+2450(any)S
+2628(\256les)S
+2829(in)S
+2941(the)S
+3097(colormap)S
+3508(directory)S
+3901(which)S
+4178(do)S
+4311(not)S
+4472(look)S
+4683(like)S
+4866(colortables.)S
+5392(New)S
+7752 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(12)S
+7920 V
+EP
+%%Page: 13 13
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(colortables)S
+1728(will)S
+1914(also)S
+2105(be)S
+2229(added)S
+2497(automatically)S
+3071(for)S
+3217(each)S
+3429(image)S
+3703(loaded)S
+3999(from)S
+4223(disk.)S
+1200 V
+1260(The)S
+1451(format)S
+1753(of)S
+1872(a)S
+1952(user)S
+2154(lookup)S
+2468(table)S
+2698(is)S
+2801(very)S
+3015(simple:)S
+3347(each)S
+3566(row)S
+3758(de\256nes)S
+4078(one)S
+4259(colortable)S
+4695(entry,)S
+4962(and)S
+5143(consists)S
+5497(of)S
+1320 V
+1260(three)S
+1489(columns)S
+1858(de\256ning)S
+2216(the)S
+2368(red,)S
+2550(green,)S
+2826(and)S
+3000(blue)S
+3202(values)S
+3487(scaled)S
+3766(to)S
+3874(the)S
+4026(range)S
+4277(0.0)S
+4432(\(o)S
+4515 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4576(\))S
+4639(to)S
+4747(1.0)S
+4902(\(full)S
+5104(intensity\).)S
+1560 V
+1500(R)S
+1597(G)S
+1699(B)S
+1680 V
+1500(R)S
+1597(G)S
+1699(B)S
+1800 V
+1500(\(etc.\))S
+2040 V
+1260(Blank)S
+1529(and)S
+1703(comment)S
+2105(lines)S
+2324(\(lines)S
+2576(beginning)S
+3006(with)S
+3214(a)S
+3288('#'\))S
+3467(are)S
+3618(ignored.)S
+2280 V
+1260(Usually)S
+1605(256)S
+1789(rows)S
+2017(are)S
+2172(provided,)S
+2586(but)S
+2748(the)S
+2904(number)S
+3243(may)S
+3449(actually)S
+3799(be)S
+3927(anything)S
+4311(in)S
+4423(the)S
+4579(range)S
+4834(1)S
+4918(to)S
+5031(256.)S
+5241(XImtool)S
+2400 V
+1260(will)S
+1451(interpolate)S
+1912(the)S
+2068(table)S
+2296(as)S
+2413(necessary)S
+2834(to)S
+2946(compute)S
+3324(the)S
+3480(colortable)S
+3913(values)S
+4202(used)S
+4419(in)S
+4531(XImtool.)S
+4929(XImtool)S
+5302(uses)S
+5508(at)S
+2520 V
+1260(most)S
+1485(201)S
+1665(colors)S
+1939(to)S
+2047(render)S
+2331(pixel)S
+2561(data,)S
+2782(so)S
+2901(it)S
+2987(is)S
+3084(usually)S
+3403(necessary)S
+3820(to)S
+3928(interpolate)S
+4385(the)S
+4537(table)S
+4761(when)S
+5007(it)S
+5093(is)S
+5190(loaded.)S
+2760 V
+1260(The)S
+1446(name)S
+1693(of)S
+1807(the)S
+1960(colortable)S
+2390(as)S
+2504(it)S
+2591(will)S
+2778(appear)S
+3074(in)S
+3183(the)S
+3336(XImtool)S
+3706(control)S
+4020(panel)S
+4267(is)S
+4365(the)S
+4518(root)S
+4710(name)S
+4957(of)S
+5072(the)S
+5226(\256le,)S
+5411(e.g.,)S
+2880 V
+1260(if)S
+1365(the)S
+1531(\256le)S
+1703(is)S
+1814("rainbow.lut")S
+2398(the)S
+2564(colortable)S
+3007(name)S
+3267(will)S
+3467(be)S
+3605("rainbow".)S
+4083(Lower)S
+4387(case)S
+4602(names)S
+4901(are)S
+5065(suggested)S
+5502(to)S
+3000 V
+1260(avoid)S
+1525(name)S
+1784(collisions)S
+2211(with)S
+2432(the)S
+2597(builtin)S
+2902(colortables.)S
+3408(Private)S
+3734(colormaps)S
+4193(for)S
+4352(disk)S
+4562(images)S
+4888(will)S
+5088(be)S
+5226(have)S
+5458(the)S
+3120 V
+1260(same)S
+1497(name)S
+1745(as)S
+1860(the)S
+2014(image)S
+2290(loaded.)S
+2613(If)S
+2711(the)S
+2865(same)S
+3102(colortable)S
+3533(\256le)S
+3693(appears)S
+4029(in)S
+4139(multiple)S
+4505(user)S
+4703(colortable)S
+5134(directories,)S
+3240 V
+1260(the)S
+1412(\256rst)S
+1598(one)S
+1772(found)S
+2035(will)S
+2221(be)S
+2345(used.)S
+3528 V
+9 B
+1080(MINIMIZING)S
+1677(COLORMAP)S
+2239(CONFLICTS)S
+3648 V
+10 R
+1260(The)S
+1456(Gterm)S
+1752(widget)S
+2065(used)S
+2289(by)S
+2430(XImtool)S
+2810(\(i.e.)S
+3006(the)S
+3169(main)S
+3410(display)S
+3740(window\))S
+4136(uses)S
+4349(a)S
+4434(private)S
+4753(global)S
+5045(colormap)S
+5464(for)S
+3768 V
+1260(display,)S
+1615(this)S
+1801(allows)S
+2103(it)S
+2200(to)S
+2319(have)S
+2548(greater)S
+2865(control)S
+3189(over)S
+3407(color)S
+3653(cell)S
+3838(allocation)S
+4273(but)S
+4441(can)S
+4619(occasionally)S
+5158(also)S
+5359(cause)S
+3888 V
+1260("colormap)S
+1712(\257ashing")S
+2104(as)S
+2221(the)S
+2377(mouse)S
+2672(is)S
+2773(moved)S
+3079(in)S
+3191(and)S
+3370(out)S
+3533(of)S
+3651(the)S
+3808(application.)S
+4372(The)S
+4562(problem)S
+4930(here)S
+5136(is)S
+5238(that)S
+5423(in)S
+5536(a)S
+4008 V
+1260(system)S
+1572(with)S
+1784(only)S
+1996(an)S
+2124(8-bit)S
+2347(colormap)S
+2758(\(256)S
+2975(colors\))S
+3286(all)S
+3420(applications)S
+3937(must)S
+4165(compete)S
+4536(for)S
+4685(colors,)S
+4987(programs)S
+5397(such)S
+4128 V
+1260(as)S
+1380(XV)S
+1561(or)S
+1681(Netscape)S
+2083(allocate)S
+2430(colors)S
+2711(from)S
+2942(the)S
+3102(default)S
+3417(colormap)S
+3832(leaving)S
+4164(only)S
+4380(a)S
+4462(few)S
+4649(free)S
+4841(cells)S
+5062(for)S
+5216(XImtool.)S
+4248 V
+1260(Since)S
+1513(XImtool)S
+1883(de\256nes)S
+2197(a)S
+2271(private)S
+2578(global)S
+2858(colormap)S
+3265(it)S
+3351(is)S
+3448(still)S
+3629(able)S
+3825(to)S
+3933(allocate)S
+4273(the)S
+4425(needed)S
+4737(cells)S
+4950(rather)S
+5212(than)S
+5414(fail-)S
+4368 V
+1260(ing,)S
+1449(but)S
+1613(it's)S
+1777(allocating)S
+2207(cells)S
+2426(already)S
+2755(used)S
+2974(by)S
+3110(other)S
+3351(applications.)S
+3925(As)S
+4072(the)S
+4230(mouse)S
+4527(moves)S
+4824(out)S
+4989(of)S
+5109(the)S
+5268(ximtool)S
+4488 V
+1260(window)S
+1623(those)S
+1875(cells)S
+2099(are)S
+2261(once)S
+2490(again)S
+2747(de\256ned)S
+3082(in)S
+3201(terms)S
+3464(of)S
+3587(the)S
+3749(default)S
+4066(colormap,)S
+4508(so)S
+4637(the)S
+4799(ximtool)S
+5151(window)S
+5513(is)S
+4608 V
+1260(then)S
+1470(using)S
+1725(a)S
+1807(di)S
+1885 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1946(erent)S
+2183(colormap.)S
+2653(It)S
+2752(is)S
+2857(this)S
+3040(switching)S
+3467(of)S
+3588(the)S
+3748(colormap)S
+4164(context)S
+4497(that)S
+4686(causes)S
+4985(the)S
+5146(\257ashing)S
+5502(to)S
+4728 V
+1260(occur,)S
+1536(but)S
+1694(there)S
+1923(are)S
+2074(a)S
+2148(few)S
+2327(things)S
+2602(that)S
+2782(can)S
+2950(be)S
+3074(done)S
+3298(to)S
+3406(help)S
+3608(minimize)S
+4016(this.)S
+4968 V
+1260(XImtool)S
+1640(logically)S
+2031(de\256nes)S
+2356(200)S
+2548(colors)S
+2834(which)S
+3120(the)S
+3284(client)S
+3548(image)S
+3834(display)S
+4165(program)S
+4545(can)S
+4725(use)S
+4900(to)S
+5020(render)S
+5316(pixels.)S
+5088 V
+1260(However,)S
+1687(ximtool)S
+2036(may)S
+2245(or)S
+2365(may)S
+2574(not)S
+2739(actually)S
+3092(allocate)S
+3439(all)S
+3576(of)S
+3695(those)S
+3942(colors.)S
+4277(By)S
+4430(default)S
+4743(it)S
+4835(currently)S
+5231(allocates)S
+5208 V
+1260(only)S
+1479(about)S
+1743(192)S
+1935(colors,)S
+2246(to)S
+2366(reserve)S
+2695(64)S
+2837(colors)S
+3123(for)S
+3281(the)S
+3445(other)S
+3692(windows)S
+4095(on)S
+4237(the)S
+4401(screen.)S
+4752(You)S
+4966(don't)S
+5219(normally)S
+5328 V
+1260(notice)S
+1539(this)S
+1719(as)S
+1837(1\))S
+1955(usually)S
+2279(the)S
+2436(default)S
+2748(screen)S
+3037(colormap)S
+3449(has)S
+3617(enough)S
+3946(free)S
+4135(cells)S
+4353(to)S
+4466(allow)S
+4722(ximtool)S
+5068(to)S
+5180(match)S
+5458(the)S
+5448 V
+1260(colors,)S
+1570(and)S
+1755(2\))S
+1879(the)S
+2042(extra)S
+2282(unallocated)S
+2784(cells)S
+3009(correspond)S
+3494(to)S
+3614(the)S
+3778(brightest)S
+4170(pixels)S
+4451(in)S
+4571(the)S
+4735(rendered)S
+5125(image,)S
+5436(and)S
+5568 V
+1260(these)S
+1496(colors)S
+1771(may)S
+1974(not)S
+2132(be)S
+2256(used)S
+2469(or)S
+2582(usually)S
+2901(only)S
+3109(correspond)S
+3582(to)S
+3690(a)S
+3764(few)S
+3943(small)S
+4190(regions)S
+4514(near)S
+4715(the)S
+4867(saturated)S
+5257(cores)S
+5497(of)S
+5688 V
+1260(bright)S
+1529(objects.)S
+5928 V
+1260(You)S
+1465(can)S
+1636(eliminate)S
+2041(this)S
+2219(problem)S
+2585(by)S
+2718(setting)S
+3018(the)S
+10 I
+3173(basePixel)S
+10 R
+3594(resource)S
+3965(to)S
+4077(e.g.)S
+4285(48)S
+4419(instead)S
+4736(of)S
+4853(64,)S
+5012(which)S
+5290(will)S
+5480(let)S
+6048 V
+1260(the)S
+1428(gterm)S
+1707(widget)S
+2025(allocate)S
+2381(all)S
+2527(200)S
+2723(colors.)S
+3068(However,)S
+3504(this)S
+3695(isn't)S
+3918(recommended)S
+4528(for)S
+4689(normal)S
+5017(use)S
+5195(as)S
+5323(it)S
+5424(will)S
+6168 V
+1260(increase)S
+1624(the)S
+1784(likelihood)S
+2228(of)S
+2349(colormap)S
+2764(\257ashing.)S
+3174(If)S
+3278(you)S
+3466(change)S
+10 I
+3787(basePixel)S
+10 R
+4175(,)S
+4239(either)S
+4505(restart)S
+4793(the)S
+4954(X)S
+5065(server)S
+5347(or)S
+5469(set)S
+6288 V
+1260(the)S
+1418(resource)S
+10 I
+1791(cmapInitialize)S
+10 R
+2363(=)S
+10 I
+2419(True)S
+10 R
+2644(to)S
+2758(force)S
+2998(the)S
+3156(gterm)S
+3425(widget)S
+3732(to)S
+3845(update)S
+4146(its)S
+4276(global)S
+4561(colormap)S
+4973(resource)S
+5345(in)S
+5458(the)S
+6408 V
+1260(X)S
+1362(server.)S
+1660(The)S
+1845(colormap)S
+2252(resource)S
+2619(may)S
+2821(also)S
+3012(be)S
+3136(deleted)S
+3454(by)S
+3584(using)S
+3831(the)S
+3983(command)S
+6648 V
+10 I
+1980(xprop)S
+2243(-root)S
+2473(-remove)S
+2829(GT_image)S
+6888 V
+10 R
+1260(These)S
+1528(options)S
+1853(may)S
+2055(also)S
+2246(be)S
+2370(set)S
+2511(on)S
+2641(the)S
+2793(command)S
+3217(line)S
+3397(when)S
+3643(\256rst)S
+3829(starting)S
+4159(up.)S
+7128 V
+1260(In)S
+1388(general)S
+1726(one)S
+1915(can)S
+2098(set)S
+2254(the)S
+2421(Gterm)S
+2721(widget)S
+3039(resources)S
+10 I
+3461(basePixel)S
+10 R
+3895(and)S
+10 I
+4085(maxColors)S
+10 R
+4570(to)S
+4694(specify)S
+5028(the)S
+5196(region)S
+5497(of)S
+7248 V
+1260(colormap)S
+1680(space)S
+1944(to)S
+2065(be)S
+2202(used)S
+2428(for)S
+2587(image)S
+2874(display.)S
+3261(If)S
+3370(you)S
+3563(set)S
+10 I
+3717(maxColors)S
+10 R
+4199(to)S
+4320(a)S
+4407(small)S
+4667(value,)S
+4951(the)S
+5116(200)S
+5308(logical)S
+7728 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(13)S
+7920 V
+EP
+%%Page: 14 14
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(colors)S
+1541(de\256ned)S
+1872(by)S
+2009(the)S
+2168(widget)S
+2477(will)S
+2670(be)S
+2801(mapped)S
+3154(by)S
+3291(the)S
+3450(imtool)S
+3749(color)S
+3991(model)S
+4278(into)S
+4471(whatever)S
+4873(number)S
+5215(of)S
+5336(colors)S
+1080 V
+1260(are)S
+1417(actually)S
+1769(available)S
+2165(to)S
+2279(the)S
+2437(widget.)S
+2800(For)S
+2974(example,)S
+3372(in)S
+3485(the)S
+3642(default)S
+3954(setup,)S
+4225(200)S
+4410(color)S
+4650(values)S
+4940(are)S
+5096(really)S
+5358(being)S
+1200 V
+1260(mapped)S
+1606(into)S
+1792(192)S
+1972(color)S
+2207(cells)S
+2420(used)S
+2633(for)S
+2779(display,)S
+3123(the)S
+3275(remaining)S
+3710(colors)S
+3984(are)S
+4135(used)S
+4348(for)S
+4494(buttons,)S
+4845(menus)S
+5137(etc)S
+5284(and)S
+5459(are)S
+1320 V
+1260(allocated)S
+1650(from)S
+1874(the)S
+2026(default)S
+2333(colormap)S
+2740(by)S
+2870(the)S
+3022(X)S
+3124(toolkit)S
+3416(when)S
+3662(the)S
+3814(application)S
+4288(starts)S
+4529(up.)S
+1560 V
+1260(Even)S
+1501(though)S
+1815(the)S
+1973(Gterm)S
+2264(widget)S
+2572(uses)S
+2780(a)S
+2860(private)S
+3174(colormap,)S
+3613(it)S
+3706(is)S
+3810(a)S
+3891(private)S
+10 I
+4205(global)S
+10 R
+4498(colormap)S
+4912(meaning)S
+5293(that)S
+5480(all)S
+1680 V
+1260(Gterm)S
+1550(widgets)S
+1896(share)S
+2141(the)S
+2298(same)S
+2537(colormap.)S
+3003(An)S
+3159(example)S
+3531(of)S
+3648(colormap)S
+4059(sharing)S
+4387(in)S
+4499(ximtool)S
+4845(is)S
+4946(the)S
+5102(main)S
+5336(image)S
+1800 V
+1260(window)S
+1619(and)S
+1800(the)S
+1959(colorbar)S
+2328(window.)S
+2742(These)S
+3017(are)S
+3175(two)S
+3362(separate)S
+3725(gterm)S
+3995(widgets)S
+4343(that)S
+4530(share)S
+4777(the)S
+4936(same)S
+5178(colormap.)S
+1920 V
+1260(They)S
+1506(have)S
+1735(to)S
+1854(share)S
+2105(the)S
+2268(same)S
+2514(colormap,)S
+2957(as)S
+3080(otherwise)S
+3508(when)S
+3764(you)S
+3954(windowed)S
+4410(the)S
+4572(main)S
+4812(image)S
+5096(window)S
+5458(the)S
+2040 V
+1260(colorbar)S
+1630(window)S
+1990(would)S
+2278(not)S
+2444(accurately)S
+2891(re\257ect)S
+3178(the)S
+3338(modi\256ed)S
+3732(colormap.)S
+4203(By)S
+4359(default)S
+4675(two)S
+4864(separate)S
+5229(ximtools)S
+2160 V
+1260(would)S
+1556(also)S
+1763(share)S
+2019(the)S
+2186(same)S
+2436(colormap)S
+2858(meaning)S
+3247(contrast)S
+3608(enhancements)S
+4218(in)S
+4341(one)S
+4530(window)S
+4897(would)S
+5192(a)S
+5236 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5297(ect)S
+5458(the)S
+2280 V
+1260(other.)S
+1563(By)S
+1723(resetting)S
+2110(the)S
+10 I
+2275(cmapName)S
+10 R
+2767(command)S
+3204(line)S
+3397(option)S
+3696(or)S
+3822(resource)S
+4203(you)S
+4397(can)S
+4579(change)S
+4905(the)S
+5071(name)S
+5331(of)S
+5458(the)S
+2400 V
+1260(private)S
+1582(colormap)S
+2004(used)S
+2232(causing)S
+2582(separate)S
+2953(ximtools)S
+3349(to)S
+3472(use)S
+3650(di)S
+3728 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3789(erent)S
+4033(colormaps,)S
+4519(but)S
+4692(note)S
+4909(this)S
+5099(also)S
+5304(creates)S
+2520 V
+1260(colormap)S
+1671(\257ashing)S
+2022(between)S
+2388(the)S
+2544(two)S
+2728(windows)S
+3123(that)S
+3307(cannot)S
+3607(easily)S
+3874(be)S
+4002(avoided.)S
+4407(By)S
+4559(setting)S
+4861(the)S
+10 I
+5018(cmapName)S
+10 R
+5502(to)S
+2640 V
+1260("default")S
+1649(the)S
+1801(widget)S
+2103(will)S
+2289(allocate)S
+2629(colors)S
+2903(from)S
+3127(the)S
+3279(default)S
+3586(colormap,)S
+4018(but)S
+4176(this)S
+4351(is)S
+4448(of)S
+4561(little)S
+4775(use)S
+4938(at)S
+5040(the)S
+5192(moment.)S
+2880 V
+1260(There)S
+1524(are)S
+1677(a)S
+1753(number)S
+2090(of)S
+2205(other)S
+2442(resources)S
+2850(that)S
+3032(can)S
+3202(be)S
+3328(used)S
+3543(to)S
+3653(modify)S
+3974(the)S
+4129(behavior)S
+4511(of)S
+4627(the)S
+4782(Gterm)S
+5070(widget)S
+5375(color)S
+3000 V
+1260(management)S
+1801(scheme,)S
+2156(but)S
+2315(these)S
+2551(are)S
+2703(the)S
+2856(most)S
+3082(useful)S
+3356(ones.)S
+3624(For)S
+3793(question)S
+4162(and)S
+4336(further)S
+4637(information)S
+5139(feel)S
+5318(free)S
+5502(to)S
+3120 V
+1260(contact)S
+10 I
+1578(iraf@noao.edu)S
+10 R
+2184(.)S
+3408 V
+9 B
+900(LOAD)S
+1187(PANEL)S
+3528 V
+10 R
+1260(The)S
+1448(Load)S
+1687(Panel)S
+1943(allows)S
+2238(you)S
+2422(load)S
+2628(images)S
+2945(from)S
+3173(disk)S
+3374(directly)S
+3713(to)S
+3825(the)S
+3981(frame)S
+4247(bu)S
+4347 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4408(er,)S
+4544(this)S
+4723(is)S
+4824(analogous)S
+5263(to)S
+5375(load-)S
+3648 V
+1260(ing)S
+1439(an)S
+1584(image)S
+1879(on)S
+2030(the)S
+2203(command)S
+2648(line)S
+2848(except)S
+3158(that)S
+3358(browsing)S
+3780(is)S
+3897(possible.)S
+4300(At)S
+4450(present)S
+4788(recognized)S
+5275(formats)S
+3768 V
+1260(include)S
+1587(IRAF)S
+1848(OIF)S
+2042(format)S
+2341(\(i.e.)S
+10 I
+2529(.imh)S
+10 R
+2737(extension\),)S
+3211(simple)S
+3511(FITS)S
+3750(\256les,)S
+3975(GIF,)S
+4195(and)S
+4373(Sun)S
+4563(raster\256les.)S
+5040(The)S
+5229(task)S
+5424(will)S
+3888 V
+1260(automatically)S
+1850(sense)S
+2112(the)S
+2280(format)S
+2592(of)S
+2721(the)S
+2888(image)S
+3177(and)S
+3366(load)S
+3583(it)S
+3684(appropriately.)S
+4286(Images)S
+4619(with)S
+4842(private)S
+5164(colormaps)S
+4008 V
+1260(\(such)S
+1515(as)S
+1637(GIF\))S
+1870(will)S
+2065(be)S
+2198(loaded)S
+2503(using)S
+2759(the)S
+2920(private)S
+3236(colormap)S
+3652(\(meaning)S
+4068(that)S
+4257(changing)S
+4663(the)S
+4825(brightness/contrast)S
+4128 V
+1260(enhancements)S
+1861(will)S
+2053(render)S
+2343(a)S
+2423(random-colored)S
+3096(image\),)S
+3434(all)S
+3570(others)S
+3850(will)S
+4042(be)S
+4172(loaded)S
+4474(with)S
+4688(a)S
+4767(grayscale)S
+5178(colormap.)S
+4248 V
+1260(If)S
+1363(the)S
+10 I
+1522(Grayscale)S
+10 R
+1969(button)S
+2262(is)S
+2366(enabled)S
+2713(the)S
+2872(image)S
+3153(colormap)S
+3567(will)S
+3760(be)S
+3891(converted)S
+4321(to)S
+4437(grayscale)S
+4851(and)S
+5033(loaded)S
+5337(as)S
+5458(the)S
+4368 V
+1260(standard)S
+1633(grayscale)S
+2044(colormap.)S
+2511(The)S
+2701(Load)S
+2941(panel)S
+3192(will)S
+3383(close)S
+3623(automatically)S
+4202(once)S
+4425(the)S
+4582(image)S
+4861(has)S
+5029(loaded)S
+5330(unless)S
+4488 V
+1260(the)S
+10 I
+1412(Browse)S
+10 R
+1742(button)S
+2028(has)S
+2191(been)S
+2409(set.)S
+4728 V
+1260(When)S
+1531(loading)S
+1864(new)S
+2063(images)S
+2379(the)S
+2534(frame)S
+2799(bu)S
+2899 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2960(er)S
+3070(con\256guration)S
+3636(table)S
+3863(will)S
+4053(be)S
+4181(searched)S
+4563(for)S
+4713(a)S
+4791(frame)S
+5057(bu)S
+5157 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5218(er)S
+5329(that)S
+5513(is)S
+4848 V
+1260(the)S
+1417(same)S
+1657(size)S
+1847(or)S
+1965(larger)S
+2231(than)S
+2437(the)S
+2593(new)S
+2793(image)S
+3071(size,)S
+3285(if)S
+3380(no)S
+3514(frame)S
+3780(bu)S
+3880 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3941(er)S
+4052(can)S
+4224(be)S
+4352(found)S
+4619(a)S
+4697(custom)S
+5020(bu)S
+5120 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5181(er)S
+5292(exactly)S
+4968 V
+1260(the)S
+1420(size)S
+1613(of)S
+1734(the)S
+1894(image)S
+2176(will)S
+2370(be)S
+2502(created.)S
+2852(This)S
+3068(means)S
+3361(that)S
+3549(the)S
+3709(image)S
+3991(may)S
+4201(not)S
+4367(\256ll)S
+4517(the)S
+4677(display)S
+5004(window)S
+5364(when)S
+5088 V
+1260(loaded,)S
+1596(or)S
+1724(you)S
+1919(may)S
+2136(see)S
+2308(a)S
+2397(subsection)S
+2864(of)S
+2992(the)S
+3159(image)S
+3447(in)S
+3569(the)S
+3735(main)S
+3979(display)S
+4312(window.)S
+4703(Setting)S
+5031(the)S
+10 I
+5197(autoscale)S
+5208 V
+10 R
+1260(option)S
+1557(will)S
+1754(scale)S
+1994(the)S
+2157(entire)S
+2425(image)S
+2710(to)S
+2829(\256t)S
+2954(the)S
+3117(main)S
+3358(display)S
+3688(window,)S
+4076(the)S
+4239(full)S
+4419(frame)S
+4692(bu)S
+4792 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4853(er)S
+4971(will)S
+5168(always)S
+5486(be)S
+5328 V
+1260(visible)S
+1557(in)S
+1665(the)S
+1817(Panner)S
+2124(marker)S
+2436(window.)S
+5568 V
+1260(Images)S
+1578(with)S
+1786(more)S
+2021(colors)S
+2295(than)S
+2497(can)S
+2665(be)S
+2789(displayed)S
+3202(will)S
+3389(automatically)S
+3964(be)S
+4089(quantized)S
+4508(to)S
+4617(the)S
+4770(number)S
+5106(of)S
+5220(available)S
+5688 V
+1260(colors)S
+1546(before)S
+1842(display,)S
+2198(24-bit)S
+2479(formats)S
+2826(are)S
+2988(not)S
+3157(currently)S
+3558(supported)S
+3993(\(but)S
+4195(may)S
+4408(be)S
+4543(in)S
+4662(the)S
+4825(future)S
+5104(and)S
+5289(will)S
+5486(be)S
+5808 V
+1260(similarly)S
+1646(quantized\).)S
+6048 V
+1260(Formats)S
+1620(which)S
+1896(permit)S
+2189(larger)S
+2454(than)S
+2659(8-bit)S
+2881(pixels)S
+3153(will)S
+3342(be)S
+3469(sampled)S
+3835(on)S
+3968(a)S
+4045(grid)S
+4239(to)S
+4350(determine)S
+4782(an)S
+4909(optimal)S
+5248(range)S
+5502(in)S
+6168 V
+1260(the)S
+1418(data)S
+1620(to)S
+1734(be)S
+1864(used)S
+2083(to)S
+2197(compute)S
+2577(a)S
+2657(linear)S
+2920(transformation)S
+3544(to)S
+3658(the)S
+3816(number)S
+4157(of)S
+4275(display)S
+4599(colors.)S
+4903(This)S
+5116(is)S
+5218(the)S
+5375(same)S
+6288 V
+1260(sampling)S
+1660(and)S
+1837(transformation)S
+2458(used)S
+2674(by)S
+2807(the)S
+2962(IRAF)S
+10 I
+3223(DISPLAY)S
+10 R
+3645(task)S
+3839(when)S
+4089(computing)S
+4551(the)S
+10 I
+4707(z1/z2)S
+10 R
+4947(values)S
+5236(and)S
+5414(pro-)S
+6408 V
+1260(vides)S
+1501(a)S
+1575(much)S
+1827(better)S
+2084(initial)S
+2348(display)S
+2667(than)S
+2869(simple)S
+3166(truncation)S
+3601(to)S
+3709(8-bits.)S
+6576 V
+10 B
+1260(Directory)S
+1699(Browsing)S
+6696 V
+10 R
+1510(The)S
+1702(load)S
+1911(panel)S
+2165(contains)S
+2536(a)S
+2618(list)S
+2779(of)S
+2900(\256les)S
+3105(in)S
+3221(the)S
+3381(current)S
+3701(directory)S
+4099(that)S
+4287(may)S
+4497(be)S
+4629(selected)S
+4988(for)S
+5142(loading)S
+5480(by)S
+6816 V
+1510(selecting)S
+1901(with)S
+2115(left)S
+2284(mouse)S
+2581(button.)S
+2898(If)S
+3000(the)S
+3158(\256le)S
+3322(is)S
+3425(a)S
+3504(directory)S
+3899(the)S
+4056(contents)S
+4424(of)S
+4542(the)S
+4699(new)S
+4900(directory)S
+5295(will)S
+5486(be)S
+6936 V
+1510(loaded,)S
+1836(if)S
+1932(it's)S
+2095(a)S
+2174(plain)S
+2409(\256le)S
+2572(an)S
+2701(attempt)S
+3036(will)S
+3227(be)S
+3356(made)S
+3607(to)S
+3720(load)S
+3927(it)S
+4018(as)S
+4137(an)S
+4267(image)S
+4547(otherwise)S
+4971(an)S
+5101(error)S
+5330(popup)S
+7056 V
+1510(will)S
+1706(appear.)S
+2065(Directories)S
+2547(in)S
+2664(the)S
+2825(list)S
+2987(are)S
+3147(identi\256ed)S
+3564(with)S
+3781(a)S
+3864(trailing)S
+4192('/')S
+4325(character,)S
+4753(you)S
+4942(will)S
+5137(always)S
+5453(see)S
+7176 V
+1510(any)S
+1684(subdirectories)S
+2274(listed)S
+2521(even)S
+2739(if)S
+2830(a)S
+2904(\256lter)S
+3123(is)S
+3220(speci\256ed.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(14)S
+7920 V
+EP
+%%Page: 15 15
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1510(The)S
+10 I
+1698(Root)S
+10 R
+1920(button)S
+2209(will)S
+2398(reset)S
+2619(the)S
+2774(current)S
+3089(directory)S
+3482(to)S
+3593(the)S
+3748(system)S
+4059(root)S
+4254(directory.)S
+4673(The)S
+10 I
+4862(Home)S
+10 R
+5134(button)S
+5424(will)S
+1080 V
+1510(reset)S
+1730(the)S
+1884(current)S
+2198(directory)S
+2590(to)S
+2700(the)S
+2854(user's)S
+3124(login)S
+3362(directory,)S
+3779(the)S
+10 I
+3932(Up)S
+10 R
+4085(button)S
+4372(moves)S
+4664(up)S
+4795(one)S
+4970(directory)S
+5361(level,)S
+1200 V
+1510(and)S
+10 I
+1688(Rescan)S
+10 R
+2010(reloads)S
+2332(the)S
+2488(\256le)S
+2650(list)S
+2807(by)S
+2942(rescanning)S
+3409(the)S
+3566(directory.)S
+3986(The)S
+4176(current)S
+4493(working)S
+4861(directory)S
+5256(is)S
+5358(given)S
+1320 V
+1510(below)S
+1784(the)S
+1936(\256le)S
+2094(selection)S
+2479(window.)S
+1488 V
+10 B
+1260(File)S
+1451(Patterns)S
+1608 V
+10 R
+1510(By)S
+1663(default)S
+1976(all)S
+2112(\256les)S
+2315(and)S
+2495(directories)S
+2952(will)S
+3144(be)S
+3274(listed.)S
+3552(You)S
+3760(may)S
+3968(specify)S
+4292(a)S
+4372(\256lter)S
+4597(to)S
+4711(e.g.)S
+4891(select)S
+5154(only)S
+5369(those)S
+1728 V
+1510(\256les)S
+1718(with)S
+1936(a)S
+2020(given)S
+2282(extension)S
+2705(like)S
+2895(")S
+10 Y
+2936(*)S
+10 R
+2986(.\256ts")S
+3215(to)S
+3333(list)S
+3496(only)S
+3714(\256les)S
+3921(with)S
+4139(a)S
+4223(".\256ts")S
+4493(extension.)S
+4941(Directories)S
+5424(will)S
+1848 V
+1510(always)S
+1830(be)S
+1967(seen)S
+2187(in)S
+2308(the)S
+2473(list)S
+2639(and)S
+2826(are)S
+2990(identi\256ed)S
+3411(with)S
+3632(a)S
+3719(trailing)S
+4051('/')S
+4188(character.)S
+4621(Any)S
+4837(valid)S
+5081(unix)S
+5303(pattern)S
+1968 V
+1510(matching)S
+1912(string)S
+2170(will)S
+2356(be)S
+2480(recognized.)S
+2136 V
+10 B
+1260(Direct)S
+1555(File)S
+1746(Load)S
+2256 V
+10 R
+1510(If)S
+1608(you)S
+1791(know)S
+2046(exactly)S
+2367(which)S
+2644(\256le)S
+2805(you)S
+2988(wish)S
+3210(to)S
+3321(load,)S
+3551(you)S
+3734(may)S
+3939(enter)S
+4171(its)S
+4299(name)S
+4548(in)S
+4659(the)S
+10 I
+4814(Load)S
+5053(File)S
+10 R
+5247(text)S
+5430(box)S
+2376 V
+1510(and)S
+1688(either)S
+1949(hit)S
+2089(<cr>)S
+2312(or)S
+2429(the)S
+2585(Load)S
+2824(button)S
+3114(to)S
+3226(load)S
+3432(it.)S
+3577(An)S
+3733(absolute)S
+4099(or)S
+4215(relative)S
+4547(path)S
+4752(name)S
+5001(may)S
+5206(be)S
+5333(given,)S
+2496 V
+1510(if)S
+1601(a)S
+1675(simple)S
+1972(\256lename)S
+2346(is)S
+2443(speci\256ed)S
+2828(it)S
+2914(will)S
+3100(be)S
+3224(searched)S
+3602(for)S
+3748(in)S
+3856(the)S
+4008(current)S
+4320(working)S
+4683(directory.)S
+2664 V
+10 B
+1260(Frame)S
+1572(Selections)S
+2784 V
+10 R
+1510(By)S
+1662(default)S
+1974(images)S
+2292(will)S
+2483(be)S
+2612(loaded)S
+2914(into)S
+3106(frame)S
+3374(number)S
+3715(1,)S
+3826(you)S
+4012(may)S
+4220(select)S
+4483(a)S
+4563(di)S
+4641 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4702(erent)S
+4937(frame)S
+5205(using)S
+5458(the)S
+2904 V
+1510(Frame)S
+1795(menu)S
+2047(button)S
+2333(to)S
+2441(cycle)S
+2681(through)S
+3022(the)S
+3174(available)S
+3564(frames.)S
+3192 V
+9 B
+900(SAVE)S
+1167(PANEL)S
+3312 V
+10 R
+1260(The)S
+1445(Save)S
+1669(Panel)S
+1921(lets)S
+2090(you)S
+2270(save)S
+2477(the)S
+2629(current)S
+2941(contents)S
+3304(of)S
+3418(the)S
+3571(main)S
+3802(display)S
+4122(window)S
+4475(to)S
+4584(a)S
+4659(disk)S
+4857(\256le)S
+5016(\(including)S
+5458(the)S
+3432 V
+1260(Panner/Coords)S
+1896(markers,)S
+2284(any)S
+2470(general)S
+2805(graphics)S
+3185(markers,)S
+3573(or)S
+3698(overlay)S
+4039(graphics)S
+4419(displayed)S
+4844(by)S
+4986(the)S
+5150(client)S
+5414(pro-)S
+3552 V
+1260(gram\).)S
+1554(Presently,)S
+1982(only)S
+2191(the)S
+2344(contents)S
+2708(of)S
+2822(the)S
+2975(main)S
+3206(display)S
+3526(window)S
+3879(may)S
+4082(be)S
+4207(saved,)S
+4490(there)S
+4720(is)S
+4819(no)S
+4951(facility)S
+5266(for)S
+5414(sav-)S
+3672 V
+1260(ing)S
+1424(the)S
+1582(undisplayed)S
+2101(contents)S
+2470(of)S
+2589(the)S
+2747(entire)S
+3010(frame)S
+3278(bu)S
+3378 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3439(er)S
+3552(other)S
+3792(than)S
+3999(to)S
+4112(enable)S
+4407(the)S
+4564(autoscale)S
+4970(feature.)S
+5306(A)S
+5413(lim-)S
+3792 V
+1260(ited)S
+1440(number)S
+1775(of)S
+1888(formats)S
+2223(are)S
+2374(currently)S
+2764(available,)S
+3179(others)S
+3453(will)S
+3639(be)S
+3763(added)S
+4031(in)S
+4139(future)S
+4407(versions.)S
+3960 V
+10 B
+1260(File)S
+1451(Name)S
+4080 V
+10 R
+1510(The)S
+1695(File)S
+1881(Name)S
+2149(text)S
+2329(box)S
+2509(allows)S
+2800(you)S
+2980(to)S
+3088(enter)S
+3317(the)S
+3469(\256le)S
+3627(name)S
+3873(of)S
+3987(the)S
+4140(saved)S
+4398(\256le.)S
+4582(A)S
+4685("%d")S
+4931(anywhere)S
+5349(in)S
+5458(the)S
+4200 V
+1510(name)S
+1770(will)S
+1970(be)S
+2108(replaced)S
+2489(by)S
+2632(a)S
+2719(sequence)S
+3127(number)S
+3475(allowing)S
+3868(multiple)S
+4245(frames)S
+4559(to)S
+4680(be)S
+4817(saved)S
+5087(with)S
+5308(unique)S
+4320 V
+1510(names.)S
+4488 V
+10 B
+1260(Format)S
+4608 V
+10 R
+1510(The)S
+1704(Format)S
+2032(box)S
+2221(allows)S
+2521(you)S
+2710(to)S
+2827(choose)S
+3143(the)S
+3305(format)S
+3611(of)S
+3734(the)S
+3896(image)S
+4180(to)S
+4298(be)S
+4432(created.)S
+4784(Not)S
+4974(all)S
+5114(formats)S
+5459(are)S
+4728 V
+1510(currently)S
+1900(implemented.)S
+4896 V
+10 B
+1260(Color)S
+5016 V
+10 R
+1510(The)S
+1701(Color)S
+1965(box)S
+2151(lets)S
+2326(you)S
+2512(choose)S
+2825(the)S
+2983(color)S
+3224(type)S
+3432(of)S
+3551(the)S
+3709(image)S
+3989(to)S
+4103(be)S
+4233(created.)S
+4581(The)S
+4773(options)S
+5105(will)S
+5298(change)S
+5136 V
+1510(depending)S
+1965(on)S
+2104(the)S
+2265(format,)S
+2595(e.g.)S
+2778(FITS)S
+3023(doesn't)S
+3356(allow)S
+3617(color)S
+3861(so)S
+3989(no)S
+4127(color)S
+4370(options)S
+4703(will)S
+4897(be)S
+5029(allowed.)S
+5408(For-)S
+5256 V
+1510(mats)S
+1741(which)S
+2027(allow)S
+2291(24-bit)S
+2572(images)S
+2897(will)S
+3095(be)S
+3231(written)S
+3556(using)S
+3815(the)S
+3979(current)S
+4303(colormap)S
+4722(after)S
+4946(converting)S
+5415(to)S
+5536(a)S
+5376 V
+1510(24-bit)S
+1779(image,)S
+2078(pseudocolor)S
+2596(images)S
+2909(will)S
+3095(be)S
+3219(written)S
+3532(with)S
+3740(the)S
+3892(current)S
+4204(colormap.)S
+5664 V
+9 B
+900(PRINT)S
+1207(PANEL)S
+5784 V
+10 R
+1260(The)S
+1449(Print)S
+1678(Panel)S
+1934(allows)S
+2229(you)S
+2413(dump)S
+2675(the)S
+2831(contents)S
+3198(of)S
+3315(the)S
+3471(main)S
+3706(display)S
+4030(window)S
+4387(as)S
+4505(Encapsulated)S
+5072(Postscript)S
+5502(to)S
+5904 V
+1260(either)S
+1526(a)S
+1608(named)S
+1912(printer)S
+2216(device)S
+2514(or)S
+2635(to)S
+2751(a)S
+2833(disk)S
+3038(\256le.)S
+3259(The)S
+10 I
+3452(Print)S
+3696(To)S
+10 R
+3840(selects)S
+4144(the)S
+4304(type)S
+4514(of)S
+4635(output,)S
+4954(the)S
+10 I
+5114(Print)S
+5358(Com-)S
+6024 V
+1260(mand)S
+10 R
+1513(box)S
+1694(will)S
+1881(adjust)S
+2151(accordingly,)S
+2678(either)S
+2936(as)S
+3050(a)S
+3125(Unix)S
+3356(printer)S
+3653(command)S
+4078(or)S
+4192(as)S
+4306(a)S
+4381(\256le)S
+4540(name.)S
+4842(A)S
+4946("%d")S
+5193(anywhere)S
+6144 V
+1260(in)S
+1372(the)S
+1528(name)S
+1778(for)S
+1928(disk)S
+2129(output)S
+2419(will)S
+2609(be)S
+2737(replaced)S
+3108(by)S
+3242(a)S
+3320(sequence)S
+3719(number)S
+4058(allowing)S
+4442(multiple)S
+4810(frames)S
+5115(to)S
+5226(be)S
+5353(saved)S
+6264 V
+1260(with)S
+1469(unique)S
+1772(names.)S
+2083(Selecting)S
+2486(printers)S
+2822(from)S
+3047(the)S
+3200(installed)S
+3570(list)S
+3724(will)S
+3911(automatically)S
+4486(change)S
+4799(the)S
+4952(command)S
+5377(to)S
+5486(be)S
+6384 V
+1260(used)S
+1474(to)S
+1583(generate)S
+1951(the)S
+2104(output.)S
+2416(This)S
+2625(command)S
+3049(does)S
+3262(not)S
+3420(necessarily)S
+3893(need)S
+4111(to)S
+4219(be)S
+4343(a)S
+4417(printer)S
+4713(command,)S
+5162(the)S
+5314(printer)S
+6504 V
+1260(con\256guration)S
+1823(\256le)S
+1981(lets)S
+2150(you)S
+2330(de\256ne)S
+2604(any)S
+2778(command)S
+3202(string)S
+3460(to)S
+3568(process)S
+3897(the)S
+4049(image.)S
+6792 V
+9 B
+1080(COLOR)S
+1437(OPTIONS)S
+6912 V
+10 R
+1260(The)S
+1469(Color)S
+1751(box)S
+1955(lets)S
+2148(you)S
+2352(choose)S
+2683(the)S
+2859(color)S
+3118(type)S
+3344(of)S
+3481(the)S
+3657(image)S
+3955(to)S
+4087(be)S
+4235(created.)S
+4631(PseudoColor)S
+5203(or)S
+5341(24-bit)S
+7032 V
+1260(postscript)S
+1679(will)S
+1865(be)S
+1989(created)S
+2306(using)S
+2553(the)S
+2705(current)S
+3017(colormap)S
+3424(and)S
+3598(enhancements.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(15)S
+7920 V
+EP
+%%Page: 16 16
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+1080(POSTSCRIPT)S
+1672(OPTIONS)S
+1080 V
+10 B
+1260(Orientation)S
+1200 V
+10 R
+1510(Set)S
+1668(the)S
+1820(page)S
+2038(orientation.)S
+1368 V
+10 B
+1260(Paper)S
+1545(Size)S
+1488 V
+10 R
+1510(Select)S
+1784(the)S
+1936(paper)S
+2187(size)S
+2372(to)S
+2480(be)S
+2604(used.)S
+1656 V
+10 B
+1260(Image)S
+1556(Scale)S
+1776 V
+10 R
+1510(Set)S
+1677(the)S
+1838(scale)S
+2076(factor)S
+2347(used)S
+2569(to)S
+2686(compute)S
+3069(the)S
+3230(\256nal)S
+3447(image)S
+3730(size.)S
+3979(No)S
+4140(checking)S
+4539(is)S
+4645(done)S
+4878(to)S
+4996(make)S
+5252(sure)S
+5458(the)S
+1896 V
+1510(image)S
+1784(will)S
+1970(\256t)S
+2084(correctly)S
+2468(on)S
+2598(the)S
+2750(page.)S
+2184 V
+9 B
+1080(PROCESSING)S
+1692(OPTIONS)S
+2304 V
+10 B
+1260(Auto)S
+1501(Scale)S
+2424 V
+10 R
+1510(Toggles)S
+1865(whether)S
+2219(or)S
+2335(not)S
+2496(the)S
+2651(image)S
+2928(is)S
+3028(automatically)S
+3605(scaled)S
+3887(to)S
+3998(\256t)S
+4116(the)S
+4272(page.)S
+4549(If)S
+4649(not)S
+4811(enabled,)S
+5180(the)S
+5336(image)S
+2544 V
+1510(scale)S
+1744(will)S
+1935(be)S
+2064(used)S
+2282(to)S
+2395(determine)S
+2829(the)S
+2986(output)S
+3277(image)S
+3556(size,)S
+3771(otherwise)S
+4194(the)S
+4351(image)S
+4629(will)S
+4819(be)S
+4947(scaled)S
+5230(down)S
+5486(\(if)S
+2664 V
+1510(necessary\))S
+1960(to)S
+2068(\256t)S
+2182(on)S
+2312(the)S
+2464(page.)S
+2832 V
+10 B
+1260(Auto)S
+1501(Rotate)S
+2952 V
+10 R
+1510(Determines)S
+2005(whether)S
+2361(or)S
+2479(not)S
+2642(the)S
+2800(image)S
+3080(will)S
+3272(be)S
+3402(rotated)S
+3715(to)S
+3829(\256t)S
+3949(on)S
+4085(the)S
+4243(page.)S
+4492(When)S
+4766(set,)S
+4938(an)S
+5068(image)S
+5348(larger)S
+3072 V
+1510(than)S
+1717(the)S
+1874(current)S
+2191(orientation)S
+2659(will)S
+2850(be)S
+2979(rotated)S
+3291(and)S
+3470(possibly)S
+3839(scaled)S
+4123(to)S
+4236(\256t)S
+4355(the)S
+4511(page,)S
+4758(otherwise)S
+5180(the)S
+5336(image)S
+3192 V
+1510(may)S
+1712(be)S
+1836(scaled)S
+2115(so)S
+2234(that)S
+2414(it)S
+2500(\256ts)S
+2653(in)S
+2761(the)S
+2913(current)S
+3225(orientation.)S
+3360 V
+10 B
+1260(Max)S
+1484(Aspect)S
+3480 V
+10 R
+1510(Automatically)S
+2112(increases)S
+2507(the)S
+2659(scale)S
+2888(so)S
+3007(the)S
+3159(image)S
+3433(\256lls)S
+3614(the)S
+3766(page)S
+3984(in)S
+4092(the)S
+4244(current)S
+4556(orientation.)S
+3648 V
+10 B
+1260(Annotate)S
+3768 V
+10 R
+1510(The)S
+1696(annotate)S
+2065(option)S
+2352(toggles)S
+2672(whether)S
+3024(or)S
+3138(not)S
+3297(the)S
+3450(\256nal)S
+3660(\256le)S
+3820(includes)S
+4185(annotation)S
+4639(such)S
+4854(as)S
+4969(the)S
+5123(image)S
+5399(title,)S
+3888 V
+1510(a)S
+1584(colorbar,)S
+1971(and)S
+2145(axis)S
+2336(labels.)S
+2654(There)S
+2916(is)S
+3013(currently)S
+3403(no)S
+3533(option)S
+3819(for)S
+3965(partial)S
+4250(annotation.)S
+4176 V
+9 B
+1080(PRINTER)S
+1512(SELECTION)S
+4296 V
+10 R
+1260(The)S
+1487(printer)S
+1825(selection)S
+2252(list)S
+2447(lets)S
+2658(choose)S
+3007(the)S
+3201(printer)S
+3540(to)S
+3691(be)S
+3858(used.)S
+4139(The)S
+4367(printer)S
+4706(con\256guration)S
+5312(\256le)S
+5513(is)S
+4416 V
+1260(/usr/local/lib/ximprint.cfg)S
+2342(by)S
+2493(default)S
+2821(or)S
+2954(may)S
+3176(be)S
+3320(reset)S
+3558(using)S
+3825(the)S
+10 I
+3997(-printCon\256g)S
+10 R
+4542(command)S
+4986(line)S
+5186(switch)S
+5497(or)S
+4536 V
+10 I
+1260(printCon\256g)S
+10 R
+1752(resource.)S
+2144(The)S
+2329(format)S
+2625(of)S
+2738(the)S
+2890(\256le)S
+3048(is)S
+3145(simply)S
+4776 V
+10 I
+1950(name\\tcommand)S
+5016 V
+10 R
+1260(The)S
+10 I
+1450(name)S
+10 R
+1701(value)S
+1952(is)S
+2054(what)S
+2284(appears)S
+2624(in)S
+2738(the)S
+2896(selection)S
+3287(list)S
+3446(and)S
+3626(may)S
+3834(be)S
+3964(more)S
+4205(than)S
+4413(a)S
+4493(single)S
+4768(word,)S
+5034(the)S
+10 I
+5192(command)S
+5136 V
+10 R
+1260(can)S
+1432(be)S
+1560(any)S
+1738(command)S
+2166(that)S
+2350(accepts)S
+2677(EPS)S
+2884(input)S
+3124(from)S
+3352(a)S
+3429(pipe,)S
+3659(the)S
+3814(two)S
+3997(\256elds)S
+4247(must)S
+4475(be)S
+4602(separated)S
+5011(by)S
+5144(a)S
+5221(tab)S
+5376(char-)S
+5256 V
+1260(acter.)S
+1538(Normally)S
+1951(the)S
+2103(command)S
+2527(will)S
+2713(be)S
+2837(a)S
+2912(simple)S
+10 I
+3210(lpr)S
+3358(-Pfoo)S
+10 R
+3611(or)S
+3725(some)S
+3967(such,)S
+4206(but)S
+4365(can)S
+4534(also)S
+4726(include)S
+5051(converters)S
+5497(or)S
+5376 V
+1260(previewers.)S
+1752(At)S
+1882(most)S
+2107(128)S
+2287(printer)S
+2583(commands)S
+3046(may)S
+3248(be)S
+3372(used.)S
+5664 V
+9 B
+900(INFO)S
+1152(PANEL)S
+5784 V
+10 R
+1260(The)S
+1450(information)S
+1957(panel)S
+2208(is)S
+2310(underused)S
+2755(at)S
+2862(present)S
+3185(but)S
+3348(is)S
+3450(meant)S
+3729(to)S
+3842(provide)S
+4183(basic)S
+4424(information)S
+4932(about)S
+5190(the)S
+5348(frame)S
+5904 V
+1260(being)S
+1524(displayed.)S
+1974(It)S
+2077(is)S
+2186(updated)S
+2544(to)S
+2664(be)S
+2800(current)S
+3124(while)S
+3388(changing)S
+3796(enhancements,)S
+4428(pan/zoom)S
+4864(regions,)S
+5224(or)S
+5348(frame)S
+6024 V
+1260(selection.)S
+1684(In)S
+1811(cases)S
+2065(where)S
+2352(the)S
+2518(image)S
+2806(title)S
+3006(string)S
+3278(is)S
+3389(truncated)S
+3804(in)S
+3926(the)S
+4093(main)S
+4338(display)S
+4672(window,)S
+5064(the)S
+5231(user)S
+5442(can)S
+6144 V
+1260(always)S
+1567(pop)S
+1747(up)S
+1877(the)S
+2029(info)S
+2220(window)S
+2572(to)S
+2680(see)S
+2837(the)S
+2989(full)S
+3158(title.)S
+6432 V
+9 B
+900(TCLSHELL)S
+6552 V
+10 R
+1260(The)S
+10 I
+1446(TclShell)S
+10 R
+1805(allows)S
+2097(the)S
+2250(user)S
+2447(to)S
+2556(type)S
+2759(commands)S
+3224(directly)S
+3561(to)S
+3671(the)S
+3825(TCL)S
+4046(interpreter,)S
+4518(letting)S
+4806(you)S
+4988(send)S
+5203(messages)S
+6672 V
+1260(to)S
+1369(the)S
+1522(object)S
+1797(manager)S
+2171(or)S
+2284(execute)S
+2618(speci\256c)S
+2953(procedures)S
+3420(in)S
+3528(the)S
+3680(TCL)S
+3899(code)S
+4117(that)S
+4297(makes)S
+4582(up)S
+4712(the)S
+4864(GUI.)S
+5096(It)S
+5187(is)S
+5284(used)S
+5497(as)S
+6792 V
+1260(a)S
+1338(development)S
+1888(or)S
+2005(debugging)S
+2461(tool)S
+2651(for)S
+2801(the)S
+2957(GUI,)S
+3193(but)S
+3355(for)S
+3505(an)S
+3633(example)S
+4005(of)S
+4122(what)S
+4350(it)S
+4440(does,)S
+4682(bring)S
+4927(it)S
+5017(up)S
+5151(and)S
+5329(type)S
+5536(a)S
+6912 V
+1260(command)S
+1684(such)S
+1897(as)S
+7152 V
+10 I
+1380(send)S
+1593(helpButton)S
+2062(set)S
+2203(background)S
+2710(red)S
+7680 V
+10 R
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(16)S
+7920 V
+EP
+%%Page: 17 17
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+900(ENVIRONMENT)S
+1080 V
+10 R
+1260(DISPLAY)S
+2700(speci\256es)S
+3074(which)S
+3348(display)S
+3667(terminal)S
+4030(to)S
+4138(use)S
+1200 V
+1260(IMTOOLRC)S
+2700(frame)S
+2962(bu)S
+3062 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3123(er)S
+3230(con\256guration)S
+3793(\256le)S
+1320 V
+1260(imtoolrc)S
+2700(frame)S
+2962(bu)S
+3062 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3123(er)S
+3230(con\256guration)S
+3793(\256le)S
+3951(\(alternative\))S
+1608 V
+9 B
+900(FILES)S
+1728 V
+10 R
+1260(/usr/local/lib/imtoolrc)S
+2700(default)S
+3007(frame)S
+3269(bu)S
+3369 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3430(er)S
+3537(con\256guration)S
+4100(\256le)S
+1848 V
+1260(/usr/local/lib/ximprint.cfg)S
+2700(default)S
+3007(printer)S
+3303(con\256guration)S
+3866(\256le)S
+1968 V
+1260(/usr/local/lib/imtoolcmap)S
+2700(default)S
+3007(colormap)S
+3414(directory)S
+2088 V
+1260(/dev/imt1i)S
+2700(default)S
+3007(input)S
+3243(\256fo)S
+2208 V
+1260(/dev/imt1o)S
+2700(default)S
+3007(output)S
+3293(\256fo)S
+2328 V
+1260(/tmp/.IMT%d)S
+2700(default)S
+3007(unix)S
+3215(socket)S
+2616 V
+9 B
+900(BUGS)S
+2736 V
+900(SEE)S
+1112(ALSO)S
+2856 V
+10 R
+1260(xgterm\(1\),)S
+1714(xtapemon\(1\))S
+3144 V
+9 B
+900(COPYRIGHT)S
+3264 V
+10 R
+1260(Copyright\(c\))S
+1806(1986)S
+2036(Association)S
+2538(of)S
+2651(Universities)S
+3164(for)S
+3310(Research)S
+3705(in)S
+3813(Astronomy)S
+4293(Inc.)S
+7680 V
+900(X11IRAF Project)S
+2709(Last change: 10 Dec 1996)S
+5480(17)S
+7920 V
+EP
+%%Trailer
+%%DocumentFonts: Times-Roman Times-Bold Times-Italic Symbol
+%%Pages: 17
+ \ No newline at end of file
diff --git a/vendor/x11iraf/ximtool/TODO b/vendor/x11iraf/ximtool/TODO
new file mode 100644
index 00000000..cccda8ee
--- /dev/null
+++ b/vendor/x11iraf/ximtool/TODO
@@ -0,0 +1,241 @@
+ TODO -- XIMTOOL -- TODO
+
+==============================================================================
+V1.3 TODO List
+
+ - Revise installation script
+ - CDL needs the new WCS mappings
+ - Update documentation
+ - online help
+ - document ISM protocol
+ - loading image standalone
+ - WCS/Info shows incorrect dest rect dnx/dny
+ - switching images seems to hang ISM
+ - MEF support in ISM
+
+==============================================================================
+
+
+==============================================================================
+- Translations should use #augment so users can add translations easily
+- Gui box to edit/create/save LUTs
+- snap to equal aspect
+- Need a way to rotate an image by +/- 90 deg
+- Create a new frame when running in standalone
+- Convert private colormap-to-grayscale option
+
+
+==============================================================================
+
+
+Tue Oct 18 13:11:36 MST 1994
+
+ o Cache a more useful default imtoolrc internally, providing more than
+ just the 512sq frame buffer.
+
+
+==============================================================================
+OLD NOTES BELOW
+==============================================================================
+
+Miscellaneous
+------------------------------
+
+ o Add cursor marking feature - each cursor read leaves a mark in
+ the frame buffer.
+
+
+Wed May 11 12:13:31 MST 1994
+------------------------------
+
+Thoughts on priorities for next few changes:
+
+ o Revise menubar. New menus, improve font.
+
+ o Add toggle button to map/unmap control panel.
+
+ o Support for command line options.
+
+ o Should be a way to have some system wide resource overrides without
+ losing all the builtin fallback resources.
+
+ o Print dialog. Add Quit confirm popup if print is enabled, so that
+ an accidental menu selection doesn't terminate program.
+
+ o Revise info box. Separate version and configuration information
+ from output text area. Add "messages" line for informational
+ messages generated during execution.
+
+ o Add command entry dialog, for entering GUI commands.
+
+ o Add actions for common ximtool operations (frame select, zoom, pan,
+ window, print, etc.) so that users can bind keys to these functions.
+ Note that this can already be done using "call".
+
+ o Help feature.
+
+
+Print dialog
+ Print command: lpr -Plw %s
+ Options:
+ Type of output: postscript, EPS, sunraster
+ Enhancement: color or grayscale
+ Annotation: none, wysiwyg, manufacture
+ Compression: enabled, disabled
+ Buttons:
+ Print, Dismiss, Help
+
+
+Info Box
+ Types of information displayed
+ Program version and origin
+ GUI being run
+ Title of current frame
+ Message and status display
+ Program state
+ frame buffer configuration, number of frames, frame size
+ window size, mapping from frame to window
+ active ports
+ number and type of client connections
+ number of defined colortables, current colortable
+ memory model
+ base pixel, ncolors
+ imtoolrc file - defined fb configurations
+ Text output (markers etc.)
+
+
+Command Entry
+ command entry text widget
+ accumulate text until complete command is entered; handle
+ backslash and curly brace continuation before returning
+ command string. callback occurs when return is hit and
+ complete command has been entered.
+ command entry
+ enter command and hit return to execute
+ hitting return after executing command, with no changes,
+ clears command buffer
+ use arrow keys to move up and down in history list
+ command output
+ scrolled text
+ debug output
+ output of print, OBMDEBUG, etc.
+ scrolled text, append
+ controls
+ set debug level
+ clear output
+ done
+
+ Support required:
+ new "command mode" callback for text widget
+ when appending text to text widget, should be able to specify
+ maximum size of saved text, with automatic truncation
+ OBM - modifications to optionally direct output of print,
+ debug, and error mesages to callbacks
+ OBM - need to be able to set debug level from GUI
+
+
+Menus
+ File Menu
+ Info
+ Load
+ Save
+ Print
+ Execute
+ -----
+ Reset
+ Quit
+
+ View Menu
+ Next frame Colortable
+ Prev frame Normalize
+ ----- Invert
+ Colortable Optimize
+ Flip -----
+ ----- Colormaps
+ Equal aspect Flip
+ Integer zoom X
+ Toggle zoom Y
+ Unzoom XY
+
+ Options Menu
+ Autoscale
+ Antialias
+ Panner
+ Coords box
+ Match LUTs
+ Register
+ Blink frames
+ Clear frame
+ Tile frames
+ Fit frame
+ Control panel
+
+
+Mon Apr 4 18:20:50 MST 1994
+------------------------------
+
+1. Colormap enhancements
+
+[DONE] Allow arbitrary base pixel, number of gray levels; client
+ colortable still has 200 entries, but if there is insufficient
+ space some of them may map to the same screen pixel.
+
+[DONE] Option to force private colormap to be re-installed in server.
+
+[DONE] Figure out why colormap gets messed up when passing through
+ colorbar window.
+
+[DONE] Optimize update_default_colormap code, which currently uses an
+ inefficient technique to invert the colormap when updating the
+ default colormap.
+
+ o Optional support for default colormap (should this be the default?)
+
+ o Add option to automatically invert colormap when initializing.
+
+
+2. Required Features
+
+[DONE] Implement tile frames option.
+
+[DONE] Fix fitframe function.
+
+[DONE] Add socket i/o option.
+
+[DONE] Add support for simultaneous connections to multiple clients,
+ maintaining the state separately for each (i.e. reference frame,
+ i/o streams, etc.).
+
+ o Add main window button to bring up control panel.
+
+ o Revise main window menubar.
+
+ o Check out memoryModel options.
+
+ o Add online help.
+
+
+3. Add When Time Permits
+
+ o "snap-to equal aspect" feature for panner window.
+
+ o Implement Optimize enhancement feature.
+
+ o Print dialog.
+
+ o File load/save functions.
+
+
+4. Other
+
+ o Update manual page. Program options, client-server protocol.
+
+
+5. Optional Features
+
+ o Magnifier option.
+
+ o Split screen.
+
+ o Porthole option (view into alternate frame).
+
diff --git a/vendor/x11iraf/ximtool/clients.old/.DONE b/vendor/x11iraf/ximtool/clients.old/.DONE
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/.DONE
diff --git a/vendor/x11iraf/ximtool/clients.old/DONE b/vendor/x11iraf/ximtool/clients.old/DONE
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/DONE
diff --git a/vendor/x11iraf/ximtool/clients.old/Imakefile b/vendor/x11iraf/ximtool/clients.old/Imakefile
new file mode 100644
index 00000000..3ab5b034
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/Imakefile
@@ -0,0 +1,32 @@
+XCOMM Imakefile for the Image Support Module components.
+
+X11IRAFDIR = ../../
+#include <../../X11IRAF.tmpl>
+
+ WC_SRCS = wcspix/t_wcspix.x wcspix/wcimage.x wcspix/wcmef.x \
+ wcspix/wcmspec.x wcspix/wcspix.h
+ LIB_SRCS = lib/dspmmap.x lib/reopen.x lib/ximtool.x
+
+
+all:: ism_wcspix.e
+
+ism_wcspix.e: $(WC_SRCS) $(LIB_SRCS)
+ mkpkg relink
+ touch DONE
+
+SubdirLibraryRule($(WC_SRCS) $(LIB_SRCS))
+
+clean::
+ $(RM) *.[aeo]
+ touch DONE
+
+includes::
+
+#if InstallBinaries
+install:: ism_wcspix.e
+ -@if [ -d X11irafBinDir ]; then set +x; \
+ else (set -x; $(MKDIRHIER) X11irafBinDir); fi
+ mv ism_wcspix.e X11irafBinDir
+#endif
+
+DependTarget()
diff --git a/vendor/x11iraf/ximtool/clients.old/README b/vendor/x11iraf/ximtool/clients.old/README
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/README
diff --git a/vendor/x11iraf/ximtool/clients.old/_spplint b/vendor/x11iraf/ximtool/clients.old/_spplint
new file mode 100644
index 00000000..28486ee8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/_spplint
@@ -0,0 +1,489 @@
+/u2/fitz/iraf/ximtool/clients/x_ism.x
+ sys_runtask:
+/u2/fitz/iraf/ximtool/clients/wcspix/t_wcspix.x
+ t_wcspix:
+ wp_initialize:
+ wp_cache:
+ wp_uncache:
+ wp_wcstran:
+ wp_wcslist:
+ wp_objinfo:
+ wp_setpar:
+ wp_getpar:
+ wp_init:
+ wp_shutdown:
+ wp_class:
+ wp_id2obj:
+ wp_class_init:
+ wp_load_class:
+ wcspix_message:
+ wp_cnvdate:
+ dbg_printcache:
+/u2/fitz/iraf/ximtool/clients/wcspix/wcimage.x
+ img_init:
+ img_cache:
+ img_uncache:
+ img_wcstran:
+ img_wcslist:
+ img_get_data:
+ img_objinfo:
+ img_send_header:
+ img_send_compass:
+ img_send_wcsinfo:
+ img_send_pixtab:
+ img_amp_wcs:
+ img_det_wcs:
+ img_coord_labels:
+ img_coord_fmt:
+ img_get_coord:
+/u2/fitz/iraf/ximtool/clients/wcspix/wcmef.x
+ mef_init:
+ mef_cache:
+ mef_uncache:
+ mef_wcstran:
+ mef_wcslist:
+ mef_objinfo:
+/u2/fitz/iraf/ximtool/clients/wcspix/wcmspec.x
+ msp_init:
+ msp_cache:
+ msp_uncache:
+ msp_wcstran:
+ msp_wcslist:
+ msp_objinfo:
+/u2/fitz/iraf/ximtool/clients/wcspix/wcunknown.x
+ unk_init:
+ unk_cache:
+ unk_uncache:
+ unk_wcstran:
+ unk_wcslist:
+ unk_getdata:
+ unk_objinfo:
+/u2/fitz/iraf/ximtool/clients/lib/dspmmap.x
+ ds_pmmap:
+ ds_pmimmap:
+ ds_match:
+/u2/fitz/iraf/ximtool/clients/lib/reopen.x
+ reopen:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/skdecode.x
+ sk_decwcs:
+ sk_decwstr:
+ sk_decim:
+ sk_strwcs:
+ sk_imwcs:
+ sk_enwcs:
+ sk_copy:
+ sk_close:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/sksaveim.x
+ sk_saveim:
+ sk_ctypeim:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/skset.x
+ sk_setd:
+ sk_seti:
+ sk_sets:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/skstat.x
+ sk_statd:
+ sk_stati:
+ sk_stats:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/sktransform.x
+ sk_ultran:
+ sk_lltran:
+ sk_equatorial:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/skwrdstr.x
+ sk_wrdstr:
+/u2/fitz/iraf/ximtool/clients/lib/skywcs/skwrite.x
+ sk_iiprint:
+ sk_iiwrite:
+ sk_inprint:
+ sk_inwrite:
+ sk_imprint:
+ sk_imwrite:
+/u2/fitz/iraf/ximtool/clients/lib/ximtool.x
+ xim_connect:
+ xim_disconnect:
+ xim_message:
+ xim_alert:
+ xim_write:
+ xim_read:
+ xim_intrhandler:
+ xim_zxwhen:
+ xim_onerror:
+/u2/fitz/iraf/ximtool/clients/lib/idxstr.x
+ idxstr:
+/u2/fitz/iraf/ximtool/clients/lib/wcsgfterm.x
+ wcs_gfterm:
+Making function prototype file.....
+FTN.f:
+ dspmmp:
+ dspmip:
+ dsmath:
+Warning on line 279 of FTN.f: inconsistent calling sequences for mwctrd:
+ here 4, previously 3 args and string lengths.
+ idxstr:
+ reopen:
+ skdecs:
+ skdecr:
+ skdecm:
+ skstrs:
+ skimws:
+ skenws:
+ skcopy:
+ skcloe:
+ sksavm:
+ skctym:
+ sksetd:
+ skseti:
+ sksets:
+ skstad:
+ skstai:
+ skstas:
+ skultn:
+ sklltn:
+ skequl:
+ skwrdr:
+ skiipt:
+ skiiwe:
+ skinpt:
+ skinwe:
+ skimpt:
+ skimwe:
+ twcspx:
+ wpinie:
+ wpcace:
+ wpunce:
+ wpwcsn:
+Warning on line 4823 of FTN.f: inconsistent calling sequences for zcall4,
+ arg 4: here real variable, previously integer variable.
+ wpwcst:
+ wpobjo:
+ wpsetr:
+ wpgetr:
+ wpinit:
+ wpshun:
+ wpclas:
+ wpid2j:
+ wpclat:
+ wploas:
+ wcspie:
+ wpcnve:
+ dbgpre:
+ imgint:
+ imgcae:
+ imgune:
+ imgwcn:
+ imgwct:
+ imggea:
+ imgobo:
+ imgser:
+ imgses:
+ imgseo:
+ imgseb:
+ imgams:
+ imgdes:
+ imgcos:
+ imgcot:
+ imgged:
+ mefint:
+ mefcae:
+ mefune:
+ mefwcn:
+ mefwct:
+ mefobo:
+ mspint:
+ mspcae:
+ mspune:
+ mspwcn:
+ mspwct:
+ mspobo:
+ wcsgfm:
+ unkint:
+ unkcae:
+ unkune:
+ unkwcn:
+ unkwct:
+ unkgea:
+ unkobo:
+ sysruk:
+ ximcot:
+ ximdit:
+ ximmee:
+ ximalt:
+ ximwre:
+ ximred:
+ ximinr:
+ ximzxn:
+ ximonr:
+Warning on line 8474 of FTN.f: inconsistent calling sequences for ximalt,
+ arg 2: here integer variable, previously integer*2 variable.
+Rerunning "f2c -P ... FTN.f FTN.P" may change prototypes or declarations.
+Converting fortran source file.....
+First pass....
+FTN.f:
+ dspmmp:
+ dspmip:
+ dsmath:
+Warning on line 264 of FTN.f: inconsistent calling sequences for mwctrd:
+ here 3, previously 4 args and string lengths.
+ idxstr:
+ reopen:
+ skdecs:
+ skdecr:
+ skdecm:
+ skstrs:
+ skimws:
+ skenws:
+ skcopy:
+ skcloe:
+ sksavm:
+ skctym:
+ sksetd:
+ skseti:
+ sksets:
+ skstad:
+ skstai:
+ skstas:
+ skultn:
+ sklltn:
+ skequl:
+ skwrdr:
+ skiipt:
+ skiiwe:
+ skinpt:
+ skinwe:
+ skimpt:
+ skimwe:
+ twcspx:
+ wpinie:
+ wpcace:
+ wpunce:
+ wpwcsn:
+Warning on line 4823 of FTN.f: inconsistent calling sequences for zcall4,
+ arg 4: here real variable, previously integer variable.
+ wpwcst:
+ wpobjo:
+ wpsetr:
+ wpgetr:
+ wpinit:
+ wpshun:
+ wpclas:
+ wpid2j:
+ wpclat:
+ wploas:
+ wcspie:
+ wpcnve:
+ dbgpre:
+ imgint:
+ imgcae:
+ imgune:
+ imgwcn:
+ imgwct:
+ imggea:
+ imgobo:
+ imgser:
+ imgses:
+ imgseo:
+ imgseb:
+ imgams:
+ imgdes:
+ imgcos:
+ imgcot:
+ imgged:
+ mefint:
+ mefcae:
+ mefune:
+ mefwcn:
+ mefwct:
+ mefobo:
+ mspint:
+ mspcae:
+ mspune:
+ mspwcn:
+ mspwct:
+ mspobo:
+ wcsgfm:
+ unkint:
+ unkcae:
+ unkune:
+ unkwcn:
+ unkwct:
+ unkgea:
+ unkobo:
+ sysruk:
+ ximcot:
+ ximdit:
+ ximmee:
+ ximalt:
+ ximwre:
+ ximred:
+ ximinr:
+ ximzxn:
+ ximonr:
+Warning on line 8474 of FTN.f: inconsistent calling sequences for ximalt,
+ arg 2: here integer variable, previously integer*2 variable.
+Second pass....
+dspmmap.f:
+ dspmmp:
+ dspmip:
+ dsmath:
+Warning on line 264 of dspmmap.f: inconsistent calling sequences for mwctrd:
+ here 3, previously 4 args and string lengths.
+idxstr.f:
+ idxstr:
+reopen.f:
+ reopen:
+skdecode.f:
+ skdecs:
+ skdecr:
+ skdecm:
+ skstrs:
+ skimws:
+ skenws:
+ skcopy:
+ skcloe:
+sksaveim.f:
+ sksavm:
+ skctym:
+skset.f:
+ sksetd:
+ skseti:
+ sksets:
+skstat.f:
+ skstad:
+ skstai:
+ skstas:
+sktransform.f:
+ skultn:
+ sklltn:
+ skequl:
+skwrdstr.f:
+ skwrdr:
+skwrite.f:
+ skiipt:
+ skiiwe:
+ skinpt:
+ skinwe:
+ skimpt:
+ skimwe:
+t_wcspix.f:
+ twcspx:
+ wpinie:
+ wpcace:
+ wpunce:
+ wpwcsn:
+Warning on line 414 of t_wcspix.f: inconsistent calling sequences for zcall4,
+ arg 4: here real variable, previously integer variable.
+ wpwcst:
+ wpobjo:
+ wpsetr:
+ wpgetr:
+ wpinit:
+ wpshun:
+ wpclas:
+ wpid2j:
+ wpclat:
+ wploas:
+ wcspie:
+ wpcnve:
+ dbgpre:
+wcimage.f:
+ imgint:
+ imgcae:
+ imgune:
+ imgwcn:
+ imgwct:
+ imggea:
+ imgobo:
+ imgser:
+ imgses:
+ imgseo:
+ imgseb:
+ imgams:
+ imgdes:
+ imgcos:
+ imgcot:
+ imgged:
+wcmef.f:
+ mefint:
+ mefcae:
+ mefune:
+ mefwcn:
+ mefwct:
+ mefobo:
+wcmspec.f:
+ mspint:
+ mspcae:
+ mspune:
+ mspwcn:
+ mspwct:
+ mspobo:
+wcsgfterm.f:
+ wcsgfm:
+wcunknown.f:
+ unkint:
+ unkcae:
+ unkune:
+ unkwcn:
+ unkwct:
+ unkgea:
+ unkobo:
+x_ism.f:
+ sysruk:
+ximtool.f:
+ ximcot:
+ ximdit:
+ ximmee:
+ ximalt:
+ ximwre:
+ ximred:
+ ximinr:
+ ximzxn:
+ ximonr:
+Warning on line 482 of ximtool.f: inconsistent calling sequences for ximalt,
+ arg 2: here integer variable, previously integer*2 variable.
+Running LINT on converted C source....
+dspmmap.c:
+dspmmap.c(152): warning: argument refim unused in function dspmip_
+idxstr.c:
+reopen.c:
+skdecode.c:
+sksaveim.c:
+skset.c:
+skstat.c:
+sktransform.c:
+skwrdstr.c:
+skwrite.c:
+t_wcspix.c:
+t_wcspix.c(830): warning: argument wp unused in function wpgetr_
+wcimage.c:
+wcimage.c(257): warning: argument id unused in function imgune_
+wcimage.c(380): warning: im set but not used in function imgwcn_
+wcimage.c(430): warning: argument id unused in function imgwct_
+wcimage.c(470): warning: im set but not used in function imgwct_
+wcimage.c(510): warning: argument id unused in function imggea_
+wcimage.c(609): warning: argument id unused in function imgobo_
+wcimage.c(899): warning: co set but not used in function imgses_
+wcmef.c:
+wcmspec.c:
+wcsgfterm.c:
+wcsgfterm.c(122): warning: errcoe set but not used in function wcsgfm_
+wcunknown.c:
+wcunknown.c(108): warning: argument id unused in function unkune_
+wcunknown.c(173): warning: wp set but not used in function unkwcn_
+wcunknown.c(144): warning: argument id unused in function unkwcn_
+wcunknown.c(208): warning: argument cp unused in function unkwct_
+wcunknown.c(208): warning: argument id unused in function unkwct_
+wcunknown.c(234): warning: argument id unused in function unkgea_
+wcunknown.c(284): warning: argument id unused in function unkobo_
+x_ism.c:
+ximtool.c:
+ximtool.c(573): warning: argument nexthr unused in function ximzxn_
+ximtool.c(603): warning: code set but not used in function ximonr_
+Lint pass2:
+mwctrd_: variable # of args. dspmmap.c(362) :: dspmmap.c(395)
+zcall4_, arg. 4 used inconsistently t_wcspix.c(441) :: t_wcspix.c(525)
+zcall4_, arg. 5 used inconsistently t_wcspix.c(441) :: t_wcspix.c(525)
+ximalt_, arg. 2 used inconsistently ximtool.c(295) :: ximtool.c(607)
+ximalt_, arg. 3 used inconsistently ximtool.c(295) :: ximtool.c(607)
+Saving output....
+Cleaning up....
+/bin/rm: No match.
+Done.
diff --git a/vendor/x11iraf/ximtool/clients.old/doc/Notes b/vendor/x11iraf/ximtool/clients.old/doc/Notes
new file mode 100644
index 00000000..da021306
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/doc/Notes
@@ -0,0 +1,199 @@
+
+
+define MAX_WCSLINES 4
+
+define SZ_WPIX 6
+define WP_CPTR Memi[$1 ] # cache pointer
+define WP_PTABSZ Memi[$1+1] # pixel table size
+define WP_SYSTEMS Memi[$1+2] # WCS readout systems
+define WP_FORMATS Memi[$1+3] # WCS readout formats
+
+define SYSTEMS Memi[WP_SYSTEMS($1)+$2-1] # WCS systems per line
+define FORMATS Memi[WP_FORMATS($1)+$2-1] # WCS formats per line
+define OBJCACHE Memi[WP_CPTR($1)+$2] # object cache
+
+# Element of an object cache.
+define SZ_CNODE 135 # size of a cache node
+define SZ_OBJREF 128 # size of a object reference
+
+define C_OBJID Memi[$1] # object id
+define C_REGID Memi[$1+1] # region id
+define C_CLASS Memi[$1+2] # object class
+define C_DATA Memi[$1+3] # object data ptr
+define C_REF Memc[P2C($1+4)] # object reference file
+
+# Object class definitions.
+define IMAGE_CLASS 1 # generic image class
+define MEF_CLASS 2 # Mosaic MEF image class
+define MULTISPEC_CLASS 3 # multispec data class
+
+# Class methods.
+define LEN_CL 6 # length of class table
+define MAX_CL 6 # max supported classes
+define SZ_CLNAME 16 # size of a class name
+
+define CL_INIT cl_table[1,$1] # class initializer
+define CL_CACHE cl_table[2,$1] # cache the object
+define CL_UNCACHE cl_table[3,$1] # uncache the object
+define CL_WCSTRAN cl_table[4,$1] # WCS tranformations
+define CL_WCSLIST cl_table[5,$1] # list available WCS
+define CL_GETDATA cl_table[6,$1] # get object data
+define CL_NAME cl_names[1,$1] # class name
+
+# Class common.
+int cl_nclasses # number of defined functions
+int cl_table[LEN_CL,MAX_CL] # class table
+char cl_names[SZ_CLNAME,MAX_CL] # class names
+common /class_com/ cl_nclasses, cl_table, cl_names
+
+
+# Image class data.
+define O_IM Memi[$1+2] # image pointer
+define O_MW Memi[$1+3] # image wcs pointer
+define O_CO Memi[$1+3] # skywcs transform pointer
+define O_CT Memi[$1+4] # mwcs transform pointer
+define O_ROT Memr[$1+5] # rotation angle
+define O_SCALE Memr[$1+6] # plate scale
+
+
+
+--------------------------------------------------------------------------------
+ISM Methods:
+--------------------------------------------------------------------------------
+
+ initialize
+ cache <objid> <ref>
+ uncache <objid>
+ wcstran <objid> <x> <y> [[<region-name> <x> <y>] ["NDC" <x> <y>]]
+ wcslist <objid>
+ getheader <objid> <template-list>
+
+
+procedure initialize
+begin
+ for (each object in the cache)
+ uncache object
+ send startup req to GUI
+end
+
+procedure cache
+begin
+end
+
+procedure uncache
+begin
+end
+
+procedure wcstran
+begin
+end
+
+procedure wcslist
+begin
+end
+
+procedure getheader
+begin
+end
+
+
+--------------------------------------------------------------------------------
+GUI Callbacks
+--------------------------------------------------------------------------------
+
+proc ism_msg { param old new } {
+
+ set target [lindex $new 0] ;# name of ism module
+
+ switch [lindex $new 0] {
+ source { source [lindex $new 1] } ;# source Tcl code
+ alert { Wexec client [lindex $new 1] } ;# alert from ism client
+
+ deliver { set ism [lindex $new 0] ;# determine ISM name
+ set argv [lrange $new 1 end] ;# get args
+ set argc [llength $argv]
+ ${ism}_msg $argc $argv ;# call module
+ }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+proc wpix_msg { argc argv } {
+
+ switch [lindex $argv 0] {
+ startup { wpix_startup }
+ shutdown { wpix_shutdown }
+ cache { .... save image name to GUI cache list
+ }
+ uncache { .... remove image name from GUI cache list
+ }
+ wcstran { .... parse argv for WCS field and update display
+ }
+ pixtab {
+ }
+ wcslist {
+ }
+ wcstype { set type [lindex $argv 1] ;# Set WCS for a line
+ set line [lindex $argv 2]
+ send sysWcs$line set label $type
+ if {$type == "None"} {
+ send wpWcs$line set on False
+ } else {
+ send wpWcs$line set on True
+ }
+ setCoordPanelHeight
+ }
+ wcsfmt { set fmt [lindex $argv 1] ;# Set fmt for a line
+ set line [lindex $argv 2]
+ send fmtWcs$line set label $fmt
+ }
+ header { set type [lindex $argv 1] ;# write header text
+ set text [lindex $argv 2]
+ switch $type {
+ imghdr {send hdrText append $text}
+ wcshdr {send hdrKGText append $text}
+ wcsinfo {send hdrIGText append $text}
+ }
+ }
+ } ;# end switch
+}
+
+proc wpix_startup args {
+ global ismEnabled frameCache
+
+ set ismEnabled 1 ;# initialize buttons
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ setCoordPanelSensitivity
+
+ resizeCoordsBox $up_todo ;# resize wcsbox marker
+ updateCoordsBox
+
+ foreach c [array names frameCache] { ;# initialize local frame cache
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch { ;# update ISM with GUI settings
+ send wpix set psize $psize
+ set wcsfmt [string tolower [send wcsFmtMenu get label]]
+ send wpix set wcsfmt $wcsfmt
+ if {[send wcsSysAltWCS get on]} {
+ setAltSystem
+ }
+ }
+}
+
+proc wpix_shutdown args {
+ global ismEnabled
+
+ set ismEnabled 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ setCoordPanelSensitivity
+ wcsFmtIValue ""
+ wcsFmtImWCS "" "" ""
+ wcsFmtAltWCS "" "" ""
+ resizeCoordsBox 0
+}
+
+
diff --git a/vendor/x11iraf/ximtool/clients.old/doc/README b/vendor/x11iraf/ximtool/clients.old/doc/README
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/doc/README
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/README b/vendor/x11iraf/ximtool/clients.old/lib/README
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/README
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.f b/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.f
new file mode 100644
index 00000000..3542286f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.f
@@ -0,0 +1,356 @@
+ integer function dspmmp (pmname, refim)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer refim
+ integer*2 pmname(*)
+ integer im
+ integer*2 fname(255 +1)
+ integer nowhie
+ integer errcoe
+ logical streq
+ integer impmmp
+ integer dspmip
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(6)
+ integer*2 st0002(4)
+ integer*2 st0003(4)
+ save
+ data st0001 / 69, 77, 80, 84, 89, 0/
+ data st0002 / 66, 80, 77, 0/
+ data st0003 / 66, 80, 77, 0/
+ if (.not.(nowhie (pmname, fname, 255 ) .eq. 0)) goto 110
+ dspmmp = (0)
+ goto 100
+110 continue
+ if (.not.(streq (fname, st0001))) goto 120
+ dspmmp = (0)
+ goto 100
+120 continue
+ if (.not.(fname(1) .eq. 33)) goto 130
+ call xerpsh
+ call imgstr (refim, fname(2), fname, 255 )
+ if (.not.xerpop()) goto 140
+ fname(1) = 0
+140 continue
+ goto 131
+130 continue
+ if (.not.(streq (fname, st0002))) goto 150
+ call xerpsh
+ call imgstr (refim, st0003, fname, 255 )
+ if (.not.xerpop()) goto 160
+ dspmmp = (0)
+ goto 100
+160 continue
+150 continue
+131 continue
+ call xerpsh
+ im = impmmp (fname, 1 , 0)
+ if (.not.xerpop()) goto 170
+ sw0001=(errcoe())
+ goto 180
+190 continue
+ im = dspmip (fname, refim)
+ if (xerflg) goto 100
+ goto 181
+200 continue
+ call erract (2 )
+ if (xerflg) goto 100
+ goto 181
+180 continue
+ if (sw0001.eq.743) goto 190
+ if (sw0001.eq.921) goto 190
+ goto 200
+181 continue
+170 continue
+ call xerpsh
+ call dsmath (im, refim)
+ if (.not.xerpop()) goto 210
+ call erract (3 )
+ if (xerflg) goto 100
+210 continue
+ dspmmp = (im)
+ goto 100
+100 return
+ end
+ integer function dspmip (pmname, refim)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer refim
+ integer*2 pmname(*)
+ integer i
+ integer ndim
+ integer npix
+ integer val
+ integer sp
+ integer v1
+ integer v2
+ integer imin
+ integer imout
+ integer pm
+ integer mw
+ integer data
+ integer imgnli
+ integer immap
+ integer pmnewk
+ integer impmmo
+ integer imgl1i
+ integer mwopem
+ logical xerflg
+ common /xercom/ xerflg
+ save
+ call smark (sp)
+ call salloc (v1, 7 , 5)
+ call salloc (v2, 7 , 5)
+ call amovkl (int(1), meml(v1), 7 )
+ call amovkl (int(1), meml(v2), 7 )
+ imin = immap (pmname, 1 , 0)
+ if (xerflg) goto 100
+ pm = pmnewk (imin, 27)
+ ndim = memi(imin+200 +7)
+ npix = meml(imin+200 +1+8-1)
+110 if (.not.(imgnli (imin, data, meml(v1)) .ne. -2)) goto 111
+ do 120 i = 0, npix-1
+ val = memi(data+i)
+ if (.not.(val .lt. 0)) goto 130
+ memi(data+i) = 0
+130 continue
+120 continue
+121 continue
+ call pmplpi (pm, meml(v2), memi(data), 0, npix, 12 )
+ call amovl (meml(v1), meml(v2), ndim)
+ goto 110
+111 continue
+ imout = impmmo (pm, imin)
+ data = imgl1i (imout)
+ mw = mwopem (imin)
+ if (xerflg) goto 100
+ call mwsavm (mw, imout)
+ call mwcloe (mw)
+ call imunmp (imin)
+ call sfree (sp)
+ dspmip = (imout)
+ goto 100
+100 return
+ end
+ subroutine dsmath (im, refim)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer refim
+ integer i
+ integer j
+ integer k
+ integer l
+ integer i1
+ integer i2
+ integer j1
+ integer j2
+ integer nc
+ integer nl
+ integer ncpm
+ integer nlpm
+ integer nx
+ integer val
+ double precision x1
+ double precision x2
+ double precision y1
+ double precision y2
+ double precision lt(6)
+ double precision lt1(6)
+ double precision lt2(6)
+ integer*4 vold(7 )
+ integer*4 vnew(7 )
+ integer pm
+ integer pmnew
+ integer imnew
+ integer mw
+ integer ctx
+ integer cty
+ integer bufref
+ integer bufpm
+ integer imstai
+ integer plopen
+ integer mwopem
+ integer impmmo
+ integer imgl1i
+ integer mwsctn
+ logical pmempy
+ logical pmliny
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(40)
+ integer*2 st0002(8)
+ integer*2 st0003(9)
+ integer*2 st0004(8)
+ integer*2 st0005(9)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 73,109, 97,103,101, 32, 97,110/
+ data (st0001(iyy),iyy= 9,16) /100, 32,109, 97,115,107, 32,104/
+ data (st0001(iyy),iyy=17,24) / 97,118,101, 32, 97, 32,114,101/
+ data (st0001(iyy),iyy=25,32) /108, 97,116,105,118,101, 32,114/
+ data (st0001(iyy),iyy=33,40) /111,116, 97,116,105,111,110, 0/
+ data st0002 /108,111,103,105, 99, 97,108, 0/
+ data (st0003(iyy),iyy= 1, 8) /112,104,121,115,105, 99, 97,108/
+ data (st0003(iyy),iyy= 9, 9) / 0/
+ data st0004 /108,111,103,105, 99, 97,108, 0/
+ data (st0005(iyy),iyy= 1, 8) /112,104,121,115,105, 99, 97,108/
+ data (st0005(iyy),iyy= 9, 9) / 0/
+ if (.not.(im .eq. 0)) goto 110
+ goto 100
+110 continue
+ nc = meml(refim+200 +1+8-1)
+ nl = meml(refim+200 +2+8-1)
+ ncpm = meml(im+200 +1+8-1)
+ nlpm = meml(im+200 +2+8-1)
+ pm = imstai (im, 16 )
+ if (.not.(pmempy(pm) .and. nc .eq. ncpm .and. nl .eq. nlpm))
+ * goto 120
+ goto 100
+120 continue
+ mw = mwopem (im)
+ if (xerflg) goto 100
+ call mwgltd (mw, lt, lt(5), 2)
+ call mwcloe (mw)
+ mw = mwopem (refim)
+ if (xerflg) goto 100
+ call mwgltd (mw, lt2, lt2(5), 2)
+ call mwcloe (mw)
+ call mwinvd (lt, lt1, 2)
+ call mwmmud (lt1, lt2, lt, 2)
+ call mwvmud (lt, lt(5), lt(5), 2)
+ lt(5) = lt2(5) - lt(5)
+ lt(6) = lt2(6) - lt(6)
+ do 130 i = 1, 6
+ lt(i) = nint (1d6 * (lt(i)-int(lt(i)))) / 1d6 + int(lt(i))
+130 continue
+131 continue
+ if (.not.(lt(2) .ne. 0. .or. lt(3) .ne. 0.)) goto 140
+ call xerror(1, st0001)
+ if (xerflg) goto 100
+140 continue
+ if (.not.(lt(1) .eq. 1d0 .and. lt(4) .eq. 1d0 .and. lt(5) .eq.
+ * 0d0 .and. lt(6) .eq. 0d0)) goto 150
+ goto 100
+150 continue
+ mw = mwopem (im)
+ if (xerflg) goto 100
+ call mwsltd (mw, lt, lt(5), 2)
+ ctx = mwsctn (mw, st0002, st0003, 1)
+ cty = mwsctn (mw, st0004, st0005, 2)
+ pmnew = plopen(0)
+ if (xerflg) goto 100
+ call plssie(pmnew, 2, meml(refim+200 +1+8-1) , 27)
+ imnew = impmmo (pmnew, 0)
+ bufref = imgl1i (imnew)
+ call mwctrd (ctx, 1-0.5d0, x1, 1)
+ call mwctrd (ctx, nc+0.5d0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1d-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1d-5))
+ call mwctrd (cty, 1-0.5d0, y1, 1)
+ call mwctrd (cty, nl+0.5d0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1d-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1d-5))
+ if (.not.(i1 .le. i2 .and. j1 .le. j2)) goto 160
+ nx = i2 - i1 + 1
+ call xmallc(bufpm, nx, 4)
+ call xmallc(bufref, nc, 4)
+ vold(1) = i1
+ vnew(1) = 1
+ do 170 j = 1, nl
+ call mwctrd (cty, j-0.5d0, y1, 1)
+ call mwctrd (cty, j+0.5d0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1d-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1d-5))
+ if (.not.(j2 .lt. j1)) goto 180
+ goto 170
+180 continue
+ vnew(2) = j
+ call aclri (memi(bufref), nc)
+ do 190 l = j1, j2
+ vold(2) = l
+ if (.not.(.not.pmliny (pm, vold))) goto 200
+ goto 190
+200 continue
+ call pmglpi (pm, vold, memi(bufpm), 0, nx, 0)
+ do 210 i = 1, nc
+ call mwctrd (ctx, i-0.5d0, x1, 1)
+ call mwctrd (ctx, i+0.5d0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1d-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1d-5))
+ if (.not.(i2 .lt. i1)) goto 220
+ goto 210
+220 continue
+ val = memi(bufref+i-1)
+ do 230 k = i1-vold(1), i2-vold(1)
+ val = max (val, memi(bufpm+k))
+230 continue
+231 continue
+ memi(bufref+i-1) = val
+210 continue
+211 continue
+190 continue
+191 continue
+ call pmplpi (pmnew, vnew, memi(bufref), 0, nc, 12 )
+170 continue
+171 continue
+ call xmfree(bufref, 4)
+ call xmfree(bufpm, 4)
+160 continue
+ call mwcloe (mw)
+ call imunmp (im)
+ im = imnew
+ call imseti (im, 16 , pmnew)
+100 return
+ end
+c pmliny pm_linenotempty
+c mwmmud mw_mmuld
+c errcoe errcode
+c mwsltd mw_sltermd
+c mwinvd mw_invertd
+c impmmo im_pmmapo
+c plssie pl_ssize
+c mwctrd mw_ctrand
+c pmempy pm_empty
+c mwvmud mw_vmuld
+c dsmath ds_match
+c plopen pl_open
+c mwsavm mw_saveim
+c mwopem mw_openim
+c imunmp imunmap
+c mwsctn mw_sctran
+c impmmp im_pmmap
+c dspmip ds_pmimmap
+c dspmmp ds_pmmap
+c imstai imstati
+c nowhie nowhite
+c mwcloe mw_close
+c pmnewk pm_newmask
+c mwgltd mw_gltermd
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.x b/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.x
new file mode 100644
index 00000000..621f0372
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/dspmmap.x
@@ -0,0 +1,244 @@
+include <mach.h>
+include <ctype.h>
+include <error.h>
+include <imhdr.h>
+include <imset.h>
+include <pmset.h>
+include <syserr.h>
+
+
+# DS_PMMAP -- Open a pixel mask READ_ONLY.
+#
+# Open the pixel mask. If a regular image is specified convert it to
+# a pixel mask. Match the mask to the reference image based on the
+# physical coordinates. A null filename is allowed and returns NULL.
+
+pointer procedure ds_pmmap (pmname, refim)
+
+char pmname[ARB] #I Pixel mask name
+pointer refim #I Reference image pointer
+
+pointer im
+char fname[SZ_FNAME]
+int nowhite(), errcode()
+bool streq()
+pointer im_pmmap(), ds_pmimmap()
+errchk ds_pmimmap, ds_match
+
+begin
+ if (nowhite (pmname, fname, SZ_FNAME) == 0)
+ return (NULL)
+ if (streq (fname, "EMPTY"))
+ return (NULL)
+ if (fname[1] == '!') {
+ iferr (call imgstr (refim, fname[2], fname, SZ_FNAME))
+ fname[1] = EOS
+ } else if (streq (fname, "BPM")) {
+ iferr (call imgstr (refim, "BPM", fname, SZ_FNAME))
+ return (NULL)
+ }
+
+ iferr (im = im_pmmap (fname, READ_ONLY, NULL)) {
+ switch (errcode()) {
+ case SYS_FOPNNEXFIL, SYS_PLBADSAVEF:
+ im = ds_pmimmap (fname, refim)
+ default:
+ call erract (EA_ERROR)
+ }
+ }
+
+ iferr (call ds_match (im, refim))
+ call erract (EA_WARN)
+
+ return (im)
+end
+
+
+# DS_PMIMMAP -- Open a pixel mask from a non-pixel list image.
+# Return error if the image cannot be opened.
+
+pointer procedure ds_pmimmap (pmname, refim)
+
+char pmname[ARB] #I Image name
+pointer refim #I Reference image pointer
+
+int i, ndim, npix, val
+pointer sp, v1, v2, im_in, im_out, pm, mw, data
+
+int imgnli()
+pointer immap(), pm_newmask(), im_pmmapo(), imgl1i(), mw_openim()
+errchk immap, mw_openim
+
+begin
+ call smark (sp)
+ call salloc (v1, IM_MAXDIM, TY_LONG)
+ call salloc (v2, IM_MAXDIM, TY_LONG)
+
+ call amovkl (long(1), Meml[v1], IM_MAXDIM)
+ call amovkl (long(1), Meml[v2], IM_MAXDIM)
+
+ im_in = immap (pmname, READ_ONLY, 0)
+ pm = pm_newmask (im_in, 27)
+
+ ndim = IM_NDIM(im_in)
+ npix = IM_LEN(im_in,1)
+
+ while (imgnli (im_in, data, Meml[v1]) != EOF) {
+ do i = 0, npix-1 {
+ val = Memi[data+i]
+ if (val < 0)
+ Memi[data+i] = 0
+ }
+ call pmplpi (pm, Meml[v2], Memi[data], 0, npix, PIX_SRC)
+ call amovl (Meml[v1], Meml[v2], ndim)
+ }
+
+ im_out = im_pmmapo (pm, im_in)
+ data = imgl1i (im_out) # Force I/O to set header
+ mw = mw_openim (im_in) # Set WCS
+ call mw_saveim (mw, im_out)
+ call mw_close (mw)
+
+ call imunmap (im_in)
+ call sfree (sp)
+ return (im_out)
+end
+
+
+# DS_MATCH -- Set the pixel mask to match the reference image.
+# This matches sizes and physical coordinates and allows the
+# original mask to be smaller or larger than the reference image.
+# Subsequent use of the pixel mask can then work in the logical
+# coordinates of the reference image. The mask values are the maximum
+# of the mask values which overlap each reference image pixel.
+# A null input returns a null output.
+
+procedure ds_match (im, refim)
+
+pointer im #U Pixel mask image pointer
+pointer refim #I Reference image pointer
+
+int i, j, k, l, i1, i2, j1, j2, nc, nl, ncpm, nlpm, nx, val
+double x1, x2, y1, y2, lt[6], lt1[6], lt2[6]
+long vold[IM_MAXDIM], vnew[IM_MAXDIM]
+pointer pm, pmnew, imnew, mw, ctx, cty, bufref, bufpm
+
+int imstati()
+pointer pm_open(), mw_openim(), im_pmmapo(), imgl1i(), mw_sctran()
+bool pm_empty(), pm_linenotempty()
+errchk pm_open, mw_openim
+
+begin
+ if (im == NULL)
+ return
+
+ # Set sizes.
+ nc = IM_LEN(refim,1)
+ nl = IM_LEN(refim,2)
+ ncpm = IM_LEN(im,1)
+ nlpm = IM_LEN(im,2)
+
+ # If the mask is empty and the sizes are the same then it does not
+ # matter if the two are actually matched in physical coordinates.
+ pm = imstati (im, IM_PMDES)
+ if (pm_empty(pm) && nc == ncpm && nl == nlpm)
+ return
+
+ # Compute transformation between reference (logical) coordinates
+ # and mask (physical) coordinates.
+
+ mw = mw_openim (im)
+ call mw_gltermd (mw, lt, lt[5], 2)
+ call mw_close (mw)
+
+ mw = mw_openim (refim)
+ call mw_gltermd (mw, lt2, lt2[5], 2)
+ call mw_close (mw)
+
+ # Combine lterms.
+ call mw_invertd (lt, lt1, 2)
+ call mw_mmuld (lt1, lt2, lt, 2)
+ call mw_vmuld (lt, lt[5], lt[5], 2)
+ lt[5] = lt2[5] - lt[5]
+ lt[6] = lt2[6] - lt[6]
+ do i = 1, 6
+ lt[i] = nint (1D6 * (lt[i]-int(lt[i]))) / 1D6 + int(lt[i])
+
+ # Check for a rotation. For now don't allow any rotation.
+ if (lt[2] != 0. || lt[3] != 0.)
+ call error (1, "Image and mask have a relative rotation")
+
+ # Check for an exact match.
+ if (lt[1] == 1D0 && lt[4] == 1D0 && lt[5] == 0D0 && lt[6] == 0D0)
+ return
+
+ # Set reference to mask coordinates.
+ mw = mw_openim (im)
+ call mw_sltermd (mw, lt, lt[5], 2)
+ ctx = mw_sctran (mw, "logical", "physical", 1)
+ cty = mw_sctran (mw, "logical", "physical", 2)
+
+ # Create a new pixel mask of the required size and offset.
+ # Do dummy image I/O to set the header.
+ pmnew = pm_open (NULL)
+ call pm_ssize (pmnew, 2, IM_LEN(refim,1), 27)
+ imnew = im_pmmapo (pmnew, NULL)
+ bufref = imgl1i (imnew)
+
+ # Compute region of mask overlapping the reference image.
+ call mw_ctrand (ctx, 1-0.5D0, x1, 1)
+ call mw_ctrand (ctx, nc+0.5D0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1D-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1D-5))
+ call mw_ctrand (cty, 1-0.5D0, y1, 1)
+ call mw_ctrand (cty, nl+0.5D0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1D-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1D-5))
+
+ # Set the new mask values to the maximum of all mask values falling
+ # within each reference pixel in the overlap region.
+ if (i1 <= i2 && j1 <= j2) {
+ nx = i2 - i1 + 1
+ call malloc (bufpm, nx, TY_INT)
+ call malloc (bufref, nc, TY_INT)
+ vold[1] = i1
+ vnew[1] = 1
+ do j = 1, nl {
+ call mw_ctrand (cty, j-0.5D0, y1, 1)
+ call mw_ctrand (cty, j+0.5D0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1D-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1D-5))
+ if (j2 < j1)
+ next
+
+ vnew[2] = j
+ call aclri (Memi[bufref], nc)
+ do l = j1, j2 {
+ vold[2] = l
+ if (!pm_linenotempty (pm, vold))
+ next
+ call pmglpi (pm, vold, Memi[bufpm], 0, nx, 0)
+ do i = 1, nc {
+ call mw_ctrand (ctx, i-0.5D0, x1, 1)
+ call mw_ctrand (ctx, i+0.5D0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1D-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1D-5))
+ if (i2 < i1)
+ next
+ val = Memi[bufref+i-1]
+ do k = i1-vold[1], i2-vold[1]
+ val = max (val, Memi[bufpm+k])
+ Memi[bufref+i-1] = val
+ }
+ }
+ call pmplpi (pmnew, vnew, Memi[bufref], 0, nc, PIX_SRC)
+ }
+ call mfree (bufref, TY_INT)
+ call mfree (bufpm, TY_INT)
+ }
+
+ call mw_close (mw)
+ call imunmap (im)
+ im = imnew
+ call imseti (im, IM_PMDES, pmnew)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/idxstr.f b/vendor/x11iraf/ximtool/clients.old/lib/idxstr.f
new file mode 100644
index 00000000..ac16febf
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/idxstr.f
@@ -0,0 +1,44 @@
+ integer function idxstr (index, outstr, maxch, dict)
+ integer index
+ integer maxch
+ integer*2 outstr(*)
+ integer*2 dict(*)
+ integer i
+ integer len
+ integer start
+ integer count
+ integer xstrln
+ save
+ outstr(1) = 0
+ if (.not.(dict(1) .eq. 0)) goto 110
+ idxstr = (0)
+ goto 100
+110 continue
+ count = 1
+ len = xstrln(dict)
+ start = 2
+120 if (.not.(count .lt. index)) goto 122
+ if (.not.(dict(start) .eq. dict(1))) goto 130
+ count = count + 1
+130 continue
+ if (.not.(start .eq. len)) goto 140
+ idxstr = (0)
+ goto 100
+140 continue
+121 start = start + 1
+ goto 120
+122 continue
+ i = start
+150 if (.not.(dict(i) .ne. 0 .and. dict(i) .ne. dict(1))) goto 152
+ if (.not.(i - start + 1 .gt. maxch)) goto 160
+ goto 152
+160 continue
+ outstr(i - start + 1) = dict(i)
+151 i = i + 1
+ goto 150
+152 continue
+ outstr(i - start + 1) = 0
+ idxstr = (count)
+ goto 100
+100 return
+ end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/idxstr.x b/vendor/x11iraf/ximtool/clients.old/lib/idxstr.x
new file mode 100644
index 00000000..7b055658
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/idxstr.x
@@ -0,0 +1,54 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+
+# IDXSTR -- Search a dictionary string for a given string index number.
+# This is the opposite function of strdic(), that returns the index for
+# given string. The entries in the dictionary string are separated by
+# a delimiter character which is the first character of the dictionary
+# string. The index of the string found is returned as the function value.
+# Otherwise, if there is no string for that index, a zero is returned.
+
+int procedure idxstr (index, outstr, maxch, dict)
+
+int index #i String index
+char outstr[ARB] #o Output string as found in dictionary
+int maxch #i Maximum length of output string
+char dict[ARB] #i Dictionary string
+
+int i, len, start, count
+
+int strlen()
+
+begin
+ # Clear the output string.
+ outstr[1] = EOS
+
+ # Return if the dictionary is not long enough.
+ if (dict[1] == EOS)
+ return (0)
+
+ # Initialize the counters.
+ count = 1
+ len = strlen (dict)
+
+ # Search the dictionary string. This loop only terminates
+ # successfully if the index is found. Otherwise the procedure
+ # returns with and error condition.
+ for (start = 2; count < index; start = start + 1) {
+ if (dict[start] == dict[1])
+ count = count + 1
+ if (start == len)
+ return (0)
+ }
+
+ # Extract the output string from the dictionary.
+ for (i = start; dict[i] != EOS && dict[i] != dict[1]; i = i + 1) {
+ if (i - start + 1 > maxch)
+ break
+ outstr[i - start + 1] = dict[i]
+ }
+ outstr[i - start + 1] = EOS
+
+ # Return index for output string.
+ return (count)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/mkpkg b/vendor/x11iraf/ximtool/clients.old/lib/mkpkg
new file mode 100644
index 00000000..3c6a6c14
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/mkpkg
@@ -0,0 +1,17 @@
+# Make the ISM Client tasks.
+
+$checkout libpkg.a ../
+$update libpkg.a
+$checkin libpkg.a ../
+$exit
+
+libpkg.a:
+ @skywcs
+ idxstr.x
+ reopen.x <config.h> <fio.com> <fio.h>
+ dspmmap.x <ctype.h> <error.h> <imhdr.h> <imset.h> \
+ <mach.h> <pmset.h>
+ wcsgfterm.x
+ ximtool.x <config.h> <mach.h> <xwhen.h>
+ ;
+
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/reopen.f b/vendor/x11iraf/ximtool/clients.old/lib/reopen.f
new file mode 100644
index 00000000..f7a1c456
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/reopen.f
@@ -0,0 +1,70 @@
+ integer function reopen (fd, mode)
+ integer fd
+ integer mode
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer newfp
+ integer ffp
+ integer newfd
+ integer fgetfd
+ integer*4 boffst(4096 )
+ integer bufptr(4096 )
+ integer buftop(4096 )
+ integer iop(4096 )
+ integer itop(4096 )
+ integer otop(4096 )
+ integer fiodes(4096 )
+ integer fflags(4096 )
+ integer redird(4096 )
+ integer zdev(150 )
+ integer nextdv
+ integer fp
+ integer*2 pathne(511 +1)
+ logical xerflg
+ common /xercom/ xerflg
+ common /fiocom/ boffst, bufptr, buftop, iop, itop, otop, fiodes,
+ *fflags, redird, zdev, nextdv, fp, pathne
+ save
+ ffp = fiodes(fd)
+ if (.not.(fd .le. 0 .or. ffp .eq. 0)) goto 110
+ call syserr (733)
+ if (xerflg) goto 100
+110 continue
+ if (.not.(memi(ffp+1) .eq. 1 .and. mode .ne. 1 )) goto 120
+ call filerr (memc((((ffp+20+(10+256))-1)*2+1)) , 750)
+120 continue
+ if (.not.(memi(ffp+2) .ne. 12)) goto 130
+ call filerr (memc((((ffp+20+(10+256))-1)*2+1)) , 751)
+130 continue
+ newfd = fgetfd (memc((((ffp+20+(10+256))-1)*2+1)) , mode, 12)
+ newfp = fiodes(newfd)
+ memi(newfp+3) = memi(ffp+3)
+ memi(newfp+4) = memi(ffp+4)
+ memi(newfp) = memi(ffp)
+ if (.not.(memi(ffp+18) .eq. (ffp+20) )) goto 140
+ call xmallc(memi(ffp+18) , (10+256), 10 )
+ if (xerflg) goto 100
+ call amovi (memi((ffp+20) ), memi(memi(ffp+18) ), (10+256))
+140 continue
+ memi(memi(ffp+18) ) = memi(memi(ffp+18) ) + 1
+ memi(newfp+18) = memi(ffp+18)
+ if (.not.(mode .eq. 4)) goto 150
+ call xfseek(newfd, -2)
+ if (xerflg) goto 100
+150 continue
+ reopen = (newfd)
+ goto 100
+100 return
+ end
+c nextdv next_dev
+c boffst boffset
+c redird redir_fd
+c pathne pathname
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/reopen.x b/vendor/x11iraf/ximtool/clients.old/lib/reopen.x
new file mode 100644
index 00000000..59ddba30
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/reopen.x
@@ -0,0 +1,55 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <config.h>
+include <syserr.h>
+include <fio.h>
+
+# REOPEN -- Reopen a binary file. Used to gain two or more independent
+# sets of buffers to access a binary file. No protection against two
+# file descriptors trying to write to the same part of the file at the
+# same time, which may result in loss of data. The file descriptors and
+# buffers of reopened files are independent, but all files accessing the
+# same channel share the same channel descriptor (necessary to synchronize
+# i/o requests and to maintain a unique file size parameter).
+
+int procedure reopen (fd, mode)
+
+int fd, mode
+pointer newfp, ffp
+int newfd, fgetfd()
+errchk syserr, malloc, seek
+include <fio.com>
+
+begin
+ ffp = fiodes[fd]
+ if (fd <= 0 || ffp == NULL)
+ call syserr (SYS_FILENOTOPEN)
+
+ if (FMODE(ffp) == READ_ONLY && mode != READ_ONLY)
+ call filerr (FNAME(ffp), SYS_FREOPNMODE)
+ if (FTYPE(ffp) != BINARY_FILE)
+ call filerr (FNAME(ffp), SYS_FREOPNTYPE)
+
+ newfd = fgetfd (FNAME(ffp), mode, BINARY_FILE)
+ newfp = fiodes[newfd]
+
+ FDEV(newfp) = FDEV(ffp)
+ FBUFSIZE(newfp) = FBUFSIZE(ffp)
+ FCHAN(newfp) = FCHAN(ffp)
+
+ # If this is the first reopen, allocate space for a separate channel
+ # descriptor and copy the channel descriptor from the original file.
+
+ if (FCD(ffp) == FLCD(ffp)) {
+ call malloc (FCD(ffp), LEN_CHANDES, TY_STRUCT)
+ call amovi (Memi[FLCD(ffp)], Memi[FCD(ffp)], LEN_CHANDES)
+ }
+
+ FREFCNT(ffp) = FREFCNT(ffp) + 1 # bump ref count
+ FCD(newfp) = FCD(ffp)
+
+ if (mode == APPEND)
+ call seek (newfd, EOFL)
+
+ return (newfd)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/README b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/README
new file mode 100644
index 00000000..d15ab738
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/README
@@ -0,0 +1,302 @@
+ SKYWCS: The Sky Coordinates Package
+
+1. Introduction
+
+ The skywcs package contains a simple set of routines for doing managing sky
+coordinate information and for transforming from one sky coordinate system to
+another. The sky coordinate system is defined either by a system name, e.g.
+"J2000", "galactic, etc., or by an image system name, e.g. "dev$ypix" or
+"dev$ypix world".
+
+ The skywcs routine are layered on the Starlink Positional Astronomy library
+SLALIB which is installed in the IRAF MATH package. Type "help slalib option=
+sys" for more information about SLALIB.
+
+
+2. The Interface Routines
+
+The package prefix is sk. The interface routines are listed below.
+
+ stat = sk_decwcs (ccsystem, mw, coo, imcoo)
+ stat = sk_decwstr (ccsystem, coo, imcoo)
+ stat = sk_decim (im, wcs, mw, coo)
+ sk_enwcs (coo, ccsystem, maxch)
+ newcoo = sk_copy (coo)
+ sk_iiprint (label, imagesys, mw, coo)
+ sk_iiwrite (fd, label, imagesys, mw, coo)
+[id]val = sk_stat[id] (coo, param)
+ sk_stats (coo, param, str, maxch)
+ sk_set[id] (coo, param, [id]val)
+ sk_sets (coo, param, str)
+ sk_ultran (incoo, outcoo, ilng, ilat, olng, olat, npts)
+ sk_lltran (incoo, outoo, ilng, ilat, ipmlng, ipmlat, px, rv,
+ olng, olat)
+ sk_equatorial (incoo, outcoo, ilng, ilat, ipmlng, ipmlat, px,
+ rv, olng, olat)
+ sk_saveim (coo, mw, im)
+ sk_close (coo)
+
+
+3. Notes
+
+ An "include <pkg/skywcs.h>" statement must be included in the calling
+program to make the skywcs package parameter definitions visible to the calling
+program.
+
+ An "-lxtools -lslalib" must be included in the calling program link line
+to link in the skywcs and the slalib routines.
+
+ The sky coordinate descriptor is created with a call to one of the
+sk_decwcs, sk_decwstr, or sk_imwcs routines. If the source of the sky
+coordinate descriptor is an image then an IRAF MWCS descriptor will be returned
+with the sky oordinate descriptor. The sky coordinate descriptor is freed with a
+call to sk_close. A separate call to mw_close must be made to free the MWCS
+descriptor if one was allocated.
+
+ By default the main skywcs coordinate transformation routine sk_ultran
+assumes that the input and output sky coordinates are in hours and degrees
+if the input and output coordinate systems are equatorial, otherwise the
+coordinates are assumed to be in degrees and degrees. The default input and
+output sky coordinate units can be reset with calls to sk_seti. Two lower level
+coordinate transformations for handling proper motions sk_lltran and
+sk_equatorial are also available. These routines that the input and output
+coordinates and proper motions are in radians.
+
+ Calling programs working with both sky coordinate and MWCS descriptors
+need to be aware that the MWCS routines assume that all sky coordinates
+must be input in degrees and will be output in degrees and adjust their
+code accordingly.
+
+ The skywcs routine sk_saveim can be used to update an image header.
+
+
+3. Examples
+
+Example 1: Convert from B1950 coordinates to J2000 coordinates.
+
+ include <skywcs.h>
+
+ ....
+
+ # Open input coordinate system.
+ instat = sk_decwstr ("B1950", incoo, NULL)
+ if (instat == ERR) {
+ call sk_close (incoo)
+ return
+ }
+
+ # Open output coordinate system.
+ outstat = sk_decwstr ("J2000", outcoo, NULL)
+ if (outstat == ERR) {
+ call sk_close (outcoo)
+ return
+ }
+
+ # Do the transformation assuming the input coordinates are in hours
+ # and degrees. The output coordinates will be in hours and degrees
+ # as well.
+ call sk_ultran (incoo, outcoo, rain, decin, raout, decout, npts)
+
+ # Close the coordinate descriptors.
+ call sk_close (incoo)
+ call sk_close (outcoo)
+
+ ...
+
+
+Example 2: Repeat example 1 but convert to galactic coordinates.
+
+ include <skywcs.h>
+
+ ....
+
+ # Open the input coordinate system.
+ instat = sk_decwstr ("B1950", incoo, NULL)
+ if (instat == ERR) {
+ call sk_close (incoo)
+ return
+ }
+
+ # Open the output coordinate system.
+ outstat = sk_decwstr ("galactic", outcoo, NULL)
+ if (outstat == ERR) {
+ call sk_close (outcoo)
+ return
+ }
+
+ # Dd the transformation assuming the input coordinates are in hours and
+ # degrees. The output coordinates will be in degrees and degrees.
+ call sk_ultran (incoo, outcoo, rain, decin, raout, decout, npts)
+
+ # Close the coordinate descriptors.
+ call sk_close (incoo)
+ call sk_close (outcoo)
+
+ ...
+
+Example 3: Convert a grid of pixel coordinates in the input image to the
+equivalent pixel coordinate in the output image using the image world
+coordinate systems to connect the two.
+
+ include <skywcs.h>
+
+ ....
+
+ # Mwref will be defined because the input system is an image.
+ refstat = sk_decwcs ("refimage logical", mwref, refcoo, NULL)
+ if (refstat == ERR || mwref == NULL) {
+ if (mwref != NULL)
+ call mw_close (mwref)
+ call sk_close (refcoo)
+ return
+ }
+
+ # Set the reference coordinate descriptor so it expects input in degrees
+ # and degrees.
+ call sk_seti (refcoo, S_NLNGUNUTS, SKY_DEGREES)
+ call sk_seti (refcoo, S_NLATUNUTS, SKY_DEGREES)
+
+ # Mwout will be defined because the output system is an image.
+ outstat = sk_decwcs ("image logical", mwout, outcoo, NULL)
+ if (outstat == ERR || mwout == NULL) {
+ if (mwout != NULL)
+ call mw_close (mwout)
+ call sk_close (outcoo)
+ call mw_close (mwref)
+ call sk_close (refcoo)
+ return
+ }
+
+ # Set the output coordinate descriptor so it will output coordinates
+ # in degrees and degrees.
+ call sk_seti (outcoo, S_NLNGUNUTS, SKY_DEGREES)
+ call sk_seti (outcoo, S_NLATUNUTS, SKY_DEGREES)
+
+ # Compute pixel grid in refimage and store coordinate in the arrays
+ # xref and yref.
+ npts = 0
+ do j = 1, IM_LEN(im,2), 100 {
+ do i = 1, IM_LEN(im,1), 100 {
+ npts = npts + 1
+ xref[npts] = i
+ yref[npts] = j
+ }
+ }
+
+ # Convert xref and yref to celestial coordinates raref and decref using
+ # mwref. The output coordinates will be in degrees and degrees.
+ ctref = mw_sctran (mwref, "logical", "world", 03B)
+ do i = 1, npts
+ call mw_c2trand (ctref, xref[i], yref[i], raref[i], decref[i])
+ call ct_free (ctref)
+
+ # Convert the reference celestial coordinates to the output celestial
+ # coordinate system using the coordinate descriptors.
+ call sk_ultran (refcoo, outcoo, raref, decref, raout, decout, npts)
+
+ # Convert the output celestial coordinates to pixel coordinates in
+ # the other image using mwout.
+ ctout = mw_sctran (mwout, "world", "logical", 03B)
+ do i = 1, npts
+ call mw_c2trand (ctout, raout[i], decout[i], xout[i], yout[i])
+ call ct_free (ctout)
+
+ # Print the input and output pixel coordinates.
+ do i = 1, npts {
+ call printf ("%10.3f %10.3f %10.3f %10.3f\n")
+ call pargd (xref[i])
+ call pargd (yref[i])
+ call pargd (xout[i])
+ call pargd (yout[i])
+ }
+
+ # Tidy up.
+ call mw_close (mwref)
+ call mw_close (mwout)
+ call sk_close (refcoo)
+ call sk_close (outcoo)
+
+
+Example 4: Convert a 2D image with an J2000 tangent plane projection wcs to the
+equivalent galactic wcs. The transformation requires a shift in origin and a
+rotation. Assume that the ra axis is 1 and the dec axis is 2. The details of
+how to compute the rotation are not shown here. See the imcctran task for
+details.
+
+ include <mwset.h>
+ include <skywcs.h>
+
+ ...
+
+ # Open image.
+ im = immap (image, READ_WRITE, 0)
+
+ # Open the image coordinate system.
+ instat = sk_decim (im, "logical", mwin, cooin)
+ if (instat == ERR || mwin == NULL) {
+ ...
+ call sk_close (cooin)
+ ...
+ }
+
+ # Get the dimensions of the mwcs descriptor. This should be 2.
+ ndim = mw_ndim (mwin, MW_NPHYSDIM)
+
+ # Get the default coordinates to degrees and degreees.
+ call sk_seti (cooin, S_NLNGUNITS, SKY_DEGREES)
+ call sk_seti (cooin, S_NATGUNITS, SKY_DEGREES)
+
+ # Open the output coordinate system. Mwout is NULL because this system
+ # is not an image.
+ outstat = sk_decwstr ("galactic", mwout, cooout, cooin)
+ if (outstat == ERR) {
+ ...
+ call sk_close (outstat)
+ ...
+ }
+
+ # Make a copy of the mwcs descriptor.
+ mwout = mw_newcopy (mwin)
+
+ # Allocate space for the r and w vectors and cd matrix.
+ call malloc (r, ndim, TY_DOUBLE)
+ call malloc (w, ndim, TY_DOUBLE)
+ call malloc (cd, ndim * ndim, TY_DOUBLE)
+ call malloc (newcd, ndim * ndim, TY_DOUBLE)
+
+ # Assume for simplicty that the MWCS LTERM is the identify transform.
+ # so we don't have to worry about it. Get the WTERM which consists
+ # of r the reference point in pixels, w the reference point in degrees,
+ # and the cd matrix in degrees per pixel.
+ call mw_gwtermd (mwin, Memd[r], Memd[w], Memd[cd], ndim)
+
+ # Convert the world coordinates zero point. The pixel zero point
+ # remains the same.
+ tilng = Memd[w]
+ tilat = Memd[w+1]
+ call sk_ultran (incoo, outcoo, tilng, tilat, tolng, tolat, 1)
+ Memd[w] = tolng
+ Memd[w+1] = tolat
+
+ # Figure out how much to rotate the coordinate system and edit the
+ # compute a new CD matrix. Call it newcd.
+ ...
+
+ # Enter the new CD matrix and zero point.
+ call mw_swterm (mwout, Memd[r], Memd[w], Memd[newcd], ndim)
+
+ # Update the header.
+ call sk_saveim (cooout, mwout, im)
+ call mw_saveim (mwout, im)
+ ...
+
+ # Tidy up.
+ call mfree (r, TY_DOUBLE)
+ call mfree (w, TY_DOUBLE)
+ call mfree (cd, TY_DOUBLE)
+ call mfree (newcd, TY_DOUBLE)
+ call mw_close (mwin)
+ call mw_close (mwout)
+ call sk_close (cooin)
+ call sk_close (cooout)
+ call imunmap (im)
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/ccsystems.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/ccsystems.hlp
new file mode 100644
index 00000000..e812fc8d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/ccsystems.hlp
@@ -0,0 +1,134 @@
+.help ccsystems Mar00 Skywcs
+.ih
+NAME
+ccsystems -- list and describe the supported sky coordinate systems
+.ih
+USAGE
+help ccsystems
+
+.ih
+SKY COORDINATE SYSTEMS
+
+The sky package supports the equatorial ("fk4", "fk4-noe", "fk5", "icrs"),
+ecliptic, galactic, and supergalactic celestial coordinate systems. In most
+cases and unless otherwise noted users can input their coordinates in
+any one of these systems as long as they specify the coordinate system
+correctly.
+
+Considerable flexibility is permitted in how the coordinate systems are
+specified, e.g. J2000.0, j2000.0, 2000.0, fk5, fk5 J2000, and fk5 2000.0
+all specify the mean place post-IAU 1976 or FK5 system. Missing equinox and
+epoch fields assume reasonable defaults. In most cases the
+systems of most interest to users are are "icrs", "j2000", and "b1950"
+which stand for the ICRS J2000.0, FK5 J2000.0 and FK4 B1950.0 celestial
+coordinate systems respectively. The full set of options are listed below:
+
+.ls equinox [epoch]
+The equatorial mean place post-IAU 1976 (FK5) system if equinox is a
+Julian epoch, e.g. J2000.0 or 2000.0, or the equatorial mean place
+pre-IAU 1976 system (FK4) if equinox is a Besselian epoch, e.g. B1950.0
+or 1950.0. Julian equinoxes are prefixed by a J or j, Besselian equinoxes
+by a B or b. Equinoxes without the J / j or B / b prefix are treated as
+Besselian epochs if they are < 1984.0, Julian epochs if they are >= 1984.0.
+Epoch is the epoch of the observation and may be a Julian
+epoch, a Besselian epoch, or a Julian date. Julian epochs
+are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to the epoch type of
+equinox if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. If undefined epoch defaults to equinox.
+.le
+.ls icrs [equinox] [epoch]
+The International Celestial Reference System where equinox is
+a Julian or Besselian epoch e.g. J2000.0 or B1980.0.
+Equinoxes without the J / j or B / b prefix are treated as Julian epochs.
+The default value of equinox is J2000.0.
+Epoch is a Besselian epoch, a Julian epoch, or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. If undefined epoch defaults to equinox.
+.le
+.ls fk5 [equinox] [epoch]
+The equatorial mean place post-IAU 1976 (FK5) system where equinox is
+a Julian or Besselian epoch e.g. J2000.0 or B1980.0.
+Equinoxes without the J / j or B / b prefix are treated as Julian epochs.
+The default value of equinox is J2000.0.
+Epoch is a Besselian epoch, a Julian epoch, or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. If undefined epoch defaults to equinox.
+.le
+.ls fk4 [equinox] [epoch]
+The equatorial mean place pre-IAU 1976 (FK4) system where equinox is a
+Besselian or Julian epoch e.g. B1950.0 or J2000.0,
+and epoch is the Besselian epoch, the Julian epoch, or the Julian date of the
+observation.
+Equinoxes without the J / j or B / b prefix are treated
+as Besselian epochs. The default value of equinox is B1950.0. Epoch
+is a Besselian epoch, a Julian epoch, or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. If undefined epoch defaults to equinox.
+.le
+.ls noefk4 [equinox] [epoch]
+The equatorial mean place pre-IAU 1976 (FK4) system but without the E-terms
+where equinox is a Besselian or Julian epoch e.g. B1950.0 or J2000.0,
+and epoch is the Besselian epoch, the Julian epoch, or the Julian date of the
+observation.
+Equinoxes without the J / j or B / b prefix are treated
+as Besselian epochs. The default value of equinox is B1950.0.
+Epoch is a Besselian epoch, a Julian epoch, or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian day. If undefined epoch defaults to equinox.
+.le
+.ls apparent epoch
+The equatorial geocentric apparent place post-IAU 1976 system where
+epoch is the epoch of observation.
+Epoch is a Besselian epoch, a Julian epoch or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian
+epochs if the epoch value < 1984.0, Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date.
+.le
+.ls ecliptic epoch
+The ecliptic coordinate system where epoch is the epoch of observation.
+Epoch is a Besselian epoch, a Julian epoch, or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian epochs
+if the epoch values < 1984.0, Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian day.
+.le
+.ls galactic [epoch]
+The IAU 1958 galactic coordinate system.
+Epoch is a Besselian epoch, a Julian epoch or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian
+epochs if the epoch value < 1984.0, Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. The default value of epoch is B1950.0.
+.le
+.ls supergalactic [epoch]
+The deVaucouleurs supergalactic coordinate system.
+Epoch is a Besselian epoch, a Julian epoch or a Julian date.
+Julian epochs are prefixed by a J or j, Besselian epochs by a B or b.
+Epochs without the J / j or B / b prefix default to Besselian
+epochs if the epoch value < 1984.0, Julian epochs
+if the epoch value <= 3000.0, otherwise epoch is interpreted as
+a Julian date. The default value of epoch is B1950.0.
+.le
+
+Fields enclosed in [] are optional with the defaults as described. The epoch
+field for the "icrs" , "fk5", "galactic", and "supergalactic" coordinate
+systems is only used if the input coordinates are in the equatorial fk4,
+noefk4, fk5, or icrs systems and proper motions are used to transform from
+coordinate system to another.
+
+.ih
+SEE ALSO
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skclose.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skclose.hlp
new file mode 100644
index 00000000..191b08b5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skclose.hlp
@@ -0,0 +1,23 @@
+.help skclose Mar00 Skywcs
+.ih
+NAME
+skclose -- free the sky coordinate descriptor
+.ih
+SYNOPSIS
+call sk_close (coo)
+
+.nf
+pointer coo # the sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor to be freed.
+.le
+.ih
+DESCRIPTION
+Sk_close frees a previously allocated sky coordinate descriptor.
+.ih
+SEE ALSO
+skdecwcs, skdecwstr, skdecim, skcopy
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skcopy.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skcopy.hlp
new file mode 100644
index 00000000..68219c0d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skcopy.hlp
@@ -0,0 +1,24 @@
+.help skcopy Mar00 Skywcs
+.ih
+NAME
+skcopy -- copy a sky coordinate descriptor
+.ih
+SYNOPSIS
+newcoo = sk_copy (coo)
+
+.nf
+pointer coo # the sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor to be copied.
+.le
+.ih
+DESCRIPTION
+Sk_copy is a pointer function which returns a copy of the input sky coordinate
+descriptor as its function value.
+.ih
+SEE ALSO
+skdecwcs, skdecwstr, skdecim, skclose
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecim.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecim.hlp
new file mode 100644
index 00000000..c8f7b2e7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecim.hlp
@@ -0,0 +1,55 @@
+.help skdecim Mar00 Skywcs
+.ih
+NAME
+skdecim -- open a sky coordinate descriptor using an image descriptor
+.ih
+SYNOPSIS
+stat = sk_decim (im, mw, coo, imcoo)
+
+.nf
+pointer im # the input image descriptor
+pointer mw # the output mwcs descriptor
+pointer coo # the output sky coordinate descriptor
+pointer imcoo # the input image sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls im
+The input image descriptor.
+.le
+.ls mw
+The output mwcs descriptor. A NULL value for mw is returned if the image
+world coordinate system cannot be read.
+.le
+.ls coo
+The output sky coordinate descriptor.
+.le
+.ls imcoo
+The parent image sky coordinate descriptor. Imcoo is set to NULL
+except in cases where the sky coordinate descriptor for an image is
+transformed and written back to the same image.
+.ih
+DESCRIPTION
+Sk_decim is an integer function which returns OK or ERR as its function
+value. ERR is returned if a valid sky coordinate system cannot be opened,
+OK otherwise.
+
+Sk_decim returns the image MWCS descriptor mw. The MWCS descriptor is used
+to convert from pixel coordinates to world coordinates and vice versa.
+The MWCS descriptor must be freed with a call to the MWCS routine
+mw_close before task termination.
+
+Sk_decim returns the sky descriptor coo. The sky coordinate descriptor
+is defined even if an error is detected in reading the image celestial
+coordinate system, and must be freed with a call to sk_close before
+task termination.
+
+.ih
+NOTES
+Type "help ccsystems" to see the list of the supported sky coordinate systems.
+
+Type "help mwcs$MWCS.hlp fi+" to find out more about the IRAF image world
+coordinate system library MWCS.
+SEE ALSO
+skdecwcs, skdecwstr, skcopy, skclose
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwcs.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwcs.hlp
new file mode 100644
index 00000000..2081fd50
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwcs.hlp
@@ -0,0 +1,62 @@
+.help skdecwcs Mar00 Skywcs
+.ih
+NAME
+skdecwcs -- open a sky coordinate descriptor using an image or system name
+.ih
+SYNOPSIS
+stat = sk_decwcs (ccsystem, mw, coo, imcoo)
+
+.nf
+char ccsystem # the input celestial coordinate system name
+pointer mw # the output mwcs descriptor
+pointer coo # the output sky coordinate descriptor
+pointer imcoo # the input image sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls ccsystem.
+The celestial coordinate system name. Ccsystem is a either an image system
+name, e.g. "dev$ypix logical" or "dev$ypix world" or a system name, e.g.
+"J2000" or "galactic".
+.le
+.ls mw
+The output mwcs descriptor. A NULL value for mw is returned if the
+image world coordinate system cannot be read or ccsystem is not an image
+system name.
+.le
+.ls coo
+The output sky coordinate descriptor.
+.le
+.ls imcoo
+The parent image coordinate descriptor. Imcoo is set to NULL
+except in cases where the sky coordinate descriptor for an image is
+transformed and written back to the same image.
+.le
+.ih
+DESCRIPTION
+Sk_decwcs is an integer function which returns OK or ERR as its function
+value. ERR is returned if a valid sky coordinate system cannot be opened,
+OK otherwise.
+
+Sk_decwcs returns the image MWCS descriptor mw if ccsystem is an image
+system, otherwise it returns NULL. The MWCS descriptor is used
+to convert from pixel coordinates to world coordinates and vice versa.
+The MWCS descriptor must be freed with a call to the MWCS routine
+mw_close before task termination.
+
+Sk_decwcs returns the sky descriptor coo. The sky coordinate descriptor
+is defined even if an error is detected in reading the image celestial
+coordinate system, and must be freed with a call to sk_close before
+task termination.
+
+.ih
+NOTES
+Type "help ccsystems" to see the list of the supported sky coordinate systems.
+
+Type "help mwcs$MWCS.hlp fi+" to find out more about the IRAF image world
+coordinate system library MWCS.
+
+
+SEE ALSO
+skdecwstr, skdecim
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwstr.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwstr.hlp
new file mode 100644
index 00000000..f81c2d48
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skdecwstr.hlp
@@ -0,0 +1,46 @@
+.help skdecwstr Mar00 Skywcs
+.ih
+NAME
+skdecwstr -- open a sky coordinate descriptor using a system name
+.ih
+SYNOPSIS
+stat = sk_decwstr (csystem, coo, imcoo)
+
+.nf
+char csystem # the input celestial coordinate system name
+pointer coo # the output sky coordinate descriptor
+pointer imcoo # the input image sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls csystem
+The sky coordinates definition. Ccsystem is a system name, e.g. "J2000"
+or "galactic.
+.le
+.ls coo
+The output sky coordinate descriptor.
+.le
+.ls imcoo
+The parent image coordinate descriptor. Imcoo is set to NULL
+except in cases where the sky coordinate descriptor for an image is
+transformed and written back to the same image.
+.le
+.ih
+DESCRIPTION
+Sk_decwstr is an integer function which returns OK or ERR as its function
+value. ERR is returned if a valid sky coordinate system cannot be opened,
+OK otherwise.
+
+Sk_decwstr returns the sky descriptor coo. The sky coordinate descriptor
+is defined even if an error is detected in reading the image celestial
+coordinate system, and must be freed with a call to sk_close before
+task termination.
+
+.ih
+NOTES
+
+Type "help ccsystems" to get a list of the supported sky coordinate systems.
+
+SEE ALSO
+skdecwcs, skdecim, skcopy, skclose
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skenwcs.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skenwcs.hlp
new file mode 100644
index 00000000..cc388108
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skenwcs.hlp
@@ -0,0 +1,32 @@
+.help skenwcs Mar00 Skywcs
+.ih
+NAME
+skenwcs -- encode a system name using a sky coordinate descriptor
+.ih
+SYNOPSIS
+
+call sk_enwcs (coo, csystem, maxch)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+char csystem # the output system name
+int maxch # the maximum size of the output system name
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The input sky coordinate descriptor
+.le
+.ls csystem
+The output system name, e.g. "galactic".
+.le
+.ls maxch
+The maximum size of the output system name.
+.le
+.ih
+DESCRIPTION
+Sk_enwcs returns the sky coordinate system name.
+.ih
+SEE ALSO
+skdecwcs, skdecwstr
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skequatorial.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skequatorial.hlp
new file mode 100644
index 00000000..4adc7590
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skequatorial.hlp
@@ -0,0 +1,59 @@
+.help skequatorial Mar00 Skywcs
+.ih
+NAME
+skequatorial -- apply pm and transform between equatorial coordinate systems
+.ih
+SYNOPSIS
+call sk_equatorial (incoo, outcoo, ilng, ilat, ipmlng, ipmlat, px, rv,
+ olng, olat)
+
+.nf
+pointer incoo # the input sky coordinate descriptor
+pointer outcoo # the output sky coordinate descriptor
+double ilng, ilat # the input sky coordinates in radians
+double ipmlng, ipmlat # the input proper motions in radians / year
+double px # the input parallax in arcsec
+double rv # the input radial velocity in km / sec (+ve receding)
+double olng, olat # the output output sky coordinates in radians
+.fi
+.ih
+ARGUMENTS
+.ls incoo
+The input sky coordinate descriptor.
+.le
+.ls parameter
+.ls outcoo
+The output sky coordinate descriptor.
+.le
+.ls ilng, ilat
+The input sky coordinates in radians.
+.le
+.ls ipmlng, ipmlat
+The input proper motions. If proper motions are unknown do not set ipmlng
+and ipmlat to 0.0, use sk_ultran instead. Note that the ra proper motion
+is in dra not cos (dec) * dra units.
+.le
+.ls px
+The parallax in arcseconds. Use 0.0 if the proper motion is unknown unknown.
+The parallax value is used only if proper motions are defined.
+.le
+.ls rv
+The radial velocity in km / sec. Use 0.0 if the radial velocity is unknown.
+The radial velocity value is used only if proper motions are defined.
+.le
+.ls olng, olat
+The output sky coordinates in radians.
+.le
+.ih
+DESCRIPTION
+The coordinates in the input sky coordinate system are converted to
+coordinates in the output sky coordinate system.
+.ih
+NOTES
+If the proper motions are undefined use the routine sk_ultran. Zero valued
+proper motions are not the same as undefined proper motions.
+
+.ih
+SEE ALSO
+sk_lltran, sk_ultran
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiprint.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiprint.hlp
new file mode 100644
index 00000000..217819c2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiprint.hlp
@@ -0,0 +1,39 @@
+.help skiiprint Mar00 Skywcs
+.ih
+NAME
+skiiprint -- print the sky coordinate system summary
+.ih
+SYNOPSIS
+
+call sk_iprint (label, imagesys, mw, coo)
+
+.nf
+char label # the input user label
+char imagesys # the input image system
+pointer mw # the input mwcs descriptor
+pointer coo # the sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls label
+The input user supplied label, e.g. "Input System", "Ref System",
+"Output System" etc.
+.le
+.ls imagesys
+The input image system, e.g. "dev$ypix logical", "dev$ypix world", etc.
+.le
+.ls mwcs
+The input image mwcs descriptor if defined. If mwcs is defined then
+information about which sky coordinate corresponds to which image
+axis etc is read from the mwcs descriptor.
+.le
+.ls coo
+The input sky coordinate descriptor.
+.le
+.ih
+DESCRIPTION
+A summary of the sky coordinate system is printed on the standard output.
+.ih
+SEE ALSO
+skiiwrite
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiwrite.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiwrite.hlp
new file mode 100644
index 00000000..c82472f4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skiiwrite.hlp
@@ -0,0 +1,43 @@
+.help skiiwrite Mar00 Skywcs
+.ih
+NAME
+skiiwrite -- write the sky coordinate system summary to a file
+.ih
+SYNOPSIS
+
+call sk_iiwrite (outfd, label, imagesys, mw, coo)
+
+.nf
+int outfd # the input file descriptor
+char label # the input user label
+char imagesys # the input image system
+pointer mw # the input mwcs descriptor
+pointer coo # the sky coordinate descriptor
+.fi
+.ih
+ARGUMENTS
+.ls outfd
+The input file descriptor.
+.le
+.ls label
+The input user supplied label, e.g. "Input System", "Ref System",
+"Output System" etc.
+.le
+.ls imagesys
+The input image system, e.g. "dev$ypix logical", "dev$ypix world", etc.
+.le
+.ls mwcs
+The input image mwcs descriptor if defined. If mwcs is defined then
+information about which sky coordinate corresponds to which image
+axis etc is read from the mwcs descriptor.
+.le
+.ls coo
+The input sky coordinate descriptor.
+.le
+.ih
+DESCRIPTION
+A summary of the sky coordinate system is written to a file.
+.ih
+SEE ALSO
+skiiprint
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sklltran.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sklltran.hlp
new file mode 100644
index 00000000..a0040507
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sklltran.hlp
@@ -0,0 +1,60 @@
+.help sklltran Mar00 Skywcs
+.ih
+NAME
+sklltran -- apply pm and transform between coordinate systems
+.ih
+SYNOPSIS
+call sk_lltran (incoo, outcoo, ilng, ilat, ipmlng, ipmlat, px, rv, olng, olat)
+
+.nf
+pointer incoo # the input sky coordinate descriptor
+pointer outcoo # the output sky coordinate descriptor
+double ilng, ilat # the input sky coordinates in radians
+double ipmlng, ipmlat # the input proper motions in radians / year
+double px # the input parallax in arcsec
+double rv # the input radial velocity in km / sec (+ve receding)
+double olng, olat # the output sky coordinates in radians
+.fi
+.ih
+ARGUMENTS
+.ls incoo
+The input sky coordinate descriptor.
+.le
+.ls parameter
+.ls outcoo
+The output sky coordinate descriptor.
+.le
+.ls ilng, ilat
+The input sky coordinates in radians.
+.le
+.ls ipmlng, ipmlat
+The input proper motions. For these to be applied the input coordinate
+system must be an equatorial coordinate system. If proper motions are
+unknown do not set ipmlng and ipmlat to 0.0, use sk_ultran instead. Note that
+the ra proper motion is in dra not cos (dec) * dra units.
+.le
+.ls px
+The parallax in arcseconds. Use 0.0 if the proper motion is unknown unknown.
+The parallax value is used only if proper motions are defined.
+.le
+.ls rv
+The radial velocity in km / sec. Use 0.0 if the radial velocity is unknown.
+The radial velocity value is used only if proper motions are defined.
+.le
+.ls olng, olat
+The onput sky coordinates in radians.
+.le
+
+.ih
+DESCRIPTION
+The coordinates in the input sky coordinate system are converted to
+coordinates in the output sky coordinate system.
+.ih
+NOTES
+If the proper motions are undefined use the routine sk_ultran. Zero valued
+proper motions are not the same as undefined proper motions.
+
+.ih
+SEE ALSO
+sk_ultran, sk_equatorial
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksaveim.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksaveim.hlp
new file mode 100644
index 00000000..82c16f3f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksaveim.hlp
@@ -0,0 +1,39 @@
+.help sksaveim Mar00 Skywcs
+.ih
+NAME
+sksaveim -- update the image header using a sky coordinate descriptor
+.ih
+SYNOPSIS
+call sk_saveim (coo, mw, im)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+pointer mw # the input mwcs descriptor
+pointer im # the input image descriptor
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The input sky coordinate descriptor.
+.le
+.ls mw
+The IRAF mwcs descriptor.
+.le
+.ls im
+The input image descriptor.
+.le
+.ih
+DESCRIPTION
+The image world coordinate system is updated using information in
+the sky coordinate descriptor and the mwcs descriptor.
+
+.ih
+NOTES
+Note that the sk_saveim call does not include a call to the MWCS mw_saveim
+routine. This call must be made separately.
+
+Type "help mwcs$MWCS.hlp fi+" to find out more about the IRAF image world
+coordinate system code.
+SEE ALSO
+skdecwcs, skdecim
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksetd.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksetd.hlp
new file mode 100644
index 00000000..f518d71c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksetd.hlp
@@ -0,0 +1,53 @@
+.help sksetd Mar00 Skywcs
+.ih
+NAME
+sksetd -- set a double sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+call sk_setd (coo, parameter, dval)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the double parameter to be set
+double dval # the value of the parameter to be set
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+The parameter to be set. The double parameter definitions in skywcs.h are:
+.nf
+ S_VXOFF # the logical ra / longitude offset in pixels
+ S_VYOFF # the logical dec / latitude offset in pixels
+ S_VXSTEP # the logical ra / longitude step size in pixels
+ S_VYSTEP # the logical dec / latitude step size in pixels
+ S_EQUINOX # the equinox in years
+ S_EPOCH # the MJD of the observation
+.fi
+.le
+.ls dval
+The value of the parameter to be set.
+.le
+.ih
+DESCRIPTION
+Sk_setd sets the values of double sky coordinate descriptor parameters.
+.ih
+NOTES
+The offsets and step sizes default to 0 and 1 for both axes. However
+if the sky coordinate descriptor was derived from an input image section, e.g.
+"dev$ypix[100:300,100:300]" these numbers may assume other values in some
+circumstances.
+
+The equinox and epoch of observation are normally set by the calling program
+when the sky coordinate descriptor is initialized, e.g. they default
+to 2000.0 and 51544.50000 if the input coordinate system was "fk5".
+
+In most cases these parameters should not be set by the user.
+.ih
+SEE ALSO
+skseti, sksets
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skseti.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skseti.hlp
new file mode 100644
index 00000000..b08be476
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skseti.hlp
@@ -0,0 +1,93 @@
+.help skseti Mar00 Skywcs
+.ih
+NAME
+skseti -- set an integer sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+call sk_seti (coo, parameter, ival)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the integer parameter to be set
+int ival # the value of the parameter to be set
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+The parameter to be set. The double parameter definitions in skywcs.h are:
+.nf
+ S_CTYPE # the celestial coordinate system type
+ S_RADECSYS # the equatorial system type
+ S_NLNGUNITS # the ra / longitude units
+ S_NLATUNITS # the dec/ latitude units
+ S_WTYPE # the projection type
+ S_PLNGAX # the physical ra / longitude axis
+ S_PLATAX # the physical dec / latitude axis
+ S_XLAX # the logical ra / longitude axis
+ S_YLAX # the logical dec / latitude axis
+ S_PIXTYPE # the IRAF pixel coordinate system type
+ S_NLNGAX # the length of ra / longitude axis
+ S_NLATAX # the length of dec / latitude axis
+ S_STATUS # the coordinate system status
+.fi
+.le
+.ls ival
+The value of the parameter to be set.
+.le
+.ih
+DESCRIPTION
+Sk_seti sets the values of integer sky coordinate descriptor parameters.
+.ih
+NOTES
+Permitted values of S_CTYPE are CTYPE_EQUATORIAL, CTYPE_ECLIPTIC,
+CTYPE_GALACTIC, and CTYPE_SUPERGALACTIC. The corresponding string dictionary
+is CTYPE_LIST.
+
+Permitted types of S_RADECSYS are EQTYPE_FK4, EQTYPE_FK4NOE,
+EQTYPE_FK5, EQTYPE, ICRS, and EQTYPE_GAPPT. The corresponding string
+dictionary is EQTYPE_LIST.
+
+Permitted values of S_WTYPE are WTYPE_LIN, WTYPE_AZP, WTYPE_TAN, WTYPE_SIN,
+WTYPE_STG, WTYPE_ARC, WTYPE_ZPN, WTYPE_ZEA, WTYPE_AIR, WTYPE_CYP, WTYPE_CAR,
+WTYPE_MER, WTYPE_CEA, WTYPE_COP, WTYPE_COD, WTYPE_COE, WTYPE_COO, WTYPE_BON,
+WTYPE_PCO, WTYPE_GLS, WTYPE_PAR, WTYPE_AIT, WTYPE_MOL, WTYPE_CSC, WTYPE_QSC,
+WTYPE_TSC, WTYPE_TNX, WTYPE_ZPX. The corresponding string dictionary is
+WTYPE_LIST.
+
+Permitted values of S_PIXTYPE are PIXTYPE_LOGICAL, PIXTYPE_TV,
+PIXTYPE_PHYSICAL. and PIXTPE_WORLD. The corresponding string dictionary
+is PIXTYPE_LIST.
+
+Permitted values of S_NLNGUNITS are SKY_HOURS, SKY_DEGREES, and SKY_RADIANS.
+The corresponding string dictionary is SKY_LNG_UNITLIST.
+Permitted values of S_NLATUNITS are SKY_DEGREES, and SKY_RADIANS.
+The corresponding string dictionary is SKY_LAT_UNITLIST.
+
+The parameters S_CTYPE, S_RADECSYS, S_NLNGUNITS, and S_NLATUNITS are
+important for all sky coordinate descriptors regardless of the source.
+The parameters S_WTYPE, S_PLNGAX, S_PLATAX, S_XLAX, S_YLAX, S_PIXTYPE,
+S_NLNGAX, and S_NLATAX are only important for sky coordinate descriptors
+derived from an image sky coordinate systems. S_STATUS is OK if the sky
+coordinate descriptor describes a valid celestial coordinate system, ERR
+otherwise.
+
+In most cases these parameters should not be modified by the user. The
+major exceptions are the units parameters S_NLNGUNITS and N_LATUNITS
+which assumes default values fo hours and degrees for equatorial sky
+coordinate systems and degrees and degrees for other sky coordinate systems.
+If the user input and output units are different from the normal defaults
+then the units parameters should be set appropriately.
+
+Parameters that occasionally need to be reset when a coordinate system
+is created, edited, or saved to an image are S_WTYPE, S_PIXTYPE, S_PLNGAX,
+and S_PLATAX.
+
+.ih
+SEE ALSO
+sksetd, sksets
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksets.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksets.hlp
new file mode 100644
index 00000000..8e4179b4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/sksets.hlp
@@ -0,0 +1,36 @@
+.help sksets Mar00 Skywcs
+.ih
+NAME
+sksets -- set a string sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+call sk_sets (coo, parameter, str)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the string parameter to be set
+char str # the value of the string parameter to be set
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+The parameter to be set. The string parameter definitions in skywcs.h are:
+.nf
+ S_COOSYSTEM # the celestial coordinate system name
+.fi
+.le
+.ls str
+The value of the parameter to be set.
+.le
+.ih
+DESCRIPTION
+Sk_sets sets the values of string sky coordinate descriptor parameters.
+.ih
+SEE ALSO
+sksetd, skseti
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstatd.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstatd.hlp
new file mode 100644
index 00000000..52dc0c70
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstatd.hlp
@@ -0,0 +1,49 @@
+.help skstatd Mar00 Skywcs
+.ih
+NAME
+skstatd -- get a double sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+dval = sk_statd (coo, parameter)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the double parameter to be returned
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+The oarameter to be returned. The double parameter definitions in skywcs.h are:
+.nf
+ S_VXOFF # the logical ra / longitude offset in pixels
+ S_VYOFF # the logical dec / latitude offset in pixels
+ S_VXSTEP # the logical ra / longitude step size in pixels
+ S_VYSTEP # the logical dec / latitude step size in pixels
+ S_EQUINOX # the equinox in years
+ S_EPOCH # the MJD of the observation
+.fi
+.le
+.ih
+DESCRIPTION
+Sk_statd returns the values of double sky coordinate descriptor parameters.
+
+.ih
+NOTES
+The offsets and step sizes default to 0 and 1 for both axes. However
+if the sky coordinate descriptor was derived from an input image section, e.g.
+"dev$ypix[100:300,100:300]" these numbers may assume other values in some
+circumstances.
+
+The equinox and epoch of observation are normally set by the calling program
+when the sky coordinate descriptor is initialized, e.g. they default
+to 2000.0 and 51544.50000 if the input coordinate system was "fk5".
+
+.ih
+SEE ALSO
+skstati, skstats
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstati.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstati.hlp
new file mode 100644
index 00000000..90d33eb1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstati.hlp
@@ -0,0 +1,79 @@
+.help skstati Mar00 Skywcs
+.ih
+NAME
+skstati -- get an integer sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+ival = sk_stati (coo, parameter)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the integer parameter to be returned
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+Parameter to be returned. The integer parameter definitions in skywcs.h are:
+.nf
+ S_CTYPE # the celestial coordinate system type
+ S_RADECSYS # the equatorial system type
+ S_NLNGUNITS # the ra / longitude units
+ S_NLATUNITS # the dec/ latitude units
+ S_WTYPE # the projection type
+ S_PLNGAX # the physical ra / longitude axis
+ S_PLATAX # the physical dec / latitude axis
+ S_XLAX # the logical ra / longitude axis
+ S_YLAX # the logical dec / latitude axis
+ S_PIXTYPE # the IRAF pixel coordinate system type
+ S_NLNGAX # the length of the ra / longitude axis
+ S_NLATAX # the length of the dec / latitude axis
+ S_STATUS # the coordinate system status
+.fi
+.le
+.ih
+DESCRIPTION
+Sk_stati returns the values of integer sky coordinate descriptor parameters.
+
+.ih
+NOTES
+Permitted values of S_CTYPE are CTYPE_EQUATORIAL, CTYPE_ECLIPTIC,
+CTYPE_GALACTIC, and CTYPE_SUPERGALACTIC. The corresponding string dictionary
+is CTYPE_LIST.
+
+Permitted types of S_RADECSYS are EQTYPE_FK4, EQTYPE_FK4NOE,
+EQTYPE_FK5, EQTYPE, ICRS, and EQTYPE_GAPPT. The corresponding string
+dictionary is EQTYPE_LIST.
+
+Permitted values of S_WTYPE are WTYPE_LIN, WTYPE_AZP, WTYPE_TAN, WTYPE_SIN,
+WTYPE_STG, WTYPE_ARC, WTYPE_ZPN, WTYPE_ZEA, WTYPE_AIR, WTYPE_CYP, WTYPE_CAR,
+WTYPE_MER, WTYPE_CEA, WTYPE_COP, WTYPE_COD, WTYPE_COE, WTYPE_COO, WTYPE_BON,
+WTYPE_PCO, WTYPE_GLS, WTYPE_PAR, WTYPE_AIT, WTYPE_MOL, WTYPE_CSC, WTYPE_QSC,
+WTYPE_TSC, WTYPE_TNX, WTYPE_ZPX. The corresponding string dictionary is
+WTYPE_LIST.
+
+Permitted values of S_PIXTYPE are PIXTYPE_LOGICAL, PIXTYPE_TV,
+PIXTYPE_PHYSICAL. and PIXTPE_WORLD. The corresponding string dictionary
+is PIXTYPE_LIST.
+
+Permitted values of S_NLNGUNITS are SKY_HOURS, SKY_DEGREES, and SKY_RADIANS.
+The corresponding string dictionary is SKY_LNG_UNITLIST.
+Permitted values of S_NLATUNITS are SKY_DEGREES, and SKY_RADIANS.
+The corresponding string dictionary is SKY_LAT_UNITLIST.
+
+The parameters S_CTYPE, S_RADECSYS, S_NLNGUNITS, and S_NLATUNITS are
+important for all sky coordinate descriptors regardless of the source.
+The parameters S_WTYPE, S_PLNGAX, S_PLATAX, S_XLAX, S_YLAX, S_PIXTYPE,
+S_NLNGAX, and S_NLATAX are only important for sky coordinate descriptors
+derived from an image sky coordinate systems. S_STATUS is OK if the sky
+coordinate descriptor describes a valid celestial coordinate system, ERR
+otherwise.
+
+.ih
+SEE ALSO
+skstatd, skstats
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstats.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstats.hlp
new file mode 100644
index 00000000..483ed3e5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skstats.hlp
@@ -0,0 +1,40 @@
+.help skstats Mar00 Skywcs
+.ih
+NAME
+skstats -- get a string sky coordinate descriptor parameter
+.ih
+SYNOPSIS
+include <skywcs.h>
+
+call sk_stats (coo, parameter, str, maxch)
+
+.nf
+pointer coo # the input sky coordinate descriptor
+int parameter # the string parameter to be returned
+char str # the returned string parameter value
+int maxch # the maximum size of the returned string parameter
+.fi
+.ih
+ARGUMENTS
+.ls coo
+The sky coordinate descriptor.
+.le
+.ls parameter
+The parameter to be returned. The string parameter definitions in skywcs.h are:
+.nf
+ S_COOSYSTEM # the celestial coordinate system name
+.fi
+.le
+.ls str
+The value of the returned string.
+.le
+.ls maxch
+The maximum size of the returned string.
+.le
+.ih
+DESCRIPTION
+Sk_stats returns the values of string sky coordinate descriptor parameters.
+.ih
+SEE ALSO
+skstati, skstatd
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skultran.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skultran.hlp
new file mode 100644
index 00000000..417eaba6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skultran.hlp
@@ -0,0 +1,51 @@
+.help skultran Mar00 Skywcs
+.ih
+NAME
+skultran -- transform between coordinate systems
+.ih
+SYNOPSIS
+call sk_ultran (incoo, outcoo, ilng, ilat, olng, olat, npts)
+
+.nf
+pointer incoo # the input sky coordinate descriptor
+pointer outcoo # the output sky coordinate descriptor
+double ilng, ilat # the input celestial coordinates in expected units
+double olng, olat # the output celestial coordinates in expected units
+int npts # the number of input and output coordinate pairs
+.fi
+.ih
+ARGUMENTS
+.ls incoo
+The input sky coordinate descriptor.
+.le
+.ls parameter
+.ls outcoo
+The output sky coordinate descriptor.
+.le
+.ls ilng, ilat
+The input sky coordinates in the units defined by the integer parameters
+S_NLNGUNITS and S_NLATUNITS.
+.le
+.ls olng, olat
+The output sky coordinates in the units defined by the integer parameters
+S_NLNGUNITS and S_NLATUNITS.
+.le
+.ls npts
+The number of input and output coordinate pairs.
+.le
+.ih
+DESCRIPTION
+The coordinates in the input coordinate system are converted to
+coordinates in the output coordinates system.
+
+If the calling program has not set the S_NLNGUNITS and S_NLATUNITS parameters
+in either system the expected coordinates are hours and degrees for
+equatorial sky coordinate systems and degrees and degrees for other sky
+coordinate systems. The calling program must either perform the necessary
+coordinate conversions or set the units parameters in the input and output
+sky coordinate descriptors appropriately.
+
+.ih
+SEE ALSO
+sk_lltran, sk_equatorial
+.endhelp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hd b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hd
new file mode 100644
index 00000000..74bac140
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hd
@@ -0,0 +1,25 @@
+# Help directory for the SKYWCS library
+
+$doc = "./"
+$source = "../"
+
+skdecwcs hlp=doc$skdecwcs.hlp, src=source$skdecode.x
+skdecwstr hlp=doc$skdecwstr.hlp, src=source$skdecode.x
+skdecim hlp=doc$skdecim.hlp, src=source$skdecode.x
+skenwcs hlp=doc$skenwcs.hlp, src=source$skdecode.x
+skcopy hlp=doc$skcopy.hlp, src=source$skdecode.x
+skiiprint hlp=doc$skiiprint.hlp, src=source$skwrite.x
+skiiwrite hlp=doc$skiiwrite.hlp, src=source$skwrite.x
+skstati hlp=doc$skstati.hlp, src=source$skstat.x
+skstatd hlp=doc$skstatd.hlp, src=source$skstat.x
+skstats hlp=doc$skstats.hlp, src=source$skstat.x
+skseti hlp=doc$skseti.hlp, src=source$skset.x
+sksetd hlp=doc$sksetd.hlp, src=source$skset.x
+sksets hlp=doc$sksets.hlp, src=source$skset.x
+skultran hlp=doc$skultran.hlp, src=source$skytransform.x
+sklltran hlp=doc$sklltran.hlp, src=source$skytransform.x
+skequatorial hlp=doc$skequatorial.hlp, src=source$skytransform.x
+sksaveim hlp=doc$sksaveim.hlp, src=source$sksaveim.x
+skclose hlp=doc$skclose.hlp, src=source$skdecode.x
+
+ccsystems hlp=doc$ccsystems.hlp
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hlp b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hlp
new file mode 100644
index 00000000..498f9b43
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.hlp
@@ -0,0 +1,306 @@
+.help skywcs Oct00 xtools
+.ih
+NAME
+skywcs -- sky coordinates package
+.ih
+SYNOPSIS
+
+.nf
+ stat = sk_decwcs (ccsystem, mw, coo, imcoo)
+ stat = sk_decwstr (ccsystem, coo, imcoo)
+ stat = sk_decim (im, wcs, mw, coo)
+ sk_enwcs (coo, ccsystem, maxch)
+ newcoo = sk_copy (coo)
+ sk_iiprint (label, imagesys, mw, coo)
+ sk_iiwrite (fd, label, imagesys, mw, coo)
+[id]val = sk_stat[id] (coo, param)
+ sk_stats (coo, param, str, maxch)
+ sk_set[id] (coo, param, [id]val)
+ sk_sets (coo, param, str)
+ sk_ultran (incoo, outcoo, ilng, ilat, olng, olat, npts)
+ sk_lltran (incoo, outoo, ilng, ilat, ipmlng, ipmlat, px, rv,
+ olng, olat)
+ sk_equatorial (incoo, outcoo, ilng, ilat, ipmlng, ipmlat, px,
+ rv, olng, olat)
+ sk_saveim (coo, mw, im)
+ sk_close (coo)
+
+.fi
+.ih
+DESCRIPTION
+
+The skywcs package contains a simple set of routines for doing managing
+sky coordinate information and for transforming from one sky coordinate
+system to another. The sky coordinate system is defined either by a system
+name, e.g. "J2000", "galactic, etc. or by an image system name, e.g.
+"dev$ypix" or "dev$ypix world".
+
+The skywcs routine are layered on the Starlink Positional Astronomy library
+SLALIB which is installed in the IRAF MATH package. Type "help slalib
+option=sys" for more information about SLALIB.
+
+
+.ih
+NOTES
+
+An "include <skywcs.h>" statement must be included in the calling program
+to make the skywcs package parameter definitions visible to the calling
+program.
+
+The sky coordinate descriptor is created with a call to one of the sk_decwcs
+sk_decwstr or sk_imwcs routines. If the source of sky coordinate descriptor
+is an image then an IRAF MWCS descriptor will be returned with the sky
+oordinate descriptor. The sky coordinate descriptor is freed with a
+call to sk_close. A separate call to mw_close must be made to free the
+MWCS descriptor if one was allocated.
+
+By default the main skywcs coordinate transformation routine sk_ultran
+assumes that the input and output sky coordinates are in hours and degrees
+if the input and output coordinate systems are equatorial, otherwise the
+coordinates are assumed to be in degrees and degrees. The default input and
+output sky coordinate units can be reset with calls to sk_seti. Two lower level
+coordinate transformations for handling proper motions sk_lltran and
+sk_equatorial are also available. These routines that the input and output
+coordinates and proper motions are in radians.
+
+Calling programs working with both sky coordinate and MWCS descriptors
+need to be aware that the MWCS routines assume that all sky coordinates
+must be input in degrees and will be output in degrees and adjust their
+code accordingly.
+
+The skywcs routine sk_saveim can be used to update an image header.
+
+
+.ih
+EXAMPLES
+.nf
+Example 1: Convert from B1950 coordinates to J2000 coordinates.
+
+ include <skywcs.h>
+
+ ....
+
+ # Open input coordinate system.
+ instat = sk_decwstr ("B1950", incoo, NULL)
+ if (instat == ERR) {
+ call sk_close (incoo)
+ return
+ }
+
+ # Open output coordinate system.
+ outstat = sk_decwstr ("J2000", outcoo, NULL)
+ if (outstat == ERR) {
+ call sk_close (outcoo)
+ return
+ }
+
+ # Do the transformation assuming the input coordinates are in hours
+ # and degrees. The output coordinates will be in hours and degrees
+ # as well.
+ call sk_ultran (incoo, outcoo, rain, decin, raout, decout, npts)
+
+ # Close the coordinate descriptors.
+ call sk_close (incoo)
+ call sk_close (outcoo)
+
+ ...
+
+
+Example 2: Repeat example 1 but convert to galactic coordinates.
+
+ include <skywcs.h>
+
+ ....
+
+ # Open the input coordinate system.
+ instat = sk_decwstr ("B1950", incoo, NULL)
+ if (instat == ERR) {
+ call sk_close (incoo)
+ return
+ }
+
+ # Open the output coordinate system.
+ outstat = sk_decwstr ("galactic", outcoo, NULL)
+ if (outstat == ERR) {
+ call sk_close (outcoo)
+ return
+ }
+
+ # Dd the transformation assuming the input coordinates are in hours and
+ # degrees. The output coordinates will be in degrees and degrees.
+ call sk_ultran (incoo, outcoo, rain, decin, raout, decout, npts)
+
+ # Close the coordinate descriptors.
+ call sk_close (incoo)
+ call sk_close (outcoo)
+
+ ...
+
+Example 3: Convert a grid of pixel coordinates in the input image to the
+ equivalent pixel coordinate in the output image using the
+ image world coordinate systems to connect the two.
+
+ include <skywcs.h>
+
+ ....
+
+ # Mwref will be defined because the input system is an image.
+ refstat = sk_decwcs ("refimage logical", mwref, refcoo, NULL)
+ if (refstat == ERR || mwref == NULL) {
+ if (mwref != NULL)
+ call mw_close (mwref)
+ call sk_close (refcoo)
+ return
+ }
+
+ # Set the reference coordinate descriptor so it expects input in degrees
+ # and degrees.
+ call sk_seti (refcoo, S_NLNGUNUTS, SKY_DEGREES)
+ call sk_seti (refcoo, S_NLATUNUTS, SKY_DEGREES)
+
+ # Mwout will be defined because the output system is an image.
+ outstat = sk_decwcs ("image logical", mwout, outcoo, NULL)
+ if (outstat == ERR || mwout == NULL) {
+ if (mwout != NULL)
+ call mw_close (mwout)
+ call sk_close (outcoo)
+ call mw_close (mwref)
+ call sk_close (refcoo)
+ return
+ }
+
+ # Set the output coordinate descriptor so it will output coordinates
+ # in degrees and degrees.
+ call sk_seti (outcoo, S_NLNGUNUTS, SKY_DEGREES)
+ call sk_seti (outcoo, S_NLATUNUTS, SKY_DEGREES)
+
+ # Compute pixel grid in refimage and store coordinate in the arrays
+ # xref and yref.
+ npts = 0
+ do j = 1, IM_LEN(im,2), 100 {
+ do i = 1, IM_LEN(im,1), 100 {
+ npts = npts + 1
+ xref[npts] = i
+ yref[npts] = j
+ }
+ }
+
+ # Convert xref and yref to celestial coordinates raref and decref using
+ # mwref. The output coordinates will be in degrees and degrees.
+ ctref = mw_sctran (mwref, "logical", "world", 03B)
+ do i = 1, npts
+ call mw_c2trand (ctref, xref[i], yref[i], raref[i], decref[i])
+ call ct_free (ctref)
+
+ # Convert the reference celestial coordinates to the output celestial
+ # coordinate system using the coordinate descriptors.
+ call sk_ultran (refcoo, outcoo, raref, decref, raout, decout, npts)
+
+ # Convert the output celestial coordinates to pixel coordinates in
+ # the other image using mwout.
+ ctout = mw_sctran (mwout, "world", "logical", 03B)
+ do i = 1, npts
+ call mw_c2trand (ctout, raout[i], decout[i], xout[i], yout[i])
+ call ct_free (ctout)
+
+ # Print the input and output pixel coordinates.
+ do i = 1, npts {
+ call printf ("%10.3f %10.3f %10.3f %10.3f\n")
+ call pargd (xref[i])
+ call pargd (yref[i])
+ call pargd (xout[i])
+ call pargd (yout[i])
+ }
+
+ # Tidy up.
+ call mw_close (mwref)
+ call mw_close (mwout)
+ call sk_close (refcoo)
+ call sk_close (outcoo)
+
+
+Example 4: Convert a 2D image with an J2000 tangent plane projection
+ wcs to the equivalent galactic wcs. The transformation
+ requires a shift in origin and a rotation. Assume that the ra
+ axis is 1 and the dec axis is 2. The details of how to compute
+ the rotation are not shown here. See the
+ imcctran task for details.
+
+ include <mwset.h>
+ include <skywcs.h>
+
+ ...
+
+ # Open image.
+ im = immap (image, READ_WRITE, 0)
+
+ # Open the image coordinate system.
+ instat = sk_decim (im, "logical", mwin, cooin)
+ if (instat == ERR || mwin == NULL) {
+ ...
+ call sk_close (cooin)
+ ...
+ }
+
+ # Get the dimensions of the mwcs descriptor. This should be 2.
+ ndim = mw_ndim (mwin, MW_NPHYSDIM)
+
+ # Get the default coordinates to degrees and degreees.
+ call sk_seti (cooin, S_NLNGUNITS, SKY_DEGREES)
+ call sk_seti (cooin, S_NATGUNITS, SKY_DEGREES)
+
+ # Open the output coordinate system. Mwout is NULL because this system
+ # is not an image.
+ outstat = sk_decwstr ("galactic", mwout, cooout, cooin)
+ if (outstat == ERR) {
+ ...
+ call sk_close (outstat)
+ ...
+ }
+
+ # Make a copy of the mwcs descriptor.
+ mwout = mw_newcopy (mwin)
+
+ # Allocate space for the r and w vectors and cd matrix.
+ call malloc (r, ndim, TY_DOUBLE)
+ call malloc (w, ndim, TY_DOUBLE)
+ call malloc (cd, ndim * ndim, TY_DOUBLE)
+ call malloc (newcd, ndim * ndim, TY_DOUBLE)
+
+ # Assume for simplicty that the MWCS LTERM is the identify transform.
+ # so we don't have to worry about it. Get the WTERM which consists
+ # of r the reference point in pixels, w the reference point in degrees,
+ # and the cd matrix in degrees per pixel.
+ call mw_gwtermd (mwin, Memd[r], Memd[w], Memd[cd], ndim)
+
+ # Convert the world coordinates zero point. The pixel zero point
+ # remains the same.
+ tilng = Memd[w]
+ tilat = Memd[w+1]
+ call sk_ultran (incoo, outcoo, tilng, tilat, tolng, tolat, 1)
+ Memd[w] = tolng
+ Memd[w+1] = tolat
+
+ # Figure out how much to rotate the coordinate system and edit the
+ # compute a new CD matrix. Call it newcd.
+ ...
+
+ # Enter the new CD matrix and zero point.
+ call mw_swterm (mwout, Memd[r], Memd[w], Memd[newcd], ndim)
+
+ # Update the header.
+ call sk_saveim (cooout, mwout, im)
+ call mw_saveim (mwout, im)
+ ...
+
+ # Tidy up.
+ call mfree (r, TY_DOUBLE)
+ call mfree (w, TY_DOUBLE)
+ call mfree (cd, TY_DOUBLE)
+ call mfree (newcd, TY_DOUBLE)
+ call mw_close (mwin)
+ call mw_close (mwout)
+ call sk_close (cooin)
+ call sk_close (cooout)
+ call imunmap (im)
+.fi
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.men b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.men
new file mode 100644
index 00000000..9eecc277
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/doc/skywcs.men
@@ -0,0 +1,15 @@
+ skdecwcs - Open a sky coordinate descriptor usning an image or system name
+ skdecwstr - Open a sky coordinate descriptor using a system name
+ skdecim - Open a sky coordinate descriptor using an image descriptor
+ skenwcs - Encode a system name using a sky coordinate descriptor
+ skcopy - Copy a sky coordinate descriptor
+ skstat[ids] - Get a sky coordinate descriptor parameter value
+ skset[ids] - Set a sky coordinate descriptor parameter value
+ skiiprint - Print a sky coordinate descriptor summary
+ skiiwrite - Write a sky coordinate descriptor summary
+ skultran - Transform between coordinate systems
+ sklltran - Apply pm and transform between coordinates systems
+skequatorial - Apply pm and transform between equatorial coordinate systems
+ sksaveim - Update image header using sky coordinate descriptor
+ skclose - Close the sky coordinate descriptor
+ ccsystems - Describe the supported celestial coordinate systems
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/mkpkg b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/mkpkg
new file mode 100644
index 00000000..ad049271
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/mkpkg
@@ -0,0 +1,16 @@
+# Libary for the celestial coordinate sytem pacakge
+
+$checkout libpkg.a ../../
+$update libpkg.a
+$checkin libpkg.a ../../
+$exit
+
+libpkg.a:
+ skdecode.x <imio.h> <imhdr.h> <mwset.h> skywcsdef.h skywcs.h
+ skwrite.x skywcsdef.h skywcs.h
+ skstat.x skywcsdef.h skywcs.h
+ skset.x skywcsdef.h skywcs.h
+ sktransform.x <math.h> skywcsdef.h skywcs.h
+ sksaveim.x skywcsdef.h skywcs.h
+ skwrdstr.x
+ ;
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.f
new file mode 100644
index 00000000..03e49f1b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.f
@@ -0,0 +1,1412 @@
+ integer function skdecs (instr, mw, coo, imcoo)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer mw
+ integer coo
+ integer imcoo
+ integer*2 instr(*)
+ integer stat
+ integer sp
+ integer str1
+ integer str2
+ integer laxno
+ integer paxval
+ integer im
+ integer skstrs
+ integer skdecm
+ integer immap
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ save
+ call xcallc(coo, (30 + 255 + 1), 10 )
+ call xstrcy(instr, memc((((coo+25)-1)*2+1)) , 255 )
+ call smark (sp)
+ call salloc (str1, 1023 , 2)
+ call salloc (str2, 1023 , 2)
+ call salloc (laxno, 7 , 4)
+ call salloc (paxval, 7 , 4)
+ call sscan (instr)
+ call gargwd (memc(str1), 1023 )
+ call gargwd (memc(str2), 1023 )
+ call xerpsh
+ im = immap (memc(str1), 1 , 0)
+ if (xerflg) goto 112
+112 if (.not.xerpop()) goto 110
+ mw = 0
+ if (.not.(imcoo .eq. 0)) goto 120
+ memi(coo+20) = 2048
+ memi(coo+21) = 2048
+ memi(coo+15) = 1
+ memi(coo+16) = 2
+ memi(coo+17) = 1
+ memi(coo+18) = 2
+ memd((((coo)-1)/2+1)) = 0.0d0
+ memd((((coo+2)-1)/2+1)) = 0.0d0
+ memd((((coo+4)-1)/2+1)) = 1.0d0
+ memd((((coo+6)-1)/2+1)) = 1.0d0
+ memi(coo+14) = 0
+ goto 121
+120 continue
+ memi(coo+20) = memi(imcoo+20)
+ memi(coo+21) = memi(imcoo+21)
+ memi(coo+15) = memi(imcoo+15)
+ memi(coo+16) = memi(imcoo+16)
+ memi(coo+17) = memi(imcoo+17)
+ memi(coo+18) = memi(imcoo+18)
+ memd((((coo)-1)/2+1)) = memd((((imcoo)-1)/2+1))
+ memd((((coo+2)-1)/2+1)) = memd((((imcoo+2)-1)/2+1))
+ memd((((coo+4)-1)/2+1)) = memd((((imcoo+4)-1)/2+1))
+ memd((((coo+6)-1)/2+1)) = memd((((imcoo+6)-1)/2+1))
+ memi(coo+14) = memi(imcoo+14)
+121 continue
+ memi(coo+19) = 4
+ stat = skstrs (instr, memi(coo+12) , memi(coo+13) , memd((((
+ * coo+8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+ sw0001=(memi(coo+12) )
+ goto 130
+140 continue
+ memi(coo+22) = 3
+ memi(coo+23) = 1
+ goto 131
+150 continue
+ memi(coo+22) = 1
+ memi(coo+23) = 1
+ goto 131
+130 continue
+ if (sw0001.eq.1) goto 140
+ goto 150
+131 continue
+ goto 111
+110 continue
+ stat = skdecm (im, memc(str2), mw, coo)
+ call imunmp (im)
+111 continue
+ call sfree (sp)
+ memi(coo+24) = stat
+ skdecs = (stat)
+ goto 100
+100 return
+ end
+ integer function skdecr (instr, coo, imcoo)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer imcoo
+ integer*2 instr(*)
+ integer stat
+ integer skstrs
+ integer sw0001
+ save
+ call xcallc(coo, (30 + 255 + 1), 10 )
+ call xstrcy(instr, memc((((coo+25)-1)*2+1)) , 255 )
+ if (.not.(imcoo .eq. 0)) goto 110
+ memi(coo+20) = 2048
+ memi(coo+21) = 2048
+ memi(coo+15) = 1
+ memi(coo+16) = 2
+ memi(coo+17) = 1
+ memi(coo+18) = 2
+ memd((((coo)-1)/2+1)) = 0.0d0
+ memd((((coo+2)-1)/2+1)) = 0.0d0
+ memd((((coo+4)-1)/2+1)) = 1.0d0
+ memd((((coo+6)-1)/2+1)) = 1.0d0
+ memi(coo+14) = 0
+ goto 111
+110 continue
+ memi(coo+20) = memi(imcoo+20)
+ memi(coo+21) = memi(imcoo+21)
+ memi(coo+15) = memi(imcoo+15)
+ memi(coo+16) = memi(imcoo+16)
+ memi(coo+17) = memi(imcoo+17)
+ memi(coo+18) = memi(imcoo+18)
+ memd((((coo)-1)/2+1)) = memd((((imcoo)-1)/2+1))
+ memd((((coo+2)-1)/2+1)) = memd((((imcoo+2)-1)/2+1))
+ memd((((coo+4)-1)/2+1)) = memd((((imcoo+4)-1)/2+1))
+ memd((((coo+6)-1)/2+1)) = memd((((imcoo+6)-1)/2+1))
+ memi(coo+14) = memi(imcoo+14)
+111 continue
+ memi(coo+19) = 4
+ stat = skstrs (instr, memi(coo+12) , memi(coo+13) , memd((((coo
+ * +8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+ sw0001=(memi(coo+12) )
+ goto 120
+130 continue
+ memi(coo+22) = 3
+ memi(coo+23) = 1
+ goto 121
+140 continue
+ memi(coo+22) = 1
+ memi(coo+23) = 1
+ goto 121
+120 continue
+ if (sw0001.eq.1) goto 130
+ goto 140
+121 continue
+ memi(coo+24) = stat
+ skdecr = (stat)
+ goto 100
+100 return
+ end
+ integer function skdecm (im, wcs, mw, coo)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer mw
+ integer coo
+ integer*2 wcs(*)
+ integer stat
+ integer sp
+ integer str1
+ integer laxno
+ integer paxval
+ integer skimws
+ integer strdic
+ integer mwstai
+ integer mwopem
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(6)
+ integer*2 st0002(28)
+ save
+ integer iyy
+ data st0001 / 37,115, 32, 37,115, 0/
+ data (st0002(iyy),iyy= 1, 8) /124,108,111,103,105, 99, 97,108/
+ data (st0002(iyy),iyy= 9,16) /124,116,118,124,112,104,121,115/
+ data (st0002(iyy),iyy=17,24) /105, 99, 97,108,124,119,111,114/
+ data (st0002(iyy),iyy=25,28) /108,100,124, 0/
+ call xmallc(coo, (30 + 255 + 1), 10 )
+ call sprinf (memc((((coo+25)-1)*2+1)) , 255 , st0001)
+ call pargsr (memc((((im+200 +165)-1)*2+1)) )
+ call pargsr (wcs)
+ call smark (sp)
+ call salloc (str1, 1023 , 2)
+ call salloc (laxno, 7 , 4)
+ call salloc (paxval, 7 , 4)
+ call xerpsh
+ mw = mwopem (im)
+ if (xerflg) goto 112
+112 if (.not.xerpop()) goto 110
+ memi(coo+12) = 0
+ memi(coo+13) = 0
+ memd((((coo+8)-1)/2+1)) = 1.6d308
+ memd((((coo+10)-1)/2+1)) = 1.6d308
+ mw = 0
+ memi(coo+15) = 1
+ memi(coo+16) = 2
+ memi(coo+17) = 1
+ memi(coo+18) = 2
+ memi(coo+20) = 2048
+ memi(coo+21) = 2048
+ memd((((coo)-1)/2+1)) = 0.0d0
+ memd((((coo+2)-1)/2+1)) = 0.0d0
+ memd((((coo+4)-1)/2+1)) = 1.0d0
+ memd((((coo+6)-1)/2+1)) = 1.0d0
+ memi(coo+14) = 0
+ memi(coo+19) = 1
+ memi(coo+22) = 1
+ memi(coo+23) = 1
+ stat = -1
+ goto 111
+110 continue
+ memi(coo+19) = strdic (wcs, memc(str1), 1023 , st0002)
+ if (.not.(memi(coo+19) .le. 0)) goto 120
+ memi(coo+19) = 1
+120 continue
+ if (.not.(skimws (im, mw, memi(coo+12) , memi(coo+15) , memi
+ * (coo+16) , memi(coo+14) , memi(coo+13) , memd((((coo+8)-1)/2
+ * +1)) , memd((((coo+10)-1)/2+1)) ) .eq. 0)) goto 130
+ sw0001=(memi(coo+12) )
+ goto 140
+150 continue
+ memi(coo+22) = 3
+ memi(coo+23) = 1
+ goto 141
+160 continue
+ memi(coo+22) = 1
+ memi(coo+23) = 1
+ goto 141
+140 continue
+ if (sw0001.eq.1) goto 150
+ goto 160
+141 continue
+ call mwgaxp (mw, memi(laxno), memi(paxval), mwstai(mw, 5
+ * ))
+ if (.not.(memi(laxno+memi(coo+15) -1) .lt. memi(laxno+
+ * memi(coo+16) -1))) goto 170
+ memi(coo+17) = memi(laxno+memi(coo+15) -1)
+ memi(coo+18) = memi(laxno+memi(coo+16) -1)
+ goto 171
+170 continue
+ memi(coo+17) = memi(laxno+memi(coo+16) -1)
+ memi(coo+18) = memi(laxno+memi(coo+15) -1)
+171 continue
+ if (.not.(memi(coo+17) .le. 0 .or. memi(coo+18) .le. 0))
+ * goto 180
+ memd((((coo)-1)/2+1)) = 0.0d0
+ memd((((coo+2)-1)/2+1)) = 0.0d0
+ memd((((coo+4)-1)/2+1)) = 1.0d0
+ memd((((coo+6)-1)/2+1)) = 1.0d0
+ memi(coo+20) = 2048
+ memi(coo+21) = 2048
+ stat = -1
+ goto 181
+180 continue
+ memd((((coo)-1)/2+1)) = meml(im+memi(im+memi(coo+17) +
+ * 47-1) +54-1)
+ memd((((coo+2)-1)/2+1)) = meml(im+memi(im+memi(coo+18)
+ * +47-1) +54-1)
+ memd((((coo+4)-1)/2+1)) = memi(im+memi(coo+17) +59-1)
+ memd((((coo+6)-1)/2+1)) = memi(im+memi(coo+18) +59-1)
+ memi(coo+20) = meml(im+200 +memi(coo+17) +8-1)
+ memi(coo+21) = meml(im+200 +memi(coo+18) +8-1)
+ stat = 0
+181 continue
+ goto 131
+130 continue
+ call mwcloe (mw)
+ mw = 0
+ memi(coo+17) = 1
+ memi(coo+18) = 2
+ memi(coo+20) = 2048
+ memi(coo+21) = 2048
+ memd((((coo)-1)/2+1)) = 0.0d0
+ memd((((coo+2)-1)/2+1)) = 0.0d0
+ memd((((coo+4)-1)/2+1)) = 1.0d0
+ memd((((coo+6)-1)/2+1)) = 1.0d0
+ memi(coo+22) = 1
+ memi(coo+23) = 1
+ stat = -1
+131 continue
+111 continue
+ call sfree (sp)
+ memi(coo+24) = stat
+ skdecm = (stat)
+ goto 100
+100 return
+ end
+ integer function skstrs (instr, ctype, radecs, equinx, epoch)
+ integer ctype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer*2 instr(*)
+ integer ip
+ integer nitems
+ integer sctype
+ integer srades
+ integer stat
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer str1
+ integer str2
+ integer strdic
+ integer nscan
+ integer ctod
+ double precision slej2d
+ double precision slepb
+ double precision sleb2d
+ double precision slepj
+ integer sw0001,sw0002,sw0003
+ integer*2 st0001(63)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /124,102,107, 52,124,110,111,101/
+ data (st0001(iyy),iyy= 9,16) /102,107, 52,124,102,107, 53,124/
+ data (st0001(iyy),iyy=17,24) /105, 99,114,115,124, 97,112,112/
+ data (st0001(iyy),iyy=25,32) / 97,114,101,110,116,124,101, 99/
+ data (st0001(iyy),iyy=33,40) /108,105,112,116,105, 99,124,103/
+ data (st0001(iyy),iyy=41,48) / 97,108, 97, 99,116,105, 99,124/
+ data (st0001(iyy),iyy=49,56) /115,117,112,101,114,103, 97,108/
+ data (st0001(iyy),iyy=57,63) / 97, 99,116,105, 99,124, 0/
+ ctype = 0
+ radecs = 0
+ equinx = 1.6d308
+ epoch = 1.6d308
+ call smark (sp)
+ call salloc (str1, 1023 , 2)
+ call salloc (str2, 1023 , 2)
+ call sscan (instr)
+ call gargwd (memc(str1), 1023 )
+ if (.not.(memc(str1) .eq. 0 .or. nscan() .lt. 1)) goto 110
+ call sfree (sp)
+ skstrs = (-1)
+ goto 100
+110 continue
+ nitems = 1
+111 continue
+ sctype = strdic (memc(str1), memc(str2), 1023 , st0001)
+ if (.not.(sctype .le. 0)) goto 120
+ ctype = 1
+ goto 121
+120 continue
+ sw0001=(sctype)
+ goto 130
+140 continue
+ ctype = 1
+ radecs = 1
+ goto 131
+150 continue
+ ctype = 1
+ radecs = 2
+ goto 131
+160 continue
+ ctype = 1
+ radecs = 3
+ goto 131
+170 continue
+ ctype = 1
+ radecs = 4
+ goto 131
+180 continue
+ ctype = 1
+ radecs = 5
+ goto 131
+190 continue
+ ctype = 2
+ goto 131
+200 continue
+ ctype = 3
+ goto 131
+210 continue
+ ctype = 4
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.8) goto 131
+ goto (140,150,160,170,180,190,200,210),sw0001
+131 continue
+ call gargwd (memc(str1), 1023 )
+ if (.not.(nscan() .gt. nitems)) goto 220
+ nitems = nitems + 1
+220 continue
+121 continue
+ sctype = ctype
+ srades = radecs
+ sw0002=(sctype)
+ goto 230
+240 continue
+ sw0003=(srades)
+ goto 250
+260 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106 .or
+ * . memc(str1) .eq. 66 .or. memc(str1) .eq. 98)) goto 270
+ ip = 2
+ goto 271
+270 continue
+ ip = 1
+271 continue
+ if (.not.(ctod (memc(str1), ip, equinx) .le. 0)) goto 280
+ equinx = 1950.0d0
+280 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106))
+ * goto 290
+ equinx = slepb (slej2d (equinx))
+290 continue
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 300
+ epoch = sleb2d (equinx)
+ goto 301
+300 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq. 106
+ * .or. memc(str2) .eq. 66 .or. memc(str2) .eq. 98)) goto
+ * 310
+ ip = 2
+ goto 311
+310 continue
+ ip = 1
+311 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0)) goto
+ * 320
+ epoch = sleb2d (equinx)
+ goto 321
+320 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq.
+ * 74 .or. memc(str2) .eq. 106))) goto 330
+ epoch = slej2d (epoch)
+ goto 331
+330 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 340
+ epoch = epoch - 2400000.5d0
+ goto 341
+340 continue
+ epoch = sleb2d (epoch)
+341 continue
+331 continue
+321 continue
+301 continue
+ goto 251
+350 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106 .or
+ * . memc(str1) .eq. 66 .or. memc(str1) .eq. 98)) goto 360
+ ip = 2
+ goto 361
+360 continue
+ ip = 1
+361 continue
+ if (.not.(ctod (memc(str1), ip, equinx) .le. 0)) goto 370
+ equinx = 2000.0d0
+370 continue
+ if (.not.(memc(str1) .eq. 66 .or. memc(str1) .eq. 98))
+ * goto 380
+ equinx = slepj(sleb2d (equinx))
+380 continue
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 390
+ epoch = slej2d (equinx)
+ goto 391
+390 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq. 106
+ * .or. memc(str2) .eq. 66 .or. memc(str2) .eq. 98)) goto
+ * 400
+ ip = 2
+ goto 401
+400 continue
+ ip = 1
+401 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0)) goto
+ * 410
+ epoch = slej2d (equinx)
+ goto 411
+410 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq.
+ * 66 .or. memc(str2) .eq. 98))) goto 420
+ epoch = sleb2d (epoch)
+ goto 421
+420 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 430
+ epoch = epoch - 2400000.5d0
+ goto 431
+430 continue
+ epoch = slej2d (epoch)
+431 continue
+421 continue
+411 continue
+391 continue
+ goto 251
+440 continue
+ equinx = 2000.0d0
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106 .or
+ * . memc(str1) .eq. 66 .or. memc(str1) .eq. 98)) goto 450
+ ip = 2
+ goto 451
+450 continue
+ ip = 1
+451 continue
+ if (.not.(ctod (memc(str1), ip, epoch) .le. 0)) goto 460
+ epoch = 1.6d308
+ goto 461
+460 continue
+ if (.not.(epoch .le. 3000.0d0)) goto 470
+ if (.not.(memc(str1) .eq. 66 .or. memc(str1) .eq. 98))
+ * goto 480
+ epoch = sleb2d (epoch)
+ goto 481
+480 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106)
+ * ) goto 490
+ epoch = slej2d (epoch)
+ goto 491
+490 continue
+ if (.not.(epoch .lt. 1984.0d0)) goto 500
+ epoch = sleb2d (epoch)
+ goto 501
+500 continue
+ epoch = slej2d (epoch)
+501 continue
+491 continue
+481 continue
+ goto 471
+470 continue
+ epoch = epoch - 2400000.5d0
+471 continue
+461 continue
+ goto 251
+510 continue
+ ip = 1
+ if (.not.(memc(str1) .eq. 66 .or. memc(str1) .eq. 98))
+ * goto 520
+ radecs = 1
+ ip = ip + 1
+ if (.not.(ctod (memc(str1), ip, equinx) .le. 0)) goto
+ * 530
+ equinx = 1950.0d0
+530 continue
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 540
+ epoch = sleb2d (equinx)
+ goto 541
+540 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq.
+ * 106)) goto 550
+ ip = 2
+ goto 551
+550 continue
+ if (.not.(memc(str2) .eq. 66 .or. memc(str2) .eq.
+ * 98)) goto 560
+ ip = 2
+ goto 561
+560 continue
+ ip = 1
+561 continue
+551 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0))
+ * goto 570
+ epoch = sleb2d (equinx)
+ goto 571
+570 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq
+ * . 74 .or. memc(str2) .eq. 106))) goto 580
+ epoch = slej2d (epoch)
+ goto 581
+580 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 590
+ epoch = epoch - 2400000.5d0
+ goto 591
+590 continue
+ epoch = sleb2d (epoch)
+591 continue
+581 continue
+571 continue
+541 continue
+ goto 521
+520 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106))
+ * goto 600
+ radecs = 3
+ ip = ip + 1
+ if (.not.(ctod (memc(str1), ip, equinx) .le. 0)) goto
+ * 610
+ equinx = 2000.0d0
+610 continue
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 620
+ epoch = slej2d (equinx)
+ goto 621
+620 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq.
+ * 106 .or. memc(str2) .eq. 66 .or. memc(str2) .eq. 98
+ * )) goto 630
+ ip = 2
+ goto 631
+630 continue
+ ip = 1
+631 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0))
+ * goto 640
+ epoch = slej2d (equinx)
+ goto 641
+640 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq
+ * . 66 .or. memc(str2) .eq. 98))) goto 650
+ epoch = sleb2d (epoch)
+ goto 651
+650 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 660
+ epoch = epoch - 2400000.5d0
+ goto 661
+660 continue
+ epoch = slej2d (epoch)
+661 continue
+651 continue
+641 continue
+621 continue
+ goto 601
+600 continue
+ if (.not.(ctod (memc(str1), ip, equinx) .le. 0)) goto 670
+ ctype = 0
+ radecs = 0
+ equinx = 1.6d308
+ epoch = 1.6d308
+ goto 671
+670 continue
+ if (.not.(equinx .lt. 1984.0d0)) goto 680
+ radecs = 1
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 690
+ epoch = sleb2d (equinx)
+ goto 691
+690 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq.
+ * 106 .or. memc(str2) .eq. 66 .or. memc(str2) .eq. 98
+ * )) goto 700
+ ip = 2
+ goto 701
+700 continue
+ ip = 1
+701 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0))
+ * goto 710
+ epoch = sleb2d (equinx)
+ goto 711
+710 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq
+ * . 74 .or. memc(str2) .eq. 106))) goto 720
+ epoch = slej2d (epoch)
+ goto 721
+720 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 730
+ epoch = epoch - 2400000.5d0
+ goto 731
+730 continue
+ epoch = sleb2d (epoch)
+731 continue
+721 continue
+711 continue
+691 continue
+ goto 681
+680 continue
+ radecs = 3
+ call gargwd (memc(str2), 1023 )
+ if (.not.(nscan() .le. nitems)) goto 740
+ epoch = slej2d (equinx)
+ goto 741
+740 continue
+ if (.not.(memc(str2) .eq. 74 .or. memc(str2) .eq.
+ * 106 .or. memc(str2) .eq. 66 .or. memc(str2) .eq. 98
+ * )) goto 750
+ ip = 2
+ goto 751
+750 continue
+ ip = 1
+751 continue
+ if (.not.(ctod (memc(str2), ip, epoch) .le. 0))
+ * goto 760
+ epoch = slej2d (equinx)
+ goto 761
+760 continue
+ if (.not.(epoch .le. 3000.0d0 .and. (memc(str2) .eq
+ * . 66 .or. memc(str2) .eq. 98))) goto 770
+ epoch = sleb2d (epoch)
+ goto 771
+770 continue
+ if (.not.(epoch .gt. 3000.0d0)) goto 780
+ epoch = epoch - 2400000.5d0
+ goto 781
+780 continue
+ epoch = slej2d (epoch)
+781 continue
+771 continue
+761 continue
+741 continue
+681 continue
+671 continue
+601 continue
+521 continue
+ goto 251
+250 continue
+ if (sw0003.lt.1.or.sw0003.gt.5) goto 510
+ goto (260,260,350,350,440),sw0003
+251 continue
+ goto 231
+790 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106 .or.
+ * memc(str1) .eq. 66 .or. memc(str1) .eq. 98)) goto 800
+ ip = 2
+ goto 801
+800 continue
+ ip = 1
+801 continue
+ if (.not.(ctod (memc(str1), ip, epoch) .le. 0)) goto 810
+ epoch = 1.6d308
+ goto 811
+810 continue
+ if (.not.(epoch .le. 3000.0d0)) goto 820
+ if (.not.(memc(str1) .eq. 66 .or. memc(str1) .eq. 98))
+ * goto 830
+ epoch = sleb2d (epoch)
+ goto 831
+830 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106))
+ * goto 840
+ epoch = slej2d (epoch)
+ goto 841
+840 continue
+ if (.not.(epoch .lt. 1984.0d0)) goto 850
+ epoch = sleb2d (epoch)
+ goto 851
+850 continue
+ epoch = slej2d (epoch)
+851 continue
+841 continue
+831 continue
+ goto 821
+820 continue
+ epoch = epoch - 2400000.5d0
+821 continue
+811 continue
+ goto 231
+860 continue
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106 .or.
+ * memc(str1) .eq. 66 .or. memc(str1) .eq. 98)) goto 870
+ ip = 2
+ goto 871
+870 continue
+ ip = 1
+871 continue
+ if (.not.(ctod (memc(str1), ip, epoch) .le. 0)) goto 880
+ epoch = sleb2d (1950.0d0)
+ goto 881
+880 continue
+ if (.not.(epoch .le. 3000.0d0)) goto 890
+ if (.not.(memc(str1) .eq. 74 .or. memc(str1) .eq. 106))
+ * goto 900
+ epoch = slej2d (epoch)
+ goto 901
+900 continue
+ if (.not.(memc(str1) .eq. 66 .or. memc(str1) .eq. 98))
+ * goto 910
+ epoch = sleb2d (epoch)
+ goto 911
+910 continue
+ if (.not.(epoch .lt. 1984.0d0)) goto 920
+ epoch = sleb2d (epoch)
+ goto 921
+920 continue
+ epoch = slej2d (epoch)
+921 continue
+911 continue
+901 continue
+ goto 891
+890 continue
+ epoch = epoch - 2400000.5d0
+891 continue
+881 continue
+ goto 231
+230 continue
+ if (sw0002.lt.1.or.sw0002.gt.4) goto 231
+ goto (240,790,860,860),sw0002
+231 continue
+ if (.not.(ctype .eq. 0)) goto 930
+ stat = -1
+ goto 931
+930 continue
+ if (.not.(ctype .eq. 1 .and. (radecs .eq. 0 .or. ((equinx).eq.1
+ * .6d308) .or. ((epoch).eq.1.6d308)))) goto 940
+ stat = -1
+ goto 941
+940 continue
+ if (.not.(ctype .eq. 2 .and. ((epoch).eq.1.6d308))) goto 950
+ stat = -1
+ goto 951
+950 continue
+ stat = 0
+951 continue
+941 continue
+931 continue
+ call sfree (sp)
+ skstrs = (stat)
+ goto 100
+100 return
+ end
+ integer function skimws (im, mw, ctype, lngax, latax, wtype,
+ *radecs, equinx, epoch)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer mw
+ integer ctype
+ integer lngax
+ integer latax
+ integer wtype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer i
+ integer ndim
+ integer axtype
+ integer day
+ integer month
+ integer year
+ integer ier
+ integer oldfis
+ integer sp
+ integer atval
+ double precision hours
+ double precision imgetd
+ double precision sleb2d
+ double precision slej2d
+ integer mwstai
+ integer strdic
+ integer dtmdee
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001,sw0002,sw0003
+ integer*2 st0001(7)
+ integer*2 st0002(6)
+ integer*2 st0003(39)
+ integer*2 st0004(6)
+ integer*2 st0005(6)
+ integer*2 st0006(7)
+ integer*2 st0007(114)
+ integer*2 st0008(8)
+ integer*2 st0009(6)
+ integer*2 st0010(9)
+ integer*2 st0011(30)
+ integer*2 st0012(8)
+ integer*2 st0013(8)
+ integer*2 st0014(9)
+ integer*2 st0015(8)
+ integer*2 st0016(8)
+ integer*2 st0017(9)
+ integer*2 st0018(8)
+ integer*2 st0019(8)
+ integer*2 st0020(9)
+ save
+ integer iyy
+ data st0001 / 97,120,116,121,112,101, 0/
+ data st0002 / 73, 78, 68, 69, 70, 0/
+ data (st0003(iyy),iyy= 1, 8) /124,114, 97,124,100,101, 99,124/
+ data (st0003(iyy),iyy= 9,16) /103,108,111,110,124,103,108, 97/
+ data (st0003(iyy),iyy=17,24) /116,124,101,108,111,110,124,101/
+ data (st0003(iyy),iyy=25,32) /108, 97,116,124,115,108,111,110/
+ data (st0003(iyy),iyy=33,39) /124,115,108, 97,116,124, 0/
+ data st0004 /119,116,121,112,101, 0/
+ data st0005 /119,116,121,112,101, 0/
+ data st0006 /108,105,110,101, 97,114, 0/
+ data (st0007(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0007(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0007(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0007(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0007(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0007(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0007(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0007(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0007(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0007(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0007(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0007(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0007(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0007(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0007(iyy),iyy=113,114) /124, 0/
+ data st0008 / 69, 81, 85, 73, 78, 79, 88, 0/
+ data st0009 / 69, 80, 79, 67, 72, 0/
+ data (st0010(iyy),iyy= 1, 8) / 82, 65, 68, 69, 67, 83, 89, 83/
+ data (st0010(iyy),iyy= 9, 9) / 0/
+ data (st0011(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0011(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0011(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0011(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0012 / 77, 74, 68, 45, 87, 67, 83, 0/
+ data st0013 / 77, 74, 68, 45, 79, 66, 83, 0/
+ data (st0014(iyy),iyy= 1, 8) / 68, 65, 84, 69, 45, 79, 66, 83/
+ data (st0014(iyy),iyy= 9, 9) / 0/
+ data st0015 / 77, 74, 68, 45, 87, 67, 83, 0/
+ data st0016 / 77, 74, 68, 45, 79, 66, 83, 0/
+ data (st0017(iyy),iyy= 1, 8) / 68, 65, 84, 69, 45, 79, 66, 83/
+ data (st0017(iyy),iyy= 9, 9) / 0/
+ data st0018 / 77, 74, 68, 45, 87, 67, 83, 0/
+ data st0019 / 77, 74, 68, 45, 79, 66, 83, 0/
+ data (st0020(iyy),iyy= 1, 8) / 68, 65, 84, 69, 45, 79, 66, 83/
+ data (st0020(iyy),iyy= 9, 9) / 0/
+ call smark (sp)
+ call salloc (atval, 1023 , 2)
+ ctype = 0
+ lngax = 0
+ latax = 0
+ wtype = 0
+ radecs = 0
+ equinx = 1.6d308
+ epoch = 1.6d308
+ ndim = mwstai (mw, 5 )
+ do 110 i = 1, ndim
+ call xerpsh
+ call mwgwas (mw, i, st0001, memc(atval), 1023 )
+ if (.not.xerpop()) goto 120
+ call xstrcy(st0002, memc(atval), 1023 )
+120 continue
+ axtype = strdic (memc(atval), memc(atval), 1023 , st0003)
+ sw0001=(axtype)
+ goto 130
+140 continue
+ ctype = 1
+ goto 131
+150 continue
+ ctype = 2
+ goto 131
+160 continue
+ ctype = 3
+ goto 131
+170 continue
+ ctype = 4
+ goto 131
+180 continue
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.8) goto 180
+ goto (140,140,160,160,150,150,170,170),sw0001
+131 continue
+ sw0002=(axtype)
+ goto 190
+200 continue
+ lngax = i
+ goto 191
+210 continue
+ latax = i
+ goto 191
+220 continue
+ goto 191
+190 continue
+ if (sw0002.lt.1.or.sw0002.gt.8) goto 220
+ goto (200,210,200,210,200,210,200,210),sw0002
+191 continue
+110 continue
+111 continue
+ if (.not.(ctype .eq. 0 .or. lngax .eq. 0 .or. latax .eq. 0))
+ * goto 230
+ call sfree (sp)
+ skimws = (-1)
+ goto 100
+230 continue
+ call xerpsh
+ call mwgwas (mw, lngax, st0004, memc(atval), 1023 )
+ if (xerflg) goto 242
+242 if (.not.xerpop()) goto 240
+ call xerpsh
+ call mwgwas(mw, latax, st0005, memc(atval), 1023 )
+ if (.not.xerpop()) goto 250
+ call xstrcy(st0006, memc(atval), 1023 )
+250 continue
+240 continue
+ wtype = strdic (memc(atval), memc(atval), 1023 , st0007)
+ if (.not.(wtype .eq. 0)) goto 260
+ call sfree (sp)
+ skimws = (-1)
+ goto 100
+260 continue
+ if (.not.(ctype .eq. 1)) goto 270
+ call xerpsh
+ equinx = imgetd (im, st0008)
+ if (xerflg) goto 282
+282 if (.not.xerpop()) goto 280
+ call xerpsh
+ equinx = imgetd (im, st0009)
+ if (xerflg) goto 292
+292 if (.not.xerpop()) goto 290
+ equinx = 1.6d308
+290 continue
+280 continue
+ call xerpsh
+ call imgstr (im, st0010, memc(atval), 1023 )
+ if (xerflg) goto 302
+302 if (.not.xerpop()) goto 300
+ radecs = 0
+ goto 301
+300 continue
+ call strlwr (memc(atval))
+ radecs = strdic (memc(atval), memc(atval), 1023 , st0011)
+301 continue
+ if (.not.(radecs .eq. 0)) goto 310
+ if (.not.(((equinx).eq.1.6d308))) goto 320
+ radecs = 3
+ goto 321
+320 continue
+ if (.not.(equinx .lt. 1984.0d0)) goto 330
+ radecs = 1
+ goto 331
+330 continue
+ radecs = 3
+331 continue
+321 continue
+310 continue
+ call xerpsh
+ epoch = imgetd (im, st0012)
+ if (xerflg) goto 342
+342 if (.not.xerpop()) goto 340
+ call xerpsh
+ epoch = imgetd (im, st0013)
+ if (xerflg) goto 352
+352 if (.not.xerpop()) goto 350
+ call xerpsh
+ call imgstr (im, st0014, memc(atval), 1023 )
+ if (xerflg) goto 362
+362 if (.not.xerpop()) goto 360
+ epoch = 1.6d308
+ goto 361
+360 continue
+ if (.not.(dtmdee (memc(atval), year, month, day, hours
+ * , oldfis) .eq. 0)) goto 370
+ call slcadj (year, month, day, epoch, ier)
+ if (.not.(ier .ne. 0)) goto 380
+ epoch = 1.6d308
+ goto 381
+380 continue
+ if (.not.(.not. ((hours).eq.1.6d308) .and. hours .
+ * ge. 0.0d0 .and. hours .le. 24.0d0)) goto 390
+ epoch = epoch + hours / 24.0d0
+390 continue
+381 continue
+ goto 371
+370 continue
+ epoch = 1.6d308
+371 continue
+361 continue
+350 continue
+340 continue
+ sw0003=(radecs)
+ goto 400
+410 continue
+ if (.not.(((equinx).eq.1.6d308))) goto 420
+ equinx = 1950.0d0
+420 continue
+ if (.not.(((epoch).eq.1.6d308))) goto 430
+ epoch = sleb2d (1950.0d0)
+430 continue
+ goto 401
+440 continue
+ if (.not.(((equinx).eq.1.6d308))) goto 450
+ equinx = 2000.0d0
+450 continue
+ if (.not.(((epoch).eq.1.6d308))) goto 460
+ epoch = slej2d (2000.0d0)
+460 continue
+ goto 401
+470 continue
+ equinx = 2000.0d0
+ goto 401
+400 continue
+ if (sw0003.lt.1.or.sw0003.gt.5) goto 401
+ goto (410,410,440,440,470),sw0003
+401 continue
+ if (.not.(((epoch).eq.1.6d308))) goto 480
+ call sfree (sp)
+ skimws = (-1)
+ goto 100
+480 continue
+270 continue
+ if (.not.(ctype .eq. 2)) goto 490
+ call xerpsh
+ epoch = imgetd (im, st0015)
+ if (xerflg) goto 502
+502 if (.not.xerpop()) goto 500
+ call xerpsh
+ epoch = imgetd (im, st0016)
+ if (xerflg) goto 512
+512 if (.not.xerpop()) goto 510
+ call xerpsh
+ call imgstr (im, st0017, memc(atval), 1023 )
+ if (xerflg) goto 522
+522 if (.not.xerpop()) goto 520
+ epoch = 1.6d308
+ goto 521
+520 continue
+ if (.not.(dtmdee (memc(atval), year, month, day, hours
+ * , oldfis) .eq. 0)) goto 530
+ call slcadj (year, month, day, epoch, ier)
+ if (.not.(ier .ne. 0)) goto 540
+ epoch = 1.6d308
+ goto 541
+540 continue
+ if (.not.(.not. ((hours).eq.1.6d308) .and. hours .
+ * ge. 0.0d0 .and. hours .le. 24.0d0)) goto 550
+ epoch = epoch + hours / 24.0d0
+550 continue
+541 continue
+ goto 531
+530 continue
+ epoch = 1.6d308
+531 continue
+521 continue
+510 continue
+500 continue
+ if (.not.(((epoch).eq.1.6d308))) goto 560
+ call sfree (sp)
+ skimws = (-1)
+ goto 100
+560 continue
+490 continue
+ if (.not.(ctype .eq. 3 .or. ctype .eq. 4)) goto 570
+ call xerpsh
+ epoch = imgetd (im, st0018)
+ if (xerflg) goto 582
+582 if (.not.xerpop()) goto 580
+ call xerpsh
+ epoch = imgetd (im, st0019)
+ if (xerflg) goto 592
+592 if (.not.xerpop()) goto 590
+ call xerpsh
+ call imgstr (im, st0020, memc(atval), 1023 )
+ if (xerflg) goto 602
+602 if (.not.xerpop()) goto 600
+ epoch = sleb2d (1950.0d0)
+ goto 601
+600 continue
+ if (.not.(dtmdee (memc(atval), year, month, day, hours
+ * , oldfis) .eq. 0)) goto 610
+ call slcadj (year, month, day, epoch, ier)
+ if (.not.(ier .ne. 0)) goto 620
+ epoch = sleb2d (1950.0d0)
+ goto 621
+620 continue
+ if (.not.(.not. ((hours).eq.1.6d308) .and. hours
+ * .ge. 0.0d0 .and. hours .le. 24.0d0)) goto 630
+ epoch = epoch + hours / 24.0d0
+630 continue
+621 continue
+ goto 611
+610 continue
+ epoch = sleb2d (1950.0d0)
+611 continue
+601 continue
+590 continue
+580 continue
+570 continue
+ call sfree (sp)
+ skimws = (0)
+ goto 100
+100 return
+ end
+ subroutine skenws (coo, wcsstr, maxch)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer maxch
+ integer*2 wcsstr(*)
+ double precision skstad
+ double precision slepj
+ double precision slepb
+ integer skstai
+ integer sw0001,sw0002
+ integer*2 st0001(9)
+ integer*2 st0002(16)
+ integer*2 st0003(18)
+ integer*2 st0004(19)
+ integer*2 st0005(18)
+ integer*2 st0006(21)
+ integer*2 st0007(9)
+ integer*2 st0008(16)
+ integer*2 st0009(16)
+ integer*2 st0010(21)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 97,112,112, 97,114,101,110,116/
+ data (st0001(iyy),iyy= 9, 9) / 0/
+ data (st0002(iyy),iyy= 1, 8) / 97,112,112, 97,114,101,110,116/
+ data (st0002(iyy),iyy= 9,16) / 32, 74, 37, 48, 46, 56,102, 0/
+ data (st0003(iyy),iyy= 1, 8) /102,107, 53, 32, 74, 37, 48, 46/
+ data (st0003(iyy),iyy= 9,16) / 51,102, 32, 74, 37, 48, 46, 56/
+ data (st0003(iyy),iyy=17,18) /102, 0/
+ data (st0004(iyy),iyy= 1, 8) /105, 99,114,115, 32, 74, 37, 48/
+ data (st0004(iyy),iyy= 9,16) / 46, 51,102, 32, 74, 37, 48, 46/
+ data (st0004(iyy),iyy=17,19) / 56,102, 0/
+ data (st0005(iyy),iyy= 1, 8) /102,107, 52, 32, 66, 37, 48, 46/
+ data (st0005(iyy),iyy= 9,16) / 51,102, 32, 66, 37, 48, 46, 56/
+ data (st0005(iyy),iyy=17,18) /102, 0/
+ data (st0006(iyy),iyy= 1, 8) /102,107, 52,110,111,101, 32, 66/
+ data (st0006(iyy),iyy= 9,16) / 37, 48, 46, 51,102, 32, 66, 37/
+ data (st0006(iyy),iyy=17,21) / 48, 46, 56,102, 0/
+ data (st0007(iyy),iyy= 1, 8) /101, 99,108,105,112,116,105, 99/
+ data (st0007(iyy),iyy= 9, 9) / 0/
+ data (st0008(iyy),iyy= 1, 8) /101, 99,108,105,112,116,105, 99/
+ data (st0008(iyy),iyy= 9,16) / 32, 74, 37, 48, 46, 56,102, 0/
+ data (st0009(iyy),iyy= 1, 8) /103, 97,108, 97, 99,116,105, 99/
+ data (st0009(iyy),iyy= 9,16) / 32, 74, 37, 48, 46, 56,102, 0/
+ data (st0010(iyy),iyy= 1, 8) /115,117,112,101,114,103, 97,108/
+ data (st0010(iyy),iyy= 9,16) / 97, 99,116,105, 99, 32,106, 37/
+ data (st0010(iyy),iyy=17,21) / 48, 46, 56,102, 0/
+ sw0001=(skstai (coo, 7))
+ goto 110
+120 continue
+ sw0002=(skstai(coo, 8))
+ goto 130
+140 continue
+ if (.not.(((skstad(coo, 6)).eq.1.6d308))) goto 150
+ call sprinf (wcsstr, maxch, st0001)
+ goto 151
+150 continue
+ call sprinf (wcsstr, maxch, st0002)
+ call pargd (slepj(skstad(coo, 6)))
+151 continue
+ goto 131
+160 continue
+ call sprinf (wcsstr, maxch, st0003)
+ call pargd (skstad(coo, 5))
+ call pargd (slepj(skstad(coo, 6)))
+ goto 131
+170 continue
+ call sprinf (wcsstr, maxch, st0004)
+ call pargd (skstad(coo, 5))
+ call pargd (slepj(skstad(coo, 6)))
+ goto 131
+180 continue
+ call sprinf (wcsstr, maxch, st0005)
+ call pargd (skstad(coo, 5))
+ call pargd (slepb(skstad(coo, 6)))
+ goto 131
+190 continue
+ call sprinf (wcsstr, maxch, st0006)
+ call pargd (skstad(coo, 5))
+ call pargd (slepb(skstad(coo, 6)))
+ goto 131
+200 continue
+ wcsstr(1) = 0
+ goto 131
+130 continue
+ if (sw0002.lt.1.or.sw0002.gt.5) goto 200
+ goto (180,190,160,170,140),sw0002
+131 continue
+ goto 111
+210 continue
+ if (.not.(((skstad(coo, 6)).eq.1.6d308))) goto 220
+ call sprinf (wcsstr, maxch, st0007)
+ goto 221
+220 continue
+ call sprinf (wcsstr, maxch, st0008)
+ call pargd (slepj(skstad(coo, 6)))
+221 continue
+ goto 111
+230 continue
+ call sprinf (wcsstr, maxch, st0009)
+ call pargd (slepj(skstad(coo, 6)))
+ goto 111
+240 continue
+ call sprinf (wcsstr, maxch, st0010)
+ call pargd (slepj(skstad(coo, 6)))
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 111
+ goto (120,210,230,240),sw0001
+111 continue
+100 return
+ end
+ integer function skcopy (cooin)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cooin
+ integer cooout
+ save
+ if (.not.(cooin .eq. 0)) goto 110
+ cooout = 0
+ goto 111
+110 continue
+ call xcallc(cooout, (30 + 255 + 1), 10 )
+ memd((((cooout)-1)/2+1)) = memd((((cooin)-1)/2+1))
+ memd((((cooout+2)-1)/2+1)) = memd((((cooin+2)-1)/2+1))
+ memd((((cooout+4)-1)/2+1)) = memd((((cooin+4)-1)/2+1))
+ memd((((cooout+6)-1)/2+1)) = memd((((cooin+6)-1)/2+1))
+ memd((((cooout+8)-1)/2+1)) = memd((((cooin+8)-1)/2+1))
+ memd((((cooout+10)-1)/2+1)) = memd((((cooin+10)-1)/2+1))
+ memi(cooout+12) = memi(cooin+12)
+ memi(cooout+13) = memi(cooin+13)
+ memi(cooout+14) = memi(cooin+14)
+ memi(cooout+15) = memi(cooin+15)
+ memi(cooout+16) = memi(cooin+16)
+ memi(cooout+17) = memi(cooin+17)
+ memi(cooout+18) = memi(cooin+18)
+ memi(cooout+19) = memi(cooin+19)
+ memi(cooout+20) = memi(cooin+20)
+ memi(cooout+21) = memi(cooin+21)
+ memi(cooout+22) = memi(cooin+22)
+ memi(cooout+23) = memi(cooin+23)
+ call xstrcy(memc((((cooin+25)-1)*2+1)) , memc((((cooout+25)-
+ * 1)*2+1)) , 255 )
+111 continue
+ skcopy = (cooout)
+ goto 100
+100 return
+ end
+ subroutine skcloe (coo)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ save
+ if (.not.(coo .ne. 0)) goto 110
+ call xmfree(coo, 10 )
+110 continue
+100 return
+ end
+c sprinf sprintf
+c dtmdee dtm_decode
+c skenws sk_enwcs
+c skstad sk_statd
+c radecs radecsys
+c equinx equinox
+c skdecs sk_decwcs
+c skimws sk_imwcs
+c skstrs sk_strwcs
+c skdecr sk_decwstr
+c skstai sk_stati
+c mwstai mw_stati
+c skdecm sk_decim
+c mwgaxp mw_gaxmap
+c gargwd gargwrd
+c sleb2d sl_eb2d
+c mwopem mw_openim
+c oldfis oldfits
+c imunmp imunmap
+c mwgwas mw_gwattrs
+c skcopy sk_copy
+c slej2d sl_ej2d
+c srades sradecsys
+c slcadj sl_cadj
+c skcloe sk_close
+c pargsr pargstr
+c mwcloe mw_close
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.x
new file mode 100644
index 00000000..5fa88f3b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skdecode.x
@@ -0,0 +1,999 @@
+include <imio.h>
+include <imhdr.h>
+include <mwset.h>
+include "skywcs.h"
+include "skywcsdef.h"
+
+# SK_DECWCS -- Decode the wcs string which may be either an image name
+# plus wcs, e.g. "dev$pix logical" or a string describing the celestial
+# coordinate system, e.g. "J2000" or "galactic" into a celestial coordinate
+# structure. If the input wcs is an image wcs then a non-NULL pointer to
+# the image wcs structure is also returned. ERR is returned if a valid
+# celestial coordinate structure cannot be created.
+
+int procedure sk_decwcs (instr, mw, coo, imcoo)
+
+char instr[ARB] #I the input wcs string
+pointer mw #O the pointer to the image wcs structure
+pointer coo #O the pointer to the coordinate structure
+pointer imcoo #I pointer to an existing coordinate structure
+
+int stat
+pointer sp, str1, str2, laxno, paxval, im
+int sk_strwcs(), sk_decim()
+pointer immap()
+errchk immap()
+
+begin
+ call calloc (coo, LEN_SKYCOOSTRUCT, TY_STRUCT)
+ call strcpy (instr, SKY_COOSYSTEM(coo), SZ_FNAME)
+
+ # Allocate some working space.
+ call smark (sp)
+ call salloc (str1, SZ_LINE, TY_CHAR)
+ call salloc (str2, SZ_LINE, TY_CHAR)
+ call salloc (laxno, IM_MAXDIM, TY_INT)
+ call salloc (paxval, IM_MAXDIM, TY_INT)
+
+ # Decode the wcs.
+ call sscan (instr)
+ call gargwrd (Memc[str1], SZ_LINE)
+ call gargwrd (Memc[str2], SZ_LINE)
+
+ # First try to open an image wcs.
+ iferr {
+ im = immap (Memc[str1], READ_ONLY, 0)
+
+ # Decode the user wcs.
+ } then {
+
+ # Initialize.
+ mw = NULL
+ if (imcoo == NULL) {
+ SKY_NLNGAX(coo) = 2048
+ SKY_NLATAX(coo) = 2048
+ SKY_PLNGAX(coo) = 1
+ SKY_PLATAX(coo) = 2
+ SKY_XLAX(coo) = 1
+ SKY_YLAX(coo) = 2
+ SKY_VXOFF(coo) = 0.0d0
+ SKY_VYOFF(coo) = 0.0d0
+ SKY_VXSTEP(coo) = 1.0d0
+ SKY_VYSTEP(coo) = 1.0d0
+ SKY_WTYPE(coo) = 0
+ } else {
+ SKY_NLNGAX(coo) = SKY_NLNGAX(imcoo)
+ SKY_NLATAX(coo) = SKY_NLATAX(imcoo)
+ SKY_PLNGAX(coo) = SKY_PLNGAX(imcoo)
+ SKY_PLATAX(coo) = SKY_PLATAX(imcoo)
+ SKY_XLAX(coo) = SKY_XLAX(imcoo)
+ SKY_YLAX(coo) = SKY_YLAX(imcoo)
+ SKY_VXOFF(coo) = SKY_VXOFF(imcoo)
+ SKY_VYOFF(coo) = SKY_VYOFF(imcoo)
+ SKY_VXSTEP(coo) = SKY_VXSTEP(imcoo)
+ SKY_VYSTEP(coo) = SKY_VYSTEP(imcoo)
+ SKY_WTYPE(coo) = SKY_WTYPE(imcoo)
+ }
+ SKY_PIXTYPE(coo) = PIXTYPE_WORLD
+
+ # Decode the actual wcs.
+ stat = sk_strwcs (instr, SKY_CTYPE(coo), SKY_RADECSYS(coo),
+ SKY_EQUINOX(coo), SKY_EPOCH(coo))
+ switch (SKY_CTYPE(coo)) {
+ case CTYPE_EQUATORIAL:
+ SKY_NLNGUNITS(coo) = SKY_HOURS
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ default:
+ SKY_NLNGUNITS(coo) = SKY_DEGREES
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ }
+
+ # Decode the image wcs.
+ } else {
+ stat = sk_decim (im, Memc[str2], mw, coo)
+ call imunmap (im)
+ }
+
+ call sfree (sp)
+
+ SKY_STATUS(coo) = stat
+ return (stat)
+end
+
+
+# SK_DECWSTR -- Decode the wcs string coordinate system, e.g. "J2000" or
+# "galactic" into a celestial coordinate structure. ERR is returned if a
+# valid celestial coordinate structure cannot be created.
+
+int procedure sk_decwstr (instr, coo, imcoo)
+
+char instr[ARB] #I the input wcs string
+pointer coo #O the pointer to the coordinate structure
+pointer imcoo #I pointer to an existing coordinate structure
+
+int stat
+int sk_strwcs()
+
+begin
+ call calloc (coo, LEN_SKYCOOSTRUCT, TY_STRUCT)
+ call strcpy (instr, SKY_COOSYSTEM(coo), SZ_FNAME)
+
+ # Initialize.
+ if (imcoo == NULL) {
+ SKY_NLNGAX(coo) = 2048
+ SKY_NLATAX(coo) = 2048
+ SKY_PLNGAX(coo) = 1
+ SKY_PLATAX(coo) = 2
+ SKY_XLAX(coo) = 1
+ SKY_YLAX(coo) = 2
+ SKY_VXOFF(coo) = 0.0d0
+ SKY_VYOFF(coo) = 0.0d0
+ SKY_VXSTEP(coo) = 1.0d0
+ SKY_VYSTEP(coo) = 1.0d0
+ SKY_WTYPE(coo) = 0
+ } else {
+ SKY_NLNGAX(coo) = SKY_NLNGAX(imcoo)
+ SKY_NLATAX(coo) = SKY_NLATAX(imcoo)
+ SKY_PLNGAX(coo) = SKY_PLNGAX(imcoo)
+ SKY_PLATAX(coo) = SKY_PLATAX(imcoo)
+ SKY_XLAX(coo) = SKY_XLAX(imcoo)
+ SKY_YLAX(coo) = SKY_YLAX(imcoo)
+ SKY_VXOFF(coo) = SKY_VXOFF(imcoo)
+ SKY_VYOFF(coo) = SKY_VYOFF(imcoo)
+ SKY_VXSTEP(coo) = SKY_VXSTEP(imcoo)
+ SKY_VYSTEP(coo) = SKY_VYSTEP(imcoo)
+ SKY_WTYPE(coo) = SKY_WTYPE(imcoo)
+ }
+ SKY_PIXTYPE(coo) = PIXTYPE_WORLD
+
+ # Decode the actual wcs.
+ stat = sk_strwcs (instr, SKY_CTYPE(coo), SKY_RADECSYS(coo),
+ SKY_EQUINOX(coo), SKY_EPOCH(coo))
+ switch (SKY_CTYPE(coo)) {
+ case CTYPE_EQUATORIAL:
+ SKY_NLNGUNITS(coo) = SKY_HOURS
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ default:
+ SKY_NLNGUNITS(coo) = SKY_DEGREES
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ }
+
+ SKY_STATUS(coo) = stat
+
+ return (stat)
+end
+
+
+# SK_DECIM -- Given an image descriptor and an image wcs string create a
+# celstial coordinate structure. A non-NULL pointer to the image wcs structure
+# is also returned. ERR is returned if a valid celestial coordinate descriptor
+# cannot be created.
+
+
+int procedure sk_decim (im, wcs, mw, coo)
+
+pointer im #I the pointer to the input image
+char wcs[ARB] #I the wcs string [logical|tv|physical|world]
+pointer mw #O the pointer to the image wcs structure
+pointer coo #O the pointer to the coordinate structure
+
+int stat
+pointer sp, str1, laxno, paxval
+int sk_imwcs(), strdic(), mw_stati()
+pointer mw_openim()
+errchk mw_openim()
+
+begin
+ call malloc (coo, LEN_SKYCOOSTRUCT, TY_STRUCT)
+ call sprintf (SKY_COOSYSTEM(coo), SZ_FNAME, "%s %s")
+ call pargstr (IM_HDRFILE(im))
+ call pargstr (wcs)
+
+ call smark (sp)
+ call salloc (str1, SZ_LINE, TY_CHAR)
+ call salloc (laxno, IM_MAXDIM, TY_INT)
+ call salloc (paxval, IM_MAXDIM, TY_INT)
+
+ # Try to open the image wcs.
+ iferr {
+ mw = mw_openim (im)
+
+ # Set up a dummy wcs.
+ } then {
+
+ #Initialize.
+ SKY_CTYPE(coo) = 0
+ SKY_RADECSYS(coo) = 0
+ SKY_EQUINOX(coo) = INDEFD
+ SKY_EPOCH(coo) = INDEFD
+ mw = NULL
+ SKY_PLNGAX(coo) = 1
+ SKY_PLATAX(coo) = 2
+ SKY_XLAX(coo) = 1
+ SKY_YLAX(coo) = 2
+ SKY_NLNGAX(coo) = 2048
+ SKY_NLATAX(coo) = 2048
+ SKY_VXOFF(coo) = 0.0d0
+ SKY_VYOFF(coo) = 0.0d0
+ SKY_VXSTEP(coo) = 1.0d0
+ SKY_VYSTEP(coo) = 1.0d0
+ SKY_WTYPE(coo) = 0
+ SKY_PIXTYPE(coo) = PIXTYPE_LOGICAL
+ SKY_NLNGUNITS(coo) = SKY_DEGREES
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ stat = ERR
+
+ # Decode the wcs.
+ } else {
+ SKY_PIXTYPE(coo) = strdic (wcs, Memc[str1], SZ_LINE, PIXTYPE_LIST)
+ if (SKY_PIXTYPE(coo) <= 0)
+ SKY_PIXTYPE(coo) = PIXTYPE_LOGICAL
+ if (sk_imwcs (im, mw, SKY_CTYPE(coo), SKY_PLNGAX(coo),
+ SKY_PLATAX(coo), SKY_WTYPE(coo), SKY_RADECSYS(coo),
+ SKY_EQUINOX(coo), SKY_EPOCH(coo)) == OK) {
+ switch (SKY_CTYPE(coo)) {
+ case CTYPE_EQUATORIAL:
+ SKY_NLNGUNITS(coo) = SKY_HOURS
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ default:
+ SKY_NLNGUNITS(coo) = SKY_DEGREES
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ }
+ call mw_gaxmap (mw, Memi[laxno], Memi[paxval], mw_stati(mw,
+ MW_NPHYSDIM))
+ if (Memi[laxno+SKY_PLNGAX(coo)-1] <
+ Memi[laxno+SKY_PLATAX(coo)-1]) {
+ SKY_XLAX(coo) = Memi[laxno+SKY_PLNGAX(coo)-1]
+ SKY_YLAX(coo) = Memi[laxno+SKY_PLATAX(coo)-1]
+ } else {
+ SKY_XLAX(coo) = Memi[laxno+SKY_PLATAX(coo)-1]
+ SKY_YLAX(coo) = Memi[laxno+SKY_PLNGAX(coo)-1]
+ }
+ if (SKY_XLAX(coo) <= 0 || SKY_YLAX(coo) <= 0) {
+ SKY_VXOFF(coo) = 0.0d0
+ SKY_VYOFF(coo) = 0.0d0
+ SKY_VXSTEP(coo) = 1.0d0
+ SKY_VYSTEP(coo) = 1.0d0
+ SKY_NLNGAX(coo) = 2048
+ SKY_NLATAX(coo) = 2048
+ stat = ERR
+ } else {
+ SKY_VXOFF(coo) = IM_VOFF(im,IM_VMAP(im,SKY_XLAX(coo)))
+ SKY_VYOFF(coo) = IM_VOFF(im,IM_VMAP(im,SKY_YLAX(coo)))
+ SKY_VXSTEP(coo) = IM_VSTEP(im,SKY_XLAX(coo))
+ SKY_VYSTEP(coo) = IM_VSTEP(im,SKY_YLAX(coo))
+ SKY_NLNGAX(coo) = IM_LEN(im,SKY_XLAX(coo))
+ SKY_NLATAX(coo) = IM_LEN(im,SKY_YLAX(coo))
+ stat = OK
+ }
+ } else {
+ call mw_close (mw)
+ mw = NULL
+ SKY_XLAX(coo) = 1
+ SKY_YLAX(coo) = 2
+ SKY_NLNGAX(coo) = 2048
+ SKY_NLATAX(coo) = 2048
+ SKY_VXOFF(coo) = 0.0d0
+ SKY_VYOFF(coo) = 0.0d0
+ SKY_VXSTEP(coo) = 1.0d0
+ SKY_VYSTEP(coo) = 1.0d0
+ SKY_NLNGUNITS(coo) = SKY_DEGREES
+ SKY_NLATUNITS(coo) = SKY_DEGREES
+ stat = ERR
+ }
+ }
+
+ call sfree (sp)
+
+ SKY_STATUS(coo) = stat
+ return (stat)
+end
+
+
+# SK_STRWCS -- Decode the sky coordinate system from an input string.
+# The string syntax is [ctype] equinox [epoch]. The various options
+# have been placed case statements. Although there is considerable
+# duplication of code in the case statements, there are minor differences
+# and I found it clearer to write it out rather than trying to be
+# concise. I might want to clean this up a bit later.
+
+int procedure sk_strwcs (instr, ctype, radecsys, equinox, epoch)
+
+char instr[ARB] #I the input wcs string
+int ctype #O the output coordinate type
+int radecsys #O the output equatorial reference system
+double equinox #O the output equinox
+double epoch #O the output epoch of the observation
+
+int ip, nitems, sctype, sradecsys, stat
+pointer sp, str1, str2
+int strdic(), nscan(), ctod()
+double sl_ej2d(), sl_epb(), sl_eb2d(), sl_epj()
+
+begin
+ # Initialize.
+ ctype = 0
+ radecsys = 0
+ equinox = INDEFD
+ epoch = INDEFD
+
+ # Allocate working space.
+ call smark (sp)
+ call salloc (str1, SZ_LINE, TY_CHAR)
+ call salloc (str2, SZ_LINE, TY_CHAR)
+
+ # Determine the coordinate string.
+ call sscan (instr)
+ call gargwrd (Memc[str1], SZ_LINE)
+
+ # Return with an error if the string is blank.
+ if (Memc[str1] == EOS || nscan() < 1) {
+ call sfree (sp)
+ return (ERR)
+ } else
+ nitems = 1
+
+ # If the coordinate type is undefined temporarily default it to
+ # equatorial.
+ sctype = strdic (Memc[str1], Memc[str2], SZ_LINE, FTYPE_LIST)
+ if (sctype <= 0) {
+ ctype = CTYPE_EQUATORIAL
+ } else {
+ switch (sctype) {
+ case FTYPE_FK4:
+ ctype = CTYPE_EQUATORIAL
+ radecsys = EQTYPE_FK4
+ case FTYPE_FK4NOE:
+ ctype = CTYPE_EQUATORIAL
+ radecsys = EQTYPE_FK4NOE
+ case FTYPE_FK5:
+ ctype = CTYPE_EQUATORIAL
+ radecsys = EQTYPE_FK5
+ case FTYPE_ICRS:
+ ctype = CTYPE_EQUATORIAL
+ radecsys = EQTYPE_ICRS
+ case FTYPE_GAPPT:
+ ctype = CTYPE_EQUATORIAL
+ radecsys = EQTYPE_GAPPT
+ case FTYPE_ECLIPTIC:
+ ctype = CTYPE_ECLIPTIC
+ case FTYPE_GALACTIC:
+ ctype = CTYPE_GALACTIC
+ case FTYPE_SUPERGALACTIC:
+ ctype = CTYPE_SUPERGALACTIC
+ }
+ call gargwrd (Memc[str1], SZ_LINE)
+ if (nscan() > nitems)
+ nitems = nitems + 1
+ }
+ sctype = ctype
+ sradecsys = radecsys
+
+ # Decode the coordinate system.
+ switch (sctype) {
+
+ # Decode the equatorial system, equinox, and epoch.
+ case CTYPE_EQUATORIAL:
+
+ switch (sradecsys) {
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ if (Memc[str1] == 'J' || Memc[str1] == 'j' ||
+ Memc[str1] == 'B' || Memc[str1] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str1], ip, equinox) <= 0)
+ equinox = 1950.0d0
+ if (Memc[str1] == 'J' || Memc[str1] == 'j')
+ equinox = sl_epb (sl_ej2d (equinox))
+
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_eb2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j' ||
+ Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_eb2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'J' ||
+ Memc[str2] == 'j'))
+ epoch = sl_ej2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_eb2d (epoch)
+ }
+
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ if (Memc[str1] == 'J' || Memc[str1] == 'j' ||
+ Memc[str1] == 'B' || Memc[str1] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str1], ip, equinox) <= 0)
+ equinox = 2000.0d0
+ if (Memc[str1] == 'B' || Memc[str1] == 'b')
+ equinox = sl_epj(sl_eb2d (equinox))
+
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_ej2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j' ||
+ Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_ej2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'B' ||
+ Memc[str2] == 'b'))
+ epoch = sl_eb2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_ej2d (epoch)
+ }
+
+ case EQTYPE_GAPPT:
+ equinox = 2000.0d0
+ if (Memc[str1] == 'J' || Memc[str1] == 'j' ||
+ Memc[str1] == 'B' || Memc[str1] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str1], ip, epoch) <= 0) {
+ epoch = INDEFD
+ } else if (epoch <= 3000.0d0) {
+ if (Memc[str1] == 'B' || Memc[str1] == 'b')
+ epoch = sl_eb2d (epoch)
+ else if (Memc[str1] == 'J' || Memc[str1] == 'j')
+ epoch = sl_ej2d (epoch)
+ else if (epoch < 1984.0d0)
+ epoch = sl_eb2d (epoch)
+ else
+ epoch = sl_ej2d (epoch)
+ } else {
+ epoch = epoch - 2400000.5d0
+ }
+
+ default:
+ ip = 1
+ if (Memc[str1] == 'B' || Memc[str1] == 'b') {
+ radecsys = EQTYPE_FK4
+ ip = ip + 1
+ if (ctod (Memc[str1], ip, equinox) <= 0)
+ equinox = 1950.0d0
+
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_eb2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j')
+ ip = 2
+ else if (Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_eb2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'J' ||
+ Memc[str2] == 'j'))
+ epoch = sl_ej2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_eb2d (epoch)
+ }
+
+ } else if (Memc[str1] == 'J' || Memc[str1] == 'j') {
+ radecsys = EQTYPE_FK5
+ ip = ip + 1
+ if (ctod (Memc[str1], ip, equinox) <= 0)
+ equinox = 2000.0d0
+
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_ej2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j' ||
+ Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_ej2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'B' ||
+ Memc[str2] == 'b'))
+ epoch = sl_eb2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_ej2d (epoch)
+ }
+
+ } else if (ctod (Memc[str1], ip, equinox) <= 0) {
+ ctype = 0
+ radecsys = 0
+ equinox = INDEFD
+ epoch = INDEFD
+
+ } else if (equinox < 1984.0d0) {
+ radecsys = EQTYPE_FK4
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_eb2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j' ||
+ Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_eb2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'J' ||
+ Memc[str2] == 'j'))
+ epoch = sl_ej2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_eb2d (epoch)
+ }
+
+ } else {
+ radecsys = EQTYPE_FK5
+ call gargwrd (Memc[str2], SZ_LINE)
+ if (nscan() <= nitems)
+ epoch = sl_ej2d (equinox)
+ else {
+ if (Memc[str2] == 'J' || Memc[str2] == 'j' ||
+ Memc[str2] == 'B' || Memc[str2] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str2], ip, epoch) <= 0)
+ epoch = sl_ej2d (equinox)
+ else if (epoch <= 3000.0d0 && (Memc[str2] == 'B' ||
+ Memc[str2] == 'b'))
+ epoch = sl_eb2d (epoch)
+ else if (epoch > 3000.0d0)
+ epoch = epoch - 2400000.5d0
+ else
+ epoch = sl_ej2d (epoch)
+ }
+ }
+ }
+
+ # Decode the ecliptic coordinate system.
+ case CTYPE_ECLIPTIC:
+ if (Memc[str1] == 'J' || Memc[str1] == 'j' ||
+ Memc[str1] == 'B' || Memc[str1] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str1], ip, epoch) <= 0) {
+ epoch = INDEFD
+ } else if (epoch <= 3000.0d0) {
+ if (Memc[str1] == 'B' || Memc[str1] == 'b')
+ epoch = sl_eb2d (epoch)
+ else if (Memc[str1] == 'J' || Memc[str1] == 'j')
+ epoch = sl_ej2d (epoch)
+ else if (epoch < 1984.0d0)
+ epoch = sl_eb2d (epoch)
+ else
+ epoch = sl_ej2d (epoch)
+ } else {
+ epoch = epoch - 2400000.5d0
+ }
+
+ # Decode the galactic and supergalactic coordinate system.
+ case CTYPE_GALACTIC, CTYPE_SUPERGALACTIC:
+ if (Memc[str1] == 'J' || Memc[str1] == 'j' ||
+ Memc[str1] == 'B' || Memc[str1] == 'b')
+ ip = 2
+ else
+ ip = 1
+ if (ctod (Memc[str1], ip, epoch) <= 0) {
+ epoch = sl_eb2d (1950.0d0)
+ } else if (epoch <= 3000.0d0) {
+ if (Memc[str1] == 'J' || Memc[str1] == 'j')
+ epoch = sl_ej2d (epoch)
+ else if (Memc[str1] == 'B' || Memc[str1] == 'b')
+ epoch = sl_eb2d (epoch)
+ else if (epoch < 1984.0d0)
+ epoch = sl_eb2d (epoch)
+ else
+ epoch = sl_ej2d (epoch)
+ } else {
+ epoch = epoch - 2400000.5d0
+ }
+ }
+
+ # Return the appropriate error status.
+ if (ctype == 0)
+ stat = ERR
+ else if (ctype == CTYPE_EQUATORIAL && (radecsys == 0 ||
+ IS_INDEFD(equinox) || IS_INDEFD(epoch)))
+ stat = ERR
+ else if (ctype == CTYPE_ECLIPTIC && IS_INDEFD(epoch))
+ stat = ERR
+ else
+ stat = OK
+
+ call sfree (sp)
+
+ return (stat)
+end
+
+
+# SK_IMWCS -- Decode the sky coordinate system of the image. Return
+# an error if the sky coordinate system is not one of the supported types
+# or required information is missing from the image header.
+
+int procedure sk_imwcs (im, mw, ctype, lngax, latax, wtype, radecsys,
+ equinox, epoch)
+
+pointer im #I the image pointer
+pointer mw #I pointer to the world coordinate system
+int ctype #O the output coordinate type
+int lngax #O the output ra/glon/elon axis
+int latax #O the output dec/glat/elat axis
+int wtype #O the output projection type
+int radecsys #O the output equatorial reference system
+double equinox #O the output equinox
+double epoch #O the output epoch of the observation
+
+int i, ndim, axtype, day, month, year, ier, oldfits
+pointer sp, atval
+double hours
+double imgetd(), sl_eb2d(), sl_ej2d()
+int mw_stati(), strdic(), dtm_decode()
+errchk mw_gwattrs(), imgstr(), imgetd()
+
+begin
+ call smark (sp)
+ call salloc (atval, SZ_LINE, TY_CHAR)
+
+ # Initialize
+ ctype = 0
+ lngax = 0
+ latax = 0
+ wtype = 0
+ radecsys = 0
+ equinox = INDEFD
+ epoch = INDEFD
+
+ # Determine the sky coordinate system of the image.
+ ndim = mw_stati (mw, MW_NPHYSDIM)
+ do i = 1, ndim {
+ iferr (call mw_gwattrs (mw, i, "axtype", Memc[atval], SZ_LINE))
+ call strcpy ("INDEF", Memc[atval], SZ_LINE)
+ axtype = strdic (Memc[atval], Memc[atval], SZ_LINE, AXTYPE_LIST)
+ switch (axtype) {
+ case AXTYPE_RA, AXTYPE_DEC:
+ ctype = CTYPE_EQUATORIAL
+ case AXTYPE_ELON, AXTYPE_ELAT:
+ ctype = CTYPE_ECLIPTIC
+ case AXTYPE_GLON, AXTYPE_GLAT:
+ ctype = CTYPE_GALACTIC
+ case AXTYPE_SLON, AXTYPE_SLAT:
+ ctype = CTYPE_SUPERGALACTIC
+ default:
+ ;
+ }
+ switch (axtype) {
+ case AXTYPE_RA, AXTYPE_ELON, AXTYPE_GLON, AXTYPE_SLON:
+ lngax = i
+ case AXTYPE_DEC, AXTYPE_ELAT, AXTYPE_GLAT, AXTYPE_SLAT:
+ latax = i
+ default:
+ ;
+ }
+ }
+
+ # Return if the sky coordinate system cannot be decoded.
+ if (ctype == 0 || lngax == 0 || latax == 0) {
+ call sfree (sp)
+ return (ERR)
+ }
+
+ # Decode the sky projection.
+ iferr {
+ call mw_gwattrs (mw, lngax, "wtype", Memc[atval], SZ_LINE)
+ } then {
+ iferr (call mw_gwattrs(mw, latax, "wtype", Memc[atval], SZ_LINE))
+ call strcpy ("linear", Memc[atval], SZ_LINE)
+ }
+ wtype = strdic (Memc[atval], Memc[atval], SZ_LINE, WTYPE_LIST)
+
+ # Return if the sky projection system is not supported.
+ if (wtype == 0) {
+ call sfree (sp)
+ return (ERR)
+ }
+
+ # Determine the RA/DEC system and equinox.
+ if (ctype == CTYPE_EQUATORIAL) {
+
+ # Get the equinox of the coordinate system. The EQUINOX keyword
+ # takes precedence over EPOCH.
+ iferr {
+ equinox = imgetd (im, "EQUINOX")
+ } then {
+ iferr {
+ equinox = imgetd (im, "EPOCH")
+ } then {
+ equinox = INDEFD
+ }
+ }
+
+ # Determine which equatorial system will be used. The default
+ # is FK4 if equinox < 1984.0, FK5 if equinox is >= 1984.
+ iferr {
+ call imgstr (im, "RADECSYS", Memc[atval], SZ_LINE)
+ } then {
+ radecsys = 0
+ } else {
+ call strlwr (Memc[atval])
+ radecsys = strdic (Memc[atval], Memc[atval], SZ_LINE,
+ EQTYPE_LIST)
+ }
+ if (radecsys == 0) {
+ if (IS_INDEFD(equinox))
+ radecsys = EQTYPE_FK5
+ else if (equinox < 1984.0d0)
+ radecsys = EQTYPE_FK4
+ else
+ radecsys = EQTYPE_FK5
+ }
+
+ # Get the MJD of the observation. If there is no MJD in the
+ # header use the DATE_OBS keyword value and transform it to
+ # an MJD.
+ iferr {
+ epoch = imgetd (im, "MJD-WCS")
+ } then {
+ iferr {
+ epoch = imgetd (im, "MJD-OBS")
+ } then {
+ iferr {
+ call imgstr (im, "DATE-OBS", Memc[atval], SZ_LINE)
+ } then {
+ epoch = INDEFD
+ } else if (dtm_decode (Memc[atval], year, month, day,
+ hours, oldfits) == OK) {
+ call sl_cadj (year, month, day, epoch, ier)
+ if (ier != 0)
+ epoch = INDEFD
+ else if (! IS_INDEFD(hours) && hours >= 0.0d0 &&
+ hours <= 24.0d0)
+ epoch = epoch + hours / 24.0d0
+ } else
+ epoch = INDEFD
+ }
+ }
+
+ # Set the default equinox and epoch appropriate for each
+ # equatorial system if these are undefined.
+ switch (radecsys) {
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ if (IS_INDEFD(equinox))
+ equinox = 1950.0d0
+ if (IS_INDEFD(epoch))
+ epoch = sl_eb2d (1950.0d0)
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ if (IS_INDEFD(equinox))
+ equinox = 2000.0d0
+ if (IS_INDEFD(epoch))
+ epoch = sl_ej2d (2000.0d0)
+ case EQTYPE_GAPPT:
+ equinox = 2000.0d0
+ ;
+ }
+
+ # Return if the epoch is undefined. This can only occur if
+ # the equatorial coordinate system is GAPPT and there is NO
+ # epoch of observation in the image header.
+ if (IS_INDEFD(epoch)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ }
+
+ # Get the MJD of the observation. If there is no MJD in the
+ # header use the DATE_OBS keyword value and transform it to
+ # an MJD.
+ if (ctype == CTYPE_ECLIPTIC) {
+
+ iferr {
+ epoch = imgetd (im, "MJD-WCS")
+ } then {
+ iferr {
+ epoch = imgetd (im, "MJD-OBS")
+ } then {
+ iferr {
+ call imgstr (im, "DATE-OBS", Memc[atval], SZ_LINE)
+ } then {
+ epoch = INDEFD
+ } else if (dtm_decode (Memc[atval], year, month, day,
+ hours, oldfits) == OK) {
+ call sl_cadj (year, month, day, epoch, ier)
+ if (ier != 0)
+ epoch = INDEFD
+ else if (! IS_INDEFD(hours) && hours >= 0.0d0 &&
+ hours <= 24.0d0)
+ epoch = epoch + hours / 24.0d0
+ } else
+ epoch = INDEFD
+ }
+ }
+
+ # Return if the epoch is undefined.
+ if (IS_INDEFD(epoch)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ }
+
+ if (ctype == CTYPE_GALACTIC || ctype == CTYPE_SUPERGALACTIC) {
+
+ # Get the MJD of the observation. If there is no MJD in the
+ # header use the DATE_OBS keyword value and transform it to
+ # an MJD.
+ iferr {
+ epoch = imgetd (im, "MJD-WCS")
+ } then {
+ iferr {
+ epoch = imgetd (im, "MJD-OBS")
+ } then {
+ iferr {
+ call imgstr (im, "DATE-OBS", Memc[atval], SZ_LINE)
+ } then {
+ epoch = sl_eb2d (1950.0d0)
+ } else if (dtm_decode (Memc[atval], year, month, day,
+ hours, oldfits) == OK) {
+ call sl_cadj (year, month, day, epoch, ier)
+ if (ier != 0)
+ epoch = sl_eb2d (1950.0d0)
+ else {
+ if (! IS_INDEFD(hours) && hours >= 0.0d0 &&
+ hours <= 24.0d0)
+ epoch = epoch + hours / 24.0d0
+ #if (epoch < 1984.0d0)
+ #epoch = sl_eb2d (epoch)
+ #else
+ #epoch = sl_ej2d (epoch)
+ }
+ } else
+ epoch = sl_eb2d (1950.0d0)
+ }
+ }
+ }
+
+ call sfree (sp)
+
+ return (OK)
+end
+
+
+# SK_ENWCS -- Encode the celestial wcs system.
+
+procedure sk_enwcs (coo, wcsstr, maxch)
+
+pointer coo #I the celestial coordinate system descriptor
+char wcsstr[ARB] #O the output wcs string
+int maxch #I the size of the output string
+
+double sk_statd(), sl_epj(), sl_epb()
+int sk_stati()
+
+begin
+ switch (sk_stati (coo, S_CTYPE)) {
+
+ case CTYPE_EQUATORIAL:
+
+ switch (sk_stati(coo, S_RADECSYS)) {
+
+ case EQTYPE_GAPPT:
+ if (IS_INDEFD(sk_statd(coo, S_EPOCH))) {
+ call sprintf (wcsstr, maxch, "apparent")
+ } else {
+ call sprintf (wcsstr, maxch, "apparent J%0.8f")
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+ }
+
+ case EQTYPE_FK5:
+ call sprintf (wcsstr, maxch, "fk5 J%0.3f J%0.8f")
+ call pargd (sk_statd(coo, S_EQUINOX))
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+
+ case EQTYPE_ICRS:
+ call sprintf (wcsstr, maxch, "icrs J%0.3f J%0.8f")
+ call pargd (sk_statd(coo, S_EQUINOX))
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+
+ case EQTYPE_FK4:
+ call sprintf (wcsstr, maxch, "fk4 B%0.3f B%0.8f")
+ call pargd (sk_statd(coo, S_EQUINOX))
+ call pargd (sl_epb(sk_statd(coo, S_EPOCH)))
+
+ case EQTYPE_FK4NOE:
+ call sprintf (wcsstr, maxch, "fk4noe B%0.3f B%0.8f")
+ call pargd (sk_statd(coo, S_EQUINOX))
+ call pargd (sl_epb(sk_statd(coo, S_EPOCH)))
+
+ default:
+ wcsstr[1] = EOS
+ }
+
+ case CTYPE_ECLIPTIC:
+ if (IS_INDEFD(sk_statd(coo, S_EPOCH))) {
+ call sprintf (wcsstr, maxch, "ecliptic")
+ } else {
+ call sprintf (wcsstr, maxch, "ecliptic J%0.8f")
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+ }
+
+ case CTYPE_GALACTIC:
+ call sprintf (wcsstr, maxch, "galactic J%0.8f")
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+
+ case CTYPE_SUPERGALACTIC:
+ call sprintf (wcsstr, maxch, "supergalactic j%0.8f")
+ call pargd (sl_epj(sk_statd(coo, S_EPOCH)))
+ }
+end
+
+
+# SK_COPY -- Copy the coodinate structure.
+
+pointer procedure sk_copy (cooin)
+
+pointer cooin #I the pointer to the input structure
+
+pointer cooout
+
+begin
+ if (cooin == NULL)
+ cooout = NULL
+ else {
+ call calloc (cooout, LEN_SKYCOOSTRUCT, TY_STRUCT)
+ SKY_VXOFF(cooout) = SKY_VXOFF(cooin)
+ SKY_VYOFF(cooout) = SKY_VYOFF(cooin)
+ SKY_VXSTEP(cooout) = SKY_VXSTEP(cooin)
+ SKY_VYSTEP(cooout) = SKY_VYSTEP(cooin)
+ SKY_EQUINOX(cooout) = SKY_EQUINOX(cooin)
+ SKY_EPOCH(cooout) = SKY_EPOCH(cooin)
+ SKY_CTYPE(cooout) = SKY_CTYPE(cooin)
+ SKY_RADECSYS(cooout) = SKY_RADECSYS(cooin)
+ SKY_WTYPE(cooout) = SKY_WTYPE(cooin)
+ SKY_PLNGAX(cooout) = SKY_PLNGAX(cooin)
+ SKY_PLATAX(cooout) = SKY_PLATAX(cooin)
+ SKY_XLAX(cooout) = SKY_XLAX(cooin)
+ SKY_YLAX(cooout) = SKY_YLAX(cooin)
+ SKY_PIXTYPE(cooout) = SKY_PIXTYPE(cooin)
+ SKY_NLNGAX(cooout) = SKY_NLNGAX(cooin)
+ SKY_NLATAX(cooout) = SKY_NLATAX(cooin)
+ SKY_NLNGUNITS(cooout) = SKY_NLNGUNITS(cooin)
+ SKY_NLATUNITS(cooout) = SKY_NLATUNITS(cooin)
+ call strcpy (SKY_COOSYSTEM(cooin), SKY_COOSYSTEM(cooout),
+ SZ_FNAME)
+ }
+
+ return (cooout)
+end
+
+
+# SK_CLOSE -- Free the coordinate structure.
+
+procedure sk_close (coo)
+
+pointer coo #U the input coordinate structure
+
+begin
+ if (coo != NULL)
+ call mfree (coo, TY_STRUCT)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.f
new file mode 100644
index 00000000..63e39d30
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.f
@@ -0,0 +1,363 @@
+ subroutine sksavm (coo, mw, im)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer mw
+ integer im
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001,sw0002
+ integer*2 st0001(7)
+ integer*2 st0002(3)
+ integer*2 st0003(7)
+ integer*2 st0004(4)
+ integer*2 st0005(9)
+ integer*2 st0006(4)
+ integer*2 st0007(8)
+ integer*2 st0008(8)
+ integer*2 st0009(9)
+ integer*2 st0010(7)
+ integer*2 st0011(8)
+ integer*2 st0012(8)
+ integer*2 st0013(9)
+ integer*2 st0014(4)
+ integer*2 st0015(8)
+ integer*2 st0016(8)
+ integer*2 st0017(9)
+ integer*2 st0018(5)
+ integer*2 st0019(8)
+ integer*2 st0020(8)
+ integer*2 st0021(9)
+ integer*2 st0022(6)
+ integer*2 st0023(8)
+ integer*2 st0024(8)
+ integer*2 st0025(7)
+ integer*2 st0026(5)
+ integer*2 st0027(7)
+ integer*2 st0028(5)
+ integer*2 st0029(9)
+ integer*2 st0030(8)
+ integer*2 st0031(8)
+ integer*2 st0032(7)
+ integer*2 st0033(5)
+ integer*2 st0034(7)
+ integer*2 st0035(5)
+ integer*2 st0036(9)
+ integer*2 st0037(8)
+ integer*2 st0038(8)
+ integer*2 st0039(7)
+ integer*2 st0040(5)
+ integer*2 st0041(7)
+ integer*2 st0042(5)
+ integer*2 st0043(9)
+ integer*2 st0044(8)
+ integer*2 st0045(8)
+ save
+ integer iyy
+ data st0001 / 97,120,116,121,112,101, 0/
+ data st0002 /114, 97, 0/
+ data st0003 / 97,120,116,121,112,101, 0/
+ data st0004 /100,101, 99, 0/
+ data (st0005(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0005(iyy),iyy= 9, 9) / 0/
+ data st0006 / 70, 75, 52, 0/
+ data st0007 /101,113,117,105,110,111,120, 0/
+ data st0008 /109,106,100, 45,119, 99,115, 0/
+ data (st0009(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0009(iyy),iyy= 9, 9) / 0/
+ data st0010 / 70, 75, 52, 78, 79, 69, 0/
+ data st0011 /101,113,117,105,110,111,120, 0/
+ data st0012 /109,106,100, 45,119, 99,115, 0/
+ data (st0013(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0013(iyy),iyy= 9, 9) / 0/
+ data st0014 / 70, 75, 53, 0/
+ data st0015 /101,113,117,105,110,111,120, 0/
+ data st0016 /109,106,100, 45,119, 99,115, 0/
+ data (st0017(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0017(iyy),iyy= 9, 9) / 0/
+ data st0018 / 73, 67, 82, 83, 0/
+ data st0019 /101,113,117,105,110,111,120, 0/
+ data st0020 /109,106,100, 45,119, 99,115, 0/
+ data (st0021(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0021(iyy),iyy= 9, 9) / 0/
+ data st0022 / 71, 65, 80, 80, 84, 0/
+ data st0023 /101,113,117,105,110,111,120, 0/
+ data st0024 /109,106,100, 45,119, 99,115, 0/
+ data st0025 / 97,120,116,121,112,101, 0/
+ data st0026 /101,108,111,110, 0/
+ data st0027 / 97,120,116,121,112,101, 0/
+ data st0028 /101,108, 97,116, 0/
+ data (st0029(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0029(iyy),iyy= 9, 9) / 0/
+ data st0030 /101,113,117,105,110,111,120, 0/
+ data st0031 /109,106,100, 45,119, 99,115, 0/
+ data st0032 / 97,120,116,121,112,101, 0/
+ data st0033 /103,108,111,110, 0/
+ data st0034 / 97,120,116,121,112,101, 0/
+ data st0035 /103,108, 97,116, 0/
+ data (st0036(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0036(iyy),iyy= 9, 9) / 0/
+ data st0037 /101,113,117,105,110,111,120, 0/
+ data st0038 /109,106,100, 45,119, 99,115, 0/
+ data st0039 / 97,120,116,121,112,101, 0/
+ data st0040 /115,108,111,110, 0/
+ data st0041 / 97,120,116,121,112,101, 0/
+ data st0042 /115,108, 97,116, 0/
+ data (st0043(iyy),iyy= 1, 8) /114, 97,100,101, 99,115,121,115/
+ data (st0043(iyy),iyy= 9, 9) / 0/
+ data st0044 /101,113,117,105,110,111,120, 0/
+ data st0045 /109,106,100, 45,119, 99,115, 0/
+ sw0001=(memi(coo+12) )
+ goto 110
+120 continue
+ call mwswas (mw, memi(coo+15) , st0001, st0002)
+ call mwswas (mw, memi(coo+16) , st0003, st0004)
+ sw0002=(memi(coo+13) )
+ goto 130
+140 continue
+ call imastr (im, st0005, st0006)
+ call imaddd (im, st0007, memd((((coo+8)-1)/2+1)) )
+ call imaddd (im, st0008, memd((((coo+10)-1)/2+1)) )
+ goto 131
+150 continue
+ call imastr (im, st0009, st0010)
+ call imaddd (im, st0011, memd((((coo+8)-1)/2+1)) )
+ call imaddd (im, st0012, memd((((coo+10)-1)/2+1)) )
+ goto 131
+160 continue
+ call imastr (im, st0013, st0014)
+ call imaddd (im, st0015, memd((((coo+8)-1)/2+1)) )
+ call xerpsh
+ call imdelf (im, st0016)
+ if (.not.xerpop()) goto 170
+170 continue
+ goto 131
+180 continue
+ call imastr (im, st0017, st0018)
+ call imaddd (im, st0019, memd((((coo+8)-1)/2+1)) )
+ call xerpsh
+ call imdelf (im, st0020)
+ if (.not.xerpop()) goto 190
+190 continue
+ goto 131
+200 continue
+ call imastr (im, st0021, st0022)
+ call xerpsh
+ call imdelf (im, st0023)
+ if (.not.xerpop()) goto 210
+210 continue
+ call imaddd (im, st0024, memd((((coo+10)-1)/2+1)) )
+ goto 131
+130 continue
+ if (sw0002.lt.1.or.sw0002.gt.5) goto 131
+ goto (140,150,160,180,200),sw0002
+131 continue
+ goto 111
+220 continue
+ call mwswas (mw, memi(coo+15) , st0025, st0026)
+ call mwswas (mw, memi(coo+16) , st0027, st0028)
+ call xerpsh
+ call imdelf (im, st0029)
+ if (.not.xerpop()) goto 230
+230 continue
+ call xerpsh
+ call imdelf (im, st0030)
+ if (.not.xerpop()) goto 240
+240 continue
+ call imaddd (im, st0031, memd((((coo+10)-1)/2+1)) )
+ goto 111
+250 continue
+ call mwswas (mw, memi(coo+15) , st0032, st0033)
+ call mwswas (mw, memi(coo+16) , st0034, st0035)
+ call xerpsh
+ call imdelf (im, st0036)
+ if (.not.xerpop()) goto 260
+260 continue
+ call xerpsh
+ call imdelf (im, st0037)
+ if (.not.xerpop()) goto 270
+270 continue
+ call xerpsh
+ call imdelf (im, st0038)
+ if (.not.xerpop()) goto 280
+280 continue
+ goto 111
+290 continue
+ call mwswas (mw, memi(coo+15) , st0039, st0040)
+ call mwswas (mw, memi(coo+16) , st0041, st0042)
+ call xerpsh
+ call imdelf (im, st0043)
+ if (.not.xerpop()) goto 300
+300 continue
+ call xerpsh
+ call imdelf (im, st0044)
+ if (.not.xerpop()) goto 310
+310 continue
+ call xerpsh
+ call imdelf (im, st0045)
+ if (.not.xerpop()) goto 320
+320 continue
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 111
+ goto (120,220,250,290),sw0001
+111 continue
+100 return
+ end
+ subroutine skctym (coo, im)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer im
+ integer sp
+ integer wtype
+ integer key1
+ integer key2
+ integer attr
+ integer skwrdr
+ integer sw0001
+ integer*2 st0001(8)
+ integer*2 st0002(8)
+ integer*2 st0003(7)
+ integer*2 st0004(7)
+ integer*2 st0005(114)
+ integer*2 st0006(4)
+ integer*2 st0007(9)
+ integer*2 st0008(9)
+ integer*2 st0009(9)
+ integer*2 st0010(9)
+ integer*2 st0011(9)
+ integer*2 st0012(9)
+ integer*2 st0013(9)
+ integer*2 st0014(9)
+ integer*2 st0015(7)
+ integer*2 st0016(7)
+ save
+ integer iyy
+ data st0001 / 67, 84, 89, 80, 69, 37,100, 0/
+ data st0002 / 67, 84, 89, 80, 69, 37,100, 0/
+ data st0003 / 76, 73, 78, 69, 65, 82, 0/
+ data st0004 / 76, 73, 78, 69, 65, 82, 0/
+ data (st0005(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0005(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0005(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0005(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0005(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0005(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0005(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0005(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0005(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0005(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0005(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0005(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0005(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0005(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0005(iyy),iyy=113,114) /124, 0/
+ data st0006 /116, 97,110, 0/
+ data (st0007(iyy),iyy= 1, 8) / 82, 65, 45, 45, 45, 37, 51,115/
+ data (st0007(iyy),iyy= 9, 9) / 0/
+ data (st0008(iyy),iyy= 1, 8) / 68, 69, 67, 45, 45, 37, 51,115/
+ data (st0008(iyy),iyy= 9, 9) / 0/
+ data (st0009(iyy),iyy= 1, 8) / 69, 76, 79, 78, 45, 37, 51,115/
+ data (st0009(iyy),iyy= 9, 9) / 0/
+ data (st0010(iyy),iyy= 1, 8) / 69, 76, 65, 84, 45, 37, 51,115/
+ data (st0010(iyy),iyy= 9, 9) / 0/
+ data (st0011(iyy),iyy= 1, 8) / 71, 76, 79, 78, 45, 37, 51,115/
+ data (st0011(iyy),iyy= 9, 9) / 0/
+ data (st0012(iyy),iyy= 1, 8) / 71, 76, 65, 84, 45, 37, 51,115/
+ data (st0012(iyy),iyy= 9, 9) / 0/
+ data (st0013(iyy),iyy= 1, 8) / 83, 76, 79, 78, 45, 37, 51,115/
+ data (st0013(iyy),iyy= 9, 9) / 0/
+ data (st0014(iyy),iyy= 1, 8) / 83, 76, 65, 84, 45, 37, 51,115/
+ data (st0014(iyy),iyy= 9, 9) / 0/
+ data st0015 / 76, 73, 78, 69, 65, 82, 0/
+ data st0016 / 76, 73, 78, 69, 65, 82, 0/
+ call smark (sp)
+ call salloc (key1, 8, 2)
+ call salloc (key2, 8, 2)
+ call salloc (wtype, 3, 2)
+ call salloc (attr, 8, 2)
+ call sprinf (memc(key1), 8, st0001)
+ call pargi (memi(coo+15) )
+ call sprinf (memc(key2), 8, st0002)
+ call pargi (memi(coo+16) )
+ if (.not.(memi(coo+14) .le. 0 .or. memi(coo+14) .eq. 1)) goto
+ * 110
+ call imastr (im, memc(key1), st0003)
+ call imastr (im, memc(key2), st0004)
+ call sfree (sp)
+ goto 100
+110 continue
+ if (.not.(skwrdr (memi(coo+14) , memc(wtype), 3, st0005) .le. 0
+ * )) goto 120
+ call xstrcy(st0006, memc(wtype), 3)
+120 continue
+ call strupr (memc(wtype))
+ sw0001=(memi(coo+12) )
+ goto 130
+140 continue
+ call sprinf (memc(attr), 8, st0007)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key1), memc(attr))
+ call sprinf (memc(attr), 8, st0008)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key2), memc(attr))
+ goto 131
+150 continue
+ call sprinf (memc(attr), 8, st0009)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key1), memc(attr))
+ call sprinf (memc(attr), 8, st0010)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key2), memc(attr))
+ goto 131
+160 continue
+ call sprinf (memc(attr), 8, st0011)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key1), memc(attr))
+ call sprinf (memc(attr), 8, st0012)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key2), memc(attr))
+ goto 131
+170 continue
+ call sprinf (memc(attr), 8, st0013)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key1), memc(attr))
+ call sprinf (memc(attr), 8, st0014)
+ call pargsr (memc(wtype))
+ call imastr (im, memc(key2), memc(attr))
+ goto 131
+180 continue
+ call imastr (im, memc(key1), st0015)
+ call imastr (im, memc(key2), st0016)
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 180
+ goto (140,150,160,170),sw0001
+131 continue
+ call sfree (sp)
+100 return
+ end
+c sprinf sprintf
+c skctym sk_ctypeim
+c skwrdr sk_wrdstr
+c sksavm sk_saveim
+c mwswas mw_swattrs
+c pargsr pargstr
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.x
new file mode 100644
index 00000000..77b5a1d9
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sksaveim.x
@@ -0,0 +1,157 @@
+include "skywcsdef.h"
+include "skywcs.h"
+
+# SK_SAVEIM -- Update the image header keywords that describe the
+# fundamental coordinate system, CTYPE, RADECSYS, EQUINOX (EPOCH), and
+# MJD-WCS.
+
+procedure sk_saveim (coo, mw, im)
+
+pointer coo #I pointer to the coordinate structure
+pointer mw #I pointer to the mwcs structure
+pointer im #I image descriptor
+
+errchk imdelf()
+
+begin
+ # Move all this to a separate routine
+ switch (SKY_CTYPE(coo)) {
+
+ case CTYPE_EQUATORIAL:
+ call mw_swattrs (mw, SKY_PLNGAX(coo), "axtype", "ra")
+ call mw_swattrs (mw, SKY_PLATAX(coo), "axtype", "dec")
+ switch (SKY_RADECSYS(coo)) {
+ case EQTYPE_FK4:
+ call imastr (im, "radecsys", "FK4")
+ call imaddd (im, "equinox", SKY_EQUINOX(coo))
+ call imaddd (im, "mjd-wcs", SKY_EPOCH(coo))
+ case EQTYPE_FK4NOE:
+ call imastr (im, "radecsys", "FK4NOE")
+ call imaddd (im, "equinox", SKY_EQUINOX(coo))
+ call imaddd (im, "mjd-wcs", SKY_EPOCH(coo))
+ case EQTYPE_FK5:
+ call imastr (im, "radecsys", "FK5")
+ call imaddd (im, "equinox", SKY_EQUINOX(coo))
+ iferr (call imdelf (im, "mjd-wcs"))
+ ;
+ case EQTYPE_ICRS:
+ call imastr (im, "radecsys", "ICRS")
+ call imaddd (im, "equinox", SKY_EQUINOX(coo))
+ iferr (call imdelf (im, "mjd-wcs"))
+ ;
+ case EQTYPE_GAPPT:
+ call imastr (im, "radecsys", "GAPPT")
+ iferr (call imdelf (im, "equinox"))
+ ;
+ call imaddd (im, "mjd-wcs", SKY_EPOCH(coo))
+ }
+
+ case CTYPE_ECLIPTIC:
+ call mw_swattrs (mw, SKY_PLNGAX(coo), "axtype", "elon")
+ call mw_swattrs (mw, SKY_PLATAX(coo), "axtype", "elat")
+ iferr (call imdelf (im, "radecsys"))
+ ;
+ iferr (call imdelf (im, "equinox"))
+ ;
+ call imaddd (im, "mjd-wcs", SKY_EPOCH(coo))
+
+ case CTYPE_GALACTIC:
+ call mw_swattrs (mw, SKY_PLNGAX(coo), "axtype", "glon")
+ call mw_swattrs (mw, SKY_PLATAX(coo), "axtype", "glat")
+ iferr (call imdelf (im, "radecsys"))
+ ;
+ iferr (call imdelf (im, "equinox"))
+ ;
+ iferr (call imdelf (im, "mjd-wcs"))
+ ;
+
+ case CTYPE_SUPERGALACTIC:
+ call mw_swattrs (mw, SKY_PLNGAX(coo), "axtype", "slon")
+ call mw_swattrs (mw, SKY_PLATAX(coo), "axtype", "slat")
+ iferr (call imdelf (im, "radecsys"))
+ ;
+ iferr (call imdelf (im, "equinox"))
+ ;
+ iferr (call imdelf (im, "mjd-wcs"))
+ ;
+ }
+end
+
+
+# SK_CTYPEIM -- Modify the CTYPE keywords appropriately. This step will
+# become unnecessary when MWCS is updated to deal with non-equatorial celestial
+# coordinate systems.
+
+procedure sk_ctypeim (coo, im)
+
+pointer coo #I pointer to the coordinate structure
+pointer im #I image descriptor
+
+pointer sp, wtype, key1, key2, attr
+int sk_wrdstr()
+
+begin
+ call smark (sp)
+ call salloc (key1, 8, TY_CHAR)
+ call salloc (key2, 8, TY_CHAR)
+ call salloc (wtype, 3, TY_CHAR)
+ call salloc (attr, 8, TY_CHAR)
+
+ call sprintf (Memc[key1], 8, "CTYPE%d")
+ call pargi (SKY_PLNGAX(coo))
+ call sprintf (Memc[key2], 8, "CTYPE%d")
+ call pargi (SKY_PLATAX(coo))
+
+ if (SKY_WTYPE(coo) <= 0 || SKY_WTYPE(coo) == WTYPE_LIN) {
+ call imastr (im, Memc[key1], "LINEAR")
+ call imastr (im, Memc[key2], "LINEAR")
+ call sfree (sp)
+ return
+ }
+
+ if (sk_wrdstr (SKY_WTYPE(coo), Memc[wtype], 3, WTYPE_LIST) <= 0)
+ call strcpy ("tan", Memc[wtype], 3)
+ call strupr (Memc[wtype])
+
+ # Move all this to a separate routine
+ switch (SKY_CTYPE(coo)) {
+
+ case CTYPE_EQUATORIAL:
+ call sprintf (Memc[attr], 8, "RA---%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key1], Memc[attr])
+ call sprintf (Memc[attr], 8, "DEC--%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key2], Memc[attr])
+
+ case CTYPE_ECLIPTIC:
+ call sprintf (Memc[attr], 8, "ELON-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key1], Memc[attr])
+ call sprintf (Memc[attr], 8, "ELAT-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key2], Memc[attr])
+
+ case CTYPE_GALACTIC:
+ call sprintf (Memc[attr], 8, "GLON-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key1], Memc[attr])
+ call sprintf (Memc[attr], 8, "GLAT-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key2], Memc[attr])
+
+ case CTYPE_SUPERGALACTIC:
+ call sprintf (Memc[attr], 8, "SLON-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key1], Memc[attr])
+ call sprintf (Memc[attr], 8, "SLAT-%3s")
+ call pargstr (Memc[wtype])
+ call imastr (im, Memc[key2], Memc[attr])
+
+ default:
+ call imastr (im, Memc[key1], "LINEAR")
+ call imastr (im, Memc[key2], "LINEAR")
+ }
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.f
new file mode 100644
index 00000000..65765222
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.f
@@ -0,0 +1,179 @@
+ subroutine sksetd (coo, param, value)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ double precision value
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(46)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 83, 69, 84, 68/
+ data (st0001(iyy),iyy= 9,16) / 58, 32, 85,110,107,110,111,119/
+ data (st0001(iyy),iyy=17,24) /110, 32, 99,111,111,114,100,105/
+ data (st0001(iyy),iyy=25,32) /110, 97,116,101, 32,115,121,115/
+ data (st0001(iyy),iyy=33,40) /116,101,109, 32,112, 97,114, 97/
+ data (st0001(iyy),iyy=41,46) /109,101,116,101,114, 0/
+ sw0001=(param)
+ goto 110
+120 continue
+ memd((((coo)-1)/2+1)) = value
+ goto 111
+130 continue
+ memd((((coo+2)-1)/2+1)) = value
+ goto 111
+140 continue
+ memd((((coo+4)-1)/2+1)) = value
+ goto 111
+150 continue
+ memd((((coo+6)-1)/2+1)) = value
+ goto 111
+160 continue
+ memd((((coo+8)-1)/2+1)) = value
+ goto 111
+170 continue
+ memd((((coo+10)-1)/2+1)) = value
+ goto 111
+180 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.6) goto 180
+ goto (120,130,140,150,160,170),sw0001
+111 continue
+100 return
+ end
+ subroutine skseti (coo, param, value)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ integer value
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(46)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 83, 69, 84, 73/
+ data (st0001(iyy),iyy= 9,16) / 58, 32, 85,110,107,110,111,119/
+ data (st0001(iyy),iyy=17,24) /110, 32, 99,111,111,114,100,105/
+ data (st0001(iyy),iyy=25,32) /110, 97,116,101, 32,115,121,115/
+ data (st0001(iyy),iyy=33,40) /116,101,109, 32,112, 97,114, 97/
+ data (st0001(iyy),iyy=41,46) /109,101,116,101,114, 0/
+ sw0001=(param)
+ goto 110
+120 continue
+ memi(coo+12) = value
+ goto 111
+130 continue
+ memi(coo+13) = value
+ goto 111
+140 continue
+ memi(coo+14) = value
+ goto 111
+150 continue
+ memi(coo+15) = value
+ goto 111
+160 continue
+ memi(coo+16) = value
+ goto 111
+170 continue
+ memi(coo+17) = value
+ goto 111
+180 continue
+ memi(coo+18) = value
+ goto 111
+190 continue
+ memi(coo+19) = value
+ goto 111
+200 continue
+ memi(coo+20) = value
+ goto 111
+210 continue
+ memi(coo+21) = value
+ goto 111
+220 continue
+ memi(coo+22) = value
+ goto 111
+230 continue
+ memi(coo+23) = value
+ goto 111
+240 continue
+ memi(coo+24) = value
+ goto 111
+250 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ sw0001=sw0001-6
+ if (sw0001.lt.1.or.sw0001.gt.14) goto 250
+ goto (120,130,140,150,160,170,180,190,200,210,220,230,250,
+ * 240),sw0001
+111 continue
+100 return
+ end
+ subroutine sksets (coo, param, value)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ integer*2 value(*)
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(48)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 83, 69, 84, 83/
+ data (st0001(iyy),iyy= 9,16) / 84, 82, 58, 32, 85,110,107,110/
+ data (st0001(iyy),iyy=17,24) /111,119,110, 32, 99,111,111,114/
+ data (st0001(iyy),iyy=25,32) /100,105,110, 97,116,101, 32,115/
+ data (st0001(iyy),iyy=33,40) /121,115,116,101,109, 32,112, 97/
+ data (st0001(iyy),iyy=41,48) /114, 97,109,101,116,101,114, 0/
+ sw0001=(param)
+ goto 110
+120 continue
+ call xstrcy(value, memc((((coo+25)-1)*2+1)) , 255 )
+ goto 111
+130 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ if (sw0001.eq.19) goto 120
+ goto 130
+111 continue
+100 return
+ end
+c sksetd sk_setd
+c skseti sk_seti
+c sksets sk_sets
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.x
new file mode 100644
index 00000000..9e7191c3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skset.x
@@ -0,0 +1,90 @@
+include "skywcsdef.h"
+include "skywcs.h"
+
+
+# SK_SETD -- Set a double precision coordinate parameter.
+
+procedure sk_setd (coo, param, value)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+double value #I the parameter value
+
+begin
+ switch (param) {
+ case S_VXOFF:
+ SKY_VXOFF(coo) = value
+ case S_VYOFF:
+ SKY_VYOFF(coo) = value
+ case S_VXSTEP:
+ SKY_VXSTEP(coo) = value
+ case S_VYSTEP:
+ SKY_VYSTEP(coo) = value
+ case S_EQUINOX:
+ SKY_EQUINOX(coo) = value
+ case S_EPOCH:
+ SKY_EPOCH(coo) = value
+ default:
+ call error (0, "SKY_SETD: Unknown coordinate system parameter")
+ }
+end
+
+
+# SK_SETI -- Set an integer coordinate parameter.
+
+procedure sk_seti (coo, param, value)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+int value #I the parameter value
+
+begin
+ switch (param) {
+ case S_CTYPE:
+ SKY_CTYPE(coo) = value
+ case S_RADECSYS:
+ SKY_RADECSYS(coo) = value
+ case S_WTYPE:
+ SKY_WTYPE(coo) = value
+ case S_PLNGAX:
+ SKY_PLNGAX(coo) = value
+ case S_PLATAX:
+ SKY_PLATAX(coo) = value
+ case S_XLAX:
+ SKY_XLAX(coo) = value
+ case S_YLAX:
+ SKY_YLAX(coo) = value
+ case S_PIXTYPE:
+ SKY_PIXTYPE(coo) = value
+ case S_NLNGAX:
+ SKY_NLNGAX(coo) = value
+ case S_NLATAX:
+ SKY_NLATAX(coo) = value
+ case S_NLNGUNITS:
+ SKY_NLNGUNITS(coo) = value
+ case S_NLATUNITS:
+ SKY_NLATUNITS(coo) = value
+ case S_STATUS:
+ SKY_STATUS(coo) = value
+ default:
+ call error (0, "SKY_SETI: Unknown coordinate system parameter")
+ }
+end
+
+
+# SK_SETS -- Set a character string coordinate parameter.
+
+procedure sk_sets (coo, param, value)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+char value[ARB] #I the parameter value
+
+begin
+ switch (param) {
+ case S_COOSYSTEM:
+ call strcpy (value, SKY_COOSYSTEM(coo), SZ_FNAME)
+ default:
+ call error (0, "SKY_SETSTR: Unknown coordinate system parameter")
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.f
new file mode 100644
index 00000000..4c3c8397
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.f
@@ -0,0 +1,179 @@
+ double precision function skstad (coo, param)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(47)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 83, 84, 65, 84/
+ data (st0001(iyy),iyy= 9,16) / 68, 58, 32, 85,110,107,110,111/
+ data (st0001(iyy),iyy=17,24) /119,110, 32, 99,111,111,114,100/
+ data (st0001(iyy),iyy=25,32) /105,110, 97,116,101, 32,115,121/
+ data (st0001(iyy),iyy=33,40) /115,116,101,109, 32,112, 97,114/
+ data (st0001(iyy),iyy=41,47) / 97,109,101,116,101,114, 0/
+ skstad = 0
+ sw0001=(param)
+ goto 110
+120 continue
+ skstad = (memd((((coo)-1)/2+1)) )
+ goto 100
+130 continue
+ skstad = (memd((((coo+2)-1)/2+1)) )
+ goto 100
+140 continue
+ skstad = (memd((((coo+4)-1)/2+1)) )
+ goto 100
+150 continue
+ skstad = (memd((((coo+6)-1)/2+1)) )
+ goto 100
+160 continue
+ skstad = (memd((((coo+8)-1)/2+1)) )
+ goto 100
+170 continue
+ skstad = (memd((((coo+10)-1)/2+1)) )
+ goto 100
+180 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.6) goto 180
+ goto (120,130,140,150,160,170),sw0001
+111 continue
+100 return
+ end
+ integer function skstai (coo, param)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(47)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 83, 84, 65, 84/
+ data (st0001(iyy),iyy= 9,16) / 73, 58, 32, 85,110,107,110,111/
+ data (st0001(iyy),iyy=17,24) /119,110, 32, 99,111,111,114,100/
+ data (st0001(iyy),iyy=25,32) /105,110, 97,116,101, 32,115,121/
+ data (st0001(iyy),iyy=33,40) /115,116,101,109, 32,112, 97,114/
+ data (st0001(iyy),iyy=41,47) / 97,109,101,116,101,114, 0/
+ sw0001=(param)
+ goto 110
+120 continue
+ skstai = (memi(coo+12) )
+ goto 100
+130 continue
+ skstai = (memi(coo+13) )
+ goto 100
+140 continue
+ skstai = (memi(coo+14) )
+ goto 100
+150 continue
+ skstai = (memi(coo+15) )
+ goto 100
+160 continue
+ skstai = (memi(coo+16) )
+ goto 100
+170 continue
+ skstai = (memi(coo+17) )
+ goto 100
+180 continue
+ skstai = (memi(coo+18) )
+ goto 100
+190 continue
+ skstai = (memi(coo+19) )
+ goto 100
+200 continue
+ skstai = (memi(coo+20) )
+ goto 100
+210 continue
+ skstai = (memi(coo+21) )
+ goto 100
+220 continue
+ skstai = (memi(coo+22) )
+ goto 100
+230 continue
+ skstai = (memi(coo+23) )
+ goto 100
+240 continue
+ skstai = (memi(coo+24) )
+ goto 100
+250 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ sw0001=sw0001-6
+ if (sw0001.lt.1.or.sw0001.gt.14) goto 250
+ goto (120,130,140,150,160,170,180,190,200,210,220,230,250,
+ * 240),sw0001
+111 continue
+100 return
+ end
+ subroutine skstas (coo, param, value, maxch)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer coo
+ integer param
+ integer*2 value
+ integer maxch
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(48)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 83, 75, 89, 95, 71, 69, 84, 83/
+ data (st0001(iyy),iyy= 9,16) / 84, 82, 58, 32, 85,110,107,110/
+ data (st0001(iyy),iyy=17,24) /111,119,110, 32, 99,111,111,114/
+ data (st0001(iyy),iyy=25,32) /100,105,110, 97,116,101, 32,115/
+ data (st0001(iyy),iyy=33,40) /121,115,116,101,109, 32,112, 97/
+ data (st0001(iyy),iyy=41,48) /114, 97,109,101,116,101,114, 0/
+ sw0001=(param)
+ goto 110
+120 continue
+ call xstrcy(memc((((coo+25)-1)*2+1)) , value, maxch)
+ goto 111
+130 continue
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+ goto 111
+110 continue
+ if (sw0001.eq.19) goto 120
+ goto 130
+111 continue
+100 return
+ end
+c skstad sk_statd
+c skstai sk_stati
+c skstas sk_stats
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.x
new file mode 100644
index 00000000..82d2f1c2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skstat.x
@@ -0,0 +1,90 @@
+include "skywcsdef.h"
+include "skywcs.h"
+
+
+# SK_STATD -- Get a double precision coordinate parameter.
+
+double procedure sk_statd (coo, param)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+
+begin
+ switch (param) {
+ case S_VXOFF:
+ return (SKY_VXOFF(coo))
+ case S_VYOFF:
+ return (SKY_VYOFF(coo))
+ case S_VXSTEP:
+ return (SKY_VXSTEP(coo))
+ case S_VYSTEP:
+ return (SKY_VYSTEP(coo))
+ case S_EQUINOX:
+ return (SKY_EQUINOX(coo))
+ case S_EPOCH:
+ return (SKY_EPOCH(coo))
+ default:
+ call error (0, "SKY_STATD: Unknown coordinate system parameter")
+ }
+end
+
+
+# SK_STATI -- Get an integer coordinate parameter.
+
+int procedure sk_stati (coo, param)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+
+begin
+ switch (param) {
+ case S_CTYPE:
+ return (SKY_CTYPE(coo))
+ case S_RADECSYS:
+ return (SKY_RADECSYS(coo))
+ case S_WTYPE:
+ return (SKY_WTYPE(coo))
+ case S_PLNGAX:
+ return (SKY_PLNGAX(coo))
+ case S_PLATAX:
+ return (SKY_PLATAX(coo))
+ case S_XLAX:
+ return (SKY_XLAX(coo))
+ case S_YLAX:
+ return (SKY_YLAX(coo))
+ case S_PIXTYPE:
+ return (SKY_PIXTYPE(coo))
+ case S_NLNGAX:
+ return (SKY_NLNGAX(coo))
+ case S_NLATAX:
+ return (SKY_NLATAX(coo))
+ case S_NLNGUNITS:
+ return (SKY_NLNGUNITS(coo))
+ case S_NLATUNITS:
+ return (SKY_NLATUNITS(coo))
+ case S_STATUS:
+ return (SKY_STATUS(coo))
+ default:
+ call error (0, "SKY_STATI: Unknown coordinate system parameter")
+ }
+end
+
+
+
+# SK_STATS -- Get a character string coordinate parameter.
+
+procedure sk_stats (coo, param, value, maxch)
+
+pointer coo #I pointer to the coordinate structure
+int param #I the input parameter
+char value #O the output string
+int maxch #I the maximum size of the string
+
+begin
+ switch (param) {
+ case S_COOSYSTEM:
+ call strcpy (SKY_COOSYSTEM(coo), value, maxch)
+ default:
+ call error (0, "SKY_GETSTR: Unknown coordinate system parameter")
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.f
new file mode 100644
index 00000000..85aff7b1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.f
@@ -0,0 +1,756 @@
+ subroutine skultn (cooin, cooout, ilng, ilat, olng, olat, npts)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cooin
+ integer cooout
+ integer npts
+ double precision ilng(*)
+ double precision ilat(*)
+ double precision olng(*)
+ double precision olat(*)
+ double precision tilng
+ double precision tilat
+ double precision tolng
+ double precision tolat
+ integer i
+ integer sw0001,sw0002,sw0003,sw0004
+ save
+ do 110 i = 1, npts
+ sw0001=(memi(cooin+22) )
+ goto 120
+130 continue
+ tilng = ((15.0d0 * ilng(i))/57.295779513082320877)
+ goto 121
+140 continue
+ tilng = ((ilng(i))/57.295779513082320877)
+ goto 121
+150 continue
+ tilng = ilng(i)
+ goto 121
+160 continue
+ tilng = ilng(i)
+ goto 121
+120 continue
+ if (sw0001.lt.1.or.sw0001.gt.3) goto 160
+ goto (140,150,130),sw0001
+121 continue
+ sw0002=(memi(cooin+23) )
+ goto 170
+180 continue
+ tilat = ((15.0d0 * ilat(i))/57.295779513082320877)
+ goto 171
+190 continue
+ tilat = ((ilat(i))/57.295779513082320877)
+ goto 171
+200 continue
+ tilat = ilat(i)
+ goto 171
+210 continue
+ tilat = ilat(i)
+ goto 171
+170 continue
+ if (sw0002.lt.1.or.sw0002.gt.3) goto 210
+ goto (190,200,180),sw0002
+171 continue
+ call sklltn (cooin, cooout, tilng, tilat, 1.6d308, 1.6d308,
+ * 0.0d0, 0.0d0, tolng, tolat)
+ sw0003=(memi(cooout+22) )
+ goto 220
+230 continue
+ olng(i) = ((tolng)*57.295779513082320877) / 15.0d0
+ goto 221
+240 continue
+ olng(i) = ((tolng)*57.295779513082320877)
+ goto 221
+250 continue
+ olng(i) = tolng
+ goto 221
+260 continue
+ olng(i) = tolng
+ goto 221
+220 continue
+ if (sw0003.lt.1.or.sw0003.gt.3) goto 260
+ goto (240,250,230),sw0003
+221 continue
+ sw0004=(memi(cooout+23) )
+ goto 270
+280 continue
+ olat(i) = ((tolat)*57.295779513082320877) / 15.0d0
+ goto 271
+290 continue
+ olat(i) = ((tolat)*57.295779513082320877)
+ goto 271
+300 continue
+ olat(i) = tolat
+ goto 271
+310 continue
+ olat(i) = tolat
+ goto 271
+270 continue
+ if (sw0004.lt.1.or.sw0004.gt.3) goto 310
+ goto (290,300,280),sw0004
+271 continue
+110 continue
+111 continue
+100 return
+ end
+ subroutine sklltn (cooin, cooout, ilng, ilat, ipmlng, ipmlat, px,
+ *rv, olng, olat)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cooin
+ integer cooout
+ double precision ilng
+ double precision ilat
+ double precision ipmlng
+ double precision ipmlat
+ double precision px
+ double precision rv
+ double precision olng
+ double precision olat
+ integer pmflag
+ double precision pmr
+ double precision pmd
+ double precision slepj
+ double precision slepb
+ integer sw0001,sw0002,sw0003,sw0004,sw0005,sw0006,sw0007,sw0008,
+ *sw0009,sw0010
+ save
+ if (.not.(memi(cooin+12) .eq. memi(cooout+12) )) goto 110
+ sw0001=(memi(cooin+12) )
+ goto 120
+130 continue
+ call skequl (cooin, cooout, ilng, ilat, ipmlng, ipmlat,
+ * px, rv, olng, olat)
+ goto 121
+140 continue
+ if (.not.(memd((((cooin+10)-1)/2+1)) .eq. memd((((cooout+
+ * 10)-1)/2+1)) )) goto 150
+ olng = ilng
+ olat = ilat
+ goto 151
+150 continue
+ call sleceq (ilng, ilat, memd((((cooin+10)-1)/2+1)) ,
+ * olng, olat)
+ call sleqec (olng, olat, memd((((cooout+10)-1)/2+1)) ,
+ * olng, olat)
+151 continue
+ goto 121
+160 continue
+ olng = ilng
+ olat = ilat
+ goto 121
+120 continue
+ if (sw0001.eq.1) goto 130
+ if (sw0001.eq.2) goto 140
+ goto 160
+121 continue
+ goto 100
+110 continue
+ if (.not.(.not. ((ipmlng).eq.1.6d308) .and. .not. ((ipmlat).eq.
+ * 1.6d308))) goto 170
+ pmflag = 1
+ goto 171
+170 continue
+ pmflag = 0
+171 continue
+ sw0002=(memi(cooin+12) )
+ goto 180
+190 continue
+ sw0003=(memi(cooin+13) )
+ goto 200
+210 continue
+ if (.not.(pmflag .eq. 1)) goto 220
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepb (
+ * memd((((cooin+10)-1)/2+1)) ), slepb (memd((((cooout+10
+ * )-1)/2+1)) ), olng, olat)
+ goto 221
+220 continue
+ olng = ilng
+ olat = ilat
+221 continue
+ if (.not.(memi(cooin+13) .eq. 1)) goto 230
+ call slsuet (olng, olat, memd((((cooin+8)-1)/2+1)) ,
+ * olng, olat)
+230 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 1950.0d0)) goto
+ * 240
+ call slprcs (1, memd((((cooin+8)-1)/2+1)) , 1950.0d0,
+ * olng, olat)
+240 continue
+ call sladet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(pmflag .eq. 1)) goto 250
+ call slf45z (olng, olat, slepb(memd((((cooout+10)-1)/2
+ * +1)) ), olng, olat)
+ goto 251
+250 continue
+ call slf45z (olng, olat, slepb (memd((((cooin+10)-1)/2
+ * +1)) ), olng, olat)
+251 continue
+ goto 201
+260 continue
+ if (.not.(pmflag .eq. 1)) goto 270
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepj (
+ * memd((((cooin+10)-1)/2+1)) ), slepj(memd((((cooout+10)
+ * -1)/2+1)) ), olng, olat)
+ goto 271
+270 continue
+ olng = ilng
+ olat = ilat
+271 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 280
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+280 continue
+ goto 201
+290 continue
+ if (.not.(pmflag .eq. 1)) goto 300
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepj (
+ * memd((((cooin+10)-1)/2+1)) ), slepj(memd((((cooout+10)
+ * -1)/2+1)) ), olng, olat)
+ goto 301
+300 continue
+ olng = ilng
+ olat = ilat
+301 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 310
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+310 continue
+ call slhf5z (olng, olat, 2000.0d0, olng, olat, pmr, pmd)
+ goto 201
+320 continue
+ call slamp (ilng, ilat, memd((((cooin+10)-1)/2+1)) , 2000
+ * .0d0, olng, olat)
+ goto 201
+200 continue
+ if (sw0003.lt.1.or.sw0003.gt.5) goto 201
+ goto (210,210,260,290,320),sw0003
+201 continue
+ sw0004=(memi(cooout+12) )
+ goto 330
+340 continue
+ call sleqec (olng, olat, memd((((cooout+10)-1)/2+1)) ,
+ * olng, olat)
+ goto 331
+350 continue
+ call sleqga (olng, olat, olng, olat)
+ goto 331
+360 continue
+ call sleqga (olng, olat, olng, olat)
+ call slgasu (olng, olat, olng, olat)
+ goto 331
+370 continue
+ olng = ilng
+ olat = ilat
+ goto 331
+330 continue
+ sw0004=sw0004-1
+ if (sw0004.lt.1.or.sw0004.gt.3) goto 370
+ goto (340,350,360),sw0004
+331 continue
+ goto 181
+380 continue
+ call sleceq (ilng, ilat, memd((((cooin+10)-1)/2+1)) , olng,
+ * olat)
+ sw0005=(memi(cooout+12) )
+ goto 390
+400 continue
+ sw0006=(memi(cooout+13) )
+ goto 410
+420 continue
+ call slf54z (olng, olat, slepb(memd((((cooout+10)-1)/2
+ * +1)) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0))
+ * goto 430
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+430 continue
+ if (.not.(memi(cooout+13) .eq. 1)) goto 440
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1))
+ * , olng, olat)
+440 continue
+ goto 411
+450 continue
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 460
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+460 continue
+ goto 411
+470 continue
+ call slf5hz (olng, olat, 2000.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 480
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+480 continue
+ goto 411
+490 continue
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.
+ * 0d0, memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 411
+410 continue
+ if (sw0006.lt.1.or.sw0006.gt.5) goto 411
+ goto (420,420,450,470,490),sw0006
+411 continue
+ goto 391
+500 continue
+ call sleqga (olng, olat, olng, olat)
+ goto 391
+510 continue
+ call sleqga (olng, olat, olng, olat)
+ call slgasu (olng, olat, olng, olat)
+ goto 391
+520 continue
+ olng = ilng
+ olat = ilat
+ goto 391
+390 continue
+ if (sw0005.lt.1.or.sw0005.gt.4) goto 520
+ goto (400,520,500,510),sw0005
+391 continue
+ goto 181
+530 continue
+ sw0007=(memi(cooout+12) )
+ goto 540
+550 continue
+ call slgaeq (ilng, ilat, olng, olat)
+ sw0008=(memi(cooout+13) )
+ goto 560
+570 continue
+ call slf54z (olng, olat, slepb(memd((((cooout+10)-1)/2
+ * +1)) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0))
+ * goto 580
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+580 continue
+ if (.not.(memi(cooout+13) .eq. 1)) goto 590
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1))
+ * , olng, olat)
+590 continue
+ goto 561
+600 continue
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 610
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+610 continue
+ goto 561
+620 continue
+ call slf5hz (olng, olat, 2000.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 630
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+630 continue
+ goto 561
+640 continue
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.
+ * 0d0, memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 561
+560 continue
+ if (sw0008.lt.1.or.sw0008.gt.5) goto 561
+ goto (570,570,600,620,640),sw0008
+561 continue
+ goto 541
+650 continue
+ call slgaeq (ilng, ilat, olng, olat)
+ call sleqec (olng, olat, memd((((cooout+10)-1)/2+1)) ,
+ * olng, olat)
+ goto 541
+660 continue
+ call slgasu (ilng, ilat, olng, olat)
+ goto 541
+670 continue
+ olng = ilng
+ olat = ilat
+ goto 541
+540 continue
+ if (sw0007.lt.1.or.sw0007.gt.4) goto 670
+ goto (550,650,670,660),sw0007
+541 continue
+ goto 181
+680 continue
+ sw0009=(memi(cooout+12) )
+ goto 690
+700 continue
+ call slsuga (ilng, ilat, olng, olat)
+ sw0010=(memi(cooout+13) )
+ goto 710
+720 continue
+ call slgaeq (olng, olat, olng, olat)
+ call slf54z (olng, olat, slepb (memd((((cooout+10)-1)/
+ * 2+1)) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0))
+ * goto 730
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+730 continue
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+ goto 711
+740 continue
+ call slgaeq (olng, olat, olng, olat)
+ call slf54z (olng, olat, slepb (memd((((cooout+10)-1)/
+ * 2+1)) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0))
+ * goto 750
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+750 continue
+ goto 711
+760 continue
+ call slgaeq (olng, olat, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 770
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+770 continue
+ goto 711
+780 continue
+ call slgaeq (olng, olat, olng, olat)
+ call slf5hz (olng, olat, 2000.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0))
+ * goto 790
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)
+ * ) , olng, olat)
+790 continue
+ goto 711
+800 continue
+ call slgaeq (olng, olat, olng, olat)
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.
+ * 0d0, memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 711
+710 continue
+ if (sw0010.lt.1.or.sw0010.gt.5) goto 711
+ goto (720,740,760,780,800),sw0010
+711 continue
+ goto 691
+810 continue
+ call slsuga (ilng, ilat, olng, olat)
+ call slgaeq (olng, olat, olng, olat)
+ call sleqec (olng, olat, memd((((cooout+10)-1)/2+1)) ,
+ * olng, olat)
+ goto 691
+820 continue
+ call slsuga (ilng, ilat, olng, olat)
+ goto 691
+830 continue
+ olng = ilng
+ olat = ilat
+ goto 691
+690 continue
+ if (sw0009.lt.1.or.sw0009.gt.3) goto 830
+ goto (700,810,820),sw0009
+691 continue
+ goto 181
+840 continue
+ olng = ilng
+ olat = ilat
+ goto 181
+180 continue
+ if (sw0002.lt.1.or.sw0002.gt.4) goto 840
+ goto (190,380,530,680),sw0002
+181 continue
+100 return
+ end
+ subroutine skequl (cooin, cooout, ilng, ilat, ipmlng, ipmlat, px,
+ *rv, olng, olat)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cooin
+ integer cooout
+ double precision ilng
+ double precision ilat
+ double precision ipmlng
+ double precision ipmlat
+ double precision px
+ double precision rv
+ double precision olng
+ double precision olat
+ integer pmflag
+ double precision pmr
+ double precision pmd
+ double precision slepb
+ double precision slepj
+ integer sw0001,sw0002,sw0003,sw0004
+ save
+ if (.not.((memi(cooin+13) .eq. memi(cooout+13) ) .and. (memd(((
+ * (cooin+8)-1)/2+1)) .eq. memd((((cooout+8)-1)/2+1)) ) .and. (
+ * memd((((cooin+10)-1)/2+1)) .eq. memd((((cooout+10)-1)/2+1)) )))
+ * goto 110
+ olng = ilng
+ olat = ilat
+ goto 100
+110 continue
+ if (.not.(.not. ((ipmlng).eq.1.6d308) .and. .not. ((ipmlat).eq.
+ * 1.6d308))) goto 120
+ pmflag = 1
+ goto 121
+120 continue
+ pmflag = 0
+121 continue
+ sw0001=(memi(cooin+13) )
+ goto 130
+140 continue
+ if (.not.(pmflag .eq. 1)) goto 150
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepb (
+ * memd((((cooin+10)-1)/2+1)) ), slepb (memd((((cooout+10)-1
+ * )/2+1)) ), olng, olat)
+ goto 151
+150 continue
+ olng = ilng
+ olat = ilat
+151 continue
+ if (.not.(memi(cooin+13) .eq. 1)) goto 160
+ call slsuet (olng, olat, memd((((cooin+8)-1)/2+1)) , olng
+ * , olat)
+160 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 1950.0d0)) goto 170
+ call slprcs (1, memd((((cooin+8)-1)/2+1)) , 1950.0d0,
+ * olng, olat)
+170 continue
+ call sladet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(pmflag .eq. 1)) goto 180
+ call slf45z (olng, olat, slepb (memd((((cooout+10)-1)/2+1
+ * )) ), olng, olat)
+ goto 181
+180 continue
+ call slf45z (olng, olat, slepb (memd((((cooin+10)-1)/2+1)
+ * ) ), olng, olat)
+181 continue
+ sw0002=(memi(cooout+13) )
+ goto 190
+200 continue
+ call slf54z (olng, olat, slepb (memd((((cooout+10)-1)/2+1
+ * )) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0)) goto
+ * 210
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+210 continue
+ if (.not.(memi(cooout+13) .eq. 1)) goto 220
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+220 continue
+ goto 191
+230 continue
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 240
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+240 continue
+ goto 191
+250 continue
+ call slf5hz (olng, olat, 2000.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 260
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+260 continue
+ goto 191
+270 continue
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0
+ * , memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 191
+190 continue
+ if (sw0002.lt.1.or.sw0002.gt.5) goto 191
+ goto (200,200,230,250,270),sw0002
+191 continue
+ goto 131
+280 continue
+ if (.not.(memi(cooin+13) .eq. 3)) goto 290
+ if (.not.(pmflag .eq. 1)) goto 300
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepj (
+ * memd((((cooin+10)-1)/2+1)) ), slepj (memd((((cooout+10
+ * )-1)/2+1)) ), olng, olat)
+ goto 301
+300 continue
+ olng = ilng
+ olat = ilat
+301 continue
+ goto 291
+290 continue
+ call slamp (ilng, ilat, memd((((cooin+10)-1)/2+1)) , 2000
+ * .0d0, olng, olat)
+291 continue
+ sw0003=(memi(cooout+13) )
+ goto 310
+320 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 330
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+330 continue
+ call slf54z (olng, olat, slepb(memd((((cooout+10)-1)/2+1)
+ * ) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0)) goto
+ * 340
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+340 continue
+ if (.not.(memi(cooout+13) .eq. 1)) goto 350
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+350 continue
+ goto 311
+360 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. memd((((cooout+8
+ * )-1)/2+1)) )) goto 370
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , memd((((
+ * cooout+8)-1)/2+1)) , olng, olat)
+370 continue
+ goto 311
+380 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 390
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+390 continue
+ call slf5hz (olng, olat, slepj(memd((((cooin+10)-1)/2+1))
+ * ), olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 400
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+400 continue
+ goto 311
+410 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 420
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+420 continue
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0
+ * , memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 311
+310 continue
+ if (sw0003.lt.1.or.sw0003.gt.5) goto 311
+ goto (320,320,360,380,410),sw0003
+311 continue
+ goto 131
+430 continue
+ if (.not.(pmflag .eq. 1)) goto 440
+ call slpm (ilng, ilat, ipmlng, ipmlat, px, rv, slepj (
+ * memd((((cooin+10)-1)/2+1)) ), slepj (memd((((cooout+10)-1
+ * )/2+1)) ), olng, olat)
+ goto 441
+440 continue
+ olng = ilng
+ olat = ilat
+441 continue
+ sw0004=(memi(cooout+13) )
+ goto 450
+460 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 470
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+470 continue
+ call slhf5z (olng, olat, 2000.0d0, olng, olat, pmr, pmd)
+ call slf54z (olng, olat, slepb(memd((((cooout+10)-1)/2+1)
+ * ) ), olng, olat, pmr, pmd)
+ call slsuet (olng, olat, 1950.0d0, olng, olat)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 1950.0d0)) goto
+ * 480
+ call slprcs (1, 1950.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+480 continue
+ if (.not.(memi(cooout+13) .eq. 1)) goto 490
+ call sladet (olng, olat, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+490 continue
+ goto 451
+500 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 510
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+510 continue
+ call slhf5z (olng, olat, slepj(memd((((cooout+10)-1)/2+1)
+ * ) ), olng, olat, pmr, pmd)
+ if (.not.(memd((((cooout+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 520
+ call slprcs (2, 2000.0d0, memd((((cooout+8)-1)/2+1)) ,
+ * olng, olat)
+520 continue
+ goto 451
+530 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. memd((((cooout+8
+ * )-1)/2+1)) )) goto 540
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , memd((((
+ * cooout+8)-1)/2+1)) , olng, olat)
+540 continue
+ goto 451
+550 continue
+ if (.not.(memd((((cooin+8)-1)/2+1)) .ne. 2000.0d0)) goto
+ * 560
+ call slprcs (2, memd((((cooin+8)-1)/2+1)) , 2000.0d0,
+ * olng, olat)
+560 continue
+ call slhf5z (olng, olat, slepj(memd((((cooout+10)-1)/2+1)
+ * ) ), olng, olat, pmr, pmd)
+ call slmap (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0
+ * , memd((((cooout+10)-1)/2+1)) , olng, olat)
+ goto 451
+450 continue
+ if (sw0004.lt.1.or.sw0004.gt.5) goto 451
+ goto (460,460,500,530,550),sw0004
+451 continue
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.5) goto 131
+ goto (140,140,280,430,280),sw0001
+131 continue
+100 return
+ end
+c sleceq sl_eceq
+c sleqec sl_eqec
+c sladet sl_adet
+c sleqga sl_eqga
+c slgaeq sl_gaeq
+c slf45z sl_f45z
+c slf54z sl_f54z
+c slhf5z sl_hf5z
+c slf5hz sl_f5hz
+c slgasu sl_gasu
+c slsuga sl_suga
+c skequl sk_equatorial
+c sklltn sk_lltran
+c slprcs sl_prcs
+c skultn sk_ultran
+c slsuet sl_suet
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.x
new file mode 100644
index 00000000..a8cf87c3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/sktransform.x
@@ -0,0 +1,577 @@
+include <math.h>
+include "skywcsdef.h"
+include "skywcs.h"
+
+# SK_ULTRAN -- Transform the sky coordinates from the input coordinate
+# system to the output coordinate system using the units conversions as
+# appropriate.
+
+procedure sk_ultran (cooin, cooout, ilng, ilat, olng, olat, npts)
+
+pointer cooin #I pointer to the input coordinate system structure
+pointer cooout #I pointer to the output coordinate system structure
+double ilng[ARB] #I the input ra/longitude in radians
+double ilat[ARB] #I the input dec/latitude in radians
+double olng[ARB] #O the output ra/longitude in radians
+double olat[ARB] #O the output dec/latitude in radians
+int npts #I the number of points to be converted
+
+double tilng, tilat, tolng, tolat
+int i
+
+begin
+ do i = 1, npts {
+
+ switch (SKY_NLNGUNITS(cooin)) {
+ case SKY_HOURS:
+ tilng = DEGTORAD(15.0d0 * ilng[i])
+ case SKY_DEGREES:
+ tilng = DEGTORAD(ilng[i])
+ case SKY_RADIANS:
+ tilng = ilng[i]
+ default:
+ tilng = ilng[i]
+ }
+ switch (SKY_NLATUNITS(cooin)) {
+ case SKY_HOURS:
+ tilat = DEGTORAD(15.0d0 * ilat[i])
+ case SKY_DEGREES:
+ tilat = DEGTORAD(ilat[i])
+ case SKY_RADIANS:
+ tilat = ilat[i]
+ default:
+ tilat = ilat[i]
+ }
+
+ call sk_lltran (cooin, cooout, tilng, tilat, INDEFD, INDEFD,
+ 0.0d0, 0.0d0, tolng, tolat)
+
+ switch (SKY_NLNGUNITS(cooout)) {
+ case SKY_HOURS:
+ olng[i] = RADTODEG(tolng) / 15.0d0
+ case SKY_DEGREES:
+ olng[i] = RADTODEG(tolng)
+ case SKY_RADIANS:
+ olng[i] = tolng
+ default:
+ olng[i] = tolng
+ }
+ switch (SKY_NLATUNITS(cooout)) {
+ case SKY_HOURS:
+ olat[i] = RADTODEG(tolat) / 15.0d0
+ case SKY_DEGREES:
+ olat[i] = RADTODEG(tolat)
+ case SKY_RADIANS:
+ olat[i] = tolat
+ default:
+ olat[i] = tolat
+ }
+ }
+end
+
+
+# SK_LLTRAN -- Transform the sky coordinate from the input coordinate
+# system to the output coordinate system assuming that all the coordinate
+# are in radians.
+
+procedure sk_lltran (cooin, cooout, ilng, ilat, ipmlng, ipmlat, px, rv,
+ olng, olat)
+
+pointer cooin #I pointer to the input coordinate system structure
+pointer cooout #I pointer to the output coordinate system structure
+double ilng #I the input ra/longitude in radians
+double ilat #I the input dec/latitude in radians
+double ipmlng #I the input proper motion in ra in radians
+double ipmlat #I the input proper motion in dec in radians
+double px #I the input parallax in arcseconds
+double rv #I the input radial velocity in km / second
+double olng #O the output ra/longitude in radians
+double olat #O the output dec/latitude in radians
+
+int pmflag
+double pmr, pmd
+double sl_epj(), sl_epb()
+
+begin
+ # Test for the case where the input coordinate system is the
+ # same as the output coordinate system.
+ if (SKY_CTYPE(cooin) == SKY_CTYPE(cooout)) {
+
+ switch (SKY_CTYPE(cooin)) {
+
+ case CTYPE_EQUATORIAL:
+ call sk_equatorial (cooin, cooout, ilng, ilat, ipmlng,
+ ipmlat, px, rv, olng, olat)
+
+ case CTYPE_ECLIPTIC:
+ if (SKY_EPOCH(cooin) == SKY_EPOCH(cooout)) {
+ olng = ilng
+ olat = ilat
+ } else {
+ call sl_eceq (ilng, ilat, SKY_EPOCH(cooin), olng, olat)
+ call sl_eqec (olng, olat, SKY_EPOCH(cooout), olng, olat)
+ }
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+
+ return
+ }
+
+ # Compute proper motions ?
+ if (! IS_INDEFD(ipmlng) && ! IS_INDEFD(ipmlat))
+ pmflag = YES
+ else
+ pmflag = NO
+
+ # Cover the remaining cases.
+ switch (SKY_CTYPE(cooin)) {
+
+ # The input system is equatorial.
+ case CTYPE_EQUATORIAL:
+
+ switch (SKY_RADECSYS(cooin)) {
+
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epb (SKY_EPOCH(cooin)), sl_epb (SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+ if (SKY_RADECSYS(cooin) == EQTYPE_FK4)
+ call sl_suet (olng, olat, SKY_EQUINOX(cooin), olng, olat)
+ if (SKY_EQUINOX(cooin) != 1950.0d0)
+ call sl_prcs (1, SKY_EQUINOX(cooin), 1950.0d0, olng, olat)
+ call sl_adet (olng, olat, 1950.0d0, olng, olat)
+ if (pmflag == YES)
+ call sl_f45z (olng, olat, sl_epb(SKY_EPOCH(cooout)),
+ olng, olat)
+ else
+ call sl_f45z (olng, olat, sl_epb (SKY_EPOCH(cooin)),
+ olng, olat)
+
+ case EQTYPE_FK5:
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epj (SKY_EPOCH(cooin)), sl_epj(SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+
+ case EQTYPE_ICRS:
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epj (SKY_EPOCH(cooin)), sl_epj(SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_hf5z (olng, olat, 2000.0d0, olng, olat, pmr, pmd)
+
+ case EQTYPE_GAPPT:
+ call sl_amp (ilng, ilat, SKY_EPOCH(cooin), 2000.0d0, olng, olat)
+
+ }
+
+ switch (SKY_CTYPE(cooout)) {
+
+ # The output coordinate system is ecliptic.
+ case CTYPE_ECLIPTIC:
+ call sl_eqec (olng, olat, SKY_EPOCH(cooout), olng, olat)
+
+ # The output coordinate system is galactic.
+ case CTYPE_GALACTIC:
+ call sl_eqga (olng, olat, olng, olat)
+
+ # The output coordinate system is supergalactic.
+ case CTYPE_SUPERGALACTIC:
+ call sl_eqga (olng, olat, olng, olat)
+ call sl_gasu (olng, olat, olng, olat)
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+
+ # The input coordinate system is ecliptic.
+ case CTYPE_ECLIPTIC:
+
+ call sl_eceq (ilng, ilat, SKY_EPOCH(cooin), olng, olat)
+ switch (SKY_CTYPE(cooout)) {
+
+ # The output coordinate system is equatorial.
+ case CTYPE_EQUATORIAL:
+
+ switch (SKY_RADECSYS(cooout)) {
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ call sl_f54z (olng, olat, sl_epb(SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+ if (SKY_RADECSYS(cooout) == EQTYPE_FK4)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_FK5:
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_ICRS:
+ #call sl_f5hz (olng, olat, sl_epj(SKY_EPOCH(cooin)),
+ #olng, olat)
+ call sl_f5hz (olng, olat, 2000.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_GAPPT:
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0,
+ 2000.0d0, SKY_EPOCH(cooout), olng, olat)
+ }
+
+ # The output coordinate system is galactic.
+ case CTYPE_GALACTIC:
+ call sl_eqga (olng, olat, olng, olat)
+
+ # The output system is supergalactic.
+ case CTYPE_SUPERGALACTIC:
+ call sl_eqga (olng, olat, olng, olat)
+ call sl_gasu (olng, olat, olng, olat)
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+
+ # The input coordinate system is galactic.
+ case CTYPE_GALACTIC:
+
+ switch (SKY_CTYPE(cooout)) {
+
+ # The output coordinate system is equatorial.
+ case CTYPE_EQUATORIAL:
+ call sl_gaeq (ilng, ilat, olng, olat)
+
+ switch (SKY_RADECSYS(cooout)) {
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ call sl_f54z (olng, olat, sl_epb(SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+ if (SKY_RADECSYS(cooout) == EQTYPE_FK4)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_FK5:
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_ICRS:
+ call sl_f5hz (olng, olat, 2000.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_GAPPT:
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0,
+ 2000.0d0, SKY_EPOCH(cooout), olng, olat)
+ }
+
+ # The output coordinate system is ecliptic.
+ case CTYPE_ECLIPTIC:
+ call sl_gaeq (ilng, ilat, olng, olat)
+ call sl_eqec (olng, olat, SKY_EPOCH(cooout), olng, olat)
+
+ # The output coordinate system is supergalactic.
+ case CTYPE_SUPERGALACTIC:
+ call sl_gasu (ilng, ilat, olng, olat)
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+
+ # The input coordinates are supergalactic.
+ case CTYPE_SUPERGALACTIC:
+
+ switch (SKY_CTYPE(cooout)) {
+
+ case CTYPE_EQUATORIAL:
+ call sl_suga (ilng, ilat, olng, olat)
+
+ switch (SKY_RADECSYS(cooout)) {
+
+ case EQTYPE_FK4:
+ call sl_gaeq (olng, olat, olng, olat)
+ call sl_f54z (olng, olat, sl_epb (SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout), olng, olat)
+
+ case EQTYPE_FK4NOE:
+ call sl_gaeq (olng, olat, olng, olat)
+ call sl_f54z (olng, olat, sl_epb (SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_FK5:
+ call sl_gaeq (olng, olat, olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_ICRS:
+ call sl_gaeq (olng, olat, olng, olat)
+ call sl_f5hz (olng, olat, 2000.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+
+ case EQTYPE_GAPPT:
+ call sl_gaeq (olng, olat, olng, olat)
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0,
+ 2000.0d0, SKY_EPOCH(cooout), olng, olat)
+ }
+
+ case CTYPE_ECLIPTIC:
+ call sl_suga (ilng, ilat, olng, olat)
+ call sl_gaeq (olng, olat, olng, olat)
+ call sl_eqec (olng, olat, SKY_EPOCH(cooout), olng, olat)
+
+ case CTYPE_GALACTIC:
+ call sl_suga (ilng, ilat, olng, olat)
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+
+ default:
+ olng = ilng
+ olat = ilat
+ }
+end
+
+
+# SK_EQUATORIAL -- Convert / precess equatorial coordinates.
+
+procedure sk_equatorial (cooin, cooout, ilng, ilat, ipmlng, ipmlat,
+ px, rv, olng, olat)
+
+pointer cooin #I the input coordinate system structure
+pointer cooout #I the output coordinate system structure
+double ilng #I the input ra in radians
+double ilat #I the input dec in radians
+double ipmlng #I the input proper motion in ra in radians
+double ipmlat #I the input proper motion in dec in radians
+double px #I the input parallax in arcseconds
+double rv #I the input radial valocity in km / second
+double olng #O the output ra in radians
+double olat #O the output dec in radians
+
+int pmflag
+double pmr, pmd
+double sl_epb(), sl_epj()
+
+begin
+ # Check to see whether or not conversion / precession is necessary.
+ if ((SKY_RADECSYS(cooin) == SKY_RADECSYS(cooout)) &&
+ (SKY_EQUINOX(cooin) == SKY_EQUINOX(cooout)) &&
+ (SKY_EPOCH(cooin) == SKY_EPOCH(cooout))) {
+ olng = ilng
+ olat = ilat
+ return
+ }
+
+ # Compute proper motions ?
+ if (! IS_INDEFD(ipmlng) && ! IS_INDEFD(ipmlat))
+ pmflag = YES
+ else
+ pmflag = NO
+
+ switch (SKY_RADECSYS(cooin)) {
+
+ # The input coordinate system is FK4 with or without the E terms.
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epb (SKY_EPOCH(cooin)), sl_epb (SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+ if (SKY_RADECSYS(cooin) == EQTYPE_FK4)
+ call sl_suet (olng, olat, SKY_EQUINOX(cooin), olng, olat)
+ if (SKY_EQUINOX(cooin) != 1950.0d0)
+ call sl_prcs (1, SKY_EQUINOX(cooin), 1950.0d0, olng, olat)
+ call sl_adet (olng, olat, 1950.0d0, olng, olat)
+ if (pmflag == YES)
+ call sl_f45z (olng, olat, sl_epb (SKY_EPOCH(cooout)),
+ olng, olat)
+ else
+ call sl_f45z (olng, olat, sl_epb (SKY_EPOCH(cooin)),
+ olng, olat)
+
+ switch (SKY_RADECSYS(cooout)) {
+
+ # The output coordinate system is FK4 with and without the E terms.
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ call sl_f54z (olng, olat, sl_epb (SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout),
+ olng, olat)
+ if (SKY_RADECSYS(cooout) == EQTYPE_FK4)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is FK5.
+ case EQTYPE_FK5:
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is ICRS (Hipparcos).
+ case EQTYPE_ICRS:
+ call sl_f5hz (olng, olat, 2000.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is geocentric apparent.
+ case EQTYPE_GAPPT:
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0,
+ SKY_EPOCH(cooout), olng, olat)
+ }
+
+ # The input coordinate system is FK5 or geocentric apparent.
+ case EQTYPE_FK5, EQTYPE_GAPPT:
+
+ if (SKY_RADECSYS(cooin) == EQTYPE_FK5) {
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epj (SKY_EPOCH(cooin)), sl_epj (SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+ } else
+ call sl_amp (ilng, ilat, SKY_EPOCH(cooin), 2000.0d0, olng, olat)
+
+ switch (SKY_RADECSYS(cooout)) {
+
+ # The output coordinate system is FK4 with or without the E terms.
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_f54z (olng, olat, sl_epb(SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout), olng, olat)
+ if (SKY_RADECSYS(cooout) == EQTYPE_FK4)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is FK5.
+ case EQTYPE_FK5:
+ if (SKY_EQUINOX(cooin) != SKY_EQUINOX(cooout))
+ call sl_prcs (2, SKY_EQUINOX(cooin), SKY_EQUINOX(cooout),
+ olng, olat)
+
+ # The output coordinate system is ICRS.
+ case EQTYPE_ICRS:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_f5hz (olng, olat, sl_epj(SKY_EPOCH(cooin)), olng, olat)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is geocentric apparent.
+ case EQTYPE_GAPPT:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0,
+ SKY_EPOCH(cooout), olng, olat)
+ }
+
+ # The input coordinate system is ICRS.
+ case EQTYPE_ICRS:
+
+ if (pmflag == YES) {
+ call sl_pm (ilng, ilat, ipmlng, ipmlat, px, rv,
+ sl_epj (SKY_EPOCH(cooin)), sl_epj (SKY_EPOCH(cooout)),
+ olng, olat)
+ } else {
+ olng = ilng
+ olat = ilat
+ }
+
+ switch (SKY_RADECSYS(cooout)) {
+
+ # The output coordinate system is FK4 with or without the E terms.
+ case EQTYPE_FK4, EQTYPE_FK4NOE:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_hf5z (olng, olat, 2000.0d0, olng, olat,
+ pmr, pmd)
+ call sl_f54z (olng, olat, sl_epb(SKY_EPOCH(cooout)), olng, olat,
+ pmr, pmd)
+ call sl_suet (olng, olat, 1950.0d0, olng, olat)
+ if (SKY_EQUINOX(cooout) != 1950.0d0)
+ call sl_prcs (1, 1950.0d0, SKY_EQUINOX(cooout), olng, olat)
+ if (SKY_RADECSYS(cooout) == EQTYPE_FK4)
+ call sl_adet (olng, olat, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is FK5.
+ case EQTYPE_FK5:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_hf5z (olng, olat, sl_epj(SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ if (SKY_EQUINOX(cooout) != 2000.0d0)
+ call sl_prcs (2, 2000.0d0, SKY_EQUINOX(cooout), olng, olat)
+
+ # The output coordinate system is ICRS.
+ case EQTYPE_ICRS:
+ if (SKY_EQUINOX(cooin) != SKY_EQUINOX(cooout))
+ call sl_prcs (2, SKY_EQUINOX(cooin), SKY_EQUINOX(cooout),
+ olng, olat)
+
+ # The output coordinate system is geocentric apparent.
+ case EQTYPE_GAPPT:
+ if (SKY_EQUINOX(cooin) != 2000.0d0)
+ call sl_prcs (2, SKY_EQUINOX(cooin), 2000.0d0, olng, olat)
+ call sl_hf5z (olng, olat, sl_epj(SKY_EPOCH(cooout)),
+ olng, olat, pmr, pmd)
+ call sl_map (olng, olat, 0.0d0, 0.0d0, px, 0.0d0, 2000.0d0,
+ SKY_EPOCH(cooout), olng, olat)
+
+ }
+
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.f
new file mode 100644
index 00000000..41fd369e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.f
@@ -0,0 +1,45 @@
+ integer function skwrdr (index, outstr, maxch, dict)
+ integer index
+ integer maxch
+ integer*2 outstr(*)
+ integer*2 dict(*)
+ integer i
+ integer len
+ integer start
+ integer count
+ integer xstrln
+ save
+ outstr(1) = 0
+ if (.not.(dict(1) .eq. 0)) goto 110
+ skwrdr = (0)
+ goto 100
+110 continue
+ count = 1
+ len = xstrln(dict)
+ start = 2
+120 if (.not.(count .lt. index)) goto 122
+ if (.not.(dict(start) .eq. dict(1))) goto 130
+ count = count + 1
+130 continue
+ if (.not.(start .eq. len)) goto 140
+ skwrdr = (0)
+ goto 100
+140 continue
+121 start = start + 1
+ goto 120
+122 continue
+ i = start
+150 if (.not.(dict(i) .ne. 0 .and. dict(i) .ne. dict(1))) goto 152
+ if (.not.(i - start + 1 .gt. maxch)) goto 160
+ goto 152
+160 continue
+ outstr(i - start + 1) = dict(i)
+151 i = i + 1
+ goto 150
+152 continue
+ outstr(i - start + 1) = 0
+ skwrdr = (count)
+ goto 100
+100 return
+ end
+c skwrdr sk_wrdstr
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.x
new file mode 100644
index 00000000..a7c6b359
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrdstr.x
@@ -0,0 +1,53 @@
+
+# SK_WRDSTR -- Search a dictionary string for a given string index number.
+# This is the opposite function of strdic(), that returns the index for
+# given string. The entries in the dictionary string are separated by
+# a delimiter character which is the first character of the dictionary
+# string. The index of the string found is returned as the function value.
+# Otherwise, if there is no string for that index, a zero is returned.
+
+int procedure sk_wrdstr (index, outstr, maxch, dict)
+
+int index #I the string index
+char outstr[ARB] #O the output string as found in dictionary
+int maxch #I the maximum length of output string
+char dict[ARB] #I the dictionary string
+
+int i, len, start, count
+
+int strlen()
+
+begin
+ # Clear output string
+ outstr[1] = EOS
+
+ # Return if the dictionary is not long enough
+ if (dict[1] == EOS)
+ return (0)
+
+ # Initialize counters
+ count = 1
+ len = strlen (dict)
+
+ # Search the dictionary string. This loop only terminates
+ # successfully if the index is found. Otherwise the procedure
+ # returns with and error condition.
+ for (start = 2; count < index; start = start + 1) {
+ if (dict[start] == dict[1])
+ count = count + 1
+ if (start == len)
+ return (0)
+ }
+
+ # Extract the output string from the dictionary
+ for (i = start; dict[i] != EOS && dict[i] != dict[1]; i = i + 1) {
+ if (i - start + 1 > maxch)
+ break
+ outstr[i - start + 1] = dict[i]
+ }
+
+ outstr[i - start + 1] = EOS
+
+ # Return index for output string
+ return (count)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.f b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.f
new file mode 100644
index 00000000..223f8f1e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.f
@@ -0,0 +1,1014 @@
+ subroutine skiipt (label, images, mw, coo)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer mw
+ integer coo
+ integer*2 label(*)
+ integer*2 images(*)
+ save
+ if (.not.(mw .eq. 0)) goto 110
+ call skinpt (label, images, memi(coo+12) , memi(coo+13) ,
+ * memd((((coo+8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+ goto 111
+110 continue
+ call skimpt (label, images, memi(coo+12) , memi(coo+15) ,
+ * memi(coo+16) , memi(coo+14) , memi(coo+19) , memi(coo+13) ,
+ * memd((((coo+8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+111 continue
+100 return
+ end
+ subroutine skiiwe (fd, label, images, mw, coo)
+ integer fd
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer mw
+ integer coo
+ integer*2 label(*)
+ integer*2 images(*)
+ save
+ if (.not.(mw .eq. 0)) goto 110
+ call skinwe (fd, label, images, memi(coo+12) , memi(coo+13)
+ * , memd((((coo+8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+ goto 111
+110 continue
+ call skimwe (fd, label, images, memi(coo+12) , memi(coo+15)
+ * , memi(coo+16) , memi(coo+14) , memi(coo+19) , memi(coo+13)
+ * , memd((((coo+8)-1)/2+1)) , memd((((coo+10)-1)/2+1)) )
+111 continue
+100 return
+ end
+ subroutine skinpt (label, system, ctype, radecs, equinx, epoch)
+ integer ctype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer*2 label(*)
+ integer*2 system(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer radecr
+ double precision slepj
+ double precision slepb
+ integer skwrdr
+ integer sw0001,sw0002
+ integer*2 st0001(30)
+ integer*2 st0002(4)
+ integer*2 st0003(36)
+ integer*2 st0004(37)
+ integer*2 st0005(46)
+ integer*2 st0006(46)
+ integer*2 st0007(31)
+ integer*2 st0008(37)
+ integer*2 st0009(31)
+ integer*2 st0010(37)
+ integer*2 st0011(36)
+ integer*2 st0012(37)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0001(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0001(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0001(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0002 / 70, 75, 53, 0/
+ data (st0003(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 32/
+ data (st0003(iyy),iyy= 9,16) / 67,111,111,114,100,105,110, 97/
+ data (st0003(iyy),iyy=17,24) /116,101,115, 58, 32,101,113,117/
+ data (st0003(iyy),iyy=25,32) / 97,116,111,114,105, 97,108, 32/
+ data (st0003(iyy),iyy=33,36) / 37,115, 10, 0/
+ data (st0004(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0004(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0004(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0004(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0004(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ data (st0005(iyy),iyy= 1, 8) / 32, 32, 32, 32, 69,113,117,105/
+ data (st0005(iyy),iyy= 9,16) /110,111,120, 58, 32, 74, 37, 48/
+ data (st0005(iyy),iyy=17,24) / 46, 51,102, 32, 69,112,111, 99/
+ data (st0005(iyy),iyy=25,32) /104, 58, 32, 74, 37, 48, 46, 56/
+ data (st0005(iyy),iyy=33,40) /102, 32, 77, 74, 68, 58, 32, 37/
+ data (st0005(iyy),iyy=41,46) / 48, 46, 53,102, 10, 0/
+ data (st0006(iyy),iyy= 1, 8) / 32, 32, 32, 32, 69,113,117,105/
+ data (st0006(iyy),iyy= 9,16) /110,111,120, 58, 32, 66, 37, 48/
+ data (st0006(iyy),iyy=17,24) / 46, 51,102, 32, 69,112,111, 99/
+ data (st0006(iyy),iyy=25,32) /104, 58, 32, 66, 37, 48, 46, 56/
+ data (st0006(iyy),iyy=33,40) /102, 32, 77, 74, 68, 58, 32, 37/
+ data (st0006(iyy),iyy=41,46) / 48, 46, 53,102, 10, 0/
+ data (st0007(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 32/
+ data (st0007(iyy),iyy= 9,16) / 67,111,111,114,100,105,110, 97/
+ data (st0007(iyy),iyy=17,24) /116,101,115, 58, 32,101, 99,108/
+ data (st0007(iyy),iyy=25,31) /105,112,116,105, 99, 10, 0/
+ data (st0008(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0008(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0008(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0008(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0008(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ data (st0009(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 32/
+ data (st0009(iyy),iyy= 9,16) / 67,111,111,114,100,105,110, 97/
+ data (st0009(iyy),iyy=17,24) /116,101,115, 58, 32,103, 97,108/
+ data (st0009(iyy),iyy=25,31) / 97, 99,116,105, 99, 10, 0/
+ data (st0010(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0010(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0010(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0010(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0010(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 32/
+ data (st0011(iyy),iyy= 9,16) / 67,111,111,114,100,105,110, 97/
+ data (st0011(iyy),iyy=17,24) /116,101,115, 58, 32,115,117,112/
+ data (st0011(iyy),iyy=25,32) /101,114,103, 97,108, 97, 99,116/
+ data (st0011(iyy),iyy=33,36) /105, 99, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0012(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0012(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0012(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0012(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ call smark (sp)
+ call salloc (radecr, 255 , 2)
+ sw0001=(ctype)
+ goto 110
+120 continue
+ if (.not.(skwrdr (radecs, memc(radecr), 255 , st0001) .le. 0
+ * )) goto 130
+ call xstrcy(st0002, memc(radecr), 255 )
+130 continue
+ call strupr (memc(radecr))
+ call xprinf(st0003)
+ call pargsr (label)
+ call pargsr (system)
+ call pargsr (memc(radecr))
+ sw0002=(radecs)
+ goto 140
+150 continue
+ call xprinf(st0004)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 160
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 161
+160 continue
+ call pargd (slepj (epoch))
+ call pargd (slepb (epoch))
+161 continue
+ goto 141
+170 continue
+ call xprinf(st0005)
+ call pargd (equinx)
+ call pargd (slepj(epoch))
+ call pargd (epoch)
+ goto 141
+180 continue
+ call xprinf(st0006)
+ call pargd (equinx)
+ call pargd (slepb(epoch))
+ call pargd (epoch)
+ goto 141
+140 continue
+ sw0002=sw0002-2
+ if (sw0002.lt.1.or.sw0002.gt.3) goto 180
+ goto (170,170,150),sw0002
+141 continue
+ goto 111
+190 continue
+ call xprinf(st0007)
+ call pargsr (label)
+ call pargsr (system)
+ call xprinf(st0008)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 200
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 201
+200 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+201 continue
+ goto 111
+210 continue
+ call xprinf(st0009)
+ call pargsr (label)
+ call pargsr (system)
+ call xprinf(st0010)
+ call pargd (epoch)
+ call pargd (slepj (epoch))
+ call pargd (slepb (epoch))
+ goto 111
+220 continue
+ call xprinf(st0011)
+ call pargsr (label)
+ call pargsr (system)
+ call xprinf(st0012)
+ call pargd (epoch)
+ call pargd (slepj (epoch))
+ call pargd (slepb (epoch))
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 111
+ goto (120,190,210,220),sw0001
+111 continue
+ call sfree (sp)
+100 return
+ end
+ subroutine skinwe (fd, label, system, ctype, radecs, equinx, epoch
+ *)
+ integer fd
+ integer ctype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer*2 label(*)
+ integer*2 system(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer radecr
+ double precision slepj
+ double precision slepb
+ integer skwrdr
+ integer sw0001,sw0002
+ integer*2 st0001(30)
+ integer*2 st0002(4)
+ integer*2 st0003(38)
+ integer*2 st0004(39)
+ integer*2 st0005(48)
+ integer*2 st0006(48)
+ integer*2 st0007(33)
+ integer*2 st0008(39)
+ integer*2 st0009(33)
+ integer*2 st0010(39)
+ integer*2 st0011(38)
+ integer*2 st0012(39)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0001(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0001(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0001(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0002 / 70, 75, 53, 0/
+ data (st0003(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0003(iyy),iyy= 9,16) / 32, 32, 67,111,111,114,100,105/
+ data (st0003(iyy),iyy=17,24) /110, 97,116,101,115, 58, 32,101/
+ data (st0003(iyy),iyy=25,32) /113,117, 97,116,111,114,105, 97/
+ data (st0003(iyy),iyy=33,38) /108, 32, 37,115, 10, 0/
+ data (st0004(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0004(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0004(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0004(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0004(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ data (st0005(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 69,113/
+ data (st0005(iyy),iyy= 9,16) /117,105,110,111,120, 58, 32, 74/
+ data (st0005(iyy),iyy=17,24) / 37, 48, 46, 51,102, 32, 69,112/
+ data (st0005(iyy),iyy=25,32) /111, 99,104, 58, 32, 74, 37, 48/
+ data (st0005(iyy),iyy=33,40) / 46, 56,102, 32, 77, 74, 68, 58/
+ data (st0005(iyy),iyy=41,48) / 32, 37, 48, 46, 53,102, 10, 0/
+ data (st0006(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 69,113/
+ data (st0006(iyy),iyy= 9,16) /117,105,110,111,120, 58, 32, 66/
+ data (st0006(iyy),iyy=17,24) / 37, 48, 46, 51,102, 32, 69,112/
+ data (st0006(iyy),iyy=25,32) /111, 99,104, 58, 32, 66, 37, 48/
+ data (st0006(iyy),iyy=33,40) / 46, 56,102, 32, 77, 74, 68, 58/
+ data (st0006(iyy),iyy=41,48) / 32, 37, 48, 46, 53,102, 10, 0/
+ data (st0007(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0007(iyy),iyy= 9,16) / 32, 32, 67,111,111,114,100,105/
+ data (st0007(iyy),iyy=17,24) /110, 97,116,101,115, 58, 32,101/
+ data (st0007(iyy),iyy=25,32) / 99,108,105,112,116,105, 99, 10/
+ data (st0007(iyy),iyy=33,33) / 0/
+ data (st0008(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0008(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0008(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0008(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0008(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ data (st0009(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0009(iyy),iyy= 9,16) / 32, 32, 67,111,111,114,100,105/
+ data (st0009(iyy),iyy=17,24) /110, 97,116,101,115, 58, 32,103/
+ data (st0009(iyy),iyy=25,32) / 97,108, 97, 99,116,105, 99, 10/
+ data (st0009(iyy),iyy=33,33) / 0/
+ data (st0010(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0010(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0010(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0010(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0010(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0011(iyy),iyy= 9,16) / 32, 32, 67,111,111,114,100,105/
+ data (st0011(iyy),iyy=17,24) /110, 97,116,101,115, 58, 32,115/
+ data (st0011(iyy),iyy=25,32) /117,112,101,114,103, 97,108, 97/
+ data (st0011(iyy),iyy=33,38) / 99,116,105, 99, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0012(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0012(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0012(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0012(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ call smark (sp)
+ call salloc (radecr, 255 , 2)
+ sw0001=(ctype)
+ goto 110
+120 continue
+ if (.not.(skwrdr (radecs, memc(radecr), 255 , st0001) .le. 0
+ * )) goto 130
+ call xstrcy(st0002, memc(radecr), 255 )
+130 continue
+ call strupr (memc(radecr))
+ call fprinf (fd, st0003)
+ call pargsr (label)
+ call pargsr (system)
+ call pargsr (memc(radecr))
+ sw0002=(radecs)
+ goto 140
+150 continue
+ call fprinf (fd, st0004)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 160
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 161
+160 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+161 continue
+ goto 141
+170 continue
+ call fprinf (fd, st0005)
+ call pargd (equinx)
+ call pargd (slepj(epoch))
+ call pargd (epoch)
+ goto 141
+180 continue
+ call fprinf (fd, st0006)
+ call pargd (equinx)
+ call pargd (slepb(epoch))
+ call pargd (epoch)
+ goto 141
+140 continue
+ sw0002=sw0002-2
+ if (sw0002.lt.1.or.sw0002.gt.3) goto 180
+ goto (170,170,150),sw0002
+141 continue
+ goto 111
+190 continue
+ call fprinf (fd, st0007)
+ call pargsr (label)
+ call pargsr (system)
+ call fprinf (fd, st0008)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 200
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 201
+200 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+201 continue
+ goto 111
+210 continue
+ call fprinf (fd, st0009)
+ call pargsr (label)
+ call pargsr (system)
+ call fprinf (fd, st0010)
+ call pargd (epoch)
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+ goto 111
+220 continue
+ call fprinf (fd, st0011)
+ call pargsr (label)
+ call pargsr (system)
+ call fprinf (fd, st0012)
+ call pargd (epoch)
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 111
+ goto (120,190,210,220),sw0001
+111 continue
+ call sfree (sp)
+100 return
+ end
+ subroutine skimpt (label, images, ctype, lngax, latax, wtype,
+ *ptype, radecs, equinx, epoch)
+ integer ctype
+ integer lngax
+ integer latax
+ integer wtype
+ integer ptype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer*2 label(*)
+ integer*2 images(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer imname
+ integer projsr
+ integer wcsstr
+ integer radecr
+ double precision slepj
+ double precision slepb
+ integer skwrdr
+ integer sw0001,sw0002
+ integer*2 st0001(114)
+ integer*2 st0002(7)
+ integer*2 st0003(28)
+ integer*2 st0004(6)
+ integer*2 st0005(30)
+ integer*2 st0006(4)
+ integer*2 st0007(47)
+ integer*2 st0008(32)
+ integer*2 st0009(37)
+ integer*2 st0010(48)
+ integer*2 st0011(30)
+ integer*2 st0012(48)
+ integer*2 st0013(30)
+ integer*2 st0014(51)
+ integer*2 st0015(27)
+ integer*2 st0016(37)
+ integer*2 st0017(51)
+ integer*2 st0018(27)
+ integer*2 st0019(38)
+ integer*2 st0020(51)
+ integer*2 st0021(32)
+ integer*2 st0022(37)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0001(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0001(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0001(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0001(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0001(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0001(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0001(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0001(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0001(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0001(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0001(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0001(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0001(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0001(iyy),iyy=113,114) /124, 0/
+ data st0002 /108,105,110,101, 97,114, 0/
+ data (st0003(iyy),iyy= 1, 8) /124,108,111,103,105, 99, 97,108/
+ data (st0003(iyy),iyy= 9,16) /124,116,118,124,112,104,121,115/
+ data (st0003(iyy),iyy=17,24) /105, 99, 97,108,124,119,111,114/
+ data (st0003(iyy),iyy=25,28) /108,100,124, 0/
+ data st0004 /119,111,114,108,100, 0/
+ data (st0005(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0005(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0005(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0005(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0006 / 70, 75, 53, 0/
+ data (st0007(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 37/
+ data (st0007(iyy),iyy= 9,16) /115, 32, 32, 80,114,111,106,101/
+ data (st0007(iyy),iyy=17,24) / 99,116,105,111,110, 58, 32, 37/
+ data (st0007(iyy),iyy=25,32) /115, 32, 32, 82, 97, 47, 68,101/
+ data (st0007(iyy),iyy=33,40) / 99, 32, 97,120,101,115, 58, 32/
+ data (st0007(iyy),iyy=41,47) / 37,100, 47, 37,100, 10, 0/
+ data (st0008(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0008(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0008(iyy),iyy=17,24) / 32,101,113,117, 97,116,111,114/
+ data (st0008(iyy),iyy=25,32) /105, 97,108, 32, 37,115, 10, 0/
+ data (st0009(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0009(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0009(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0009(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0009(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ data (st0010(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0010(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0010(iyy),iyy=17,24) / 32,101,113,117, 97,116,111,114/
+ data (st0010(iyy),iyy=25,32) /105, 97,108, 32, 37,115, 32, 69/
+ data (st0010(iyy),iyy=33,40) /113,117,105,110,111,120, 58, 32/
+ data (st0010(iyy),iyy=41,48) / 74, 37, 48, 46, 51,102, 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 32, 32, 32, 32, 69,112,111, 99/
+ data (st0011(iyy),iyy= 9,16) /104, 58, 32, 74, 37, 48, 46, 56/
+ data (st0011(iyy),iyy=17,24) /102, 32, 77, 74, 68, 58, 32, 37/
+ data (st0011(iyy),iyy=25,30) / 48, 46, 53,102, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0012(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0012(iyy),iyy=17,24) / 32,101,113,117, 97,116,111,114/
+ data (st0012(iyy),iyy=25,32) /105, 97,108, 32, 37,115, 32, 69/
+ data (st0012(iyy),iyy=33,40) /113,117,105,110,111,120, 58, 32/
+ data (st0012(iyy),iyy=41,48) / 66, 37, 48, 46, 51,102, 10, 0/
+ data (st0013(iyy),iyy= 1, 8) / 32, 32, 32, 32, 69,112,111, 99/
+ data (st0013(iyy),iyy= 9,16) /104, 58, 32, 66, 37, 48, 46, 56/
+ data (st0013(iyy),iyy=17,24) /102, 32, 77, 74, 68, 58, 32, 37/
+ data (st0013(iyy),iyy=25,30) / 48, 46, 53,102, 10, 0/
+ data (st0014(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 37/
+ data (st0014(iyy),iyy= 9,16) /115, 32, 32, 80,114,111,106,101/
+ data (st0014(iyy),iyy=17,24) / 99,116,105,111,110, 58, 32, 37/
+ data (st0014(iyy),iyy=25,32) /115, 32, 32, 69,108,111,110,103/
+ data (st0014(iyy),iyy=33,40) / 47, 69,108, 97,116, 32, 97,120/
+ data (st0014(iyy),iyy=41,48) /101,115, 58, 32, 37,100, 47, 37/
+ data (st0014(iyy),iyy=49,51) /100, 10, 0/
+ data (st0015(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0015(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0015(iyy),iyy=17,24) / 32,101, 99,108,105,112,116,105/
+ data (st0015(iyy),iyy=25,27) / 99, 10, 0/
+ data (st0016(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0016(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0016(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0016(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0016(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ data (st0017(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 37/
+ data (st0017(iyy),iyy= 9,16) /115, 32, 32, 80,114,111,106,101/
+ data (st0017(iyy),iyy=17,24) / 99,116,105,111,110, 58, 32, 37/
+ data (st0017(iyy),iyy=25,32) /115, 32, 32, 71,108,111,110,103/
+ data (st0017(iyy),iyy=33,40) / 47, 71,108, 97,116, 32, 97,120/
+ data (st0017(iyy),iyy=41,48) /101,115, 58, 32, 37,100, 47, 37/
+ data (st0017(iyy),iyy=49,51) /100, 10, 0/
+ data (st0018(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0018(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0018(iyy),iyy=17,24) / 32,103, 97,108, 97, 99,116,105/
+ data (st0018(iyy),iyy=25,27) / 99, 10, 0/
+ data (st0019(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0019(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 32/
+ data (st0019(iyy),iyy=17,24) / 69,112,111, 99,104, 58, 32, 74/
+ data (st0019(iyy),iyy=25,32) / 37, 48, 46, 56,102, 32, 66, 37/
+ data (st0019(iyy),iyy=33,38) / 48, 46, 56,102, 10, 0/
+ data (st0020(iyy),iyy= 1, 8) / 37,115, 58, 32, 37,115, 32, 37/
+ data (st0020(iyy),iyy= 9,16) /115, 32, 32, 80,114,111,106,101/
+ data (st0020(iyy),iyy=17,24) / 99,116,105,111,110, 58, 32, 37/
+ data (st0020(iyy),iyy=25,32) /115, 32, 32, 83,108,111,110,103/
+ data (st0020(iyy),iyy=33,40) / 47, 83,108, 97,116, 32, 97,120/
+ data (st0020(iyy),iyy=41,48) /101,115, 58, 32, 37,100, 47, 37/
+ data (st0020(iyy),iyy=49,51) /100, 10, 0/
+ data (st0021(iyy),iyy= 1, 8) / 32, 32, 32, 32, 67,111,111,114/
+ data (st0021(iyy),iyy= 9,16) /100,105,110, 97,116,101,115, 58/
+ data (st0021(iyy),iyy=17,24) / 32,115,117,112,101,114,103, 97/
+ data (st0021(iyy),iyy=25,32) /108, 97, 99,116,105, 99, 10, 0/
+ data (st0022(iyy),iyy= 1, 8) / 32, 32, 32, 32, 77, 74, 68, 58/
+ data (st0022(iyy),iyy= 9,16) / 32, 37, 48, 46, 53,102, 32, 69/
+ data (st0022(iyy),iyy=17,24) /112,111, 99,104, 58, 32, 74, 37/
+ data (st0022(iyy),iyy=25,32) / 48, 46, 56,102, 32, 66, 37, 48/
+ data (st0022(iyy),iyy=33,37) / 46, 56,102, 10, 0/
+ call smark (sp)
+ call salloc (imname, 255 , 2)
+ call salloc (projsr, 255 , 2)
+ call salloc (wcsstr, 255 , 2)
+ call salloc (radecr, 255 , 2)
+ call sscan (images)
+ call gargwd (memc(imname), 255 )
+ if (.not.(skwrdr (wtype, memc(projsr), 255 , st0001) .le. 0))
+ * goto 110
+ call xstrcy(st0002, memc(projsr), 255 )
+110 continue
+ call strupr (memc(projsr))
+ if (.not.(skwrdr (ptype, memc(wcsstr), 255 , st0003) .le. 0))
+ * goto 120
+ call xstrcy(st0004, memc(wcsstr), 255 )
+120 continue
+ call strlwr (memc(wcsstr))
+ sw0001=(ctype)
+ goto 130
+140 continue
+ if (.not.(skwrdr (radecs, memc(radecr), 255 , st0005) .le. 0
+ * )) goto 150
+ call xstrcy(st0006, memc(radecr), 255 )
+150 continue
+ call strupr (memc(radecr))
+ call xprinf( st0007)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ sw0002=(radecs)
+ goto 160
+170 continue
+ call xprinf(st0008)
+ call pargsr (memc(radecr))
+ call xprinf(st0009)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 180
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 181
+180 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+181 continue
+ goto 161
+190 continue
+ call xprinf(st0010)
+ call pargsr (memc(radecr))
+ call pargd (equinx)
+ call xprinf(st0011)
+ call pargd (slepj (epoch))
+ call pargd (epoch)
+ goto 161
+200 continue
+ call xprinf(st0012)
+ call pargsr (memc(radecr))
+ call pargd (equinx)
+ call xprinf(st0013)
+ call pargd (slepb (epoch))
+ call pargd (epoch)
+ goto 161
+160 continue
+ sw0002=sw0002-2
+ if (sw0002.lt.1.or.sw0002.gt.3) goto 200
+ goto (190,190,170),sw0002
+161 continue
+ goto 131
+210 continue
+ call xprinf( st0014)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call xprinf(st0015)
+ call xprinf(st0016)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 220
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 221
+220 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+221 continue
+ goto 131
+230 continue
+ call xprinf( st0017)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call xprinf(st0018)
+ call xprinf(st0019)
+ call pargd (epoch)
+ call pargd (slepj (epoch))
+ call pargd (slepb (epoch))
+ goto 131
+240 continue
+ call xprinf( st0020)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call xprinf(st0021)
+ call xprinf(st0022)
+ call pargd (epoch)
+ call pargd (slepj (epoch))
+ call pargd (slepb (epoch))
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 131
+ goto (140,210,230,240),sw0001
+131 continue
+ call sfree (sp)
+100 return
+ end
+ subroutine skimwe (fd, label, images, ctype, lngax, latax, wtype,
+ *ptype, radecs, equinx, epoch)
+ integer fd
+ integer ctype
+ integer lngax
+ integer latax
+ integer wtype
+ integer ptype
+ integer radecs
+ double precision equinx
+ double precision epoch
+ integer*2 label(*)
+ integer*2 images(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer imname
+ integer projsr
+ integer wcsstr
+ integer radecr
+ double precision slepj
+ double precision slepb
+ integer skwrdr
+ integer sw0001,sw0002
+ integer*2 st0001(114)
+ integer*2 st0002(7)
+ integer*2 st0003(28)
+ integer*2 st0004(6)
+ integer*2 st0005(30)
+ integer*2 st0006(4)
+ integer*2 st0007(49)
+ integer*2 st0008(34)
+ integer*2 st0009(39)
+ integer*2 st0010(50)
+ integer*2 st0011(32)
+ integer*2 st0012(50)
+ integer*2 st0013(32)
+ integer*2 st0014(53)
+ integer*2 st0015(29)
+ integer*2 st0016(40)
+ integer*2 st0017(53)
+ integer*2 st0018(29)
+ integer*2 st0019(39)
+ integer*2 st0020(53)
+ integer*2 st0021(34)
+ integer*2 st0022(39)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0001(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0001(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0001(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0001(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0001(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0001(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0001(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0001(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0001(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0001(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0001(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0001(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0001(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0001(iyy),iyy=113,114) /124, 0/
+ data st0002 /108,105,110,101, 97,114, 0/
+ data (st0003(iyy),iyy= 1, 8) /124,108,111,103,105, 99, 97,108/
+ data (st0003(iyy),iyy= 9,16) /124,116,118,124,112,104,121,115/
+ data (st0003(iyy),iyy=17,24) /105, 99, 97,108,124,119,111,114/
+ data (st0003(iyy),iyy=25,28) /108,100,124, 0/
+ data st0004 /119,111,114,108,100, 0/
+ data (st0005(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0005(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0005(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0005(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0006 / 70, 75, 53, 0/
+ data (st0007(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0007(iyy),iyy= 9,16) / 32, 37,115, 32, 32, 80,114,111/
+ data (st0007(iyy),iyy=17,24) /106,101, 99,116,105,111,110, 58/
+ data (st0007(iyy),iyy=25,32) / 32, 37,115, 32, 32, 82, 97, 47/
+ data (st0007(iyy),iyy=33,40) / 68,101, 99, 32, 97,120,101,115/
+ data (st0007(iyy),iyy=41,48) / 58, 32, 37,100, 47, 37,100, 10/
+ data (st0007(iyy),iyy=49,49) / 0/
+ data (st0008(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0008(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0008(iyy),iyy=17,24) /115, 58, 32,101,113,117, 97,116/
+ data (st0008(iyy),iyy=25,32) /111,114,105, 97,108, 32, 37,115/
+ data (st0008(iyy),iyy=33,34) / 10, 0/
+ data (st0009(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0009(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0009(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0009(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0009(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ data (st0010(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0010(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0010(iyy),iyy=17,24) /115, 58, 32,101,113,117, 97,116/
+ data (st0010(iyy),iyy=25,32) /111,114,105, 97,108, 32, 37,115/
+ data (st0010(iyy),iyy=33,40) / 32, 69,113,117,105,110,111,120/
+ data (st0010(iyy),iyy=41,48) / 58, 32, 74, 37, 48, 46, 51,102/
+ data (st0010(iyy),iyy=49,50) / 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 69,112/
+ data (st0011(iyy),iyy= 9,16) /111, 99,104, 58, 32, 74, 37, 48/
+ data (st0011(iyy),iyy=17,24) / 46, 56,102, 32, 77, 74, 68, 58/
+ data (st0011(iyy),iyy=25,32) / 32, 37, 48, 46, 53,102, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0012(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0012(iyy),iyy=17,24) /115, 58, 32,101,113,117, 97,116/
+ data (st0012(iyy),iyy=25,32) /111,114,105, 97,108, 32, 37,115/
+ data (st0012(iyy),iyy=33,40) / 32, 69,113,117,105,110,111,120/
+ data (st0012(iyy),iyy=41,48) / 58, 32, 66, 37, 48, 46, 51,102/
+ data (st0012(iyy),iyy=49,50) / 10, 0/
+ data (st0013(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 69,112/
+ data (st0013(iyy),iyy= 9,16) /111, 99,104, 58, 32, 66, 37, 48/
+ data (st0013(iyy),iyy=17,24) / 46, 56,102, 32, 77, 74, 68, 58/
+ data (st0013(iyy),iyy=25,32) / 32, 37, 48, 46, 53,102, 10, 0/
+ data (st0014(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0014(iyy),iyy= 9,16) / 32, 37,115, 32, 32, 80,114,111/
+ data (st0014(iyy),iyy=17,24) /106,101, 99,116,105,111,110, 58/
+ data (st0014(iyy),iyy=25,32) / 32, 37,115, 32, 32, 69,108,111/
+ data (st0014(iyy),iyy=33,40) /110,103, 47, 69,108, 97,116, 32/
+ data (st0014(iyy),iyy=41,48) / 97,120,101,115, 58, 32, 37,100/
+ data (st0014(iyy),iyy=49,53) / 47, 37,100, 10, 0/
+ data (st0015(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0015(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0015(iyy),iyy=17,24) /115, 58, 32,101, 99,108,105,112/
+ data (st0015(iyy),iyy=25,29) /116,105, 99, 10, 0/
+ data (st0016(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0016(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0016(iyy),iyy=17,24) / 32, 32, 69,112,111, 99,104, 58/
+ data (st0016(iyy),iyy=25,32) / 32, 74, 37, 48, 46, 56,102, 32/
+ data (st0016(iyy),iyy=33,40) / 66, 37, 48, 46, 56,102, 10, 0/
+ data (st0017(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0017(iyy),iyy= 9,16) / 32, 37,115, 32, 32, 80,114,111/
+ data (st0017(iyy),iyy=17,24) /106,101, 99,116,105,111,110, 58/
+ data (st0017(iyy),iyy=25,32) / 32, 37,115, 32, 32, 71,108,111/
+ data (st0017(iyy),iyy=33,40) /110,103, 47, 71,108, 97,116, 32/
+ data (st0017(iyy),iyy=41,48) / 97,120,101,115, 58, 32, 37,100/
+ data (st0017(iyy),iyy=49,53) / 47, 37,100, 10, 0/
+ data (st0018(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0018(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0018(iyy),iyy=17,24) /115, 58, 32,103, 97,108, 97, 99/
+ data (st0018(iyy),iyy=25,29) /116,105, 99, 10, 0/
+ data (st0019(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0019(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0019(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0019(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0019(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ data (st0020(iyy),iyy= 1, 8) / 35, 32, 37,115, 58, 32, 37,115/
+ data (st0020(iyy),iyy= 9,16) / 32, 37,115, 32, 32, 80,114,111/
+ data (st0020(iyy),iyy=17,24) /106,101, 99,116,105,111,110, 58/
+ data (st0020(iyy),iyy=25,32) / 32, 37,115, 32, 32, 83,108,111/
+ data (st0020(iyy),iyy=33,40) /110,103, 47, 83,108, 97,116, 32/
+ data (st0020(iyy),iyy=41,48) / 97,120,101,115, 58, 32, 37,100/
+ data (st0020(iyy),iyy=49,53) / 47, 37,100, 10, 0/
+ data (st0021(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 67,111/
+ data (st0021(iyy),iyy= 9,16) /111,114,100,105,110, 97,116,101/
+ data (st0021(iyy),iyy=17,24) /115, 58, 32,115,117,112,101,114/
+ data (st0021(iyy),iyy=25,32) /103, 97,108, 97, 99,116,105, 99/
+ data (st0021(iyy),iyy=33,34) / 10, 0/
+ data (st0022(iyy),iyy= 1, 8) / 35, 32, 32, 32, 32, 32, 77, 74/
+ data (st0022(iyy),iyy= 9,16) / 68, 58, 32, 37, 48, 46, 53,102/
+ data (st0022(iyy),iyy=17,24) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0022(iyy),iyy=25,32) / 74, 37, 48, 46, 56,102, 32, 66/
+ data (st0022(iyy),iyy=33,39) / 37, 48, 46, 56,102, 10, 0/
+ call smark (sp)
+ call salloc (imname, 255 , 2)
+ call salloc (projsr, 255 , 2)
+ call salloc (wcsstr, 255 , 2)
+ call salloc (radecr, 255 , 2)
+ call sscan (images)
+ call gargwd (memc(imname), 255 )
+ if (.not.(skwrdr (wtype, memc(projsr), 255 , st0001) .le. 0))
+ * goto 110
+ call xstrcy(st0002, memc(projsr), 255 )
+110 continue
+ call strupr (memc(projsr))
+ if (.not.(skwrdr (ptype, memc(wcsstr), 255 , st0003) .le. 0))
+ * goto 120
+ call xstrcy(st0004, memc(wcsstr), 255 )
+120 continue
+ call strlwr (memc(wcsstr))
+ sw0001=(ctype)
+ goto 130
+140 continue
+ if (.not.(skwrdr (radecs, memc(radecr), 255 , st0005) .le. 0
+ * )) goto 150
+ call xstrcy(st0006, memc(radecr), 255 )
+150 continue
+ call strupr (memc(radecr))
+ call fprinf (fd, st0007)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ sw0002=(radecs)
+ goto 160
+170 continue
+ call fprinf (fd, st0008)
+ call pargsr (memc(radecr))
+ call fprinf (fd, st0009)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 180
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 181
+180 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+181 continue
+ goto 161
+190 continue
+ call fprinf (fd, st0010)
+ call pargsr (memc(radecr))
+ call pargd (equinx)
+ call fprinf (fd, st0011)
+ call pargd (slepj(epoch))
+ call pargd (epoch)
+ goto 161
+200 continue
+ call fprinf (fd, st0012)
+ call pargsr (memc(radecr))
+ call pargd (equinx)
+ call fprinf (fd, st0013)
+ call pargd (slepb (epoch))
+ call pargd (epoch)
+ goto 161
+160 continue
+ sw0002=sw0002-2
+ if (sw0002.lt.1.or.sw0002.gt.3) goto 200
+ goto (190,190,170),sw0002
+161 continue
+ goto 131
+210 continue
+ call fprinf (fd, st0014)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call fprinf (fd, st0015)
+ call fprinf (fd, st0016)
+ call pargd (epoch)
+ if (.not.(((epoch).eq.1.6d308))) goto 220
+ call pargd (1.6d308)
+ call pargd (1.6d308)
+ goto 221
+220 continue
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+221 continue
+ goto 131
+230 continue
+ call fprinf (fd, st0017)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call fprinf (fd, st0018)
+ call fprinf (fd, st0019)
+ call pargd (epoch)
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+ goto 131
+240 continue
+ call fprinf (fd, st0020)
+ call pargsr (label)
+ call pargsr (memc(imname))
+ call pargsr (memc(wcsstr))
+ call pargsr (memc(projsr))
+ call pargi (lngax)
+ call pargi (latax)
+ call fprinf (fd, st0021)
+ call fprinf (fd, st0022)
+ call pargd (epoch)
+ call pargd (slepj(epoch))
+ call pargd (slepb(epoch))
+ goto 131
+130 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 131
+ goto (140,210,230,240),sw0001
+131 continue
+ call sfree (sp)
+100 return
+ end
+c radecs radecsys
+c equinx equinox
+c images imagesys
+c skwrdr sk_wrdstr
+c skiiwe sk_iiwrite
+c skiipt sk_iiprint
+c skimwe sk_imwrite
+c skinwe sk_inwrite
+c skimpt sk_imprint
+c skinpt sk_inprint
+c projsr projstr
+c gargwd gargwrd
+c fprinf fprintf
+c radecr radecstr
+c pargsr pargstr
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.x b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.x
new file mode 100644
index 00000000..2e779b09
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skwrite.x
@@ -0,0 +1,510 @@
+include "skywcsdef.h"
+include "skywcs.h"
+
+
+# SK_IIPRINT -- Print a summary of the input image or list coordinate system.
+
+procedure sk_iiprint (label, imagesys, mw, coo)
+
+char label[ARB] #I the input label
+char imagesys[ARB] #I the input image name and wcs
+pointer mw #I pointer to the image wcs
+pointer coo #I pointer to the coordinate system structure
+
+begin
+ if (mw == NULL)
+ call sk_inprint (label, imagesys, SKY_CTYPE(coo),
+ SKY_RADECSYS(coo), SKY_EQUINOX(coo), SKY_EPOCH(coo))
+ else
+ call sk_imprint (label, imagesys, SKY_CTYPE(coo), SKY_PLNGAX(coo),
+ SKY_PLATAX(coo), SKY_WTYPE(coo), SKY_PIXTYPE(coo),
+ SKY_RADECSYS(coo), SKY_EQUINOX(coo), SKY_EPOCH(coo))
+end
+
+
+# SK_IIWRITE -- Write a summary of the input image or list coordinate system
+# to the output file
+
+procedure sk_iiwrite (fd, label, imagesys, mw, coo)
+
+int fd #I the output file descriptor
+char label[ARB] #I the input label
+char imagesys[ARB] #I the input image name and wcs
+pointer mw #I pointer to the image wcs
+pointer coo #I pointer to the coordinate system structure
+
+begin
+ if (mw == NULL)
+ call sk_inwrite (fd, label, imagesys, SKY_CTYPE(coo),
+ SKY_RADECSYS(coo), SKY_EQUINOX(coo), SKY_EPOCH(coo))
+ else
+ call sk_imwrite (fd, label, imagesys, SKY_CTYPE(coo),
+ SKY_PLNGAX(coo), SKY_PLATAX(coo), SKY_WTYPE(coo),
+ SKY_PIXTYPE(coo), SKY_RADECSYS(coo), SKY_EQUINOX(coo),
+ SKY_EPOCH(coo))
+end
+
+
+# SK_INPRINT -- Print a summary of the input list coordinate system.
+# This should probably be a call to sk_inwrite with the file descriptor
+# set to STDOUT to avoid duplication of code. There was a reason for
+# having two routines at one point but I can't remember what it was ...
+
+procedure sk_inprint (label, system, ctype, radecsys, equinox, epoch)
+
+char label[ARB] #I the input label
+char system[ARB] #I the input system
+int ctype #I the input coordinate type
+int radecsys #I the input equatorial reference system
+double equinox #I the input equinox
+double epoch #I the input epoch of the observation
+
+pointer sp, radecstr
+double sl_epj(), sl_epb()
+int sk_wrdstr()
+
+begin
+ call smark (sp)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ switch (ctype) {
+
+ case CTYPE_EQUATORIAL:
+ if (sk_wrdstr (radecsys, Memc[radecstr], SZ_FNAME,
+ EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call printf ("%s: %s Coordinates: equatorial %s\n")
+ call pargstr (label)
+ call pargstr (system)
+ call pargstr (Memc[radecstr])
+ switch (radecsys) {
+ case EQTYPE_GAPPT:
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj (epoch))
+ call pargd (sl_epb (epoch))
+ }
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call printf (" Equinox: J%0.3f Epoch: J%0.8f MJD: %0.5f\n")
+ call pargd (equinox)
+ call pargd (sl_epj(epoch))
+ call pargd (epoch)
+ default:
+ call printf (" Equinox: B%0.3f Epoch: B%0.8f MJD: %0.5f\n")
+ call pargd (equinox)
+ call pargd (sl_epb(epoch))
+ call pargd (epoch)
+ }
+
+ case CTYPE_ECLIPTIC:
+ call printf ("%s: %s Coordinates: ecliptic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+
+ case CTYPE_GALACTIC:
+ call printf ("%s: %s Coordinates: galactic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj (epoch))
+ call pargd (sl_epb (epoch))
+
+ case CTYPE_SUPERGALACTIC:
+ call printf ("%s: %s Coordinates: supergalactic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj (epoch))
+ call pargd (sl_epb (epoch))
+
+ }
+
+ call sfree (sp)
+end
+
+
+# SK_INWRITE -- Write a summary of the input coordinate system.
+
+procedure sk_inwrite (fd, label, system, ctype, radecsys, equinox, epoch)
+
+int fd #I the output file descriptor
+char label[ARB] #I the input label
+char system[ARB] #I the input system
+int ctype #I the input coordinate type
+int radecsys #I the input equatorial reference system
+double equinox #I the input equinox
+double epoch #I the input epoch of the observation
+
+pointer sp, radecstr
+double sl_epj(), sl_epb()
+int sk_wrdstr()
+
+begin
+ call smark (sp)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ switch (ctype) {
+
+ case CTYPE_EQUATORIAL:
+ if (sk_wrdstr (radecsys, Memc[radecstr], SZ_FNAME,
+ EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call fprintf (fd, "# %s: %s Coordinates: equatorial %s\n")
+ call pargstr (label)
+ call pargstr (system)
+ call pargstr (Memc[radecstr])
+ switch (radecsys) {
+ case EQTYPE_GAPPT:
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call fprintf (fd,
+ "# Equinox: J%0.3f Epoch: J%0.8f MJD: %0.5f\n")
+ call pargd (equinox)
+ call pargd (sl_epj(epoch))
+ call pargd (epoch)
+ default:
+ call fprintf (fd,
+ "# Equinox: B%0.3f Epoch: B%0.8f MJD: %0.5f\n")
+ call pargd (equinox)
+ call pargd (sl_epb(epoch))
+ call pargd (epoch)
+ }
+
+ case CTYPE_ECLIPTIC:
+ call fprintf (fd, "# %s: %s Coordinates: ecliptic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+
+ case CTYPE_GALACTIC:
+ call fprintf (fd, "# %s: %s Coordinates: galactic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+
+ case CTYPE_SUPERGALACTIC:
+ call fprintf (fd, "# %s: %s Coordinates: supergalactic\n")
+ call pargstr (label)
+ call pargstr (system)
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+
+ }
+
+ call sfree (sp)
+end
+
+
+# SK_IMPRINT -- Print a summary of the input image coordinate system.
+# This should probably be a call to sk_imwrite with the file descriptor
+# set to STDOUT to avoid duplication of code. There was a reason for
+# having two routines at one point but I can't remember what it was ...
+
+procedure sk_imprint (label, imagesys, ctype, lngax, latax, wtype, ptype,
+ radecsys, equinox, epoch)
+
+char label[ARB] #I input label
+char imagesys[ARB] #I the input image name and system
+int ctype #I the image coordinate type
+int lngax #I the image ra/glon/elon axis
+int latax #I the image dec/glat/elat axis
+int wtype #I the image projection type
+int ptype #I the image image wcs type
+int radecsys #I the image equatorial reference system
+double equinox #I the image equinox
+double epoch #I the image epoch of the observation
+
+pointer sp, imname, projstr, wcsstr, radecstr
+double sl_epj(), sl_epb()
+int sk_wrdstr()
+
+begin
+ call smark (sp)
+ call salloc (imname, SZ_FNAME, TY_CHAR)
+ call salloc (projstr, SZ_FNAME, TY_CHAR)
+ call salloc (wcsstr, SZ_FNAME, TY_CHAR)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ call sscan (imagesys)
+ call gargwrd (Memc[imname], SZ_FNAME)
+ if (sk_wrdstr (wtype, Memc[projstr], SZ_FNAME, WTYPE_LIST) <= 0)
+ call strcpy ("linear", Memc[projstr], SZ_FNAME)
+ call strupr (Memc[projstr])
+ if (sk_wrdstr (ptype, Memc[wcsstr], SZ_FNAME, PIXTYPE_LIST) <= 0)
+ call strcpy ("world", Memc[wcsstr], SZ_FNAME)
+ call strlwr (Memc[wcsstr])
+
+ switch (ctype) {
+
+ case CTYPE_EQUATORIAL:
+ if (sk_wrdstr (radecsys, Memc[radecstr], SZ_FNAME,
+ EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call printf (
+ "%s: %s %s Projection: %s Ra/Dec axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ switch (radecsys) {
+ case EQTYPE_GAPPT:
+ call printf (" Coordinates: equatorial %s\n")
+ call pargstr (Memc[radecstr])
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call printf (" Coordinates: equatorial %s Equinox: J%0.3f\n")
+ call pargstr (Memc[radecstr])
+ call pargd (equinox)
+ call printf (" Epoch: J%0.8f MJD: %0.5f\n")
+ call pargd (sl_epj (epoch))
+ call pargd (epoch)
+ default:
+ call printf (" Coordinates: equatorial %s Equinox: B%0.3f\n")
+ call pargstr (Memc[radecstr])
+ call pargd (equinox)
+ call printf (" Epoch: B%0.8f MJD: %0.5f\n")
+ call pargd (sl_epb (epoch))
+ call pargd (epoch)
+ }
+
+ case CTYPE_ECLIPTIC:
+ call printf (
+ "%s: %s %s Projection: %s Elong/Elat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call printf (" Coordinates: ecliptic\n")
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+
+ case CTYPE_GALACTIC:
+ call printf (
+ "%s: %s %s Projection: %s Glong/Glat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call printf (" Coordinates: galactic\n")
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj (epoch))
+ call pargd (sl_epb (epoch))
+
+ case CTYPE_SUPERGALACTIC:
+ call printf (
+ "%s: %s %s Projection: %s Slong/Slat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call printf (" Coordinates: supergalactic\n")
+ call printf (" MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj (epoch))
+ call pargd (sl_epb (epoch))
+ }
+
+ call sfree (sp)
+end
+
+
+# SK_IMWRITE -- Write a summary of the image coordinate system to the
+# output file.
+
+procedure sk_imwrite (fd, label, imagesys, ctype, lngax, latax, wtype, ptype,
+ radecsys, equinox, epoch)
+
+int fd #I the output file descriptor
+char label[ARB] #I input label
+char imagesys[ARB] #I the input image name and wcs
+int ctype #I the image coordinate type
+int lngax #I the image ra/glon/elon axis
+int latax #I the image dec/glat/elat axis
+int wtype #I the image projection type
+int ptype #I the image image wcs type
+int radecsys #I the image equatorial reference system
+double equinox #I the image equinox
+double epoch #I the image epoch of the observation
+
+pointer sp, imname, projstr, wcsstr, radecstr
+double sl_epj(), sl_epb()
+int sk_wrdstr()
+
+begin
+ call smark (sp)
+ call salloc (imname, SZ_FNAME, TY_CHAR)
+ call salloc (projstr, SZ_FNAME, TY_CHAR)
+ call salloc (wcsstr, SZ_FNAME, TY_CHAR)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ call sscan (imagesys)
+ call gargwrd (Memc[imname], SZ_FNAME)
+ if (sk_wrdstr (wtype, Memc[projstr], SZ_FNAME, WTYPE_LIST) <= 0)
+ call strcpy ("linear", Memc[projstr], SZ_FNAME)
+ call strupr (Memc[projstr])
+ if (sk_wrdstr (ptype, Memc[wcsstr], SZ_FNAME, PIXTYPE_LIST) <= 0)
+ call strcpy ("world", Memc[wcsstr], SZ_FNAME)
+ call strlwr (Memc[wcsstr])
+
+ switch (ctype) {
+
+ case CTYPE_EQUATORIAL:
+ if (sk_wrdstr (radecsys, Memc[radecstr], SZ_FNAME,
+ EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call fprintf (fd,
+ "# %s: %s %s Projection: %s Ra/Dec axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ switch (radecsys) {
+ case EQTYPE_GAPPT:
+ call fprintf (fd, "# Coordinates: equatorial %s\n")
+ call pargstr (Memc[radecstr])
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call fprintf (fd,
+ "# Coordinates: equatorial %s Equinox: J%0.3f\n")
+ call pargstr (Memc[radecstr])
+ call pargd (equinox)
+ call fprintf (fd, "# Epoch: J%0.8f MJD: %0.5f\n")
+ call pargd (sl_epj(epoch))
+ call pargd (epoch)
+ default:
+ call fprintf (fd,
+ "# Coordinates: equatorial %s Equinox: B%0.3f\n")
+ call pargstr (Memc[radecstr])
+ call pargd (equinox)
+ call fprintf (fd, "# Epoch: B%0.8f MJD: %0.5f\n")
+ call pargd (sl_epb (epoch))
+ call pargd (epoch)
+ }
+
+ case CTYPE_ECLIPTIC:
+ call fprintf (fd,
+ "# %s: %s %s Projection: %s Elong/Elat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call fprintf (fd, "# Coordinates: ecliptic\n")
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ if (IS_INDEFD(epoch)) {
+ call pargd (INDEFD)
+ call pargd (INDEFD)
+ } else {
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+
+ case CTYPE_GALACTIC:
+ call fprintf (fd,
+ "# %s: %s %s Projection: %s Glong/Glat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call fprintf (fd, "# Coordinates: galactic\n")
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+
+ case CTYPE_SUPERGALACTIC:
+ call fprintf (fd,
+ "# %s: %s %s Projection: %s Slong/Slat axes: %d/%d\n")
+ call pargstr (label)
+ call pargstr (Memc[imname])
+ call pargstr (Memc[wcsstr])
+ call pargstr (Memc[projstr])
+ call pargi (lngax)
+ call pargi (latax)
+ call fprintf (fd, "# Coordinates: supergalactic\n")
+ call fprintf (fd, "# MJD: %0.5f Epoch: J%0.8f B%0.8f\n")
+ call pargd (epoch)
+ call pargd (sl_epj(epoch))
+ call pargd (sl_epb(epoch))
+ }
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcs.h b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcs.h
new file mode 100644
index 00000000..c0c6a3b7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcs.h
@@ -0,0 +1,132 @@
+# Public definitions file for the SKYWCS library.
+
+# Define the SKYWCS library parameters.
+
+define S_VXOFF 1
+define S_VYOFF 2
+define S_VXSTEP 3
+define S_VYSTEP 4
+define S_EQUINOX 5
+define S_EPOCH 6
+define S_CTYPE 7
+define S_RADECSYS 8
+define S_WTYPE 9
+define S_PLNGAX 10
+define S_PLATAX 11
+define S_XLAX 12
+define S_YLAX 13
+define S_PIXTYPE 14
+define S_NLNGAX 15
+define S_NLATAX 16
+define S_NLNGUNITS 17
+define S_NLATUNITS 18
+define S_COOSYSTEM 19
+define S_STATUS 20
+
+# Define the list of supported fundamental coordinate systems.
+
+define FTYPE_LIST "|fk4|noefk4|fk5|icrs|apparent|ecliptic|galactic|\
+supergalactic|"
+
+define FTYPE_FK4 1
+define FTYPE_FK4NOE 2
+define FTYPE_FK5 3
+define FTYPE_ICRS 4
+define FTYPE_GAPPT 5
+define FTYPE_ECLIPTIC 6
+define FTYPE_GALACTIC 7
+define FTYPE_SUPERGALACTIC 8
+
+# Define the list of supported coordinate systems.
+
+define CTYPE_LIST "|equatorial|ecliptic|galactic|supergalactic|"
+
+define CTYPE_EQUATORIAL 1
+define CTYPE_ECLIPTIC 2
+define CTYPE_GALACTIC 3
+define CTYPE_SUPERGALACTIC 4
+
+# Define the supported equatoral reference systems.
+
+define EQTYPE_LIST "|fk4|fk4-no-e|fk5|icrs|gappt|"
+
+define EQTYPE_FK4 1
+define EQTYPE_FK4NOE 2
+define EQTYPE_FK5 3
+define EQTYPE_ICRS 4
+define EQTYPE_GAPPT 5
+
+# Define the input coordinate file longitude latitude units.
+
+define SKY_LNG_UNITLIST "|degrees|radians|hours|"
+define SKY_LAT_UNITLIST "|degrees|radians|"
+
+define SKY_DEGREES 1
+define SKY_RADIANS 2
+define SKY_HOURS 3
+
+# Define the list of supported image sky projection types.
+
+define WTYPE_LIST "|lin|azp|tan|sin|stg|arc|zpn|zea|air|cyp|car|\
+mer|cea|cop|cod|coe|coo|bon|pco|gls|par|ait|mol|csc|qsc|tsc|tnx|zpx|"
+
+define PTYPE_LIST "|z|z|z|z|z|z|z|z|z|c|c|c|c|n|n|n|n|c|c|c|c|c|c|c|c|c|\
+x|x|"
+
+define WTYPE_LIN 1
+define WTYPE_AZP 2
+define WTYPE_TAN 3
+define WTYPE_SIN 4
+define WTYPE_STG 5
+define WTYPE_ARC 6
+define WTYPE_ZPN 7
+define WTYPE_ZEA 8
+define WTYPE_AIR 9
+define WTYPE_CYP 10
+define WTYPE_CAR 11
+define WTYPE_MER 12
+define WTYPE_CEA 13
+define WTYPE_COP 14
+define WTYPE_COD 15
+define WTYPE_COE 16
+define WTYPE_COO 17
+define WTYPE_BON 18
+define WTYPE_PCO 19
+define WTYPE_GLS 20
+define WTYPE_PAR 21
+define WTYPE_AIT 22
+define WTYPE_MOL 23
+define WTYPE_CSC 24
+define WTYPE_QSC 25
+define WTYPE_TSC 26
+define WTYPE_TNX 27
+define WTYPE_ZPX 28
+
+define PTYPE_NAMES "|z|c|n|x|"
+
+define PTYPE_ZEN 1
+define PTYPE_CYL 2
+define PTYPE_CON 3
+define PTYPE_EXP 4
+
+# Define the supported image axis types.
+
+define AXTYPE_LIST "|ra|dec|glon|glat|elon|elat|slon|slat|"
+
+define AXTYPE_RA 1
+define AXTYPE_DEC 2
+define AXTYPE_GLON 3
+define AXTYPE_GLAT 4
+define AXTYPE_ELON 5
+define AXTYPE_ELAT 6
+define AXTYPE_SLON 7
+define AXTYPE_SLAT 8
+
+# Define the supported image pixel coordinate systems.
+
+define PIXTYPE_LIST "|logical|tv|physical|world|"
+
+define PIXTYPE_LOGICAL 1
+define PIXTYPE_TV 2
+define PIXTYPE_PHYSICAL 3
+define PIXTYPE_WORLD 4
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcsdef.h b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcsdef.h
new file mode 100644
index 00000000..433247bd
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/skywcs/skywcsdef.h
@@ -0,0 +1,24 @@
+# The SKYWCS library structure.
+
+define LEN_SKYCOOSTRUCT (30 + SZ_FNAME + 1)
+
+define SKY_VXOFF Memd[P2D($1)] # logical ra/longitude offset
+define SKY_VYOFF Memd[P2D($1+2)] # logical dec/tatitude offset
+define SKY_VXSTEP Memd[P2D($1+4)] # logical ra/longitude stepsize
+define SKY_VYSTEP Memd[P2D($1+6)] # logical dec/latitude stepsize
+define SKY_EQUINOX Memd[P2D($1+8)] # equinox of ra/dec system (B or J)
+define SKY_EPOCH Memd[P2D($1+10)] # epoch of observation (MJD)
+define SKY_CTYPE Memi[$1+12] # celestial coordinate system code
+define SKY_RADECSYS Memi[$1+13] # ra/dec system code
+define SKY_WTYPE Memi[$1+14] # sky projection function code
+define SKY_PLNGAX Memi[$1+15] # physical ra/longitude axis
+define SKY_PLATAX Memi[$1+16] # physical dec/latitude axis
+define SKY_XLAX Memi[$1+17] # logical ra/longitude axis
+define SKY_YLAX Memi[$1+18] # logical dec/latitude axis
+define SKY_PIXTYPE Memi[$1+19] # iraf wcs system code
+define SKY_NLNGAX Memi[$1+20] # length of ra/longitude axis
+define SKY_NLATAX Memi[$1+21] # length of dec/latitude axis
+define SKY_NLNGUNITS Memi[$1+22] # the native ra/longitude units
+define SKY_NLATUNITS Memi[$1+23] # the native dec/latitude units
+define SKY_STATUS Memi[$1+24] # the status (OK or ERR)
+define SKY_COOSYSTEM Memc[P2C($1+25)] # the coordinate system name
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.f b/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.f
new file mode 100644
index 00000000..a8f7b191
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.f
@@ -0,0 +1,89 @@
+ subroutine wcsgfm (mw, crpix, crval, cd, ndim)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer mw
+ integer ndim
+ double precision crpix(ndim)
+ double precision crval(ndim)
+ double precision cd(ndim,ndim)
+ integer sp
+ integer r
+ integer wcd
+ integer ltv
+ integer ltm
+ integer iltm
+ integer alert
+ integer errmsg
+ integer i
+ integer errcoe
+ integer errget
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(8)
+ integer*2 st0002(26)
+ integer*2 st0003(1)
+ integer*2 st0004(1)
+ save
+ integer iyy
+ data st0001 / 37,115, 10, 34, 37,115, 34, 0/
+ data (st0002(iyy),iyy= 1, 8) / 69,114,114,111,114, 32,100,101/
+ data (st0002(iyy),iyy= 9,16) / 99,111,100,105,110,103, 32,105/
+ data (st0002(iyy),iyy=17,24) /109, 97,103,101, 32, 87, 67, 83/
+ data (st0002(iyy),iyy=25,26) / 58, 0/
+ data st0003 / 0/
+ data st0004 / 0/
+ call smark (sp)
+ call salloc (r, ndim, 7)
+ call salloc (wcd, ndim * ndim, 7)
+ call salloc (ltv, ndim, 7)
+ call salloc (ltm, ndim * ndim, 7)
+ call salloc (iltm, ndim * ndim, 7)
+ call xerpsh
+ call mwgwtd (mw, memd(r), crval, memd(wcd), ndim)
+ if (xerflg) goto 112
+ call mwgltd (mw, memd(ltm), memd(ltv), ndim)
+ if (xerflg) goto 112
+ call mwvmud (memd(ltm), memd(r), crpix, ndim)
+ call aaddd (crpix, memd(ltv), crpix, ndim)
+ call mwinvd (memd(ltm), memd(iltm), ndim)
+ call mwmmud (memd(wcd), memd(iltm), cd, ndim)
+112 if (.not.xerpop()) goto 110
+ call salloc (alert, 1023 , 2)
+ call salloc (errmsg, 1023 , 2)
+ call aclrd (cd, ndim*ndim)
+ i=1
+120 if (.not.(i .le. ndim)) goto 122
+ crpix(i) = 1.0d0
+ crval(i) = 1.0d0
+ cd(i,i) = 1.0d0
+121 i=i+1
+ goto 120
+122 continue
+ errcoe = errget (memc(errmsg), 1023 )
+ call sprinf (memc(alert), 255 , st0001)
+ call pargsr (st0002)
+ call pargsr (memc(errmsg))
+ call ximalt (memc(alert), st0003, st0004)
+110 continue
+ call sfree (sp)
+100 return
+ end
+c sprinf sprintf
+c mwinvd mwinvertd
+c mwvmud mwvmuld
+c errcoe errcode
+c mwgwtd mw_gwtermd
+c ximalt xim_alert
+c mwmmud mwmmuld
+c pargsr pargstr
+c wcsgfm wcs_gfterm
+c mwgltd mw_gltermd
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.x b/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.x
new file mode 100644
index 00000000..8b97a55b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/wcsgfterm.x
@@ -0,0 +1,61 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+
+# WCS_GFTERM -- Compute the output FITS CRPIX, CRVAL, and CD arrays from the
+# MWCS LTERM and WTERM. Note that the CD matrix terms are still transposed
+# from the usual Fortran order.
+
+procedure wcs_gfterm (mw, crpix, crval, cd, ndim)
+
+pointer mw #i the input mwcs pointer
+double crpix[ndim] #o the output FITS CRPIX array
+double crval[ndim] #o the output FITS CRVAL array
+double cd[ndim,ndim] #o the output FITS CD matrix
+int ndim #i the dimensionality of the wcs
+
+pointer sp, r, wcd, ltv, ltm, iltm
+pointer alert, errmsg
+int i, errcode
+
+int errget()
+
+errchk mw_gwtermd, mw_gltermd
+
+begin
+ call smark (sp)
+ call salloc (r, ndim, TY_DOUBLE)
+ call salloc (wcd, ndim * ndim, TY_DOUBLE)
+ call salloc (ltv, ndim, TY_DOUBLE)
+ call salloc (ltm, ndim * ndim, TY_DOUBLE)
+ call salloc (iltm, ndim * ndim, TY_DOUBLE)
+
+ iferr {
+ call mw_gwtermd (mw, Memd[r], crval, Memd[wcd], ndim)
+ call mw_gltermd (mw, Memd[ltm], Memd[ltv], ndim)
+ call mwvmuld (Memd[ltm], Memd[r], crpix, ndim)
+ call aaddd (crpix, Memd[ltv], crpix, ndim)
+ call mwinvertd (Memd[ltm], Memd[iltm], ndim)
+ call mwmmuld (Memd[wcd], Memd[iltm], cd, ndim)
+
+ } then {
+ call salloc (alert, SZ_LINE, TY_CHAR)
+ call salloc (errmsg, SZ_LINE, TY_CHAR)
+
+ # Set up a default value.
+ call aclrd (cd, ndim*ndim)
+ for (i=1; i <= ndim; i=i+1) {
+ crpix[i] = 1.0d0
+ crval[i] = 1.0d0
+ cd[i,i] = 1.0d0
+ }
+
+ # Send alert to the GUI.
+ errcode = errget (Memc[errmsg], SZ_LINE)
+ call sprintf (Memc[alert], SZ_FNAME, "%s\n\"%s\"")
+ call pargstr ("Error decoding image WCS:")
+ call pargstr (Memc[errmsg])
+ call xim_alert (Memc[alert], "", "")
+ }
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/ximtool.f b/vendor/x11iraf/ximtool/clients.old/lib/ximtool.f
new file mode 100644
index 00000000..80dabf3f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/ximtool.f
@@ -0,0 +1,510 @@
+ integer function ximcot (device, name, type)
+ integer*2 device(*)
+ integer*2 name(*)
+ integer*2 type(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer cmsg
+ integer dev
+ integer buf
+ integer msglen
+ integer*2 connet(255 +1)
+ integer ndopen
+ integer reopen
+ integer xstrln
+ integer ximred
+ logical streq
+ external ximonr
+ integer fdin
+ integer fdout
+ integer mode
+ integer nbuf
+ integer nr
+ integer nw
+ integer*2 buffer(2047+1)
+ integer ximepa
+ integer ximstt
+ integer oldont
+ integer ximfd
+ integer ximjmp(64 )
+ integer ximert
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+ common /ximcom/ ximfd, ximjmp, ximepa, ximstt, oldont
+ common /ximecm/ ximert
+ integer*2 st0001(6)
+ integer*2 st0002(5)
+ integer*2 st0003(12)
+ integer*2 st0004(8)
+ integer*2 st0005(12)
+ integer*2 st0006(21)
+ integer*2 st0007(10)
+ integer*2 st0008(8)
+ save
+ integer iyy
+ data st0001 / 37,115, 58, 37,115, 0/
+ data st0002 /116,101,120,116, 0/
+ data (st0003(iyy),iyy= 1, 8) / 99,111,110,110,101, 99,116, 32/
+ data (st0003(iyy),iyy= 9,12) / 37,115, 0, 0/
+ data st0004 /120,105,109,116,111,111,108, 0/
+ data (st0005(iyy),iyy= 1, 8) /117,110,105,120, 58, 37,115, 58/
+ data (st0005(iyy),iyy= 9,12) / 37,115, 0, 0/
+ data (st0006(iyy),iyy= 1, 8) / 82,101, 99,111,110,110,101, 99/
+ data (st0006(iyy),iyy= 9,16) /116,101,100, 32,111,110, 32, 39/
+ data (st0006(iyy),iyy=17,21) / 37,115, 39, 10, 0/
+ data (st0007(iyy),iyy= 1, 8) /114,101, 97,100,121, 32, 37,115/
+ data (st0007(iyy),iyy= 9,10) / 0, 0/
+ data st0008 /120,105,109,116,111,111,108, 0/
+ data ximert /0/
+ call smark (sp)
+ call salloc (buf, 1023 , 2)
+ call salloc (cmsg, 1023 , 2)
+ call salloc (dev, 255 , 2)
+ call aclrc (memc(buf), 1023 )
+ call aclrc (memc(cmsg), 1023 )
+ call aclrc (memc(dev), 255 )
+ call aclrc (buffer, 2047)
+ fdin = 0
+ fdout = 0
+ nbuf = 0
+ nr = 0
+ nw = 0
+ call sprinf (memc(dev), 255 , st0001)
+ call pargsr (device)
+ call pargsr (type)
+ if (.not.(streq (type, st0002))) goto 110
+ mode = 1
+ goto 111
+110 continue
+ mode = 2
+111 continue
+ call xerpsh
+ fdin = ndopen (memc(dev), 2)
+ if (.not.xerpop()) goto 120
+ call sfree (sp)
+ ximcot = (-1)
+ goto 100
+120 continue
+ fdout = reopen (fdin, 2)
+ call sprinf (memc(cmsg), 1023 , st0003)
+ call pargsr (name)
+ msglen = xstrln(memc(cmsg))
+ call ximmee (st0004, memc(cmsg))
+ if (.not.(ximred (memc(buf), msglen) .eq. -2)) goto 130
+ call sfree (sp)
+ ximcot = (-1)
+ goto 100
+130 continue
+ call xfcloe(fdout)
+ call xfcloe(fdin)
+ call sprinf (connet, 1023 , st0005)
+ call pargsr (memc(buf+8))
+ call pargsr (type)
+ call xerpsh
+ fdin = ndopen (connet, 2)
+ if (.not.xerpop()) goto 140
+ call sfree (sp)
+ ximcot = (-1)
+ goto 100
+140 continue
+ fdout = reopen (fdin, 2)
+ if (.not.(.true.)) goto 150
+ call eprinf (st0006)
+ call pargsr (connet)
+150 continue
+ call sprinf (memc(cmsg), 1023 , st0007)
+ call pargsr (name)
+ msglen = xstrln(memc(cmsg))
+ call ximmee (st0008, memc(cmsg))
+ call onerrr (ximonr)
+ call sfree (sp)
+ ximcot = (0)
+ goto 100
+100 return
+ end
+ subroutine ximdit (sendqt)
+ integer sendqt
+ integer fdin
+ integer fdout
+ integer mode
+ integer nbuf
+ integer nr
+ integer nw
+ integer*2 buffer(2047+1)
+ common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+ integer*2 st0001(8)
+ integer*2 st0002(5)
+ save
+ data st0001 /120,105,109,116,111,111,108, 0/
+ data st0002 /113,117,105,116, 0/
+ if (.not.(sendqt .eq. 1)) goto 110
+ call ximmee (st0001, st0002)
+110 continue
+ call xffluh(fdout)
+ call xfcloe(fdin)
+ call xfcloe(fdout)
+ fdin = 0
+ fdout = 0
+100 return
+ end
+ subroutine ximmee (object, messae)
+ integer*2 object(*)
+ integer*2 messae(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer msgbuf
+ integer msglen
+ integer olen
+ integer mlen
+ integer ip
+ integer xstrln
+ logical streq
+ integer*2 st0001(8)
+ integer*2 st0002(6)
+ integer*2 st0003(4)
+ integer*2 st0004(4)
+ save
+ data st0001 /120,105,109,116,111,111,108, 0/
+ data st0002 /115,101,110,100, 32, 0/
+ data st0003 / 32,123, 32, 0/
+ data st0004 / 32,125, 0, 0/
+ olen = xstrln(object)
+ mlen = xstrln(messae)
+ msglen = olen + mlen + 20
+ call smark (sp)
+ call salloc (msgbuf, msglen, 2)
+ call aclrc (memc(msgbuf), msglen)
+ if (.not.(streq (object, st0001))) goto 110
+ call xstrcy(messae, memc(msgbuf), msglen)
+ goto 111
+110 continue
+ ip = 0
+ call amovc (st0002, memc(msgbuf+ip), 5)
+ ip = ip + 5
+ call amovc (object, memc(msgbuf+ip), olen)
+ ip = ip + olen
+ call amovc (st0003, memc(msgbuf+ip), 3)
+ ip = ip + 3
+ call amovc (messae, memc(msgbuf+ip), mlen)
+ ip = ip + mlen
+ call amovc (st0004, memc(msgbuf+ip), 2)
+ ip = ip + 3
+111 continue
+ msglen = xstrln(memc(msgbuf))
+ call ximwre (memc(msgbuf), msglen)
+ call sfree (sp)
+100 return
+ end
+ subroutine ximalt (text, ok, cancel)
+ integer*2 text(*)
+ integer*2 ok(*)
+ integer*2 cancel(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer msg
+ integer*2 st0001(15)
+ integer*2 st0002(6)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /123, 37,115,125, 32,123, 37,115/
+ data (st0001(iyy),iyy= 9,15) /125, 32,123, 37,115,125, 0/
+ data st0002 / 97,108,101,114,116, 0/
+ call smark (sp)
+ call salloc (msg, 1023 , 2)
+ call sprinf (memc(msg), 1023 , st0001)
+ call pargsr (text)
+ call pargsr (ok)
+ call pargsr (cancel)
+ call ximmee (st0002, memc(msg))
+ call sfree (sp)
+100 return
+ end
+ subroutine ximwre (messae, len)
+ integer len
+ integer*2 messae(*)
+ integer nleft
+ integer n
+ integer ip
+ integer*2 msgbuf(2047+1)
+ integer xstrln
+ integer fdin
+ integer fdout
+ integer mode
+ integer nbuf
+ integer nr
+ integer nw
+ integer*2 buffer(2047+1)
+ common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(42)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /120,105,109, 95,119,114,105,116/
+ data (st0001(iyy),iyy= 9,16) /101, 58, 32, 39, 37, 46, 52, 53/
+ data (st0001(iyy),iyy=17,24) /115, 39, 32,108,101,110, 61, 37/
+ data (st0001(iyy),iyy=25,32) /100, 32,109,111,100,101, 61, 37/
+ data (st0001(iyy),iyy=33,40) /100, 32,116,111,116, 61, 37,100/
+ data (st0001(iyy),iyy=41,42) / 10, 0/
+ len = xstrln(messae) + 1
+ messae(len) = 0
+ if (.not.(mod(len,2) .eq. 1)) goto 110
+ len = len + 1
+ messae(len) = 0
+110 continue
+ ip = 1
+ nleft = len
+120 if (.not.(nleft .gt. 0)) goto 121
+ n = min (nleft, 2047)
+ call amovc (messae(ip), msgbuf, n)
+ if (.not.(mode .eq. 2)) goto 130
+ call achtcb (msgbuf, msgbuf, n)
+ call xfwrie(fdout, msgbuf, n / 2 )
+ if (xerflg) goto 100
+ goto 131
+130 continue
+ call xfwrie(fdout, msgbuf, n)
+ if (xerflg) goto 100
+131 continue
+ ip = ip + n
+ nleft = nleft - n
+ goto 120
+121 continue
+ nw = nw + len
+ call xffluh(fdout)
+ if (xerflg) goto 100
+ if (.not.(.true.)) goto 140
+ call eprinf (st0001)
+ call pargsr (messae)
+ call pargi (len)
+ call pargi (mode)
+ call pargi (nw)
+140 continue
+100 return
+ end
+ integer function ximred (messae, len)
+ integer len
+ integer*2 messae(*)
+ integer i
+ integer n
+ integer nleft
+ integer xfread
+ integer fdin
+ integer fdout
+ integer mode
+ integer nbuf
+ integer nr
+ integer nw
+ integer*2 buffer(2047+1)
+ integer ximepa
+ integer ximstt
+ integer oldont
+ integer ximfd
+ integer ximjmp(64 )
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+ common /ximcom/ ximfd, ximjmp, ximepa, ximstt, oldont
+ integer*2 st0001(42)
+ integer*2 st0002(40)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /120,105,109, 95,114,101, 97,100/
+ data (st0001(iyy),iyy= 9,16) / 58, 32,116,111,116, 61, 37,100/
+ data (st0001(iyy),iyy=17,24) / 32,108,101,110, 61, 37,100, 47/
+ data (st0001(iyy),iyy=25,32) / 37,100, 32,109,115,103, 61, 39/
+ data (st0001(iyy),iyy=33,40) / 37, 51, 48, 46, 51, 48,115, 39/
+ data (st0001(iyy),iyy=41,42) / 10, 0/
+ data (st0002(iyy),iyy= 1, 8) /120,105,109, 95,114,101, 97,100/
+ data (st0002(iyy),iyy= 9,16) / 58, 32,110, 98,117,102, 61, 37/
+ data (st0002(iyy),iyy=17,24) /100, 32,110,108,101,102,116, 61/
+ data (st0002(iyy),iyy=25,32) / 37,100, 32, 98,117,102,102,101/
+ data (st0002(iyy),iyy=33,40) /114, 61, 39, 37,115, 39, 10, 0/
+ if (.not.(nbuf .eq. 0)) goto 110
+ call aclrc (buffer, 2047)
+ nbuf = 0
+ call xerpsh
+ n = xfread(fdin, messae, 2047)
+ if (xerflg) goto 122
+ if (.not.(n .lt. 0)) goto 130
+ ximred = (-2)
+ goto 100
+130 continue
+122 if (.not.xerpop()) goto 120
+ call xerret()
+ call zdojmp (ximjmp, 504 )
+120 continue
+ if (.not.(mode .eq. 2)) goto 140
+ len = n * 2
+ call achtbc (messae, messae, len)
+ goto 141
+140 continue
+ len = n
+141 continue
+ call amovc (messae, buffer, len)
+ if (.not.(buffer(len) .eq. 0 .and. buffer(len-1) .eq. 0))
+ * goto 150
+ nbuf = len
+ goto 151
+150 continue
+ nbuf = len + 1
+151 continue
+ buffer(nbuf) = -2
+110 continue
+ i=1
+160 if (.not.(buffer(i) .ne. 0 .and. buffer(i) .ne. -2 .and. i .le.
+ * nbuf)) goto 162
+ messae(i) = buffer(i)
+161 i=i+1
+ goto 160
+162 continue
+ messae(i) = 0
+ len = i
+ nleft = nbuf - i
+ nr = nr + len
+ if (.not.(buffer(i) .eq. 0 .and. buffer(i+1) .eq. -2)) goto 170
+ if (.not.(i .gt. 1 .and. nleft .gt. 1)) goto 180
+ call amovc (buffer(i+1), buffer, nleft)
+180 continue
+ nbuf = 0
+ goto 171
+170 continue
+ if (.not.(nleft .gt. 0)) goto 190
+ call amovc (buffer(i+1), buffer, nleft)
+190 continue
+ nbuf = nleft
+171 continue
+ if (.not.(.true.)) goto 200
+ call eprinf (st0001)
+ call pargi(nr)
+ call pargi (len)
+ call pargsr(messae)
+ call eprinf (st0002)
+ call pargi (nbuf)
+ call pargi(nleft)
+ call pargsr(buffer)
+200 continue
+ ximred = (nleft)
+ goto 100
+100 return
+ end
+ integer function ximinr ()
+ external ximzxn
+ integer ximepa
+ integer ximstt
+ integer oldont
+ integer ximfd
+ integer ximjmp(64 )
+ common /ximcom/ ximfd, ximjmp, ximepa, ximstt, oldont
+ save
+ call zlocpr (ximzxn, ximepa)
+ call xwhen (503 , ximepa, oldont)
+ call zsvjmp (ximjmp, ximstt)
+ if (.not.(ximstt .eq. 0)) goto 110
+ ximinr = (0)
+ goto 100
+110 continue
+ ximinr = (-1)
+ goto 100
+111 continue
+100 return
+ end
+ subroutine ximzxn (vex, nexthr)
+ integer vex
+ integer nexthr
+ integer ximepa
+ integer ximstt
+ integer oldont
+ integer ximfd
+ integer ximjmp(64 )
+ common /ximcom/ ximfd, ximjmp, ximepa, ximstt, oldont
+ save
+ call ximdit (1)
+ call xerret()
+ call zdojmp (ximjmp, vex)
+100 return
+ end
+ subroutine ximonr (status)
+ integer status
+ integer ximert
+ integer code
+ integer*2 buf(1023 +1)
+ integer*2 errmsg(1023 +1)
+ integer errget
+ integer ximepa
+ integer ximstt
+ integer oldont
+ integer ximfd
+ integer ximjmp(64 )
+ common /ximecm/ ximert
+ common /ximcom/ ximfd, ximjmp, ximepa, ximstt, oldont
+ integer*2 st0001(25)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 73, 83, 77, 32, 69,114,114,111/
+ data (st0001(iyy),iyy= 9,16) /114, 44, 32, 99,111,100,101, 32/
+ data (st0001(iyy),iyy=17,24) / 37,100, 58, 10, 96, 37,115, 39/
+ data (st0001(iyy),iyy=25,25) / 0/
+ if (.not.(status .ne. 0)) goto 110
+ code = errget (errmsg, 1023 )
+ call sprinf (buf, 1023 , st0001)
+ call pargi (status)
+ call pargsr (errmsg)
+ call ximalt (buf, 0, 0)
+ call ximdit (1)
+110 continue
+100 return
+ end
+c ximonr xim_onerror
+c sprinf sprintf
+c onerrr onerror
+c ximstt ximstat
+c ximmee xim_message
+c messae message
+c ximcot xim_connect
+c connet connect
+c ximinr xim_intrhandler
+c ximalt xim_alert
+c oldont old_onint
+c ximecm ximecom
+c ximred xim_read
+c ximjmp xim_jmp
+c sendqt send_quit
+c eprinf eprintf
+c nexthr next_handler
+c ximzxn xim_zxwhen
+c xerret xer_reset
+c ximdit xim_disconnect
+c ximwre xim_write
+c pargsr pargstr
+c ximert xim_errstat
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/ximtool.x b/vendor/x11iraf/ximtool/clients.old/lib/ximtool.x
new file mode 100644
index 00000000..dff5869c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/ximtool.x
@@ -0,0 +1,459 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <error.h>
+include <config.h>
+include <mach.h>
+include <xwhen.h>
+
+
+# XIMTOOL.X -- Interface routines for client programs to connect to
+# XImtool on the message bus.
+#
+# status = xim_connect (device, name, mode)
+# status = xim_file_connect (infile, outfile, name)
+# xim_disconnect (send_quit)
+# xim_message (object, message)
+# xim_alert (text, ok_action, cancel_action)
+#
+# xim_write (message, len)
+# nremain = xim_read (message, len)
+#
+# Client programs should install an exception handler to first disconnect
+# from the device before shutting down. The procedure xim_zxwhen() is
+# provided for this purpose.
+
+
+define XIM_DBG TRUE
+
+define SZ_MESSAGE 2047
+
+define XIM_TEXT 1
+define XIM_BINARY 2
+
+
+# XIM_CONNECT -- Negotiate a connection on the named device. Once
+# established we can begin sending and reading messages from the server.
+
+int procedure xim_connect (device, name, type)
+
+char device[ARB] #I socket to connect on
+char name[ARB] #I module name
+char type[ARB] #I requested connection mode
+
+pointer sp, cmsg, dev, buf
+int msglen
+char connect[SZ_FNAME]
+
+int ndopen(), reopen(), strlen()
+int xim_read()
+bool streq()
+
+extern xim_onerror()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nr, nw
+char buffer[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+# Exception handler variables common.
+int xim_errstat
+data xim_errstat /OK/
+common /ximecom/ xim_errstat
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (cmsg, SZ_LINE, TY_CHAR)
+ call salloc (dev, SZ_FNAME, TY_CHAR)
+
+ # Initialize.
+ call aclrc (Memc[buf], SZ_LINE)
+ call aclrc (Memc[cmsg], SZ_LINE)
+ call aclrc (Memc[dev], SZ_FNAME)
+ call aclrc (buffer, SZ_MESSAGE)
+ fdin = NULL
+ fdout = NULL
+ nbuf = 0
+ nr = 0
+ nw = 0
+
+ # Generate the device name. We assume the call was made with either
+ # a "unix:" or "inet:" prefix, so just append the type and set the
+ # mode.
+
+ call sprintf (Memc[dev], SZ_FNAME, "%s:%s")
+ call pargstr (device)
+ call pargstr (type)
+ if (streq (type, "text"))
+ mode = XIM_TEXT
+ else
+ mode = XIM_BINARY
+
+ # Open the initial connection
+ iferr (fdin = ndopen (Memc[dev], READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ # Send the connect request.
+ call sprintf (Memc[cmsg], SZ_LINE, "connect %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call xim_message ("ximtool", Memc[cmsg])
+
+ # Read the acknowledgement.
+ if (xim_read (Memc[buf], msglen) == EOF) {
+ call sfree (sp)
+ return (ERR)
+ }
+
+ # Close the original socket.
+ call close (fdout)
+ call close (fdin)
+
+ # Get the new device name.
+ call sprintf (connect, SZ_LINE, "unix:%s:%s\0")
+ call pargstr (Memc[buf+8])
+ call pargstr (type)
+
+ # Open the new channel.
+ iferr (fdin = ndopen (connect, READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ if (XIM_DBG) {
+ call eprintf ("Reconnected on '%s'\n"); call pargstr (connect)
+ }
+
+ # Tell the server we're ready to begin.
+ call sprintf (Memc[cmsg], SZ_LINE, "ready %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call xim_message ("ximtool", Memc[cmsg])
+
+
+ # Post the xim_onerror procedure to be executed upon process shutdown
+ # to issue a warning to the server in case we don't close normally.
+
+ call onerror (xim_onerror)
+
+ call sfree (sp)
+ return (OK)
+end
+
+
+# XIM_DISCONNECT -- Disconnect from the currect channel.
+
+procedure xim_disconnect (send_quit)
+
+int send_quit
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nr, nw
+char buffer[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+
+begin
+ # Send a QUIT message to the server so we shut down the connection.
+ if (send_quit == YES)
+ call xim_message ("ximtool", "quit")
+
+ call flush (fdout) # Close the socket connection.
+ call close (fdin)
+ call close (fdout)
+ fdin = NULL
+ fdout = NULL
+end
+
+
+# XIM_MESSAGE -- Send a message to an XImtool named object. If the object
+# is 'ximtool' then just pass the message directly without formatting it.
+
+procedure xim_message (object, message)
+
+char object[ARB] #I object name
+char message[ARB] #I message to send
+
+pointer sp, msgbuf
+int msglen, olen, mlen, ip
+
+int strlen()
+bool streq()
+
+begin
+ # Get the message length plus some extra for the braces and padding.
+ olen = strlen (object)
+ mlen = strlen (message)
+ msglen = olen + mlen + 20
+
+ # Allocate and clear the message buffer.
+ call smark (sp)
+ call salloc (msgbuf, msglen, TY_CHAR)
+ call aclrc (Memc[msgbuf], msglen)
+
+ if (streq (object, "ximtool")) {
+ # Just send the message.
+ call strcpy (message, Memc[msgbuf], msglen)
+ } else {
+ # Format the message. We can't use a sprintf here since the
+ # message may be bigger than that allowed by a pargstr().
+ ip = 0
+ call amovc ("send ", Memc[msgbuf+ip], 5) ; ip = ip + 5
+ call amovc (object, Memc[msgbuf+ip], olen) ; ip = ip + olen
+ call amovc (" { ", Memc[msgbuf+ip], 3) ; ip = ip + 3
+ call amovc (message, Memc[msgbuf+ip], mlen) ; ip = ip + mlen
+ call amovc (" }\0", Memc[msgbuf+ip], 2) ; ip = ip + 3
+ }
+ msglen = strlen (Memc[msgbuf])
+
+ # Now send the message. The write routine does the strpak().
+ call xim_write (Memc[msgbuf], msglen)
+
+ call sfree (sp)
+end
+
+
+# XIM_ALERT -- Send an alert message to XImtool.
+
+procedure xim_alert (text, ok, cancel)
+
+char text[ARB] #I warning text
+char ok[ARB] #i client OK message
+char cancel[ARB] #i client CANCEL message
+
+pointer sp, msg
+
+begin
+ call smark (sp)
+ call salloc (msg, SZ_LINE, TY_CHAR)
+
+ call sprintf (Memc[msg], SZ_LINE, "{%s} {%s} {%s}")
+ call pargstr (text)
+ call pargstr (ok)
+ call pargstr (cancel)
+
+ call xim_message ("alert", Memc[msg])
+
+ call sfree (sp)
+end
+
+
+# XIM_WRITE -- Low-level write of a message to the socket. Writes exactly
+# len bytes to the stream.
+
+procedure xim_write (message, len)
+
+char message[ARB] #I message to send
+int len #I length of message
+
+int nleft, n, ip
+char msgbuf[SZ_MESSAGE]
+int strlen()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nr, nw
+char buffer[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+
+errchk write, flush
+
+begin
+ # Pad message with a NULL to terminate it.
+ len = strlen (message) + 1
+ message[len] = '\0'
+
+ if (mod(len,2) == 1) {
+ len = len + 1
+ message[len] = '\0'
+ }
+
+ ip = 1
+ nleft = len
+ while (nleft > 0) {
+ n = min (nleft, SZ_MESSAGE)
+ call amovc (message[ip], msgbuf, n)
+ if (mode == XIM_BINARY) {
+ call achtcb (msgbuf, msgbuf, n)
+ call write (fdout, msgbuf, n / SZB_CHAR)
+ } else
+ call write (fdout, msgbuf, n)
+
+ ip = ip + n
+ nleft = nleft - n
+ }
+ nw = nw + len
+ call flush (fdout)
+
+ if (XIM_DBG) {
+ call eprintf ("xim_write: '%.45s' len=%d mode=%d tot=%d\n")
+ call pargstr (message);call pargi (len)
+ call pargi (mode); call pargi (nw)
+ }
+end
+
+
+# XIM_READ -- Low-level read from the socket.
+
+int procedure xim_read (message, len)
+
+char message[ARB] #O message read
+int len #O length of message
+
+int i, n, nleft, read()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nr, nw
+char buffer[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nr, nw
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+errchk read
+
+begin
+ # No data left in the buffer so read from the socket
+ if (nbuf == 0) {
+ call aclrc (buffer, SZ_MESSAGE)
+ nbuf = 0
+
+ iferr {
+ n = read (fdin, message, SZ_MESSAGE)
+ if (n < 0)
+ return (EOF)
+ } then {
+ call xer_reset()
+ call zdojmp (xim_jmp, X_IPC)
+ }
+
+ if (mode == XIM_BINARY) {
+ len = n * SZB_CHAR
+ call achtbc (message, message, len)
+ } else
+ len = n
+
+ # Save the data read to a local buffer. Remove any extra
+ # EOS padding and append an EOF on the string.
+ call amovc (message, buffer, len)
+ if (buffer[len] == EOS && buffer[len-1] == EOS)
+ nbuf = len
+ else
+ nbuf = len + 1
+ buffer[nbuf] = EOF
+ }
+
+ for (i=1; buffer[i] != EOS && buffer[i] != EOF && i <= nbuf; i=i+1)
+ message[i] = buffer[i]
+ message[i] = '\0'
+ len = i # length of the current message
+ nleft = nbuf - i # nchars left in the buffer
+ nr = nr + len
+
+ if (buffer[i] == EOS && buffer[i+1] == EOF) {
+ # That was the last message, force a new read next time we're
+ # called.
+ if (i > 1 && nleft > 1)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = 0
+ } else {
+ # More of the message is left in the buffer.
+ if (nleft > 0)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = nleft
+ }
+
+ if (XIM_DBG) {
+ call eprintf ("xim_read: tot=%d len=%d/%d msg='%30.30s'\n")
+ call pargi(nr); call pargi (len)
+ call pargstr(message)
+ call eprintf ("xim_read: nbuf=%d nleft=%d buffer='%s'\n")
+ call pargi (nbuf); call pargi(nleft); call pargstr(buffer)
+ }
+
+ #return (len)
+ return (nleft)
+end
+
+
+# XIM_INTRHANDLER -- User-callable interrupt handler so the ISM client code
+# doesn't need to know about our internals.
+
+int procedure xim_intrhandler()
+
+extern xim_zxwhen()
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ call zlocpr (xim_zxwhen, ximepa)
+ call xwhen (X_INT, ximepa, old_onint)
+ call zsvjmp (xim_jmp, ximstat)
+
+ if (ximstat == OK)
+ return (OK)
+ else
+ return (ERR)
+end
+
+
+# XIM_ZXWHEN -- Interrupt handler for the Ximtool client task. Branches back
+# to ZSVJMP in the user routine to permit shutdown without an error message
+# after first disconnecting from the socket.
+
+procedure xim_zxwhen (vex, next_handler)
+
+int vex # virtual exception
+int next_handler # not used
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ call xim_disconnect (YES)
+ call xer_reset()
+ call zdojmp (xim_jmp, vex)
+end
+
+
+# XIM_ONERROR -- Error exit handler for the interface. If this is a normal exit
+# the shut down quietly, otherwise notify the server.
+
+procedure xim_onerror (status)
+
+int status #i not used (req. for ONEXIT)
+
+# Exception handler variables common.
+int xim_errstat
+common /ximecom/ xim_errstat
+
+int code
+char buf[SZ_LINE], errmsg[SZ_LINE]
+
+int errget()
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ if (status != OK) {
+ code = errget (errmsg, SZ_LINE)
+ call sprintf (buf, SZ_LINE, "ISM Error, code %d:\n`%s\'")
+ call pargi (status)
+ call pargstr (errmsg)
+
+ call xim_alert (buf, NULL, NULL)
+ call xim_disconnect (YES)
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/lib/zfiond.c b/vendor/x11iraf/ximtool/clients.old/lib/zfiond.c
new file mode 100644
index 00000000..1ae65048
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/lib/zfiond.c
@@ -0,0 +1,723 @@
+/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/file.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <sys/un.h>
+#include <netdb.h>
+#include <fcntl.h>
+
+#ifdef LINUX
+#include <sys/time.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+
+#define import_kernel
+#define import_knames
+#define import_zfstat
+#define import_spp
+#include <iraf.h>
+
+/*
+ * ZFIOND -- This driver provides a FIO-compatible interface to network or
+ * IPC streaming devices such as Berkeley sockets, FIFOs, and the like.
+ * Any connection-oriented stream type network interface can be supported.
+ *
+ * The type of connection desired is determined at device open time by the
+ * "filename" and file access mode arguments. The syntax for the filename
+ * argument is as follows:
+ *
+ * <domain> : <address> [ : <flag ] [ : flag...]
+ *
+ * where <domain> is one of "inet" (internet tcp/ip socket), "unix" (unix
+ * domain socket) or "fifo" (named pipe). The form of the address depends
+ * upon the domain, as illustrated in the examples below.
+ *
+ * inet:5187 Server connection to port 5187 on the local
+ * host. For a client, a connection to the
+ * given port on the local host.
+ *
+ * inet:5187:foo.bar.edu Client connection to port 5187 on internet
+ * host foo.bar.edu. The dotted form of address
+ * may also be used.
+ *
+ * unix:/tmp/.IMT212 Unix domain socket with the given pathname
+ * IPC method, local host only.
+ *
+ * fifo:/dev/imt1i:/dev/imt1o FIFO or named pipe with the given pathname.
+ * IPC method, local host only. Two pathnames
+ * are required, one for input and one for
+ * output, since FIFOs are not bidirectional.
+ * For a client the first fifo listed will be
+ * the client's input fifo; for a server the
+ * first fifo will be the server's output fifo.
+ * This allows the same address to be used for
+ * both the client and the server, as for the
+ * other domains.
+ *
+ * The address field may contain up to two "%d" fields. If present, the
+ * user's UID will be substituted (e.g. "unix:/tmp/.IMT%d").
+ *
+ * The only protocol flags currently supported are "text" and "binary".
+ * If "text" is specified the datastream is assumed to consist only of byte
+ * packed ascii text and is automatically converted by the driver to and
+ * from SPP chars during i/o. The default is binary i/o (no conversions).
+ *
+ * Client connections normally use mode READ_WRITE, although READ_ONLY and
+ * WRITE_ONLY are permitted. APPEND is the same as WRITE_ONLY. A server
+ * connection is indicated by the mode NEW_FILE. The endpoints of the server
+ * connection will be created if necessary. A client connection will timeout
+ * if no server responds.
+ *
+ * An INET or UNIX domain server connection will block indefinitely until a
+ * client connects. Since connections are synchronous only a single client
+ * can be supported. The server sees an EOF on the input stream when the
+ * client disconnects.
+ *
+ * FIFO domain connection are slightly different. When the server opens a FIFO
+ * connection the open returns immediately. When the server reads from the
+ * input fifo the server will block until some data is written to the fifo by a
+ * client. The server connection will remain open over multiple client
+ * connections until it is closed by the server. This is done to avoid a race
+ * condition that could otherwise occur at open time, with both the client and
+ * the server blocked waiting for an open on the opposite stream.
+ */
+
+#define SZ_NAME 256
+#define SZ_OBUF 4096
+#define MAXCONN 5
+#define MAXSEL 32
+
+#define INET 1
+#define UNIX 2
+#define FIFO 3
+
+#define F_SERVER 00001
+#define F_DEL1 00002
+#define F_DEL2 00004
+#define F_TEXT 00010
+
+/* Network portal descriptor. */
+struct portal {
+ int domain;
+ int flags;
+ int datain;
+ int dataout;
+ int keepalive;
+ char path1[SZ_NAME];
+ char path2[SZ_NAME];
+};
+
+#define get_desc(fd) ((struct portal *)zfd[fd].fp)
+#define set_desc(fd,np) zfd[fd].fp = (FILE *)np
+#define min(a,b) (((a)<(b))?(a):(b))
+
+extern int errno;
+static int getstr();
+
+
+/* ZOPNND -- Open a network device.
+ */
+ZOPNND (pk_osfn, mode, chan)
+PKCHAR *pk_osfn; /* UNIX name of file */
+XINT *mode; /* file access mode */
+XINT *chan; /* file number (output) */
+{
+ register int fd;
+ register struct portal *np;
+ unsigned short host_port;
+ unsigned long host_addr;
+ char osfn[SZ_NAME*2];
+ char flag[SZ_NAME];
+ char *ip;
+
+ /* Get network device descriptor. */
+ if (!(np = (struct portal *) calloc (1, sizeof(struct portal)))) {
+ *chan = XERR;
+ return;
+ }
+
+ /* Expand any %d fields in the network address to the UID. */
+ sprintf (osfn, (char *)pk_osfn, getuid(), getuid());
+
+ /* Parse the network filename to determine the domain type and
+ * network address.
+ */
+ if (strncmp (osfn, "inet:", 5) == 0) {
+ /* Internet connection.
+ */
+ char port_str[SZ_NAME];
+ char host_str[SZ_NAME];
+ unsigned short port;
+ struct servent *sv;
+ struct hostent *hp;
+
+ /* Get port number. This may be specified either as a service
+ * name or as a decimal port number.
+ */
+ ip = osfn + 5;
+ if (getstr (&ip, port_str, SZ_NAME) <= 0)
+ goto err;
+ if (isdigit (port_str[0])) {
+ port = atoi (port_str);
+ host_port = htons (port);
+ } else if (sv = getservbyname(port_str,"tcp")) {
+ host_port = sv->s_port;
+ } else
+ goto err;
+
+ /* Get host address. This may be specified either has a host
+ * name or as an Internet address in dot notation. If no host
+ * name is specified default to the local host.
+ */
+ if (getstr (&ip, host_str, SZ_NAME) <= 0)
+ strcpy (host_str, "localhost");
+ if (isdigit (host_str[0])) {
+ host_addr = inet_addr (host_str);
+ if ((int)host_addr == -1)
+ goto err;
+ } else if (hp = gethostbyname(host_str)) {
+ bcopy (hp->h_addr, (char *)&host_addr, sizeof(host_addr));
+ } else
+ goto err;
+
+ np->domain = INET;
+
+ } else if (strncmp (osfn, "unix:", 5) == 0) {
+ /* Unix domain socket connection.
+ */
+ ip = osfn + 5;
+ if (!getstr (&ip, np->path1, SZ_NAME))
+ goto err;
+ np->domain = UNIX;
+
+ } else if (strncmp (osfn, "fifo:", 5) == 0) {
+ /* FIFO (named pipe) connection.
+ */
+ ip = osfn + 5;
+ if (*mode == NEW_FILE) {
+ /* Server. */
+ if (!getstr (&ip, np->path2, SZ_NAME))
+ goto err;
+ if (!getstr (&ip, np->path1, SZ_NAME))
+ goto err;
+ } else {
+ /* Client. */
+ if (!getstr (&ip, np->path1, SZ_NAME))
+ goto err;
+ if (!getstr (&ip, np->path2, SZ_NAME))
+ goto err;
+ }
+ np->domain = FIFO;
+
+ } else
+ goto err;
+
+ /* Process any optional protocol flags.
+ */
+ while (getstr (&ip, flag, SZ_NAME) > 0) {
+ /* Get content type (text or binary). If the stream will be used
+ * only for byte-packed character data the content type can be
+ * specified as "text" and data will be automatically packed and
+ * unpacked during i/o.
+ */
+ if (strcmp (flag, "text") == 0)
+ np->flags |= F_TEXT;
+ if (strcmp (flag, "binary") == 0)
+ np->flags &= ~F_TEXT;
+ }
+
+ /* Open the network connection.
+ */
+ switch (*mode) {
+ case READ_ONLY:
+ /* Client side read only FIFO connection. */
+ if (np->domain == FIFO) {
+ if ((fd = open (np->path1, O_RDONLY|O_NDELAY)) != ERR)
+ fcntl (fd, F_SETFL, O_RDONLY);
+ np->datain = fd;
+ np->dataout = -1;
+ break;
+ }
+ /* fall through */
+
+ case WRITE_ONLY:
+ case APPEND:
+ /* Client side write only FIFO connection. */
+ if (np->domain == FIFO) {
+ if ((fd = open (np->path2, O_WRONLY|O_NDELAY)) != ERR)
+ fcntl (fd, F_SETFL, O_WRONLY);
+ np->datain = -1;
+ np->dataout = fd;
+ break;
+ }
+ /* fall through */
+
+ case READ_WRITE:
+ if (np->domain == INET) {
+ /* Client side Internet domain connection. */
+ struct sockaddr_in sockaddr;
+
+ /* Get socket. */
+ if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ /* Compose network address. */
+ bzero ((char *)&sockaddr, sizeof(sockaddr));
+ sockaddr.sin_family = AF_INET;
+ sockaddr.sin_port = host_port;
+ bcopy ((char *)&host_addr, (char *)&sockaddr.sin_addr,
+ sizeof(host_addr));
+
+ /* Connect to server. */
+ if (fd >= MAXOFILES || connect (fd,
+ (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0) {
+ close (fd);
+ fd = ERR;
+ } else {
+ np->datain = fd;
+ np->dataout = fd;
+ }
+
+ } else if (np->domain == UNIX) {
+ /* Client side Unix domain socket connection. */
+ struct sockaddr_un sockaddr;
+
+ /* Get socket. */
+ if ((fd = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ /* Compose network address. */
+ bzero ((char *)&sockaddr, sizeof(sockaddr));
+ sockaddr.sun_family = AF_UNIX;
+ strncpy (sockaddr.sun_path,
+ np->path1, sizeof(sockaddr.sun_path));
+
+ /* Connect to server. */
+ if (fd >= MAXOFILES || connect (fd,
+ (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0) {
+ close (fd);
+ fd = ERR;
+ } else {
+ np->datain = fd;
+ np->dataout = fd;
+ }
+
+ } else if (np->domain == FIFO) {
+ /* Client side FIFO connection. */
+ int fd1, fd2;
+
+ /* Open the fifos. */
+ if ((fd1 = open (np->path1, O_RDONLY|O_NDELAY)) != ERR)
+ fcntl (fd1, F_SETFL, O_RDONLY);
+ if ((fd2 = open (np->path2, O_WRONLY|O_NDELAY)) != ERR)
+ fcntl (fd2, F_SETFL, O_WRONLY);
+
+ /* Clean up if there is an error. */
+ if (fd1 < 0 || fd1 > MAXOFILES || fd2 < 0 || fd2 > MAXOFILES) {
+ if (fd1 > 0)
+ close (fd1);
+ if (fd2 > 0)
+ close (fd2);
+ fd = ERR;
+ } else {
+ np->datain = fd1;
+ np->dataout = fd2;
+ fd = fd1;
+ }
+ } else
+ goto err;
+ break;
+
+ case NEW_FILE:
+ /* Connect to a client. */
+ np->flags |= F_SERVER;
+
+ if (np->domain == INET) {
+ /* Server side Internet domain connection. */
+ struct sockaddr_in sockaddr;
+ int s, reuse=1;
+
+ /* Get socket. */
+ if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ /* Bind server port to socket. */
+ bzero ((char *)&sockaddr, sizeof(sockaddr));
+ sockaddr.sin_family = AF_INET;
+ sockaddr.sin_port = host_port;
+ sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
+
+ if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse,
+ sizeof(reuse)) < 0) {
+ close (s);
+ goto err;
+ }
+
+ if (bind (s,
+ (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0) {
+ close (s);
+ goto err;
+ }
+
+ /* Wait for client to connect. */
+ if (listen (s, MAXCONN) < 0) {
+ close (s);
+ goto err;
+ }
+ if ((fd = accept (s, (struct sockaddr *)0, (int *)0)) < 0) {
+ close (s);
+ goto err;
+ } else
+ close (s);
+
+ np->datain = fd;
+ np->dataout = fd;
+
+ } else if (np->domain == UNIX) {
+ /* Server side Unix domain connection. */
+ struct sockaddr_un sockaddr;
+ int addrlen, s;
+
+ /* Get socket. */
+ if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ /* Bind server port to socket. */
+ bzero ((char *)&sockaddr, sizeof(sockaddr));
+ sockaddr.sun_family = AF_UNIX;
+ strncpy (sockaddr.sun_path,np->path1,sizeof(sockaddr.sun_path));
+ addrlen = sizeof(sockaddr) - sizeof(sockaddr.sun_path)
+ + strlen(np->path1);
+
+ unlink (np->path1);
+ if (bind (s, (struct sockaddr *)&sockaddr, addrlen) < 0) {
+ close (s);
+ goto err;
+ }
+
+ /* Wait for client to connect. */
+ if (listen (s, MAXCONN) < 0) {
+ close (s);
+ goto err;
+ }
+ if ((fd = accept (s, (struct sockaddr *)0, (int *)0)) < 0) {
+ close (s);
+ goto err;
+ } else
+ close (s);
+
+ np->datain = fd;
+ np->dataout = fd;
+ np->flags |= F_DEL1;
+
+ } else if (np->domain == FIFO) {
+ /* Server side FIFO connection. */
+ int fd1, fd2, keepalive;
+
+ /* Create fifos if necessary. */
+ if (access (np->path1, 0) < 0) {
+ if (mknod (np->path1, 010660, 0) < 0)
+ goto err;
+ else
+ np->flags |= F_DEL1;
+ }
+ if (access (np->path2, 0) < 0) {
+ if (mknod (np->path2, 010660, 0) < 0) {
+ unlink (np->path1);
+ goto err;
+ } else
+ np->flags |= F_DEL2;
+ }
+
+ /* Open the output fifo (which is the client's input fifo).
+ * We have to open it ourselves first as a client to get
+ * around the fifo open-no-client error.
+ */
+ if ((fd1 = open (np->path2, O_RDONLY|O_NDELAY)) != -1) {
+ if ((fd2 = open (np->path2, O_WRONLY|O_NDELAY)) != -1)
+ fcntl (fd2, F_SETFL, O_WRONLY);
+ close (fd1);
+ }
+
+ /* Open the input fifo. */
+ if ((fd1 = open (np->path1, O_RDONLY|O_NDELAY)) == -1)
+ fprintf (stderr, "Warning: cannot open %s\n", np->path1);
+ else {
+ /* Clear O_NDELAY for reading. */
+ fcntl (fd1, F_SETFL, O_RDONLY);
+
+ /* Open the client's output fifo as a pseudo-client to
+ * make it appear that a client is connected.
+ */
+ keepalive = open (np->path1, O_WRONLY);
+ }
+
+ /* Clean up if there is an error. */
+ if (fd1 < 0 || fd1 > MAXOFILES || fd2 < 0 || fd2 > MAXOFILES) {
+ if (fd1 > 0) {
+ close (fd1);
+ close (keepalive);
+ }
+ if (fd2 > 0)
+ close (fd2);
+ fd = ERR;
+ } else {
+ np->datain = fd1;
+ np->dataout = fd2;
+ np->keepalive = keepalive;
+ fd = fd1;
+ }
+
+ } else
+ goto err;
+ break;
+
+ default:
+ fd = ERR;
+ }
+
+ /* Initialize the kernel file descriptor. Seeks are illegal for a
+ * network device; network devices are "streaming" files (blksize=1)
+ * which can only be accessed sequentially.
+ */
+ if ((*chan = fd) == ERR) {
+err: free (np);
+ *chan = XERR;
+ } else if (fd >= MAXOFILES) {
+ free (np);
+ close (fd);
+ *chan = XERR;
+ } else {
+ zfd[fd].fp = NULL;
+ zfd[fd].fpos = 0L;
+ zfd[fd].nbytes = 0;
+ zfd[fd].flags = 0;
+ zfd[fd].filesize = 0;
+ set_desc(fd,np);
+ }
+}
+
+
+/* ZCLSND -- Close a network device.
+ */
+ZCLSND (fd, status)
+XINT *fd;
+XINT *status;
+{
+ register struct portal *np = get_desc(*fd);
+ register int flags;
+
+ if (np) {
+ flags = np->flags;
+
+ if (np->datain > 0)
+ close (np->datain);
+ if (np->dataout > 0 && np->dataout != np->datain)
+ close (np->dataout);
+ if (np->keepalive > 0)
+ close (np->keepalive);
+
+ if (flags & F_DEL1)
+ unlink (np->path1);
+ if (flags & F_DEL2)
+ unlink (np->path2);
+
+ free (np);
+ set_desc(*fd,NULL);
+ *status = XOK;
+
+ } else
+ *status = XERR;
+}
+
+
+/* ZARDND -- "Asynchronous" binary block read. Initiate a read of at most
+ * maxbytes bytes from the file FD into the buffer BUF. Status is returned
+ * in a subsequent call to ZAWTND.
+ */
+ZARDND (chan, buf, maxbytes, offset)
+XINT *chan; /* UNIX file number */
+XCHAR *buf; /* output buffer */
+XINT *maxbytes; /* max bytes to read */
+XLONG *offset; /* 1-indexed file offset to read at */
+{
+ register int n;
+ int fd = *chan;
+ struct fiodes *kfp = &zfd[fd];
+ register struct portal *np = get_desc (fd);
+ register char *ip;
+ register XCHAR *op;
+ int nbytes, maxread;
+
+ /* Determine maximum amount of data to be read. */
+ maxread = (np->flags & F_TEXT) ? *maxbytes/sizeof(XCHAR) : *maxbytes;
+
+ /* The following call to select shouldn't be necessary, but it
+ * appears that, due to the way we open a FIFO with O_NDELAY, read
+ * can return zero if read is called before the process on the other
+ * end writes any data. This happens even though fcntl is called to
+ * restore blocking i/o after the open.
+ */
+ if (np->domain == FIFO && np->datain < MAXSEL) {
+#ifdef SOLARIS
+ fd_set readfds;
+ FD_ZERO (&readfds);
+ FD_SET (np->datain, &readfds);
+#else
+ int readfds = (1 << np->datain);
+#endif
+ select (MAXSEL, &readfds, NULL, NULL, NULL);
+ nbytes = read (np->datain, (char *)buf, maxread);
+ } else
+ nbytes = read (np->datain, (char *)buf, maxread);
+
+ if ((n = nbytes) && (np->flags & F_TEXT)) {
+ op = (XCHAR *) buf;
+ op[n] = XEOS;
+ for (ip = (char *)buf; --n >= 0; )
+ op[n] = ip[n];
+ nbytes *= sizeof(XCHAR);
+ }
+
+ kfp->nbytes = nbytes;
+}
+
+
+/* ZAWRND -- "Asynchronous" binary block write. Initiate a write of exactly
+ * nbytes bytes from the buffer BUF to the file FD. Status is returned in a
+ * subsequent call to ZAWTND.
+ */
+ZAWRND (chan, buf, nbytes, offset)
+XINT *chan; /* UNIX file number */
+XCHAR *buf; /* buffer containing data */
+XINT *nbytes; /* nbytes to be written */
+XLONG *offset; /* 1-indexed file offset */
+{
+ register int fd = *chan;
+ register struct fiodes *kfp = &zfd[fd];
+ register struct portal *np = get_desc (fd);
+ int nwritten, maxbytes, n;
+ char *text, *ip = (char *)buf;
+ char obuf[SZ_OBUF];
+
+ maxbytes = (np->domain == FIFO || (np->flags & F_TEXT)) ? SZ_OBUF : 0;
+ for (nwritten=0; nwritten < *nbytes; nwritten += n, ip+=n) {
+ n = *nbytes - nwritten;
+ if (maxbytes)
+ n = min (maxbytes, n);
+
+ if (np->flags & F_TEXT) {
+ register XCHAR *ipp = (XCHAR *)ip;
+ register char *op = (char *)obuf;
+ register int nbytes = n;
+
+ while (--nbytes >= 0)
+ *op++ = *ipp++;
+ text = obuf;
+ if ((n = write (np->dataout, text, n / sizeof(XCHAR))) < 0)
+ break;
+ n *= sizeof(XCHAR);
+
+ } else {
+ text = ip;
+ if ((n = write (np->dataout, text, n)) < 0)
+ break;
+ }
+ }
+
+ kfp->nbytes = nwritten;
+}
+
+
+/* ZAWTND -- "Wait" for an "asynchronous" read or write to complete, and
+ * return the number of bytes read or written, or ERR.
+ */
+ZAWTND (fd, status)
+XINT *fd;
+XINT *status;
+{
+ if ((*status = zfd[*fd].nbytes) == ERR)
+ *status = XERR;
+}
+
+
+/* ZSTTND -- Return file status information for a network device.
+ */
+ZSTTND (fd, param, lvalue)
+XINT *fd;
+XINT *param;
+XLONG *lvalue;
+{
+ register struct fiodes *kfp = &zfd[*fd];
+ struct stat filstat;
+
+ switch (*param) {
+ case FSTT_BLKSIZE:
+ (*lvalue) = 0L;
+ break;
+
+ case FSTT_FILSIZE:
+ (*lvalue) = 0L;
+ break;
+
+ case FSTT_OPTBUFSIZE:
+ /* On some systems this parameter may be device dependent in which
+ * case device dependent code should be substituted here.
+ */
+ (*lvalue) = ND_OPTBUFSIZE;
+ break;
+
+ case FSTT_MAXBUFSIZE:
+ /* On some systems this parameter may be device dependent in which
+ * case device dependent code should be substituted here.
+ */
+ (*lvalue) = ND_MAXBUFSIZE;
+ break;
+
+ default:
+ (*lvalue) = XERR;
+ break;
+ }
+}
+
+
+/*
+ * Internal routines.
+ * ----------------------------
+ */
+
+/* GETSTR -- Internal routine to extract a colon delimited string from a
+ * network filename.
+ */
+static int
+getstr (ipp, obuf, maxch)
+char **ipp;
+char *obuf;
+int maxch;
+{
+ register char *ip = *ipp, *op = obuf;
+ register char *otop = obuf + maxch;
+ char *start;
+
+ while (isspace(*ip))
+ ip++;
+ for (start=ip; *ip; ip++) {
+ if (*ip == ':') {
+ ip++;
+ break;
+ } else if (op && op < otop)
+ *op++ = *ip;
+ }
+
+ if (op)
+ *op = '\0';
+ *ipp = ip;
+
+ return (ip - start);
+}
diff --git a/vendor/x11iraf/ximtool/clients.old/mkpkg b/vendor/x11iraf/ximtool/clients.old/mkpkg
new file mode 100644
index 00000000..3b50a906
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/mkpkg
@@ -0,0 +1,34 @@
+# Make the ISM Client tasks.
+
+$call relink
+$exit
+
+update:
+ $call relink
+ $call install
+ ;
+
+relink:
+ $set LIBS = "-lslalib"
+ $update libpkg.a
+ $omake x_ism.x
+ $link -z x_ism.o libpkg.a -o ism_wcspix.e $(LIBS)
+ ;
+
+debug:
+ $set LIBS = "-lslalib"
+ $set XFLAGS = "$(XFLAGS) -xqF"
+ $update libpkg.a
+ $omake x_ism.x
+ $link -z -x x_ism.o libpkg.a -o ism_wcspix.e $(LIBS)
+ ;
+
+install:
+ $move ism_wcspix.e ../../bin/ism_wcspix.e
+ ;
+
+
+libpkg.a:
+ @lib
+ @wcspix
+ ;
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/README b/vendor/x11iraf/ximtool/clients.old/wcspix/README
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/README
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/class.com b/vendor/x11iraf/ximtool/clients.old/wcspix/class.com
new file mode 100644
index 00000000..c6116c11
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/class.com
@@ -0,0 +1,6 @@
+# Class common.
+int cl_nclass # number of defined functions
+int cl_table[LEN_CLASS,MAX_CLASSES] # class table
+char cl_names[SZ_CLNAME,MAX_CLASSES] # class names
+common /class_com/ cl_nclass, cl_table, cl_names
+
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/mkpkg b/vendor/x11iraf/ximtool/clients.old/wcspix/mkpkg
new file mode 100644
index 00000000..baa3b090
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/mkpkg
@@ -0,0 +1,15 @@
+# Make the WCSPIX ISM Client task.
+
+$checkout libpkg.a ../
+$update libpkg.a
+$checkin libpkg.a ../
+$exit
+
+libpkg.a:
+ t_wcspix.x wcspix.h class.com
+ wcimage.x wcspix.h
+ wcmef.x wcspix.h
+ wcmspec.x wcspix.h
+ wcunknown.x wcspix.h
+ ;
+
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.f b/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.f
new file mode 100644
index 00000000..a1fce8a5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.f
@@ -0,0 +1,1124 @@
+ subroutine twcspx ()
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer len
+ integer discot
+ integer ncmd
+ integer*2 socket(255 +1)
+ integer*2 cmd(255 +1)
+ integer*2 messae(1023 +1)
+ integer*2 buf(12 +1)
+ integer objid
+ integer regid
+ real x
+ real y
+ integer*2 ref(255 +1)
+ integer*2 temple(1023 +1)
+ integer*2 param(255 +1)
+ logical debug
+ integer*4 clktie
+ integer wpinit
+ integer envges
+ integer envgei
+ integer strdic
+ integer ximcot
+ integer wpread
+ integer ximinr
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer sw0001
+ integer*2 st0001(7)
+ integer*2 st0002(17)
+ integer*2 st0003(7)
+ integer*2 st0004(5)
+ integer*2 st0005(13)
+ integer*2 st0006(28)
+ integer*2 st0007(8)
+ integer*2 st0008(22)
+ integer*2 st0009(73)
+ integer*2 st0010(31)
+ integer*2 st0011(35)
+ integer*2 st0012(41)
+ integer*2 st0013(8)
+ integer*2 st0014(16)
+ integer*2 st0015(38)
+ integer*2 st0016(8)
+ integer*2 st0017(25)
+ integer*2 st0018(16)
+ integer*2 st0019(27)
+ integer*2 st0020(30)
+ save
+ integer iyy
+ data st0001 / 73, 83, 77, 68, 69, 86, 0/
+ data (st0002(iyy),iyy= 1, 8) /117,110,105,120, 58, 47,116,109/
+ data (st0002(iyy),iyy= 9,16) /112, 47, 46, 73, 83, 77, 37,100/
+ data (st0002(iyy),iyy=17,17) / 0/
+ data st0003 /119, 99,115,112,105,120, 0/
+ data st0004 /116,101,120,116, 0/
+ data (st0005(iyy),iyy= 1, 8) / 87, 67, 83, 80, 73, 88, 95, 68/
+ data (st0005(iyy),iyy= 9,13) / 69, 66, 85, 71, 0/
+ data (st0006(iyy),iyy= 1, 8) /105,110,102,111, 32,123, 32, 37/
+ data (st0006(iyy),iyy= 9,16) /115, 58, 32, 87, 67, 83, 80, 73/
+ data (st0006(iyy),iyy=17,24) / 88, 32, 67,111,110,110,101, 99/
+ data (st0006(iyy),iyy=25,28) /116,125, 10, 0/
+ data st0007 /105,115,109, 95,109,115,103, 0/
+ data (st0008(iyy),iyy= 1, 8) /109,101,115,115, 97,103,101, 58/
+ data (st0008(iyy),iyy= 9,16) / 32, 39, 37,115, 39, 32,108,101/
+ data (st0008(iyy),iyy=17,22) /110, 61, 37,100, 10, 0/
+ data (st0009(iyy),iyy= 1, 8) /124,115,101,116,124,103,101,116/
+ data (st0009(iyy),iyy= 9,16) /124,113,117,105,116,124,105,110/
+ data (st0009(iyy),iyy=17,24) /105,116,105, 97,108,105,122,101/
+ data (st0009(iyy),iyy=25,32) /124, 99, 97, 99,104,101,124,117/
+ data (st0009(iyy),iyy=33,40) /110, 99, 97, 99,104,101, 9, 9/
+ data (st0009(iyy),iyy=41,48) / 9, 32,124,119, 99,115,116,114/
+ data (st0009(iyy),iyy=49,56) / 97,110,124,119, 99,115,108,105/
+ data (st0009(iyy),iyy=57,64) /115,116,124,111, 98,106,105,110/
+ data (st0009(iyy),iyy=65,72) /102,111,124,100,101, 98,117,103/
+ data (st0009(iyy),iyy=73,73) / 0/
+ data (st0010(iyy),iyy= 1, 8) /105,110,102,111, 32,123, 32, 37/
+ data (st0010(iyy),iyy= 9,16) /115, 58, 32, 87, 67, 83, 80, 73/
+ data (st0010(iyy),iyy=17,24) / 88, 32, 73,110,105,116,105, 97/
+ data (st0010(iyy),iyy=25,31) /108,105,122,101,125, 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 99, 97, 99,104,101, 58, 32,111/
+ data (st0011(iyy),iyy= 9,16) / 98,106,105,100, 61, 37,100, 32/
+ data (st0011(iyy),iyy=17,24) /114,101,103,105,100, 61, 37,100/
+ data (st0011(iyy),iyy=25,32) / 32,114,101,102, 61, 39, 37,115/
+ data (st0011(iyy),iyy=33,35) / 39, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) /105,110,102,111, 32,123, 32, 37/
+ data (st0012(iyy),iyy= 9,16) /115, 58, 32, 87, 67, 83, 80, 73/
+ data (st0012(iyy),iyy=17,24) / 88, 32, 67, 97, 99,104,101, 32/
+ data (st0012(iyy),iyy=25,32) / 32, 32,111, 98,106,105,100, 61/
+ data (st0012(iyy),iyy=33,40) / 37, 51,100, 32, 37,115,125, 10/
+ data (st0012(iyy),iyy=41,41) / 0/
+ data st0013 /105,115,109, 95,109,115,103, 0/
+ data (st0014(iyy),iyy= 1, 8) /117,110, 99, 97, 99,104,101, 58/
+ data (st0014(iyy),iyy= 9,16) / 32,105,100, 61, 37,100, 10, 0/
+ data (st0015(iyy),iyy= 1, 8) /105,110,102,111, 32,123, 32, 37/
+ data (st0015(iyy),iyy= 9,16) /115, 58, 32, 87, 67, 83, 80, 73/
+ data (st0015(iyy),iyy=17,24) / 88, 32, 85,110, 99, 97, 99,104/
+ data (st0015(iyy),iyy=25,32) /101, 32,111, 98,106,105,100, 61/
+ data (st0015(iyy),iyy=33,38) / 37, 51,100,125, 10, 0/
+ data st0016 /105,115,109, 95,109,115,103, 0/
+ data (st0017(iyy),iyy= 1, 8) /119, 99,115,116,114, 97,110, 58/
+ data (st0017(iyy),iyy= 9,16) / 32,105,100, 61, 37,100, 32, 32/
+ data (st0017(iyy),iyy=17,24) / 40, 37,103, 44, 37,103, 41, 10/
+ data (st0017(iyy),iyy=25,25) / 0/
+ data (st0018(iyy),iyy= 1, 8) /119, 99,115,108,105,115,116, 58/
+ data (st0018(iyy),iyy= 9,16) / 32,105,100, 61, 37,100, 10, 0/
+ data (st0019(iyy),iyy= 1, 8) /111, 98,106,105,110,102,111, 58/
+ data (st0019(iyy),iyy= 9,16) / 32,105,100, 61, 37,100, 32, 32/
+ data (st0019(iyy),iyy=17,24) /116,101,109,112, 61, 39, 37,115/
+ data (st0019(iyy),iyy=25,27) / 39, 10, 0/
+ data (st0020(iyy),iyy= 1, 8) / 73, 83, 77, 32,100,101,102, 97/
+ data (st0020(iyy),iyy= 9,16) /117,108,116, 58, 32,108,101,110/
+ data (st0020(iyy),iyy=17,24) / 61, 37,100, 32,109,115,103, 61/
+ data (st0020(iyy),iyy=25,30) / 39, 37,115, 39, 10, 0/
+ call aclrc (messae, 1023 )
+ call aclrc (cmd, 255 )
+ call aclrc (socket, 255 )
+ if (.not.(envges (st0001, socket, 255 ) .le. 0).and.(.not.
+ * xerflg)) goto 110
+ if (xerflg) goto 100
+ call xstrcy(st0002, socket, 255 )
+110 continue
+ if (.not.(ximcot (socket, st0003, st0004) .eq. -1)) goto 120
+ goto 100
+120 continue
+ if (.not.(ximinr() .eq. -1)) goto 130
+ goto 100
+130 continue
+ wp = wpinit ()
+ call xerpsh
+ memi(wp+6) = envgei (st0005)
+ if (.not.xerpop()) goto 140
+ memi(wp+6) = 0
+140 continue
+ call wpcnve (clktie(0), buf, 12 )
+ call sprinf (messae, 1023 , st0006)
+ call pargsr (buf)
+ call ximmee (st0007, messae)
+ discot = 1
+ debug = (.false. .or. memi(wp+6) .gt. 0)
+150 if (.not.(wpread (messae, len) .ne. -2).and.(.not.xerflg)) goto
+ * 151
+ if (xerflg) goto 100
+ if (.not.(debug)) goto 160
+ call eprinf(st0008)
+ call pargsr (messae)
+ call pargi (len)
+160 continue
+ if (.not.(len .le. 0)) goto 170
+ discot = 0
+ goto 151
+170 continue
+ call sscan (messae)
+ call gargwd (cmd, 1023 )
+ ncmd = strdic (cmd, cmd, 1023 , st0009)
+ sw0001=(ncmd)
+ goto 180
+190 continue
+ discot = 0
+ goto 151
+200 continue
+ call wpcnve (clktie(0), buf, 12 )
+ call sprinf (messae, 1023 , st0010)
+ call pargsr (buf)
+ call wpinie (wp)
+ goto 181
+210 continue
+ call gargwd (ref, 255 )
+ call gargi (objid)
+ call gargi (regid)
+ if (.not.(debug)) goto 220
+ call xprinf(st0011)
+ call pargi(objid)
+ call pargi(regid)
+ call pargsr(ref)
+220 continue
+ call wpcnve (clktie(0), buf, 12 )
+ call sprinf (messae, 1023 , st0012)
+ call pargsr (buf)
+ call pargi (objid)
+ call pargsr (ref)
+ call ximmee (st0013, messae)
+ call wpcace (wp, objid, regid, ref)
+ goto 181
+230 continue
+ call gargi (objid)
+ if (.not.(debug)) goto 240
+ call xprinf(st0014)
+ call pargi(objid)
+240 continue
+ call wpcnve (clktie(0), buf, 12 )
+ call sprinf (messae, 1023 , st0015)
+ call pargsr (buf)
+ call pargi (objid)
+ call ximmee (st0016, messae)
+ call wpunce (wp, objid)
+ goto 181
+250 continue
+ call gargi (objid)
+ call gargr (x)
+ call gargr (y)
+ if (.not.(debug)) goto 260
+ call xprinf(st0017)
+ call pargi(objid)
+ call pargr (x)
+ call pargr (y)
+260 continue
+ call wpwcsn (wp, objid, x, y)
+ goto 181
+270 continue
+ call gargi (objid)
+ if (.not.(debug)) goto 280
+ call xprinf(st0018)
+ call pargi(objid)
+280 continue
+ call wpwcst (wp, objid)
+ goto 181
+290 continue
+ call gargi (objid)
+ call gargwd (temple, 255 )
+ if (.not.(debug)) goto 300
+ call xprinf(st0019)
+ call pargi(objid)
+ call pargsr (temple)
+300 continue
+ call wpobjo (wp, objid, temple)
+ goto 181
+310 continue
+ call gargwd (param, 255 )
+ call wpsetr (wp, param)
+ goto 181
+320 continue
+ goto 181
+330 continue
+ debug = .not.(debug)
+ goto 181
+340 continue
+ if (.not.(debug)) goto 350
+ call eprinf (st0020)
+ call pargi(len)
+ call pargsr(messae)
+350 continue
+ goto 181
+180 continue
+ if (sw0001.lt.1.or.sw0001.gt.10) goto 340
+ goto (310,320,190,200,210,230,250,270,290,330),sw0001
+181 continue
+ call aclrc (messae, 1023 )
+ goto 150
+151 continue
+ call ximdit (discot)
+ call wpshun (wp)
+100 return
+ end
+ subroutine wpinie (wp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer cp
+ integer wpid2j
+ integer i
+ save
+ i=0
+110 if (.not.(i .lt. 256 )) goto 112
+ cp = wpid2j (wp, i)
+ if (.not.(cp .ne. 0 .and. memi(cp) .ne. 0)) goto 120
+ call wpunce (wp, memi(cp) )
+120 continue
+111 i=i+1
+ goto 110
+112 continue
+100 return
+ end
+ subroutine wpcace (wp, objid, regid, ref)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer objid
+ integer regid
+ integer*2 ref(*)
+ integer cp
+ integer i
+ integer class
+ integer*2 alert(255 +1)
+ integer wpclas
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ common /classm/ clncls, cltabe, clnams
+ integer*2 st0001(29)
+ integer*2 st0002(1)
+ integer*2 st0003(1)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /119,112, 95, 99, 97, 99,104,101/
+ data (st0001(iyy),iyy= 9,16) / 58, 32, 85,110, 97, 98,108,101/
+ data (st0001(iyy),iyy=17,24) / 32,116,111, 32, 99, 97, 99,104/
+ data (st0001(iyy),iyy=25,29) /101, 10, 37,115, 0/
+ data st0002 / 0/
+ data st0003 / 0/
+ i=0
+110 if (.not.(i .lt. 256 )) goto 112
+ cp = memi(memi(wp ) +i)
+ if (.not.(memi(cp+4) .eq. 0)) goto 120
+ goto 112
+120 continue
+111 i=i+1
+ goto 110
+112 continue
+ class = wpclas (ref)
+ if (.not.(class .eq. -1)) goto 130
+ call sprinf (alert, 255 , st0001)
+ call pargsr (ref)
+ call ximalt (alert, st0002, st0003)
+ goto 100
+130 continue
+ memi(cp+2) = class
+ if (.not.(class .ne. 0 .and. cltabe(1,class) .ne. 0)) goto 140
+ call zcall2 (cltabe(1,class) , cp, wp)
+140 continue
+ if (.not.(class .ne. 0 .and. cltabe(2,class) .ne. 0)) goto 150
+ call zcall4 (cltabe(2,class) , cp, objid, regid, ref)
+150 continue
+100 return
+ end
+ subroutine wpunce (wp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer id
+ integer cp
+ integer wpid2j
+ integer class
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ common /classm/ clncls, cltabe, clnams
+ save
+ cp = wpid2j (wp, id)
+ if (.not.(cp .eq. 0)) goto 110
+ goto 100
+110 continue
+ class = memi(cp+2)
+ if (.not.(class .ne. 0 .and. cltabe(3,class) .ne. 0)) goto 120
+ call zcall2 (cltabe(3,class) , cp, id)
+120 continue
+ memi(cp+4) = 0
+100 return
+ end
+ subroutine wpwcsn (wp, id, x, y)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer id
+ real x
+ real y
+ integer cp
+ integer wpid2j
+ integer class
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ common /classm/ clncls, cltabe, clnams
+ save
+ cp = wpid2j (wp, id)
+ if (.not.(cp .eq. 0)) goto 110
+ goto 100
+110 continue
+ class = memi(cp+2)
+ if (.not.(class .ne. 0 .and. cltabe(4,class) .ne. 0)) goto 120
+ call zcall4 (cltabe(4,class) , cp, id, x, y)
+120 continue
+100 return
+ end
+ subroutine wpwcst (wp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer id
+ integer cp
+ integer wpid2j
+ integer class
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ common /classm/ clncls, cltabe, clnams
+ save
+ cp = wpid2j (wp, id)
+ if (.not.(cp .eq. 0)) goto 110
+ goto 100
+110 continue
+ class = memi(cp+2)
+ if (.not.(class .ne. 0 .and. cltabe(5,class) .ne. 0)) goto 120
+ call zcall2 (cltabe(5,class) , cp, id)
+120 continue
+100 return
+ end
+ subroutine wpobjo (wp, id, temple)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer id
+ integer*2 temple(*)
+ integer cp
+ integer wpid2j
+ integer class
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ common /classm/ clncls, cltabe, clnams
+ save
+ cp = wpid2j (wp, id)
+ if (.not.(cp .eq. 0)) goto 110
+ goto 100
+110 continue
+ class = memi(cp+2)
+ if (.not.(class .ne. 0 .and. cltabe(6,class) .ne. 0)) goto 120
+ call zcall3 (cltabe(6,class) , cp, id, temple)
+120 continue
+100 return
+ end
+ subroutine wpsetr (wp, param)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer*2 param(255 +1)
+ integer*2 arg(32 +1)
+ integer*2 buf(32 +1)
+ integer*2 msg(32 +1)
+ integer line
+ integer strdic
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ integer sw0001,sw0002,sw0003
+ common /classm/ clncls, cltabe, clnams
+ integer*2 st0001(11)
+ integer*2 st0002(23)
+ integer*2 st0003(4)
+ integer*2 st0004(4)
+ integer*2 st0005(66)
+ integer*2 st0006(12)
+ integer*2 st0007(14)
+ integer*2 st0008(30)
+ integer*2 st0009(12)
+ integer*2 st0010(13)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /115,101,116, 58, 32, 37,115, 32/
+ data (st0001(iyy),iyy= 9,11) / 61, 32, 0/
+ data (st0002(iyy),iyy= 1, 8) /124,112,115,105,122,101,124, 98/
+ data (st0002(iyy),iyy= 9,16) /112,109,124,119, 99,115,124,102/
+ data (st0002(iyy),iyy=17,23) /111,114,109, 97,116,124, 0/
+ data st0003 / 37,100, 10, 0/
+ data st0004 / 37,100, 10, 0/
+ data (st0005(iyy),iyy= 1, 8) /124,110,111,110,101,124,108,111/
+ data (st0005(iyy),iyy= 9,16) /103,105, 99, 97,108,124,112,104/
+ data (st0005(iyy),iyy=17,24) /121,115,105, 99, 97,108,124,119/
+ data (st0005(iyy),iyy=25,32) /111,114,108,100,124,115,107,121/
+ data (st0005(iyy),iyy=33,40) / 9, 9, 9,124, 97,109,112,108/
+ data (st0005(iyy),iyy=41,48) /105,102,105,101,114,124, 99, 99/
+ data (st0005(iyy),iyy=49,56) /100,124,100,101,116,101, 99,116/
+ data (st0005(iyy),iyy=57,64) /111,114,124,111,116,104,101,114/
+ data (st0005(iyy),iyy=65,66) /124, 0/
+ data (st0006(iyy),iyy= 1, 8) / 37,115, 32,108,105,110,101, 61/
+ data (st0006(iyy),iyy= 9,12) / 37,100, 10, 0/
+ data (st0007(iyy),iyy= 1, 8) /119, 99,115,116,121,112,101, 32/
+ data (st0007(iyy),iyy= 9,14) / 37,115, 32, 37,100, 0/
+ data (st0008(iyy),iyy= 1, 8) /124,100,101,102, 97,117,108,116/
+ data (st0008(iyy),iyy= 9,16) /124,104,109,115,124,100,101,103/
+ data (st0008(iyy),iyy=17,24) /114,101,101,115,124,114, 97,100/
+ data (st0008(iyy),iyy=25,30) /105, 97,110,115,124, 0/
+ data (st0009(iyy),iyy= 1, 8) / 37,115, 32,108,105,110,101, 61/
+ data (st0009(iyy),iyy= 9,12) / 37,100, 10, 0/
+ data (st0010(iyy),iyy= 1, 8) /119, 99,115,102,109,116, 32, 37/
+ data (st0010(iyy),iyy= 9,13) /115, 32, 37,100, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+ call pargsr(param)
+110 continue
+ sw0001=(strdic (param, param, 32 , st0002))
+ goto 120
+130 continue
+ call gargi (memi(wp+1) )
+ if (.not.(.false.)) goto 140
+ call xprinf(st0003)
+ call pargi(memi(wp+1) )
+140 continue
+ goto 121
+150 continue
+ call gargi (memi(wp+2) )
+ if (.not.(.false.)) goto 160
+ call xprinf(st0004)
+ call pargi(memi(wp+2) )
+160 continue
+ goto 121
+170 continue
+ call gargwd (buf, 255 )
+ call gargi (line)
+ call xstrcy(buf, arg, 32 )
+ call strlwr (buf)
+ sw0002=(strdic (buf, buf, 255 , st0005))
+ goto 180
+190 continue
+ memi(memi(wp+3) +line-1) = 2
+ goto 181
+200 continue
+ memi(memi(wp+3) +line-1) = 3
+ goto 181
+210 continue
+ memi(memi(wp+3) +line-1) = 4
+ goto 181
+220 continue
+ memi(memi(wp+3) +line-1) = 1
+ goto 181
+230 continue
+ memi(memi(wp+3) +line-1) = 6
+ goto 181
+240 continue
+ memi(memi(wp+3) +line-1) = 3
+ goto 181
+250 continue
+ memi(memi(wp+3) +line-1) = 8
+ goto 181
+260 continue
+ memi(memi(wp+3) +line-1) = 5
+ goto 181
+180 continue
+ if (sw0002.lt.1.or.sw0002.gt.8) goto 260
+ goto (220,190,200,210,260,230,240,250),sw0002
+181 continue
+ call xstrcy(buf, memc(memi(wp+4) +(32 *(line-1))), 32 )
+ if (.not.(.false.)) goto 270
+ call xprinf(st0006)
+ call pargsr(buf)
+ call pargi(line)
+270 continue
+ call sprinf (msg, 255 , st0007)
+ call pargsr (arg)
+ call pargi (line)
+ call wcspie (msg)
+ goto 121
+280 continue
+ call gargwd (buf, 255 )
+ call gargi (line)
+ call xstrcy(buf, arg, 32 )
+ call strlwr (buf)
+ sw0003=(strdic (buf, buf, 255 , st0008))
+ goto 290
+300 continue
+ memi(memi(wp+5) +line-1) = 1
+ goto 291
+310 continue
+ memi(memi(wp+5) +line-1) = 2
+ goto 291
+320 continue
+ memi(memi(wp+5) +line-1) = 3
+ goto 291
+330 continue
+ memi(memi(wp+5) +line-1) = 4
+ goto 291
+340 continue
+ memi(memi(wp+5) +line-1) = 1
+ goto 291
+290 continue
+ if (sw0003.lt.1.or.sw0003.gt.4) goto 340
+ goto (300,310,320,330),sw0003
+291 continue
+ if (.not.(.false.)) goto 350
+ call xprinf(st0009)
+ call pargsr(buf)
+ call pargi(line)
+350 continue
+ call sprinf (msg, 255 , st0010)
+ call pargsr (arg)
+ call pargi (line)
+ call wcspie (msg)
+ goto 121
+120 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 121
+ goto (130,150,170,280),sw0001
+121 continue
+100 return
+ end
+ subroutine wpgetr (wp, param)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer*2 param(255 +1)
+ integer strdic
+ integer sw0001
+ integer*2 st0001(11)
+ integer*2 st0002(23)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /115,101,116, 58, 32, 37,115, 32/
+ data (st0001(iyy),iyy= 9,11) / 61, 32, 0/
+ data (st0002(iyy),iyy= 1, 8) /124,112,115,105,122,101,124, 98/
+ data (st0002(iyy),iyy= 9,16) /112,109,124,119, 99,115,124,102/
+ data (st0002(iyy),iyy=17,23) /111,114,109, 97,116,124, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+ call pargsr(param)
+110 continue
+ sw0001=(strdic (param, param, 32 , st0002))
+ goto 120
+130 continue
+ goto 121
+140 continue
+ goto 121
+150 continue
+ goto 121
+160 continue
+ goto 121
+120 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 121
+ goto (130,140,150,160),sw0001
+121 continue
+100 return
+ end
+ integer function wpinit ()
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer i
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(37)
+ integer*2 st0002(5)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 69,114,114,111,114, 32,111,112/
+ data (st0001(iyy),iyy= 9,16) /101,110,105,110,103, 32, 87, 67/
+ data (st0001(iyy),iyy=17,24) / 83, 80, 73, 88, 32,116, 97,115/
+ data (st0001(iyy),iyy=25,32) /107, 32,115,116,114,117, 99,116/
+ data (st0001(iyy),iyy=33,37) /117,114,101, 46, 0/
+ data st0002 /110,111,110,101, 0/
+ call xerpsh
+ call xcallc(wp, 7, 10 )
+ if (.not.xerpop()) goto 110
+ call xerror(0, st0001)
+ if (xerflg) goto 100
+110 continue
+ call xcallc(memi(wp+3) , 4 , 4)
+ call xcallc(memi(wp+5) , 4 , 4)
+ call xcallc(memi(wp+4) , (32 *4 ), 2)
+ i=1
+120 if (.not.(i .le. 4 )) goto 122
+ memi(memi(wp+5) +i-1) = 1
+ memi(memi(wp+3) +i-1) = 2
+ call xstrcy(st0002, memc(memi(wp+4) +(32 *(i-1))), 32 )
+121 i=i+1
+ goto 120
+122 continue
+ call xcallc(memi(wp ) , 256 , 10 )
+ i=0
+130 if (.not.(i .lt. 256 )) goto 132
+ call xcallc(memi(memi(wp ) +i) , 135 , 10 )
+131 i=i+1
+ goto 130
+132 continue
+ memi(wp+1) = 0
+ memi(wp+2) = 1
+ call wpclat()
+ wpinit = (wp)
+ goto 100
+100 return
+ end
+ integer function wpread (messae, len)
+ integer len
+ integer*2 messae(*)
+ integer nread
+ integer ximred
+ logical xerflg
+ common /xercom/ xerflg
+ save
+ nread = ximred (messae, len)
+ if (xerflg) goto 100
+ wpread = (nread)
+ goto 100
+100 return
+ end
+ subroutine wpshun (wp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer i
+ save
+ call xmfree(memi(wp+4) , 2)
+ call xmfree(memi(wp+5) , 4)
+ call xmfree(memi(wp+3) , 4)
+ i=0
+110 if (.not.(i .lt. 256 )) goto 112
+ call xmfree(memi(memi(wp ) +i) , 10 )
+111 i=i+1
+ goto 110
+112 continue
+ call xmfree(memi(wp ) , 10 )
+ call xmfree(wp, 10 )
+100 return
+ end
+ integer function wpclas (object)
+ integer*2 object(*)
+ integer n
+ integer class
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer*2 ch
+ integer*2 buf(255 +1)
+ integer xstrln
+ integer stridx
+ logical streq
+ integer immap
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(9)
+ integer*2 st0002(8)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 47,100,101,118, 47,112,105,120/
+ data (st0001(iyy),iyy= 9, 9) / 0/
+ data st0002 /100,101,118, 36,112,105,120, 0/
+ call imgime (object, buf, 255 )
+ n = xstrln(buf) - 7
+ if (.not.(streq (buf(n), st0001))) goto 110
+ call xstrcy(st0002, buf, 255 )
+ ch = 91
+ n = stridx (ch, object)
+ if (.not.(n .gt. 0)) goto 120
+ call xstrct(object(n), buf, 255 )
+120 continue
+ call xstrcy(buf, object, 255 )
+110 continue
+ class = 1
+ call xerpsh
+ im = immap (object, 1 , 0)
+ if (xerpop()) goto 130
+ class = 2
+ call imunmp (im)
+130 continue
+ wpclas = (class)
+ goto 100
+100 return
+ end
+ integer function wpid2j (wp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer id
+ integer i
+ integer cp
+ save
+ i=0
+110 if (.not.(i .lt. 256 )) goto 112
+ cp = memi(memi(wp ) +i)
+ if (.not.(memi(cp) .eq. id)) goto 120
+ wpid2j = (cp)
+ goto 100
+120 continue
+111 i=i+1
+ goto 110
+112 continue
+ wpid2j = (0)
+ goto 100
+100 return
+ end
+ subroutine wpclat ()
+ external imgint
+ external imgcae
+ external imgune
+ external imgwcn
+ external imgwct
+ external imgobo
+ external mefint
+ external mefcae
+ external mefune
+ external mefwcn
+ external mefwct
+ external mefobo
+ external mspint
+ external mspcae
+ external mspune
+ external mspwcn
+ external mspwct
+ external mspobo
+ external unkint
+ external unkcae
+ external unkune
+ external unkwcn
+ external unkwct
+ external unkobo
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ integer locpr
+ common /classm/ clncls, cltabe, clnams
+ integer*2 st0001(8)
+ integer*2 st0002(6)
+ integer*2 st0003(4)
+ integer*2 st0004(10)
+ save
+ integer iyy
+ data st0001 /117,110,107,110,111,119,110, 0/
+ data st0002 /105,109, 97,103,101, 0/
+ data st0003 /109,101,102, 0/
+ data (st0004(iyy),iyy= 1, 8) /109,117,108,116,105,115,112,101/
+ data (st0004(iyy),iyy= 9,10) / 99, 0/
+ clncls = 0
+ call wploas (st0001, locpr(unkint), locpr(unkcae), locpr(unkune
+ * ), locpr(unkwcn), locpr(unkwct), locpr(unkobo))
+ call wploas (st0002, locpr(imgint), locpr(imgcae), locpr(imgune
+ * ), locpr(imgwcn), locpr(imgwct), locpr(imgobo))
+ call wploas (st0003, locpr(mefint), locpr(mefcae), locpr(mefune
+ * ), locpr(mefwcn), locpr(mefwct), locpr(mefobo))
+ call wploas (st0004, locpr(mspint), locpr(mspcae), locpr(mspune
+ * ), locpr(mspwcn), locpr(mspwct), locpr(mspobo))
+100 return
+ end
+ subroutine wploas (name, init, cache, uncace, tran, list, info)
+ integer init
+ integer cache
+ integer uncace
+ integer tran
+ integer list
+ integer info
+ integer*2 name(*)
+ integer clncls
+ integer cltabe(6 ,16 )
+ integer*2 clnams(32 +1,16 )
+ logical xerflg
+ common /xercom/ xerflg
+ common /classm/ clncls, cltabe, clnams
+ save
+ if (.not.(clncls + 1 .gt. 16 )) goto 110
+ goto 100
+110 continue
+ clncls = clncls + 1
+ cltabe(1,clncls) = init
+ cltabe(2,clncls) = cache
+ cltabe(3,clncls) = uncace
+ cltabe(4,clncls) = tran
+ cltabe(5,clncls) = list
+ cltabe(6,clncls) = info
+ call xstrcy(name, clnams(1,clncls) , 255 )
+100 return
+ end
+ subroutine wcspie (messae)
+ integer*2 messae(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer msgbuf
+ integer msglen
+ integer mlen
+ integer ip
+ integer xstrln
+ integer*2 st0001(18)
+ integer*2 st0002(4)
+ integer*2 st0003(8)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /100,101,108,105,118,101,114, 32/
+ data (st0001(iyy),iyy= 9,16) /119, 99,115,112,105,120, 32,123/
+ data (st0001(iyy),iyy=17,18) / 32, 0/
+ data st0002 / 32,125, 0, 0/
+ data st0003 /105,115,109, 95,109,115,103, 0/
+ mlen = xstrln(messae)
+ msglen = mlen + 64
+ call smark (sp)
+ call salloc (msgbuf, msglen, 2)
+ call aclrc (memc(msgbuf), msglen)
+ ip = 0
+ call amovc (st0001, memc(msgbuf), 17)
+ ip = ip + 17
+ call amovc (messae, memc(msgbuf+ip), mlen)
+ ip = ip + mlen
+ call amovc (st0002, memc(msgbuf+ip), 2)
+ ip = ip + 2
+ call ximmee (st0003, memc(msgbuf))
+ call sfree (sp)
+100 return
+ end
+ subroutine wpcnve (ltime, outstr, maxch)
+ integer*4 ltime
+ integer maxch
+ integer*2 outstr(*)
+ integer tm(8 )
+ integer*2 st0001(14)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 37, 50,100, 58, 37, 48, 50,100/
+ data (st0001(iyy),iyy= 9,14) / 58, 37, 48, 50,100, 0/
+ call brktie (ltime, tm)
+ call sprinf (outstr, maxch, st0001)
+ call pargi (tm(3) )
+ call pargi (tm(2) )
+ call pargi (tm(1) )
+100 return
+ end
+ subroutine dbgpre (wp, buf)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer wp
+ integer*2 buf(*)
+ integer cp
+ integer wpid2j
+ integer i
+ integer*2 st0001(4)
+ integer*2 st0002(23)
+ save
+ integer iyy
+ data st0001 / 37,115, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) / 37, 51,100, 58, 32, 32,105,100/
+ data (st0002(iyy),iyy= 9,16) / 61, 37,100, 32, 32,114,101,102/
+ data (st0002(iyy),iyy=17,23) / 61, 39, 37,115, 39, 10, 0/
+ call xprinf(st0001)
+ call pargsr (buf)
+ i=0
+110 if (.not.(i .lt. 256 )) goto 112
+ cp = wpid2j (wp, i)
+ if (.not.(memi(cp+3) .ne. 0)) goto 120
+ call xprinf(st0002)
+ call pargi(i)
+ call pargi(memi(cp) )
+ call pargsr(memc((((cp+6)-1)*2+1)) )
+120 continue
+111 i=i+1
+ goto 110
+112 continue
+100 return
+ end
+c temple template
+c sprinf sprintf
+c wpclas wp_class
+c clncls cl_nclass
+c wcspie wcspix_message
+c classm class_com
+c unkwct unk_wcslist
+c mefcae mef_cache
+c mspwct msp_wcslist
+c cltabe cl_table
+c unkint unk_init
+c wpread wp_read
+c mspint msp_init
+c ximmee xim_message
+c wpcace wp_cache
+c imgcae img_cache
+c messae message
+c unkobo unk_objinfo
+c mspobo msp_objinfo
+c clktie clktime
+c ximcot xim_connect
+c wpshun wp_shutdown
+c wpclat wp_class_init
+c imgime imgimage
+c mefune mef_uncache
+c mefwcn mef_wcstran
+c ximinr xim_intrhandler
+c clnams cl_names
+c gargwd gargwrd
+c ximalt xim_alert
+c brktie brktime
+c twcspx t_wcspix
+c wpunce wp_uncache
+c wpwcsn wp_wcstran
+c imgune img_uncache
+c imgwcn img_wcstran
+c envgei envgeti
+c wpgetr wp_getpar
+c mefwct mef_wcslist
+c wpinie wp_initialize
+c ximred xim_read
+c mefint mef_init
+c unkcae unk_cache
+c wpwcst wp_wcslist
+c imunmp imunmap
+c imgwct img_wcslist
+c mspcae msp_cache
+c eprinf eprintf
+c wpinit wp_init
+c imgint img_init
+c mefobo mef_objinfo
+c envges envgets
+c ximdit xim_disconnect
+c discot disconnect
+c dbgpre dbg_printcache
+c wpcnve wp_cnvdate
+c wpsetr wp_setpar
+c wpid2j wp_id2obj
+c wpobjo wp_objinfo
+c imgobo img_objinfo
+c unkune unk_uncache
+c unkwcn unk_wcstran
+c wploas wp_load_class
+c uncace uncache
+c pargsr pargstr
+c mspune msp_uncache
+c mspwcn msp_wcstran
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.x b/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.x
new file mode 100644
index 00000000..675fb57a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/t_wcspix.x
@@ -0,0 +1,769 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <ctype.h>
+include <time.h>
+include "wcspix.h"
+
+
+# T_WCSPIX -- Entry point for the WCSPIX Image Support Module for XImtool.
+# The WCSPIX task is responsible for converting image coordinates and getting
+# pixel values from images of various types. Results are returned to the
+# GUI directly using ISM messaging.
+
+procedure t_wcspix ()
+
+pointer wp
+int len, disconnect, ncmd
+char socket[SZ_FNAME], cmd[SZ_FNAME], message[SZ_LINE], buf[SZ_DATE]
+
+int objid, regid
+real x, y
+char ref[SZ_FNAME], template[SZ_LINE], param[SZ_FNAME]
+
+bool debug
+
+long clktime()
+pointer wp_init()
+int envgets(), envgeti(), strdic()
+
+# Standard declarations for the Ximtool WCSPIX client interface.
+int xim_connect(), wp_read(), xim_intrhandler()
+errchk wp_read, envgets, envgeti
+
+begin
+ call aclrc (message, SZ_LINE)
+ call aclrc (cmd, SZ_FNAME)
+ call aclrc (socket, SZ_FNAME)
+
+ # Get the connection socket name from the environment if defined
+ # or else use the default socket.
+ if (envgets ("ISMDEV", socket, SZ_FNAME) <= 0)
+ call strcpy (WCSPIX_CONNECT, socket, SZ_FNAME)
+
+ # Open the socket connection on a negotiated socket.
+ if (xim_connect (socket, WCSPIX_NAME, WCSPIX_MODE) == ERR)
+ return
+
+ # Install an interrupt exception handler so we can exit cleanly.
+ if (xim_intrhandler() == ERR)
+ return
+
+
+ # Initialize the task data structures.
+ wp = wp_init ()
+
+ # Check for a runtime debug level.
+ iferr (WP_DBGLEVEL(wp) = envgeti ("WCSPIX_DEBUG"))
+ WP_DBGLEVEL(wp) = 0
+
+ # Log the connection.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE, "info { %s: WCSPIX Connect}\n")
+ call pargstr (buf)
+ call xim_message ("ism_msg", message)
+
+ # Loop over the commands read on the connection and process.
+ disconnect = 1
+ debug = (WCSPIX_DBG || WP_DBGLEVEL(wp) > 0)
+ while (wp_read (message, len) != EOF) {
+
+ if (debug) {
+ call eprintf("message: '%s' len=%d\n")
+ call pargstr (message); call pargi (len)
+ }
+ if (len <= 0) {
+ # Server has disconnected.
+ disconnect = 0
+ break
+ }
+
+ # Scan the command string and get the first word.
+ call sscan (message)
+ call gargwrd (cmd, SZ_LINE)
+ ncmd = strdic (cmd, cmd, SZ_LINE, WCSPIX_CMDS)
+
+ switch (ncmd) {
+ case QUIT:
+ # Server wants us to shut down.
+ disconnect = 0
+ break
+
+ case INITIALIZE:
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Initialize}\n")
+ call pargstr (buf)
+ call wp_initialize (wp)
+
+ case CACHE:
+ # <ref> <objid> <regid>
+ call gargwrd (ref, SZ_FNAME)
+ call gargi (objid)
+ call gargi (regid)
+ if (debug) {
+ call printf ("cache: objid=%d regid=%d ref='%s'\n")
+ call pargi(objid); call pargi(regid); call pargstr(ref)
+ }
+
+ # Log the event.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Cache objid=%3d %s}\n")
+ call pargstr (buf)
+ call pargi (objid)
+ call pargstr (ref)
+ call xim_message ("ism_msg", message)
+
+ call wp_cache (wp, objid, regid, ref)
+
+ case UNCACHE:
+ # <id>
+ call gargi (objid)
+ if (debug) { call printf("uncache: id=%d\n");call pargi(objid) }
+
+ # Log the event.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Uncache objid=%3d}\n")
+ call pargstr (buf)
+ call pargi (objid)
+ call xim_message ("ism_msg", message)
+
+ call wp_uncache (wp, objid)
+
+ case WCSTRAN:
+ # <id> <x> <y> [[<region> <x> <y>] ["NDC" <x> <y> ]]
+ call gargi (objid)
+ call gargr (x) ; call gargr (y)
+ if (debug) {
+ call printf ("wcstran: id=%d (%g,%g)\n")
+ call pargi(objid); call pargr (x); call pargr (y)
+ }
+ call wp_wcstran (wp, objid, x, y)
+
+ case WCSLIST:
+ # <id>
+ call gargi (objid)
+ if (debug) { call printf ("wcslist: id=%d\n");call pargi(objid)}
+ call wp_wcslist (wp, objid)
+
+ case OBJINFO:
+ # <id> <template_list>
+ call gargi (objid)
+ call gargwrd (template, SZ_FNAME)
+ if (debug) {
+ call printf ("objinfo: id=%d temp='%s'\n")
+ call pargi(objid); call pargstr (template);
+ }
+ call wp_objinfo (wp, objid, template)
+
+ case SET:
+ # <param> <value>
+ call gargwrd (param, SZ_FNAME)
+ call wp_setpar (wp, param)
+
+ case GET:
+ # <param>
+
+ case DEBUG:
+ debug = !(debug)
+
+ default:
+ if (debug) {
+ call eprintf ("ISM default: len=%d msg='%s'\n")
+ call pargi(len); call pargstr(message)
+ }
+ }
+
+ # Clear the buffer for the next read.
+ call aclrc (message, SZ_LINE)
+ }
+
+ # Disconnect from the server and clean up.
+ call xim_disconnect (disconnect)
+ call wp_shutdown (wp)
+end
+
+
+# WP_INITIALIZE -- Initialize the WCSPIX, uncache any previously cached images.
+
+procedure wp_initialize (wp)
+
+pointer wp #i WCSPIX structure
+
+pointer cp, wp_id2obj()
+int i
+
+begin
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = wp_id2obj (wp, i)
+ if (cp != NULL && C_OBJID(cp) != NULL)
+ call wp_uncache (wp, C_OBJID(cp))
+ }
+end
+
+
+# WP_CACHE -- Associate and object reference with a unique object id.
+
+procedure wp_cache (wp, objid, regid, ref)
+
+pointer wp #i WCSPIX structure
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object ref
+
+pointer cp
+int i, class
+char alert[SZ_FNAME]
+
+int wp_class()
+
+include "class.com"
+
+begin
+ # Find an unused slot in the object cache.
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = OBJCACHE(wp,i)
+ if (C_NREF(cp) == 0)
+ break
+ }
+
+ # Get the object class.
+ class = wp_class (ref)
+ if (class == ERR) {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "wp_cache: Unable to cache\n%s")
+ call pargstr (ref)
+ call xim_alert (alert, "", "")
+
+ # Setup for linear system.
+ return
+ }
+ C_CLASS(cp) = class
+
+ # Initialize the object.
+ if (class != NULL && CL_INIT(class) != NULL)
+ call zcall2 (CL_INIT(class), cp, wp)
+
+ # Call the cache function.
+ if (class != NULL && CL_CACHE(class) != NULL)
+ call zcall4 (CL_CACHE(class), cp, objid, regid, ref)
+end
+
+
+# WP_UNCACHE -- Remove an object from the WCSPIX cache.
+
+procedure wp_uncache (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_UNCACHE(class) != NULL)
+ call zcall2 (CL_UNCACHE(class), cp, id)
+
+ C_NREF(cp) = 0
+end
+
+
+# WP_WCSTRAN -- Translate image coords to WCS values.
+
+procedure wp_wcstran (wp, id, x, y)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+real x, y #i image coords
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_WCSTRAN(class) != NULL)
+ call zcall4 (CL_WCSTRAN(class), cp, id, x, y)
+end
+
+
+# WP_WCSLIST -- List the available world coordinate systems for the given
+# object.
+
+procedure wp_wcslist (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_WCSLIST(class) != NULL)
+ call zcall2 (CL_WCSLIST(class), cp, id)
+end
+
+
+# WP_OBJINFO -- Get and image header or keyword templates for the given
+# object.
+
+procedure wp_objinfo (wp, id, template)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+char template[ARB] #i keyword template
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_OBJINFO(class) != NULL)
+ call zcall3 (CL_OBJINFO(class), cp, id, template)
+end
+
+
+# WP_SETPAR -- Set the value of a WCSPIX ISM parameter.
+
+procedure wp_setpar (wp, param)
+
+pointer wp #i WCSPIX structure pointer
+char param[SZ_FNAME] #i WCSPIX param name
+
+char arg[SZ_PARAM], buf[SZ_PARAM], msg[SZ_PARAM]
+int line
+
+int strdic()
+
+include "class.com"
+
+begin
+ if (WCSPIX_DBG) { call printf ("set: %s = ");call pargstr(param) }
+
+ switch (strdic (param, param, SZ_PARAM, WCSPIX_PARAMS)) {
+ case PAR_PSIZE:
+ call gargi (WP_PTABSZ(wp))
+ if (WCSPIX_DBG) { call printf ("%d\n");call pargi(WP_PTABSZ(wp)) }
+
+ case PAR_BPM:
+ call gargi (WP_BPM(wp))
+ if (WCSPIX_DBG) { call printf ("%d\n");call pargi(WP_BPM(wp)) }
+
+ case PAR_WCS:
+ call gargwrd (buf, SZ_FNAME)
+ call gargi (line)
+
+ call strcpy (buf, arg, SZ_PARAM)
+ call strlwr (buf)
+ switch (strdic (buf, buf, SZ_FNAME, WCSPIX_SYSTEMS)) {
+ case SYS_LOGICAL: SYSTEMS(wp,line) = SYS_LOGICAL
+ case SYS_PHYSICAL: SYSTEMS(wp,line) = SYS_PHYSICAL
+ case SYS_WORLD: SYSTEMS(wp,line) = SYS_WORLD
+ case SYS_NONE: SYSTEMS(wp,line) = SYS_NONE
+ case SYS_AMP: SYSTEMS(wp,line) = SYS_AMP
+ case SYS_CCD: SYSTEMS(wp,line) = SYS_PHYSICAL
+ case SYS_DETECTOR: SYSTEMS(wp,line) = SYS_DETECTOR
+ default: SYSTEMS(wp,line) = SYS_SKY
+ }
+ call strcpy (buf, WCSNAME(wp,line), LEN_WCSNAME)
+
+ if (WCSPIX_DBG) {
+ call printf("%s line=%d\n");call pargstr(buf);call pargi(line) }
+
+ call sprintf (msg, SZ_FNAME, "wcstype %s %d")
+ call pargstr (arg)
+ call pargi (line)
+ call wcspix_message (msg)
+
+ case PAR_FMT:
+ call gargwrd (buf, SZ_FNAME)
+ call gargi (line)
+
+ call strcpy (buf, arg, SZ_PARAM)
+ call strlwr (buf)
+ switch (strdic (buf, buf, SZ_FNAME, WCSPIX_FMT)) {
+ case FMT_DEFAULT: FORMATS(wp,line) = FMT_DEFAULT
+ case FMT_HMS: FORMATS(wp,line) = FMT_HMS
+ case FMT_DEG: FORMATS(wp,line) = FMT_DEG
+ case FMT_RAD: FORMATS(wp,line) = FMT_RAD
+ default: FORMATS(wp,line) = FMT_DEFAULT
+ }
+
+ if (WCSPIX_DBG) {
+ call printf("%s line=%d\n");call pargstr(buf);call pargi(line) }
+
+ call sprintf (msg, SZ_FNAME, "wcsfmt %s %d")
+ call pargstr (arg)
+ call pargi (line)
+ call wcspix_message (msg)
+ }
+end
+
+
+# WP_GETPAR -- Get the value of a WCSPIX ISM parameter.
+
+procedure wp_getpar (wp, param)
+
+pointer wp #i WCSPIX structure pointer
+char param[SZ_FNAME] #i WCSPIX param name
+
+int strdic()
+
+begin
+ if (WCSPIX_DBG) { call printf ("set: %s = ");call pargstr(param) }
+
+ switch (strdic (param, param, SZ_PARAM, WCSPIX_PARAMS)) {
+ case PAR_PSIZE:
+ case PAR_BPM:
+ case PAR_WCS:
+ case PAR_FMT:
+ }
+end
+
+
+################################################################################
+#
+# Private procedures.
+#
+################################################################################
+
+
+# WP_INIT -- Initialize the WCSPIX task and data structures.
+
+pointer procedure wp_init ()
+
+pointer wp #r WCSPIX structure pointer
+int i
+
+begin
+ # Allocate the task structure.
+ iferr (call calloc (wp, SZ_WCSPIX, TY_STRUCT))
+ call error (0, "Error opening WCSPIX task structure.")
+
+ call calloc (WP_SYSTEMS(wp), MAX_WCSLINES, TY_INT)
+ call calloc (WP_FORMATS(wp), MAX_WCSLINES, TY_INT)
+ call calloc (WP_WCS(wp), (LEN_WCSNAME*MAX_WCSLINES), TY_CHAR)
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+ FORMATS(wp,i) = DEF_FMT
+ SYSTEMS(wp,i) = DEF_SYSTEM
+ call strcpy ("none", WCSNAME(wp,i), LEN_WCSNAME)
+ }
+
+ # Allocate the object cache.
+ call calloc (WP_CPTR(wp), SZ_CACHE, TY_STRUCT)
+ for (i=0; i < SZ_CACHE; i=i+1)
+ call calloc (OBJCACHE(wp,i), SZ_CNODE, TY_STRUCT)
+
+ WP_PTABSZ(wp) = DEF_PTABSZ
+ WP_BPM(wp) = DEF_BPM_FLAG
+
+ # Initialize the class modules.
+ call wp_class_init()
+
+ return (wp)
+end
+
+
+# WP_READ -- Read messages from the connection and process them optimally for
+# this ISM. This means we segment the messages and handle only the last
+# few WCS requests so we can keep up with the server requests. Presumably
+# there are more cursor events coming which are no longer valid so some are
+# thrown out.
+
+int procedure wp_read (message, len)
+
+char message[ARB] #o message buffer
+int len #o length of message
+
+int nread
+
+int xim_read() # low-level i/o
+errchk xim_read
+
+begin
+ nread = xim_read (message, len)
+
+ return (nread)
+end
+
+
+# WP_SHUTDOWN -- Shut down the WCSPIX, freeing all storage
+
+procedure wp_shutdown (wp)
+
+pointer wp #i WCSPIX structure
+int i
+
+begin
+ # Free the structures.
+ call mfree (WP_WCS(wp), TY_CHAR)
+ call mfree (WP_FORMATS(wp), TY_INT)
+ call mfree (WP_SYSTEMS(wp), TY_INT)
+ for (i=0; i < SZ_CACHE; i=i+1)
+ call mfree (OBJCACHE(wp,i), TY_STRUCT)
+
+ call mfree (WP_CPTR(wp), TY_STRUCT)
+ call mfree (wp, TY_STRUCT)
+end
+
+
+# WP_CLASS -- Determine the object class for the named image/file.
+
+int procedure wp_class (object)
+
+char object[ARB] #i object reference
+
+int n, class
+pointer im
+char ch, buf[SZ_FNAME]
+
+int strlen(), stridx()
+bool streq()
+pointer immap()
+
+errchk immap
+
+begin
+ # The following kludge is necessary to protect against the case
+ # where dev$pix is used as a test image. The 'object' pathname in
+ # this case is "node!/path/dev/pix" which lacks the extension
+ # and causes the task to fail to open because of a conflict with
+ # the pix.hhh in the same directory. Most IRAF tasks work since
+ # the imio$iki code treats the string "dev$pix" as a special case.
+
+ call imgimage (object, buf, SZ_FNAME)
+ n = strlen (buf) - 7
+ if (streq (buf[n], "/dev/pix")) {
+ call strcpy ("dev$pix", buf, SZ_FNAME)
+ ch = '['
+ n = stridx (ch, object)
+ if (n > 0)
+ call strcat (object[n], buf, SZ_FNAME)
+ call strcpy (buf, object, SZ_FNAME)
+ }
+
+
+ # See if we can map the image to get at least an image class. If
+ # so then check for special subclasses like Mosaic files, spectra, etc.
+
+ class = UNKNOWN_CLASS
+ ifnoerr (im = immap (object, READ_ONLY, 0)) {
+ class = IMAGE_CLASS
+
+ # Now check for subclasses. (TBD)
+
+ call imunmap (im)
+ }
+
+ return (class)
+end
+
+
+# WP_ID2OBJ -- Utility routine to convert and object id to the cache pointer.
+
+pointer procedure wp_id2obj (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+int i
+pointer cp
+
+begin
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = OBJCACHE(wp,i)
+ if (C_OBJID(cp) == id)
+ return (cp)
+ }
+ return (NULL)
+end
+
+
+# WP_CLASS_INIT -- Initialize the WCSPIX ISM class modules.
+
+procedure wp_class_init()
+
+extern img_init(), img_cache(), img_uncache()
+extern img_wcstran(), img_wcslist(), img_objinfo()
+
+extern mef_init(), mef_cache(), mef_uncache()
+extern mef_wcstran(), mef_wcslist(), mef_objinfo()
+
+extern msp_init(), msp_cache(), msp_uncache()
+extern msp_wcstran(), msp_wcslist(), msp_objinfo()
+
+extern unk_init(), unk_cache(), unk_uncache()
+extern unk_wcstran(), unk_wcslist(), unk_objinfo()
+
+include "class.com"
+int locpr()
+
+begin
+ cl_nclass = 0
+
+ # Load the class modules.
+ call wp_load_class ("unknown",
+ locpr(unk_init), locpr(unk_cache), locpr(unk_uncache),
+ locpr(unk_wcstran), locpr(unk_wcslist), locpr(unk_objinfo))
+ call wp_load_class ("image",
+ locpr(img_init), locpr(img_cache), locpr(img_uncache),
+ locpr(img_wcstran), locpr(img_wcslist), locpr(img_objinfo))
+ call wp_load_class ("mef",
+ locpr(mef_init), locpr(mef_cache), locpr(mef_uncache),
+ locpr(mef_wcstran), locpr(mef_wcslist), locpr(mef_objinfo))
+ call wp_load_class ("multispec",
+ locpr(msp_init), locpr(msp_cache), locpr(msp_uncache),
+ locpr(msp_wcstran), locpr(msp_wcslist), locpr(msp_objinfo))
+end
+
+
+# WP_LOAD_CLASS -- Load an object class module for the ISM task.
+
+procedure wp_load_class (name, init, cache, uncache, tran, list, info)
+
+char name[ARB] #I module name
+int init #I initialize procedure
+int cache #I cache the object procedure
+int uncache #I uncache the object procedure
+int tran #I translate WCS procedure
+int list #I list WCS proedure
+int info #I get header procedure
+
+errchk syserrs
+include "class.com"
+
+begin
+ # Get a new driver slot.
+ if (cl_nclass + 1 > MAX_CLASSES)
+ return
+ cl_nclass = cl_nclass + 1
+
+ # Load the driver.
+ CL_INIT(cl_nclass) = init
+ CL_CACHE(cl_nclass) = cache
+ CL_UNCACHE(cl_nclass) = uncache
+ CL_WCSTRAN(cl_nclass) = tran
+ CL_WCSLIST(cl_nclass) = list
+ CL_OBJINFO(cl_nclass) = info
+ call strcpy (name, CL_NAME(cl_nclass), SZ_FNAME)
+end
+
+
+# WCSPIX_MESSAGE -- Deliver a message to the ISM callback, tagged with
+# our name so it can be passed off to the correct code.
+
+procedure wcspix_message (message)
+
+char message[ARB] #I message to send
+
+pointer sp, msgbuf
+int msglen, mlen, ip
+
+int strlen()
+
+begin
+ # Get the message length plus some extra for the braces and padding.
+ mlen = strlen (message)
+ msglen = mlen + 64
+
+ # Allocate and clear the message buffer.
+ call smark (sp)
+ call salloc (msgbuf, msglen, TY_CHAR)
+ call aclrc (Memc[msgbuf], msglen)
+
+ ip = 0
+ call amovc ("deliver wcspix { ", Memc[msgbuf], 17) ; ip = ip + 17
+ call amovc (message, Memc[msgbuf+ip], mlen) ; ip = ip + mlen
+ call amovc (" }\0", Memc[msgbuf+ip], 2) ; ip = ip + 2
+
+ call xim_message ("ism_msg", Memc[msgbuf])
+
+ call sfree (sp)
+end
+
+
+define SZ_WEEKDAY 3
+define SZ_MONTH 3
+
+# WP_CNVDATE -- Convert a time in integer seconds since midnight on Jan 1, 1980
+# into a short string such as "5/15 18:24".
+
+procedure wp_cnvdate (ltime, outstr, maxch)
+
+long ltime # seconds since 00:00:00 10-Jan-1980
+char outstr[ARB]
+int maxch
+
+int tm[LEN_TMSTRUCT]
+
+begin
+ call brktime (ltime, tm)
+
+# call sprintf (outstr, maxch, "%2d/%2d %2d:%02d")
+# call pargi (TM_MONTH(tm))
+# call pargi (TM_MDAY(tm))
+# call pargi (TM_HOUR(tm))
+# call pargi (TM_MIN(tm))
+
+# call sprintf (outstr, maxch, "%2d:%02d")
+# call pargi (TM_HOUR(tm))
+# call pargi (TM_MIN(tm))
+
+ call sprintf (outstr, maxch, "%2d:%02d:%02d")
+ call pargi (TM_HOUR(tm))
+ call pargi (TM_MIN(tm))
+ call pargi (TM_SEC(tm))
+end
+
+
+
+#----------------
+# DEBUG ROUTINES.
+#----------------
+procedure dbg_printcache (wp, buf)
+pointer wp
+char buf[ARB]
+pointer cp, wp_id2obj()
+int i
+begin
+ call printf ("%s\n") ; call pargstr (buf)
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = wp_id2obj (wp, i)
+ if (C_DATA(cp) != NULL) {
+ call printf ("%3d: id=%d ref='%s'\n")
+ call pargi(i)
+ call pargi(C_OBJID(cp))
+ call pargstr(C_REF(cp))
+ }
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.f b/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.f
new file mode 100644
index 00000000..116b7106
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.f
@@ -0,0 +1,1975 @@
+ subroutine imgint (cp, wp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer wp
+ integer img
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(12)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,105,110,105,116/
+ data (st0001(iyy),iyy= 9,12) / 58, 32, 10, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ if (.not.(memi(cp+3) .eq. 0)) goto 120
+ call xerpsh
+ call xcallc(memi(cp+3) , 15, 10 )
+ if (.not.xerpop()) goto 130
+ goto 100
+130 continue
+120 continue
+ img = memi(cp+3)
+ memi(img ) = wp
+ memi(img+1) = 0
+ memi(img+3) = 0
+ memi(img+4) = 0
+ memi(img+5) = 0
+ memi(img+6) = 0
+ memr(img+9) = 0.0
+ memr(img+10) = 0.0
+ memi(img+11) = 1
+100 return
+ end
+ subroutine imgcae (cp, objid, regid, ref)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer objid
+ integer regid
+ integer*2 ref(*)
+ integer img
+ integer im
+ integer wp
+ integer stat
+ integer*2 alert(1023 +1)
+ integer immap
+ integer dspmmp
+ integer mwsctn
+ integer imgams
+ integer imgdes
+ integer imaccf
+ integer skdecm
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(13)
+ integer*2 st0002(19)
+ integer*2 st0003(1)
+ integer*2 st0004(1)
+ integer*2 st0005(6)
+ integer*2 st0006(8)
+ integer*2 st0007(6)
+ integer*2 st0008(8)
+ integer*2 st0009(9)
+ integer*2 st0010(7)
+ integer*2 st0011(7)
+ integer*2 st0012(5)
+ integer*2 st0013(5)
+ integer*2 st0014(7)
+ integer*2 st0015(7)
+ integer*2 st0016(5)
+ integer*2 st0017(5)
+ integer*2 st0018(30)
+ integer*2 st0019(1)
+ integer*2 st0020(1)
+ integer*2 st0021(4)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95, 99, 97, 99,104/
+ data (st0001(iyy),iyy= 9,13) /101, 58, 32, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) / 85,110, 97, 98,108,101, 32,116/
+ data (st0002(iyy),iyy= 9,16) /111, 32, 99, 97, 99,104,101, 10/
+ data (st0002(iyy),iyy=17,19) / 37,115, 0/
+ data st0003 / 0/
+ data st0004 / 0/
+ data st0005 /119,111,114,108,100, 0/
+ data st0006 /108,111,103,105, 99, 97,108, 0/
+ data st0007 /119,111,114,108,100, 0/
+ data st0008 /108,111,103,105, 99, 97,108, 0/
+ data (st0009(iyy),iyy= 1, 8) /112,104,121,115,105, 99, 97,108/
+ data (st0009(iyy),iyy= 9, 9) / 0/
+ data st0010 / 65, 84, 77, 49, 95, 49, 0/
+ data st0011 / 65, 84, 77, 50, 95, 50, 0/
+ data st0012 / 65, 84, 86, 49, 0/
+ data st0013 / 65, 84, 86, 50, 0/
+ data st0014 / 68, 84, 77, 49, 95, 49, 0/
+ data st0015 / 68, 84, 77, 50, 95, 50, 0/
+ data st0016 / 68, 84, 86, 49, 0/
+ data st0017 / 68, 84, 86, 50, 0/
+ data (st0018(iyy),iyy= 1, 8) / 85,110, 97, 98,108,101, 32,116/
+ data (st0018(iyy),iyy= 9,16) /111, 32,100,101, 99,111,100,101/
+ data (st0018(iyy),iyy=17,24) / 32,105,109, 97,103,101, 32, 87/
+ data (st0018(iyy),iyy=25,30) / 67, 83, 10, 37,115, 0/
+ data st0019 / 0/
+ data st0020 / 0/
+ data st0021 / 66, 80, 77, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ img = memi(cp+3)
+ wp = memi(img )
+ call xerpsh
+ memi(img+1) = immap (ref, 1 , 0)
+ if (.not.xerpop()) goto 120
+ call sprinf (alert, 255 , st0002)
+ call pargsr (ref)
+ call ximalt (alert, st0003, st0004)
+ goto 100
+120 continue
+ memi(img+4) = 0
+ memi(img+5) = 0
+ memi(img+6) = 0
+ call xerpsh
+ stat = skdecm (memi(img+1) , st0005, memi(img+3) , memi(img+4)
+ * )
+ if (xerflg) goto 132
+ if (.not.(stat .eq. -1 .or. memi(img+3) .eq. 0)) goto 140
+ memi(img+11) = 1
+140 continue
+ if (.not.(memi(img+3) .ne. 0)) goto 150
+ memi(img+5) = mwsctn (memi(img+3) , st0006, st0007, 3)
+ if (xerflg) goto 132
+ memi(img+6) = mwsctn (memi(img+3) , st0008, st0009, 3)
+ if (xerflg) goto 132
+ im = memi(img+1)
+ if (.not.(imaccf(im,st0010) .eq. 1 .and. imaccf(im,st0011) .
+ * eq. 1 .and. imaccf(im,st0012) .eq. 1 .and. imaccf(im,st0013)
+ * .eq. 1)) goto 160
+ memi(img+7) = imgams (im, memi(img+3) )
+160 continue
+ if (.not.(imaccf(im,st0014) .eq. 1 .and. imaccf(im,st0015) .
+ * eq. 1 .and. imaccf(im,st0016) .eq. 1 .and. imaccf(im,st0017)
+ * .eq. 1)) goto 170
+ memi(img+8) = imgdes (im, memi(img+3) )
+170 continue
+150 continue
+132 if (.not.xerpop()) goto 130
+ call sprinf (alert, 255 , st0018)
+ call pargsr (ref)
+ call ximalt (alert, st0019, st0020)
+ memi(img+11) = 1
+130 continue
+ if (.not.(memi(wp+2) .eq. 1)) goto 180
+ call xerpsh
+ memi(img+2) = dspmmp (st0021, memi(img+1) )
+ if (.not.xerpop()) goto 190
+ memi(img+2) = 0
+190 continue
+180 continue
+ memi(cp) = objid
+ memi(cp+1) = regid
+ memi(cp+4) = memi(cp+4) + 1
+ call xstrcy(ref, memc((((cp+6)-1)*2+1)) , 128)
+100 return
+ end
+ subroutine imgune (cp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ integer img
+ integer*2 st0001(15)
+ integer*2 st0002(1)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,117,110, 99, 97/
+ data (st0001(iyy),iyy= 9,15) / 99,104,101, 58, 32, 10, 0/
+ data st0002 / 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ memi(cp) = 0
+ memi(cp+4) = 0
+ call xstrcy(st0002, memc((((cp+6)-1)*2+1)) , 255 )
+ img = memi(cp+3)
+ if (.not.(memi(img+3) .ne. 0)) goto 120
+ call mwcloe (memi(img+3) )
+120 continue
+ if (.not.(memi(img+2) .ne. 0)) goto 130
+ call imunmp (memi(img+2) )
+130 continue
+ if (.not.(memi(img+1) .ne. 0)) goto 140
+ call imunmp (memi(img+1) )
+140 continue
+ memi(img+1) = 0
+ memi(img+2) = 0
+ memi(img+3) = 0
+ memi(img+5) = 0
+ memi(img+6) = 0
+ memi(img+4) = 0
+ memr(img+9) = 0.0
+ memr(img+10) = 0.0
+ memi(img+11) = 0
+ call xmfree(memi(cp+3) , 10 )
+ memi(cp+3) = 0
+100 return
+ end
+ subroutine imgwcn (cp, id, x, y)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ real x
+ real y
+ integer img
+ integer im
+ integer wp
+ integer co
+ double precision dx
+ double precision dy
+ double precision wx
+ double precision wy
+ double precision pixval
+ real rx
+ real ry
+ integer i
+ integer bpm
+ integer*2 buf(1023 +1)
+ integer*2 msg(1023 +1)
+ integer*2 wcs(32 +1)
+ integer*2 xc(32 +1)
+ integer*2 yc(32 +1)
+ integer*2 xunits(32 +1)
+ integer*2 yunits(32 +1)
+ double precision skstad
+ integer*2 st0001(15)
+ integer*2 st0002(37)
+ integer*2 st0003(29)
+ integer*2 st0004(41)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,119, 99,115,116/
+ data (st0001(iyy),iyy= 9,15) /114, 97,110, 58, 32, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) /119, 99,115,116,114, 97,110, 32/
+ data (st0002(iyy),iyy= 9,16) /123, 32,111, 98,106,101, 99,116/
+ data (st0002(iyy),iyy=17,24) / 32, 37,100, 32,125, 32,123, 32/
+ data (st0002(iyy),iyy=25,32) /114,101,103,105,111,110, 32, 37/
+ data (st0002(iyy),iyy=33,37) /100, 32,125, 32, 0/
+ data (st0003(iyy),iyy= 1, 8) /123, 32,112,105,120,118, 97,108/
+ data (st0003(iyy),iyy= 9,16) / 32, 37, 57, 46, 57,103, 32,125/
+ data (st0003(iyy),iyy=17,24) / 32,123, 32, 98,112,109, 32, 37/
+ data (st0003(iyy),iyy=25,29) /100, 32,125, 10, 0/
+ data (st0004(iyy),iyy= 1, 8) /123, 99,111,111,114,100, 32,123/
+ data (st0004(iyy),iyy= 9,16) / 37, 57,115,125, 32,123, 37, 49/
+ data (st0004(iyy),iyy=17,24) / 50,115,125, 32,123, 37, 49, 50/
+ data (st0004(iyy),iyy=25,32) /115,125, 32,123, 37, 52,115,125/
+ data (st0004(iyy),iyy=33,40) / 32,123, 37, 52,115,125,125, 10/
+ data (st0004(iyy),iyy=41,41) / 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ img = memi(cp+3)
+ co = memi(img+4)
+ wp = memi(img )
+ im = memi(img+1)
+ dx = (dble(x) - skstad(co,1)) / skstad(co,3)
+ dy = (dble(y) - skstad(co,2)) / skstad(co,4)
+ rx = dx
+ ry = dy
+ call imggea (cp, id, rx, ry, pixval, bpm)
+ call aclrc (msg, 1023 )
+ call sprinf (msg, 1023 , st0002)
+ call pargi (memi(cp) )
+ call pargi (memi(cp+1) )
+ call sprinf (buf, 1023 , st0003)
+ call pargd (pixval)
+ call pargi (bpm)
+ call xstrct(buf, msg, 1023 )
+ i=1
+120 if (.not.(i .le. 4 )) goto 122
+ call imgged (img, dx, dy, memi(memi(wp+3) +i-1), memc(memi(
+ * wp+4) +(32 *(i-1))), wx, wy)
+ call imgcos (cp, i, wcs, xunits, yunits)
+ call imgcot (cp, i, wx, wy, xc, yc)
+ call sprinf (buf, 1023 , st0004)
+ call pargsr (wcs)
+ call pargsr (xc)
+ call pargsr (yc)
+ call pargsr (xunits)
+ call pargsr (yunits)
+ call xstrct(buf, msg, 1023 )
+121 i=i+1
+ goto 120
+122 continue
+ call wcspie (msg)
+100 return
+ end
+ subroutine imgwct (cp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ integer img
+ integer im
+ integer mw
+ integer*2 msg(1023 +1)
+ integer*2 st0001(15)
+ integer*2 st0002(43)
+ integer*2 st0003(12)
+ integer*2 st0004(11)
+ integer*2 st0005(6)
+ integer*2 st0006(7)
+ integer*2 st0007(60)
+ integer*2 st0008(2)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,119, 99,115,108/
+ data (st0001(iyy),iyy= 9,15) /105,115,116, 58, 32, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) /119, 99,115,108,105,115,116, 32/
+ data (st0002(iyy),iyy= 9,16) /123, 78,111,110,101, 32, 76,111/
+ data (st0002(iyy),iyy=17,24) /103,105, 99, 97,108, 32, 87,111/
+ data (st0002(iyy),iyy=25,32) /114,108,100, 32, 80,104,121,115/
+ data (st0002(iyy),iyy=33,40) /105, 99, 97,108, 32,108,105,110/
+ data (st0002(iyy),iyy=41,43) /101, 32, 0/
+ data (st0003(iyy),iyy= 1, 8) / 32, 65,109,112,108,105,102,105/
+ data (st0003(iyy),iyy= 9,12) /101,114, 32, 0/
+ data (st0004(iyy),iyy= 1, 8) / 32, 68,101,116,101, 99,116,111/
+ data (st0004(iyy),iyy= 9,11) /114, 32, 0/
+ data st0005 / 32, 67, 67, 68, 32, 0/
+ data st0006 / 32,108,105,110,101, 32, 0/
+ data (st0007(iyy),iyy= 1, 8) / 70, 75, 53, 32, 70, 75, 52, 32/
+ data (st0007(iyy),iyy= 9,16) / 73, 67, 82, 83, 32, 71, 65, 80/
+ data (st0007(iyy),iyy=17,24) / 80, 84, 32, 70, 75, 52, 45, 78/
+ data (st0007(iyy),iyy=25,32) / 79, 45, 69, 32, 69, 99,108,105/
+ data (st0007(iyy),iyy=33,40) /112,116,105, 99, 32, 71, 97,108/
+ data (st0007(iyy),iyy=41,48) / 97, 99,116,105, 99, 32, 83,117/
+ data (st0007(iyy),iyy=49,56) /112,101,114,103, 97,108, 97, 99/
+ data (st0007(iyy),iyy=57,60) /116,105, 99, 0/
+ data st0008 /125, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ img = memi(cp+3)
+ mw = memi(img+3)
+ im = memi(img+1)
+ call xstrcy(st0002, msg, 1023 )
+ if (.not.(memi(img+7) .ne. 0)) goto 120
+ call xstrct(st0003, msg, 1023 )
+120 continue
+ if (.not.(memi(img+8) .ne. 0)) goto 130
+ call xstrct(st0004, msg, 1023 )
+130 continue
+ if (.not.(memi(img+7) .ne. 0 .or. memi(img+8) .ne. 0)) goto 140
+ call xstrct(st0005, msg, 1023 )
+140 continue
+ call xstrct(st0006, msg, 1023 )
+ if (.not.(mw .ne. 0)) goto 150
+ call xstrct(st0007, msg, 1023 )
+150 continue
+ call xstrct(st0008, msg, 1023 )
+ call wcspie (msg)
+100 return
+ end
+ subroutine imggea (cp, id, x, y, pixval, bpmpix)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ real x
+ real y
+ double precision pixval
+ integer bpmpix
+ integer img
+ integer wp
+ integer im
+ integer bpm
+ integer pix
+ integer nl
+ integer nc
+ integer ix
+ integer iy
+ integer size
+ integer x1
+ integer x2
+ integer y1
+ integer y2
+ integer imgs2r
+ integer imgs2i
+ integer*2 st0001(16)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,103,101,116, 95/
+ data (st0001(iyy),iyy= 9,16) /100, 97,116, 97, 58, 32, 10, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ img = memi(cp+3)
+ wp = memi(img )
+ im = memi(img+1)
+ bpm = memi(img+2)
+ nc = meml(im+200 +1+8-1)
+ nl = meml(im+200 +2+8-1)
+ size = memi(wp+1)
+ if (.not.(x .lt. 0.0 .or. y .lt. 0.0 .or. x .gt. nc .or. y .gt.
+ * nl)) goto 120
+ goto 100
+120 continue
+ ix = int (x + 0.5)
+ iy = int (y + 0.5)
+ ix = max (size/2+1, ix)
+ iy = max (size/2+1, iy)
+ ix = min (ix, (nc-(size/2)-1))
+ iy = min (iy, (nl-(size/2)-1))
+ x1 = ix - size / 2 + 0.5
+ x2 = ix + size / 2 + 0.5
+ y1 = iy - size / 2 + 0.5
+ y2 = iy + size / 2 + 0.5
+ x1 = max (1, x1)
+ x2 = min (nc, x2)
+ y1 = max (1, y1)
+ y2 = min (nl, y2)
+ pix = imgs2r (im, int(x1), int(x2), int(y1), int(y2))
+ if (.not.(bpm .ne. 0 .and. memi(wp+2) .eq. 1)) goto 130
+ bpmpix = memi(imgs2i (bpm, ix, ix, iy, iy))
+ goto 131
+130 continue
+ bpmpix = 0
+131 continue
+ pixval = memr(pix + ((size/2)*size) + (size/2)) * 1.0d0
+ if (.not.(memi(wp+1) .gt. 1)) goto 140
+ call imgseb (memr(pix), memi(wp+1) , x1, x2, y1, y2)
+140 continue
+100 return
+ end
+ subroutine imgobo (cp, id, temple)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ integer*2 temple(*)
+ integer im
+ integer img
+ integer*2 st0001(15)
+ integer*2 st0002(7)
+ integer*2 st0003(7)
+ integer*2 st0004(96)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /105,109,103, 95,111, 98,106,105/
+ data (st0001(iyy),iyy= 9,15) /110,102,111, 58, 32, 10, 0/
+ data st0002 /105,109,103,104,100,114, 0/
+ data st0003 /119, 99,115,104,100,114, 0/
+ data (st0004(iyy),iyy= 1, 8) / 87, 67, 83, 68, 73, 77, 44, 67/
+ data (st0004(iyy),iyy= 9,16) / 84, 89, 80, 69, 42, 44, 67, 82/
+ data (st0004(iyy),iyy=17,24) / 80, 73, 88, 42, 44, 67, 82, 86/
+ data (st0004(iyy),iyy=25,32) / 65, 76, 42, 44, 67, 68, 42, 44/
+ data (st0004(iyy),iyy=33,40) / 67, 82, 79, 84, 65, 50, 44, 76/
+ data (st0004(iyy),iyy=41,48) / 84, 86, 42, 44, 76, 84, 77, 42/
+ data (st0004(iyy),iyy=49,56) / 44, 87, 83, 86, 42, 44, 87, 65/
+ data (st0004(iyy),iyy=57,64) / 84, 42, 44, 82, 65, 42, 44, 68/
+ data (st0004(iyy),iyy=65,72) / 69, 67, 42, 44, 69, 81, 85, 73/
+ data (st0004(iyy),iyy=73,80) / 78, 79, 88, 44, 69, 80, 79, 67/
+ data (st0004(iyy),iyy=81,88) / 72, 44, 77, 74, 68, 42, 44, 68/
+ data (st0004(iyy),iyy=89,96) / 65, 84, 69, 45, 79, 66, 83, 0/
+ if (.not.(.false.)) goto 110
+ call xprinf(st0001)
+110 continue
+ img = memi(cp+3)
+ im = memi(img+1)
+ call imgser (im, st0002, temple)
+ call imgser (im, st0003, st0004)
+ call imgseo (im, cp)
+ call imgses (im, cp)
+100 return
+ end
+ subroutine imgser (im, object, temple)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer*2 object(*)
+ integer*2 temple(*)
+ integer sp
+ integer hdr
+ integer lbuf
+ integer line
+ integer field
+ integer keyw
+ integer dict
+ integer ip
+ integer lp
+ integer list
+ integer nlines
+ integer in
+ integer out
+ integer i
+ integer hdrsie
+ logical keywfr
+ integer stropn
+ integer getlie
+ integer stridx
+ integer imgnfn
+ integer strdic
+ integer imofnu
+ logical streq
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(5)
+ integer*2 st0002(2)
+ integer*2 st0003(2)
+ integer*2 st0004(2)
+ integer*2 st0005(3)
+ integer*2 st0006(2)
+ integer*2 st0007(5)
+ integer*2 st0008(2)
+ integer*2 st0009(11)
+ save
+ integer iyy
+ data st0001 / 37,115, 32,123, 0/
+ data st0002 / 42, 0/
+ data st0003 /124, 0/
+ data st0004 /124, 0/
+ data st0005 / 91,123, 0/
+ data st0006 /125, 0/
+ data st0007 / 37,115, 32,123, 0/
+ data st0008 /125, 0/
+ data (st0009(iyy),iyy= 1, 8) / 37,100, 32,123, 32, 10, 10, 10/
+ data (st0009(iyy),iyy= 9,11) / 32,125, 0/
+ hdrsie = (200 + memi(im+30) - (200 +1024 ) ) * 2 - 1
+ hdrsie = hdrsie + 1023
+ call smark (sp)
+ call salloc (hdr, hdrsie, 2)
+ call salloc (dict, hdrsie, 2)
+ call salloc (field, 1023 , 2)
+ call salloc (lbuf, 1023 , 2)
+ call salloc (line, 1023 , 2)
+ call salloc (keyw, 8, 2)
+ in = stropn (memc((im+(200 +1024 ) -1)*2 + 1), hdrsie, 1 )
+ if (xerflg) goto 100
+ out = stropn (memc(hdr), hdrsie, 3)
+ if (xerflg) goto 100
+ call fprinf (out, st0001)
+ call pargsr (object)
+ keywfr = (.not.streq (temple, st0002))
+ if (.not.(keywfr)) goto 110
+ list = imofnu (im, temple)
+ if (xerflg) goto 100
+ call xstrcy(st0003, memc(dict), hdrsie)
+120 if (.not.(imgnfn (list, memc(field), 255 ) .ne. -2).and.(.
+ * not.xerflg)) goto 121
+ if (xerflg) goto 100
+ call xstrct(memc(field), memc(dict), hdrsie)
+ call xstrct(st0004, memc(dict), hdrsie)
+ goto 120
+121 continue
+ call imcfnl (list)
+110 continue
+ nlines = 0
+130 if (.not.(getlie (in, memc(lbuf)) .ne. -2).and.(.not.xerflg))
+ * goto 131
+ if (xerflg) goto 100
+ call aclrc (memc(line), 1023 )
+ ip = lbuf
+ lp = line
+140 if (.not.(memc(ip) .ne. 0 .and. memc(ip) .ne. 10)) goto 141
+ if (.not.(stridx (memc(ip), st0005) .gt. 0)) goto 150
+ memc(lp) = 92
+ lp = lp + 1
+150 continue
+ memc(lp) = memc(ip)
+ ip = ip + 1
+ lp = lp + 1
+ goto 140
+141 continue
+ memc(lp) = 10
+ memc(lp+1) = 0
+ if (.not.(keywfr)) goto 160
+ i=0
+170 if (.not.(i .lt. 8 .and. .not.(memc(line+i).eq.32.or.memc
+ * (line+i).eq.9))) goto 172
+ memc(keyw+i) = memc(line+i)
+171 i=i+1
+ goto 170
+172 continue
+ memc(keyw+i) = 0
+ if (.not.(strdic (memc(keyw), memc(keyw), 8, memc(dict))
+ * .eq. 0).and.(.not.xerflg)) goto 180
+ if (xerflg) goto 100
+ goto 130
+180 continue
+160 continue
+ call putci (out, 32)
+ if (xerflg) goto 100
+ call putlie (out, memc(line))
+ if (xerflg) goto 100
+ nlines = nlines + 1
+ if (.not.(mod(nlines,10) .eq. 0)) goto 190
+ call fprinf (out, st0006)
+ call xfcloe(out)
+ call wcspie (memc(hdr))
+ call aclrc (memc(hdr), hdrsie)
+ out = stropn (memc(hdr), hdrsie, 3)
+ if (xerflg) goto 100
+ call fprinf (out, st0007)
+ call pargsr (object)
+190 continue
+ goto 130
+131 continue
+ call fprinf (out, st0008)
+ call xfcloe(in)
+ call xfcloe(out)
+ call wcspie (memc(hdr))
+ call sprinf (memc(hdr), 1023 , st0009)
+ call pargsr (object)
+ call wcspie (memc(hdr))
+ call sfree (sp)
+100 return
+ end
+ subroutine imgses (im, cp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer cp
+ integer sp
+ integer buf
+ integer img
+ integer co
+ double precision cx
+ double precision cy
+ double precision cx1
+ double precision cy1
+ double precision dx
+ double precision dy
+ double precision x1
+ double precision y1
+ double precision cosa
+ double precision sina
+ double precision angle
+ integer i
+ integer j
+ integer compx
+ integer compy
+ integer*4 axis(7 )
+ integer*4 lv(7 )
+ integer*4 pv1(7 )
+ integer*4 pv2(7 )
+ integer*2 st0001(24)
+ integer*2 st0002(4)
+ integer*2 st0003(4)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 99,111,109,112, 97,115,115, 32/
+ data (st0001(iyy),iyy= 9,16) / 37,100, 32, 37,103, 32, 37,100/
+ data (st0001(iyy),iyy=17,24) / 32, 37,100, 32, 37,115, 0, 0/
+ data st0002 / 69, 32, 78, 0/
+ data st0003 / 88, 32, 89, 0/
+ call smark (sp)
+ call salloc (buf, 1023 , 2)
+ call aclrc (memc(buf), 1023 )
+ img = memi(cp+3)
+ co = memi(img+4)
+ if (.not.(memi(img+5) .ne. 0)) goto 110
+ if (.not.(memr(img+9) .gt. 0.0)) goto 120
+ angle = -memr(img+9)
+ goto 121
+120 continue
+ angle = memr(img+9) + 360.0
+121 continue
+ cosa = cos (((angle)/57.295779513082320877))
+ sina = sin (((angle)/57.295779513082320877))
+ cx = meml(im+200 +1+8-1) / 2.0d0
+ cy = meml(im+200 +2+8-1) / 2.0d0
+ call mwc2td (memi(img+5) , cx, cy, cx1, cy1)
+ dx = cx + ( 10.0 * sina)
+ dy = cy + ( 10.0 * cosa)
+ call mwc2td (memi(img+5) , dx, dy, x1, y1)
+ if (.not.(y1 .ge. cy1)) goto 130
+ compy = 1
+ goto 131
+130 continue
+ compy = -1
+131 continue
+ dx = cx + (-10.0 * cosa)
+ dy = cy + ( 10.0 * sina)
+ call mwc2td (memi(img+5) , dx, dy, x1, y1)
+ if (.not.(x1 .ge. cx1)) goto 140
+ compx = 1
+ goto 141
+140 continue
+ compx = -1
+141 continue
+ goto 111
+110 continue
+ lv(1) = 0
+ lv(2) = 0
+ call imaplv (im, lv, pv1, 2)
+ lv(1) = 1
+ lv(2) = 1
+ call imaplv (im, lv, pv2, 2)
+ i = 1
+ axis(1) = 1
+ axis(2) = 2
+ do 150 j = 1, 7
+ if (.not.(pv1(j) .ne. pv2(j))) goto 160
+ axis(i) = j
+ i = i + 1
+160 continue
+150 continue
+151 continue
+ compx = - (pv2(axis(1)) - pv1(axis(1)))
+ compy = (pv2(axis(2)) - pv1(axis(2)))
+111 continue
+ call sprinf (memc(buf), 1023 , st0001)
+ call pargi (memi(cp) )
+ call pargr (memr(img+9) )
+ call pargi (compx)
+ call pargi (compy)
+ if (.not.(memi(img+3) .ne. 0)) goto 170
+ call pargsr (st0002)
+ goto 171
+170 continue
+ call pargsr (st0003)
+171 continue
+ call wcspie (memc(buf))
+ call sfree (sp)
+100 return
+ end
+ subroutine imgseo (im, cp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer cp
+ integer sp
+ integer co
+ integer img
+ integer mw
+ integer buf
+ integer proj
+ integer radecr
+ integer fd
+ integer radecs
+ integer ctype
+ integer wtype
+ integer ndim
+ double precision crpix1
+ double precision crpix2
+ double precision crval1
+ double precision crval2
+ double precision cval1
+ double precision cval2
+ double precision xscale
+ double precision yscale
+ double precision xrot
+ double precision yrot
+ double precision r(7 )
+ double precision w(7 )
+ double precision cd(7 ,7 )
+ integer idxstr
+ integer skstai
+ integer stropn
+ integer mwstai
+ double precision skstad
+ double precision slepj
+ double precision slepb
+ logical fpequd
+ integer sw0001,sw0002
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(21)
+ integer*2 st0002(15)
+ integer*2 st0003(15)
+ integer*2 st0004(29)
+ integer*2 st0005(15)
+ integer*2 st0006(15)
+ integer*2 st0007(30)
+ integer*2 st0008(4)
+ integer*2 st0009(114)
+ integer*2 st0010(8)
+ integer*2 st0011(11)
+ integer*2 st0012(52)
+ integer*2 st0013(11)
+ integer*2 st0014(9)
+ integer*2 st0015(1)
+ integer*2 st0016(9)
+ integer*2 st0017(1)
+ integer*2 st0018(14)
+ integer*2 st0019(1)
+ integer*2 st0020(7)
+ integer*2 st0021(1)
+ integer*2 st0022(25)
+ integer*2 st0023(41)
+ integer*2 st0024(53)
+ integer*2 st0025(4)
+ integer*2 st0026(4)
+ integer*2 st0027(4)
+ integer*2 st0028(4)
+ integer*2 st0029(53)
+ integer*2 st0030(4)
+ integer*2 st0031(4)
+ integer*2 st0032(4)
+ integer*2 st0033(4)
+ integer*2 st0034(58)
+ integer*2 st0035(55)
+ integer*2 st0036(57)
+ integer*2 st0037(2)
+ integer*2 st0038(2)
+ integer*2 st0039(2)
+ integer*2 st0040(2)
+ integer*2 st0041(2)
+ integer*2 st0042(2)
+ integer*2 st0043(25)
+ integer*2 st0044(7)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 87, 67, 83, 32, 73,110,102,111/
+ data (st0001(iyy),iyy= 9,16) / 58, 10, 61, 61, 61, 61, 61, 61/
+ data (st0001(iyy),iyy=17,21) / 61, 61, 61, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) / 82, 32,116,101,114,109, 58, 32/
+ data (st0002(iyy),iyy= 9,15) / 37,103, 32, 37,103, 10, 0/
+ data (st0003(iyy),iyy= 1, 8) / 87, 32,116,101,114,109, 58, 32/
+ data (st0003(iyy),iyy= 9,15) / 37,103, 32, 37,103, 10, 0/
+ data (st0004(iyy),iyy= 1, 8) / 32, 32, 32, 32, 99,100, 58, 32/
+ data (st0004(iyy),iyy= 9,16) / 37,103, 32, 37,103, 10, 32, 32/
+ data (st0004(iyy),iyy=17,24) / 32, 32, 32, 32, 32, 32, 37,103/
+ data (st0004(iyy),iyy=25,29) / 32, 37,103, 10, 0/
+ data (st0005(iyy),iyy= 1, 8) / 32,115, 99, 97,108,101, 58, 32/
+ data (st0005(iyy),iyy= 9,15) / 37,103, 32, 37,103, 10, 0/
+ data (st0006(iyy),iyy= 1, 8) / 32, 32, 32,114,111,116, 58, 32/
+ data (st0006(iyy),iyy= 9,15) / 37,103, 32, 37,103, 10, 0/
+ data (st0007(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0007(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0007(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0007(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0008 / 70, 75, 53, 0/
+ data (st0009(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0009(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0009(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0009(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0009(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0009(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0009(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0009(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0009(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0009(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0009(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0009(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0009(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0009(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0009(iyy),iyy=113,114) /124, 0/
+ data st0010 /108,111,103,105, 99, 97,108, 0/
+ data (st0011(iyy),iyy= 1, 8) /119, 99,115,105,110,102,111, 32/
+ data (st0011(iyy),iyy= 9,11) /123, 10, 0/
+ data (st0012(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 32, 80,114/
+ data (st0012(iyy),iyy= 9,16) /111,106,101, 99,116,105,111,110/
+ data (st0012(iyy),iyy=17,24) / 58, 32, 32, 37, 45, 54,115, 9/
+ data (st0012(iyy),iyy=25,32) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0012(iyy),iyy=33,40) / 32, 32, 32, 32, 83,121,115,116/
+ data (st0012(iyy),iyy=41,48) /101,109, 58, 32, 32, 37,115, 32/
+ data (st0012(iyy),iyy=49,52) / 37,115, 10, 0/
+ data (st0013(iyy),iyy= 1, 8) / 69,113,117, 97,116,111,114,105/
+ data (st0013(iyy),iyy= 9,11) / 97,108, 0/
+ data (st0014(iyy),iyy= 1, 8) / 69, 99,108,105,112,116,105, 99/
+ data (st0014(iyy),iyy= 9, 9) / 0/
+ data st0015 / 0/
+ data (st0016(iyy),iyy= 1, 8) / 71, 97,108, 97, 99,116,105, 99/
+ data (st0016(iyy),iyy= 9, 9) / 0/
+ data st0017 / 0/
+ data (st0018(iyy),iyy= 1, 8) / 83,117,112,101,114, 71, 97,108/
+ data (st0018(iyy),iyy= 9,14) / 97, 99,116,105, 99, 0/
+ data st0019 / 0/
+ data st0020 / 76,105,110,101, 97,114, 0/
+ data st0021 / 0/
+ data (st0022(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 82, 97, 47/
+ data (st0022(iyy),iyy= 9,16) / 68,101, 99, 32, 97,120,101,115/
+ data (st0022(iyy),iyy=17,24) / 58, 32, 32, 37,100, 47, 37,100/
+ data (st0022(iyy),iyy=25,25) / 0/
+ data (st0023(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0023(iyy),iyy= 9,16) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0023(iyy),iyy=17,24) / 32, 32, 68,105,109,101,110,115/
+ data (st0023(iyy),iyy=25,32) /105,111,110,115, 58, 32, 32, 37/
+ data (st0023(iyy),iyy=33,40) /100, 32,120, 32, 37,100, 10, 10/
+ data (st0023(iyy),iyy=41,41) / 0/
+ data (st0024(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 32, 67,101/
+ data (st0024(iyy),iyy= 9,16) /110,116,101,114, 32, 80,111,115/
+ data (st0024(iyy),iyy=17,24) / 58, 32, 37, 51,115, 58, 32, 32/
+ data (st0024(iyy),iyy=25,32) / 37, 45, 49, 50, 72, 32, 32, 32/
+ data (st0024(iyy),iyy=33,40) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0024(iyy),iyy=41,48) / 37, 51,115, 58, 32, 32, 37, 45/
+ data (st0024(iyy),iyy=49,53) / 49, 50,104, 10, 0/
+ data st0025 / 32, 82, 65, 0/
+ data st0026 / 76,111,110, 0/
+ data st0027 / 68,101, 99, 0/
+ data st0028 / 76, 97,116, 0/
+ data (st0029(iyy),iyy= 1, 8) / 32, 32, 32, 82,101,102,101,114/
+ data (st0029(iyy),iyy= 9,16) /101,110, 99,101, 32, 80,111,115/
+ data (st0029(iyy),iyy=17,24) / 58, 32, 37, 51,115, 58, 32, 32/
+ data (st0029(iyy),iyy=25,32) / 37, 45, 49, 50, 72, 32, 32, 32/
+ data (st0029(iyy),iyy=33,40) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0029(iyy),iyy=41,48) / 37, 51,115, 58, 32, 32, 37, 45/
+ data (st0029(iyy),iyy=49,53) / 49, 50,104, 10, 0/
+ data st0030 / 32, 82, 65, 0/
+ data st0031 / 76,111,110, 0/
+ data st0032 / 68,101, 99, 0/
+ data st0033 / 76, 97,116, 0/
+ data (st0034(iyy),iyy= 1, 8) / 32, 82,101,102,101,114,101,110/
+ data (st0034(iyy),iyy= 9,16) / 99,101, 32, 80,105,120,101,108/
+ data (st0034(iyy),iyy=17,24) / 58, 32, 32, 32, 88, 58, 32, 32/
+ data (st0034(iyy),iyy=25,32) / 37, 45, 57, 46, 52,102, 32, 32/
+ data (st0034(iyy),iyy=33,40) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0034(iyy),iyy=41,48) / 32, 32, 32, 32, 32, 32, 89, 58/
+ data (st0034(iyy),iyy=49,56) / 32, 32, 37, 45, 57, 46, 52,102/
+ data (st0034(iyy),iyy=57,58) / 10, 0/
+ data (st0035(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 80,108, 97/
+ data (st0035(iyy),iyy= 9,16) /116,101, 32, 83, 99, 97,108,101/
+ data (st0035(iyy),iyy=17,24) / 58, 32, 32, 37, 45, 56,102, 32/
+ data (st0035(iyy),iyy=25,32) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0035(iyy),iyy=33,40) / 32, 32, 32, 32, 32, 82,111,116/
+ data (st0035(iyy),iyy=41,48) / 32, 65,110,103,108,101, 58, 32/
+ data (st0035(iyy),iyy=49,55) / 32, 37, 45, 56,102, 10, 0/
+ data (st0036(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0036(iyy),iyy= 9,16) / 32, 69,113,117,105,110,111,120/
+ data (st0036(iyy),iyy=17,24) / 58, 32, 32, 37,115, 37, 56,102/
+ data (st0036(iyy),iyy=25,32) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0036(iyy),iyy=33,40) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0036(iyy),iyy=41,48) / 32, 69,112,111, 99,104, 58, 32/
+ data (st0036(iyy),iyy=49,56) / 32, 37,115, 37, 46, 54,102, 10/
+ data (st0036(iyy),iyy=57,57) / 0/
+ data st0037 / 74, 0/
+ data st0038 / 74, 0/
+ data st0039 / 32, 0/
+ data st0040 / 32, 0/
+ data st0041 / 66, 0/
+ data st0042 / 66, 0/
+ data (st0043(iyy),iyy= 1, 8) / 32, 32, 32, 32, 32, 32, 32, 32/
+ data (st0043(iyy),iyy= 9,16) / 32, 32, 32, 32, 32, 77, 74, 68/
+ data (st0043(iyy),iyy=17,24) / 58, 32, 32, 37, 46, 54,102, 10/
+ data (st0043(iyy),iyy=25,25) / 0/
+ data st0044 /125, 10, 32, 10, 32, 10, 0/
+ call smark (sp)
+ call salloc (buf, 1023 , 2)
+ call salloc (proj, 255 , 2)
+ call salloc (radecr, 255 , 2)
+ fd = stropn (memc(buf), 1023 , 3)
+ if (xerflg) goto 100
+ img = memi(cp+3)
+ co = memi(img+4)
+ radecs = skstai (co, 8)
+ ctype = skstai (co, 7)
+ wtype = skstai (co, 9)
+ mw = memi(img+3)
+ if (.not.(mw .ne. 0)) goto 110
+ ndim = mwstai (mw, 5 )
+ call wcsgfm (mw, r, w, cd, ndim)
+ crpix1 = r(1)
+ crpix2 = r(2)
+ crval1 = w(1)
+ crval2 = w(2)
+ xscale = sqrt (cd(1,1)**2 + cd(2,1)**2) * 3600.0d0
+ yscale = sqrt (cd(1,2)**2 + cd(2,2)**2) * 3600.0d0
+ xrot = 0.0
+ yrot = 0.0
+ if (.not.(.not.fpequd (cd(1,1), 0.0d0))) goto 120
+ xrot = ((atan ( cd(2,1) / cd(1,1)))*57.295779513082320877
+ * d0)
+120 continue
+ if (.not.(.not.fpequd (cd(2,2), 0.0d0))) goto 130
+ yrot = ((atan (-cd(1,2) / cd(2,2)))*57.295779513082320877
+ * d0)
+130 continue
+ goto 111
+110 continue
+ ndim = 2
+ xscale = 1.0
+ yscale = 1.0
+ xrot = 0.0
+ yrot = 0.0
+111 continue
+ if (.not.(.false.)) goto 140
+ call xprinf(st0001)
+ call xprinf(st0002)
+ call pargd(r(1))
+ call pargd(r(2))
+ call xprinf(st0003)
+ call pargd(w(1))
+ call pargd(w(2))
+ call xprinf(st0004)
+ call pargd(cd(1,1))
+ call pargd(cd(1,2))
+ call pargd(cd(2,1))
+ call pargd(cd(2,2))
+ call xprinf(st0005)
+ call pargd(xscale)
+ call pargd(yscale)
+ call xprinf(st0006)
+ call pargd(xrot)
+ call pargd(yrot)
+140 continue
+ memr(img+10) = (xscale + yscale) / 2.0d0
+ memr(img+9) = xrot
+ if (.not.(idxstr (radecs, memc(radecr), 255 , st0007) .le. 0))
+ * goto 150
+ call xstrcy(st0008, memc(radecr), 255 )
+150 continue
+ call strupr (memc(radecr))
+ if (.not.(idxstr (wtype, memc(proj), 255 , st0009) .le. 0))
+ * goto 160
+ call xstrcy(st0010, memc(proj), 255 )
+160 continue
+ call strupr (memc(proj))
+ call fprinf (fd, st0011)
+ call fprinf (fd, st0012)
+ call pargsr (memc(proj))
+ sw0001=(ctype)
+ goto 170
+180 continue
+ call pargsr (st0013)
+ call pargsr (memc(radecr))
+ goto 171
+190 continue
+ call pargsr (st0014)
+ call pargsr (st0015)
+ goto 171
+200 continue
+ call pargsr (st0016)
+ call pargsr (st0017)
+ goto 171
+210 continue
+ call pargsr (st0018)
+ call pargsr (st0019)
+ goto 171
+220 continue
+ call pargsr (st0020)
+ call pargsr (st0021)
+ goto 171
+170 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 220
+ goto (180,190,200,210),sw0001
+171 continue
+ call fprinf (fd, st0022)
+ call pargi (skstai (co, 10))
+ call pargi (skstai (co, 11))
+ call fprinf (fd, st0023)
+ call pargi (meml(im+200 +1+8-1) )
+ call pargi (meml(im+200 +2+8-1) )
+ call fprinf (fd, st0024)
+ if (.not.(ctype .eq. 1)) goto 230
+ call pargsr (st0025)
+ goto 231
+230 continue
+ call pargsr (st0026)
+231 continue
+ call pargd (cval1)
+ if (.not.(ctype .eq. 1)) goto 240
+ call pargsr (st0027)
+ goto 241
+240 continue
+ call pargsr (st0028)
+241 continue
+ call pargd (cval2)
+ call fprinf (fd, st0029)
+ if (.not.(ctype .eq. 1)) goto 250
+ call pargsr (st0030)
+ goto 251
+250 continue
+ call pargsr (st0031)
+251 continue
+ call pargd (crval1)
+ if (.not.(ctype .eq. 1)) goto 260
+ call pargsr (st0032)
+ goto 261
+260 continue
+ call pargsr (st0033)
+261 continue
+ call pargd (crval2)
+ call fprinf (fd, st0034)
+ call pargd (crpix1)
+ call pargd (crpix2)
+ call fprinf (fd, st0035)
+ call pargr (memr(img+10) )
+ call pargr (memr(img+9) )
+ call fprinf (fd, st0036)
+ sw0002=(radecs)
+ goto 270
+280 continue
+ call pargsr (st0037)
+ call pargd (skstad(co,5))
+ call pargsr (st0038)
+ call pargd (slepj(skstad(co,6)))
+ goto 271
+290 continue
+ if (.not.(memi(img+11) .eq. 1)) goto 300
+ call pargsr (st0039)
+ call pargd (1.6d308)
+ call pargsr (st0040)
+ call pargd (1.6d308)
+ goto 301
+300 continue
+ call pargsr (st0041)
+ call pargd (skstad(co,5))
+ call pargsr (st0042)
+ call pargd (slepb(skstad(co,6)))
+301 continue
+ goto 271
+270 continue
+ if (sw0002.eq.3) goto 280
+ if (sw0002.eq.4) goto 280
+ goto 290
+271 continue
+ call fprinf (fd, st0043)
+ call pargd (skstad(co,6))
+ call fprinf (fd, st0044)
+ call xfcloe(fd)
+ call wcspie (memc(buf))
+ call sfree (sp)
+100 return
+ end
+ subroutine imgseb (pixtab, size, x1, x2, y1, y2)
+ integer size
+ integer x1
+ integer x2
+ integer y1
+ integer y2
+ real pixtab(*)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer sp
+ integer buf
+ integer el
+ integer i
+ integer j
+ integer npix
+ real pix
+ real sum
+ real sum2
+ real mean
+ real var
+ real stdev
+ real x
+ real y
+ integer*2 st0001(20)
+ integer*2 st0002(10)
+ integer*2 st0003(2)
+ integer*2 st0004(5)
+ integer*2 st0005(2)
+ integer*2 st0006(10)
+ integer*2 st0007(3)
+ integer*2 st0008(2)
+ integer*2 st0009(10)
+ integer*2 st0010(3)
+ integer*2 st0011(20)
+ integer*2 st0012(2)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /112,105,120,116, 97, 98, 32,123/
+ data (st0001(iyy),iyy= 9,16) / 10,123, 10,116, 97, 98,108,101/
+ data (st0001(iyy),iyy=17,20) / 32,123, 10, 0/
+ data (st0002(iyy),iyy= 1, 8) / 32,123, 37, 49, 48, 46, 49,102/
+ data (st0002(iyy),iyy= 9,10) /125, 0/
+ data st0003 / 10, 0/
+ data st0004 /125, 10,125, 10, 0/
+ data st0005 /123, 0/
+ data (st0006(iyy),iyy= 1, 8) / 32,123, 37, 49, 48, 46, 49,102/
+ data (st0006(iyy),iyy= 9,10) /125, 0/
+ data st0007 /125, 10, 0/
+ data st0008 /123, 0/
+ data (st0009(iyy),iyy= 1, 8) / 32,123, 37, 49, 48, 46, 49,102/
+ data (st0009(iyy),iyy= 9,10) /125, 0/
+ data st0010 /125, 10, 0/
+ data (st0011(iyy),iyy= 1, 8) / 32,123, 32, 37, 49, 48, 46, 50/
+ data (st0011(iyy),iyy= 9,16) /102, 32, 37, 49, 48, 46, 52,102/
+ data (st0011(iyy),iyy=17,20) / 32,125, 10, 0/
+ data st0012 /125, 0/
+ call smark (sp)
+ call salloc (buf, (6*1023 ), 2)
+ call salloc (el, 255 , 2)
+ call xstrcy(st0001, memc(buf), (6*1023 ))
+ sum = 0.0
+ sum2 = 0.0
+ npix = size * size
+ i=size - 1
+110 if (.not.(i .ge. 0)) goto 112
+ j=1
+120 if (.not.(j .le. size)) goto 122
+ pix = pixtab((i * size) + j)
+ sum = sum + pix
+ sum2 = sum2 + (pix * pix)
+ call sprinf (memc(el), 255 , st0002)
+ call pargr (pix)
+ call xstrct(memc(el), memc(buf), (6*1023 ))
+121 j=j+1
+ goto 120
+122 continue
+ call xstrct(st0003, memc(buf), (6*1023 ))
+111 i=i-1
+ goto 110
+112 continue
+ call xstrct(st0004, memc(buf), (6*1023 ))
+ call xstrct(st0005, memc(buf), (6*1023 ))
+ x = x1
+130 if (.not.(x .le. x2)) goto 132
+ call sprinf (memc(el), 255 , st0006)
+ call pargr (x)
+ call xstrct(memc(el), memc(buf), (6*1023 ))
+131 x = x + 1.
+ goto 130
+132 continue
+ call xstrct(st0007, memc(buf), (6*1023 ))
+ call xstrct(st0008, memc(buf), (6*1023 ))
+ y = y2
+140 if (.not.(y .ge. y1)) goto 142
+ call sprinf (memc(el), 255 , st0009)
+ call pargr (y)
+ call xstrct(memc(el), memc(buf), (6*1023 ))
+141 y = y - 1.
+ goto 140
+142 continue
+ call xstrct(st0010, memc(buf), (6*1023 ))
+ mean = sum / real(npix)
+ var = (sum2 - sum * mean) / real(npix - 1)
+ if (.not.(var .le. 0)) goto 150
+ stdev = 0.0
+ goto 151
+150 continue
+ stdev = sqrt (var)
+151 continue
+ call sprinf (memc(el), 255 , st0011)
+ call pargr (mean)
+ call pargr (stdev)
+ call xstrct(memc(el), memc(buf), (6*1023 ))
+ call xstrct(st0012, memc(buf), (6*1023 ))
+ call wcspie (memc(buf))
+ call sfree (sp)
+100 return
+ end
+ integer function imgams (im, mw)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer mw
+ integer ct
+ double precision r(7 )
+ double precision w(7 )
+ double precision cd(7 ,7 )
+ double precision imgetd
+ integer mwsctn
+ integer*2 st0001(5)
+ integer*2 st0002(5)
+ integer*2 st0003(7)
+ integer*2 st0004(7)
+ integer*2 st0005(10)
+ integer*2 st0006(8)
+ integer*2 st0007(10)
+ save
+ integer iyy
+ data st0001 / 65, 84, 86, 49, 0/
+ data st0002 / 65, 84, 86, 50, 0/
+ data st0003 / 65, 84, 77, 49, 95, 49, 0/
+ data st0004 / 65, 84, 77, 50, 95, 50, 0/
+ data (st0005(iyy),iyy= 1, 8) / 97,109,112,108,105,102,105,101/
+ data (st0005(iyy),iyy= 9,10) /114, 0/
+ data st0006 /108,111,103,105, 99, 97,108, 0/
+ data (st0007(iyy),iyy= 1, 8) / 97,109,112,108,105,102,105,101/
+ data (st0007(iyy),iyy= 9,10) /114, 0/
+ r(1) = 0.0d0
+ r(2) = 0.0d0
+ w(1) = imgetd (im, st0001)
+ w(2) = imgetd (im, st0002)
+ cd(1,1) = imgetd (im, st0003)
+ cd(1,2) = 0.0d0
+ cd(2,1) = 0.0d0
+ cd(2,2) = imgetd (im, st0004)
+ call mwnewm (mw, st0005, 2)
+ call mwswtd (mw, r, w, cd, 2)
+ ct = mwsctn (mw, st0006, st0007, 3)
+ call mwsdes (mw)
+ imgams = (ct)
+ goto 100
+100 return
+ end
+ integer function imgdes (im, mw)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer im
+ integer mw
+ integer ct
+ double precision r(7 )
+ double precision w(7 )
+ double precision cd(7 ,7 )
+ double precision imgetd
+ integer mwsctn
+ integer*2 st0001(5)
+ integer*2 st0002(5)
+ integer*2 st0003(7)
+ integer*2 st0004(7)
+ integer*2 st0005(9)
+ integer*2 st0006(8)
+ integer*2 st0007(9)
+ save
+ integer iyy
+ data st0001 / 68, 84, 86, 49, 0/
+ data st0002 / 68, 84, 86, 50, 0/
+ data st0003 / 68, 84, 77, 49, 95, 49, 0/
+ data st0004 / 68, 84, 77, 50, 95, 50, 0/
+ data (st0005(iyy),iyy= 1, 8) /100,101,116,101, 99,116,111,114/
+ data (st0005(iyy),iyy= 9, 9) / 0/
+ data st0006 /108,111,103,105, 99, 97,108, 0/
+ data (st0007(iyy),iyy= 1, 8) /100,101,116,101, 99,116,111,114/
+ data (st0007(iyy),iyy= 9, 9) / 0/
+ r(1) = 0.0d0
+ r(2) = 0.0d0
+ w(1) = imgetd (im, st0001)
+ w(2) = imgetd (im, st0002)
+ cd(1,1) = imgetd (im, st0003)
+ cd(1,2) = 0.0d0
+ cd(2,1) = 0.0d0
+ cd(2,2) = imgetd (im, st0004)
+ call mwnewm (mw, st0005, 2)
+ call mwswtd (mw, r, w, cd, 2)
+ ct = mwsctn (mw, st0006, st0007, 3)
+ call mwsdes (mw)
+ imgdes = (ct)
+ goto 100
+100 return
+ end
+ subroutine imgcos (cp, line, wcsnae, xunits, yunits)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer line
+ integer*2 wcsnae(*)
+ integer*2 xunits(*)
+ integer*2 yunits(*)
+ integer img
+ integer co
+ integer wp
+ integer sp
+ integer proj
+ integer radecr
+ integer xstrcp
+ integer skstai
+ integer idxstr
+ integer sw0001,sw0002
+ integer*2 st0001(5)
+ integer*2 st0002(5)
+ integer*2 st0003(5)
+ integer*2 st0004(5)
+ integer*2 st0005(5)
+ integer*2 st0006(5)
+ integer*2 st0007(5)
+ integer*2 st0008(5)
+ integer*2 st0009(9)
+ integer*2 st0010(5)
+ integer*2 st0011(5)
+ integer*2 st0012(9)
+ integer*2 st0013(5)
+ integer*2 st0014(5)
+ integer*2 st0015(14)
+ integer*2 st0016(5)
+ integer*2 st0017(5)
+ integer*2 st0018(5)
+ integer*2 st0019(5)
+ integer*2 st0020(2)
+ integer*2 st0021(2)
+ integer*2 st0022(9)
+ integer*2 st0023(3)
+ integer*2 st0024(4)
+ integer*2 st0025(4)
+ integer*2 st0026(5)
+ integer*2 st0027(5)
+ integer*2 st0028(30)
+ integer*2 st0029(4)
+ integer*2 st0030(2)
+ integer*2 st0031(3)
+ integer*2 st0032(114)
+ integer*2 st0033(7)
+ integer*2 st0034(4)
+ integer*2 st0035(4)
+ integer*2 st0036(5)
+ integer*2 st0037(6)
+ integer*2 st0038(9)
+ save
+ integer iyy
+ data st0001 / 32, 32, 82, 65, 0/
+ data st0002 / 32, 68,101, 99, 0/
+ data st0003 / 69, 76,111,110, 0/
+ data st0004 / 69, 76, 97,116, 0/
+ data st0005 / 71, 76,111,110, 0/
+ data st0006 / 71, 76, 97,116, 0/
+ data st0007 / 83, 76,111,110, 0/
+ data st0008 / 83, 76, 97,116, 0/
+ data (st0009(iyy),iyy= 1, 8) /101, 99,108,105,112,116,105, 99/
+ data (st0009(iyy),iyy= 9, 9) / 0/
+ data st0010 / 69, 76,111,110, 0/
+ data st0011 / 69, 76, 97,116, 0/
+ data (st0012(iyy),iyy= 1, 8) /103, 97,108, 97, 99,116,105, 99/
+ data (st0012(iyy),iyy= 9, 9) / 0/
+ data st0013 / 71, 76,111,110, 0/
+ data st0014 / 71, 76, 97,116, 0/
+ data (st0015(iyy),iyy= 1, 8) /115,117,112,101,114,103, 97,108/
+ data (st0015(iyy),iyy= 9,14) / 97, 99,116,105, 99, 0/
+ data st0016 / 83, 76,111,110, 0/
+ data st0017 / 83, 76, 97,116, 0/
+ data st0018 / 32, 32, 82, 65, 0/
+ data st0019 / 32, 68,101, 99, 0/
+ data st0020 / 88, 0/
+ data st0021 / 89, 0/
+ data (st0022(iyy),iyy= 1, 8) / 37,115, 45, 37,115, 45, 37,115/
+ data (st0022(iyy),iyy= 9, 9) / 0/
+ data st0023 / 69, 81, 0/
+ data st0024 / 69, 67, 76, 0/
+ data st0025 / 71, 65, 76, 0/
+ data st0026 / 83, 71, 65, 76, 0/
+ data st0027 / 85, 78, 75, 78, 0/
+ data (st0028(iyy),iyy= 1, 8) /124,102,107, 52,124,102,107, 52/
+ data (st0028(iyy),iyy= 9,16) / 45,110,111, 45,101,124,102,107/
+ data (st0028(iyy),iyy=17,24) / 53,124,105, 99,114,115,124,103/
+ data (st0028(iyy),iyy=25,30) / 97,112,112,116,124, 0/
+ data st0029 / 70, 75, 53, 0/
+ data st0030 / 45, 0/
+ data st0031 / 45, 45, 0/
+ data (st0032(iyy),iyy= 1, 8) /124,108,105,110,124, 97,122,112/
+ data (st0032(iyy),iyy= 9,16) /124,116, 97,110,124,115,105,110/
+ data (st0032(iyy),iyy=17,24) /124,115,116,103,124, 97,114, 99/
+ data (st0032(iyy),iyy=25,32) /124,122,112,110,124,122,101, 97/
+ data (st0032(iyy),iyy=33,40) /124, 97,105,114,124, 99,121,112/
+ data (st0032(iyy),iyy=41,48) /124, 99, 97,114,124,109,101,114/
+ data (st0032(iyy),iyy=49,56) /124, 99,101, 97,124, 99,111,112/
+ data (st0032(iyy),iyy=57,64) /124, 99,111,100,124, 99,111,101/
+ data (st0032(iyy),iyy=65,72) /124, 99,111,111,124, 98,111,110/
+ data (st0032(iyy),iyy=73,80) /124,112, 99,111,124,103,108,115/
+ data (st0032(iyy),iyy=81,88) /124,112, 97,114,124, 97,105,116/
+ data (st0032(iyy),iyy=89,96) /124,109,111,108,124, 99,115, 99/
+ data (st0032(iyy),iyy=97,104) /124,113,115, 99,124,116,115, 99/
+ data (st0032(iyy),iyy=105,112) /124,116,110,120,124,122,112,120/
+ data (st0032(iyy),iyy=113,114) /124, 0/
+ data st0033 /108,105,110,101, 97,114, 0/
+ data st0034 /102,107, 52, 0/
+ data st0035 /102,107, 53, 0/
+ data st0036 /105, 99,114,115, 0/
+ data st0037 /103, 97,112,112,116, 0/
+ data (st0038(iyy),iyy= 1, 8) /102,107, 52, 45,110,111, 45,101/
+ data (st0038(iyy),iyy= 9, 9) / 0/
+ img = memi(cp+3)
+ co = memi(img+4)
+ wp = memi(img )
+ if (.not.(memi(memi(wp+3) +line-1) .eq. 4 )) goto 110
+ sw0001=(skstai(co,7))
+ goto 120
+130 continue
+ call xstrcy(st0001, xunits, 32 )
+ call xstrcy(st0002, yunits, 32 )
+ goto 121
+140 continue
+ call xstrcy(st0003, xunits, 32 )
+ call xstrcy(st0004, yunits, 32 )
+ goto 121
+150 continue
+ call xstrcy(st0005, xunits, 32 )
+ call xstrcy(st0006, yunits, 32 )
+ goto 121
+160 continue
+ call xstrcy(st0007, xunits, 32 )
+ call xstrcy(st0008, yunits, 32 )
+ goto 121
+120 continue
+ if (sw0001.lt.1.or.sw0001.gt.4) goto 121
+ goto (130,140,150,160),sw0001
+121 continue
+ goto 111
+110 continue
+ if (.not.(memi(memi(wp+3) +line-1) .eq. 5 )) goto 170
+ call xstrcy(memc(memi(wp+4) +(32 *(line-1))), wcsnae, 32 )
+ call strlwr (wcsnae)
+ if (.not.(xstrcp(wcsnae,st0009) .eq. 0)) goto 180
+ call xstrcy(st0010, xunits, 32 )
+ call xstrcy(st0011, yunits, 32 )
+ goto 181
+180 continue
+ if (.not.(xstrcp(wcsnae,st0012) .eq. 0)) goto 190
+ call xstrcy(st0013, xunits, 32 )
+ call xstrcy(st0014, yunits, 32 )
+ goto 191
+190 continue
+ if (.not.(xstrcp(wcsnae,st0015) .eq. 0)) goto 200
+ call xstrcy(st0016, xunits, 32 )
+ call xstrcy(st0017, yunits, 32 )
+ goto 201
+200 continue
+ call xstrcy(st0018, xunits, 32 )
+ call xstrcy(st0019, yunits, 32 )
+201 continue
+191 continue
+181 continue
+ goto 171
+170 continue
+ call xstrcy(st0020, xunits, 32 )
+ call xstrcy(st0021, yunits, 32 )
+171 continue
+111 continue
+ if (.not.(memi(memi(wp+3) +line-1) .ne. 4 )) goto 210
+ call xstrcy(memc(memi(wp+4) +(32 *(line-1))), wcsnae, 32 )
+ goto 211
+210 continue
+ call smark (sp)
+ call salloc (radecr, 255 , 2)
+ call salloc (proj, 255 , 2)
+ call sprinf (wcsnae, 32 , st0022)
+ sw0002=(skstai(co,7))
+ goto 220
+230 continue
+ call pargsr (st0023)
+ goto 221
+240 continue
+ call pargsr (st0024)
+ goto 221
+250 continue
+ call pargsr (st0025)
+ goto 221
+260 continue
+ call pargsr (st0026)
+ goto 221
+270 continue
+ call pargsr (st0027)
+ goto 221
+220 continue
+ if (sw0002.lt.1.or.sw0002.gt.4) goto 270
+ goto (230,240,250,260),sw0002
+221 continue
+ if (.not.(skstai(co,7) .eq. 1)) goto 280
+ if (.not.(idxstr(skstai(co,8), memc(radecr), 255 , st0028
+ * ) .le. 0)) goto 290
+ call xstrcy(st0029, memc(radecr), 255 )
+290 continue
+ call strupr (memc(radecr))
+ call pargsr (memc(radecr))
+ goto 281
+280 continue
+ if (.not.(skstai(co,7) .eq. 4)) goto 300
+ call pargsr (st0030)
+ goto 301
+300 continue
+ call pargsr (st0031)
+301 continue
+281 continue
+ if (.not.(idxstr(skstai(co,9), memc(proj), 255 , st0032) .le
+ * . 0)) goto 310
+ call xstrcy(st0033, memc(proj), 255 )
+310 continue
+ call strupr (memc(proj))
+ call pargsr (memc(proj))
+ call sfree (sp)
+211 continue
+ if (.not.(xstrcp(wcsnae, st0034) .eq. 0 .or. xstrcp(wcsnae,
+ * st0035) .eq. 0 .or. xstrcp(wcsnae, st0036) .eq. 0 .or. xstrcp(
+ * wcsnae, st0037) .eq. 0 .or. xstrcp(wcsnae, st0038) .eq. 0))
+ * goto 320
+ call strupr (wcsnae)
+ goto 321
+320 continue
+ if (.not.((wcsnae(1).ge.97.and.wcsnae(1).le.122))) goto 330
+ wcsnae(1) = (wcsnae(1)+65-97)
+330 continue
+321 continue
+100 return
+ end
+ subroutine imgcot (cp, line, xval, yval, xc, yc)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer line
+ double precision xval
+ double precision yval
+ integer*2 xc(*)
+ integer*2 yc(*)
+ integer img
+ integer co
+ integer wp
+ integer*2 xfmt(32 +1)
+ integer*2 yfmt(32 +1)
+ integer skstai
+ logical streq
+ integer*2 st0001(7)
+ integer*2 st0002(7)
+ integer*2 st0003(9)
+ integer*2 st0004(9)
+ integer*2 st0005(14)
+ integer*2 st0006(3)
+ integer*2 st0007(5)
+ integer*2 st0008(5)
+ integer*2 st0009(7)
+ integer*2 st0010(7)
+ integer*2 st0011(5)
+ integer*2 st0012(5)
+ integer*2 st0013(3)
+ integer*2 st0014(7)
+ integer*2 st0015(7)
+ save
+ integer iyy
+ data st0001 / 37, 49, 48, 46, 50,102, 0/
+ data st0002 / 37, 49, 48, 46, 50,102, 0/
+ data (st0003(iyy),iyy= 1, 8) /101, 99,108,105,112,116,105, 99/
+ data (st0003(iyy),iyy= 9, 9) / 0/
+ data (st0004(iyy),iyy= 1, 8) /103, 97,108, 97, 99,116,105, 99/
+ data (st0004(iyy),iyy= 9, 9) / 0/
+ data (st0005(iyy),iyy= 1, 8) /115,117,112,101,114,103, 97,108/
+ data (st0005(iyy),iyy= 9,14) / 97, 99,116,105, 99, 0/
+ data st0006 / 37,104, 0/
+ data st0007 / 37, 46, 50, 72, 0/
+ data st0008 / 37, 46, 49,104, 0/
+ data st0009 / 37, 49, 48, 46, 50,102, 0/
+ data st0010 / 37, 49, 48, 46, 50,102, 0/
+ data st0011 / 37, 46, 50, 72, 0/
+ data st0012 / 37, 46, 49,104, 0/
+ data st0013 / 37,104, 0/
+ data st0014 / 37, 49, 48, 46, 50,102, 0/
+ data st0015 / 37, 49, 48, 46, 50,102, 0/
+ img = memi(cp+3)
+ co = memi(img+4)
+ wp = memi(img )
+ if (.not.(memi(memi(wp+5) +line-1) .eq. 1 )) goto 110
+ if (.not.(memi(img+3) .eq. 0)) goto 120
+ call xstrcy(st0001, xfmt, 32 )
+ call xstrcy(st0002, yfmt, 32 )
+ goto 121
+120 continue
+ if (.not.(memi(memi(wp+3) +line-1) .eq. 4 .or. memi(memi(
+ * wp+3) +line-1) .eq. 5 )) goto 130
+ if (.not.(streq(memc(memi(wp+4) +(32 *(line-1))),
+ * st0003) .or. streq(memc(memi(wp+4) +(32 *(line-1))),
+ * st0004) .or. streq(memc(memi(wp+4) +(32 *(line-1))),
+ * st0005))) goto 140
+ call xstrcy(st0006, xfmt, 32 )
+ goto 141
+140 continue
+ call xstrcy(st0007, xfmt, 32 )
+141 continue
+ call xstrcy(st0008, yfmt, 32 )
+ goto 131
+130 continue
+ call xstrcy(st0009, xfmt, 32 )
+ call xstrcy(st0010, yfmt, 32 )
+131 continue
+121 continue
+ goto 111
+110 continue
+ if (.not.(memi(memi(wp+5) +line-1) .eq. 2 )) goto 150
+ if (.not.(skstai(co, 7) .eq. 1)) goto 160
+ call xstrcy(st0011, xfmt, 32 )
+ goto 161
+160 continue
+ call xstrcy(st0012, xfmt, 32 )
+161 continue
+ call xstrcy(st0013, yfmt, 32 )
+ goto 151
+150 continue
+ call xstrcy(st0014, xfmt, 32 )
+ call xstrcy(st0015, yfmt, 32 )
+151 continue
+111 continue
+ call sprinf (xc, 32 , xfmt)
+ if (.not.(memi(memi(wp+5) +line-1) .ne. 4 )) goto 170
+ call pargd (xval)
+ goto 171
+170 continue
+ call pargd (((xval)/57.295779513082320877))
+171 continue
+ call sprinf (yc, 32 , yfmt)
+ if (.not.(memi(memi(wp+5) +line-1) .ne. 4 )) goto 180
+ call pargd (yval)
+ goto 181
+180 continue
+ call pargd (((yval)/57.295779513082320877))
+181 continue
+100 return
+ end
+ subroutine imgged (img, x, y, system, wcsnae, wx, wy)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer img
+ double precision x
+ double precision y
+ integer system
+ double precision wx
+ double precision wy
+ integer*2 wcsnae(*)
+ double precision ox
+ double precision oy
+ real epoch
+ integer im
+ integer co
+ integer nco
+ integer*2 buf(1023 +1)
+ integer stat
+ real imgetr
+ integer imaccf
+ integer skstai
+ integer skdecr
+ logical streq
+ integer sw0001
+ logical xerflg
+ common /xercom/ xerflg
+ integer*2 st0001(9)
+ integer*2 st0002(6)
+ integer*2 st0003(6)
+ integer*2 st0004(6)
+ integer*2 st0005(8)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /101, 99,108,105,112,116,105, 99/
+ data (st0001(iyy),iyy= 9, 9) / 0/
+ data st0002 /103, 97,112,112,116, 0/
+ data st0003 / 69, 80, 79, 67, 72, 0/
+ data st0004 / 69, 80, 79, 67, 72, 0/
+ data st0005 / 37,115, 32, 37, 46, 49,102, 0/
+ im = memi(img+1)
+ co = memi(img+4)
+ wx = x
+ wy = y
+ sw0001=(system)
+ goto 110
+120 continue
+ wx = x
+ wy = y
+ goto 111
+130 continue
+ if (.not.(memi(img+6) .ne. 0)) goto 140
+ call mwc2td (memi(img+6) , x, y, wx, wy)
+140 continue
+ goto 111
+150 continue
+ if (.not.(memi(img+5) .ne. 0)) goto 160
+ call mwc2td (memi(img+5) , x, y, wx, wy)
+160 continue
+ goto 111
+170 continue
+ if (.not.(memi(img+7) .ne. 0)) goto 180
+ call mwc2td (memi(img+7) , x, y, wx, wy)
+180 continue
+ goto 111
+190 continue
+ goto 111
+200 continue
+ if (.not.(memi(img+8) .ne. 0)) goto 210
+ call mwc2td (memi(img+8) , x, y, wx, wy)
+210 continue
+ goto 111
+220 continue
+ if (.not.(streq (wcsnae, st0001) .or. streq (wcsnae, st0002)
+ * )) goto 230
+ if (.not.(imaccf (im, st0003) .eq. 1)) goto 240
+ epoch = imgetr (im, st0004)
+ if (xerflg) goto 100
+ if (.not.(epoch .eq. 0.0 .or. ((epoch).eq.1.6e38)))
+ * goto 250
+ epoch = 1950.0
+250 continue
+ goto 241
+240 continue
+ epoch = 1950.0
+241 continue
+ call sprinf (buf, 1023 , st0005)
+ call pargsr (wcsnae)
+ call pargr (epoch)
+ goto 231
+230 continue
+ call xstrcy(wcsnae, buf, 1023 )
+231 continue
+ stat = skdecr (buf, nco, co)
+ if (.not.(stat .ne. -1)) goto 260
+ if (.not.(memi(img+5) .ne. 0)) goto 270
+ call mwc2td (memi(img+5) , x, y, ox, oy)
+270 continue
+ call sklltn (co, nco, ((ox)/57.295779513082320877), ((oy)
+ * /57.295779513082320877), 1.6d308, 1.6d308, 0.0d0, 0.0d0,
+ * wx, wy)
+ if (.not.(skstai(co,11) .lt. skstai(co,10))) goto 280
+ wx = ((wy)*57.295779513082320877)
+ wy = ((wx)*57.295779513082320877)
+ goto 281
+280 continue
+ wx = ((wx)*57.295779513082320877)
+ wy = ((wy)*57.295779513082320877)
+281 continue
+260 continue
+ goto 111
+290 continue
+ goto 111
+300 continue
+ wx = x
+ wy = y
+ goto 111
+110 continue
+ if (sw0001.lt.1.or.sw0001.gt.9) goto 300
+ goto (120,300,130,150,220,170,190,200,290),sw0001
+111 continue
+100 return
+ end
+c sprinf sprintf
+c temple template
+c skstad sk_statd
+c wcspie wcspix_message
+c imgser img_send_header
+c radecs radecsys
+c stropn stropen
+c skstai sk_stati
+c skdecr sk_decwstr
+c imgcae img_cache
+c mwstai mw_stati
+c getlie getline
+c skdecm sk_decim
+c imgses img_send_compass
+c imgseo img_send_wcsinfo
+c ximalt xim_alert
+c wcsnae wcsname
+c bpmpix bpm_pix
+c mwc2td mw_c2trand
+c imgune img_uncache
+c imgwcn img_wcstran
+c mwswtd mw_swtermd
+c sklltn sk_lltran
+c mwsctn mw_sctran
+c imunmp imunmap
+c imgwct img_wcslist
+c keywfr keyw_filter
+c imgged img_get_coord
+c fprinf fprintf
+c imgint img_init
+c imofnu imofnlu
+c dspmmp ds_pmmap
+c imggea img_get_data
+c imgseb img_send_pixtab
+c imgcos img_coord_labels
+c imgcot img_coord_fmt
+c imgobo img_objinfo
+c putlie putline
+c imgdes img_det_wcs
+c hdrsie hdr_size
+c radecr radecstr
+c imgams img_amp_wcs
+c pargsr pargstr
+c mwcloe mw_close
+c mwnewm mw_newsystem
+c wcsgfm wcs_gfterm
+c fpequd fp_equald
+c mwsdes mw_sdefwcs
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.x b/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.x
new file mode 100644
index 00000000..a21571a3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcimage.x
@@ -0,0 +1,1268 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <math.h>
+include <imio.h>
+include <imhdr.h>
+include <ctype.h>
+include <mwset.h>
+include "../lib/skywcs/skywcs.h"
+include "wcspix.h"
+
+
+# Image class data.
+define LEN_IMGDATA 15
+define IMG_WP Memi[$1 ] # wcspix back-pointer
+define IMG_IM Memi[$1+1] # image pointer
+define IMG_BPM Memi[$1+2] # bad pixel mask pointer
+define IMG_MW Memi[$1+3] # image wcs pointer
+define IMG_CO Memi[$1+4] # skywcs transform pointer
+define IMG_CTW Memi[$1+5] # mwcs log->world transform ptr
+define IMG_CTP Memi[$1+6] # mwcs log->phys transform ptr
+define IMG_CTA Memi[$1+7] # mwcs log->amplifier transform
+define IMG_CTD Memi[$1+8] # mwcs log->detector transform
+define IMG_ROT Memr[$1+9] # rotation angle
+define IMG_SCALE Memr[$1+10] # plate scale
+define IMG_LINEAR Memi[$1+11] # linear coords
+
+
+define IMG_DEBUG FALSE
+
+
+# IMG_INIT -- Initialize the object structure.
+
+procedure img_init (cp, wp)
+
+pointer cp #i cache pointer
+pointer wp #i WCSPIX structure
+
+pointer img # data pointer
+
+begin
+ if (IMG_DEBUG) call printf ("img_init: \n")
+
+ # Allocate the image data structure if not previously allocated.
+ if (C_DATA(cp) == NULL) {
+ iferr (call calloc (C_DATA(cp), LEN_IMGDATA, TY_STRUCT))
+ return
+ }
+
+ img = C_DATA(cp)
+ IMG_WP(img) = wp
+ IMG_IM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = YES
+end
+
+
+# IMG_CACHE -- Cache an image in the object cache.
+
+procedure img_cache (cp, objid, regid, ref)
+
+pointer cp #i cache pointer
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object reference
+
+pointer img, im, wp
+int stat
+char alert[SZ_LINE]
+
+pointer immap(), ds_pmmap(), mw_sctran()
+pointer img_amp_wcs(), img_det_wcs()
+int imaccf(), sk_decim()
+
+errchk immap, ds_pmmap(), mw_sctran, sk_decim
+
+begin
+ if (IMG_DEBUG) call printf ("img_cache: \n")
+
+ # Now map the image and WCS.
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+
+ iferr (IMG_IM(img) = immap (ref, READ_ONLY, 0)) {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to cache\n%s")
+ call pargstr (ref)
+ call xim_alert (alert, "", "")
+ return
+ }
+
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ iferr {
+ stat = sk_decim (IMG_IM(img), "world", IMG_MW(img), IMG_CO(img))
+ if (stat == ERR || IMG_MW(img) == NULL)
+ IMG_LINEAR(img) = YES
+
+ if (IMG_MW(img) != NULL) {
+ IMG_CTW(img) = mw_sctran (IMG_MW(img), "logical", "world", 03B)
+ IMG_CTP(img) = mw_sctran (IMG_MW(img), "logical", "physical",
+ 03B)
+
+ # Get the amplifier transformation values if present.
+ im = IMG_IM(img)
+ if (imaccf(im,"ATM1_1") == YES &&
+ imaccf(im,"ATM2_2") == YES &&
+ imaccf(im,"ATV1") == YES &&
+ imaccf(im,"ATV2") == YES)
+ IMG_CTA(img) = img_amp_wcs (im, IMG_MW(img))
+
+ if (imaccf(im,"DTM1_1") == YES &&
+ imaccf(im,"DTM2_2") == YES &&
+ imaccf(im,"DTV1") == YES &&
+ imaccf(im,"DTV2") == YES)
+ IMG_CTD(img) = img_det_wcs (im, IMG_MW(img))
+ }
+
+ } then {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to decode image WCS\n%s")
+ call pargstr (ref)
+ call xim_alert (alert, "", "")
+ IMG_LINEAR(img) = YES
+ }
+
+ # See if we can find a bad pixel mask.
+ if (WP_BPM(wp) == YES) {
+ iferr (IMG_BPM(img) = ds_pmmap ("BPM", IMG_IM(img)))
+ IMG_BPM(img) = NULL
+ }
+
+ C_OBJID(cp) = objid
+ C_REGID(cp) = regid
+ C_NREF(cp) = C_NREF(cp) + 1
+ call strcpy (ref, C_REF(cp), 128)
+end
+
+
+# IMG_UNCACHE -- Uncache an image in the object cache.
+
+procedure img_uncache (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img
+
+begin
+ if (IMG_DEBUG) call printf ("img_uncache: \n")
+
+ C_OBJID(cp) = NULL
+ C_NREF(cp) = 0
+ call strcpy ("", C_REF(cp), SZ_FNAME)
+
+ img = C_DATA(cp)
+ if (IMG_MW(img) != NULL)
+ call mw_close (IMG_MW(img))
+ if (IMG_BPM(img) != NULL)
+ call imunmap (IMG_BPM(img))
+ if (IMG_IM(img) != NULL)
+ call imunmap (IMG_IM(img))
+
+ IMG_IM(img) = NULL
+ IMG_BPM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = NO
+
+ call mfree (C_DATA(cp), TY_STRUCT)
+ C_DATA(cp) = NULL
+end
+
+
+# IMG_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs. Message is returned as something like:
+#
+# set value {
+# { object <objid> } { region <regionid> }
+# { pixval <pixel_value> [<units>] }
+# { bpm <bpm_pixel_value> }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# :
+# }
+
+
+procedure img_wcstran (cp, id, x, y)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+
+pointer img, im, wp, co
+double dx, dy, wx, wy, pixval
+real rx, ry
+int i, bpm
+
+# Use static storage to avoid allocation overhead.
+char buf[SZ_LINE]
+char msg[SZ_LINE], wcs[LEN_WCSNAME], xc[LEN_WCSNAME], yc[LEN_WCSNAME]
+char xunits[LEN_WCSNAME], yunits[LEN_WCSNAME]
+
+double sk_statd()
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcstran: \n")
+
+ img = C_DATA(cp) # initialize
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+
+ # Get the translation to the image section.
+ dx = (double(x) - sk_statd(co,S_VXOFF)) / sk_statd(co,S_VXSTEP)
+ dy = (double(y) - sk_statd(co,S_VYOFF)) / sk_statd(co,S_VYSTEP)
+ rx = dx
+ ry = dy
+
+ # Read the pixel data.
+ call img_get_data (cp, id, rx, ry, pixval, bpm)
+
+ # Begin formatting the message.
+ call aclrc (msg, SZ_LINE)
+ call sprintf (msg, SZ_LINE, "wcstran { object %d } { region %d } ")
+ call pargi (C_OBJID(cp))
+ call pargi (C_REGID(cp))
+
+ call sprintf (buf, SZ_LINE, "{ pixval %9.9g } { bpm %d }\n")
+ call pargd (pixval)
+ call pargi (bpm)
+ call strcat (buf, msg, SZ_LINE)
+
+ # Now loop over the requested systems and generate a coordinate
+ # for each.
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+
+ # Get the coordinate value.
+ call img_get_coord (img, dx, dy, SYSTEMS(wp,i), WCSNAME(wp,i),
+ wx, wy)
+
+ # Get the system name, labels, and formats strings for the WCS.
+ call img_coord_labels (cp, i, wcs, xunits, yunits)
+
+ # Format the values as requested.
+ call img_coord_fmt (cp, i, wx, wy, xc, yc)
+
+ # Format the coord buffer and append it to the message.
+ call sprintf (buf, SZ_LINE,
+ "{coord {%9s} {%12s} {%12s} {%4s} {%4s}}\n")
+ call pargstr (wcs)
+ call pargstr (xc)
+ call pargstr (yc)
+ call pargstr (xunits)
+ call pargstr (yunits)
+ call strcat (buf, msg, SZ_LINE)
+ }
+
+ # Now send the completed message.
+ call wcspix_message (msg);
+end
+
+
+# IMG_WCSLIST -- List the WCSs available for the given image.
+
+procedure img_wcslist (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img, im, mw
+char msg[SZ_LINE]
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcslist: \n")
+
+ img = C_DATA(cp) # initialize
+ mw = IMG_MW(img)
+ im = IMG_IM(img)
+
+ call strcpy ("wcslist {None Logical World Physical line ", msg, SZ_LINE)
+
+ # See if we can do amplifier/detector coords by checking for ATM/ATV
+ # and DTM/DTV keywords.
+
+ if (IMG_CTA(img) != NULL)
+ call strcat (" Amplifier ", msg, SZ_LINE)
+ if (IMG_CTD(img) != NULL)
+ call strcat (" Detector ", msg, SZ_LINE)
+ if (IMG_CTA(img) != NULL || IMG_CTD(img) != NULL)
+ call strcat (" CCD ", msg, SZ_LINE)
+ call strcat (" line ", msg, SZ_LINE)
+
+ # If we have a MWCS pointer list the sky projections.
+ if (mw != NULL)
+ call strcat (SKYPROJ, msg, SZ_LINE)
+
+ # Close the message.
+ call strcat ("}", msg, SZ_LINE)
+
+ call wcspix_message (msg)
+end
+
+
+# IMG_GET_DATA -- Get data from the image.
+
+procedure img_get_data (cp, id, x, y, pixval, bpm_pix)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+double pixval #o central pixel value
+int bpm_pix #o bad pixel mask value
+
+pointer img, wp, im, bpm, pix
+int nl, nc, ix, iy
+int size, x1, x2, y1, y2
+
+pointer imgs2r(), imgs2i()
+
+begin
+ if (IMG_DEBUG) call printf ("img_get_data: \n")
+
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+ bpm = IMG_BPM(img)
+ nc = IM_LEN(im,1)
+ nl = IM_LEN(im,2)
+ size = WP_PTABSZ(wp)
+
+ # Sanity check on the cursor image position.
+ if (x < 0.0 || y < 0.0 || x > nc || y > nl)
+ return
+
+ # Bounds checking. Rather than deal with out of bounds pixels we'll
+ # adjust the center pixel so we get the same size raster up to each
+ # boundary.
+
+ ix = int (x + 0.5) ; iy = int (y + 0.5)
+ ix = max (size/2+1, ix) ; iy = max (size/2+1, iy)
+ ix = min (ix, (nc-(size/2)-1)) ; iy = min (iy, (nl-(size/2)-1))
+
+ # Compute the box offset given the center and size.
+ x1 = ix - size / 2 + 0.5
+ x2 = ix + size / 2 + 0.5
+ y1 = iy - size / 2 + 0.5
+ y2 = iy + size / 2 + 0.5
+
+ # Get the image pixels
+ x1 = max (1, x1)
+ x2 = min (nc, x2)
+ y1 = max (1, y1)
+ y2 = min (nl, y2)
+ pix = imgs2r (im, int(x1), int(x2), int(y1), int(y2))
+
+ if (bpm != NULL && WP_BPM(wp) == YES)
+ bpm_pix = Memi[imgs2i (bpm, ix, ix, iy, iy)]
+ else
+ bpm_pix = 0
+
+ # Compute the image pixel associated with the requested coords.
+ pixval = Memr[pix + ((size/2)*size) + (size/2)] * 1.0d0
+
+ # Send the pixel table.
+ if (WP_PTABSZ(wp) > 1)
+ call img_send_pixtab (Memr[pix], WP_PTABSZ(wp), x1, x2, y1, y2)
+end
+
+
+# IMG_OBJINFO -- Get header information from the image.
+
+procedure img_objinfo (cp, id, template)
+
+pointer cp #i cache pointer
+int id #i image id
+char template[ARB] #i keyword template
+
+pointer im, img
+
+define WCS_TEMPLATE "WCSDIM,CTYPE*,CRPIX*,CRVAL*,CD*,CROTA2,LTV*,LTM*,WSV*,WAT*,RA*,DEC*,EQUINOX,EPOCH,MJD*,DATE-OBS"
+
+begin
+ if (IMG_DEBUG) call printf ("img_objinfo: \n")
+
+ # Send the full header (or keyword filtered header), only the WCS
+ # keywords, and a plain-text explanation of the WCS.
+
+ img = C_DATA(cp)
+ im = IMG_IM(img)
+
+ call img_send_header (im, "imghdr", template)
+ call img_send_header (im, "wcshdr", WCS_TEMPLATE)
+ call img_send_wcsinfo (im, cp)
+ call img_send_compass (im, cp)
+end
+
+
+
+#==============================================================================
+
+# IMG_SEND_HEADER -- Send an image header to the named GUI object. Keywords
+# are filtered according to a specified template
+
+procedure img_send_header (im, object, template)
+
+pointer im #i image descriptor
+char object[ARB] #i object for the message
+char template[ARB] #i keyword template
+
+pointer sp, hdr, lbuf, line, field, keyw, dict
+pointer ip, lp, list
+int nlines, in, out, i, hdr_size
+bool keyw_filter
+
+int stropen(), getline(), stridx(), imgnfn(), strdic()
+pointer imofnlu()
+bool streq()
+errchk stropen, getline, putci, putline, imgnfn, imofnlu, strdic
+
+define USER_AREA Memc[($1+IMU-1)*SZ_STRUCT + 1]
+define SZ_KEYW 8
+
+begin
+ hdr_size = (LEN_IMDES + IM_LENHDRMEM(im) - IMU) * SZ_STRUCT - 1
+ hdr_size = hdr_size + SZ_LINE
+
+ call smark (sp)
+ call salloc (hdr, hdr_size, TY_CHAR)
+ call salloc (dict, hdr_size, TY_CHAR)
+ call salloc (field, SZ_LINE, TY_CHAR)
+ call salloc (lbuf, SZ_LINE, TY_CHAR)
+ call salloc (line, SZ_LINE, TY_CHAR)
+ call salloc (keyw, SZ_KEYW, TY_CHAR)
+
+ in = stropen (USER_AREA(im), hdr_size, READ_ONLY)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+
+ # Build up a dictionary of header keywords based on the template.
+ keyw_filter = (!streq (template, "*"))
+ if (keyw_filter) {
+ list = imofnlu (im, template)
+ call strcpy ("|", Memc[dict], hdr_size)
+ while (imgnfn (list, Memc[field], SZ_FNAME) != EOF) {
+ call strcat (Memc[field], Memc[dict], hdr_size)
+ call strcat ("|", Memc[dict], hdr_size)
+ }
+ call imcfnl (list)
+ }
+
+
+ # Copy header records to the output, stripping any trailing
+ # whitespace and clipping at the right margin. We also filter
+ # against the keyword dictionary found above.
+
+ nlines = 0
+ while (getline (in, Memc[lbuf]) != EOF) {
+
+ call aclrc (Memc[line], SZ_LINE)
+
+ # Escape any brackets passed to the Tcl.
+ ip = lbuf
+ lp = line
+ while (Memc[ip] != EOS && Memc[ip] != '\n') {
+ if (stridx (Memc[ip], "[{") > 0) {
+ Memc[lp] = '\\'
+ lp = lp + 1
+ }
+ Memc[lp] = Memc[ip]
+ ip = ip + 1
+ lp = lp + 1
+ }
+ Memc[lp] = '\n'
+ Memc[lp+1] = EOS
+
+ # See whether the line matches a keyword we want to output.
+ if (keyw_filter) {
+ for (i=0; i < SZ_KEYW && !IS_WHITE(Memc[line+i]); i=i+1)
+ Memc[keyw+i] = Memc[line+i]
+ Memc[keyw+i] = '\0'
+
+ # If not in the dictionary skip to the next line.
+ if (strdic (Memc[keyw], Memc[keyw], SZ_KEYW, Memc[dict]) == 0)
+ next
+ }
+
+ call putci (out, ' ')
+ call putline (out, Memc[line])
+
+ # Send the header in small chunks so we don't overflow the
+ # message buffer.
+ nlines = nlines + 1
+ if (mod(nlines,10) == 0) {
+ call fprintf (out, "}")
+ call close (out)
+ call wcspix_message (Memc[hdr]);
+ call aclrc (Memc[hdr], hdr_size)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+ }
+ }
+ call fprintf (out, "}")
+
+ call close (in)
+ call close (out)
+
+ # Send the final message.
+ call wcspix_message (Memc[hdr])
+
+ # Pad a few lines for the GUI
+ call sprintf (Memc[hdr], SZ_LINE, "%d { \n\n\n }")
+ call pargstr (object)
+ call wcspix_message (Memc[hdr])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_COMPASS -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_compass (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, buf, img, co
+double cx, cy, cx1, cy1, dx, dy, x1, y1
+double cosa, sina, angle
+int i, j, comp_x, comp_y
+long axis[IM_MAXDIM], lv[IM_MAXDIM], pv1[IM_MAXDIM], pv2[IM_MAXDIM]
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call aclrc (Memc[buf], SZ_LINE)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+ co = IMG_CO(img)
+
+ # Get world coords at the image corners.
+ if (IMG_CTW(img) != NULL) {
+
+ if (IMG_ROT(img) > 0.0)
+ angle = -IMG_ROT(img)
+ else
+ angle = IMG_ROT(img) + 360.0
+ cosa = cos (DEGTORAD(angle))
+ sina = sin (DEGTORAD(angle))
+
+ # Image center position
+ cx = IM_LEN(im,1) / 2.0d0
+ cy = IM_LEN(im,2) / 2.0d0
+ call mw_c2trand (IMG_CTW(img), cx, cy, cx1, cy1)
+
+ # Extend a unit vector up from the center assuming it's North
+ # and rotate it by the wcs angle.
+ dx = cx + ( 10.0 * sina)
+ dy = cy + ( 10.0 * cosa)
+ call mw_c2trand (IMG_CTW(img), dx, dy, x1, y1)
+
+ # Check new point Y value relative to the center position.
+ if (y1 >= cy1)
+ comp_y = 1 # North is up
+ else
+ comp_y = -1 # North is down
+
+ # Extend a unit vector left from the center assuming it's East
+ # and rotate it by the wcs angle.
+ dx = cx + (-10.0 * cosa)
+ dy = cy + ( 10.0 * sina)
+ call mw_c2trand (IMG_CTW(img), dx, dy, x1, y1)
+
+ # Check new point X value relative to the center position.
+ if (x1 >= cx1)
+ comp_x = 1 # East is left and we have a WCS
+ else
+ comp_x = -1 # East is right
+
+ } else {
+ # Determine the logical to physical mapping by evaluating two
+ # points and determining the axis reduction if any. pv1 will be
+ # the offset and pv2-pv1 will be the scale.
+
+ lv[1] = 0; lv[2] = 0; call imaplv (im, lv, pv1, 2)
+ lv[1] = 1; lv[2] = 1; call imaplv (im, lv, pv2, 2)
+
+ i = 1
+ axis[1] = 1; axis[2] = 2
+ do j = 1, IM_MAXDIM {
+ if (pv1[j] != pv2[j]) {
+ axis[i] = j
+ i = i + 1
+ }
+ }
+ comp_x = - (pv2[axis[1]] - pv1[axis[1]])
+ comp_y = (pv2[axis[2]] - pv1[axis[2]])
+ }
+
+ call sprintf (Memc[buf], SZ_LINE, "compass %d %g %d %d %s\0")
+ call pargi (C_OBJID(cp))
+ call pargr (IMG_ROT(img))
+ call pargi (comp_x)
+ call pargi (comp_y)
+ if (IMG_MW(img) != NULL)
+ call pargstr ("E N")
+ else
+ call pargstr ("X Y")
+
+ call wcspix_message (Memc[buf])
+ call sfree (sp)
+end
+
+
+# IMG_SEND_WCSINFO -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_wcsinfo (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, co, img, mw
+pointer buf, proj, radecstr
+int fd, radecsys, ctype, wtype, ndim
+double crpix1, crpix2, crval1, crval2, cval1, cval2
+double xscale, yscale, xrot, yrot
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM],
+
+int idxstr(), sk_stati(), stropen(), mw_stati()
+double sk_statd(), sl_epj(), sl_epb()
+bool fp_equald()
+
+errchk stropen
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ # Open a string on a file.
+ fd = stropen (Memc[buf], SZ_LINE, WRITE_ONLY)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+
+ # Get the coordinate transform descriptor.
+ co = IMG_CO(img)
+ radecsys = sk_stati (co, S_RADECSYS)
+ ctype = sk_stati (co, S_CTYPE)
+ wtype = sk_stati (co, S_WTYPE)
+
+ mw = IMG_MW(img)
+ if (mw != NULL) {
+ # Now get the mwcs Rterm (CRPIXi), Wterm (CRVALi), and CD matrix.
+ ndim = mw_stati (mw, MW_NPHYSDIM)
+ call wcs_gfterm (mw, r, w, cd, ndim)
+ crpix1 = r[1]
+ crpix2 = r[2]
+ crval1 = w[1]
+ crval2 = w[2]
+
+ xscale = sqrt (cd[1,1]**2 + cd[2,1]**2) * 3600.0d0
+ yscale = sqrt (cd[1,2]**2 + cd[2,2]**2) * 3600.0d0
+ xrot = 0.0
+ yrot = 0.0
+ if (!fp_equald (cd[1,1], 0.0d0))
+ xrot = DRADTODEG(atan ( cd[2,1] / cd[1,1]))
+ if (!fp_equald (cd[2,2], 0.0d0))
+ yrot = DRADTODEG(atan (-cd[1,2] / cd[2,2]))
+ } else {
+ ndim = 2
+ xscale = 1.0
+ yscale = 1.0
+ xrot = 0.0
+ yrot = 0.0
+ }
+
+ if (IMG_DEBUG) {
+ call printf("WCS Info:\n=========\n")
+ call printf("R term: %g %g\n"); call pargd(r[1]); call pargd(r[2])
+ call printf("W term: %g %g\n"); call pargd(w[1]); call pargd(w[2])
+ call printf(" cd: %g %g\n %g %g\n")
+ call pargd(cd[1,1]); call pargd(cd[1,2])
+ call pargd(cd[2,1]); call pargd(cd[2,2])
+ call printf(" scale: %g %g\n");call pargd(xscale);call pargd(yscale)
+ call printf(" rot: %g %g\n");call pargd(xrot);call pargd(yrot)
+ }
+
+ IMG_SCALE(img) = (xscale + yscale) / 2.0d0
+ #IMG_ROT(img) = (xrot + yrot) / 2.0d0
+ IMG_ROT(img) = xrot
+
+
+ # Now format a WCS text panel such as
+ #
+ # Projection: TAN System: Equatorial FK5
+ # Ra/Dec axes: 1/2 Dimensions: 512 x 512
+ #
+ # Center Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Reference Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Ref pixel coord: X: 250.256 Y: 266.309
+ # Plate Scale: 0.765194 Rot Angle: 1.02939
+ # Equinox: J2000.000 Epoch: J1987.25775240
+ # MJD: 46890.39406
+
+ # Get some preliminary values.
+ if (idxstr (radecsys, Memc[radecstr], SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+
+ if (idxstr (wtype, Memc[proj], SZ_FNAME, WTYPE_LIST) <= 0)
+ call strcpy ("logical", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+
+ call fprintf (fd, "wcsinfo {\n")
+
+ call fprintf (fd,
+ " Projection: %-6s\t System: %s %s\n")
+ call pargstr (Memc[proj])
+ switch (ctype) {
+ case CTYPE_EQUATORIAL:
+ call pargstr ("Equatorial")
+ call pargstr (Memc[radecstr])
+ case CTYPE_ECLIPTIC:
+ call pargstr ("Ecliptic")
+ call pargstr ("")
+ case CTYPE_GALACTIC:
+ call pargstr ("Galactic")
+ call pargstr ("")
+ case CTYPE_SUPERGALACTIC:
+ call pargstr ("SuperGalactic")
+ call pargstr ("")
+ default:
+ call pargstr ("Linear")
+ call pargstr ("")
+ }
+
+ call fprintf (fd, " Ra/Dec axes: %d/%d")
+ call pargi (sk_stati (co, S_PLNGAX))
+ call pargi (sk_stati (co, S_PLATAX))
+ call fprintf (fd, " Dimensions: %d x %d\n\n")
+ call pargi (IM_LEN(im,1))
+ call pargi (IM_LEN(im,2))
+
+ call fprintf (fd,
+ " Center Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (cval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (cval2)
+
+ call fprintf (fd,
+ " Reference Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (crval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (crval2)
+
+ call fprintf (fd,
+ " Reference Pixel: X: %-9.4f Y: %-9.4f\n")
+ call pargd (crpix1)
+ call pargd (crpix2)
+
+ call fprintf (fd,
+ " Plate Scale: %-8f Rot Angle: %-8f\n")
+ call pargr (IMG_SCALE(img))
+ call pargr (IMG_ROT(img))
+
+ call fprintf (fd,
+ " Equinox: %s%8f Epoch: %s%.6f\n")
+ switch (radecsys) {
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call pargstr ("J") ; call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("J") ; call pargd (sl_epj(sk_statd(co,S_EPOCH)))
+ default:
+ if (IMG_LINEAR(img) == YES) {
+ call pargstr (" ") ; call pargd (INDEFD)
+ call pargstr (" ") ; call pargd (INDEFD)
+ } else {
+ call pargstr ("B")
+ call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("B")
+ call pargd (sl_epb(sk_statd(co,S_EPOCH)))
+ }
+ }
+
+ call fprintf (fd, " MJD: %.6f\n")
+ call pargd (sk_statd(co,S_EPOCH))
+
+ call fprintf (fd, "}\n \n \n")
+
+ # Close the formatted string and send the message.
+ call close (fd)
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_PIXTAB -- Send a 'pixtab' message. Format of the message is
+#
+# pixtab {
+# { {pix} {pix} ... } # pixel table values
+# { {x1} {x2} ... } # column label values
+# { {y1} {y2} ... } # row label values
+# { <mean> <stdev> } # pixtab statistics
+# }
+#
+
+procedure img_send_pixtab (pixtab, size, x1, x2, y1, y2)
+
+real pixtab[ARB] #i pixtab array
+int size #i pixtab size
+int x1, x2, y1, y2 #i raster boundaries
+
+pointer sp, buf, el
+int i, j, npix
+real pix, sum, sum2, mean, var, stdev, x, y
+
+define SZ_PIXTAB (6*SZ_LINE)
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_PIXTAB, TY_CHAR)
+ call salloc (el, SZ_FNAME, TY_CHAR)
+
+ # Begin the pixtab message.
+ call strcpy ("pixtab {\n{\ntable {\n", Memc[buf], SZ_PIXTAB)
+
+ # Format the pixels into a table for presentation. Do the y-flip
+ # here so the pixels are in order for the List widget in the GUI.
+ # Accumulate the pixel statistics so we don't have to do it in the
+ # GUI where it's slower.
+
+ sum = 0.0
+ sum2 = 0.0
+ npix = size * size
+
+ for (i=size - 1; i >= 0; i=i-1) {
+ for (j=1; j <= size; j=j+1) {
+ pix = pixtab[(i * size) + j]
+ sum = sum + pix
+ sum2 = sum2 + (pix * pix)
+
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (pix)
+
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("\n", Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Do the row and column label parts of the message.
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (x = x1; x <= x2; x = x + 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (x)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (y = y2; y >= y1; y = y - 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (y)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Compute the statistics for the raster.
+ mean = sum / real(npix)
+ var = (sum2 - sum * mean) / real(npix - 1)
+ if (var <= 0)
+ stdev = 0.0
+ else
+ stdev = sqrt (var)
+
+ call sprintf (Memc[el], SZ_FNAME, " { %10.2f %10.4f }\n")
+ call pargr (mean)
+ call pargr (stdev)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+
+
+ # Close the message.
+ call strcat ("}", Memc[buf], SZ_PIXTAB)
+
+ # Send the formatted message.
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_AMP_WCS -- Create a WCS transformation for the amplifier coordinates.
+
+pointer procedure img_amp_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "ATV1")
+ w[2] = imgetd (im, "ATV2")
+ cd[1,1] = imgetd (im, "ATM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "ATM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "amplifier", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "amplifier", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_DET_WCS -- Create a WCS transformation for the detector coordinates.
+
+pointer procedure img_det_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "DTV1")
+ w[2] = imgetd (im, "DTV2")
+ cd[1,1] = imgetd (im, "DTM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "DTM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "detector", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "detector", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_COORD_LABELS -- Get the WCS name, coord labels and format strings for
+# the specified object.
+
+procedure img_coord_labels (cp, line, wcsname, xunits, yunits)
+
+pointer cp #i cache pointer
+pointer line #i WCS output line
+char wcsname[ARB] #o WCS name string
+char xunits[ARB], yunits[ARB] #o WCS coord labels
+
+pointer img, co, wp
+pointer sp, proj, radecstr
+
+int strcmp(), sk_stati(), idxstr()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+ if (SYSTEMS(wp,line) == SYS_WORLD) {
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL:
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ case CTYPE_ECLIPTIC:
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ case CTYPE_GALACTIC:
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ case CTYPE_SUPERGALACTIC:
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ }
+ } else if (SYSTEMS(wp,line) == SYS_SKY) {
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+ call strlwr (wcsname)
+ if (strcmp (wcsname,"ecliptic") == 0) {
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"galactic") == 0) {
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"supergalactic") == 0) {
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ } else {
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ }
+ } else {
+ call strcpy ("X", xunits, LEN_WCSNAME)
+ call strcpy ("Y", yunits, LEN_WCSNAME)
+ }
+
+
+ # Now get the format strings. For systems other than the image
+ # default just use the WCS string as the name, otherwise format a
+ # string giving more information about the system.
+ if (SYSTEMS(wp,line) != SYS_WORLD)
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+
+ else {
+ call smark (sp)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+
+ call sprintf (wcsname, LEN_WCSNAME, "%s-%s-%s")
+
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL: call pargstr ("EQ")
+ case CTYPE_ECLIPTIC: call pargstr ("ECL")
+ case CTYPE_GALACTIC: call pargstr ("GAL")
+ case CTYPE_SUPERGALACTIC: call pargstr ("SGAL")
+ default: call pargstr ("UNKN")
+ }
+
+ if (sk_stati(co,S_CTYPE) == CTYPE_EQUATORIAL) {
+ if (idxstr(sk_stati(co,S_RADECSYS), Memc[radecstr],
+ SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call pargstr (Memc[radecstr])
+ } else {
+ if (sk_stati(co,S_CTYPE) == CTYPE_SUPERGALACTIC)
+ call pargstr ("-")
+ else
+ call pargstr ("--")
+ }
+
+ if (idxstr(sk_stati(co,S_WTYPE), Memc[proj], SZ_FNAME,
+ WTYPE_LIST) <= 0)
+ call strcpy ("linear", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+ call pargstr (Memc[proj])
+
+ call sfree (sp)
+ }
+
+ # Now fix up the WCS system name.
+ if (strcmp (wcsname, "fk4") == 0 ||
+ strcmp (wcsname, "fk5") == 0 ||
+ strcmp (wcsname, "icrs") == 0 ||
+ strcmp (wcsname, "gappt") == 0 ||
+ strcmp (wcsname, "fk4-no-e") == 0) {
+ call strupr (wcsname)
+
+ } else if (IS_LOWER(wcsname[1]))
+ wcsname[1] = TO_UPPER(wcsname[1])
+end
+
+
+# IMG_COORD_FMT -- Format the coordinate strings.
+
+procedure img_coord_fmt (cp, line, xval, yval, xc, yc)
+
+pointer cp #i object cache pointer
+int line #i output line number
+double xval, yval #i input coords
+char xc[ARB], yc[ARB] #o formatted coord strings
+
+pointer img, co, wp
+char xfmt[LEN_WCSNAME], yfmt[LEN_WCSNAME]
+
+int sk_stati()
+bool streq()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+ # Convert coords to the requested format.
+ if (FORMATS(wp,line) == FMT_DEFAULT) {
+ if (IMG_MW(img) == NULL) {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ } else {
+ if (SYSTEMS(wp,line) == SYS_WORLD ||
+ SYSTEMS(wp,line) == SYS_SKY) {
+
+ if (streq(WCSNAME(wp,line),"ecliptic") ||
+ streq(WCSNAME(wp,line),"galactic") ||
+ streq(WCSNAME(wp,line),"supergalactic"))
+ call strcpy ("%h", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ call strcpy ("%.1h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+ }
+
+ } else if (FORMATS(wp,line) == FMT_HMS) {
+ if (sk_stati(co, S_CTYPE) == CTYPE_EQUATORIAL)
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.1h", xfmt, LEN_WCSNAME)
+ call strcpy ("%h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+
+ # Convert the value to the requested format
+ call sprintf (xc, LEN_WCSNAME, xfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (xval)
+ else
+ call pargd (DEGTORAD(xval))
+
+ call sprintf (yc, LEN_WCSNAME, yfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (yval)
+ else
+ call pargd (DEGTORAD(yval))
+end
+
+
+# IMG_GET_COORD -- Given an x,y position in the image return the coordinate in
+# the given system.
+
+procedure img_get_coord (img, x, y, system, wcsname, wx, wy)
+
+pointer img #i IMG struct pointer
+double x, y #i input image position
+int system #i coordinate system requested
+char wcsname[ARB] #i desired WCS name
+double wx, wy #o output coordinates
+
+double ox, oy
+real epoch
+pointer im, co, nco
+char buf[SZ_LINE]
+int stat
+
+real imgetr()
+int imaccf(), sk_stati(), sk_decwstr()
+bool streq()
+
+errchk imgetr
+
+begin
+ im = IMG_IM(img)
+ co = IMG_CO(img)
+
+ wx = x # fallback values
+ wy = y
+
+ switch (system) {
+ case SYS_NONE:
+ wx = x
+ wy = y
+ case SYS_PHYSICAL:
+ if (IMG_CTP(img) != NULL)
+ call mw_c2trand (IMG_CTP(img), x, y, wx, wy)
+ case SYS_WORLD:
+ if (IMG_CTW(img) != NULL)
+ call mw_c2trand (IMG_CTW(img), x, y, wx, wy)
+ case SYS_AMP:
+ if (IMG_CTA(img) != NULL)
+ call mw_c2trand (IMG_CTA(img), x, y, wx, wy)
+ case SYS_CCD:
+ ; # TBD
+ case SYS_DETECTOR:
+ if (IMG_CTD(img) != NULL)
+ call mw_c2trand (IMG_CTD(img), x, y, wx, wy)
+ case SYS_SKY:
+ # Note Ecliptic/GAPPT coords need an epoch value.
+ if (streq (wcsname, "ecliptic") || streq (wcsname, "gappt")) {
+ if (imaccf (im, "EPOCH") == YES) {
+ epoch = imgetr (im, "EPOCH")
+ if (epoch == 0.0 || IS_INDEFR(epoch))
+ epoch = 1950.0
+ } else
+ epoch = 1950.0
+
+ call sprintf (buf, SZ_LINE, "%s %.1f")
+ call pargstr (wcsname)
+ call pargr (epoch)
+ } else
+ call strcpy (wcsname, buf, SZ_LINE)
+
+ stat = sk_decwstr (buf, nco, co)
+ if (stat != ERR) {
+ if (IMG_CTW(img) != NULL)
+ call mw_c2trand (IMG_CTW(img), x, y, ox, oy)
+ call sk_lltran (co, nco, DEGTORAD(ox), DEGTORAD(oy),
+ INDEFD, INDEFD, 0.0d0, 0.0d0, wx, wy)
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX)) {
+ wx = RADTODEG(wy) # transposed image
+ wy = RADTODEG(wx)
+ } else {
+ wx = RADTODEG(wx) # regular image
+ wy = RADTODEG(wy)
+ }
+ }
+ case SYS_OTHER:
+ ; # TBD
+
+ default: # default coords
+ wx = x
+ wy = y
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.f b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.f
new file mode 100644
index 00000000..d98ff3e6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.f
@@ -0,0 +1,30 @@
+ subroutine mefint ()
+ save
+100 return
+ end
+ subroutine mefcae ()
+ save
+100 return
+ end
+ subroutine mefune ()
+ save
+100 return
+ end
+ subroutine mefwcn ()
+ save
+100 return
+ end
+ subroutine mefwct ()
+ save
+100 return
+ end
+ subroutine mefobo ()
+ save
+100 return
+ end
+c mefcae mef_cache
+c mefune mef_uncache
+c mefwcn mef_wcstran
+c mefwct mef_wcslist
+c mefint mef_init
+c mefobo mef_objinfo
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.x b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.x
new file mode 100644
index 00000000..050e5596
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmef.x
@@ -0,0 +1,50 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include "wcspix.h"
+
+
+# MEF Image class data.
+
+
+# MEF_INIT -- Initialize the MEF Class module.
+
+procedure mef_init ()
+begin
+end
+
+
+# MEF_CACHE -- Cache an image in the object cache.
+
+procedure mef_cache ()
+begin
+end
+
+
+# MEF_UNCACHE -- Uncache an image in the object cache.
+
+procedure mef_uncache ()
+begin
+end
+
+
+# MEF_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs.
+
+procedure mef_wcstran ()
+begin
+end
+
+
+# MEF_WCSLIST -- List the WCSs available for the given image.
+
+procedure mef_wcslist ()
+begin
+end
+
+
+# MEF_OBJINFO -- Get header information from the image.
+
+procedure mef_objinfo ()
+begin
+end
+
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.f b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.f
new file mode 100644
index 00000000..c2924bd1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.f
@@ -0,0 +1,30 @@
+ subroutine mspint ()
+ save
+100 return
+ end
+ subroutine mspcae ()
+ save
+100 return
+ end
+ subroutine mspune ()
+ save
+100 return
+ end
+ subroutine mspwcn ()
+ save
+100 return
+ end
+ subroutine mspwct ()
+ save
+100 return
+ end
+ subroutine mspobo ()
+ save
+100 return
+ end
+c mspwct msp_wcslist
+c mspint msp_init
+c mspobo msp_objinfo
+c mspcae msp_cache
+c mspune msp_uncache
+c mspwcn msp_wcstran
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.x b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.x
new file mode 100644
index 00000000..64198d69
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcmspec.x
@@ -0,0 +1,50 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include "wcspix.h"
+
+
+# Multispec image class data.
+
+
+# MSP_INIT -- Initialize the Image Class module.
+
+procedure msp_init ()
+begin
+end
+
+
+# MSP_CACHE -- Cache an image in the object cache.
+
+procedure msp_cache ()
+begin
+end
+
+
+# MSP_UNCACHE -- Uncache an image in the object cache.
+
+procedure msp_uncache ()
+begin
+end
+
+
+# MSP_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs.
+
+procedure msp_wcstran ()
+begin
+end
+
+
+# MSP_WCSLIST -- List the WCSs available for the given image.
+
+procedure msp_wcslist ()
+begin
+end
+
+
+# MSP_OBJINFO -- Get header information from the image.
+
+procedure msp_objinfo ()
+begin
+end
+
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcspix.h b/vendor/x11iraf/ximtool/clients.old/wcspix/wcspix.h
new file mode 100644
index 00000000..e0657154
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcspix.h
@@ -0,0 +1,111 @@
+# WCSPIX.H -- Include file for the WCS/Pixel value ISM task
+
+define WCSPIX_NAME "wcspix"
+define WCSPIX_MODE "text"
+define WCSPIX_CONNECT "unix:/tmp/.ISM%d"
+
+define WCSPIX_DBG FALSE
+
+# Main task data structures.
+define MAX_WCSLINES 4 # max WCS output lines
+define LEN_PIXTAB 81 # size of pixel table
+define LEN_WCSNAME 32 # size of a WCS name
+
+define SZ_WCSPIX 7
+define WP_CPTR Memi[$1 ] # object cache pointer
+define WP_PTABSZ Memi[$1+1] # pixel table size
+define WP_BPM Memi[$1+2] # get BPM data
+define WP_SYSTEMS Memi[$1+3] # WCS readout systems
+define WP_WCS Memi[$1+4] # WCS system string
+define WP_FORMATS Memi[$1+5] # WCS readout formats
+define WP_DBGLEVEL Memi[$1+6] # debug level
+
+define OBJCACHE Memi[WP_CPTR($1)+$2] # object cache
+define SYSTEMS Memi[WP_SYSTEMS($1)+$2-1]
+define FORMATS Memi[WP_FORMATS($1)+$2-1]
+define WCSNAME Memc[WP_WCS($1)+(LEN_WCSNAME*($2-1))]
+
+
+# Element of an object cache.
+define SZ_CACHE 256 # size of object cache
+define SZ_CNODE 135 # size of a cache node
+define SZ_OBJREF 128 # size of a object reference
+
+define C_OBJID Memi[$1] # object id
+define C_REGID Memi[$1+1] # region id
+define C_CLASS Memi[$1+2] # object class
+define C_DATA Memi[$1+3] # object data ptr
+define C_NREF Memi[$1+4] # no. times object referenced
+define C_REF Memc[P2C($1+6)] # object reference file
+
+
+# WCSPIX ISM task methods.
+define WCSPIX_CMDS "|set|get|quit|initialize|cache|uncache\
+ |wcstran|wcslist|objinfo|debug"
+
+define SET 1
+define GET 2
+define QUIT 3
+define INITIALIZE 4
+define CACHE 5
+define UNCACHE 6
+define WCSTRAN 7
+define WCSLIST 8
+define OBJINFO 9
+define DEBUG 10
+
+# Parameters definable from the GUI
+define SZ_PARAM 32 # size of a parameter string
+
+define WCSPIX_SYSTEMS "|none|logical|physical|world|sky\
+ |amplifier|ccd|detector|other|"
+define SYS_NONE 1 # no coords requested
+define SYS_LOGICAL 2 # logical coords
+define SYS_PHYSICAL 3 # physical coords
+define SYS_WORLD 4 # world coords
+define SYS_SKY 5 # sky coords
+define SYS_AMP 6 # amplifier coords
+define SYS_CCD 7 # CCD coords
+define SYS_DETECTOR 8 # detector coords
+define SYS_OTHER 9 # ??? coords
+
+define SKYPROJ "FK5 FK4 ICRS GAPPT FK4-NO-E Ecliptic Galactic Supergalactic"
+
+
+define WCSPIX_PARAMS "|psize|bpm|wcs|format|"
+define PAR_PSIZE 1 # pixel table size
+define PAR_BPM 2 # get BPM data
+define PAR_WCS 3 # WCS system
+define PAR_FMT 4 # WCS format
+
+define WCSPIX_FMT "|default|hms|degrees|radians|"
+define FMT_DEFAULT 1 # no formatting
+define FMT_HMS 2 # covert to sexigesimal
+define FMT_DEG 3 # output degrees
+define FMT_RAD 4 # output radians
+
+define DEF_PTABSZ 0 # default pixtable size
+define DEF_FMT FMT_DEFAULT # default output format
+define DEF_SYSTEM SYS_LOGICAL # default coord system
+define DEF_BPM_FLAG YES # default get-BPM-data flag
+
+
+# Object class definitions.
+define UNKNOWN_CLASS 1 # unknown class
+define IMAGE_CLASS 2 # generic image class
+define MEF_CLASS 3 # Mosaic MEF image class
+define MULTISPEC_CLASS 4 # multispec data class
+
+# Class methods.
+define LEN_CLASS 6 # length of class table
+define MAX_CLASSES 16 # max supported classes
+define SZ_CLNAME 32 # size of a class name
+
+define CL_INIT cl_table[1,$1] # class initializer
+define CL_CACHE cl_table[2,$1] # cache the object
+define CL_UNCACHE cl_table[3,$1] # uncache the object
+define CL_WCSTRAN cl_table[4,$1] # WCS tranformations
+define CL_WCSLIST cl_table[5,$1] # list available WCS
+define CL_OBJINFO cl_table[6,$1] # get object header
+define CL_NAME cl_names[1,$1] # class name
+
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.f b/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.f
new file mode 100644
index 00000000..0061fbcd
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.f
@@ -0,0 +1,229 @@
+ subroutine unkint (cp, wp)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer wp
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ save
+ if (.not.(memi(cp+3) .eq. 0)) goto 110
+ call xerpsh
+ call xcallc(memi(cp+3) , 1, 10 )
+ if (.not.xerpop()) goto 120
+ goto 100
+120 continue
+110 continue
+ memi(memi(cp+3) ) = wp
+100 return
+ end
+ subroutine unkcae (cp, objid, regid, ref)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer objid
+ integer regid
+ integer*2 ref(*)
+ save
+ memi(cp) = objid
+ memi(cp+1) = regid
+ memi(cp+4) = memi(cp+4) + 1
+ call xstrcy(ref, memc((((cp+6)-1)*2+1)) , 128)
+100 return
+ end
+ subroutine unkune (cp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ integer*2 st0001(1)
+ save
+ data st0001 / 0/
+ memi(cp) = 0
+ memi(cp+4) = 0
+ call xstrcy(st0001, memc((((cp+6)-1)*2+1)) , 255 )
+ call xmfree(memi(cp+3) , 10 )
+ memi(cp+3) = 0
+100 return
+ end
+ subroutine unkwcn (cp, id, x, y)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ real x
+ real y
+ integer wp
+ integer i
+ integer*2 buf(1023 +1)
+ integer*2 msg(1023 +1)
+ integer*2 st0001(37)
+ integer*2 st0002(27)
+ integer*2 st0003(37)
+ integer*2 st0004(5)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) /119, 99,115,116,114, 97,110, 32/
+ data (st0001(iyy),iyy= 9,16) /123, 32,111, 98,106,101, 99,116/
+ data (st0001(iyy),iyy=17,24) / 32, 37,100, 32,125, 32,123, 32/
+ data (st0001(iyy),iyy=25,32) /114,101,103,105,111,110, 32, 37/
+ data (st0001(iyy),iyy=33,37) /100, 32,125, 32, 0/
+ data (st0002(iyy),iyy= 1, 8) /123, 32,112,105,120,118, 97,108/
+ data (st0002(iyy),iyy= 9,16) / 32, 48, 46, 48, 32,125, 32,123/
+ data (st0002(iyy),iyy=17,24) / 32, 98,112,109, 32, 48, 32,125/
+ data (st0002(iyy),iyy=25,27) / 32, 10, 0/
+ data (st0003(iyy),iyy= 1, 8) /123, 99,111,111,114,100, 32,123/
+ data (st0003(iyy),iyy= 9,16) / 37, 57,115,125, 32,123, 37, 49/
+ data (st0003(iyy),iyy=17,24) / 50,103,125, 32,123, 37, 49, 50/
+ data (st0003(iyy),iyy=25,32) /103,125, 32,123, 88,125, 32,123/
+ data (st0003(iyy),iyy=33,37) / 89,125,125, 10, 0/
+ data st0004 / 85, 78, 75, 78, 0/
+ wp = memi(memi(cp+3) )
+ call aclrc (msg, 1023 )
+ call sprinf (msg, 1023 , st0001)
+ call pargi (memi(cp) )
+ call pargi (memi(cp+1) )
+ call xstrct(st0002, msg, 1023 )
+ i=1
+110 if (.not.(i .le. 4 )) goto 112
+ call sprinf (buf, 1023 , st0003)
+ call pargsr (st0004)
+ call pargr (x)
+ call pargr (y)
+ call xstrct(buf, msg, 1023 )
+111 i=i+1
+ goto 110
+112 continue
+ call wcspie (msg)
+100 return
+ end
+ subroutine unkwct (cp, id)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ save
+100 return
+ end
+ subroutine unkgea (cp, id, x, y, pixval)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ real x
+ real y
+ real pixval
+ integer wp
+ integer pix
+ integer size
+ integer x1
+ integer x2
+ integer y1
+ integer y2
+ save
+ wp = memi(memi(cp+3) )
+ size = memi(wp+1)
+ x1 = x - size / 2 + 0.5
+ x2 = x + size / 2 + 0.5
+ y1 = y - size / 2 + 0.5
+ y2 = y + size / 2 + 0.5
+ pixval = 0.0
+ if (.not.(size .gt. 1)) goto 110
+ call xcallc(pix, size * size, 6)
+ call imgseb (memr(pix), size, x1, x2, y1, y2)
+ call xmfree(pix, 6)
+110 continue
+100 return
+ end
+ subroutine unkobo (cp, id, temple)
+ logical Memb(1)
+ integer*2 Memc(1)
+ integer*2 Mems(1)
+ integer Memi(1)
+ integer*4 Meml(1)
+ real Memr(1)
+ double precision Memd(1)
+ complex Memx(1)
+ equivalence (Memb, Memc, Mems, Memi, Meml, Memr, Memd, Memx)
+ common /Mem/ Memd
+ integer cp
+ integer id
+ integer*2 temple(*)
+ integer sp
+ integer buf
+ integer*2 st0001(25)
+ save
+ integer iyy
+ data (st0001(iyy),iyy= 1, 8) / 99,111,109,112, 97,115,115, 32/
+ data (st0001(iyy),iyy= 9,16) / 37,100, 32, 48, 46, 48, 32, 45/
+ data (st0001(iyy),iyy=17,24) / 49, 32, 49, 32, 88, 32, 89, 0/
+ data (st0001(iyy),iyy=25,25) / 0/
+ call smark (sp)
+ call salloc (buf, 1023 , 2)
+ call aclrc (memc(buf), 1023 )
+ call sprinf (memc(buf), 1023 , st0001)
+ call pargi (memi(cp) )
+ call wcspie (memc(buf))
+ call sfree (sp)
+100 return
+ end
+c sprinf sprintf
+c temple template
+c wcspie wcspix_message
+c unkwct unk_wcslist
+c unkint unk_init
+c unkobo unk_objinfo
+c unkcae unk_cache
+c imgseb img_send_pixtab
+c unkune unk_uncache
+c unkwcn unk_wcstran
+c pargsr pargstr
+c unkgea unk_getdata
diff --git a/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.x b/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.x
new file mode 100644
index 00000000..9a1afe1b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/wcspix/wcunknown.x
@@ -0,0 +1,185 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <ctype.h>
+include "wcspix.h"
+
+
+# Unknown class data.
+define LEN_UNKDATA 1
+define UNK_WP Memi[$1 ] # wcspix back-pointer
+
+
+# UNK_INIT -- Initialize the object structure.
+
+procedure unk_init (cp, wp)
+
+pointer cp #i cache pointer
+pointer wp #i WCSPIX structure
+
+begin
+ # Allocate the image data structure if not previously allocated.
+ if (C_DATA(cp) == NULL) {
+ iferr (call calloc (C_DATA(cp), LEN_UNKDATA, TY_STRUCT))
+ return
+ }
+
+ UNK_WP(C_DATA(cp)) = wp
+end
+
+
+# UNK_CACHE -- Cache an image in the object cache. Since we don't know
+# what this is we simply setup so that a query to the object id will still
+# return a result of some kind rather than ignore it. In most cases this
+# just means the input arguments are echoed back (e.g. coords), or default
+# values such as a rotation value can be retrieved.
+
+procedure unk_cache (cp, objid, regid, ref)
+
+pointer cp #i cache pointer
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object reference
+
+begin
+ C_OBJID(cp) = objid
+ C_REGID(cp) = regid
+ C_NREF(cp) = C_NREF(cp) + 1
+ call strcpy (ref, C_REF(cp), 128)
+end
+
+
+# UNK_UNCACHE -- Uncache an unknown image in the object cache.
+
+procedure unk_uncache (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+begin
+ C_OBJID(cp) = NULL
+ C_NREF(cp) = 0
+ call strcpy ("", C_REF(cp), SZ_FNAME)
+
+ call mfree (C_DATA(cp), TY_STRUCT)
+ C_DATA(cp) = NULL
+end
+
+
+# UNK_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs. Message is returned as something like:
+#
+# set value {
+# { object <objid> } { region <regionid> }
+# { pixval <pixelvalue> [<units>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# }
+
+
+procedure unk_wcstran (cp, id, x, y)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+
+pointer wp
+int i
+
+# Use static storage to avoid allocation overhead.
+char buf[SZ_LINE], msg[SZ_LINE]
+
+begin
+ wp = UNK_WP(C_DATA(cp))
+
+ # Begin formatting the message.
+ call aclrc (msg, SZ_LINE)
+ call sprintf (msg, SZ_LINE, "wcstran { object %d } { region %d } ")
+ call pargi (C_OBJID(cp))
+ call pargi (C_REGID(cp))
+ call strcat ("{ pixval 0.0 } { bpm 0 } \n", msg, SZ_LINE)
+
+
+ # Now loop over the requested systems and generate a coordinate
+ # for each.
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+
+ # Format the coord buffer and append it to the message.
+ call sprintf (buf, SZ_LINE, "{coord {%9s} {%12g} {%12g} {X} {Y}}\n")
+ call pargstr ("UNKN")
+ call pargr (x)
+ call pargr (y)
+ call strcat (buf, msg, SZ_LINE)
+ }
+
+ # Now send the completed message.
+ call wcspix_message (msg)
+end
+
+
+# UNK_WCSLIST -- List the WCSs available for the given image.
+
+procedure unk_wcslist (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+begin
+ #call wcspix_message ("wcslist {None Logical}")
+end
+
+
+# UNK_GETDATA -- Get data from the image.
+
+procedure unk_getdata (cp, id, x, y, pixval)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+real pixval #o central pixel value
+
+pointer wp, pix
+int size, x1, x2, y1, y2
+
+begin
+ wp = UNK_WP(C_DATA(cp))
+ size = WP_PTABSZ(wp)
+
+ # Compute the box offset given the center and size.
+ x1 = x - size / 2 + 0.5
+ x2 = x + size / 2 + 0.5
+ y1 = y - size / 2 + 0.5
+ y2 = y + size / 2 + 0.5
+
+ pixval = 0.0
+
+ # Send the pixel table.
+ if (size > 1) {
+ call calloc (pix, size * size, TY_REAL)
+ call img_send_pixtab (Memr[pix], size, x1, x2, y1, y2)
+ call mfree (pix, TY_REAL)
+ }
+end
+
+
+# UNK_OBJINFO -- Get header information from the image.
+
+procedure unk_objinfo (cp, id, template)
+
+pointer cp #i cache pointer
+int id #i image id
+char template[ARB] #i keyword template
+
+pointer sp, buf
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+
+ # Send a default (X,Y) compass indicator.
+ call aclrc (Memc[buf], SZ_LINE)
+ call sprintf (Memc[buf], SZ_LINE, "compass %d 0.0 -1 1 X Y\0")
+ call pargi (C_OBJID(cp))
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients.old/x_ism.f b/vendor/x11iraf/ximtool/clients.old/x_ism.f
new file mode 100644
index 00000000..218b5d0b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/x_ism.f
@@ -0,0 +1,145 @@
+ integer function sysruk (task, cmd, rukarf, rukint)
+ integer rukarf
+ integer rukint
+ integer*2 task(*)
+ integer*2 cmd(*)
+ integer i
+ integer ntasks
+ integer lmarg
+ integer rmarg
+ integer maxch
+ integer ncol
+ integer rukean
+ integer envgei
+ integer envscn
+ logical streq
+ logical xerpop
+ logical xerflg
+ common /xercom/ xerflg
+ integer iyy
+ integer dp(2)
+ integer*2 dict(7)
+ integer*2 st0001(9)
+ integer*2 st0002(6)
+ integer*2 st0003(3)
+ integer*2 st0004(6)
+ integer*2 st0005(6)
+ integer*2 st0006(4)
+ integer*2 st0007(6)
+ integer*2 st0008(2)
+ integer*2 st0009(29)
+ integer*2 st0010(25)
+ save
+ data dict /119, 99,115,112,105,120, 0/
+ data (st0001(iyy),iyy= 1, 8) /116,116,121,110, 99,111,108,115/
+ data (st0001(iyy),iyy= 9, 9) / 0/
+ data st0002 / 99,104,100,105,114, 0/
+ data st0003 / 99,100, 0/
+ data st0004 /104,111,109,101, 36, 0/
+ data st0005 / 72, 79, 77, 69, 36, 0/
+ data st0006 /115,101,116, 0/
+ data st0007 /114,101,115,101,116, 0/
+ data st0008 / 9, 0/
+ data (st0009(iyy),iyy= 1, 8) /105,110,118, 97,108,105,100, 32/
+ data (st0009(iyy),iyy= 9,16) /115,101,116, 32,115,116, 97,116/
+ data (st0009(iyy),iyy=17,24) /101,109,101,110,116, 58, 32, 39/
+ data (st0009(iyy),iyy=25,29) / 37,115, 39, 10, 0/
+ data (st0010(iyy),iyy= 1, 8) /105,110,118, 97,108,105,100, 32/
+ data (st0010(iyy),iyy= 9,16) / 83, 69, 84, 32,105,110, 32, 73/
+ data (st0010(iyy),iyy=17,24) / 82, 65, 70, 32, 77, 97,105,110/
+ data (st0010(iyy),iyy=25,25) / 0/
+ data (dp(iyy),iyy= 1, 2) / 1, 0/
+ data lmarg /5/, maxch /0/, ncol /0/, rukean /3/
+ data ntasks /0/
+ if (.not.(ntasks .eq. 0)) goto 110
+ i=1
+120 if (.not.(dp(i) .ne. 0)) goto 122
+121 i=i+1
+ goto 120
+122 continue
+ ntasks = i - 1
+110 continue
+ if (.not.(task(1) .eq. 63)) goto 130
+ call xerpsh
+ rmarg = envgei (st0001)
+ if (.not.xerpop()) goto 140
+ rmarg = 80
+140 continue
+ call strtbl (4, dict, dp, ntasks, lmarg, rmarg, maxch, ncol)
+ sysruk = (0)
+ goto 100
+130 continue
+ if (.not.(streq(task,st0002) .or. streq(task,st0003))) goto 150
+ call xerpsh
+ if (.not.(cmd(rukarf) .eq. 0)) goto 170
+ call xerpsh
+ call xfchdr(st0004)
+ if (.not.xerpop()) goto 180
+ call xfchdr(st0005)
+180 continue
+ goto 171
+170 continue
+ call xfchdr(cmd(rukarf))
+171 continue
+162 if (.not.xerpop()) goto 160
+ if (.not.(rukint .eq. 1)) goto 190
+ call erract (rukean)
+ if (xerflg) goto 100
+ goto 191
+190 continue
+191 continue
+160 continue
+ sysruk = (0)
+ goto 100
+150 continue
+ if (.not.(streq(task,st0006) .or. streq(task,st0007))) goto 200
+ call xerpsh
+ if (.not.(cmd(rukarf) .eq. 0)) goto 220
+ call envlit (4, st0008, 1)
+ call xffluh(4)
+ goto 221
+220 continue
+ if (.not.(envscn (cmd) .le. 0)) goto 230
+ if (.not.(rukint .eq. 1)) goto 240
+ call eprinf (st0009)
+ call pargsr (cmd)
+ goto 241
+240 continue
+ goto 91
+241 continue
+230 continue
+221 continue
+212 if (.not.xerpop()) goto 210
+ if (.not.(rukint .eq. 1)) goto 250
+ call erract (rukean)
+ if (xerflg) goto 100
+ goto 251
+250 continue
+91 call syspac (0, st0010)
+251 continue
+210 continue
+ sysruk = (0)
+ goto 100
+200 continue
+151 continue
+131 continue
+ if (.not.(streq (task, dict(dp(1))))) goto 260
+ call twcspx
+ sysruk = (0)
+ goto 100
+260 continue
+ sysruk = (-1)
+ goto 100
+100 return
+ end
+c rukint ruk_interact
+c sysruk sys_runtask
+c envscn envscan
+c twcspx t_wcspix
+c envgei envgeti
+c syspac sys_panic
+c eprinf eprintf
+c rukarf ruk_argoff
+c rukean ruk_eawarn
+c pargsr pargstr
+c envlit envlist
diff --git a/vendor/x11iraf/ximtool/clients.old/x_ism.x b/vendor/x11iraf/ximtool/clients.old/x_ism.x
new file mode 100644
index 00000000..8f401873
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients.old/x_ism.x
@@ -0,0 +1 @@
+task wcspix = t_wcspix
diff --git a/vendor/x11iraf/ximtool/clients/DONE b/vendor/x11iraf/ximtool/clients/DONE
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/DONE
diff --git a/vendor/x11iraf/ximtool/clients/Imakefile b/vendor/x11iraf/ximtool/clients/Imakefile
new file mode 100644
index 00000000..0c126522
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/Imakefile
@@ -0,0 +1,32 @@
+XCOMM Imakefile for the Image Support Module components.
+
+X11IRAFDIR = ../../
+#include <../../X11IRAF.tmpl>
+
+ WC_SRCS = wcspix/t_wcspix.x wcspix/wcimage.x wcspix/wcmef.x \
+ wcspix/wcmspec.x wcspix/wcspix.h
+ LIB_SRCS = lib/dspmmap.x lib/ism.x lib/idxstr.x lib/wcsgfterm.x
+
+
+all:: ism_wcspix.e
+
+ism_wcspix.e: $(WC_SRCS) $(LIB_SRCS)
+ @(SHELL=/bin/sh ; export SHELL ; mkpkg relink)
+ touch DONE
+
+SubdirLibraryRule($(WC_SRCS) $(LIB_SRCS))
+
+clean::
+ @(rmbin -v .)
+ touch DONE
+
+includes::
+
+#if InstallBinaries
+install:: ism_wcspix.e
+ -@if [ -d X11irafBinDir ]; then set +x; \
+ else (set -x; $(MKDIRHIER) X11irafBinDir); fi
+ mv ism_wcspix.e X11irafBinDir
+#endif
+
+DependTarget()
diff --git a/vendor/x11iraf/ximtool/clients/Makefile b/vendor/x11iraf/ximtool/clients/Makefile
new file mode 100644
index 00000000..9de62c08
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/Makefile
@@ -0,0 +1,1067 @@
+# Makefile generated by imake - do not edit!
+# $Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $
+
+# ----------------------------------------------------------------------
+# Makefile generated from "Imake.tmpl" and <Imakefile>
+# $Xorg: Imake.tmpl,v 1.4 2000/08/17 19:41:46 cpqbld Exp $
+#
+#
+#
+#
+# $XFree86: xc/config/cf/Imake.tmpl,v 3.138 2002/12/10 03:20:41 dawes Exp $
+# ----------------------------------------------------------------------
+
+all::
+
+.SUFFIXES: .i
+
+# $Xorg: Imake.cf,v 1.4 2000/08/17 19:41:45 cpqbld Exp $
+
+# $XFree86: xc/config/cf/Imake.cf,v 3.80 2003/01/15 02:52:12 dawes Exp $
+
+# Keep cpp from replacing path elements containing i486/i586/i686
+
+# -----------------------------------------------------------------------
+# site-specific configuration parameters that need to come before
+# the platform-specific parameters - edit site.def to change
+
+# site: $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $
+
+# site: $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $
+
+# $XFree86: xc/config/cf/xf86site.def,v 3.181 2002/02/22 21:32:33 dawes Exp $
+
+# ----------------------------------------------------------------------
+# platform-specific configuration parameters - edit linux.cf to change
+
+# platform: $Xorg: linux.cf,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+
+# platform: $XFree86: xc/config/cf/linux.cf,v 3.201tsi Exp $
+
+# operating system: Linux 2.4.29-4aslsmp i686 [ELF] (2.4.29)
+# libc: (6.3.2)
+# binutils: (213)
+
+# $Xorg: lnxLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+# $XFree86: xc/config/cf/lnxLib.rules,v 3.43 2002/04/04 14:05:33 eich Exp $
+
+# $XFree86: xc/config/cf/xfree86.cf,v 3.439.2.1 2003/03/13 04:10:40 tsi Exp $
+
+# $Xorg: xfree86.cf,v 1.4 2000/08/17 19:41:49 cpqbld Exp $
+
+VENDORMANNAME = XFree86
+VENDORMANVERSION = `echo 4 3 0 | sed -e 's/ /./g' -e 's/^/Version\\\ /'`
+
+AFB_DEFS = -DUSE_AFB
+
+DRIVERSDKDIR = $(USRLIBDIR)/Server
+DRIVERSDKMODULEDIR = $(USRLIBDIR)/Server/modules
+DRIVERSDKINCLUDEDIR = $(USRLIBDIR)/Server/include
+
+ XF86SRC = $(SERVERSRC)/hw/xfree86
+ XF86COMSRC = $(XF86SRC)/common
+ XF86PARSERSRC = $(XF86SRC)/parser
+ XF86OSSRC = $(XF86SRC)/os-support
+ XF86DRIVERSRC = $(XF86SRC)/drivers
+ DRIVERSRC = $(XF86DRIVERSRC)
+
+ XFREE86DOCDIR = $(DOCDIR)
+ XFREE86PSDOCDIR = $(DOCPSDIR)
+ XFREE86HTMLDOCDIR = $(DOCHTMLDIR)
+XFREE86JAPANESEDOCDIR = $(DOCDIR)/Japanese
+
+# $Xorg: xf86.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $
+
+# $XFree86: xc/config/cf/xf86.rules,v 3.33 2001/01/17 16:38:51 dawes Exp $
+
+# ----------------------------------------------------------------------
+# site-specific configuration parameters that go after
+# the platform-specific parameters - edit site.def to change
+
+# site: $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $
+
+# site: $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $
+
+# ---------------------------------------------------------------------
+# Imake rules for building libraries, programs, scripts, and data files
+# rules: $Xorg: Imake.rules,v 1.3 2000/08/17 19:41:46 cpqbld Exp $
+#
+#
+#
+#
+# rules: $XFree86: xc/config/cf/Imake.rules,v 3.112 2002/11/14 21:01:13 tsi Exp $
+
+ _NULLCMD_ = @ echo -n
+
+GLIDE2INCDIR = /usr/include/glide
+
+GLIDE3INCDIR = /usr/include/glide3
+
+GLIDE3LIBNAME = glide3
+
+TKLIBNAME =
+
+TKLIBDIR =
+
+TCLLIBNAME =
+
+TCLIBDIR =
+
+ PATHSEP = /
+ SHELL = /bin/sh -e
+
+ TOP = ../..
+ CURRENT_DIR = ximtool/clients
+
+ IMAKE = imake
+ DEPEND = gccmakedep
+ MKDIRHIER = mkdir -p
+ REVPATH = revpath
+ EXPORTLISTGEN =
+ RMAN = rman
+ RMANBASENAME = rman
+ RMANOPTIONS = -f HTML
+ CONFIGSRC = $(TOP)/config
+ IMAKESRC = $(CONFIGSRC)/imake
+ DEPENDSRC = $(CONFIGSRC)/util
+
+ INCROOT = /usr/X11R6/include
+ USRLIBDIR = /usr/X11R6/lib
+ VARDIR = /var
+ VARLIBDIR = $(VARDIR)/lib
+ SYSTEMUSRLIBDIR = /usr/lib
+ SYSTEMUSRINCDIR = /usr/include
+ SHLIBDIR = /usr/X11R6/lib
+ LINTLIBDIR = $(USRLIBDIR)/lint
+ MANPATH = /usr/X11R6/man
+ MANSOURCEPATH = $(MANPATH)/man
+ MANDIR = $(MANSOURCEPATH)1
+ LIBMANDIR = $(MANSOURCEPATH)3
+ FILEMANDIR = $(MANSOURCEPATH)5
+ MISCMANDIR = $(MANSOURCEPATH)7
+ DRIVERMANDIR = $(MANSOURCEPATH)4
+ ICONDIR = /usr/share/icons
+ XCURSORPATH = "~/.icons:/usr/share/icons:/usr/share/pixmaps"
+ LOGDIRECTORY = $(VARDIR)/log
+
+ VARRUNDIR = $(VARDIR)/run
+
+ VARDBDIR = $(VARDIR)/lib
+
+ AR = ar clq
+
+# Nice try but useless: make will inherit BOOTSTRAPCFLAGS
+# from top Makefile
+ BOOTSTRAPCFLAGS = -O2 -pipe -march=i386 -mcpu=i686 -pipe
+
+ CC = gcc -m32
+ AS = gcc -m32 -c -x assembler
+
+.SUFFIXES: .cc
+
+ CXX = c++ -m32
+
+ CXXFILT = c++filt
+ CXXLIB =
+ CXXDEBUGFLAGS = -O2 -pipe -march=i386 -mcpu=i686 -fno-strict-aliasing -pipe
+CXXDEPENDINCLUDES =
+ CXXEXTRA_DEFINES =
+CXXEXTRA_INCLUDES =
+ CXXSTD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE $(CXXPROJECT_DEFINES)
+ CXXOPTIONS =
+ CXXINCLUDES = $(INCLUDES) $(TOP_INCLUDES) $(CXXEXTRA_INCLUDES)
+ CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(DEFINES) $(CXXEXTRA_DEFINES)
+ CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES)
+
+ COMPRESS = compress
+ GZIPCMD = gzip
+
+ CPP = /usr/bin/cpp $(STD_CPP_DEFINES)
+ RAWCPP = /usr/bin/cpp -undef $(STD_CPP_OPTIONS)
+ PREPROCESSCMD = gcc -m32 -E $(STD_CPP_DEFINES)
+
+ INSTALL = install
+ INSTALLFLAGS = -c
+
+ LD = gcc -m32 -nostdlib
+
+ LEX = flex -l
+ M4 = m4
+ M4FLAGS =
+ LEXLIB = -lfl
+ YACC = bison -y
+ CCYACC = bison -y
+
+ LINT = lint
+
+ LINTLIBFLAG = -C
+ LINTOPTS = -axz
+ LN = ln -s
+ MAKE = make
+ MV = mv -f
+ CP = cp
+
+ RANLIB = ranlib
+
+ RANLIBINSTFLAGS =
+
+ RM = rm -f
+ PERL = perl
+ PERLOPTS =
+ MANSUFFIX = 1x
+ LIBMANSUFFIX = 3x
+ FILEMANSUFFIX = 5x
+ MISCMANSUFFIX = 7x
+ DRIVERMANSUFFIX = 4x
+ MANSRCSUFFIX = man
+ MANNEWSUFFIX = _man
+ MANDEFS = -D__apploaddir__=$(XAPPLOADDIR) -D__filemansuffix__=$(FILEMANSUFFIX) -D__libmansuffix__=$(LIBMANSUFFIX) -D__miscmansuffix__=$(MISCMANSUFFIX) -D__drivermansuffix__=$(DRIVERMANSUFFIX) -D__projectroot__=$(PROJECTROOT) $(XORGMANDEFS) $(VENDORMANDEFS)
+
+ COMPRESSMANCMD = gzip -n
+
+ TROFF = groff -Tps
+ NROFF = nroff
+ MSMACROS = -ms
+ MANMACROS = -man
+ TBL = tbl
+ EQN = eqn
+ NEQN = neqn
+ COL = col
+ COLFLAGS = -b
+
+ MODCC = gcc -m32
+
+ MODCPP = /usr/bin/cpp
+ MODCFLAGS = $(CFLAGS)
+ MODAS = gcc -m32 -c -x assembler
+ MODASFLAGS =
+
+ MODLD = gcc -m32 -nostdlib
+
+ MODLDFLAGS =
+MODLDCOMBINEFLAGS = -r
+ MODAR = ar clq
+
+ MODRANLIB = ranlib
+
+ STD_INCLUDES =
+ STD_CPP_OPTIONS = -traditional
+ STD_CPP_DEFINES = -traditional -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE $(PROJECT_DEFINES)
+ STD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE $(PROJECT_DEFINES)
+ EXTRA_LOAD_FLAGS =
+ EXTRA_LDOPTIONS =
+ EXTRA_LIBRARIES =
+ TAGS = ctags
+
+ PARALLELMFLAGS =
+
+ SHAREDCODEDEF =
+ SHLIBDEF =
+
+ SHLIBLDFLAGS = -shared $(SHLIBGLOBALSFLAGS)
+
+ PICFLAGS = -fPIC
+
+ CXXPICFLAGS = -fPIC
+
+ PROTO_DEFINES = -DFUNCPROTO=15 -DNARROWPROTO
+
+ INSTPGMFLAGS =
+
+ INSTBINFLAGS = -m 0755
+ INSTUIDFLAGS = -m 4711
+ INSTLIBFLAGS = -m 0644
+ INSTINCFLAGS = -m 0444
+ INSTMANFLAGS = -m 0444
+ INSTDATFLAGS = -m 0444
+ INSTKMEMFLAGS = -m 4711
+
+ PROJECTROOT = /usr/X11R6
+
+ CDEBUGFLAGS = -O2 -pipe -march=i386 -mcpu=i686 -fno-strict-aliasing -pipe
+ CCOPTIONS =
+
+ ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(INSTALLED_INCLUDES) $(STD_INCLUDES)
+ ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(MODULE_DEFINES) $(DEFINES) $(EXTRA_DEFINES)
+ CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(MODULE_CFLAGS) $(ALLDEFINES)
+ LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES)
+ LDPRELIB = -L$(USRLIBDIR) $(INSTALLED_LIBS)
+ LDPOSTLIB =
+ LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+ CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+
+ LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
+
+ CCLINK = $(CC)
+
+ CXXLINK = $(CXX)
+
+ LDSTRIPFLAGS = -x
+ LDCOMBINEFLAGS = -r
+ DEPENDFLAGS =
+ DEPEND_DEFINES =
+
+# Not sure this belongs here
+ TKLIBDIR =
+ TKINCDIR =
+ TKLIBNAME =
+ TKLIBRARY = -L$(TKLIBDIR) -l$(TKLIBNAME)
+ TCLLIBDIR =
+ TCLINCDIR =
+ TCLLIBNAME =
+ TCLLIBRARY = -L$(TCLLIBDIR) -l$(TCLLIBNAME)
+
+ MACROFILE = linux.cf
+ RM_CMD = $(RM)
+
+ IMAKE_DEFINES =
+ IMAKE_WARNINGS = -Wundef
+
+ IRULESRC = $(CONFIGDIR)
+ IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
+
+ ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/X11.tmpl $(IRULESRC)/site.def $(IRULESRC)/$(MACROFILE) $(IRULESRC)/xfree86.cf $(IRULESRC)/xf86.rules $(IRULESRC)/xf86site.def $(IRULESRC)/host.def $(EXTRA_ICONFIGFILES)
+
+# $Xorg: X11.rules,v 1.4 2000/08/17 19:41:46 cpqbld Exp $
+
+# $XFree86: xc/config/cf/X11.rules,v 1.5 2000/11/06 19:24:00 dawes Exp $
+
+# ----------------------------------------------------------------------
+# X Window System Build Parameters and Rules
+# $Xorg: X11.tmpl,v 1.6 2000/08/17 19:41:46 cpqbld Exp $
+#
+#
+#
+#
+# $XFree86: xc/config/cf/X11.tmpl,v 1.196.2.2 2003/09/17 05:58:15 herrb Exp $
+
+XORGRELSTRING = Release 6.6
+XORGMANNAME = X Version 11
+
+VENDORMANNAME = XFree86
+VENDORMANVERSION = `echo 4 3 0 | sed -e 's/ /./g' -e 's/^/Version\\\ /'`
+
+STICKY_DEFINES = -DHAS_STICKY_DIR_BIT
+
+FCHOWN_DEFINES = -DHAS_FCHOWN
+
+# -----------------------------------------------------------------------
+# X Window System make variables; these need to be coordinated with rules
+
+ XTOP = $(TOP)
+ BINDIR = /usr/X11R6/bin
+ BUILDINCROOT = $(TOP)/exports
+ BUILDINCDIR = $(BUILDINCROOT)/include
+ BUILDINCTOP = ../..
+ BUILDLIBDIR = $(TOP)/exports/lib
+ BUILDLIBTOP = ../..
+ BUILDBINDIR = $(TOP)/exports/bin
+ BUILDBINTOP = ../..
+ BUILDMODULEDIR = $(BUILDLIBDIR)/modules
+ BUILDMODULETOP = $(BUILDLIBTOP)/..
+ XBUILDINCROOT = $(XTOP)/exports
+ XBUILDINCDIR = $(XBUILDINCROOT)/include/X11
+ XBUILDINCTOP = ../../..
+ XBUILDBINDIR = $(XBUILDINCROOT)/bin
+ INCDIR = $(INCROOT)
+ ADMDIR = /var/log
+ LIBDIR = /usr/X11R6/lib/X11
+ LIBEXECDIR = /usr/X11R6/libexec
+ MODULEDIR = $(USRLIBDIR)/modules
+ TOP_X_INCLUDES =
+
+ ETCX11DIR = /etc/X11
+
+ CONFDIR = $(ETCX11DIR)
+
+ DOCDIR = $(LIBDIR)/doc
+ DOCHTMLDIR = $(DOCDIR)/html
+ DOCPSDIR = $(DOCDIR)/PostScript
+ FONTDIR = $(LIBDIR)/fonts
+ ENCODINGSDIR = $(FONTDIR)/encodings
+ XINITDIR = /etc/X11/xinit
+ XDMDIR = /etc/X11/xdm
+ XDMVARDIR = $(VARLIBDIR)/xdm
+ TWMDIR = $(LIBDIR)/twm
+ XSMDIR = $(LIBDIR)/xsm
+ NLSDIR = $(LIBDIR)/nls
+ XLOCALEDIR = $(LIBDIR)/locale
+ PEXAPIDIR = $(LIBDIR)/PEX
+ LBXPROXYDIR = /etc/X11/lbxproxy
+ PROXYMANAGERDIR = /etc/X11/proxymngr
+ XPRINTDIR = /etc/X11/xserver
+ XAPPLOADDIR = $(LIBDIR)/app-defaults
+ FONTCFLAGS = -t
+
+ INSTAPPFLAGS = $(INSTDATFLAGS)
+
+ RGB = $(BINDIR)/rgb
+ FONTC = $(BINDIR)/bdftopcf
+ MKFONTDIR = $(BINDIR)/mkfontdir
+ MKHTMLINDEX = $(BINDIR)/mkhtmlindex
+ UCS2ANY = $(BINDIR)/ucs2any
+ BDFTRUNCATE = $(BINDIR)/bdftruncate
+ UCSMAPPREFIX = $(FONTDIR)/util/map-
+ XCURSORGEN = $(BINDIR)/xcursorgen
+
+ HTMLINDEXCMD = HtmlIndexCmd
+
+ DOCUTILSRC = $(XTOP)/doc/util
+ CLIENTSRC = $(TOP)/clients
+ DEMOSRC = $(TOP)/demos
+ XDOCMACROS = $(DOCUTILSRC)/macros.t
+ XIDXMACROS = $(DOCUTILSRC)/indexmacros.t
+ PROGRAMSRC = $(TOP)/programs
+ LIBSRC = $(XTOP)/lib
+ FONTSRC = $(XTOP)/fonts
+ ENCODINGSSRC = $(FONTSRC)/encodings
+ INCLUDESRC = $(BUILDINCROOT)/include
+ XINCLUDESRC = $(INCLUDESRC)/X11
+ SERVERSRC = $(XTOP)/programs/Xserver
+ CONTRIBSRC = $(XTOP)/../contrib
+ UNSUPPORTEDSRC = $(XTOP)/unsupported
+ DOCSRC = $(XTOP)/doc
+ RGBSRC = $(XTOP)/programs/rgb
+ BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf
+ MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir
+ FONTSERVERSRC = $(PROGRAMSRC)/xfs
+ FONTINCSRC = $(XTOP)/include/fonts
+ EXTINCSRC = $(XTOP)/include/extensions
+ FTSOURCEDIR = $(TOP)/extras/FreeType
+ XTTSOURCEDIR = $(TOP)/extras/X-TrueType
+ MESASRCDIR = $(TOP)/extras/Mesa
+ OGLSAMPLESRCDIR = $(TOP)/extras/ogl-sample
+ PSWRAPSRC = $(XTOP)/config/pswrap
+ TRANSCOMMSRC = $(LIBSRC)/xtrans
+ TRANS_INCLUDES = -I$(TRANSCOMMSRC)
+ CONNECTION_FLAGS = -DUNIXCONN -DTCPCONN $(STICKY_DEFINES) $(FCHOWN_DEFINES)
+
+ XORGMANDEFS = -D__xorgversion__='"$(XORGRELSTRING)" "$(XORGMANNAME)"'
+ VENDORMANDEFS = -D__vendorversion__="\"Version $(VENDORMANVERSION)\" $(VENDORMANNAME)"
+
+ XENVLIBDIR = $(USRLIBDIR)
+ CLIENTENVSETUP = LD_LIBRARY_PATH=$(XENVLIBDIR)
+
+# $Xorg: lnxLib.tmpl,v 1.3 2000/08/17 19:41:47 cpqbld Exp $
+# $XFree86: xc/config/cf/lnxLib.tmpl,v 3.13 2001/01/17 16:22:32 dawes Exp $
+
+ XLIBSRC = $(LIBSRC)/X11
+
+SOXLIBREV = 6.2
+DEPXONLYLIB =
+XONLYLIB = -lX11
+
+LINTXONLY = $(LINTLIBDIR)/llib-lX11.ln
+
+ XLIBONLY = $(XONLYLIB)
+
+ XEXTLIBSRC = $(LIBSRC)/Xext
+
+SOXEXTREV = 6.4
+DEPEXTENSIONLIB =
+EXTENSIONLIB = -lXext
+
+LINTEXTENSION = $(LINTLIBDIR)/llib-lXext.ln
+
+LINTEXTENSIONLIB = $(LINTEXTENSION)
+ DEPXLIB = $(DEPEXTENSIONLIB) $(DEPXONLYLIB)
+ XLIB = $(EXTENSIONLIB) $(XONLYLIB)
+ LINTXLIB = $(LINTXONLYLIB)
+
+ XSSLIBSRC = $(LIBSRC)/Xss
+
+DEPXSSLIB = $(USRLIBDIR)/libXss.a
+XSSLIB = -lXss
+
+LINTXSS = $(LINTLIBDIR)/llib-lXss.ln
+
+ XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc
+
+DEPXXF86MISCLIB = $(USRLIBDIR)/libXxf86misc.a
+XXF86MISCLIB = -lXxf86misc
+
+LINTXXF86MISC = $(LINTLIBDIR)/llib-lXxf86misc.ln
+
+ XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm
+
+DEPXXF86VMLIB = $(USRLIBDIR)/libXxf86vm.a
+XXF86VMLIB = -lXxf86vm
+
+LINTXXF86VM = $(LINTLIBDIR)/llib-lXxf86vm.ln
+
+ XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga
+
+DEPXXF86DGALIB = $(USRLIBDIR)/libXxf86dga.a
+XXF86DGALIB = -lXxf86dga
+
+LINTXXF86DGA = $(LINTLIBDIR)/llib-lXxf86dga.ln
+
+ XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush
+
+DEPXXF86RUSHLIB = $(USRLIBDIR)/libXxf86rush.a
+XXF86RUSHLIB = -lXxf86rush
+
+LINTXXF86RUSH = $(LINTLIBDIR)/llib-lXxf86rush.ln
+
+ XVLIBSRC = $(LIBSRC)/Xv
+
+SOXVREV = 1.0
+DEPXVLIB =
+XVLIB = -lXv
+
+LINTXV = $(LINTLIBDIR)/llib-lXv.ln
+
+ XVMCLIBSRC = $(LIBSRC)/XvMC
+
+DEPXVMCLIB = $(USRLIBDIR)/libXvMC.a
+XVMCLIB = -lXvMC
+
+LINTXVMC = $(LINTLIBDIR)/llib-lXvMC.ln
+
+ XINERAMALIBSRC = $(LIBSRC)/Xinerama
+
+DEPXINERAMALIB = $(USRLIBDIR)/libXinerama.a
+XINERAMALIB = -lXinerama
+
+LINTXINERAMA = $(LINTLIBDIR)/llib-lXinerama.ln
+
+ XRESLIBSRC = $(LIBSRC)/XRes
+
+DEPXRESLIB = $(USRLIBDIR)/libXRes.a
+XRESLIB = -lXRes
+
+LINTXRES = $(LINTLIBDIR)/llib-lXRes.ln
+
+ DPSLIBSRC = $(LIBSRC)/dps
+
+SODPSREV = 1.0
+DEPDPSLIB =
+DPSLIB = -ldps
+
+LINTDPS = $(LINTLIBDIR)/llib-ldps.ln
+
+ DPSTKLIBSRC = $(LIBSRC)/dpstk
+
+SODPSTKREV = 1.0
+DEPDPSTKLIB =
+DPSTKLIB = -ldpstk
+
+LINTDPSTK = $(LINTLIBDIR)/llib-ldpstk.ln
+
+ PSRESLIBSRC = $(LIBSRC)/psres
+
+SOPSRESREV = 1.0
+DEPPSRESLIB =
+PSRESLIB = -lpsres
+
+LINTPSRES = $(LINTLIBDIR)/llib-lpsres.ln
+
+ GLULIBSRC = $(LIBSRC)/GLU
+
+SOGLUREV = 1.3
+DEPGLULIB =
+GLULIB = -lGLU
+
+LINTGLU = $(LINTLIBDIR)/llib-lGLU.ln
+
+ GLXLIBSRC = $(LIBSRC)/GL
+
+SOGLREV = 1.2
+DEPGLXLIB =
+GLXLIB = -lGL
+
+LINTGLX = $(LINTLIBDIR)/llib-lGL.ln
+
+ GLWIDGETSRC = $(LIBSRC)/GLw
+
+DEPGLWLIB = $(USRLIBDIR)/libGLw.a
+GLWLIB = -lGLw
+
+LINTGLW = $(LINTLIBDIR)/llib-lGLw.ln
+
+ XRENDERLIBSRC = $(LIBSRC)/Xrender
+
+SOXRENDERREV = 1.2
+DEPXRENDERLIB =
+XRENDERLIB = -lXrender
+
+LINTXRENDER = $(LINTLIBDIR)/llib-lXrender.ln
+
+ XRANDRRLIBSRC = $(LIBSRC)/Xrandr
+
+SOXRANDRREV = 2.0
+DEPXRANDRLIB =
+XRANDRLIB = -lXrandr
+
+LINTXRANDR = $(LINTLIBDIR)/llib-lXrandr.ln
+
+ XCURSORRLIBSRC = $(LIBSRC)/Xcursor
+
+SOXCURSORREV = 1.0
+DEPXCURSORLIB =
+XCURSORLIB = -lXcursor
+
+LINTXCURSOR = $(LINTLIBDIR)/llib-lXcursor.ln
+
+ XFONTCACHELIBSRC = $(LIBSRC)/Xfontcache
+
+DEPXFONTCACHELIB = $(USRLIBDIR)/libXfontcache.a
+XFONTCACHELIB = -lXfontcache
+
+LINTXFONTCACHE = $(LINTLIBDIR)/llib-lXfontcache.ln
+
+ XAUTHSRC = $(LIBSRC)/Xau
+
+DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
+XAUTHLIB = -lXau
+
+LINTXAUTH = $(LINTLIBDIR)/llib-lXau.ln
+
+ XDMCPLIBSRC = $(LIBSRC)/Xdmcp
+
+DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a
+XDMCPLIB = -lXdmcp
+
+LINTXDMCP = $(LINTLIBDIR)/llib-lXdmcp.ln
+
+ XMUSRC = $(LIBSRC)/Xmu
+
+SOXMUREV = 6.2
+DEPXMULIB =
+XMULIB = -lXmu
+
+LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
+
+ XMUUSRC = $(LIBSRC)/Xmuu
+
+SOXMUUREV = 1.0
+DEPXMUULIB =
+XMUULIB = -lXmuu
+
+LINTXMUU = $(LINTLIBDIR)/llib-lXmuu.ln
+
+ OLDXLIBSRC = $(LIBSRC)/oldX
+
+DEPOLDXLIB = $(USRLIBDIR)/liboldX.a
+OLDXLIB = -loldX
+
+LINTOLDX = $(LINTLIBDIR)/llib-loldX.ln
+
+ XPLIBSRC = $(LIBSRC)/Xp
+
+SOXPREV = 6.2
+DEPXPLIB =
+XPLIB = -lXp
+
+LINTXP = $(LINTLIBDIR)/llib-lXp.ln
+
+ TOOLKITSRC = $(LIBSRC)/Xt
+
+SOXTREV = 6.0
+DEPXTOOLONLYLIB =
+XTOOLONLYLIB = -lXt
+
+LINTXTOOLONLY = $(LINTLIBDIR)/llib-lXt.ln
+
+ DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB)
+ XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB)
+ LINTXTOOLLIB = $(LINTXTOOLONLYLIB)
+
+ XALIBSRC = $(LIBSRC)/Xa
+
+SOXAREV = 1.0
+DEPXALIB =
+XALIB = -lXa
+
+LINTXA = $(LINTLIBDIR)/llib-lXa.ln
+
+ AWIDGETSRC = $(LIBSRC)/Xaw
+
+SOXAWREV = 7.0
+DEPXAWLIB =
+XAWLIB = -lXaw
+
+LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
+
+ AWIDGET6SRC = $(LIBSRC)/Xaw6
+
+SOXAW6REV = 6.1
+DEPXAW6LIB =
+XAW6LIB = -lXaw
+
+LINTXAW6 = $(LINTLIBDIR)/llib-lXaw.ln
+
+ XILIBSRC = $(LIBSRC)/Xi
+
+SOXINPUTREV = 6.0
+DEPXILIB =
+XILIB = -lXi
+
+LINTXI = $(LINTLIBDIR)/llib-lXi.ln
+
+ XTESTLIBSRC = $(LIBSRC)/Xtst
+
+SOXTESTREV = 6.1
+DEPXTESTLIB =
+XTESTLIB = -lXtst
+
+LINTXTEST = $(LINTLIBDIR)/llib-lXtst.ln
+
+ PEXLIBSRC = $(LIBSRC)/PEX5
+
+SOPEXREV = 6.0
+DEPPEXLIB =
+PEXLIB = -lPEX5
+
+LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln
+
+ XIELIBSRC = $(LIBSRC)/XIE
+
+SOXIEREV = 6.0
+DEPXIELIB =
+XIELIB = -lXIE
+
+LINTXIE = $(LINTLIBDIR)/llib-lXIE.ln
+
+ PHIGSLIBSRC = $(LIBSRC)/PHIGS
+
+DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a
+PHIGSLIB = -lphigs
+
+LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln
+
+DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
+XBSDLIB = -lXbsd
+
+LINTXBSD = $(LINTLIBDIR)/llib-lXbsd.ln
+
+ ICESRC = $(LIBSRC)/ICE
+
+SOICEREV = 6.3
+DEPICELIB =
+ICELIB = -lICE
+
+LINTICE = $(LINTLIBDIR)/llib-lICE.ln
+
+ SMSRC = $(LIBSRC)/SM
+
+SOSMREV = 6.0
+DEPSMLIB =
+SMLIB = -lSM
+
+LINTSM = $(LINTLIBDIR)/llib-lSM.ln
+
+ XKEYSRC = $(LIBSRC)/Xkey
+
+SOXKEYREV = 6.0
+DEPXKEYLIB =
+XKEYLIB = -lXkey
+
+LINTXKEY = $(LINTLIBDIR)/llib-lXkey.ln
+
+ FSLIBSRC = $(LIBSRC)/FS
+
+DEPFSLIB = $(USRLIBDIR)/libFS.a
+FSLIB = -lFS
+
+LINTFS = $(LINTLIBDIR)/llib-lFS.ln
+
+ FONTLIBSRC = $(LIBSRC)/font
+
+SOFONTREV = 1.4
+DEPFONTLIB =
+FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) -lXfont
+
+LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln
+#
+SOFONTREV = 1.4
+DEPXFONTLIB =
+XFONTLIB = -lXfont
+
+LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln
+
+ FONTSTUBLIBSRC = $(FONTLIBSRC)/stubs
+
+DEPFONTSTUBLIB = $(USRLIBDIR)/libfntstubs.a
+FONTSTUBLIB = -lfntstubs
+
+LINTFONTSTUB = $(LINTLIBDIR)/llib-lfntstubs.ln
+ DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB)
+ FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) $(FONTFT2LIB)
+
+ FONTENCLIBSRC = $(LIBSRC)/fontenc
+
+DEPXFONTENCLIB = $(USRLIBDIR)/libfontenc.a
+XFONTENCLIB = -lfontenc
+
+LINTXFONTENC = $(LINTLIBDIR)/llib-lfontenc.ln
+
+ XPMLIBSRC = $(LIBSRC)/Xpm
+
+SOXPMREV = 4.11
+DEPXPMLIB =
+XPMLIB = -lXpm
+
+LINTXPM = $(LINTLIBDIR)/llib-lXpm.ln
+
+FREETYPE2DIR = /usr
+FREETYPE2LIBDIR = /usr/lib
+FREETYPE2INCDIR = /usr/include/freetype2
+
+FREETYPE2LIB = -lfreetype
+
+FREETYPE2INCLUDES = -I$(FREETYPE2INCDIR)
+FREETYPE2DEFINES = -DFREETYPE2
+
+ EXPATLIBSRC = $(LIBSRC)/expat
+
+SOEXPATREV = 1.0
+DEPEXPATLIB =
+EXPATLIB = -lexpat
+
+LINTEXPAT = $(LINTLIBDIR)/llib-lexpat.ln
+
+EXPATDIR = /usr
+EXPATLIBDIR = /usr/lib
+EXPATINCDIR = /usr/include
+
+EXPATINCLUDES =
+
+EXPATLIB = -lexpat
+
+EXPATDEFINES = -DEXPAT
+
+ XFT1LIBSRC = $(LIBSRC)/Xft1
+
+SOXFT1REV = 1.1
+DEPXFT1LIB =
+XFT1LIB = -lXft
+
+LINTXFT1 = $(LINTLIBDIR)/llib-lXft.ln
+
+ XFTLIBSRC = $(LIBSRC)/Xft
+
+SOXFTREV = 2.1
+DEPXFTLIB =
+XFTLIB = -lXft
+
+LINTXFT = $(LINTLIBDIR)/llib-lXft.ln
+
+XFTINCLUDES=$(FONTCONFIGINCLUDES) $(FREETYPE2INCLUDES)
+
+FONTCONFIGDIR = /usr
+FONTCONFIGLIBDIR = /usr/lib
+FONTCONFIGINCDIR = /usr/include
+FONTCONFIGBINDIR = /usr/bin
+
+FONTCONFIGLIB = -lfontconfig
+
+FONTCONFIGINCLUDES =
+
+FCCACHE = $(FONTCONFIGBINDIR)/fc-cache
+
+FONTCONFIGDEFINES = -DFONTCONFIG
+
+LIBPNGINCDIR = /usr/include
+
+LIBPNGINC=
+
+LIBPNGDIR = /usr
+LIBPNGLIBDIR = /usr/lib
+LIBPNGINCDIR = /usr/include
+
+LIBPNGLIB = -lpng
+
+ XKBFILELIBSRC = $(LIBSRC)/xkbfile
+
+DEPXKBFILELIB = $(USRLIBDIR)/libxkbfile.a
+XKBFILELIB = -lxkbfile
+
+LINTXKBFILE = $(LINTLIBDIR)/llib-lxkbfile.ln
+
+ XKBCOMPCMD = $(BINDIR)/xkbcomp
+
+ XKBUILIBSRC = $(LIBSRC)/xkbui
+
+DEPXKBUILIB = $(USRLIBDIR)/libxkbui.a
+XKBUILIB = -lxkbui
+
+LINTXKBUI = $(LINTLIBDIR)/llib-lxkbui.ln
+
+ XTRAPLIBSRC = $(LIBSRC)/XTrap
+
+SOXTRAPREV = 6.4
+DEPXTRAPLIB =
+XTRAPLIB = -lXTrap
+
+LINTXTRAP = $(LINTLIBDIR)/llib-lXTrap.ln
+
+ DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
+
+ DEPLIBS1 = $(DEPLIBS)
+ DEPLIBS2 = $(DEPLIBS)
+ DEPLIBS3 = $(DEPLIBS)
+ DEPLIBS4 = $(DEPLIBS)
+ DEPLIBS5 = $(DEPLIBS)
+ DEPLIBS6 = $(DEPLIBS)
+ DEPLIBS7 = $(DEPLIBS)
+ DEPLIBS8 = $(DEPLIBS)
+ DEPLIBS9 = $(DEPLIBS)
+ DEPLIBS10 = $(DEPLIBS)
+
+XMULIBONLY = -lXmu
+XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
+
+ CONFIGDIR = $(LIBDIR)/config
+
+ USRLIBDIRPATH = $(USRLIBDIR)
+ LDPRELIBS = -L$(USRLIBDIR) $(INSTALLED_LIBS)
+ LDPOSTLIBS =
+ TOP_INCLUDES = -I$(INCROOT) $(TOP_X_INCLUDES)
+ PROJECT_DEFINES =
+
+CXXPROJECT_DEFINES =
+
+# ----------------------------------------------------------------------
+# start of Imakefile
+
+# Imakefile for the Image Support Module components.
+
+X11IRAFDIR = ../../
+
+# $Xorg: Library.tmpl,v 1.3 2000/08/17 19:41:46 cpqbld Exp $
+
+# $XFree86: xc/config/cf/Library.tmpl,v 3.20 2002/11/25 14:04:47 eich Exp $
+
+ CC = gcc -m32
+
+ CCOPTIONS =
+STD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE $(PROJECT_DEFINES)
+CDEBUGFLAGS = -O2 -pipe -march=i386 -mcpu=i686 -fno-strict-aliasing -pipe
+CLIBDEBUGFLAGS =
+ CFLAGS = $(CDEBUGFLAGS) $(CLIBDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES)
+
+LIB_MT_DEFINES = LibraryMTDefines
+
+SOSYMLINK = true
+
+ X11IRAFBINDIR = $(X11IRAFDIR)/bin
+ X11IRAFMANDIR = $(X11IRAFDIR)/man
+ X11IRAFLIBDIR = $(X11IRAFDIR)/lib
+ X11IRAFINCDIR = $(X11IRAFDIR)/include
+
+ XGTERMDIR = $(X11IRAFDIR)/xgterm
+ XIMTOOLDIR = $(X11IRAFDIR)/ximtool
+ XTAPEMONDIR = $(X11IRAFDIR)/xtapemon
+ OBMSHDIR = $(X11IRAFDIR)/obmsh
+ OBMDIR = $(X11IRAFDIR)/obm
+ XPMDIR = $(X11IRAFDIR)/xpm
+ XAW3DDIR = $(X11IRAFDIR)/xaw3d
+ CDLDIR = $(X11IRAFDIR)/cdl
+
+ DEPLIBOBM = $(OBMDIR)/libobm.a
+ LIBOBM = -lobm
+ DEPLIBXPM = $(XPMDIR)/libXpm.a
+ LIBXPM = -lXpm
+ DEPLIBXAW3D = $(XAW3DDIR)/libXaw3d.a
+ LIBXAW3D = -lXaw3d
+ LIBCDL = -lcdl
+
+ X11IRAF_LDFLAGS = -L$(X11IRAFDIR)/lib -L../lib
+ X11IRAF_INCLUDES = -I$(X11IRAFDIR)/include -I../include
+
+ CP = cp -p
+
+ WC_SRCS = wcspix/t_wcspix.x wcspix/wcimage.x wcspix/wcmef.x wcspix/wcmspec.x wcspix/wcspix.h
+
+ LIB_SRCS = lib/dspmmap.x lib/ism.x lib/idxstr.x lib/wcsgfterm.x
+
+all:: ism_wcspix.e
+
+ism_wcspix.e: $(WC_SRCS) $(LIB_SRCS)
+ @(SHELL=/bin/sh ; export SHELL ; mkpkg relink)
+ touch DONE
+
+all:: DONE
+
+DONE: $(WC_SRCS) $(LIB_SRCS)
+ $(RM) $@
+ touch $@
+
+cleandir::
+ $(RM) DONE
+
+cleandir::
+ @(rmbin -v .)
+ touch DONE
+
+includes::
+
+install:: ism_wcspix.e
+ -@if [ -d $(X11IRAFDIR)/bin ]; then set +x; else (set -x; $(MKDIRHIER) $(X11IRAFDIR)/bin); fi
+
+ mv ism_wcspix.e $(X11IRAFDIR)/bin
+
+depend::
+ $(DEPEND) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)
+
+# ----------------------------------------------------------------------
+# common rules for all Makefiles - do not edit
+
+.c.i:
+ $(RM) $@
+ $(CC) -E $(CFLAGS) $(_NOOP_) $*.c > $@
+
+.SUFFIXES: .s
+
+.c.s:
+ $(RM) $@
+ $(CC) -S $(CFLAGS) $(_NOOP_) $*.c
+
+emptyrule::
+
+cleandir::
+ $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
+
+Makefile::
+ -@if [ -f Makefile ]; then set -x; \
+ $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
+ else exit 0; fi
+ $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
+
+tags::
+ $(TAGS) -w *.[ch]
+ $(TAGS) -xw *.[ch] > TAGS
+
+man_keywords::
+
+html_index::
+
+clean:: cleandir
+
+distclean:: cleandir
+
+# ----------------------------------------------------------------------
+# empty rules for directories that do not have SUBDIRS - do not edit
+
+install::
+ @echo "install in $(CURRENT_DIR) done"
+
+install.man::
+ @echo "install.man in $(CURRENT_DIR) done"
+
+install.sdk::
+ @echo "install.sdk in $(CURRENT_DIR) done"
+
+Makefiles::
+
+includes::
+
+depend::
+
+distclean::
+ $(RM) Makefile Makefile.dep
+
+# ----------------------------------------------------------------------
+# dependencies generated by makedepend
+
diff --git a/vendor/x11iraf/ximtool/clients/README b/vendor/x11iraf/ximtool/clients/README
new file mode 100644
index 00000000..c668daaa
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/README
@@ -0,0 +1,3 @@
+#
+# CLIENTS -- This directory contains the code for the ISM client tasks.
+#
diff --git a/vendor/x11iraf/ximtool/clients/doc/Notes b/vendor/x11iraf/ximtool/clients/doc/Notes
new file mode 100644
index 00000000..da021306
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/doc/Notes
@@ -0,0 +1,199 @@
+
+
+define MAX_WCSLINES 4
+
+define SZ_WPIX 6
+define WP_CPTR Memi[$1 ] # cache pointer
+define WP_PTABSZ Memi[$1+1] # pixel table size
+define WP_SYSTEMS Memi[$1+2] # WCS readout systems
+define WP_FORMATS Memi[$1+3] # WCS readout formats
+
+define SYSTEMS Memi[WP_SYSTEMS($1)+$2-1] # WCS systems per line
+define FORMATS Memi[WP_FORMATS($1)+$2-1] # WCS formats per line
+define OBJCACHE Memi[WP_CPTR($1)+$2] # object cache
+
+# Element of an object cache.
+define SZ_CNODE 135 # size of a cache node
+define SZ_OBJREF 128 # size of a object reference
+
+define C_OBJID Memi[$1] # object id
+define C_REGID Memi[$1+1] # region id
+define C_CLASS Memi[$1+2] # object class
+define C_DATA Memi[$1+3] # object data ptr
+define C_REF Memc[P2C($1+4)] # object reference file
+
+# Object class definitions.
+define IMAGE_CLASS 1 # generic image class
+define MEF_CLASS 2 # Mosaic MEF image class
+define MULTISPEC_CLASS 3 # multispec data class
+
+# Class methods.
+define LEN_CL 6 # length of class table
+define MAX_CL 6 # max supported classes
+define SZ_CLNAME 16 # size of a class name
+
+define CL_INIT cl_table[1,$1] # class initializer
+define CL_CACHE cl_table[2,$1] # cache the object
+define CL_UNCACHE cl_table[3,$1] # uncache the object
+define CL_WCSTRAN cl_table[4,$1] # WCS tranformations
+define CL_WCSLIST cl_table[5,$1] # list available WCS
+define CL_GETDATA cl_table[6,$1] # get object data
+define CL_NAME cl_names[1,$1] # class name
+
+# Class common.
+int cl_nclasses # number of defined functions
+int cl_table[LEN_CL,MAX_CL] # class table
+char cl_names[SZ_CLNAME,MAX_CL] # class names
+common /class_com/ cl_nclasses, cl_table, cl_names
+
+
+# Image class data.
+define O_IM Memi[$1+2] # image pointer
+define O_MW Memi[$1+3] # image wcs pointer
+define O_CO Memi[$1+3] # skywcs transform pointer
+define O_CT Memi[$1+4] # mwcs transform pointer
+define O_ROT Memr[$1+5] # rotation angle
+define O_SCALE Memr[$1+6] # plate scale
+
+
+
+--------------------------------------------------------------------------------
+ISM Methods:
+--------------------------------------------------------------------------------
+
+ initialize
+ cache <objid> <ref>
+ uncache <objid>
+ wcstran <objid> <x> <y> [[<region-name> <x> <y>] ["NDC" <x> <y>]]
+ wcslist <objid>
+ getheader <objid> <template-list>
+
+
+procedure initialize
+begin
+ for (each object in the cache)
+ uncache object
+ send startup req to GUI
+end
+
+procedure cache
+begin
+end
+
+procedure uncache
+begin
+end
+
+procedure wcstran
+begin
+end
+
+procedure wcslist
+begin
+end
+
+procedure getheader
+begin
+end
+
+
+--------------------------------------------------------------------------------
+GUI Callbacks
+--------------------------------------------------------------------------------
+
+proc ism_msg { param old new } {
+
+ set target [lindex $new 0] ;# name of ism module
+
+ switch [lindex $new 0] {
+ source { source [lindex $new 1] } ;# source Tcl code
+ alert { Wexec client [lindex $new 1] } ;# alert from ism client
+
+ deliver { set ism [lindex $new 0] ;# determine ISM name
+ set argv [lrange $new 1 end] ;# get args
+ set argc [llength $argv]
+ ${ism}_msg $argc $argv ;# call module
+ }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+proc wpix_msg { argc argv } {
+
+ switch [lindex $argv 0] {
+ startup { wpix_startup }
+ shutdown { wpix_shutdown }
+ cache { .... save image name to GUI cache list
+ }
+ uncache { .... remove image name from GUI cache list
+ }
+ wcstran { .... parse argv for WCS field and update display
+ }
+ pixtab {
+ }
+ wcslist {
+ }
+ wcstype { set type [lindex $argv 1] ;# Set WCS for a line
+ set line [lindex $argv 2]
+ send sysWcs$line set label $type
+ if {$type == "None"} {
+ send wpWcs$line set on False
+ } else {
+ send wpWcs$line set on True
+ }
+ setCoordPanelHeight
+ }
+ wcsfmt { set fmt [lindex $argv 1] ;# Set fmt for a line
+ set line [lindex $argv 2]
+ send fmtWcs$line set label $fmt
+ }
+ header { set type [lindex $argv 1] ;# write header text
+ set text [lindex $argv 2]
+ switch $type {
+ imghdr {send hdrText append $text}
+ wcshdr {send hdrKGText append $text}
+ wcsinfo {send hdrIGText append $text}
+ }
+ }
+ } ;# end switch
+}
+
+proc wpix_startup args {
+ global ismEnabled frameCache
+
+ set ismEnabled 1 ;# initialize buttons
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ setCoordPanelSensitivity
+
+ resizeCoordsBox $up_todo ;# resize wcsbox marker
+ updateCoordsBox
+
+ foreach c [array names frameCache] { ;# initialize local frame cache
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch { ;# update ISM with GUI settings
+ send wpix set psize $psize
+ set wcsfmt [string tolower [send wcsFmtMenu get label]]
+ send wpix set wcsfmt $wcsfmt
+ if {[send wcsSysAltWCS get on]} {
+ setAltSystem
+ }
+ }
+}
+
+proc wpix_shutdown args {
+ global ismEnabled
+
+ set ismEnabled 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ setCoordPanelSensitivity
+ wcsFmtIValue ""
+ wcsFmtImWCS "" "" ""
+ wcsFmtAltWCS "" "" ""
+ resizeCoordsBox 0
+}
+
+
diff --git a/vendor/x11iraf/ximtool/clients/doc/README b/vendor/x11iraf/ximtool/clients/doc/README
new file mode 100644
index 00000000..142c9652
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/doc/README
@@ -0,0 +1,3 @@
+#
+# This directory contains documentation on the ISM client tasks.
+#
diff --git a/vendor/x11iraf/ximtool/clients/lib/README b/vendor/x11iraf/ximtool/clients/lib/README
new file mode 100644
index 00000000..f91f44ce
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/README
@@ -0,0 +1,11 @@
+#
+# ISM LIBRARY UTILITIES -- This directory contains various utility
+# procedures which may be used by one or more ISM client tasks.
+o
+
+ dsppmmap.x -- Opens a pixel mask associated with an image BPM keyword
+ idxstr.x -- Inverse strdic() function
+ ism.x -- Low-level ISM communications routines
+ wcsgterm.x -- Compute the output FITS CRPIX, CRVAL, and CD arrays from
+ the # MWCS LTERM and WTERM
+
diff --git a/vendor/x11iraf/ximtool/clients/lib/dspmmap.x b/vendor/x11iraf/ximtool/clients/lib/dspmmap.x
new file mode 100644
index 00000000..621f0372
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/dspmmap.x
@@ -0,0 +1,244 @@
+include <mach.h>
+include <ctype.h>
+include <error.h>
+include <imhdr.h>
+include <imset.h>
+include <pmset.h>
+include <syserr.h>
+
+
+# DS_PMMAP -- Open a pixel mask READ_ONLY.
+#
+# Open the pixel mask. If a regular image is specified convert it to
+# a pixel mask. Match the mask to the reference image based on the
+# physical coordinates. A null filename is allowed and returns NULL.
+
+pointer procedure ds_pmmap (pmname, refim)
+
+char pmname[ARB] #I Pixel mask name
+pointer refim #I Reference image pointer
+
+pointer im
+char fname[SZ_FNAME]
+int nowhite(), errcode()
+bool streq()
+pointer im_pmmap(), ds_pmimmap()
+errchk ds_pmimmap, ds_match
+
+begin
+ if (nowhite (pmname, fname, SZ_FNAME) == 0)
+ return (NULL)
+ if (streq (fname, "EMPTY"))
+ return (NULL)
+ if (fname[1] == '!') {
+ iferr (call imgstr (refim, fname[2], fname, SZ_FNAME))
+ fname[1] = EOS
+ } else if (streq (fname, "BPM")) {
+ iferr (call imgstr (refim, "BPM", fname, SZ_FNAME))
+ return (NULL)
+ }
+
+ iferr (im = im_pmmap (fname, READ_ONLY, NULL)) {
+ switch (errcode()) {
+ case SYS_FOPNNEXFIL, SYS_PLBADSAVEF:
+ im = ds_pmimmap (fname, refim)
+ default:
+ call erract (EA_ERROR)
+ }
+ }
+
+ iferr (call ds_match (im, refim))
+ call erract (EA_WARN)
+
+ return (im)
+end
+
+
+# DS_PMIMMAP -- Open a pixel mask from a non-pixel list image.
+# Return error if the image cannot be opened.
+
+pointer procedure ds_pmimmap (pmname, refim)
+
+char pmname[ARB] #I Image name
+pointer refim #I Reference image pointer
+
+int i, ndim, npix, val
+pointer sp, v1, v2, im_in, im_out, pm, mw, data
+
+int imgnli()
+pointer immap(), pm_newmask(), im_pmmapo(), imgl1i(), mw_openim()
+errchk immap, mw_openim
+
+begin
+ call smark (sp)
+ call salloc (v1, IM_MAXDIM, TY_LONG)
+ call salloc (v2, IM_MAXDIM, TY_LONG)
+
+ call amovkl (long(1), Meml[v1], IM_MAXDIM)
+ call amovkl (long(1), Meml[v2], IM_MAXDIM)
+
+ im_in = immap (pmname, READ_ONLY, 0)
+ pm = pm_newmask (im_in, 27)
+
+ ndim = IM_NDIM(im_in)
+ npix = IM_LEN(im_in,1)
+
+ while (imgnli (im_in, data, Meml[v1]) != EOF) {
+ do i = 0, npix-1 {
+ val = Memi[data+i]
+ if (val < 0)
+ Memi[data+i] = 0
+ }
+ call pmplpi (pm, Meml[v2], Memi[data], 0, npix, PIX_SRC)
+ call amovl (Meml[v1], Meml[v2], ndim)
+ }
+
+ im_out = im_pmmapo (pm, im_in)
+ data = imgl1i (im_out) # Force I/O to set header
+ mw = mw_openim (im_in) # Set WCS
+ call mw_saveim (mw, im_out)
+ call mw_close (mw)
+
+ call imunmap (im_in)
+ call sfree (sp)
+ return (im_out)
+end
+
+
+# DS_MATCH -- Set the pixel mask to match the reference image.
+# This matches sizes and physical coordinates and allows the
+# original mask to be smaller or larger than the reference image.
+# Subsequent use of the pixel mask can then work in the logical
+# coordinates of the reference image. The mask values are the maximum
+# of the mask values which overlap each reference image pixel.
+# A null input returns a null output.
+
+procedure ds_match (im, refim)
+
+pointer im #U Pixel mask image pointer
+pointer refim #I Reference image pointer
+
+int i, j, k, l, i1, i2, j1, j2, nc, nl, ncpm, nlpm, nx, val
+double x1, x2, y1, y2, lt[6], lt1[6], lt2[6]
+long vold[IM_MAXDIM], vnew[IM_MAXDIM]
+pointer pm, pmnew, imnew, mw, ctx, cty, bufref, bufpm
+
+int imstati()
+pointer pm_open(), mw_openim(), im_pmmapo(), imgl1i(), mw_sctran()
+bool pm_empty(), pm_linenotempty()
+errchk pm_open, mw_openim
+
+begin
+ if (im == NULL)
+ return
+
+ # Set sizes.
+ nc = IM_LEN(refim,1)
+ nl = IM_LEN(refim,2)
+ ncpm = IM_LEN(im,1)
+ nlpm = IM_LEN(im,2)
+
+ # If the mask is empty and the sizes are the same then it does not
+ # matter if the two are actually matched in physical coordinates.
+ pm = imstati (im, IM_PMDES)
+ if (pm_empty(pm) && nc == ncpm && nl == nlpm)
+ return
+
+ # Compute transformation between reference (logical) coordinates
+ # and mask (physical) coordinates.
+
+ mw = mw_openim (im)
+ call mw_gltermd (mw, lt, lt[5], 2)
+ call mw_close (mw)
+
+ mw = mw_openim (refim)
+ call mw_gltermd (mw, lt2, lt2[5], 2)
+ call mw_close (mw)
+
+ # Combine lterms.
+ call mw_invertd (lt, lt1, 2)
+ call mw_mmuld (lt1, lt2, lt, 2)
+ call mw_vmuld (lt, lt[5], lt[5], 2)
+ lt[5] = lt2[5] - lt[5]
+ lt[6] = lt2[6] - lt[6]
+ do i = 1, 6
+ lt[i] = nint (1D6 * (lt[i]-int(lt[i]))) / 1D6 + int(lt[i])
+
+ # Check for a rotation. For now don't allow any rotation.
+ if (lt[2] != 0. || lt[3] != 0.)
+ call error (1, "Image and mask have a relative rotation")
+
+ # Check for an exact match.
+ if (lt[1] == 1D0 && lt[4] == 1D0 && lt[5] == 0D0 && lt[6] == 0D0)
+ return
+
+ # Set reference to mask coordinates.
+ mw = mw_openim (im)
+ call mw_sltermd (mw, lt, lt[5], 2)
+ ctx = mw_sctran (mw, "logical", "physical", 1)
+ cty = mw_sctran (mw, "logical", "physical", 2)
+
+ # Create a new pixel mask of the required size and offset.
+ # Do dummy image I/O to set the header.
+ pmnew = pm_open (NULL)
+ call pm_ssize (pmnew, 2, IM_LEN(refim,1), 27)
+ imnew = im_pmmapo (pmnew, NULL)
+ bufref = imgl1i (imnew)
+
+ # Compute region of mask overlapping the reference image.
+ call mw_ctrand (ctx, 1-0.5D0, x1, 1)
+ call mw_ctrand (ctx, nc+0.5D0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1D-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1D-5))
+ call mw_ctrand (cty, 1-0.5D0, y1, 1)
+ call mw_ctrand (cty, nl+0.5D0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1D-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1D-5))
+
+ # Set the new mask values to the maximum of all mask values falling
+ # within each reference pixel in the overlap region.
+ if (i1 <= i2 && j1 <= j2) {
+ nx = i2 - i1 + 1
+ call malloc (bufpm, nx, TY_INT)
+ call malloc (bufref, nc, TY_INT)
+ vold[1] = i1
+ vnew[1] = 1
+ do j = 1, nl {
+ call mw_ctrand (cty, j-0.5D0, y1, 1)
+ call mw_ctrand (cty, j+0.5D0, y2, 1)
+ j1 = max (1, nint(min(y1,y2)+1D-5))
+ j2 = min (nlpm, nint(max(y1,y2)-1D-5))
+ if (j2 < j1)
+ next
+
+ vnew[2] = j
+ call aclri (Memi[bufref], nc)
+ do l = j1, j2 {
+ vold[2] = l
+ if (!pm_linenotempty (pm, vold))
+ next
+ call pmglpi (pm, vold, Memi[bufpm], 0, nx, 0)
+ do i = 1, nc {
+ call mw_ctrand (ctx, i-0.5D0, x1, 1)
+ call mw_ctrand (ctx, i+0.5D0, x2, 1)
+ i1 = max (1, nint(min(x1,x2)+1D-5))
+ i2 = min (ncpm, nint(max(x1,x2)-1D-5))
+ if (i2 < i1)
+ next
+ val = Memi[bufref+i-1]
+ do k = i1-vold[1], i2-vold[1]
+ val = max (val, Memi[bufpm+k])
+ Memi[bufref+i-1] = val
+ }
+ }
+ call pmplpi (pmnew, vnew, Memi[bufref], 0, nc, PIX_SRC)
+ }
+ call mfree (bufref, TY_INT)
+ call mfree (bufpm, TY_INT)
+ }
+
+ call mw_close (mw)
+ call imunmap (im)
+ im = imnew
+ call imseti (im, IM_PMDES, pmnew)
+end
diff --git a/vendor/x11iraf/ximtool/clients/lib/idxstr.x b/vendor/x11iraf/ximtool/clients/lib/idxstr.x
new file mode 100644
index 00000000..7b055658
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/idxstr.x
@@ -0,0 +1,54 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+
+# IDXSTR -- Search a dictionary string for a given string index number.
+# This is the opposite function of strdic(), that returns the index for
+# given string. The entries in the dictionary string are separated by
+# a delimiter character which is the first character of the dictionary
+# string. The index of the string found is returned as the function value.
+# Otherwise, if there is no string for that index, a zero is returned.
+
+int procedure idxstr (index, outstr, maxch, dict)
+
+int index #i String index
+char outstr[ARB] #o Output string as found in dictionary
+int maxch #i Maximum length of output string
+char dict[ARB] #i Dictionary string
+
+int i, len, start, count
+
+int strlen()
+
+begin
+ # Clear the output string.
+ outstr[1] = EOS
+
+ # Return if the dictionary is not long enough.
+ if (dict[1] == EOS)
+ return (0)
+
+ # Initialize the counters.
+ count = 1
+ len = strlen (dict)
+
+ # Search the dictionary string. This loop only terminates
+ # successfully if the index is found. Otherwise the procedure
+ # returns with and error condition.
+ for (start = 2; count < index; start = start + 1) {
+ if (dict[start] == dict[1])
+ count = count + 1
+ if (start == len)
+ return (0)
+ }
+
+ # Extract the output string from the dictionary.
+ for (i = start; dict[i] != EOS && dict[i] != dict[1]; i = i + 1) {
+ if (i - start + 1 > maxch)
+ break
+ outstr[i - start + 1] = dict[i]
+ }
+ outstr[i - start + 1] = EOS
+
+ # Return index for output string.
+ return (count)
+end
diff --git a/vendor/x11iraf/ximtool/clients/lib/ism.x b/vendor/x11iraf/ximtool/clients/lib/ism.x
new file mode 100644
index 00000000..1d7310cc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/ism.x
@@ -0,0 +1,432 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <error.h>
+include <config.h>
+include <mach.h>
+include <xwhen.h>
+
+
+# ISM.X -- Interface routines for client programs to connect to the
+# XImtool ISM port on the local socket
+#
+# status = ism_connect (device, name, mode)
+# ism_disconnect (send_quit)
+# ism_message (object, message)
+# ism_alert (text, ok_action, cancel_action)
+#
+# ism_write (message, len)
+# nread = ism_read (message, len)
+#
+# Client programs should install an exception handler to first disconnect
+# from the device before shutting down. The procedure ism_zxwhen() is
+# provided for this purpose.
+
+
+define ISM_DBG FALSE
+
+define SZ_MESSAGE 2047
+
+define ISM_TEXT 1
+define ISM_BINARY 2
+
+
+# ISM_CONNECT -- Negotiate a connection on the named device. Once
+# established we can begin sending and reading messages from the server.
+
+int procedure ism_connect (device, name, type)
+
+char device[ARB] #I socket to connect on
+char name[ARB] #I module name
+char type[ARB] #I requested connection mode
+
+pointer sp, cmsg, dev, buf
+int msglen
+char connect[SZ_FNAME]
+
+int ndopen(), reopen(), strlen()
+int ism_read()
+bool streq()
+
+extern ism_onerror()
+
+include "ismfd.com" # I/O common
+include "ismcom.com" # Interrupt handler variables
+
+# Exception handler variables common.
+int ism_errstat
+data ism_errstat /OK/
+common /ismecom/ ism_errstat
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (cmsg, SZ_LINE, TY_CHAR)
+ call salloc (dev, SZ_FNAME, TY_CHAR)
+
+ # Initialize.
+ call aclrc (Memc[buf], SZ_LINE)
+ call aclrc (Memc[cmsg], SZ_LINE)
+ call aclrc (Memc[dev], SZ_FNAME)
+ call aclrc (buffer, 2*SZ_MESSAGE+1)
+ fdin = NULL
+ fdout = NULL
+ nbuf = 0
+ bp = 0
+ ep = 0
+
+ # Generate the device name. We assume the call was made with either
+ # a "unix:" or "inet:" prefix, so just append the type and set the
+ # mode.
+
+ call sprintf (Memc[dev], SZ_FNAME, "%s:%s")
+ call pargstr (device)
+ call pargstr (type)
+ if (streq (type, "text"))
+ mode = ISM_TEXT
+ else
+ mode = ISM_BINARY
+
+ # Open the initial connection
+ iferr (fdin = ndopen (Memc[dev], READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ # Send the connect request.
+ call sprintf (Memc[cmsg], SZ_LINE, "connect %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call ism_message ("ximtool", Memc[cmsg])
+
+ # Read the acknowledgement.
+ if (ism_read (Memc[buf], msglen) == EOF) {
+ call sfree (sp)
+ return (ERR)
+ }
+
+ # Close the original socket.
+ call close (fdout)
+ call close (fdin)
+
+ # Get the new device name.
+ call sprintf (connect, SZ_LINE, "unix:%s:%s\0")
+ call pargstr (Memc[buf+8])
+ call pargstr (type)
+
+ # Open the new channel.
+ iferr (fdin = ndopen (connect, READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ if (ISM_DBG) {
+ call eprintf ("Reconnected on '%s'\n"); call pargstr (connect)
+ }
+
+ # Tell the server we're ready to begin.
+ call sprintf (Memc[cmsg], SZ_LINE, "ready %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call ism_message ("ximtool", Memc[cmsg])
+
+
+ # Post the ism_onerror procedure to be executed upon process shutdown
+ # to issue a warning to the server in case we don't close normally.
+
+ call onerror (ism_onerror)
+
+ call sfree (sp)
+ return (OK)
+end
+
+
+# ISM_DISCONNECT -- Disconnect from the currect channel.
+
+procedure ism_disconnect (send_quit)
+
+int send_quit
+
+include "ismfd.com" # I/O common
+
+begin
+ # Send a QUIT message to the server so we shut down the connection.
+ if (send_quit == YES)
+ call ism_message ("ximtool", "quit")
+
+ call close (fdin) # Close the socket connection.
+ call close (fdout)
+ fdin = NULL
+ fdout = NULL
+end
+
+
+# ISM_MESSAGE -- Send a message to an XImtool named object. If the object
+# is 'ximtool' then just pass the message directly without formatting it.
+
+procedure ism_message (object, message)
+
+char object[ARB] #I object name
+char message[ARB] #I message to send
+
+pointer sp, msgbuf
+int msglen, olen, mlen, ip
+
+int strlen()
+bool streq()
+
+begin
+ # Get the message length plus some extra for the braces and padding.
+ olen = strlen (object)
+ mlen = strlen (message)
+ msglen = olen + mlen + 20
+
+ # Allocate and clear the message buffer.
+ call smark (sp)
+ call salloc (msgbuf, msglen, TY_CHAR)
+ call aclrc (Memc[msgbuf], msglen)
+
+ if (streq (object, "ximtool")) {
+ # Just send the message.
+ call strcpy (message, Memc[msgbuf], msglen)
+ } else {
+ # Format the message. We can't use a sprintf here since the
+ # message may be bigger than that allowed by a pargstr().
+ ip = 0
+ call amovc ("send ", Memc[msgbuf+ip], 5) ; ip = ip + 5
+ call amovc (object, Memc[msgbuf+ip], olen) ; ip = ip + olen
+ call amovc (" { ", Memc[msgbuf+ip], 3) ; ip = ip + 3
+ call amovc (message, Memc[msgbuf+ip], mlen) ; ip = ip + mlen
+ call amovc (" }\0", Memc[msgbuf+ip], 2) ; ip = ip + 3
+ }
+ msglen = strlen (Memc[msgbuf])
+
+ # Now send the message. The write routine does the strpak().
+ call ism_write (Memc[msgbuf], msglen)
+
+ call sfree (sp)
+end
+
+
+# ISM_ALERT -- Send an alert message to XImtool.
+
+procedure ism_alert (text, ok, cancel)
+
+char text[ARB] #I warning text
+char ok[ARB] #i client OK message
+char cancel[ARB] #i client CANCEL message
+
+pointer sp, msg
+
+begin
+ call smark (sp)
+ call salloc (msg, SZ_LINE, TY_CHAR)
+
+ call sprintf (Memc[msg], SZ_LINE, "{%s} {%s} {%s}")
+ call pargstr (text)
+ call pargstr (ok)
+ call pargstr (cancel)
+
+ call ism_message ("alert", Memc[msg])
+
+ call sfree (sp)
+end
+
+
+# ISM_WRITE -- Low-level write of a message to the socket. Writes exactly
+# len bytes to the stream.
+
+procedure ism_write (message, len)
+
+char message[ARB] #I message to send
+int len #I length of message
+
+int nleft, n, ip
+char msgbuf[SZ_MESSAGE]
+int strlen()
+
+include "ismfd.com" # I/O common
+
+errchk write, flush
+
+begin
+ # Pad message with a NULL to terminate it.
+ len = strlen (message) + 1
+ message[len] = '\0'
+
+ if (mod(len,2) == 1) {
+ len = len + 1
+ message[len] = '\0'
+ }
+
+ ip = 1
+ nleft = len
+ while (nleft > 0) {
+ n = min (nleft, SZ_MESSAGE)
+ call amovc (message[ip], msgbuf, n)
+ if (mode == ISM_BINARY) {
+ call achtcb (msgbuf, msgbuf, n)
+ call write (fdout, msgbuf, n / SZB_CHAR)
+ } else
+ call write (fdout, msgbuf, n)
+
+ ip = ip + n
+ nleft = nleft - n
+ }
+ call flush (fdout)
+
+ if (ISM_DBG) {
+ call eprintf ("ism_write: '%.45s' len=%d mode=%d\n")
+ call pargstr (message);call pargi (len); call pargi (mode)
+ }
+end
+
+
+# ISM_READ -- Low-level read from the socket.
+
+int procedure ism_read (message, len)
+
+char message[ARB] #O message read
+int len #O length of message
+
+int i, n, nleft, read()
+
+include "ismfd.com" # I/O common
+include "ismcom.com" # Interrupt handler variables
+
+errchk read
+
+begin
+ # No data left in the buffer so read from the socket
+ if (nbuf == 0) {
+ call aclrc (buffer, SZ_MESSAGE)
+ #call amovkc (EOF, buffer, SZ_MESSAGE)
+ nbuf = 0
+
+ iferr {
+ n = read (fdin, message, SZ_MESSAGE)
+ if (n < 0)
+ return (EOF)
+ } then {
+ if (n < 0)
+ return (EOF)
+ call xer_reset()
+ call zdojmp (ism_jmp, X_IPC)
+ }
+
+ if (mode == ISM_BINARY) {
+ len = n * SZB_CHAR
+ call achtbc (message, message, len)
+ } else
+ len = n
+
+ # Save the data read to a local buffer. Remove any extra
+ # EOS padding and append an EOF on the string.
+ call amovc (message, buffer, len)
+ if (buffer[len] == EOS && buffer[len-1] == EOS)
+ nbuf = len
+ else
+ nbuf = len + 1
+ buffer[nbuf] = EOF
+ }
+
+ for (i=1; buffer[i] != EOS && buffer[i] != EOF && i <= nbuf; i=i+1)
+ message[i] = buffer[i]
+ message[i] = '\0'
+ len = i # length of the current message
+ nleft = nbuf - i # nchars left in the buffer
+
+ if (buffer[i] == EOS && buffer[i+1] == EOF) {
+ # That was the last message, force a new read next time we're
+ # called.
+ if (i > 1 && nleft > 1)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = 0
+ } else {
+ # More of the message is left in the buffer.
+ if (nleft > 0)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = nleft
+ }
+
+ if (ISM_DBG) {
+ message[len] = '\0';
+ call eprintf ("ism_read: len=%d msg='%s'\n")
+ call pargi (len); call pargstr(message)
+ call eprintf ("ism_read: nbuf=%d nleft=%d buffer='%s'\n")
+ call pargi (nbuf); call pargi(nleft); call pargstr(buffer)
+ }
+
+ return (nleft)
+end
+
+
+# ISM_INTRHANDLER -- User-callable interrupt handler so the ISM client code
+# doesn't need to know about our internals.
+
+int procedure ism_intrhandler()
+
+extern ism_zxwhen()
+
+include "ismcom.com" # Interrupt handler variables
+
+begin
+ call zlocpr (ism_zxwhen, ismepa)
+ call xwhen (X_INT, ismepa, old_onint)
+ call zsvjmp (ism_jmp, ismstat)
+
+ if (ismstat == OK)
+ return (OK)
+ else
+ return (ERR)
+end
+
+
+# ISM_ZXWHEN -- Interrupt handler for the ISM client task. Branches back
+# to ZSVJMP in the user routine to permit shutdown without an error message
+# after first disconnecting from the socket.
+
+procedure ism_zxwhen (vex, next_handler)
+
+int vex # virtual exception
+int next_handler # not used
+
+include "ismcom.com" # Interrupt handler variables
+
+begin
+ call ism_disconnect (YES)
+ call xer_reset()
+ call zdojmp (ism_jmp, vex)
+end
+
+
+# ISM_ONERROR -- Error exit handler for the interface. If this is a normal exit
+# the shut down quietly, otherwise notify the server.
+
+procedure ism_onerror (status)
+
+int status #i not used (req. for ONEXIT)
+
+# Exception handler variables common.
+int ism_errstat
+common /ismecom/ ism_errstat
+
+int code
+char buf[SZ_LINE], errmsg[SZ_LINE]
+
+int errget()
+
+include "ismcom.com" # Interrupt handler variables
+
+begin
+ if (status != OK) {
+ code = errget (errmsg, SZ_LINE)
+ call sprintf (buf, SZ_LINE, "ISM Error, code %d:\n`%s\'")
+ call pargi (status)
+ call pargstr (errmsg)
+
+ call ism_alert (buf, "", "")
+ call ism_disconnect (YES)
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients/lib/ismcom.com b/vendor/x11iraf/ximtool/clients/lib/ismcom.com
new file mode 100644
index 00000000..fd2c2939
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/ismcom.com
@@ -0,0 +1,4 @@
+# ISM interrupt handler variables common.
+int ismepa, ismstat, old_onint, ism_fd, ism_jmp[LEN_JUMPBUF]
+common /ismcom/ ism_fd, ism_jmp, ismepa, ismstat, old_onint
+
diff --git a/vendor/x11iraf/ximtool/clients/lib/ismfd.com b/vendor/x11iraf/ximtool/clients/lib/ismfd.com
new file mode 100644
index 00000000..ebb94d9a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/ismfd.com
@@ -0,0 +1,11 @@
+# ISM I/O common.
+int fdin # input descriptor
+int fdout # output descriptor
+int mode # file mode
+int nbuf # no. chars in buffer
+int bp # begin buffer ptr
+int ep # end buffer ptr
+char buffer[2*SZ_MESSAGE+1] # text buffer
+
+common /ismfd/ fdin, fdout, mode, nbuf, buffer, bp, ep
+
diff --git a/vendor/x11iraf/ximtool/clients/lib/mkpkg b/vendor/x11iraf/ximtool/clients/lib/mkpkg
new file mode 100644
index 00000000..896134d4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/mkpkg
@@ -0,0 +1,15 @@
+# Make the ISM Client utility procedures.
+
+$checkout libpkg.a ../
+$update libpkg.a
+$checkin libpkg.a ../
+$exit
+
+libpkg.a:
+# dspmmap.x <ctype.h> <error.h> <imhdr.h> <imset.h> \
+# <mach.h> <pmset.h>
+ idxstr.x
+ ism.x ismfd.com ismcom.com <config.h> <mach.h> <xwhen.h>
+ wcsgfterm.x
+ ;
+
diff --git a/vendor/x11iraf/ximtool/clients/lib/wcsgfterm.x b/vendor/x11iraf/ximtool/clients/lib/wcsgfterm.x
new file mode 100644
index 00000000..ea026f89
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/wcsgfterm.x
@@ -0,0 +1,61 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+
+# WCS_GFTERM -- Compute the output FITS CRPIX, CRVAL, and CD arrays from the
+# MWCS LTERM and WTERM. Note that the CD matrix terms are still transposed
+# from the usual Fortran order.
+
+procedure wcs_gfterm (mw, crpix, crval, cd, ndim)
+
+pointer mw #i the input mwcs pointer
+double crpix[ndim] #o the output FITS CRPIX array
+double crval[ndim] #o the output FITS CRVAL array
+double cd[ndim,ndim] #o the output FITS CD matrix
+int ndim #i the dimensionality of the wcs
+
+pointer sp, r, wcd, ltv, ltm, iltm
+pointer alert, errmsg
+int i, errcode
+
+int errget()
+
+errchk mw_gwtermd, mw_gltermd
+
+begin
+ call smark (sp)
+ call salloc (r, ndim, TY_DOUBLE)
+ call salloc (wcd, ndim * ndim, TY_DOUBLE)
+ call salloc (ltv, ndim, TY_DOUBLE)
+ call salloc (ltm, ndim * ndim, TY_DOUBLE)
+ call salloc (iltm, ndim * ndim, TY_DOUBLE)
+
+ iferr {
+ call mw_gwtermd (mw, Memd[r], crval, Memd[wcd], ndim)
+ call mw_gltermd (mw, Memd[ltm], Memd[ltv], ndim)
+ call mwvmuld (Memd[ltm], Memd[r], crpix, ndim)
+ call aaddd (crpix, Memd[ltv], crpix, ndim)
+ call mwinvertd (Memd[ltm], Memd[iltm], ndim)
+ call mwmmuld (Memd[wcd], Memd[iltm], cd, ndim)
+
+ } then {
+ call salloc (alert, SZ_LINE, TY_CHAR)
+ call salloc (errmsg, SZ_LINE, TY_CHAR)
+
+ # Set up a default value.
+ call aclrd (cd, ndim*ndim)
+ for (i=1; i <= ndim; i=i+1) {
+ crpix[i] = 1.0d0
+ crval[i] = 1.0d0
+ cd[i,i] = 1.0d0
+ }
+
+ # Send alert to the GUI.
+ errcode = errget (Memc[errmsg], SZ_LINE)
+ call sprintf (Memc[alert], SZ_FNAME, "%s\n\"%s\"")
+ call pargstr ("Error decoding image WCS:")
+ call pargstr (Memc[errmsg])
+ call ism_alert (Memc[alert], "", "")
+ }
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients/lib/ximtool.x b/vendor/x11iraf/ximtool/clients/lib/ximtool.x
new file mode 100644
index 00000000..108b325e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/lib/ximtool.x
@@ -0,0 +1,531 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <error.h>
+include <config.h>
+include <mach.h>
+include <xwhen.h>
+
+
+# XIMTOOL.X -- Interface routines for client programs to connect to
+# XImtool on the message bus.
+#
+# status = xim_connect (device, name, mode)
+# xim_disconnect (send_quit)
+# xim_message (object, message)
+# xim_alert (text, ok_action, cancel_action)
+#
+# xim_write (message, len)
+# nread = xim_read (message, len)
+#
+# Client programs should install an exception handler to first disconnect
+# from the device before shutting down. The procedure xim_zxwhen() is
+# provided for this purpose.
+
+
+define XIM_DBG FALSE
+
+define SZ_MESSAGE 2047
+
+define XIM_TEXT 1
+define XIM_BINARY 2
+
+
+# XIM_CONNECT -- Negotiate a connection on the named device. Once
+# established we can begin sending and reading messages from the server.
+
+int procedure xim_connect (device, name, type)
+
+char device[ARB] #I socket to connect on
+char name[ARB] #I module name
+char type[ARB] #I requested connection mode
+
+pointer sp, cmsg, dev, buf
+int msglen
+char connect[SZ_FNAME]
+
+int ndopen(), reopen(), strlen()
+int xim_read()
+bool streq()
+
+extern xim_onerror()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nsave, nr, nw
+char buffer[SZ_MESSAGE], bufsave[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nsave, bufsave, nr, nw
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+# Exception handler variables common.
+int xim_errstat
+data xim_errstat /OK/
+common /ximecom/ xim_errstat
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (cmsg, SZ_LINE, TY_CHAR)
+ call salloc (dev, SZ_FNAME, TY_CHAR)
+
+ # Initialize.
+ call aclrc (Memc[buf], SZ_LINE)
+ call aclrc (Memc[cmsg], SZ_LINE)
+ call aclrc (Memc[dev], SZ_FNAME)
+ call aclrc (buffer, SZ_MESSAGE)
+ fdin = NULL
+ fdout = NULL
+ nbuf = 0
+ nsave = 0
+ nr = 0
+ nw = 0
+
+ # Generate the device name. We assume the call was made with either
+ # a "unix:" or "inet:" prefix, so just append the type and set the
+ # mode.
+
+ call sprintf (Memc[dev], SZ_FNAME, "%s:%s")
+ call pargstr (device)
+ call pargstr (type)
+ if (streq (type, "text"))
+ mode = XIM_TEXT
+ else
+ mode = XIM_BINARY
+
+ # Open the initial connection
+ iferr (fdin = ndopen (Memc[dev], READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ # Send the connect request.
+ call sprintf (Memc[cmsg], SZ_LINE, "connect %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call xim_message ("ximtool", Memc[cmsg])
+
+ # Read the acknowledgement.
+ if (xim_read (Memc[buf], msglen) == EOF) {
+ call sfree (sp)
+ return (ERR)
+ }
+
+ # Close the original socket.
+ call close (fdout)
+ call close (fdin)
+
+ # Get the new device name.
+ call sprintf (connect, SZ_LINE, "unix:%s:%s\0")
+ call pargstr (Memc[buf+8])
+ call pargstr (type)
+
+ # Open the new channel.
+ iferr (fdin = ndopen (connect, READ_WRITE)) {
+ call sfree (sp)
+ return (ERR)
+ }
+ fdout = reopen (fdin, READ_WRITE)
+
+ if (XIM_DBG) {
+ call eprintf ("Reconnected on '%s'\n"); call pargstr (connect)
+ }
+
+ # Tell the server we're ready to begin.
+ call sprintf (Memc[cmsg], SZ_LINE, "ready %s\0")
+ call pargstr (name)
+ msglen = strlen (Memc[cmsg])
+ call xim_message ("ximtool", Memc[cmsg])
+
+
+ # Post the xim_onerror procedure to be executed upon process shutdown
+ # to issue a warning to the server in case we don't close normally.
+
+ call onerror (xim_onerror)
+
+ call sfree (sp)
+ return (OK)
+end
+
+
+# XIM_DISCONNECT -- Disconnect from the currect channel.
+
+procedure xim_disconnect (send_quit)
+
+int send_quit
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nsave, nr, nw
+char buffer[SZ_MESSAGE], bufsave[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nsave, bufsave, nr, nw
+
+begin
+ # Send a QUIT message to the server so we shut down the connection.
+ if (send_quit == YES)
+ call xim_message ("ximtool", "quit")
+
+ call flush (fdout) # Close the socket connection.
+ call close (fdin)
+ call close (fdout)
+ fdin = NULL
+ fdout = NULL
+end
+
+
+# XIM_MESSAGE -- Send a message to an XImtool named object. If the object
+# is 'ximtool' then just pass the message directly without formatting it.
+
+procedure xim_message (object, message)
+
+char object[ARB] #I object name
+char message[ARB] #I message to send
+
+pointer sp, msgbuf
+int msglen, olen, mlen, ip
+
+int strlen()
+bool streq()
+
+begin
+ # Get the message length plus some extra for the braces and padding.
+ olen = strlen (object)
+ mlen = strlen (message)
+ msglen = olen + mlen + 20
+
+ # Allocate and clear the message buffer.
+ call smark (sp)
+ call salloc (msgbuf, msglen, TY_CHAR)
+ call aclrc (Memc[msgbuf], msglen)
+
+ if (streq (object, "ximtool")) {
+ # Just send the message.
+ call strcpy (message, Memc[msgbuf], msglen)
+ } else {
+ # Format the message. We can't use a sprintf here since the
+ # message may be bigger than that allowed by a pargstr().
+ ip = 0
+ call amovc ("send ", Memc[msgbuf+ip], 5) ; ip = ip + 5
+ call amovc (object, Memc[msgbuf+ip], olen) ; ip = ip + olen
+ call amovc (" { ", Memc[msgbuf+ip], 3) ; ip = ip + 3
+ call amovc (message, Memc[msgbuf+ip], mlen) ; ip = ip + mlen
+ call amovc (" }\0", Memc[msgbuf+ip], 2) ; ip = ip + 3
+ }
+ msglen = strlen (Memc[msgbuf])
+
+ # Now send the message. The write routine does the strpak().
+ call xim_write (Memc[msgbuf], msglen)
+
+ call sfree (sp)
+end
+
+
+# XIM_ALERT -- Send an alert message to XImtool.
+
+procedure xim_alert (text, ok, cancel)
+
+char text[ARB] #I warning text
+char ok[ARB] #i client OK message
+char cancel[ARB] #i client CANCEL message
+
+pointer sp, msg
+
+begin
+ call smark (sp)
+ call salloc (msg, SZ_LINE, TY_CHAR)
+
+ call sprintf (Memc[msg], SZ_LINE, "{%s} {%s} {%s}")
+ call pargstr (text)
+ call pargstr (ok)
+ call pargstr (cancel)
+
+ call xim_message ("alert", Memc[msg])
+
+ call sfree (sp)
+end
+
+
+# XIM_WRITE -- Low-level write of a message to the socket. Writes exactly
+# len bytes to the stream.
+
+procedure xim_write (message, len)
+
+char message[ARB] #I message to send
+int len #I length of message
+
+int nleft, n, ip
+char msgbuf[SZ_MESSAGE]
+int strlen()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nsave, nr, nw
+char buffer[SZ_MESSAGE], bufsave[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nsave, bufsave, nr, nw
+
+errchk write, flush
+
+begin
+ # Pad message with a NULL to terminate it.
+ len = strlen (message) + 1
+ message[len] = '\0'
+
+ if (mod(len,2) == 1) {
+ len = len + 1
+ message[len] = '\0'
+ }
+
+ ip = 1
+ nleft = len
+ while (nleft > 0) {
+ n = min (nleft, SZ_MESSAGE)
+ call amovc (message[ip], msgbuf, n)
+ if (mode == XIM_BINARY) {
+ call achtcb (msgbuf, msgbuf, n)
+ call write (fdout, msgbuf, n / SZB_CHAR)
+ } else
+ call write (fdout, msgbuf, n)
+
+ ip = ip + n
+ nleft = nleft - n
+ }
+ nw = nw + len
+ call flush (fdout)
+
+ if (XIM_DBG) {
+ call eprintf ("xim_write: '%.45s' len=%d mode=%d tot=%d\n")
+ call pargstr (message);call pargi (len)
+ call pargi (mode); call pargi (nw)
+ }
+end
+
+
+# XIM_READ -- Low-level read from the socket.
+
+int procedure xim_read2 (message, len)
+
+char message[ARB] #O message read
+int len #O length of message
+
+int i, n, nleft, read()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nsave, nr, nw
+char buffer[SZ_MESSAGE], bufsave[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nsave, bufsave, nr, nw
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+errchk read
+
+begin
+ if (nbuf == 0) {
+ clear the message buffer
+ n = read (fdin, message, SZ_MESSAGE)
+ if (n < 0)
+ return (EOF)
+
+ if (mode == XIM_BINARY)
+ msglen = N * SZ_CHAR
+ unpack binary data
+ } else
+ msglen = N
+
+ if (message[msglen] != EOS)
+ # Incomplete message so save the partial to a local buffer.
+ for (i=msglen; message[i] != EOS && i > 0; i=i-1) {
+ ;
+ nsave = msglen - i + 1
+ call strcpy (message[i+1], bufsave) # save partial
+ call aclrc (message[i+1], nsave) # clear partial
+ nbuf = i
+ } else {
+ # Complete message.
+ nbuf = msglen
+ nsave = 0
+ call aclrc (bufsave, SZ_MESSAGE)
+ }
+ }
+
+ # Pull out a null-terminated message from the buffer.
+ for (i=1; buffer[i] != EOS && buffer[i] != EOF && i <= nbuf; i=i+1)
+ message[i] = buffer[i]
+ message[i] = '\0'
+ len = i # length of the current message
+ nleft = nbuf - i # nchars left in the buffer
+ nr = nr + len
+
+ if (buffer[i] == EOS && buffer[i+1] == EOF) {
+ # That was the last message, force a new read next time we're
+ # called.
+ if (i > 1 && nleft > 1)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = 0
+ } else {
+ # More of the message is left in the buffer.
+ if (nleft > 0)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = nleft
+ }
+end
+
+
+# XIM_READ -- Low-level read from the socket.
+
+int procedure xim_read (message, len)
+
+char message[ARB] #O message read
+int len #O length of message
+
+int i, n, nleft, read()
+
+# I/O common.
+int fdin, fdout, mode, nbuf, nsave, nr, nw
+char buffer[SZ_MESSAGE], bufsave[SZ_MESSAGE]
+common /ximfd/ fdin, fdout, mode, nbuf, buffer, nsave, bufsave, nr, nw
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+errchk read
+
+begin
+ # No data left in the buffer so read from the socket
+ if (nbuf == 0) {
+ call aclrc (buffer, SZ_MESSAGE)
+ #call amovkc (EOF, buffer, SZ_MESSAGE)
+ nbuf = 0
+
+ iferr {
+ n = read (fdin, message, SZ_MESSAGE)
+ if (n < 0)
+ return (EOF)
+ } then {
+ call xer_reset()
+ call zdojmp (xim_jmp, X_IPC)
+ }
+
+ if (mode == XIM_BINARY) {
+ len = n * SZB_CHAR
+ call achtbc (message, message, len)
+ } else
+ len = n
+
+ # Save the data read to a local buffer. Remove any extra
+ # EOS padding and append an EOF on the string.
+ call amovc (message, buffer, len)
+ if (buffer[len] == EOS && buffer[len-1] == EOS)
+ nbuf = len
+ else
+ nbuf = len + 1
+ buffer[nbuf] = EOF
+ }
+
+ for (i=1; buffer[i] != EOS && buffer[i] != EOF && i <= nbuf; i=i+1)
+ message[i] = buffer[i]
+ message[i] = '\0'
+ len = i # length of the current message
+ nleft = nbuf - i # nchars left in the buffer
+ nr = nr + len
+
+ if (buffer[i] == EOS && buffer[i+1] == EOF) {
+ # That was the last message, force a new read next time we're
+ # called.
+ if (i > 1 && nleft > 1)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = 0
+ } else {
+ # More of the message is left in the buffer.
+ if (nleft > 0)
+ call amovc (buffer[i+1], buffer, nleft)
+ nbuf = nleft
+ }
+
+ if (XIM_DBG) {
+ call eprintf ("xim_read: tot=%d len=%d msg='%s'\n")
+ call pargi(nr); call pargi (len);
+ call pargstr(message)
+ call eprintf ("xim_read: nbuf=%d nleft=%d buffer='%s'\n")
+ call pargi (nbuf); call pargi(nleft); call pargstr(buffer)
+ }
+
+ return (len)
+end
+
+
+# XIM_INTRHANDLER -- User-callable interrupt handler so the ISM client code
+# doesn't need to know about our internals.
+
+int procedure xim_intrhandler()
+
+extern xim_zxwhen()
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ call zlocpr (xim_zxwhen, ximepa)
+ call xwhen (X_INT, ximepa, old_onint)
+ call zsvjmp (xim_jmp, ximstat)
+
+ if (ximstat == OK)
+ return (OK)
+ else
+ return (ERR)
+end
+
+
+# XIM_ZXWHEN -- Interrupt handler for the Ximtool client task. Branches back
+# to ZSVJMP in the user routine to permit shutdown without an error message
+# after first disconnecting from the socket.
+
+procedure xim_zxwhen (vex, next_handler)
+
+int vex # virtual exception
+int next_handler # not used
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ call xim_disconnect (YES)
+ call xer_reset()
+ call zdojmp (xim_jmp, vex)
+end
+
+
+# XIM_ONERROR -- Error exit handler for the interface. If this is a normal exit
+# the shut down quietly, otherwise notify the server.
+
+procedure xim_onerror (status)
+
+int status #i not used (req. for ONEXIT)
+
+# Exception handler variables common.
+int xim_errstat
+common /ximecom/ xim_errstat
+
+int code
+char buf[SZ_LINE], errmsg[SZ_LINE]
+
+int errget()
+
+# Interrupt handler variables common.
+int ximepa, ximstat, old_onint, xim_fd, xim_jmp[LEN_JUMPBUF]
+common /ximcom/ xim_fd, xim_jmp, ximepa, ximstat, old_onint
+
+begin
+ if (status != OK) {
+ code = errget (errmsg, SZ_LINE)
+ call sprintf (buf, SZ_LINE, "ISM Error, code %d:\n`%s\'")
+ call pargi (status)
+ call pargstr (errmsg)
+
+ call xim_alert (buf, NULL, NULL)
+ call xim_disconnect (YES)
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients/mkpkg b/vendor/x11iraf/ximtool/clients/mkpkg
new file mode 100644
index 00000000..52fdef97
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/mkpkg
@@ -0,0 +1,34 @@
+# Make the ISM Client tasks.
+
+$call relink
+$exit
+
+update:
+ $call relink
+ $call install
+ ;
+
+relink:
+ $set LIBS = "-lds -lxtools -liminterp -lslalib"
+ $update libpkg.a
+ $omake x_ism.x
+ $link -z x_ism.o libpkg.a -o ism_wcspix.e $(LIBS)
+ ;
+
+debug:
+ $set LIBS = "-lds -lxtools -lslalib"
+ $set XFLAGS = "$(XFLAGS) -xqF"
+ $update libpkg.a
+ $omake x_ism.x
+ $link -z -x x_ism.o libpkg.a -o ism_wcspix.e $(LIBS)
+ ;
+
+install:
+ $move ism_wcspix.e ../../bin/ism_wcspix.e
+ ;
+
+
+libpkg.a:
+ @lib
+ @wcspix
+ ;
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/README b/vendor/x11iraf/ximtool/clients/wcspix/README
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/README
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/class.com b/vendor/x11iraf/ximtool/clients/wcspix/class.com
new file mode 100644
index 00000000..c6116c11
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/class.com
@@ -0,0 +1,6 @@
+# Class common.
+int cl_nclass # number of defined functions
+int cl_table[LEN_CLASS,MAX_CLASSES] # class table
+char cl_names[SZ_CLNAME,MAX_CLASSES] # class names
+common /class_com/ cl_nclass, cl_table, cl_names
+
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/mkpkg b/vendor/x11iraf/ximtool/clients/wcspix/mkpkg
new file mode 100644
index 00000000..80b80f48
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/mkpkg
@@ -0,0 +1,16 @@
+# Make the WCSPIX ISM Client task.
+
+$checkout libpkg.a ../
+$update libpkg.a
+$checkin libpkg.a ../
+$exit
+
+libpkg.a:
+ t_wcspix.x wcspix.h class.com <ctype.h> <time.h>
+ wcimage.x wcspix.h <ctype.h> <imhdr.h> <imio.h> <math.h> \
+ <time.h> <mwset.h> <pkg/skywcs.h> wcspix.h
+ wcmef.x wcspix.h
+ wcmspec.x wcspix.h
+ wcunknown.x wcspix.h <ctype.h>
+ ;
+
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/t_wcspix.x b/vendor/x11iraf/ximtool/clients/wcspix/t_wcspix.x
new file mode 100644
index 00000000..b0170f5b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/t_wcspix.x
@@ -0,0 +1,792 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <ctype.h>
+include <time.h>
+include "wcspix.h"
+
+
+# T_WCSPIX -- Entry point for the WCSPIX Image Support Module for XImtool.
+# The WCSPIX task is responsible for converting image coordinates and getting
+# pixel values from images of various types. Results are returned to the
+# GUI directly using ISM messaging.
+
+procedure t_wcspix ()
+
+pointer wp
+real x, y
+int len, disconnect, ncmd, objid, regid
+char socket[SZ_FNAME], cmd[SZ_FNAME], message[SZ_LINE], buf[SZ_DATE]
+char ref[SZ_FNAME], template[SZ_LINE], param[SZ_FNAME]
+bool debug
+
+long clktime()
+pointer wp_init()
+int envgets(), envgeti(), strdic()
+
+# Standard declarations for the Ximtool WCSPIX client interface.
+int ism_connect(), wp_read(), ism_intrhandler()
+errchk wp_read, envgets, envgeti
+
+begin
+ # Initialize local storage.
+ call aclrc (buf, SZ_DATE)
+ call aclrc (cmd, SZ_FNAME)
+ call aclrc (ref, SZ_FNAME)
+ call aclrc (param, SZ_FNAME)
+ call aclrc (socket, SZ_FNAME)
+ call aclrc (message, SZ_LINE)
+ call aclrc (template, SZ_LINE)
+
+ # Get the connection socket name from the environment if defined
+ # or else use the default socket.
+ if (envgets ("ISMDEV", socket, SZ_FNAME) <= 0)
+ call strcpy (WCSPIX_CONNECT, socket, SZ_FNAME)
+
+ # Open the socket connection on a negotiated socket.
+ if (ism_connect (socket, WCSPIX_NAME, WCSPIX_MODE) == ERR)
+ return
+
+ # Install an interrupt exception handler so we can exit cleanly.
+ if (ism_intrhandler() == ERR)
+ return
+
+
+ # Initialize the task data structures.
+ wp = wp_init ()
+
+ # Check for a runtime debug level.
+ iferr (WP_DBGLEVEL(wp) = envgeti ("WCSPIX_DEBUG"))
+ WP_DBGLEVEL(wp) = 0
+
+ # Log the connection.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE, "info { %s: WCSPIX Connect}\n")
+ call pargstr (buf)
+ call ism_message ("ism_msg", message)
+
+ # Loop over the commands read on the connection and process.
+ disconnect = 1
+ debug = (WCSPIX_DBG || WP_DBGLEVEL(wp) > 0)
+ while (wp_read (wp, message, len) != EOF) {
+
+ if (debug) {
+ message[len] = '\0'
+ call eprintf("message: '%s' len=%d\n")
+ call pargstr (message); call pargi (len)
+ }
+ if (len <= 0) {
+ # Server has disconnected.
+ disconnect = 0
+ break
+ }
+
+ # Scan the command string and get the first word.
+ call sscan (message)
+ call gargwrd (cmd, SZ_LINE)
+ ncmd = strdic (cmd, cmd, SZ_LINE, WCSPIX_CMDS)
+
+ switch (ncmd) {
+ case QUIT:
+ # Server wants us to shut down.
+ disconnect = 0
+ break
+
+ case INITIALIZE:
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Initialize}\n")
+ call pargstr (buf)
+ call wp_initialize (wp)
+
+ case CACHE:
+ # <ref> <objid> <regid>
+ call gargwrd (ref, SZ_FNAME)
+ call gargi (objid)
+ call gargi (regid)
+ if (debug) {
+ call printf ("cache: objid=%d regid=%d ref='%s'\n")
+ call pargi(objid); call pargi(regid); call pargstr(ref)
+ }
+
+ # Log the event.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Cache objid=%3d %s}\n")
+ call pargstr (buf)
+ call pargi (objid)
+ call pargstr (ref)
+ call ism_message ("ism_msg", message)
+
+ call wp_cache (wp, objid, regid, ref)
+
+ case UNCACHE:
+ # <id>
+ call gargi (objid)
+ if (debug) { call printf("uncache: id=%d\n");call pargi(objid) }
+
+ # Log the event.
+ call wp_cnvdate (clktime(0), buf, SZ_DATE)
+ call sprintf (message, SZ_LINE,
+ "info { %s: WCSPIX Uncache objid=%3d}\n")
+ call pargstr (buf)
+ call pargi (objid)
+ call ism_message ("ism_msg", message)
+
+ call wp_uncache (wp, objid)
+
+ case WCSTRAN:
+ # <id> <x> <y> [[<region> <x> <y>] ["NDC" <x> <y> ]]
+ call gargi (objid)
+ call gargr (x) ; call gargr (y)
+ if (debug) {
+ call printf ("wcstran: id=%d (%g,%g)\n")
+ call pargi(objid); call pargr (x); call pargr (y)
+ }
+ call wp_wcstran (wp, objid, x, y)
+
+ case WCSLIST:
+ # <id>
+ call gargi (objid)
+ if (debug) { call printf ("wcslist: id=%d\n");call pargi(objid)}
+ call wp_wcslist (wp, objid)
+
+ case OBJINFO:
+ # <id> <template_list>
+ call gargi (objid)
+ call gargwrd (template, SZ_FNAME)
+ if (debug) {
+ call printf ("objinfo: id=%d temp='%s'\n")
+ call pargi(objid); call pargstr (template);
+ }
+ call wp_objinfo (wp, objid, template)
+
+ case SET:
+ # <param> <value>
+ call gargwrd (param, SZ_FNAME)
+ call wp_setpar (wp, param)
+
+ case GET:
+ # <param>
+
+ case DEBUG:
+ debug = !(debug)
+
+ default:
+ if (debug) {
+ call eprintf ("ISM default: len=%d msg='%s'\n")
+ call pargi(len); call pargstr(message)
+ }
+ }
+
+ # Clear the buffer for the next read.
+ call aclrc (message, SZ_LINE)
+ }
+
+ # Disconnect from the server and clean up.
+ call ism_disconnect (disconnect)
+ call wp_shutdown (wp)
+end
+
+
+# WP_INITIALIZE -- Initialize the WCSPIX, uncache any previously cached images.
+
+procedure wp_initialize (wp)
+
+pointer wp #i WCSPIX structure
+
+pointer cp, wp_id2obj()
+int i
+
+begin
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = wp_id2obj (wp, i)
+ if (cp != NULL && C_OBJID(cp) != NULL)
+ call wp_uncache (wp, C_OBJID(cp))
+ }
+end
+
+
+# WP_CACHE -- Associate and object reference with a unique object id.
+
+procedure wp_cache (wp, objid, regid, ref)
+
+pointer wp #i WCSPIX structure
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object ref
+
+pointer cp
+int i, class
+char alert[SZ_FNAME]
+
+int wp_class()
+
+include "class.com"
+
+begin
+ # Find an unused slot in the object cache.
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = OBJCACHE(wp,i)
+ if (C_NREF(cp) == 0)
+ break
+ }
+
+ # Get the object class.
+ class = wp_class (ref)
+ if (class == ERR) {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "wp_cache: Unable to cache\n%s")
+ call pargstr (ref)
+ call ism_alert (alert, "", "")
+
+ # Setup for linear system.
+ return
+ }
+ C_CLASS(cp) = class
+
+ # Initialize the object.
+ if (class != NULL && CL_INIT(class) != NULL)
+ call zcall2 (CL_INIT(class), cp, wp)
+
+ # Call the cache function.
+ if (class != NULL && CL_CACHE(class) != NULL)
+ call zcall4 (CL_CACHE(class), cp, objid, regid, ref)
+end
+
+
+# WP_UNCACHE -- Remove an object from the WCSPIX cache.
+
+procedure wp_uncache (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_UNCACHE(class) != NULL)
+ call zcall2 (CL_UNCACHE(class), cp, id)
+
+ C_NREF(cp) = 0
+end
+
+
+# WP_WCSTRAN -- Translate image coords to WCS values.
+
+procedure wp_wcstran (wp, id, x, y)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+real x, y #i image coords
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_WCSTRAN(class) != NULL)
+ call zcall4 (CL_WCSTRAN(class), cp, id, x, y)
+end
+
+
+# WP_WCSLIST -- List the available world coordinate systems for the given
+# object.
+
+procedure wp_wcslist (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_WCSLIST(class) != NULL)
+ call zcall2 (CL_WCSLIST(class), cp, id)
+end
+
+
+# WP_OBJINFO -- Get and image header or keyword templates for the given
+# object.
+
+procedure wp_objinfo (wp, id, template)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+char template[ARB] #i keyword template
+
+pointer cp, wp_id2obj()
+int class
+
+include "class.com"
+
+begin
+ cp = wp_id2obj (wp, id)
+ if (cp == NULL)
+ return
+
+ # Call the uncache function.
+ class = C_CLASS(cp)
+ if (class != NULL && CL_OBJINFO(class) != NULL)
+ call zcall3 (CL_OBJINFO(class), cp, id, template)
+end
+
+
+# WP_SETPAR -- Set the value of a WCSPIX ISM parameter.
+
+procedure wp_setpar (wp, param)
+
+pointer wp #i WCSPIX structure pointer
+char param[SZ_FNAME] #i WCSPIX param name
+
+char arg[SZ_PARAM], buf[SZ_PARAM], msg[SZ_PARAM]
+int line
+
+int strdic()
+
+include "class.com"
+
+begin
+ if (WCSPIX_DBG) { call printf ("set: %s = ");call pargstr(param) }
+
+ switch (strdic (param, param, SZ_PARAM, WCSPIX_PARAMS)) {
+ case PAR_PSIZE:
+ call gargi (WP_PTABSZ(wp))
+ if (WCSPIX_DBG) { call printf ("%d\n");call pargi(WP_PTABSZ(wp)) }
+
+ case PAR_BPM:
+ call gargi (WP_BPM(wp))
+ if (WCSPIX_DBG) { call printf ("%d\n");call pargi(WP_BPM(wp)) }
+
+ case PAR_WCS:
+ call gargwrd (buf, SZ_FNAME)
+ call gargi (line)
+
+ call strcpy (buf, arg, SZ_PARAM)
+ call strlwr (buf)
+ switch (strdic (buf, buf, SZ_FNAME, WCSPIX_SYSTEMS)) {
+ case SYS_DISPLAY: SYSTEMS(wp,line) = SYS_DISPLAY
+ case SYS_LOGICAL: SYSTEMS(wp,line) = SYS_LOGICAL
+ case SYS_PHYSICAL: SYSTEMS(wp,line) = SYS_PHYSICAL
+ case SYS_WORLD: SYSTEMS(wp,line) = SYS_WORLD
+ case SYS_NONE: SYSTEMS(wp,line) = SYS_NONE
+ case SYS_AMP: SYSTEMS(wp,line) = SYS_AMP
+ case SYS_CCD: SYSTEMS(wp,line) = SYS_PHYSICAL
+ case SYS_DETECTOR: SYSTEMS(wp,line) = SYS_DETECTOR
+ default: SYSTEMS(wp,line) = SYS_SKY
+ }
+ call strcpy (buf, WCSNAME(wp,line), LEN_WCSNAME)
+
+ if (WCSPIX_DBG) {
+ call printf("%s line=%d\n");call pargstr(buf);call pargi(line) }
+
+ call sprintf (msg, SZ_FNAME, "wcstype %s %d")
+ call pargstr (arg)
+ call pargi (line)
+ call wcspix_message (msg)
+
+ case PAR_FMT:
+ call gargwrd (buf, SZ_FNAME)
+ call gargi (line)
+
+ call strcpy (buf, arg, SZ_PARAM)
+ call strlwr (buf)
+ switch (strdic (buf, buf, SZ_FNAME, WCSPIX_FMT)) {
+ case FMT_DEFAULT: FORMATS(wp,line) = FMT_DEFAULT
+ case FMT_HMS: FORMATS(wp,line) = FMT_HMS
+ case FMT_DEG: FORMATS(wp,line) = FMT_DEG
+ case FMT_RAD: FORMATS(wp,line) = FMT_RAD
+ default: FORMATS(wp,line) = FMT_DEFAULT
+ }
+
+ if (WCSPIX_DBG) {
+ call printf("%s line=%d\n");call pargstr(buf);call pargi(line) }
+
+ call sprintf (msg, SZ_FNAME, "wcsfmt %s %d")
+ call pargstr (arg)
+ call pargi (line)
+ call wcspix_message (msg)
+ }
+end
+
+
+# WP_GETPAR -- Get the value of a WCSPIX ISM parameter.
+
+procedure wp_getpar (wp, param)
+
+pointer wp #i WCSPIX structure pointer
+char param[SZ_FNAME] #i WCSPIX param name
+
+int strdic()
+
+begin
+ if (WCSPIX_DBG) { call printf ("set: %s = ");call pargstr(param) }
+
+ switch (strdic (param, param, SZ_PARAM, WCSPIX_PARAMS)) {
+ case PAR_PSIZE:
+ case PAR_BPM:
+ case PAR_WCS:
+ case PAR_FMT:
+ }
+end
+
+
+################################################################################
+#
+# Private procedures.
+#
+################################################################################
+
+
+# WP_INIT -- Initialize the WCSPIX task and data structures.
+
+pointer procedure wp_init ()
+
+pointer wp #r WCSPIX structure pointer
+int i
+
+begin
+ # Allocate the task structure.
+ iferr (call calloc (wp, SZ_WCSPIX, TY_STRUCT))
+ call error (0, "Error opening WCSPIX task structure.")
+
+ call calloc (WP_SYSTEMS(wp), MAX_WCSLINES, TY_INT)
+ call calloc (WP_FORMATS(wp), MAX_WCSLINES, TY_INT)
+ call calloc (WP_WCS(wp), (LEN_WCSNAME*MAX_WCSLINES), TY_CHAR)
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+ FORMATS(wp,i) = DEF_FMT
+ SYSTEMS(wp,i) = DEF_SYSTEM
+ call strcpy ("none", WCSNAME(wp,i), LEN_WCSNAME)
+ }
+
+ # Allocate the object cache.
+ call calloc (WP_CPTR(wp), SZ_CACHE, TY_STRUCT)
+ for (i=0; i < SZ_CACHE; i=i+1)
+ call calloc (OBJCACHE(wp,i), SZ_CNODE, TY_STRUCT)
+
+ WP_PTABSZ(wp) = 0
+ WP_BPM(wp) = DEF_BPM_FLAG
+
+ # Initialize the class modules.
+ call wp_class_init()
+
+ return (wp)
+end
+
+
+# WP_READ -- Read messages from the connection and process them optimally for
+# this ISM. This means we segment the messages and handle only the last
+# few WCS requests so we can keep up with the server requests. Presumably
+# there are more cursor events coming which are no longer valid so some are
+# thrown out.
+
+int procedure wp_read (wp, message, len)
+
+pointer wp #i WCSPIX structure pointer
+char message[ARB] #o message buffer
+int len #o length of message
+
+int nleft
+
+int ism_read(), strncmp()
+errchk ism_read
+
+begin
+ while (true) {
+ nleft = ism_read (message, len)
+
+ # Return EOF if the server hung up on us.
+ if (nleft == EOF)
+ return (EOF)
+
+ # In debug mode process all messages.
+ if (WP_DBGLEVEL(wp) > 0)
+ break
+
+ # Pass back all non-wcstran messages.
+ if (strncmp ("wcstran", message, 7) != 0)
+ break
+
+ # Only pass back the last wcstran messages received (eat the rest).
+ if (strncmp ("wcstran", message, 7) == 0 && nleft <= 1)
+ break
+ }
+
+ return (len)
+end
+
+
+# WP_SHUTDOWN -- Shut down the WCSPIX, freeing all storage
+
+procedure wp_shutdown (wp)
+
+pointer wp #i WCSPIX structure
+int i
+
+begin
+ # Free the structures.
+ call mfree (WP_WCS(wp), TY_CHAR)
+ call mfree (WP_FORMATS(wp), TY_INT)
+ call mfree (WP_SYSTEMS(wp), TY_INT)
+ for (i=0; i < SZ_CACHE; i=i+1)
+ call mfree (OBJCACHE(wp,i), TY_STRUCT)
+
+ call mfree (WP_CPTR(wp), TY_STRUCT)
+ call mfree (wp, TY_STRUCT)
+end
+
+
+# WP_CLASS -- Determine the object class for the named image/file.
+
+int procedure wp_class (object)
+
+char object[ARB] #i object reference
+
+int n, class
+pointer im
+char ch, buf[SZ_FNAME]
+
+int strlen(), stridx()
+bool streq()
+pointer immap()
+
+errchk immap
+
+begin
+ # The following kludge is necessary to protect against the case
+ # where dev$pix is used as a test image. The 'object' pathname in
+ # this case is "node!/path/dev/pix" which lacks the extension
+ # and causes the task to fail to open because of a conflict with
+ # the pix.hhh in the same directory. Most IRAF tasks work since
+ # the imio$iki code treats the string "dev$pix" as a special case.
+
+ call imgimage (object, buf, SZ_FNAME)
+ n = strlen (buf) - 7
+ if (streq (buf[n], "/dev/pix")) {
+ call strcpy ("dev$pix", buf, SZ_FNAME)
+ ch = '['
+ n = stridx (ch, object)
+ if (n > 0)
+ call strcat (object[n], buf, SZ_FNAME)
+ call strcpy (buf, object, SZ_FNAME)
+ }
+
+
+ # See if we can map the image to get at least an image class. If
+ # so then check for special subclasses like Mosaic files, spectra, etc.
+
+ class = UNKNOWN_CLASS
+ ifnoerr (im = immap (object, READ_ONLY, 0)) {
+ class = IMAGE_CLASS
+
+ # Now check for subclasses. (TBD)
+
+ call imunmap (im)
+ }
+
+ return (class)
+end
+
+
+# WP_ID2OBJ -- Utility routine to convert and object id to the cache pointer.
+
+pointer procedure wp_id2obj (wp, id)
+
+pointer wp #i WCSPIX structure
+int id #i object id
+
+int i
+pointer cp
+
+begin
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = OBJCACHE(wp,i)
+ if (C_OBJID(cp) == id)
+ return (cp)
+ }
+ return (NULL)
+end
+
+
+# WP_CLASS_INIT -- Initialize the WCSPIX ISM class modules.
+
+procedure wp_class_init()
+
+extern img_init(), img_cache(), img_uncache()
+extern img_wcstran(), img_wcslist(), img_objinfo()
+
+extern mef_init(), mef_cache(), mef_uncache()
+extern mef_wcstran(), mef_wcslist(), mef_objinfo()
+
+extern msp_init(), msp_cache(), msp_uncache()
+extern msp_wcstran(), msp_wcslist(), msp_objinfo()
+
+extern unk_init(), unk_cache(), unk_uncache()
+extern unk_wcstran(), unk_wcslist(), unk_objinfo()
+
+include "class.com"
+int locpr()
+
+begin
+ cl_nclass = 0
+
+ # Load the class modules.
+ call wp_load_class ("unknown",
+ locpr(unk_init), locpr(unk_cache), locpr(unk_uncache),
+ locpr(unk_wcstran), locpr(unk_wcslist), locpr(unk_objinfo))
+ call wp_load_class ("image",
+ locpr(img_init), locpr(img_cache), locpr(img_uncache),
+ locpr(img_wcstran), locpr(img_wcslist), locpr(img_objinfo))
+ call wp_load_class ("mef",
+ locpr(mef_init), locpr(mef_cache), locpr(mef_uncache),
+ locpr(mef_wcstran), locpr(mef_wcslist), locpr(mef_objinfo))
+ call wp_load_class ("multispec",
+ locpr(msp_init), locpr(msp_cache), locpr(msp_uncache),
+ locpr(msp_wcstran), locpr(msp_wcslist), locpr(msp_objinfo))
+end
+
+
+# WP_LOAD_CLASS -- Load an object class module for the ISM task.
+
+procedure wp_load_class (name, init, cache, uncache, tran, list, info)
+
+char name[ARB] #I module name
+int init #I initialize procedure
+int cache #I cache the object procedure
+int uncache #I uncache the object procedure
+int tran #I translate WCS procedure
+int list #I list WCS proedure
+int info #I get header procedure
+
+errchk syserrs
+include "class.com"
+
+begin
+ # Get a new driver slot.
+ if (cl_nclass + 1 > MAX_CLASSES)
+ return
+ cl_nclass = cl_nclass + 1
+
+ # Load the driver.
+ CL_INIT(cl_nclass) = init
+ CL_CACHE(cl_nclass) = cache
+ CL_UNCACHE(cl_nclass) = uncache
+ CL_WCSTRAN(cl_nclass) = tran
+ CL_WCSLIST(cl_nclass) = list
+ CL_OBJINFO(cl_nclass) = info
+ call strcpy (name, CL_NAME(cl_nclass), SZ_FNAME)
+end
+
+
+# WCSPIX_MESSAGE -- Deliver a message to the ISM callback, tagged with
+# our name so it can be passed off to the correct code.
+
+procedure wcspix_message (message)
+
+char message[ARB] #I message to send
+
+pointer sp, msgbuf
+int msglen, mlen, ip
+
+int strlen()
+
+begin
+ # Get the message length plus some extra for the braces and padding.
+ mlen = strlen (message)
+ msglen = mlen + 64
+
+ # Allocate and clear the message buffer.
+ call smark (sp)
+ call salloc (msgbuf, msglen, TY_CHAR)
+ call aclrc (Memc[msgbuf], msglen)
+
+ ip = 0
+ call amovc ("deliver wcspix { ", Memc[msgbuf], 17) ; ip = ip + 17
+ call amovc (message, Memc[msgbuf+ip], mlen) ; ip = ip + mlen
+ call amovc (" }\0", Memc[msgbuf+ip], 2) ; ip = ip + 2
+
+ call ism_message ("ism_msg", Memc[msgbuf])
+
+ call sfree (sp)
+end
+
+
+define SZ_WEEKDAY 3
+define SZ_MONTH 3
+
+# WP_CNVDATE -- Convert a time in integer seconds since midnight on Jan 1, 1980
+# into a short string such as "5/15 18:24".
+
+procedure wp_cnvdate (ltime, outstr, maxch)
+
+long ltime # seconds since 00:00:00 10-Jan-1980
+char outstr[ARB]
+int maxch
+
+int tm[LEN_TMSTRUCT]
+
+begin
+ call brktime (ltime, tm)
+
+# call sprintf (outstr, maxch, "%2d/%2d %2d:%02d")
+# call pargi (TM_MONTH(tm))
+# call pargi (TM_MDAY(tm))
+# call pargi (TM_HOUR(tm))
+# call pargi (TM_MIN(tm))
+
+# call sprintf (outstr, maxch, "%2d:%02d")
+# call pargi (TM_HOUR(tm))
+# call pargi (TM_MIN(tm))
+
+ call sprintf (outstr, maxch, "%2d:%02d:%02d")
+ call pargi (TM_HOUR(tm))
+ call pargi (TM_MIN(tm))
+ call pargi (TM_SEC(tm))
+end
+
+
+
+#----------------
+# DEBUG ROUTINES.
+#----------------
+procedure dbg_printcache (wp, buf)
+pointer wp
+char buf[ARB]
+pointer cp, wp_id2obj()
+int i
+begin
+ call printf ("%s\n") ; call pargstr (buf)
+ for (i=0; i < SZ_CACHE; i=i+1) {
+ cp = wp_id2obj (wp, i)
+ if (C_DATA(cp) != NULL) {
+ call printf ("%3d: id=%d ref='%s'\n")
+ call pargi(i)
+ call pargi(C_OBJID(cp))
+ call pargstr(C_REF(cp))
+ }
+ }
+end
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x b/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x
new file mode 100644
index 00000000..4a27af46
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x
@@ -0,0 +1,1465 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <math.h>
+include <imio.h>
+include <imhdr.h>
+include <time.h>
+include <ctype.h>
+include <mwset.h>
+include <pkg/skywcs.h>
+include "wcspix.h"
+
+
+# Image class data.
+define LEN_IMGDATA 15
+define IMG_WP Memi[$1 ] # wcspix back-pointer
+define IMG_IM Memi[$1+1] # image pointer
+define IMG_BPM Memi[$1+2] # bad pixel mask pointer
+define IMG_MW Memi[$1+3] # image wcs pointer
+define IMG_CO Memi[$1+4] # skywcs transform pointer
+define IMG_CTW Memi[$1+5] # mwcs log->world transform ptr
+define IMG_CTP Memi[$1+6] # mwcs log->phys transform ptr
+define IMG_CTA Memi[$1+7] # mwcs log->amplifier transform
+define IMG_CTD Memi[$1+8] # mwcs log->detector transform
+define IMG_ROT Memr[$1+9] # rotation angle
+define IMG_SCALE Memr[$1+10] # plate scale
+define IMG_LINEAR Memi[$1+11] # linear coords
+
+
+define IMG_DEBUG FALSE
+
+
+# IMG_INIT -- Initialize the object structure.
+
+procedure img_init (cp, wp)
+
+pointer cp #i cache pointer
+pointer wp #i WCSPIX structure
+
+pointer img # data pointer
+
+begin
+ if (IMG_DEBUG) call printf ("img_init: \n")
+
+ # Allocate the image data structure if not previously allocated.
+ if (C_DATA(cp) == NULL) {
+ iferr (call calloc (C_DATA(cp), LEN_IMGDATA, TY_STRUCT))
+ return
+ }
+
+ img = C_DATA(cp)
+ IMG_WP(img) = wp
+ IMG_IM(img) = NULL
+ IMG_BPM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = YES
+end
+
+
+# IMG_CACHE -- Cache an image in the object cache.
+
+procedure img_cache (cp, objid, regid, ref)
+
+pointer cp #i cache pointer
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object reference
+
+pointer img, im, wp, co
+int stat, i1, i2
+char alert[SZ_LINE]
+
+pointer immap(), ds_pmmap(), mw_sctran()
+pointer img_amp_wcs(), img_det_wcs()
+int imaccf(), sk_decim()
+
+errchk immap, ds_pmmap, mw_sctran, sk_decim, sk_setd
+
+begin
+ if (IMG_DEBUG) call printf ("img_cache: \n")
+
+ # Now map the image and WCS.
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+
+ iferr (IMG_IM(img) = immap (ref, READ_ONLY, 0)) {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to cache\n%s")
+ call pargstr (ref)
+ call ism_alert (alert, "", "")
+ return
+ }
+ im = IMG_IM(img)
+
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ iferr {
+ stat = sk_decim (IMG_IM(img), "world", IMG_MW(img), IMG_CO(img))
+ if (IMG_DEBUG) {
+ call eprintf ("img_cache - decim: stat=%d mw=%d co=%d \n")
+ call pargi(stat);call pargi(IMG_MW(img))
+ call pargi(IMG_CO(img));
+ }
+ if (stat == ERR || IMG_MW(img) == NULL) {
+ IMG_LINEAR(img) = YES
+
+ co = IMG_CO(img)
+ i1 = IM_VMAP(im,1)
+ i2 = IM_VMAP(im,2)
+ call sk_setd (co, S_VXOFF, double(IM_VOFF(im,i1)))
+ call sk_setd (co, S_VYOFF, double(IM_VOFF(im,i2)))
+ call sk_setd (co, S_VXSTEP, double(IM_VSTEP(im,i1)))
+ call sk_setd (co, S_VYSTEP, double(IM_VSTEP(im,i2)))
+
+ IMG_MW(img) = NULL
+ IMG_LINEAR(img) = YES
+ }
+
+ if (IMG_MW(img) != NULL) {
+ IMG_CTW(img) = mw_sctran (IMG_MW(img), "logical", "world", 03B)
+ IMG_CTP(img) = mw_sctran (IMG_MW(img), "logical", "physical",
+ 03B)
+
+ # Get the amplifier transformation values if present.
+ if (imaccf(im,"ATM1_1") == YES &&
+ imaccf(im,"ATM2_2") == YES &&
+ imaccf(im,"ATV1") == YES &&
+ imaccf(im,"ATV2") == YES)
+ IMG_CTA(img) = img_amp_wcs (im, IMG_MW(img))
+
+ if (imaccf(im,"DTM1_1") == YES &&
+ imaccf(im,"DTM2_2") == YES &&
+ imaccf(im,"DTV1") == YES &&
+ imaccf(im,"DTV2") == YES)
+ IMG_CTD(img) = img_det_wcs (im, IMG_MW(img))
+ }
+
+ } then {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to decode image WCS\n%s")
+ call pargstr (ref)
+ call ism_alert (alert, "", "")
+ IMG_LINEAR(img) = YES
+ }
+
+
+ # See if we can find a bad pixel mask.
+ IMG_BPM(img) = NULL
+ if (WP_BPM(wp) == YES) {
+ iferr (IMG_BPM(img) = ds_pmmap ("BPM", IMG_IM(img)))
+ IMG_BPM(img) = NULL
+ }
+
+ C_OBJID(cp) = objid
+ C_REGID(cp) = regid
+ C_NREF(cp) = C_NREF(cp) + 1
+ call strcpy (ref, C_REF(cp), 128)
+end
+
+
+# IMG_UNCACHE -- Uncache an image in the object cache.
+
+procedure img_uncache (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img
+
+begin
+ if (IMG_DEBUG) call printf ("img_uncache: \n")
+
+ C_OBJID(cp) = NULL
+ C_NREF(cp) = 0
+ call strcpy ("", C_REF(cp), SZ_FNAME)
+
+ img = C_DATA(cp)
+ if (IMG_MW(img) != NULL)
+ call mw_close (IMG_MW(img))
+ if (IMG_BPM(img) != NULL)
+ call imunmap (IMG_BPM(img))
+ if (IMG_IM(img) != NULL)
+ call imunmap (IMG_IM(img))
+
+ IMG_IM(img) = NULL
+ IMG_BPM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = NO
+
+ call mfree (C_DATA(cp), TY_STRUCT)
+ C_DATA(cp) = NULL
+end
+
+
+# IMG_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs. Message is returned as something like:
+#
+# set value {
+# { object <objid> } { region <regionid> }
+# { pixval <pixel_value> [<units>] }
+# { bpm <bpm_pixel_value> }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# :
+# }
+
+
+procedure img_wcstran (cp, id, x, y)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+
+pointer img, im, wp, co
+double dx, dy, wx, wy
+real rx, ry, pixval
+int i, bpm
+
+# Use static storage to avoid allocation overhead.
+char buf[SZ_LINE]
+char msg[SZ_LINE], wcs[LEN_WCSNAME], xc[LEN_WCSNAME], yc[LEN_WCSNAME]
+char xunits[LEN_WCSNAME], yunits[LEN_WCSNAME]
+
+double sk_statd()
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcstran: \n")
+
+ img = C_DATA(cp) # initialize
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+
+ # Get the translation to the image section.
+ dx = (double(x) - sk_statd(co,S_VXOFF)) / sk_statd(co,S_VXSTEP)
+ dy = (double(y) - sk_statd(co,S_VYOFF)) / sk_statd(co,S_VYSTEP)
+ rx = dx
+ ry = dy
+
+ # Read the pixel data.
+ call img_get_data (cp, id, rx, ry, pixval, bpm)
+
+ # Begin formatting the message.
+ call aclrc (msg, SZ_LINE)
+ call sprintf (msg, SZ_LINE, "wcstran { object %d } { region %d } ")
+ call pargi (C_OBJID(cp))
+ call pargi (C_REGID(cp))
+
+ call sprintf (buf, SZ_LINE, "{ pixval %9.9g } { bpm %d }\n")
+ call pargr (pixval)
+ call pargi (bpm)
+ call strcat (buf, msg, SZ_LINE)
+
+ # Now loop over the requested systems and generate a coordinate
+ # for each.
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+
+ # Get the coordinate value.
+ call img_get_coord (img, dx, dy, SYSTEMS(wp,i), WCSNAME(wp,i),
+ wx, wy)
+
+ # Get the system name, labels, and formats strings for the WCS.
+ call img_coord_labels (cp, i, wcs, xunits, yunits)
+
+ # Format the values as requested.
+ call img_coord_fmt (cp, i, wx, wy, xc, yc)
+
+ # Format the coord buffer and append it to the message.
+ call sprintf (buf, SZ_LINE,
+ "{coord {%9s} {%12s} {%12s} {%4s} {%4s}}\n")
+ call pargstr (wcs)
+ call pargstr (xc)
+ call pargstr (yc)
+ call pargstr (xunits)
+ call pargstr (yunits)
+ call strcat (buf, msg, SZ_LINE)
+ }
+
+ # Now send the completed message.
+ call wcspix_message (msg);
+end
+
+
+# IMG_WCSLIST -- List the WCSs available for the given image.
+
+procedure img_wcslist (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img, im, mw
+char msg[SZ_LINE]
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcslist: \n")
+
+ img = C_DATA(cp) # initialize
+ mw = IMG_MW(img)
+ im = IMG_IM(img)
+
+ call strcpy ("wcslist {None Display Logical World Physical line ",
+ msg, SZ_LINE)
+
+ # See if we can do amplifier/detector coords by checking for ATM/ATV
+ # and DTM/DTV keywords.
+
+ if (IMG_CTA(img) != NULL)
+ call strcat (" Amplifier ", msg, SZ_LINE)
+ if (IMG_CTD(img) != NULL)
+ call strcat (" Detector ", msg, SZ_LINE)
+ if (IMG_CTA(img) != NULL || IMG_CTD(img) != NULL)
+ call strcat (" CCD ", msg, SZ_LINE)
+
+ # If we have a MWCS pointer list the sky projections.
+ if (mw != NULL) {
+ call strcat (" line ", msg, SZ_LINE)
+ call strcat (SKYPROJ, msg, SZ_LINE)
+ }
+
+ # Close the message.
+ call strcat ("}", msg, SZ_LINE)
+
+ call wcspix_message (msg)
+end
+
+
+# IMG_GET_DATA -- Get data from the image.
+
+procedure img_get_data (cp, id, x, y, pixval, bpm_pix)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+real pixval #o central pixel value
+int bpm_pix #o bad pixel mask value
+
+pointer img, wp, im, bpm, pix, sp, msg, buf
+int nl, nc, ix, iy, s2
+int size, x1, x2, y1, y2
+
+long clktime()
+pointer imgs2r(), imgs2i(), ds_pmmap()
+errchk ds_pmmap
+
+begin
+
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+ bpm = IMG_BPM(img)
+ nc = IM_LEN(im,1)
+ nl = IM_LEN(im,2)
+# size = WP_PTABSZ(wp)
+ size = min(min(nc,nl),WP_PTABSZ(wp))
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: \n")
+ call eprintf ("\tx: %g y: %g nc: %d nl: %d\n")
+ call pargr(x); call pargr(y); call pargi(nc); call pargi(nl)
+ }
+
+ # Sanity check on the cursor image position.
+ if (x < 0.0 || y < 0.0 || x > (nc+0.5) || y > (nl+0.5))
+ return
+
+ # Bounds checking. Rather than deal with out of bounds pixels we'll
+ # adjust the center pixel so we get the same size raster up to each
+ # boundary.
+
+ ix = int (x + 0.5) ; iy = int (y + 0.5)
+ ix = min (ix, (nc-(size/2)-1)) ; iy = min (iy, (nl-(size/2)-1))
+ ix = max (size/2+1, ix) ; iy = max (size/2+1, iy)
+
+ # Compute the box offset given the center and size.
+ x1 = ix - size / 2 + 0.5
+ x2 = ix + size / 2 + 0.5
+ y1 = iy - size / 2 + 0.5
+ y2 = iy + size / 2 + 0.5
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: \n")
+ call eprintf ("\tix: %d iy: %g size: %d\n")
+ call pargi(ix); call pargi(iy); call pargi(size)
+ call eprintf ("\tx1: %d y1: %d x2: %d y2: %d\n")
+ call pargi(x1); call pargi(y1);
+ call pargi(x2); call pargi(y2);
+ }
+
+ x1 = max (1, x1)
+ x2 = min (nc, x2)
+ y1 = max (1, y1)
+ y2 = min (nl, y2)
+
+ if (IMG_DEBUG) {
+ call eprintf ("\tx1: %d y1: %d x2: %d y2: %d\n")
+ call pargi(x1); call pargi(y1);
+ call pargi(x2); call pargi(y2);
+ }
+
+ # Get the image pixels
+ pix = imgs2r (im, int(x1), int(x2), int(y1), int(y2))
+
+ if (WP_BPM(wp) == YES) {
+ if (bpm != NULL) {
+ bpm_pix = Memi[imgs2i (bpm, ix, ix, iy, iy)]
+ } else {
+ # See if we can find a bad pixel mask. The option is enabled
+ # but we haven't mappend the mask yet.
+
+ # Log the event.
+ call smark (sp)
+ call salloc (msg, SZ_LINE, TY_CHAR)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call wp_cnvdate (clktime(0), Memc[buf], SZ_DATE)
+ call sprintf (Memc[msg], SZ_LINE,
+ "info { %s: WCSPIX BPM map objid=%3d %s}\n")
+ call pargstr (Memc[buf])
+ call pargi (C_OBJID(cp))
+ call pargstr (C_REF(cp))
+ call ism_message ("ism_msg", Memc[msg])
+
+ iferr (IMG_BPM(img) = ds_pmmap ("BPM", im)) {
+ IMG_BPM(img) = NULL
+ bpm_pix = 0
+
+ # Send alert to the GUI.
+ call sprintf (Memc[buf], SZ_FNAME,
+ "Unable to map BPM image for\n%s")
+ call pargstr (C_REF(cp))
+ call ism_alert (Memc[buf], "", "")
+ } else
+ bpm_pix = Memi[imgs2i (IMG_BPM(img), ix, ix, iy, iy)]
+
+ call sfree (sp)
+ }
+ } else
+ bpm_pix = 0
+
+ # See if we're near an edge...
+ s2 = size / 2
+ if (int(x)<s2 || int(x)>(nl-s2-1) || int(y)<s2 || int(x)>(nc-s2-1)) {
+ # Compute the image pixel associated with the requested coords.
+ ix = int (x + 0.5)
+ iy = int (y + 0.5)
+ pixval = Memr[imgs2r(im, ix, ix, iy, iy)]
+ } else {
+ pixval = Memr[pix + ((size/2)*size) + (size/2)]
+ }
+
+ # Send the pixel table.
+ if (WP_PTABSZ(wp) > 1)
+ call img_send_pixtab (Memr[pix], WP_PTABSZ(wp), x1, x2, y1, y2)
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: pixval=%g\n") ; call pargr (pixval)
+ }
+end
+
+
+# IMG_OBJINFO -- Get header information from the image.
+
+procedure img_objinfo (cp, id, template)
+
+pointer cp #i cache pointer
+int id #i image id
+char template[ARB] #i keyword template
+
+pointer im, img
+
+define WCS_TEMPLATE "WCSDIM,CTYPE*,CRPIX*,CRVAL*,CD*,CROTA2,LTV*,LTM*,WSV*,WAT*,RA*,DEC*,EQUINOX,EPOCH,MJD*,DATE-OBS"
+
+begin
+ if (IMG_DEBUG) call printf ("img_objinfo: \n")
+
+ # Send the full header (or keyword filtered header), only the WCS
+ # keywords, and a plain-text explanation of the WCS.
+
+ img = C_DATA(cp)
+ im = IMG_IM(img)
+
+ call img_send_header (im, "imghdr", template)
+ call img_send_header (im, "wcshdr", WCS_TEMPLATE)
+ call img_send_wcsinfo (im, cp)
+ call img_send_compass (im, cp)
+end
+
+
+
+#==============================================================================
+
+# IMG_SEND_HEADER -- Send an image header to the named GUI object. Keywords
+# are filtered according to a specified template
+
+procedure img_send_header (im, object, template)
+
+pointer im #i image descriptor
+char object[ARB] #i object for the message
+char template[ARB] #i keyword template
+
+pointer sp, hdr, lbuf, line, field, keyw, dict
+pointer ip, lp, list
+int nlines, in, out, i, hdr_size
+bool keyw_filter
+
+int stropen(), getline(), stridx(), imgnfn(), strdic()
+pointer imofnlu()
+bool streq()
+errchk stropen, getline, putci, putline, imgnfn, imofnlu, strdic
+
+define USER_AREA Memc[($1+IMU-1)*SZ_STRUCT + 1]
+define SZ_KEYW 8
+
+begin
+ hdr_size = (LEN_IMDES + IM_LENHDRMEM(im) - IMU) * SZ_STRUCT - 1
+ hdr_size = hdr_size + SZ_LINE
+
+ call smark (sp)
+ call salloc (hdr, hdr_size, TY_CHAR)
+ call salloc (dict, hdr_size, TY_CHAR)
+ call salloc (field, SZ_LINE, TY_CHAR)
+ call salloc (lbuf, SZ_LINE, TY_CHAR)
+ call salloc (line, SZ_LINE, TY_CHAR)
+ call salloc (keyw, SZ_KEYW, TY_CHAR)
+
+ in = stropen (USER_AREA(im), hdr_size, READ_ONLY)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+
+ # Build up a dictionary of header keywords based on the template.
+ keyw_filter = (!streq (template, "*"))
+ if (keyw_filter) {
+ list = imofnlu (im, template)
+ call strcpy ("|", Memc[dict], hdr_size)
+ while (imgnfn (list, Memc[field], SZ_FNAME) != EOF) {
+ call strcat (Memc[field], Memc[dict], hdr_size)
+ call strcat ("|", Memc[dict], hdr_size)
+ }
+ call imcfnl (list)
+ }
+
+
+ # Copy header records to the output, stripping any trailing
+ # whitespace and clipping at the right margin. We also filter
+ # against the keyword dictionary found above.
+
+ nlines = 0
+ while (getline (in, Memc[lbuf]) != EOF) {
+
+ call aclrc (Memc[line], SZ_LINE)
+
+ # Escape any brackets passed to the Tcl.
+ ip = lbuf
+ lp = line
+ while (Memc[ip] != EOS && Memc[ip] != '\n') {
+ if (stridx (Memc[ip], "[{") > 0) {
+ Memc[lp] = '\\'
+ lp = lp + 1
+ }
+ Memc[lp] = Memc[ip]
+ ip = ip + 1
+ lp = lp + 1
+ }
+ Memc[lp] = '\n'
+ Memc[lp+1] = EOS
+
+ # See whether the line matches a keyword we want to output.
+ if (keyw_filter) {
+ for (i=0; i < SZ_KEYW && !IS_WHITE(Memc[line+i]); i=i+1)
+ Memc[keyw+i] = Memc[line+i]
+ Memc[keyw+i] = '\0'
+
+ # If not in the dictionary skip to the next line.
+ if (strdic (Memc[keyw], Memc[keyw], SZ_KEYW, Memc[dict]) == 0)
+ next
+ }
+
+ call putci (out, ' ')
+ call putline (out, Memc[line])
+
+ # Send the header in small chunks so we don't overflow the
+ # message buffer.
+ nlines = nlines + 1
+ if (mod(nlines,10) == 0) {
+ call fprintf (out, "}")
+ call close (out)
+ call wcspix_message (Memc[hdr]);
+ call aclrc (Memc[hdr], hdr_size)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+ }
+ }
+ call fprintf (out, "}")
+
+ call close (in)
+ call close (out)
+
+ # Send the final message.
+ call wcspix_message (Memc[hdr])
+
+ # Pad a few lines for the GUI
+ call sprintf (Memc[hdr], SZ_LINE, "%d { \n\n\n }")
+ call pargstr (object)
+ call wcspix_message (Memc[hdr])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_COMPASS -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_compass (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, buf, img, co, mw
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+int i, j
+long axis[IM_MAXDIM], lv[IM_MAXDIM], pv1[IM_MAXDIM], pv2[IM_MAXDIM]
+
+real north[2], east[2]
+
+int mw_stati(), sk_stati()
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call aclrc (Memc[buf], SZ_LINE)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+ co = IMG_CO(img)
+
+ # Get world coords at the image corners.
+ if (IMG_CTW(img) != NULL) {
+
+ # Get the CD matrix for the image.
+ mw = IMG_MW(img)
+ call wcs_gfterm (mw, r, w, cd, mw_stati(mw, MW_NPHYSDIM))
+
+ # Compute a Nort and East vector for the CD matrix.
+ call img_cvectors (cd, 1.0, north, east)
+
+ } else {
+ # Determine the logical to physical mapping by evaluating two
+ # points and determining the axis reduction if any. pv1 will be
+ # the offset and pv2-pv1 will be the scale.
+
+ lv[1] = 0; lv[2] = 0; call imaplv (im, lv, pv1, 2)
+ lv[1] = 1; lv[2] = 1; call imaplv (im, lv, pv2, 2)
+
+ i = 1
+ axis[1] = 1; axis[2] = 2
+ do j = 1, IM_MAXDIM {
+ if (pv1[j] != pv2[j]) {
+ axis[i] = j
+ i = i + 1
+ }
+ }
+ north[1] = 0.0
+ north[2] = (pv2[axis[2]] - pv1[axis[2]])
+ east[1] = -(pv2[axis[1]] - pv1[axis[1]])
+ east[2] = 0.0
+ }
+
+ call sprintf (Memc[buf], SZ_LINE, "compass %d %g %g %g %g %g %d %s\0")
+ call pargi (C_OBJID(cp))
+ call pargr (IMG_ROT(img))
+ call pargr (north[1])
+ call pargr (north[2])
+ call pargr (east[1])
+ call pargr (east[2])
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX))
+ call pargi (1) # transposed image
+ else
+ call pargi (0)
+ if (IMG_MW(img) != NULL)
+ call pargstr ("E N")
+ else
+ call pargstr ("X Y")
+
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_CVECTORS -- Get north and east vectors for the compass
+
+procedure img_cvectors (cd, length, north, east)
+
+double cd[2,2] #i CD matrix
+real length #i length of vectors
+real north[2] #o vector pointing north
+real east[2] #o vector pointing east
+
+double d # determinant of CD matrix
+double x, y # scratch for vector components
+double l # length of a vector
+
+begin
+ d = cd[1,1] * cd[2,2] - cd[1,2] * cd[2,1]
+ if (d == 0.d0)
+ call error (1, "CD matrix is singular")
+
+ # North.
+ x = -cd[1,2] / d
+ y = cd[1,1] / d
+
+ # Normalize by the length and copy to output.
+ l = sqrt (x**2 + y**2)
+ north[1] = x * length / l
+ north[2] = y * length / l
+
+ # East.
+ x = cd[2,2] / d
+ y = -cd[2,1] / d
+ l = sqrt (x**2 + y**2)
+ east[1] = x * length / l
+ east[2] = y * length / l
+end
+
+
+# IMG_SEND_WCSINFO -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_wcsinfo (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, co, img, mw
+pointer buf, proj, radecstr
+int fd, radecsys, ctype, wtype, ndim
+double crpix1, crpix2, crval1, crval2, cval1, cval2
+double xscale, yscale, xrot, yrot
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM],
+
+int idxstr(), sk_stati(), stropen(), mw_stati()
+double sk_statd(), sl_epj(), sl_epb()
+bool fp_equald()
+
+errchk stropen
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ # Open a string on a file.
+ fd = stropen (Memc[buf], SZ_LINE, WRITE_ONLY)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+
+ # Get the coordinate transform descriptor.
+ co = IMG_CO(img)
+ radecsys = sk_stati (co, S_RADECSYS)
+ ctype = sk_stati (co, S_CTYPE)
+ wtype = sk_stati (co, S_WTYPE)
+
+ mw = IMG_MW(img)
+ if (mw != NULL) {
+ # Now get the mwcs Rterm (CRPIXi), Wterm (CRVALi), and CD matrix.
+ ndim = mw_stati (mw, MW_NPHYSDIM)
+ call wcs_gfterm (mw, r, w, cd, ndim)
+ crpix1 = r[1]
+ crpix2 = r[2]
+ crval1 = w[1]
+ crval2 = w[2]
+
+ xscale = sqrt (cd[1,1]**2 + cd[2,1]**2) * 3600.0d0
+ yscale = sqrt (cd[1,2]**2 + cd[2,2]**2) * 3600.0d0
+ xrot = 0.0
+ yrot = 0.0
+ if (!fp_equald (cd[1,1], 0.0d0))
+ xrot = DRADTODEG(atan ( cd[2,1] / cd[1,1]))
+ if (!fp_equald (cd[2,2], 0.0d0))
+ yrot = DRADTODEG(atan (-cd[1,2] / cd[2,2]))
+ } else {
+ ndim = 2
+ xscale = 1.0
+ yscale = 1.0
+ xrot = 0.0
+ yrot = 0.0
+ }
+
+ if (IMG_DEBUG) {
+ call printf("WCS Info:\n=========\n")
+ call printf("R term: %g %g\n"); call pargd(r[1]); call pargd(r[2])
+ call printf("W term: %g %g\n"); call pargd(w[1]); call pargd(w[2])
+ call printf(" cd: %g %g\n %g %g\n")
+ call pargd(cd[1,1]); call pargd(cd[1,2])
+ call pargd(cd[2,1]); call pargd(cd[2,2])
+ call printf(" scale: %g %g\n");call pargd(xscale);call pargd(yscale)
+ call printf(" rot: %g %g\n");call pargd(xrot);call pargd(yrot)
+ }
+
+ IMG_SCALE(img) = (xscale + yscale) / 2.0d0
+ #IMG_ROT(img) = (xrot + yrot) / 2.0d0
+ IMG_ROT(img) = xrot
+
+
+ # Now format a WCS text panel such as
+ #
+ # Projection: TAN System: Equatorial FK5
+ # Ra/Dec axes: 1/2 Dimensions: 512 x 512
+ #
+ # Center Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Reference Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Ref pixel coord: X: 250.256 Y: 266.309
+ # Plate Scale: 0.765194 Rot Angle: 1.02939
+ # Equinox: J2000.000 Epoch: J1987.25775240
+ # MJD: 46890.39406
+
+ # Get some preliminary values.
+ if (idxstr (radecsys, Memc[radecstr], SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+
+ if (idxstr (wtype, Memc[proj], SZ_FNAME, WTYPE_LIST) <= 0)
+ call strcpy ("logical", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+
+ call fprintf (fd, "wcsinfo {\n")
+
+ call fprintf (fd,
+ " Projection: %-6s\t System: %s %s\n")
+ call pargstr (Memc[proj])
+ switch (ctype) {
+ case CTYPE_EQUATORIAL:
+ call pargstr ("Equatorial")
+ call pargstr (Memc[radecstr])
+ case CTYPE_ECLIPTIC:
+ call pargstr ("Ecliptic")
+ call pargstr ("")
+ case CTYPE_GALACTIC:
+ call pargstr ("Galactic")
+ call pargstr ("")
+ case CTYPE_SUPERGALACTIC:
+ call pargstr ("SuperGalactic")
+ call pargstr ("")
+ default:
+ call pargstr ("Linear")
+ call pargstr ("")
+ }
+
+ call fprintf (fd, " Ra/Dec axes: %d/%d")
+ call pargi (sk_stati (co, S_PLNGAX))
+ call pargi (sk_stati (co, S_PLATAX))
+ call fprintf (fd, " Dimensions: %d x %d\n\n")
+ call pargi (IM_LEN(im,1))
+ call pargi (IM_LEN(im,2))
+
+ call fprintf (fd,
+ " Center Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (cval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (cval2)
+
+ call fprintf (fd,
+ " Reference Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (crval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (crval2)
+
+ call fprintf (fd,
+ " Reference Pixel: X: %-9.4f Y: %-9.4f\n")
+ call pargd (crpix1)
+ call pargd (crpix2)
+
+ call fprintf (fd,
+ " Plate Scale: %-8f Rot Angle: %-8f\n")
+ call pargr (IMG_SCALE(img))
+ call pargr (IMG_ROT(img))
+
+ call fprintf (fd,
+ " Equinox: %s%8f Epoch: %s%.6f\n")
+ switch (radecsys) {
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call pargstr ("J") ; call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("J") ; call pargd (sl_epj(sk_statd(co,S_EPOCH)))
+ default:
+ if (IMG_LINEAR(img) == YES) {
+ call pargstr (" ") ; call pargd (INDEFD)
+ call pargstr (" ") ; call pargd (INDEFD)
+ } else {
+ call pargstr ("B")
+ call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("B")
+ call pargd (sl_epb(sk_statd(co,S_EPOCH)))
+ }
+ }
+
+ call fprintf (fd, " MJD: %.6f\n")
+ call pargd (sk_statd(co,S_EPOCH))
+
+ call fprintf (fd, "}\n \n \n")
+
+ # Close the formatted string and send the message.
+ call close (fd)
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_PIXTAB -- Send a 'pixtab' message. Format of the message is
+#
+# pixtab {
+# { {pix} {pix} ... } # pixel table values
+# { {x1} {x2} ... } # column label values
+# { {y1} {y2} ... } # row label values
+# { <mean> <stdev> } # pixtab statistics
+# }
+#
+
+procedure img_send_pixtab (pixtab, size, x1, x2, y1, y2)
+
+real pixtab[ARB] #i pixtab array
+int size #i pixtab size
+int x1, x2, y1, y2 #i raster boundaries
+
+pointer sp, buf, el
+int i, j, npix
+real pix, sum, sum2, mean, var, stdev, x, y
+
+define SZ_PIXTAB (6*SZ_LINE)
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_PIXTAB, TY_CHAR)
+ call salloc (el, SZ_FNAME, TY_CHAR)
+
+ # Begin the pixtab message.
+ call strcpy ("pixtab {\n{\ntable {\n", Memc[buf], SZ_PIXTAB)
+
+ # Format the pixels into a table for presentation. Do the y-flip
+ # here so the pixels are in order for the List widget in the GUI.
+ # Accumulate the pixel statistics so we don't have to do it in the
+ # GUI where it's slower.
+
+ sum = 0.0
+ sum2 = 0.0
+ npix = size * size
+
+ for (i=size - 1; i >= 0; i=i-1) {
+ for (j=1; j <= size; j=j+1) {
+ pix = pixtab[(i * size) + j]
+ sum = sum + pix
+ sum2 = sum2 + (pix * pix)
+
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (pix)
+
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("\n", Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Do the row and column label parts of the message.
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (x = x1; x <= x2; x = x + 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (x)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (y = y2; y >= y1; y = y - 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (y)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Compute the statistics for the raster.
+ mean = sum / real(npix)
+ var = (sum2 - sum * mean) / real(npix - 1)
+ if (var <= 0)
+ stdev = 0.0
+ else
+ stdev = sqrt (var)
+
+ call sprintf (Memc[el], SZ_FNAME, " { %10.2f %10.4f }\n")
+ call pargr (mean)
+ call pargr (stdev)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+
+
+ # Close the message.
+ call strcat ("}", Memc[buf], SZ_PIXTAB)
+
+ if (IMG_DEBUG) {
+ call eprintf ("pixtab: %s\n");call pargstr(Memc[buf])
+ }
+
+ # Send the formatted message.
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_AMP_WCS -- Create a WCS transformation for the amplifier coordinates.
+
+pointer procedure img_amp_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "ATV1")
+ w[2] = imgetd (im, "ATV2")
+ cd[1,1] = imgetd (im, "ATM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "ATM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "amplifier", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "amplifier", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_DET_WCS -- Create a WCS transformation for the detector coordinates.
+
+pointer procedure img_det_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "DTV1")
+ w[2] = imgetd (im, "DTV2")
+ cd[1,1] = imgetd (im, "DTM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "DTM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "detector", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "detector", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_COORD_LABELS -- Get the WCS name, coord labels and format strings for
+# the specified object.
+
+procedure img_coord_labels (cp, line, wcsname, xunits, yunits)
+
+pointer cp #i cache pointer
+pointer line #i WCS output line
+char wcsname[ARB] #o WCS name string
+char xunits[ARB], yunits[ARB] #o WCS coord labels
+
+pointer img, co, wp
+pointer sp, proj, radecstr
+
+int strcmp(), sk_stati(), idxstr()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+ if (SYSTEMS(wp,line) == SYS_WORLD) {
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL:
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ case CTYPE_ECLIPTIC:
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ case CTYPE_GALACTIC:
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ case CTYPE_SUPERGALACTIC:
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ }
+ } else if (SYSTEMS(wp,line) == SYS_SKY) {
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+ call strlwr (wcsname)
+ if (strcmp (wcsname,"ecliptic") == 0) {
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"galactic") == 0) {
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"supergalactic") == 0) {
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ } else {
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ }
+ } else {
+ call strcpy ("X", xunits, LEN_WCSNAME)
+ call strcpy ("Y", yunits, LEN_WCSNAME)
+ }
+
+
+ # Now get the format strings. For systems other than the image
+ # default just use the WCS string as the name, otherwise format a
+ # string giving more information about the system.
+ if (SYSTEMS(wp,line) != SYS_WORLD)
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+
+ else {
+ call smark (sp)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+
+ call sprintf (wcsname, LEN_WCSNAME, "%s-%s-%s")
+
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL: call pargstr ("EQ")
+ case CTYPE_ECLIPTIC: call pargstr ("ECL")
+ case CTYPE_GALACTIC: call pargstr ("GAL")
+ case CTYPE_SUPERGALACTIC: call pargstr ("SGAL")
+ default: call pargstr ("UNKN")
+ }
+
+ if (sk_stati(co,S_CTYPE) == CTYPE_EQUATORIAL) {
+ if (idxstr(sk_stati(co,S_RADECSYS), Memc[radecstr],
+ SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call pargstr (Memc[radecstr])
+ } else {
+ if (sk_stati(co,S_CTYPE) == CTYPE_SUPERGALACTIC)
+ call pargstr ("-")
+ else
+ call pargstr ("--")
+ }
+
+ if (idxstr(sk_stati(co,S_WTYPE), Memc[proj], SZ_FNAME,
+ WTYPE_LIST) <= 0)
+ call strcpy ("linear", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+ call pargstr (Memc[proj])
+
+ call sfree (sp)
+ }
+
+ # Now fix up the WCS system name.
+ if (strcmp (wcsname, "fk4") == 0 ||
+ strcmp (wcsname, "fk5") == 0 ||
+ strcmp (wcsname, "icrs") == 0 ||
+ strcmp (wcsname, "gappt") == 0 ||
+ strcmp (wcsname, "fk4-no-e") == 0) {
+ call strupr (wcsname)
+
+ } else if (IS_LOWER(wcsname[1]))
+ wcsname[1] = TO_UPPER(wcsname[1])
+end
+
+
+# IMG_COORD_FMT -- Format the coordinate strings.
+
+procedure img_coord_fmt (cp, line, xval, yval, xc, yc)
+
+pointer cp #i object cache pointer
+int line #i output line number
+double xval, yval #i input coords
+char xc[ARB], yc[ARB] #o formatted coord strings
+
+pointer img, co, wp
+char xfmt[LEN_WCSNAME], yfmt[LEN_WCSNAME]
+int ctype
+
+int sk_stati()
+bool streq()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+
+ ctype = sk_stati (co, S_CTYPE)
+
+ # Convert coords to the requested format.
+ if (FORMATS(wp,line) == FMT_DEFAULT) {
+ if (IMG_MW(img) == NULL) {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ } else {
+ if (SYSTEMS(wp,line) == SYS_WORLD ||
+ SYSTEMS(wp,line) == SYS_SKY) {
+
+ if (streq(WCSNAME(wp,line),"ecliptic") ||
+ streq(WCSNAME(wp,line),"galactic") ||
+ streq(WCSNAME(wp,line),"supergalactic"))
+ call strcpy ("%h", xfmt, LEN_WCSNAME)
+ else {
+ if (sk_stati(co, S_CTYPE) == CTYPE_EQUATORIAL)
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.2h", xfmt, LEN_WCSNAME)
+ }
+ call strcpy ("%.1h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+ }
+
+ } else if (FORMATS(wp,line) == FMT_HMS) {
+ if (sk_stati(co, S_CTYPE) == CTYPE_EQUATORIAL)
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.1h", xfmt, LEN_WCSNAME)
+ call strcpy ("%h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+
+ # Convert the value to the requested format
+ call sprintf (xc, LEN_WCSNAME, xfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (xval)
+ else
+ call pargd (DEGTORAD(xval))
+
+ call sprintf (yc, LEN_WCSNAME, yfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (yval)
+ else
+ call pargd (DEGTORAD(yval))
+end
+
+
+# IMG_GET_COORD -- Given an x,y position in the image return the coordinate in
+# the given system.
+
+procedure img_get_coord (img, x, y, system, wcsname, wx, wy)
+
+pointer img #i IMG struct pointer
+double x, y #i input image position
+int system #i coordinate system requested
+char wcsname[ARB] #i desired WCS name
+double wx, wy #o output coordinates
+
+double ox, oy, tmp
+real epoch
+pointer im, co, nco
+char buf[SZ_LINE]
+int stat
+
+real imgetr()
+int imaccf(), sk_stati(), sk_decwstr()
+bool streq()
+
+errchk imgetr
+
+begin
+ im = IMG_IM(img)
+ co = IMG_CO(img)
+
+ wx = x # fallback values
+ wy = y
+
+ switch (system) {
+ case SYS_NONE:
+ wx = x
+ wy = y
+ case SYS_DISPLAY:
+ call img_ltov (im, x, y, wx, wy)
+ #wx = x
+ #wy = y
+ case SYS_PHYSICAL:
+ if (IMG_CTP(img) != NULL)
+ call mw_c2trand (IMG_CTP(img), x, y, wx, wy)
+ case SYS_WORLD:
+ if (IMG_CTW(img) != NULL) {
+ call mw_c2trand (IMG_CTW(img), x, y, wx, wy)
+
+ # Check for transposed image.
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX)) {
+ tmp = wx
+ wx = wy
+ wy = tmp
+ }
+ }
+ case SYS_AMP:
+ if (IMG_CTA(img) != NULL)
+ call mw_c2trand (IMG_CTA(img), x, y, wx, wy)
+ case SYS_CCD:
+ if (IMG_CTD(img) != NULL)
+ call mw_c2trand (IMG_CTD(img), x, y, wx, wy)
+ case SYS_DETECTOR:
+ if (IMG_CTD(img) != NULL)
+ call mw_c2trand (IMG_CTD(img), x, y, wx, wy)
+ case SYS_SKY:
+ # Note Ecliptic/GAPPT coords need an epoch value.
+ if (imaccf (im, "EPOCH") == YES) {
+ epoch = imgetr (im, "EPOCH")
+ if (epoch == 0.0 || IS_INDEFR(epoch))
+ epoch = 1950.0
+ } else
+ epoch = 1950.0
+
+ if (streq (wcsname, "ecliptic") || streq (wcsname, "gappt")) {
+ call sprintf (buf, SZ_LINE, "%s %.1f")
+ if (streq (wcsname, "gappt"))
+ call pargstr ("apparent")
+ else
+ call pargstr (wcsname)
+ call pargr (epoch)
+ } else {
+ call sprintf (buf, SZ_LINE, "%s")
+ if (streq(wcsname,"gappt"))
+ call pargstr ("apparent")
+ else if (streq(wcsname,"fk4-no-e"))
+ call pargstr ("noefk4")
+ else
+ call pargstr (wcsname)
+ }
+
+ stat = sk_decwstr (buf, nco, co)
+ if (stat != ERR) {
+ if (IMG_CTW(img) != NULL)
+ call mw_c2trand (IMG_CTW(img), x, y, ox, oy)
+ call sk_lltran (co, nco, DEGTORAD(ox), DEGTORAD(oy),
+ INDEFD, INDEFD, 0.0d0, 0.0d0, wx, wy)
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX)) {
+ wx = RADTODEG(wy) # transposed image
+ wy = RADTODEG(wx)
+ } else {
+ wx = RADTODEG(wx) # regular image
+ wy = RADTODEG(wy)
+ }
+ } else {
+ wx = x
+ wy = y
+ }
+ case SYS_OTHER:
+ ; # TBD
+
+ default: # default coords
+ wx = x
+ wy = y
+ }
+end
+
+
+# IMG_LTOV -- Convert coordinate from the logical coordinate system to the
+# output coordinate system.
+
+procedure img_ltov (im, xin, yin, xout, yout)
+
+pointer im # the input image descriptor
+double xin # the input x coordinate
+double yin # the input y coordinate
+double xout # the output x coordinate
+double yout # the output y coordinate
+
+int index1, index2
+
+begin
+ index1 = IM_VMAP(im,1)
+ index2 = IM_VMAP(im,2)
+
+ xout = xin * IM_VSTEP(im,index1) + IM_VOFF(im,index1)
+ yout = yin * IM_VSTEP(im,index2) + IM_VOFF(im,index2)
+end
+
+
+# IMG_VTOL -- Convert coordinate from the tv coordinate system to the
+# logical coordinate system.
+
+procedure img_vtol (im, xin, yin, xout, yout)
+
+pointer im # the input image descriptor
+double xin # the input x coordinate
+double yin # the input y coordinate
+double xout # the output x coordinate
+double yout # the output y coordinate
+
+int index1, index2
+
+begin
+ index1 = IM_VMAP(im,1)
+ index2 = IM_VMAP(im,2)
+
+ xout = (xin - IM_VOFF(im,index1)) / IM_VSTEP(im,index1)
+ yout = (yin - IM_VOFF(im,index2)) / IM_VSTEP(im,index2)
+end
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x.bak b/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x.bak
new file mode 100644
index 00000000..87a12a39
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcimage.x.bak
@@ -0,0 +1,1515 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <math.h>
+include <imio.h>
+include <imhdr.h>
+include <time.h>
+include <ctype.h>
+include <mwset.h>
+include <pkg/skywcs.h>
+include "wcspix.h"
+
+
+# Image class data.
+define LEN_IMGDATA 15
+define IMG_WP Memi[$1 ] # wcspix back-pointer
+define IMG_IM Memi[$1+1] # image pointer
+define IMG_BPM Memi[$1+2] # bad pixel mask pointer
+define IMG_MW Memi[$1+3] # image wcs pointer
+define IMG_CO Memi[$1+4] # skywcs transform pointer
+define IMG_CTW Memi[$1+5] # mwcs log->world transform ptr
+define IMG_CTP Memi[$1+6] # mwcs log->phys transform ptr
+define IMG_CTA Memi[$1+7] # mwcs log->amplifier transform
+define IMG_CTD Memi[$1+8] # mwcs log->detector transform
+define IMG_ROT Memr[$1+9] # rotation angle
+define IMG_SCALE Memr[$1+10] # plate scale
+define IMG_LINEAR Memi[$1+11] # linear coords
+
+
+define IMG_DEBUG FALSE
+
+
+# IMG_INIT -- Initialize the object structure.
+
+procedure img_init (cp, wp)
+
+pointer cp #i cache pointer
+pointer wp #i WCSPIX structure
+
+pointer img # data pointer
+
+begin
+ if (IMG_DEBUG) call printf ("img_init: \n")
+
+ # Allocate the image data structure if not previously allocated.
+ if (C_DATA(cp) == NULL) {
+ iferr (call calloc (C_DATA(cp), LEN_IMGDATA, TY_STRUCT))
+ return
+ }
+
+ img = C_DATA(cp)
+ IMG_WP(img) = wp
+ IMG_IM(img) = NULL
+ IMG_BPM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = YES
+end
+
+
+# IMG_CACHE -- Cache an image in the object cache.
+
+procedure img_cache (cp, objid, regid, ref)
+
+pointer cp #i cache pointer
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object reference
+
+pointer img, im, wp, co
+int stat, i1, i2
+char alert[SZ_LINE]
+
+pointer immap(), ds_pmmap(), mw_sctran()
+pointer img_amp_wcs(), img_det_wcs()
+int imaccf(), sk_decim()
+
+errchk immap, ds_pmmap, mw_sctran, sk_decim, sk_setd
+
+begin
+ if (IMG_DEBUG) call printf ("img_cache: \n")
+
+ # Now map the image and WCS.
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+
+ iferr (IMG_IM(img) = immap (ref, READ_ONLY, 0)) {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to cache\n%s")
+ call pargstr (ref)
+ call ism_alert (alert, "", "")
+ return
+ }
+ im = IMG_IM(img)
+
+ IMG_CO(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ iferr {
+ stat = sk_decim (IMG_IM(img), "world", IMG_MW(img), IMG_CO(img))
+ if (IMG_DEBUG) {
+ call eprintf ("img_cache - decim: stat=%d mw=%d co=%d \n")
+ call pargi(stat);call pargi(IMG_MW(img))
+ call pargi(IMG_CO(img));
+ }
+ if (stat == ERR || IMG_MW(img) == NULL) {
+ IMG_LINEAR(img) = YES
+
+ co = IMG_CO(img)
+ i1 = IM_VMAP(im,1)
+ i2 = IM_VMAP(im,2)
+ call sk_setd (co, S_VXOFF, double(IM_VOFF(im,i1)))
+ call sk_setd (co, S_VYOFF, double(IM_VOFF(im,i2)))
+ call sk_setd (co, S_VXSTEP, double(IM_VSTEP(im,i1)))
+ call sk_setd (co, S_VYSTEP, double(IM_VSTEP(im,i2)))
+
+ IMG_MW(img) = NULL
+ IMG_LINEAR(img) = YES
+ }
+
+ if (IMG_MW(img) != NULL) {
+ IMG_CTW(img) = mw_sctran (IMG_MW(img), "logical", "world", 03B)
+ IMG_CTP(img) = mw_sctran (IMG_MW(img), "logical", "physical",
+ 03B)
+
+ # Get the amplifier transformation values if present.
+ if (imaccf(im,"ATM1_1") == YES &&
+ imaccf(im,"ATM2_2") == YES &&
+ imaccf(im,"ATV1") == YES &&
+ imaccf(im,"ATV2") == YES)
+ IMG_CTA(img) = img_amp_wcs (im, IMG_MW(img))
+
+ if (imaccf(im,"DTM1_1") == YES &&
+ imaccf(im,"DTM2_2") == YES &&
+ imaccf(im,"DTV1") == YES &&
+ imaccf(im,"DTV2") == YES)
+ IMG_CTD(img) = img_det_wcs (im, IMG_MW(img))
+ }
+
+ } then {
+ # Send alert to the GUI.
+ call sprintf (alert, SZ_FNAME, "Unable to decode image WCS\n%s")
+ call pargstr (ref)
+ call ism_alert (alert, "", "")
+ IMG_LINEAR(img) = YES
+ }
+
+
+ # See if we can find a bad pixel mask.
+ IMG_BPM(img) = NULL
+ if (WP_BPM(wp) == YES) {
+ iferr (IMG_BPM(img) = ds_pmmap ("BPM", IMG_IM(img)))
+ IMG_BPM(img) = NULL
+ }
+
+ C_OBJID(cp) = objid
+ C_REGID(cp) = regid
+ C_NREF(cp) = C_NREF(cp) + 1
+ call strcpy (ref, C_REF(cp), 128)
+end
+
+
+# IMG_UNCACHE -- Uncache an image in the object cache.
+
+procedure img_uncache (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img
+
+begin
+ if (IMG_DEBUG) call printf ("img_uncache: \n")
+
+ C_OBJID(cp) = NULL
+ C_NREF(cp) = 0
+ call strcpy ("", C_REF(cp), SZ_FNAME)
+
+ img = C_DATA(cp)
+ if (IMG_MW(img) != NULL)
+ call mw_close (IMG_MW(img))
+ if (IMG_BPM(img) != NULL)
+ call imunmap (IMG_BPM(img))
+ if (IMG_IM(img) != NULL)
+ call imunmap (IMG_IM(img))
+
+ IMG_IM(img) = NULL
+ IMG_BPM(img) = NULL
+ IMG_MW(img) = NULL
+ IMG_CTW(img) = NULL
+ IMG_CTP(img) = NULL
+ IMG_CTA(img) = NULL
+ IMG_CTD(img) = NULL
+ IMG_CO(img) = NULL
+ IMG_ROT(img) = 0.0
+ IMG_SCALE(img) = 0.0
+ IMG_LINEAR(img) = NO
+
+ call mfree (C_DATA(cp), TY_STRUCT)
+ C_DATA(cp) = NULL
+end
+
+
+# IMG_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs. Message is returned as something like:
+#
+# set value {
+# { object <objid> } { region <regionid> }
+# { pixval <pixel_value> [<units>] }
+# { bpm <bpm_pixel_value> }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# :
+# }
+
+
+procedure img_wcstran (cp, id, x, y)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+
+pointer img, im, wp, co
+double dx, dy, wx, wy
+real rx, ry, pixval
+int i, bpm
+
+# Use static storage to avoid allocation overhead.
+char buf[SZ_LINE]
+char msg[SZ_LINE], wcs[LEN_WCSNAME], xc[LEN_WCSNAME], yc[LEN_WCSNAME]
+char xunits[LEN_WCSNAME], yunits[LEN_WCSNAME]
+
+double sk_statd()
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcstran: \n")
+
+ img = C_DATA(cp) # initialize
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+
+ # Get the translation to the image section.
+ dx = (double(x) - sk_statd(co,S_VXOFF)) / sk_statd(co,S_VXSTEP)
+ dy = (double(y) - sk_statd(co,S_VYOFF)) / sk_statd(co,S_VYSTEP)
+ rx = dx
+ ry = dy
+
+ # Read the pixel data.
+ call img_get_data (cp, id, rx, ry, pixval, bpm)
+
+ # Begin formatting the message.
+ call aclrc (msg, SZ_LINE)
+ call sprintf (msg, SZ_LINE, "wcstran { object %d } { region %d } ")
+ call pargi (C_OBJID(cp))
+ call pargi (C_REGID(cp))
+
+ call sprintf (buf, SZ_LINE, "{ pixval %9.9g } { bpm %d }\n")
+ call pargr (pixval)
+ call pargi (bpm)
+ call strcat (buf, msg, SZ_LINE)
+
+ # Now loop over the requested systems and generate a coordinate
+ # for each.
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+
+ # Get the coordinate value.
+ call img_get_coord (img, dx, dy, SYSTEMS(wp,i), WCSNAME(wp,i),
+ wx, wy)
+
+ # Get the system name, labels, and formats strings for the WCS.
+ call img_coord_labels (cp, i, wcs, xunits, yunits)
+
+ # Format the values as requested.
+ call img_coord_fmt (cp, i, wx, wy, xc, yc)
+
+ # Format the coord buffer and append it to the message.
+ call sprintf (buf, SZ_LINE,
+ "{coord {%9s} {%12s} {%12s} {%4s} {%4s}}\n")
+ call pargstr (wcs)
+ call pargstr (xc)
+ call pargstr (yc)
+ call pargstr (xunits)
+ call pargstr (yunits)
+ call strcat (buf, msg, SZ_LINE)
+ }
+
+ # Now send the completed message.
+ call wcspix_message (msg);
+end
+
+
+# IMG_WCSLIST -- List the WCSs available for the given image.
+
+procedure img_wcslist (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+pointer img, im, mw
+char msg[SZ_LINE]
+
+begin
+ if (IMG_DEBUG) call printf ("img_wcslist: \n")
+
+ img = C_DATA(cp) # initialize
+ mw = IMG_MW(img)
+ im = IMG_IM(img)
+
+ call strcpy ("wcslist {None Display Logical World Physical line ",
+ msg, SZ_LINE)
+
+ # See if we can do amplifier/detector coords by checking for ATM/ATV
+ # and DTM/DTV keywords.
+
+ if (IMG_CTA(img) != NULL)
+ call strcat (" Amplifier ", msg, SZ_LINE)
+ if (IMG_CTD(img) != NULL)
+ call strcat (" Detector ", msg, SZ_LINE)
+ if (IMG_CTA(img) != NULL || IMG_CTD(img) != NULL)
+ call strcat (" CCD ", msg, SZ_LINE)
+
+ # If we have a MWCS pointer list the sky projections.
+ if (mw != NULL) {
+ call strcat (" line ", msg, SZ_LINE)
+ call strcat (SKYPROJ, msg, SZ_LINE)
+ }
+
+ # Close the message.
+ call strcat ("}", msg, SZ_LINE)
+
+ call wcspix_message (msg)
+end
+
+
+# IMG_GET_DATA -- Get data from the image.
+
+procedure img_get_data (cp, id, x, y, pixval, bpm_pix)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+real pixval #o central pixel value
+int bpm_pix #o bad pixel mask value
+
+pointer img, wp, im, bpm, pix, sp, msg, buf
+int nl, nc, ix, iy, s2
+int size, x1, x2, y1, y2
+
+long clktime()
+pointer imgs2r(), imgs2i(), ds_pmmap()
+errchk ds_pmmap
+
+begin
+
+ img = C_DATA(cp)
+ wp = IMG_WP(img)
+ im = IMG_IM(img)
+ bpm = IMG_BPM(img)
+ nc = IM_LEN(im,1)
+ nl = IM_LEN(im,2)
+# size = WP_PTABSZ(wp)
+ size = min(min(nc,nl),WP_PTABSZ(wp))
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: \n")
+ call eprintf ("\tx: %g y: %g nc: %d nl: %d\n")
+ call pargr(x); call pargr(y); call pargi(nc); call pargi(nl)
+ }
+
+ # Sanity check on the cursor image position.
+ if (x < 0.0 || y < 0.0 || x > (nc+0.5) || y > (nl+0.5))
+ return
+
+ # Bounds checking. Rather than deal with out of bounds pixels we'll
+ # adjust the center pixel so we get the same size raster up to each
+ # boundary.
+
+ ix = int (x + 0.5) ; iy = int (y + 0.5)
+ ix = min (ix, (nc-(size/2)-1)) ; iy = min (iy, (nl-(size/2)-1))
+ ix = max (size/2+1, ix) ; iy = max (size/2+1, iy)
+
+ # Compute the box offset given the center and size.
+ x1 = ix - size / 2 + 0.5
+ x2 = ix + size / 2 + 0.5
+ y1 = iy - size / 2 + 0.5
+ y2 = iy + size / 2 + 0.5
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: \n")
+ call eprintf ("\tix: %d iy: %g size: %d\n")
+ call pargi(ix); call pargi(iy); call pargi(size)
+ call eprintf ("\tx1: %d y1: %d x2: %d y2: %d\n")
+ call pargi(x1); call pargi(y1);
+ call pargi(x2); call pargi(y2);
+ }
+
+ x1 = max (1, x1)
+ x2 = min (nc, x2)
+ y1 = max (1, y1)
+ y2 = min (nl, y2)
+
+ if (IMG_DEBUG) {
+ call eprintf ("\tx1: %d y1: %d x2: %d y2: %d\n")
+ call pargi(x1); call pargi(y1);
+ call pargi(x2); call pargi(y2);
+ }
+
+ # Get the image pixels
+ pix = imgs2r (im, int(x1), int(x2), int(y1), int(y2))
+
+ if (WP_BPM(wp) == YES) {
+ if (bpm != NULL) {
+ bpm_pix = Memi[imgs2i (bpm, ix, ix, iy, iy)]
+ } else {
+ # See if we can find a bad pixel mask. The option is enabled
+ # but we haven't mappend the mask yet.
+
+ # Log the event.
+ call smark (sp)
+ call salloc (msg, SZ_LINE, TY_CHAR)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call wp_cnvdate (clktime(0), Memc[buf], SZ_DATE)
+ call sprintf (Memc[msg], SZ_LINE,
+ "info { %s: WCSPIX BPM map objid=%3d %s}\n")
+ call pargstr (Memc[buf])
+ call pargi (C_OBJID(cp))
+ call pargstr (C_REF(cp))
+ call ism_message ("ism_msg", Memc[msg])
+
+ iferr (IMG_BPM(img) = ds_pmmap ("BPM", im)) {
+ IMG_BPM(img) = NULL
+ bpm_pix = 0
+
+ # Send alert to the GUI.
+ call sprintf (Memc[buf], SZ_FNAME,
+ "Unable to map BPM image for\n%s")
+ call pargstr (C_REF(cp))
+ call ism_alert (Memc[buf], "", "")
+ } else
+ bpm_pix = Memi[imgs2i (IMG_BPM(img), ix, ix, iy, iy)]
+
+ call sfree (sp)
+ }
+ } else
+ bpm_pix = 0
+
+ # See if we're near an edge...
+ s2 = size / 2
+ if (int(x)<s2 || int(x)>(nl-s2-1) || int(y)<s2 || int(x)>(nc-s2-1)) {
+ # Compute the image pixel associated with the requested coords.
+ ix = int (x + 0.5)
+ iy = int (y + 0.5)
+ pixval = Memr[imgs2r(im, ix, ix, iy, iy)]
+ } else {
+ pixval = Memr[pix + ((size/2)*size) + (size/2)]
+ }
+
+ # Send the pixel table.
+ if (WP_PTABSZ(wp) > 1)
+ call img_send_pixtab (Memr[pix], WP_PTABSZ(wp), x1, x2, y1, y2)
+
+ if (IMG_DEBUG) {
+ call printf ("img_get_data: pixval=%g\n") ; call pargr (pixval)
+ }
+end
+
+
+# IMG_OBJINFO -- Get header information from the image.
+
+procedure img_objinfo (cp, id, template)
+
+pointer cp #i cache pointer
+int id #i image id
+char template[ARB] #i keyword template
+
+pointer im, img
+
+define WCS_TEMPLATE "WCSDIM,CTYPE*,CRPIX*,CRVAL*,CD*,CROTA2,LTV*,LTM*,WSV*,WAT*,RA*,DEC*,EQUINOX,EPOCH,MJD*,DATE-OBS"
+
+begin
+ if (IMG_DEBUG) call printf ("img_objinfo: \n")
+
+ # Send the full header (or keyword filtered header), only the WCS
+ # keywords, and a plain-text explanation of the WCS.
+
+ img = C_DATA(cp)
+ im = IMG_IM(img)
+
+ call img_send_header (im, "imghdr", template)
+ call img_send_header (im, "wcshdr", WCS_TEMPLATE)
+ call img_send_wcsinfo (im, cp)
+ call img_send_compass (im, cp)
+end
+
+
+
+#==============================================================================
+
+# IMG_SEND_HEADER -- Send an image header to the named GUI object. Keywords
+# are filtered according to a specified template
+
+procedure img_send_header (im, object, template)
+
+pointer im #i image descriptor
+char object[ARB] #i object for the message
+char template[ARB] #i keyword template
+
+pointer sp, hdr, lbuf, line, field, keyw, dict
+pointer ip, lp, list
+int nlines, in, out, i, hdr_size
+bool keyw_filter
+
+int stropen(), getline(), stridx(), imgnfn(), strdic()
+pointer imofnlu()
+bool streq()
+errchk stropen, getline, putci, putline, imgnfn, imofnlu, strdic
+
+define USER_AREA Memc[($1+IMU-1)*SZ_STRUCT + 1]
+define SZ_KEYW 8
+
+begin
+ hdr_size = (LEN_IMDES + IM_LENHDRMEM(im) - IMU) * SZ_STRUCT - 1
+ hdr_size = hdr_size + SZ_LINE
+
+ call smark (sp)
+ call salloc (hdr, hdr_size, TY_CHAR)
+ call salloc (dict, hdr_size, TY_CHAR)
+ call salloc (field, SZ_LINE, TY_CHAR)
+ call salloc (lbuf, SZ_LINE, TY_CHAR)
+ call salloc (line, SZ_LINE, TY_CHAR)
+ call salloc (keyw, SZ_KEYW, TY_CHAR)
+
+ in = stropen (USER_AREA(im), hdr_size, READ_ONLY)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+
+ # Build up a dictionary of header keywords based on the template.
+ keyw_filter = (!streq (template, "*"))
+ if (keyw_filter) {
+ list = imofnlu (im, template)
+ call strcpy ("|", Memc[dict], hdr_size)
+ while (imgnfn (list, Memc[field], SZ_FNAME) != EOF) {
+ call strcat (Memc[field], Memc[dict], hdr_size)
+ call strcat ("|", Memc[dict], hdr_size)
+ }
+ call imcfnl (list)
+ }
+
+
+ # Copy header records to the output, stripping any trailing
+ # whitespace and clipping at the right margin. We also filter
+ # against the keyword dictionary found above.
+
+ nlines = 0
+ while (getline (in, Memc[lbuf]) != EOF) {
+
+ call aclrc (Memc[line], SZ_LINE)
+
+ # Escape any brackets passed to the Tcl.
+ ip = lbuf
+ lp = line
+ while (Memc[ip] != EOS && Memc[ip] != '\n') {
+ if (stridx (Memc[ip], "[{") > 0) {
+ Memc[lp] = '\\'
+ lp = lp + 1
+ }
+ Memc[lp] = Memc[ip]
+ ip = ip + 1
+ lp = lp + 1
+ }
+ Memc[lp] = '\n'
+ Memc[lp+1] = EOS
+
+ # See whether the line matches a keyword we want to output.
+ if (keyw_filter) {
+ for (i=0; i < SZ_KEYW && !IS_WHITE(Memc[line+i]); i=i+1)
+ Memc[keyw+i] = Memc[line+i]
+ Memc[keyw+i] = '\0'
+
+ # If not in the dictionary skip to the next line.
+ if (strdic (Memc[keyw], Memc[keyw], SZ_KEYW, Memc[dict]) == 0)
+ next
+ }
+
+ call putci (out, ' ')
+ call putline (out, Memc[line])
+
+ # Send the header in small chunks so we don't overflow the
+ # message buffer.
+ nlines = nlines + 1
+ if (mod(nlines,10) == 0) {
+ call fprintf (out, "}")
+ call close (out)
+ call wcspix_message (Memc[hdr]);
+ call aclrc (Memc[hdr], hdr_size)
+ out = stropen (Memc[hdr], hdr_size, WRITE_ONLY)
+ call fprintf (out, "%s {")
+ call pargstr (object)
+ }
+ }
+ call fprintf (out, "}")
+
+ call close (in)
+ call close (out)
+
+ # Send the final message.
+ call wcspix_message (Memc[hdr])
+
+ # Pad a few lines for the GUI
+ call sprintf (Memc[hdr], SZ_LINE, "%d { \n\n\n }")
+ call pargstr (object)
+ call wcspix_message (Memc[hdr])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_COMPASS -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_compass (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, buf, img, co, mw
+double cx, cy, cx1, cy1, dx, dy, x1, y1
+double cosa, sina, angle
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+int i, j, comp_x, comp_y
+long axis[IM_MAXDIM], lv[IM_MAXDIM], pv1[IM_MAXDIM], pv2[IM_MAXDIM]
+bool fp_equalr()
+
+real length, north[2], east[2]
+
+int mw_stati(), sk_stati()
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call aclrc (Memc[buf], SZ_LINE)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+ co = IMG_CO(img)
+
+ # Get world coords at the image corners.
+ if (IMG_CTW(img) != NULL) {
+
+ if (fp_equalr(IMG_ROT(img),0.0))
+ angle = -IMG_ROT(img)
+ else if (IMG_ROT(img) > 0.0)
+ angle = -IMG_ROT(img)
+ else
+ angle = IMG_ROT(img) + 360.0
+ cosa = cos (DEGTORAD(angle))
+ sina = sin (DEGTORAD(angle))
+call eprintf ("compass: angle = %g sina=%g cosa=%g\n")
+call pargd(angle); call pargd(sina); call pargd(cosa)
+
+ # Image center position
+ cx = IM_LEN(im,1) / 2.0d0
+ cy = IM_LEN(im,2) / 2.0d0
+ call mw_c2trand (IMG_CTW(img), cx, cy, cx1, cy1)
+
+ # Extend a unit vector up from the center assuming it's North
+ # and rotate it by the wcs angle.
+ dx = cx + ( 10.0 * sina)
+ dy = cy + ( 10.0 * cosa)
+ call mw_c2trand (IMG_CTW(img), dx, dy, x1, y1)
+
+ # Check new point Y value relative to the center position.
+ if (y1 >= cy1)
+ comp_y = 1 # North is up
+ else
+ comp_y = -1 # North is down
+call eprintf ("compass: y1=%g cy1=%g \n");call pargd(y1);call pargd(cy1)
+
+ # Extend a unit vector left from the center assuming it's East
+ # and rotate it by the wcs angle.
+ dx = cx + (-10.0 * cosa)
+ dy = cy + ( 10.0 * sina)
+ call mw_c2trand (IMG_CTW(img), dx, dy, x1, y1)
+
+ # Check new point X value relative to the center position.
+ if (x1 >= cx1)
+ comp_x = 1 # East is left and we have a WCS
+ else
+ comp_x = -1 # East is right
+call eprintf ("compass: x1=%g cx1=%g \n");call pargd(x1);call pargd(cx1)
+
+#------------------------------
+# New compass algorithm
+#------------------------------
+
+ # Get the CD matrix for the image.
+ mw = IMG_MW(img)
+ call wcs_gfterm (mw, r, w, cd, mw_stati(mw, MW_NPHYSDIM))
+ call img_cvectors (cd, 1.0, north, east)
+
+ if (y1 >= 0.0)
+ comp_y = 1 # North is up
+ else
+ comp_y = -1 # North is down
+
+ if (x1 >= 0.0)
+ comp_x = 1 # East is left
+ else
+ comp_x = -1 # East is right
+
+ } else {
+ # Determine the logical to physical mapping by evaluating two
+ # points and determining the axis reduction if any. pv1 will be
+ # the offset and pv2-pv1 will be the scale.
+
+ lv[1] = 0; lv[2] = 0; call imaplv (im, lv, pv1, 2)
+ lv[1] = 1; lv[2] = 1; call imaplv (im, lv, pv2, 2)
+
+ i = 1
+ axis[1] = 1; axis[2] = 2
+ do j = 1, IM_MAXDIM {
+ if (pv1[j] != pv2[j]) {
+ axis[i] = j
+ i = i + 1
+ }
+ }
+ comp_x = - (pv2[axis[1]] - pv1[axis[1]])
+ comp_y = (pv2[axis[2]] - pv1[axis[2]])
+ }
+
+ call sprintf (Memc[buf], SZ_LINE, "compass %d %g %d %d %d %s\0")
+ call pargi (C_OBJID(cp))
+ call pargr (IMG_ROT(img))
+ call pargi (comp_x)
+ call pargi (comp_y)
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX))
+ call pargi (1) # transposed image
+ else
+ call pargi (0)
+ if (IMG_MW(img) != NULL)
+ call pargstr ("E N")
+ else
+ call pargstr ("X Y")
+call eprintf ("msg: '%s'\n");call pargstr(Memc[buf])
+
+ call wcspix_message (Memc[buf])
+ call sfree (sp)
+end
+
+
+# IMG_CVECTORS -- Get north and east vectors for the compass
+
+procedure img_cvectors (cd, length, north, east)
+
+double cd[2,2] #i CD matrix
+real length #i length of vectors
+real north[2] #o vector pointing north
+real east[2] #o vector pointing east
+
+double d # determinant of CD matrix
+double x, y # scratch for vector components
+double l # length of a vector
+
+begin
+ d = cd[1,1] * cd[2,2] - cd[1,2] * cd[2,1]
+ if (d == 0.d0)
+ call error (1, "CD matrix is singular")
+
+ # North.
+ x = -cd[1,2] / d
+ y = cd[1,1] / d
+
+ # Normalize by the length and copy to output.
+ l = sqrt (x**2 + y**2)
+ north[1] = x * length / l
+ north[2] = y * length / l
+
+ # East.
+ x = cd[2,2] / d
+ y = -cd[2,1] / d
+ l = sqrt (x**2 + y**2)
+ east[1] = x * length / l
+ east[2] = y * length / l
+
+call eprintf ("new: north (%g,%g) east (%g,%g)\n")
+call pargr(north[1]);call pargr(north[2])
+call pargr(east[1]) ;call pargr(east[2])
+end
+
+
+
+# IMG_SEND_WCSINFO -- Send information about the image WCS in a plain-english
+# string.
+
+procedure img_send_wcsinfo (im, cp)
+
+pointer im #i image descriptor
+pointer cp #i cache element pointer
+
+pointer sp, co, img, mw
+pointer buf, proj, radecstr
+int fd, radecsys, ctype, wtype, ndim
+double crpix1, crpix2, crval1, crval2, cval1, cval2
+double xscale, yscale, xrot, yrot
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM],
+
+int idxstr(), sk_stati(), stropen(), mw_stati()
+double sk_statd(), sl_epj(), sl_epb()
+bool fp_equald()
+
+errchk stropen
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+
+ # Open a string on a file.
+ fd = stropen (Memc[buf], SZ_LINE, WRITE_ONLY)
+
+ # Get the data pointer.
+ img = C_DATA(cp)
+
+ # Get the coordinate transform descriptor.
+ co = IMG_CO(img)
+ radecsys = sk_stati (co, S_RADECSYS)
+ ctype = sk_stati (co, S_CTYPE)
+ wtype = sk_stati (co, S_WTYPE)
+
+ mw = IMG_MW(img)
+ if (mw != NULL) {
+ # Now get the mwcs Rterm (CRPIXi), Wterm (CRVALi), and CD matrix.
+ ndim = mw_stati (mw, MW_NPHYSDIM)
+ call wcs_gfterm (mw, r, w, cd, ndim)
+ crpix1 = r[1]
+ crpix2 = r[2]
+ crval1 = w[1]
+ crval2 = w[2]
+
+ xscale = sqrt (cd[1,1]**2 + cd[2,1]**2) * 3600.0d0
+ yscale = sqrt (cd[1,2]**2 + cd[2,2]**2) * 3600.0d0
+ xrot = 0.0
+ yrot = 0.0
+ if (!fp_equald (cd[1,1], 0.0d0))
+ xrot = DRADTODEG(atan ( cd[2,1] / cd[1,1]))
+ if (!fp_equald (cd[2,2], 0.0d0))
+ yrot = DRADTODEG(atan (-cd[1,2] / cd[2,2]))
+ } else {
+ ndim = 2
+ xscale = 1.0
+ yscale = 1.0
+ xrot = 0.0
+ yrot = 0.0
+ }
+
+ if (IMG_DEBUG) {
+ call printf("WCS Info:\n=========\n")
+ call printf("R term: %g %g\n"); call pargd(r[1]); call pargd(r[2])
+ call printf("W term: %g %g\n"); call pargd(w[1]); call pargd(w[2])
+ call printf(" cd: %g %g\n %g %g\n")
+ call pargd(cd[1,1]); call pargd(cd[1,2])
+ call pargd(cd[2,1]); call pargd(cd[2,2])
+ call printf(" scale: %g %g\n");call pargd(xscale);call pargd(yscale)
+ call printf(" rot: %g %g\n");call pargd(xrot);call pargd(yrot)
+ }
+
+ IMG_SCALE(img) = (xscale + yscale) / 2.0d0
+ #IMG_ROT(img) = (xrot + yrot) / 2.0d0
+ IMG_ROT(img) = xrot
+
+
+ # Now format a WCS text panel such as
+ #
+ # Projection: TAN System: Equatorial FK5
+ # Ra/Dec axes: 1/2 Dimensions: 512 x 512
+ #
+ # Center Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Reference Pos: RA: 13:29:52.856 Dec: +47:11:40.39
+ # Ref pixel coord: X: 250.256 Y: 266.309
+ # Plate Scale: 0.765194 Rot Angle: 1.02939
+ # Equinox: J2000.000 Epoch: J1987.25775240
+ # MJD: 46890.39406
+
+ # Get some preliminary values.
+ if (idxstr (radecsys, Memc[radecstr], SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+
+ if (idxstr (wtype, Memc[proj], SZ_FNAME, WTYPE_LIST) <= 0)
+ call strcpy ("logical", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+
+ call fprintf (fd, "wcsinfo {\n")
+
+ call fprintf (fd,
+ " Projection: %-6s\t System: %s %s\n")
+ call pargstr (Memc[proj])
+ switch (ctype) {
+ case CTYPE_EQUATORIAL:
+ call pargstr ("Equatorial")
+ call pargstr (Memc[radecstr])
+ case CTYPE_ECLIPTIC:
+ call pargstr ("Ecliptic")
+ call pargstr ("")
+ case CTYPE_GALACTIC:
+ call pargstr ("Galactic")
+ call pargstr ("")
+ case CTYPE_SUPERGALACTIC:
+ call pargstr ("SuperGalactic")
+ call pargstr ("")
+ default:
+ call pargstr ("Linear")
+ call pargstr ("")
+ }
+
+ call fprintf (fd, " Ra/Dec axes: %d/%d")
+ call pargi (sk_stati (co, S_PLNGAX))
+ call pargi (sk_stati (co, S_PLATAX))
+ call fprintf (fd, " Dimensions: %d x %d\n\n")
+ call pargi (IM_LEN(im,1))
+ call pargi (IM_LEN(im,2))
+
+ call fprintf (fd,
+ " Center Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (cval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (cval2)
+
+ call fprintf (fd,
+ " Reference Pos: %3s: %-12H %3s: %-12h\n")
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr (" RA")
+ else
+ call pargstr ("Lon")
+ call pargd (crval1)
+ if (ctype == CTYPE_EQUATORIAL)
+ call pargstr ("Dec")
+ else
+ call pargstr ("Lat")
+ call pargd (crval2)
+
+ call fprintf (fd,
+ " Reference Pixel: X: %-9.4f Y: %-9.4f\n")
+ call pargd (crpix1)
+ call pargd (crpix2)
+
+ call fprintf (fd,
+ " Plate Scale: %-8f Rot Angle: %-8f\n")
+ call pargr (IMG_SCALE(img))
+ call pargr (IMG_ROT(img))
+
+ call fprintf (fd,
+ " Equinox: %s%8f Epoch: %s%.6f\n")
+ switch (radecsys) {
+ case EQTYPE_FK5, EQTYPE_ICRS:
+ call pargstr ("J") ; call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("J") ; call pargd (sl_epj(sk_statd(co,S_EPOCH)))
+ default:
+ if (IMG_LINEAR(img) == YES) {
+ call pargstr (" ") ; call pargd (INDEFD)
+ call pargstr (" ") ; call pargd (INDEFD)
+ } else {
+ call pargstr ("B")
+ call pargd (sk_statd(co,S_EQUINOX))
+ call pargstr ("B")
+ call pargd (sl_epb(sk_statd(co,S_EPOCH)))
+ }
+ }
+
+ call fprintf (fd, " MJD: %.6f\n")
+ call pargd (sk_statd(co,S_EPOCH))
+
+ call fprintf (fd, "}\n \n \n")
+
+ # Close the formatted string and send the message.
+ call close (fd)
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_SEND_PIXTAB -- Send a 'pixtab' message. Format of the message is
+#
+# pixtab {
+# { {pix} {pix} ... } # pixel table values
+# { {x1} {x2} ... } # column label values
+# { {y1} {y2} ... } # row label values
+# { <mean> <stdev> } # pixtab statistics
+# }
+#
+
+procedure img_send_pixtab (pixtab, size, x1, x2, y1, y2)
+
+real pixtab[ARB] #i pixtab array
+int size #i pixtab size
+int x1, x2, y1, y2 #i raster boundaries
+
+pointer sp, buf, el
+int i, j, npix
+real pix, sum, sum2, mean, var, stdev, x, y
+
+define SZ_PIXTAB (6*SZ_LINE)
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_PIXTAB, TY_CHAR)
+ call salloc (el, SZ_FNAME, TY_CHAR)
+
+ # Begin the pixtab message.
+ call strcpy ("pixtab {\n{\ntable {\n", Memc[buf], SZ_PIXTAB)
+
+ # Format the pixels into a table for presentation. Do the y-flip
+ # here so the pixels are in order for the List widget in the GUI.
+ # Accumulate the pixel statistics so we don't have to do it in the
+ # GUI where it's slower.
+
+ sum = 0.0
+ sum2 = 0.0
+ npix = size * size
+
+ for (i=size - 1; i >= 0; i=i-1) {
+ for (j=1; j <= size; j=j+1) {
+ pix = pixtab[(i * size) + j]
+ sum = sum + pix
+ sum2 = sum2 + (pix * pix)
+
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (pix)
+
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("\n", Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Do the row and column label parts of the message.
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (x = x1; x <= x2; x = x + 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (x)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+ call strcat ("{", Memc[buf], SZ_PIXTAB)
+ for (y = y2; y >= y1; y = y - 1.) {
+ call sprintf (Memc[el], SZ_FNAME, " {%10.1f}")
+ call pargr (y)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+ }
+ call strcat ("}\n", Memc[buf], SZ_PIXTAB)
+
+
+ # Compute the statistics for the raster.
+ mean = sum / real(npix)
+ var = (sum2 - sum * mean) / real(npix - 1)
+ if (var <= 0)
+ stdev = 0.0
+ else
+ stdev = sqrt (var)
+
+ call sprintf (Memc[el], SZ_FNAME, " { %10.2f %10.4f }\n")
+ call pargr (mean)
+ call pargr (stdev)
+ call strcat (Memc[el], Memc[buf], SZ_PIXTAB)
+
+
+ # Close the message.
+ call strcat ("}", Memc[buf], SZ_PIXTAB)
+
+ if (IMG_DEBUG) {
+ call eprintf ("pixtab: %s\n");call pargstr(Memc[buf])
+ }
+
+ # Send the formatted message.
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
+
+
+# IMG_AMP_WCS -- Create a WCS transformation for the amplifier coordinates.
+
+pointer procedure img_amp_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "ATV1")
+ w[2] = imgetd (im, "ATV2")
+ cd[1,1] = imgetd (im, "ATM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "ATM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "amplifier", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "amplifier", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_DET_WCS -- Create a WCS transformation for the detector coordinates.
+
+pointer procedure img_det_wcs (im, mw)
+
+pointer im #i image pointer
+pointer mw #i MWCS descriptor
+
+pointer ct
+double r[IM_MAXDIM], w[IM_MAXDIM], cd[IM_MAXDIM,IM_MAXDIM]
+
+double imgetd()
+pointer mw_sctran()
+
+begin
+ r[1] = 0.0d0
+ r[2] = 0.0d0
+ w[1] = imgetd (im, "DTV1")
+ w[2] = imgetd (im, "DTV2")
+ cd[1,1] = imgetd (im, "DTM1_1")
+ cd[1,2] = 0.0d0
+ cd[2,1] = 0.0d0
+ cd[2,2] = imgetd (im, "DTM2_2")
+
+ # Create a new named system.
+ call mw_newsystem (mw, "detector", 2)
+
+ # Set the new Wterm for the system.
+ call mw_swtermd (mw, r, w, cd, 2)
+
+ # Set up the transform.
+ ct = mw_sctran (mw, "logical", "detector", 03B)
+
+ # Reset the default world system.
+ call mw_sdefwcs (mw)
+
+ return (ct)
+end
+
+
+# IMG_COORD_LABELS -- Get the WCS name, coord labels and format strings for
+# the specified object.
+
+procedure img_coord_labels (cp, line, wcsname, xunits, yunits)
+
+pointer cp #i cache pointer
+pointer line #i WCS output line
+char wcsname[ARB] #o WCS name string
+char xunits[ARB], yunits[ARB] #o WCS coord labels
+
+pointer img, co, wp
+pointer sp, proj, radecstr
+
+int strcmp(), sk_stati(), idxstr()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+ if (SYSTEMS(wp,line) == SYS_WORLD) {
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL:
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ case CTYPE_ECLIPTIC:
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ case CTYPE_GALACTIC:
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ case CTYPE_SUPERGALACTIC:
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ }
+ } else if (SYSTEMS(wp,line) == SYS_SKY) {
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+ call strlwr (wcsname)
+ if (strcmp (wcsname,"ecliptic") == 0) {
+ call strcpy ("ELon", xunits, LEN_WCSNAME)
+ call strcpy ("ELat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"galactic") == 0) {
+ call strcpy ("GLon", xunits, LEN_WCSNAME)
+ call strcpy ("GLat", yunits, LEN_WCSNAME)
+ } else if (strcmp (wcsname,"supergalactic") == 0) {
+ call strcpy ("SLon", xunits, LEN_WCSNAME)
+ call strcpy ("SLat", yunits, LEN_WCSNAME)
+ } else {
+ call strcpy (" RA", xunits, LEN_WCSNAME)
+ call strcpy (" Dec", yunits, LEN_WCSNAME)
+ }
+ } else {
+ call strcpy ("X", xunits, LEN_WCSNAME)
+ call strcpy ("Y", yunits, LEN_WCSNAME)
+ }
+
+
+ # Now get the format strings. For systems other than the image
+ # default just use the WCS string as the name, otherwise format a
+ # string giving more information about the system.
+ if (SYSTEMS(wp,line) != SYS_WORLD)
+ call strcpy (WCSNAME(wp,line), wcsname, LEN_WCSNAME)
+
+ else {
+ call smark (sp)
+ call salloc (radecstr, SZ_FNAME, TY_CHAR)
+ call salloc (proj, SZ_FNAME, TY_CHAR)
+
+ call sprintf (wcsname, LEN_WCSNAME, "%s-%s-%s")
+
+ switch (sk_stati(co,S_CTYPE)) {
+ case CTYPE_EQUATORIAL: call pargstr ("EQ")
+ case CTYPE_ECLIPTIC: call pargstr ("ECL")
+ case CTYPE_GALACTIC: call pargstr ("GAL")
+ case CTYPE_SUPERGALACTIC: call pargstr ("SGAL")
+ default: call pargstr ("UNKN")
+ }
+
+ if (sk_stati(co,S_CTYPE) == CTYPE_EQUATORIAL) {
+ if (idxstr(sk_stati(co,S_RADECSYS), Memc[radecstr],
+ SZ_FNAME, EQTYPE_LIST) <= 0)
+ call strcpy ("FK5", Memc[radecstr], SZ_FNAME)
+ call strupr (Memc[radecstr])
+ call pargstr (Memc[radecstr])
+ } else {
+ if (sk_stati(co,S_CTYPE) == CTYPE_SUPERGALACTIC)
+ call pargstr ("-")
+ else
+ call pargstr ("--")
+ }
+
+ if (idxstr(sk_stati(co,S_WTYPE), Memc[proj], SZ_FNAME,
+ WTYPE_LIST) <= 0)
+ call strcpy ("linear", Memc[proj], SZ_FNAME)
+ call strupr (Memc[proj])
+ call pargstr (Memc[proj])
+
+ call sfree (sp)
+ }
+
+ # Now fix up the WCS system name.
+ if (strcmp (wcsname, "fk4") == 0 ||
+ strcmp (wcsname, "fk5") == 0 ||
+ strcmp (wcsname, "icrs") == 0 ||
+ strcmp (wcsname, "gappt") == 0 ||
+ strcmp (wcsname, "fk4-no-e") == 0) {
+ call strupr (wcsname)
+
+ } else if (IS_LOWER(wcsname[1]))
+ wcsname[1] = TO_UPPER(wcsname[1])
+end
+
+
+# IMG_COORD_FMT -- Format the coordinate strings.
+
+procedure img_coord_fmt (cp, line, xval, yval, xc, yc)
+
+pointer cp #i object cache pointer
+int line #i output line number
+double xval, yval #i input coords
+char xc[ARB], yc[ARB] #o formatted coord strings
+
+pointer img, co, wp
+char xfmt[LEN_WCSNAME], yfmt[LEN_WCSNAME]
+
+int sk_stati()
+bool streq()
+
+begin
+ img = C_DATA(cp) # initialize ptrs
+ co = IMG_CO(img)
+ wp = IMG_WP(img)
+
+ # Convert coords to the requested format.
+ if (FORMATS(wp,line) == FMT_DEFAULT) {
+ if (IMG_MW(img) == NULL) {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ } else {
+ if (SYSTEMS(wp,line) == SYS_WORLD ||
+ SYSTEMS(wp,line) == SYS_SKY) {
+
+ if (streq(WCSNAME(wp,line),"ecliptic") ||
+ streq(WCSNAME(wp,line),"galactic") ||
+ streq(WCSNAME(wp,line),"supergalactic"))
+ call strcpy ("%h", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ call strcpy ("%.1h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+ }
+
+ } else if (FORMATS(wp,line) == FMT_HMS) {
+ if (sk_stati(co, S_CTYPE) == CTYPE_EQUATORIAL)
+ call strcpy ("%.2H", xfmt, LEN_WCSNAME)
+ else
+ call strcpy ("%.1h", xfmt, LEN_WCSNAME)
+ call strcpy ("%h", yfmt, LEN_WCSNAME)
+ } else {
+ call strcpy ("%10.2f", xfmt, LEN_WCSNAME)
+ call strcpy ("%10.2f", yfmt, LEN_WCSNAME)
+ }
+
+ # Convert the value to the requested format
+ call sprintf (xc, LEN_WCSNAME, xfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (xval)
+ else
+ call pargd (DEGTORAD(xval))
+
+ call sprintf (yc, LEN_WCSNAME, yfmt)
+ if (FORMATS(wp,line) != FMT_RAD)
+ call pargd (yval)
+ else
+ call pargd (DEGTORAD(yval))
+end
+
+
+# IMG_GET_COORD -- Given an x,y position in the image return the coordinate in
+# the given system.
+
+procedure img_get_coord (img, x, y, system, wcsname, wx, wy)
+
+pointer img #i IMG struct pointer
+double x, y #i input image position
+int system #i coordinate system requested
+char wcsname[ARB] #i desired WCS name
+double wx, wy #o output coordinates
+
+double ox, oy, tmp
+real epoch
+pointer im, co, nco
+char buf[SZ_LINE]
+int stat
+
+real imgetr()
+int imaccf(), sk_stati(), sk_decwstr()
+bool streq()
+
+errchk imgetr
+
+begin
+ im = IMG_IM(img)
+ co = IMG_CO(img)
+
+ wx = x # fallback values
+ wy = y
+
+ switch (system) {
+ case SYS_NONE:
+ wx = x
+ wy = y
+ case SYS_DISPLAY:
+ call img_ltov (im, x, y, wx, wy)
+ #wx = x
+ #wy = y
+ case SYS_PHYSICAL:
+ if (IMG_CTP(img) != NULL)
+ call mw_c2trand (IMG_CTP(img), x, y, wx, wy)
+ case SYS_WORLD:
+ if (IMG_CTW(img) != NULL) {
+ call mw_c2trand (IMG_CTW(img), x, y, wx, wy)
+
+ # Check for transposed image.
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX)) {
+ tmp = wx
+ wx = wy
+ wy = tmp
+ }
+ }
+ case SYS_AMP:
+ if (IMG_CTA(img) != NULL)
+ call mw_c2trand (IMG_CTA(img), x, y, wx, wy)
+ case SYS_CCD:
+ if (IMG_CTD(img) != NULL)
+ call mw_c2trand (IMG_CTD(img), x, y, wx, wy)
+ case SYS_DETECTOR:
+ if (IMG_CTD(img) != NULL)
+ call mw_c2trand (IMG_CTD(img), x, y, wx, wy)
+ case SYS_SKY:
+ # Note Ecliptic/GAPPT coords need an epoch value.
+ if (imaccf (im, "EPOCH") == YES) {
+ epoch = imgetr (im, "EPOCH")
+ if (epoch == 0.0 || IS_INDEFR(epoch))
+ epoch = 1950.0
+ } else
+ epoch = 1950.0
+
+ if (streq (wcsname, "ecliptic") || streq (wcsname, "gappt")) {
+ call sprintf (buf, SZ_LINE, "%s %.1f")
+ if (streq (wcsname, "gappt"))
+ call pargstr ("apparent")
+ else
+ call pargstr (wcsname)
+ call pargr (epoch)
+ } else {
+ call sprintf (buf, SZ_LINE, "%s")
+ if (streq(wcsname,"gappt"))
+ call pargstr ("apparent")
+ else if (streq(wcsname,"fk4-no-e"))
+ call pargstr ("noefk4")
+ else
+ call pargstr (wcsname)
+ }
+
+ stat = sk_decwstr (buf, nco, co)
+ if (stat != ERR) {
+ if (IMG_CTW(img) != NULL)
+ call mw_c2trand (IMG_CTW(img), x, y, ox, oy)
+ call sk_lltran (co, nco, DEGTORAD(ox), DEGTORAD(oy),
+ INDEFD, INDEFD, 0.0d0, 0.0d0, wx, wy)
+ if (sk_stati(co,S_PLATAX) < sk_stati(co,S_PLNGAX)) {
+ wx = RADTODEG(wy) # transposed image
+ wy = RADTODEG(wx)
+ } else {
+ wx = RADTODEG(wx) # regular image
+ wy = RADTODEG(wy)
+ }
+ } else {
+ wx = x
+ wy = y
+ }
+ case SYS_OTHER:
+ ; # TBD
+
+ default: # default coords
+ wx = x
+ wy = y
+ }
+end
+
+
+# IMG_LTOV -- Convert coordinate from the logical coordinate system to the
+# output coordinate system.
+
+procedure img_ltov (im, xin, yin, xout, yout)
+
+pointer im # the input image descriptor
+double xin # the input x coordinate
+double yin # the input y coordinate
+double xout # the output x coordinate
+double yout # the output y coordinate
+
+int index1, index2
+
+begin
+ index1 = IM_VMAP(im,1)
+ index2 = IM_VMAP(im,2)
+
+ xout = xin * IM_VSTEP(im,index1) + IM_VOFF(im,index1)
+ yout = yin * IM_VSTEP(im,index2) + IM_VOFF(im,index2)
+end
+
+
+# IMG_VTOL -- Convert coordinate from the tv coordinate system to the
+# logical coordinate system.
+
+procedure img_vtol (im, xin, yin, xout, yout)
+
+pointer im # the input image descriptor
+double xin # the input x coordinate
+double yin # the input y coordinate
+double xout # the output x coordinate
+double yout # the output y coordinate
+
+int index1, index2
+
+begin
+ index1 = IM_VMAP(im,1)
+ index2 = IM_VMAP(im,2)
+
+ xout = (xin - IM_VOFF(im,index1)) / IM_VSTEP(im,index1)
+ yout = (yin - IM_VOFF(im,index2)) / IM_VSTEP(im,index2)
+end
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcmef.x b/vendor/x11iraf/ximtool/clients/wcspix/wcmef.x
new file mode 100644
index 00000000..050e5596
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcmef.x
@@ -0,0 +1,50 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include "wcspix.h"
+
+
+# MEF Image class data.
+
+
+# MEF_INIT -- Initialize the MEF Class module.
+
+procedure mef_init ()
+begin
+end
+
+
+# MEF_CACHE -- Cache an image in the object cache.
+
+procedure mef_cache ()
+begin
+end
+
+
+# MEF_UNCACHE -- Uncache an image in the object cache.
+
+procedure mef_uncache ()
+begin
+end
+
+
+# MEF_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs.
+
+procedure mef_wcstran ()
+begin
+end
+
+
+# MEF_WCSLIST -- List the WCSs available for the given image.
+
+procedure mef_wcslist ()
+begin
+end
+
+
+# MEF_OBJINFO -- Get header information from the image.
+
+procedure mef_objinfo ()
+begin
+end
+
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcmspec.x b/vendor/x11iraf/ximtool/clients/wcspix/wcmspec.x
new file mode 100644
index 00000000..64198d69
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcmspec.x
@@ -0,0 +1,50 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include "wcspix.h"
+
+
+# Multispec image class data.
+
+
+# MSP_INIT -- Initialize the Image Class module.
+
+procedure msp_init ()
+begin
+end
+
+
+# MSP_CACHE -- Cache an image in the object cache.
+
+procedure msp_cache ()
+begin
+end
+
+
+# MSP_UNCACHE -- Uncache an image in the object cache.
+
+procedure msp_uncache ()
+begin
+end
+
+
+# MSP_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs.
+
+procedure msp_wcstran ()
+begin
+end
+
+
+# MSP_WCSLIST -- List the WCSs available for the given image.
+
+procedure msp_wcslist ()
+begin
+end
+
+
+# MSP_OBJINFO -- Get header information from the image.
+
+procedure msp_objinfo ()
+begin
+end
+
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcspix.h b/vendor/x11iraf/ximtool/clients/wcspix/wcspix.h
new file mode 100644
index 00000000..0233ff21
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcspix.h
@@ -0,0 +1,112 @@
+# WCSPIX.H -- Include file for the WCS/Pixel value ISM task
+
+define WCSPIX_NAME "wcspix"
+define WCSPIX_MODE "text"
+define WCSPIX_CONNECT "unix:/tmp/.ISM%d"
+
+define WCSPIX_DBG FALSE
+
+# Main task data structures.
+define MAX_WCSLINES 4 # max WCS output lines
+define LEN_PIXTAB 81 # size of pixel table
+define LEN_WCSNAME 32 # size of a WCS name
+
+define SZ_WCSPIX 7
+define WP_CPTR Memi[$1 ] # object cache pointer
+define WP_PTABSZ Memi[$1+1] # pixel table size
+define WP_BPM Memi[$1+2] # get BPM data
+define WP_SYSTEMS Memi[$1+3] # WCS readout systems
+define WP_WCS Memi[$1+4] # WCS system string
+define WP_FORMATS Memi[$1+5] # WCS readout formats
+define WP_DBGLEVEL Memi[$1+6] # debug level
+
+define OBJCACHE Memi[WP_CPTR($1)+$2] # object cache
+define SYSTEMS Memi[WP_SYSTEMS($1)+$2-1]
+define FORMATS Memi[WP_FORMATS($1)+$2-1]
+define WCSNAME Memc[WP_WCS($1)+(LEN_WCSNAME*($2-1))]
+
+
+# Element of an object cache.
+define SZ_CACHE 256 # size of object cache
+define SZ_CNODE 135 # size of a cache node
+define SZ_OBJREF 128 # size of a object reference
+
+define C_OBJID Memi[$1] # object id
+define C_REGID Memi[$1+1] # region id
+define C_CLASS Memi[$1+2] # object class
+define C_DATA Memi[$1+3] # object data ptr
+define C_NREF Memi[$1+4] # no. times object referenced
+define C_REF Memc[P2C($1+6)] # object reference file
+
+
+# WCSPIX ISM task methods.
+define WCSPIX_CMDS "|set|get|quit|initialize|cache|uncache\
+ |wcstran|wcslist|objinfo|debug"
+
+define SET 1
+define GET 2
+define QUIT 3
+define INITIALIZE 4
+define CACHE 5
+define UNCACHE 6
+define WCSTRAN 7
+define WCSLIST 8
+define OBJINFO 9
+define DEBUG 10
+
+# Parameters definable from the GUI
+define SZ_PARAM 32 # size of a parameter string
+
+define WCSPIX_SYSTEMS "|none|display|logical|physical|world|sky\
+ |amplifier|ccd|detector|other|"
+define SYS_NONE 1 # no coords requested
+define SYS_DISPLAY 2 # image display coords
+define SYS_LOGICAL 3 # logical coords
+define SYS_PHYSICAL 4 # physical coords
+define SYS_WORLD 5 # world coords
+define SYS_SKY 6 # sky coords
+define SYS_AMP 7 # amplifier coords
+define SYS_CCD 8 # CCD coords
+define SYS_DETECTOR 9 # detector coords
+define SYS_OTHER 10 # ??? coords
+
+define SKYPROJ "FK5 FK4 ICRS GAPPT FK4-NO-E Ecliptic Galactic Supergalactic"
+
+
+define WCSPIX_PARAMS "|psize|bpm|wcs|format|"
+define PAR_PSIZE 1 # pixel table size
+define PAR_BPM 2 # get BPM data
+define PAR_WCS 3 # WCS system
+define PAR_FMT 4 # WCS format
+
+define WCSPIX_FMT "|default|hms|degrees|radians|"
+define FMT_DEFAULT 1 # no formatting
+define FMT_HMS 2 # covert to sexigesimal
+define FMT_DEG 3 # output degrees
+define FMT_RAD 4 # output radians
+
+define DEF_PTABSZ 0 # default pixtable size
+define DEF_FMT FMT_DEFAULT # default output format
+define DEF_SYSTEM SYS_LOGICAL # default coord system
+define DEF_BPM_FLAG NO # default get-BPM-data flag
+
+
+# Object class definitions.
+define UNKNOWN_CLASS 1 # unknown class
+define IMAGE_CLASS 2 # generic image class
+define MEF_CLASS 3 # Mosaic MEF image class
+define MULTISPEC_CLASS 4 # multispec data class
+
+# Class methods.
+define LEN_CLASS 6 # length of class table
+define MAX_CLASSES 16 # max supported classes
+define SZ_CLNAME 32 # size of a class name
+
+define CL_INIT cl_table[1,$1] # class initializer
+define CL_CACHE cl_table[2,$1] # cache the object
+define CL_UNCACHE cl_table[3,$1] # uncache the object
+define CL_WCSTRAN cl_table[4,$1] # WCS tranformations
+define CL_WCSLIST cl_table[5,$1] # list available WCS
+define CL_OBJINFO cl_table[6,$1] # get object header
+define CL_NAME cl_names[1,$1] # class name
+
diff --git a/vendor/x11iraf/ximtool/clients/wcspix/wcunknown.x b/vendor/x11iraf/ximtool/clients/wcspix/wcunknown.x
new file mode 100644
index 00000000..86e5e6d8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/wcspix/wcunknown.x
@@ -0,0 +1,185 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <ctype.h>
+include "wcspix.h"
+
+
+# Unknown class data.
+define LEN_UNKDATA 1
+define UNK_WP Memi[$1 ] # wcspix back-pointer
+
+
+# UNK_INIT -- Initialize the object structure.
+
+procedure unk_init (cp, wp)
+
+pointer cp #i cache pointer
+pointer wp #i WCSPIX structure
+
+begin
+ # Allocate the image data structure if not previously allocated.
+ if (C_DATA(cp) == NULL) {
+ iferr (call calloc (C_DATA(cp), LEN_UNKDATA, TY_STRUCT))
+ return
+ }
+
+ UNK_WP(C_DATA(cp)) = wp
+end
+
+
+# UNK_CACHE -- Cache an image in the object cache. Since we don't know
+# what this is we simply setup so that a query to the object id will still
+# return a result of some kind rather than ignore it. In most cases this
+# just means the input arguments are echoed back (e.g. coords), or default
+# values such as a rotation value can be retrieved.
+
+procedure unk_cache (cp, objid, regid, ref)
+
+pointer cp #i cache pointer
+int objid #i object id
+int regid #i region id
+char ref[ARB] #i object reference
+
+begin
+ C_OBJID(cp) = objid
+ C_REGID(cp) = regid
+ C_NREF(cp) = C_NREF(cp) + 1
+ call strcpy (ref, C_REF(cp), 128)
+end
+
+
+# UNK_UNCACHE -- Uncache an unknown image in the object cache.
+
+procedure unk_uncache (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+begin
+ C_OBJID(cp) = NULL
+ C_NREF(cp) = 0
+ call strcpy ("", C_REF(cp), SZ_FNAME)
+
+ call mfree (C_DATA(cp), TY_STRUCT)
+ C_DATA(cp) = NULL
+end
+
+
+# UNK_WCSTRAN -- Translate object source (x,y) coordinates to the
+# desired output WCSs. Message is returned as something like:
+#
+# set value {
+# { object <objid> } { region <regionid> }
+# { pixval <pixelvalue> [<units>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# { coord <wcsname> <x> <y> [<xunits> <yunits>] }
+# }
+
+
+procedure unk_wcstran (cp, id, x, y)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+
+pointer wp
+int i
+
+# Use static storage to avoid allocation overhead.
+char buf[SZ_LINE], msg[SZ_LINE]
+
+begin
+ wp = UNK_WP(C_DATA(cp))
+
+ # Begin formatting the message.
+ call aclrc (msg, SZ_LINE)
+ call sprintf (msg, SZ_LINE, "wcstran { object %d } { region %d } ")
+ call pargi (C_OBJID(cp))
+ call pargi (C_REGID(cp))
+ call strcat ("{ pixval 0.0 } { bpm 0 } \n", msg, SZ_LINE)
+
+
+ # Now loop over the requested systems and generate a coordinate
+ # for each.
+ for (i=1; i <= MAX_WCSLINES; i=i+1) {
+
+ # Format the coord buffer and append it to the message.
+ call sprintf (buf, SZ_LINE, "{coord {%9s} {%12g} {%12g} {X} {Y}}\n")
+ call pargstr ("UNKN")
+ call pargr (x)
+ call pargr (y)
+ call strcat (buf, msg, SZ_LINE)
+ }
+
+ # Now send the completed message.
+ call wcspix_message (msg)
+end
+
+
+# UNK_WCSLIST -- List the WCSs available for the given image.
+
+procedure unk_wcslist (cp, id)
+
+pointer cp #i cache pointer
+int id #i image id
+
+begin
+ #call wcspix_message ("wcslist {None Logical}")
+end
+
+
+# UNK_GETDATA -- Get data from the image.
+
+procedure unk_getdata (cp, id, x, y, pixval)
+
+pointer cp #i cache pointer
+int id #i image id
+real x, y #i source coords
+real pixval #o central pixel value
+
+pointer wp, pix
+int size, x1, x2, y1, y2
+
+begin
+ wp = UNK_WP(C_DATA(cp))
+ size = WP_PTABSZ(wp)
+
+ # Compute the box offset given the center and size.
+ x1 = x - size / 2 + 0.5
+ x2 = x + size / 2 + 0.5
+ y1 = y - size / 2 + 0.5
+ y2 = y + size / 2 + 0.5
+
+ pixval = 0.0
+
+ # Send the pixel table.
+ if (size > 1) {
+ call calloc (pix, size * size, TY_REAL)
+ call img_send_pixtab (Memr[pix], size, x1, x2, y1, y2)
+ call mfree (pix, TY_REAL)
+ }
+end
+
+
+# UNK_OBJINFO -- Get header information from the image.
+
+procedure unk_objinfo (cp, id, template)
+
+pointer cp #i cache pointer
+int id #i image id
+char template[ARB] #i keyword template
+
+pointer sp, buf
+
+begin
+ call smark (sp)
+ call salloc (buf, SZ_LINE, TY_CHAR)
+
+ # Send a default (X,Y) compass indicator.
+ call aclrc (Memc[buf], SZ_LINE)
+ call sprintf (Memc[buf], SZ_LINE, "compass %d 0.0 -1 1 0 X Y\0")
+ call pargi (C_OBJID(cp))
+ call wcspix_message (Memc[buf])
+
+ call sfree (sp)
+end
diff --git a/vendor/x11iraf/ximtool/clients/x_ism.x b/vendor/x11iraf/ximtool/clients/x_ism.x
new file mode 100644
index 00000000..8f401873
--- /dev/null
+++ b/vendor/x11iraf/ximtool/clients/x_ism.x
@@ -0,0 +1 @@
+task wcspix = t_wcspix
diff --git a/vendor/x11iraf/ximtool/data/README b/vendor/x11iraf/ximtool/data/README
new file mode 100644
index 00000000..c033f821
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/README
@@ -0,0 +1,2 @@
+The files in this directory are included in Ximtool, either at compile time
+or manually in the GUI file.
diff --git a/vendor/x11iraf/ximtool/data/aips0.lut b/vendor/x11iraf/ximtool/data/aips0.lut
new file mode 100644
index 00000000..351cc2e4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/aips0.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.19608, 0.19608, 0.19608,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.47451, 0.00000, 0.60784,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78431,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.37255, 0.65490, 0.92549,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96471, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.69412, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000
diff --git a/vendor/x11iraf/ximtool/data/blue.lut b/vendor/x11iraf/ximtool/data/blue.lut
new file mode 100644
index 00000000..3f9caf87
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/blue.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00392,
+0.00000, 0.00000, 0.00784,
+0.00000, 0.00000, 0.01176,
+0.00000, 0.00000, 0.01569,
+0.00000, 0.00000, 0.01961,
+0.00000, 0.00000, 0.02353,
+0.00000, 0.00000, 0.02745,
+0.00000, 0.00000, 0.03137,
+0.00000, 0.00000, 0.03529,
+0.00000, 0.00000, 0.03922,
+0.00000, 0.00000, 0.04314,
+0.00000, 0.00000, 0.04706,
+0.00000, 0.00000, 0.05098,
+0.00000, 0.00000, 0.05490,
+0.00000, 0.00000, 0.05882,
+0.00000, 0.00000, 0.06275,
+0.00000, 0.00000, 0.06667,
+0.00000, 0.00000, 0.07059,
+0.00000, 0.00000, 0.07451,
+0.00000, 0.00000, 0.07843,
+0.00000, 0.00000, 0.08235,
+0.00000, 0.00000, 0.08627,
+0.00000, 0.00000, 0.09020,
+0.00000, 0.00000, 0.09412,
+0.00000, 0.00000, 0.09804,
+0.00000, 0.00000, 0.10196,
+0.00000, 0.00000, 0.10588,
+0.00000, 0.00000, 0.10980,
+0.00000, 0.00000, 0.11373,
+0.00000, 0.00000, 0.11765,
+0.00000, 0.00000, 0.12157,
+0.00000, 0.00000, 0.12549,
+0.00000, 0.00000, 0.12941,
+0.00000, 0.00000, 0.13333,
+0.00000, 0.00000, 0.13725,
+0.00000, 0.00000, 0.14118,
+0.00000, 0.00000, 0.14510,
+0.00000, 0.00000, 0.14902,
+0.00000, 0.00000, 0.15294,
+0.00000, 0.00000, 0.15686,
+0.00000, 0.00000, 0.16078,
+0.00000, 0.00000, 0.16471,
+0.00000, 0.00000, 0.16863,
+0.00000, 0.00000, 0.17255,
+0.00000, 0.00000, 0.17647,
+0.00000, 0.00000, 0.18039,
+0.00000, 0.00000, 0.18431,
+0.00000, 0.00000, 0.18824,
+0.00000, 0.00000, 0.19216,
+0.00000, 0.00000, 0.19608,
+0.00000, 0.00000, 0.20000,
+0.00000, 0.00000, 0.20392,
+0.00000, 0.00000, 0.20784,
+0.00000, 0.00000, 0.21176,
+0.00000, 0.00000, 0.21569,
+0.00000, 0.00000, 0.21961,
+0.00000, 0.00000, 0.22353,
+0.00000, 0.00000, 0.22745,
+0.00000, 0.00000, 0.23137,
+0.00000, 0.00000, 0.23529,
+0.00000, 0.00000, 0.23922,
+0.00000, 0.00000, 0.24314,
+0.00000, 0.00000, 0.24706,
+0.00000, 0.00000, 0.25098,
+0.00000, 0.00000, 0.25490,
+0.00000, 0.00000, 0.25882,
+0.00000, 0.00000, 0.26275,
+0.00000, 0.00000, 0.26667,
+0.00000, 0.00000, 0.27059,
+0.00000, 0.00000, 0.27451,
+0.00000, 0.00000, 0.27843,
+0.00000, 0.00000, 0.28235,
+0.00000, 0.00000, 0.28627,
+0.00000, 0.00000, 0.29020,
+0.00000, 0.00000, 0.29412,
+0.00000, 0.00000, 0.29804,
+0.00000, 0.00000, 0.30196,
+0.00000, 0.00000, 0.30588,
+0.00000, 0.00000, 0.30980,
+0.00000, 0.00000, 0.31373,
+0.00000, 0.00000, 0.31765,
+0.00000, 0.00000, 0.32157,
+0.00000, 0.00000, 0.32549,
+0.00000, 0.00000, 0.32941,
+0.00000, 0.00000, 0.33333,
+0.00000, 0.00000, 0.33725,
+0.00000, 0.00000, 0.34118,
+0.00000, 0.00000, 0.34510,
+0.00000, 0.00000, 0.34902,
+0.00000, 0.00000, 0.35294,
+0.00000, 0.00000, 0.35686,
+0.00000, 0.00000, 0.36078,
+0.00000, 0.00000, 0.36471,
+0.00000, 0.00000, 0.36863,
+0.00000, 0.00000, 0.37255,
+0.00000, 0.00000, 0.37647,
+0.00000, 0.00000, 0.38039,
+0.00000, 0.00000, 0.38431,
+0.00000, 0.00000, 0.38824,
+0.00000, 0.00000, 0.39216,
+0.00000, 0.00000, 0.39608,
+0.00000, 0.00000, 0.40000,
+0.00000, 0.00000, 0.40392,
+0.00000, 0.00000, 0.40784,
+0.00000, 0.00000, 0.41176,
+0.00000, 0.00000, 0.41569,
+0.00000, 0.00000, 0.41961,
+0.00000, 0.00000, 0.42353,
+0.00000, 0.00000, 0.42745,
+0.00000, 0.00000, 0.43137,
+0.00000, 0.00000, 0.43529,
+0.00000, 0.00000, 0.43922,
+0.00000, 0.00000, 0.44314,
+0.00000, 0.00000, 0.44706,
+0.00000, 0.00000, 0.45098,
+0.00000, 0.00000, 0.45490,
+0.00000, 0.00000, 0.45882,
+0.00000, 0.00000, 0.46275,
+0.00000, 0.00000, 0.46667,
+0.00000, 0.00000, 0.47059,
+0.00000, 0.00000, 0.47451,
+0.00000, 0.00000, 0.47843,
+0.00000, 0.00000, 0.48235,
+0.00000, 0.00000, 0.48627,
+0.00000, 0.00000, 0.49020,
+0.00000, 0.00000, 0.49412,
+0.00000, 0.00000, 0.49804,
+0.00000, 0.00000, 0.50196,
+0.00000, 0.00000, 0.50588,
+0.00000, 0.00000, 0.50980,
+0.00000, 0.00000, 0.51373,
+0.00000, 0.00000, 0.51765,
+0.00000, 0.00000, 0.52157,
+0.00000, 0.00000, 0.52549,
+0.00000, 0.00000, 0.52941,
+0.00000, 0.00000, 0.53333,
+0.00000, 0.00000, 0.53725,
+0.00000, 0.00000, 0.54118,
+0.00000, 0.00000, 0.54510,
+0.00000, 0.00000, 0.54902,
+0.00000, 0.00000, 0.55294,
+0.00000, 0.00000, 0.55686,
+0.00000, 0.00000, 0.56078,
+0.00000, 0.00000, 0.56471,
+0.00000, 0.00000, 0.56863,
+0.00000, 0.00000, 0.57255,
+0.00000, 0.00000, 0.57647,
+0.00000, 0.00000, 0.58039,
+0.00000, 0.00000, 0.58431,
+0.00000, 0.00000, 0.58824,
+0.00000, 0.00000, 0.59216,
+0.00000, 0.00000, 0.59608,
+0.00000, 0.00000, 0.60000,
+0.00000, 0.00000, 0.60392,
+0.00000, 0.00000, 0.60784,
+0.00000, 0.00000, 0.61176,
+0.00000, 0.00000, 0.61569,
+0.00000, 0.00000, 0.61961,
+0.00000, 0.00000, 0.62353,
+0.00000, 0.00000, 0.62745,
+0.00000, 0.00000, 0.63137,
+0.00000, 0.00000, 0.63529,
+0.00000, 0.00000, 0.63922,
+0.00000, 0.00000, 0.64314,
+0.00000, 0.00000, 0.64706,
+0.00000, 0.00000, 0.65098,
+0.00000, 0.00000, 0.65490,
+0.00000, 0.00000, 0.65882,
+0.00000, 0.00000, 0.66275,
+0.00000, 0.00000, 0.66667,
+0.00000, 0.00000, 0.67059,
+0.00000, 0.00000, 0.67451,
+0.00000, 0.00000, 0.67843,
+0.00000, 0.00000, 0.68235,
+0.00000, 0.00000, 0.68627,
+0.00000, 0.00000, 0.69020,
+0.00000, 0.00000, 0.69412,
+0.00000, 0.00000, 0.69804,
+0.00000, 0.00000, 0.70196,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70980,
+0.00000, 0.00000, 0.71373,
+0.00000, 0.00000, 0.71765,
+0.00000, 0.00000, 0.72157,
+0.00000, 0.00000, 0.72549,
+0.00000, 0.00000, 0.72941,
+0.00000, 0.00000, 0.73333,
+0.00000, 0.00000, 0.73725,
+0.00000, 0.00000, 0.74118,
+0.00000, 0.00000, 0.74510,
+0.00000, 0.00000, 0.74902,
+0.00000, 0.00000, 0.75294,
+0.00000, 0.00000, 0.75686,
+0.00000, 0.00000, 0.76078,
+0.00000, 0.00000, 0.76471,
+0.00000, 0.00000, 0.76863,
+0.00000, 0.00000, 0.77255,
+0.00000, 0.00000, 0.77647,
+0.00000, 0.00000, 0.78039,
+0.00000, 0.00000, 0.78431,
+0.00000, 0.00000, 0.78824,
+0.00000, 0.00000, 0.79216,
+0.00000, 0.00000, 0.79608,
+0.00000, 0.00000, 0.80000,
+0.00000, 0.00000, 0.80392,
+0.00000, 0.00000, 0.80784,
+0.00000, 0.00000, 0.81176,
+0.00000, 0.00000, 0.81569,
+0.00000, 0.00000, 0.81961,
+0.00000, 0.00000, 0.82353,
+0.00000, 0.00000, 0.82745,
+0.00000, 0.00000, 0.83137,
+0.00000, 0.00000, 0.83529,
+0.00000, 0.00000, 0.83922,
+0.00000, 0.00000, 0.84314,
+0.00000, 0.00000, 0.84706,
+0.00000, 0.00000, 0.85098,
+0.00000, 0.00000, 0.85490,
+0.00000, 0.00000, 0.85882,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.86667,
+0.00000, 0.00000, 0.87059,
+0.00000, 0.00000, 0.87451,
+0.00000, 0.00000, 0.87843,
+0.00000, 0.00000, 0.88235,
+0.00000, 0.00000, 0.88627,
+0.00000, 0.00000, 0.89020,
+0.00000, 0.00000, 0.89412,
+0.00000, 0.00000, 0.89804,
+0.00000, 0.00000, 0.90196,
+0.00000, 0.00000, 0.90588,
+0.00000, 0.00000, 0.90980,
+0.00000, 0.00000, 0.91373,
+0.00000, 0.00000, 0.91765,
+0.00000, 0.00000, 0.92157,
+0.00000, 0.00000, 0.92549,
+0.00000, 0.00000, 0.92941,
+0.00000, 0.00000, 0.93333,
+0.00000, 0.00000, 0.93725,
+0.00000, 0.00000, 0.94118,
+0.00000, 0.00000, 0.94510,
+0.00000, 0.00000, 0.94902,
+0.00000, 0.00000, 0.95294,
+0.00000, 0.00000, 0.95686,
+0.00000, 0.00000, 0.96078,
+0.00000, 0.00000, 0.96471,
+0.00000, 0.00000, 0.96863,
+0.00000, 0.00000, 0.97255,
+0.00000, 0.00000, 0.97647,
+0.00000, 0.00000, 0.98039,
+0.00000, 0.00392, 0.98431,
+0.00000, 0.00784, 0.98824,
+0.00000, 0.01176, 0.99216,
+0.00000, 0.01569, 0.99608,
+0.00000, 0.00392, 1.00000
diff --git a/vendor/x11iraf/ximtool/data/brightness.xbm b/vendor/x11iraf/ximtool/data/brightness.xbm
new file mode 100644
index 00000000..ce875ea6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/brightness.xbm
@@ -0,0 +1,6 @@
+#define brightness_width 15
+#define brightness_height 15
+static char brightness_bits[] = {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/color.lut b/vendor/x11iraf/ximtool/data/color.lut
new file mode 100644
index 00000000..580a589e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/color.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.18431, 0.18431, 0.18431,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.37255, 0.37255, 0.37255,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.56078, 0.56078, 0.56078,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.74902, 0.74902, 0.74902,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.93725, 0.93725, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.18431, 0.93725,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.37255, 0.74902,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.49804, 0.49804,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.74902, 0.30980,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.30980, 0.62353, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.49804, 0.49804, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.62353, 0.30980, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980,
+0.74902, 0.00000, 0.30980
diff --git a/vendor/x11iraf/ximtool/data/contrast.xbm b/vendor/x11iraf/ximtool/data/contrast.xbm
new file mode 100644
index 00000000..07e4a20f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/contrast.xbm
@@ -0,0 +1,6 @@
+#define contrast_width 15
+#define contrast_height 15
+static char contrast_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/green.lut b/vendor/x11iraf/ximtool/data/green.lut
new file mode 100644
index 00000000..1af43427
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/green.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00392, 0.00000,
+0.00000, 0.00784, 0.00000,
+0.00000, 0.01176, 0.00000,
+0.00000, 0.01569, 0.00000,
+0.00000, 0.01961, 0.00000,
+0.00000, 0.02353, 0.00000,
+0.00000, 0.02745, 0.00000,
+0.00000, 0.03137, 0.00000,
+0.00000, 0.03529, 0.00000,
+0.00000, 0.03922, 0.00000,
+0.00000, 0.04314, 0.00000,
+0.00000, 0.04706, 0.00000,
+0.00000, 0.05098, 0.00000,
+0.00000, 0.05490, 0.00000,
+0.00000, 0.05882, 0.00000,
+0.00000, 0.06275, 0.00000,
+0.00000, 0.06667, 0.00000,
+0.00000, 0.07059, 0.00000,
+0.00000, 0.07451, 0.00000,
+0.00000, 0.07843, 0.00000,
+0.00000, 0.08235, 0.00000,
+0.00000, 0.08627, 0.00000,
+0.00000, 0.09020, 0.00000,
+0.00000, 0.09412, 0.00000,
+0.00000, 0.09804, 0.00000,
+0.00000, 0.10196, 0.00000,
+0.00000, 0.10588, 0.00000,
+0.00000, 0.10980, 0.00000,
+0.00000, 0.11373, 0.00000,
+0.00000, 0.11765, 0.00000,
+0.00000, 0.12157, 0.00000,
+0.00000, 0.12549, 0.00000,
+0.00000, 0.12941, 0.00000,
+0.00000, 0.13333, 0.00000,
+0.00000, 0.13725, 0.00000,
+0.00000, 0.14118, 0.00000,
+0.00000, 0.14510, 0.00000,
+0.00000, 0.14902, 0.00000,
+0.00000, 0.15294, 0.00000,
+0.00000, 0.15686, 0.00000,
+0.00000, 0.16078, 0.00000,
+0.00000, 0.16471, 0.00000,
+0.00000, 0.16863, 0.00000,
+0.00000, 0.17255, 0.00000,
+0.00000, 0.17647, 0.00000,
+0.00000, 0.18039, 0.00000,
+0.00000, 0.18431, 0.00000,
+0.00000, 0.18824, 0.00000,
+0.00000, 0.19216, 0.00000,
+0.00000, 0.19608, 0.00000,
+0.00000, 0.20000, 0.00000,
+0.00000, 0.20392, 0.00000,
+0.00000, 0.20784, 0.00000,
+0.00000, 0.21176, 0.00000,
+0.00000, 0.21569, 0.00000,
+0.00000, 0.21961, 0.00000,
+0.00000, 0.22353, 0.00000,
+0.00000, 0.22745, 0.00000,
+0.00000, 0.23137, 0.00000,
+0.00000, 0.23529, 0.00000,
+0.00000, 0.23922, 0.00000,
+0.00000, 0.24314, 0.00000,
+0.00000, 0.24706, 0.00000,
+0.00000, 0.25098, 0.00000,
+0.00000, 0.25490, 0.00000,
+0.00000, 0.25882, 0.00000,
+0.00000, 0.26275, 0.00000,
+0.00000, 0.26667, 0.00000,
+0.00000, 0.27059, 0.00000,
+0.00000, 0.27451, 0.00000,
+0.00000, 0.27843, 0.00000,
+0.00000, 0.28235, 0.00000,
+0.00000, 0.28627, 0.00000,
+0.00000, 0.29020, 0.00000,
+0.00000, 0.29412, 0.00000,
+0.00000, 0.29804, 0.00000,
+0.00000, 0.30196, 0.00000,
+0.00000, 0.30588, 0.00000,
+0.00000, 0.30980, 0.00000,
+0.00000, 0.31373, 0.00000,
+0.00000, 0.31765, 0.00000,
+0.00000, 0.32157, 0.00000,
+0.00000, 0.32549, 0.00000,
+0.00000, 0.32941, 0.00000,
+0.00000, 0.33333, 0.00000,
+0.00000, 0.33725, 0.00000,
+0.00000, 0.34118, 0.00000,
+0.00000, 0.34510, 0.00000,
+0.00000, 0.34902, 0.00000,
+0.00000, 0.35294, 0.00000,
+0.00000, 0.35686, 0.00000,
+0.00000, 0.36078, 0.00000,
+0.00000, 0.36471, 0.00000,
+0.00000, 0.36863, 0.00000,
+0.00000, 0.37255, 0.00000,
+0.00000, 0.37647, 0.00000,
+0.00000, 0.38039, 0.00000,
+0.00000, 0.38431, 0.00000,
+0.00000, 0.38824, 0.00000,
+0.00000, 0.39216, 0.00000,
+0.00000, 0.39608, 0.00000,
+0.00000, 0.40000, 0.00000,
+0.00000, 0.40392, 0.00000,
+0.00000, 0.40784, 0.00000,
+0.00000, 0.41176, 0.00000,
+0.00000, 0.41569, 0.00000,
+0.00000, 0.41961, 0.00000,
+0.00000, 0.42353, 0.00000,
+0.00000, 0.42745, 0.00000,
+0.00000, 0.43137, 0.00000,
+0.00000, 0.43529, 0.00000,
+0.00000, 0.43922, 0.00000,
+0.00000, 0.44314, 0.00000,
+0.00000, 0.44706, 0.00000,
+0.00000, 0.45098, 0.00000,
+0.00000, 0.45490, 0.00000,
+0.00000, 0.45882, 0.00000,
+0.00000, 0.46275, 0.00000,
+0.00000, 0.46667, 0.00000,
+0.00000, 0.47059, 0.00000,
+0.00000, 0.47451, 0.00000,
+0.00000, 0.47843, 0.00000,
+0.00000, 0.48235, 0.00000,
+0.00000, 0.48627, 0.00000,
+0.00000, 0.49020, 0.00000,
+0.00000, 0.49412, 0.00000,
+0.00000, 0.49804, 0.00000,
+0.00000, 0.50196, 0.00000,
+0.00000, 0.50588, 0.00000,
+0.00000, 0.50980, 0.00000,
+0.00000, 0.51373, 0.00000,
+0.00000, 0.51765, 0.00000,
+0.00000, 0.52157, 0.00000,
+0.00000, 0.52549, 0.00000,
+0.00000, 0.52941, 0.00000,
+0.00000, 0.53333, 0.00000,
+0.00000, 0.53725, 0.00000,
+0.00000, 0.54118, 0.00000,
+0.00000, 0.54510, 0.00000,
+0.00000, 0.54902, 0.00000,
+0.00000, 0.55294, 0.00000,
+0.00000, 0.55686, 0.00000,
+0.00000, 0.56078, 0.00000,
+0.00000, 0.56471, 0.00000,
+0.00000, 0.56863, 0.00000,
+0.00000, 0.57255, 0.00000,
+0.00000, 0.57647, 0.00000,
+0.00000, 0.58039, 0.00000,
+0.00000, 0.58431, 0.00000,
+0.00000, 0.58824, 0.00000,
+0.00000, 0.59216, 0.00000,
+0.00000, 0.59608, 0.00000,
+0.00000, 0.60000, 0.00000,
+0.00000, 0.60392, 0.00000,
+0.00000, 0.60784, 0.00000,
+0.00000, 0.61176, 0.00000,
+0.00000, 0.61569, 0.00000,
+0.00000, 0.61961, 0.00000,
+0.00000, 0.62353, 0.00000,
+0.00000, 0.62745, 0.00000,
+0.00000, 0.63137, 0.00000,
+0.00000, 0.63529, 0.00000,
+0.00000, 0.63922, 0.00000,
+0.00000, 0.64314, 0.00000,
+0.00000, 0.64706, 0.00000,
+0.00000, 0.65098, 0.00000,
+0.00000, 0.65490, 0.00000,
+0.00000, 0.65882, 0.00000,
+0.00000, 0.66275, 0.00000,
+0.00000, 0.66667, 0.00000,
+0.00000, 0.67059, 0.00000,
+0.00000, 0.67451, 0.00000,
+0.00000, 0.67843, 0.00000,
+0.00000, 0.68235, 0.00000,
+0.00000, 0.68627, 0.00000,
+0.00000, 0.69020, 0.00000,
+0.00000, 0.69412, 0.00000,
+0.00000, 0.69804, 0.00000,
+0.00000, 0.70196, 0.00000,
+0.00000, 0.70588, 0.00000,
+0.00000, 0.70980, 0.00000,
+0.00000, 0.71373, 0.00000,
+0.00000, 0.71765, 0.00000,
+0.00000, 0.72157, 0.00000,
+0.00000, 0.72549, 0.00000,
+0.00000, 0.72941, 0.00000,
+0.00000, 0.73333, 0.00000,
+0.00000, 0.73725, 0.00000,
+0.00000, 0.74118, 0.00000,
+0.00000, 0.74510, 0.00000,
+0.00000, 0.74902, 0.00000,
+0.00000, 0.75294, 0.00000,
+0.00000, 0.75686, 0.00000,
+0.00000, 0.76078, 0.00000,
+0.00000, 0.76471, 0.00000,
+0.00000, 0.76863, 0.00000,
+0.00000, 0.77255, 0.00000,
+0.00000, 0.77647, 0.00000,
+0.00000, 0.78039, 0.00000,
+0.00000, 0.78431, 0.00000,
+0.00000, 0.78824, 0.00000,
+0.00000, 0.79216, 0.00000,
+0.00000, 0.79608, 0.00000,
+0.00000, 0.80000, 0.00000,
+0.00000, 0.80392, 0.00000,
+0.00000, 0.80784, 0.00000,
+0.00000, 0.81176, 0.00000,
+0.00000, 0.81569, 0.00000,
+0.00000, 0.81961, 0.00000,
+0.00000, 0.82353, 0.00000,
+0.00000, 0.82745, 0.00000,
+0.00000, 0.83137, 0.00000,
+0.00000, 0.83529, 0.00000,
+0.00000, 0.83922, 0.00000,
+0.00000, 0.84314, 0.00000,
+0.00000, 0.84706, 0.00000,
+0.00000, 0.85098, 0.00000,
+0.00000, 0.85490, 0.00000,
+0.00000, 0.85882, 0.00000,
+0.00000, 0.86275, 0.00000,
+0.00000, 0.86667, 0.00000,
+0.00000, 0.87059, 0.00000,
+0.00000, 0.87451, 0.00000,
+0.00000, 0.87843, 0.00000,
+0.00000, 0.88235, 0.00000,
+0.00000, 0.88627, 0.00000,
+0.00000, 0.89020, 0.00000,
+0.00000, 0.89412, 0.00000,
+0.00000, 0.89804, 0.00000,
+0.00000, 0.90196, 0.00000,
+0.00000, 0.90588, 0.00000,
+0.00000, 0.90980, 0.00000,
+0.00000, 0.91373, 0.00000,
+0.00000, 0.91765, 0.00000,
+0.00000, 0.92157, 0.00000,
+0.00000, 0.92549, 0.00000,
+0.00000, 0.92941, 0.00000,
+0.00000, 0.93333, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.94118, 0.00000,
+0.00000, 0.94510, 0.00000,
+0.00000, 0.94902, 0.00000,
+0.00000, 0.95294, 0.00000,
+0.00000, 0.95686, 0.00000,
+0.00000, 0.96078, 0.00000,
+0.00000, 0.96471, 0.00000,
+0.00000, 0.96863, 0.00000,
+0.00000, 0.97255, 0.00000,
+0.00000, 0.97647, 0.00000,
+0.00000, 0.98039, 0.00000,
+0.00000, 0.98431, 0.00000,
+0.00000, 0.98824, 0.00000,
+0.00000, 0.99216, 0.00000,
+0.00000, 0.99608, 0.00392,
+0.00000, 1.00000, 0.00784
diff --git a/vendor/x11iraf/ximtool/data/halley.lut b/vendor/x11iraf/ximtool/data/halley.lut
new file mode 100644
index 00000000..ac00326a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/halley.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.51765,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98431, 0.81176, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 1.00000,
+0.00000, 1.00000, 1.00000,
+0.47059, 0.78431, 1.00000,
+0.47059, 0.78431, 1.00000,
+0.47059, 0.78431, 1.00000,
+0.62745, 0.62745, 1.00000,
+0.62745, 0.62745, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+1.00000, 0.70588, 1.00000,
+1.00000, 0.70588, 1.00000,
+1.00000, 0.76863, 1.00000,
+1.00000, 0.86275, 1.00000,
+1.00000, 0.86275, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 0.89804, 1.00000,
+1.00000, 0.86275, 1.00000,
+1.00000, 0.86275, 1.00000,
+1.00000, 0.86275, 1.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.92157, 0.61961, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.78431, 0.47059, 1.00000,
+0.65882, 0.59608, 1.00000,
+0.62745, 0.62745, 1.00000,
+0.62745, 0.62745, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.70588,
+0.00000, 1.00000, 0.65490,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.36078, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.70588, 1.00000, 0.00000,
+0.98431, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+0.99608, 0.97647, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98431, 0.85098, 0.00000,
+0.98824, 0.77647, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+0.98824, 0.72549, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.36863, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.00000,
+1.00000, 0.00000, 0.46667,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 0.70588,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+1.00000, 0.00000, 1.00000,
+0.91373, 0.00000, 0.97255,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.70588, 0.00000, 0.90196,
+0.53333, 0.00000, 0.87451,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+0.47059, 0.00000, 0.86275,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+1.00000, 1.00000, 1.00000,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.86275,
+0.00000, 0.00000, 0.80392,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.70588,
+0.00000, 0.00000, 0.13725,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000,
+0.00000, 0.00000, 0.00000
diff --git a/vendor/x11iraf/ximtool/data/heat.lut b/vendor/x11iraf/ximtool/data/heat.lut
new file mode 100644
index 00000000..124a70f4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/heat.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.01176, 0.00392, 0.00000,
+0.02353, 0.00784, 0.00000,
+0.03529, 0.01176, 0.00000,
+0.04706, 0.01569, 0.00000,
+0.05882, 0.01961, 0.00000,
+0.07059, 0.02353, 0.00000,
+0.08235, 0.02745, 0.00000,
+0.09412, 0.03137, 0.00000,
+0.10588, 0.03529, 0.00000,
+0.11765, 0.03922, 0.00000,
+0.12941, 0.04314, 0.00000,
+0.14118, 0.04706, 0.00000,
+0.15294, 0.05098, 0.00000,
+0.16471, 0.05490, 0.00000,
+0.17647, 0.05882, 0.00000,
+0.18824, 0.06275, 0.00000,
+0.20000, 0.06667, 0.00000,
+0.21176, 0.07059, 0.00000,
+0.22353, 0.07451, 0.00000,
+0.23529, 0.07843, 0.00000,
+0.24706, 0.08235, 0.00000,
+0.25882, 0.08627, 0.00000,
+0.27059, 0.09020, 0.00000,
+0.28235, 0.09412, 0.00000,
+0.29412, 0.09804, 0.00000,
+0.30588, 0.10196, 0.00000,
+0.31765, 0.10588, 0.00000,
+0.32941, 0.10980, 0.00000,
+0.34118, 0.11373, 0.00000,
+0.35294, 0.11765, 0.00000,
+0.36471, 0.12157, 0.00000,
+0.37647, 0.12549, 0.00000,
+0.38824, 0.12941, 0.00000,
+0.40000, 0.13333, 0.00000,
+0.41176, 0.13725, 0.00000,
+0.42353, 0.14118, 0.00000,
+0.43529, 0.14510, 0.00000,
+0.44706, 0.14902, 0.00000,
+0.45882, 0.15294, 0.00000,
+0.47059, 0.15686, 0.00000,
+0.48235, 0.16078, 0.00000,
+0.49412, 0.16471, 0.00000,
+0.50588, 0.16863, 0.00000,
+0.51765, 0.17255, 0.00000,
+0.52941, 0.17647, 0.00000,
+0.54118, 0.18039, 0.00000,
+0.55294, 0.18431, 0.00000,
+0.56471, 0.18824, 0.00000,
+0.57647, 0.19216, 0.00000,
+0.58824, 0.19608, 0.00000,
+0.60000, 0.20000, 0.00000,
+0.61176, 0.20392, 0.00000,
+0.62353, 0.20784, 0.00000,
+0.63529, 0.21176, 0.00000,
+0.64706, 0.21569, 0.00000,
+0.65882, 0.21961, 0.00000,
+0.67059, 0.22353, 0.00000,
+0.68235, 0.22745, 0.00000,
+0.69412, 0.23137, 0.00000,
+0.70588, 0.23529, 0.00000,
+0.71765, 0.23922, 0.00000,
+0.72941, 0.24314, 0.00000,
+0.74118, 0.24706, 0.00000,
+0.75294, 0.25098, 0.00000,
+0.76471, 0.25490, 0.00000,
+0.77647, 0.25882, 0.00000,
+0.78824, 0.26275, 0.00000,
+0.80000, 0.26667, 0.00000,
+0.81176, 0.27059, 0.00000,
+0.82353, 0.27451, 0.00000,
+0.83529, 0.27843, 0.00000,
+0.84706, 0.28235, 0.00000,
+0.85882, 0.28627, 0.00000,
+0.87059, 0.29020, 0.00000,
+0.88235, 0.29412, 0.00000,
+0.89412, 0.29804, 0.00000,
+0.90588, 0.30196, 0.00000,
+0.91765, 0.30588, 0.00000,
+0.92941, 0.30980, 0.00000,
+0.94118, 0.31373, 0.00000,
+0.95294, 0.31765, 0.00000,
+0.96471, 0.32157, 0.00000,
+0.97647, 0.32549, 0.00000,
+0.98824, 0.32941, 0.00000,
+1.00000, 0.33333, 0.00000,
+1.00000, 0.33725, 0.00000,
+1.00000, 0.34118, 0.00000,
+1.00000, 0.34510, 0.00000,
+1.00000, 0.34902, 0.00000,
+1.00000, 0.35294, 0.00000,
+1.00000, 0.35686, 0.00000,
+1.00000, 0.36078, 0.00000,
+1.00000, 0.36471, 0.00000,
+1.00000, 0.36863, 0.00000,
+1.00000, 0.37255, 0.00000,
+1.00000, 0.37647, 0.00000,
+1.00000, 0.38039, 0.00000,
+1.00000, 0.38431, 0.00000,
+1.00000, 0.38824, 0.00000,
+1.00000, 0.39216, 0.00000,
+1.00000, 0.39608, 0.00000,
+1.00000, 0.40000, 0.00000,
+1.00000, 0.40392, 0.00000,
+1.00000, 0.40784, 0.00000,
+1.00000, 0.41176, 0.00000,
+1.00000, 0.41569, 0.00000,
+1.00000, 0.41961, 0.00000,
+1.00000, 0.42353, 0.00000,
+1.00000, 0.42745, 0.00000,
+1.00000, 0.43137, 0.00000,
+1.00000, 0.43529, 0.00000,
+1.00000, 0.43922, 0.00000,
+1.00000, 0.44314, 0.00000,
+1.00000, 0.44706, 0.00000,
+1.00000, 0.45098, 0.00000,
+1.00000, 0.45490, 0.00000,
+1.00000, 0.45882, 0.00000,
+1.00000, 0.46275, 0.00000,
+1.00000, 0.46667, 0.00000,
+1.00000, 0.47059, 0.00000,
+1.00000, 0.47451, 0.00000,
+1.00000, 0.47843, 0.00000,
+1.00000, 0.48235, 0.00000,
+1.00000, 0.48627, 0.00000,
+1.00000, 0.49020, 0.00000,
+1.00000, 0.49412, 0.00000,
+1.00000, 0.49804, 0.00000,
+1.00000, 0.50196, 0.00000,
+1.00000, 0.50588, 0.00000,
+1.00000, 0.50980, 0.00000,
+1.00000, 0.51373, 0.00000,
+1.00000, 0.51765, 0.00000,
+1.00000, 0.52157, 0.00000,
+1.00000, 0.52549, 0.00000,
+1.00000, 0.52941, 0.00000,
+1.00000, 0.53333, 0.00000,
+1.00000, 0.53725, 0.00000,
+1.00000, 0.54118, 0.00000,
+1.00000, 0.54510, 0.00000,
+1.00000, 0.54902, 0.00000,
+1.00000, 0.55294, 0.00000,
+1.00000, 0.55686, 0.00000,
+1.00000, 0.56078, 0.00000,
+1.00000, 0.56471, 0.00000,
+1.00000, 0.56863, 0.00000,
+1.00000, 0.57255, 0.00000,
+1.00000, 0.57647, 0.00000,
+1.00000, 0.58039, 0.00000,
+1.00000, 0.58431, 0.00000,
+1.00000, 0.58824, 0.00000,
+1.00000, 0.59216, 0.00000,
+1.00000, 0.59608, 0.00000,
+1.00000, 0.60000, 0.00000,
+1.00000, 0.60392, 0.00000,
+1.00000, 0.60784, 0.00000,
+1.00000, 0.61176, 0.00000,
+1.00000, 0.61569, 0.00000,
+1.00000, 0.61961, 0.00000,
+1.00000, 0.62353, 0.00000,
+1.00000, 0.62745, 0.00000,
+1.00000, 0.63137, 0.00000,
+1.00000, 0.63529, 0.00000,
+1.00000, 0.63922, 0.00000,
+1.00000, 0.64314, 0.00000,
+1.00000, 0.64706, 0.00000,
+1.00000, 0.65098, 0.01176,
+1.00000, 0.65490, 0.02353,
+1.00000, 0.65882, 0.03529,
+1.00000, 0.66275, 0.04706,
+1.00000, 0.66667, 0.05882,
+1.00000, 0.67059, 0.07059,
+1.00000, 0.67451, 0.08235,
+1.00000, 0.67843, 0.09412,
+1.00000, 0.68235, 0.10588,
+1.00000, 0.68627, 0.11765,
+1.00000, 0.69020, 0.12941,
+1.00000, 0.69412, 0.14118,
+1.00000, 0.69804, 0.15294,
+1.00000, 0.70196, 0.16471,
+1.00000, 0.70588, 0.17647,
+1.00000, 0.70980, 0.18824,
+1.00000, 0.71373, 0.20000,
+1.00000, 0.71765, 0.21176,
+1.00000, 0.72157, 0.22353,
+1.00000, 0.72549, 0.23529,
+1.00000, 0.72941, 0.24706,
+1.00000, 0.73333, 0.25882,
+1.00000, 0.73725, 0.27059,
+1.00000, 0.74118, 0.28235,
+1.00000, 0.74510, 0.29412,
+1.00000, 0.74902, 0.30588,
+1.00000, 0.75294, 0.31765,
+1.00000, 0.75686, 0.32941,
+1.00000, 0.76078, 0.34118,
+1.00000, 0.76471, 0.35294,
+1.00000, 0.76863, 0.36471,
+1.00000, 0.77255, 0.37647,
+1.00000, 0.77647, 0.38824,
+1.00000, 0.78039, 0.40000,
+1.00000, 0.78431, 0.41176,
+1.00000, 0.78824, 0.42353,
+1.00000, 0.79216, 0.43529,
+1.00000, 0.79608, 0.44706,
+1.00000, 0.80000, 0.45882,
+1.00000, 0.80392, 0.47059,
+1.00000, 0.80784, 0.48235,
+1.00000, 0.81176, 0.49412,
+1.00000, 0.81569, 0.50588,
+1.00000, 0.81961, 0.51765,
+1.00000, 0.82353, 0.52941,
+1.00000, 0.82745, 0.54118,
+1.00000, 0.83137, 0.55294,
+1.00000, 0.83529, 0.56471,
+1.00000, 0.83922, 0.57647,
+1.00000, 0.84314, 0.58824,
+1.00000, 0.84706, 0.60000,
+1.00000, 0.85098, 0.61176,
+1.00000, 0.85490, 0.62353,
+1.00000, 0.85882, 0.63529,
+1.00000, 0.86275, 0.64706,
+1.00000, 0.86667, 0.65882,
+1.00000, 0.87059, 0.67059,
+1.00000, 0.87451, 0.68235,
+1.00000, 0.87843, 0.69412,
+1.00000, 0.88235, 0.70588,
+1.00000, 0.88627, 0.71765,
+1.00000, 0.89020, 0.72941,
+1.00000, 0.89412, 0.74118,
+1.00000, 0.89804, 0.75294,
+1.00000, 0.90196, 0.76471,
+1.00000, 0.90588, 0.77647,
+1.00000, 0.90980, 0.78824,
+1.00000, 0.91373, 0.80000,
+1.00000, 0.91765, 0.81176,
+1.00000, 0.92157, 0.82353,
+1.00000, 0.92549, 0.83529,
+1.00000, 0.92941, 0.84706,
+1.00000, 0.93333, 0.85882,
+1.00000, 0.93725, 0.87059,
+1.00000, 0.94118, 0.88235,
+1.00000, 0.94510, 0.89412,
+1.00000, 0.94902, 0.90588,
+1.00000, 0.95294, 0.91765,
+1.00000, 0.95686, 0.92941,
+1.00000, 0.96078, 0.94118,
+1.00000, 0.96471, 0.95294,
+1.00000, 0.96863, 0.96471,
+1.00000, 0.97255, 0.97647,
+1.00000, 0.97647, 0.98824,
+1.00000, 0.98039, 1.00000,
+1.00000, 0.98431, 1.00000,
+1.00000, 0.98824, 1.00000,
+1.00000, 0.99216, 1.00000,
+1.00000, 0.99608, 1.00000,
+1.00000, 1.00000, 1.00000
diff --git a/vendor/x11iraf/ximtool/data/hflip.xbm b/vendor/x11iraf/ximtool/data/hflip.xbm
new file mode 100644
index 00000000..44b105bb
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/hflip.xbm
@@ -0,0 +1,6 @@
+#define hflip_width 16
+#define hflip_height 16
+static char hflip_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x06, 0x60,
+ 0x0e, 0x70, 0xfe, 0x7f, 0xfe, 0x7f, 0x0e, 0x70, 0x06, 0x60, 0x02, 0x40,
+ 0x02, 0x40, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/larrow.xbm b/vendor/x11iraf/ximtool/data/larrow.xbm
new file mode 100644
index 00000000..47272aa6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/larrow.xbm
@@ -0,0 +1,6 @@
+#define larrow_width 16
+#define larrow_height 16
+static char larrow_bits[] = {
+ 0x00, 0x02, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x1f, 0xe0, 0x1f, 0xf0, 0x1f,
+ 0xf8, 0x1f, 0xfc, 0x1f, 0xfc, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xe0, 0x1f,
+ 0xc0, 0x1f, 0x80, 0x03, 0x00, 0x03, 0x00, 0x02};
diff --git a/vendor/x11iraf/ximtool/data/panel.xbm b/vendor/x11iraf/ximtool/data/panel.xbm
new file mode 100644
index 00000000..2b2b99b1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/panel.xbm
@@ -0,0 +1,6 @@
+#define panel_width 16
+#define panel_height 16
+static char panel_bits[] = {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f};
diff --git a/vendor/x11iraf/ximtool/data/panel1.xbm b/vendor/x11iraf/ximtool/data/panel1.xbm
new file mode 100644
index 00000000..405605c2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/panel1.xbm
@@ -0,0 +1,6 @@
+#define panel1_width 16
+#define panel1_height 16
+static char panel1_bits[] = {
+ 0x00, 0x00, 0xfc, 0x3f, 0xfc, 0x3f, 0x0c, 0x30, 0x0c, 0x30, 0xcc, 0x33,
+ 0x4c, 0x32, 0x4c, 0x32, 0x4c, 0x32, 0x4c, 0x32, 0x4c, 0x32, 0xcc, 0x33,
+ 0x0c, 0x30, 0x0c, 0x30, 0xfc, 0x3f, 0xfc, 0x3f};
diff --git a/vendor/x11iraf/ximtool/data/qmark.xbm b/vendor/x11iraf/ximtool/data/qmark.xbm
new file mode 100644
index 00000000..f6edbc04
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/qmark.xbm
@@ -0,0 +1,6 @@
+#define qmark_width 16
+#define qmark_height 16
+static char qmark_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/rainbow.lut b/vendor/x11iraf/ximtool/data/rainbow.lut
new file mode 100644
index 00000000..a26cbca6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/rainbow.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.16471,
+0.02745, 0.00000, 0.18431,
+0.05882, 0.00000, 0.20000,
+0.08627, 0.00000, 0.21961,
+0.11373, 0.00000, 0.23922,
+0.14510, 0.00000, 0.25882,
+0.17647, 0.00000, 0.27843,
+0.20392, 0.00000, 0.29804,
+0.23137, 0.00000, 0.31765,
+0.26275, 0.00000, 0.33725,
+0.29412, 0.00000, 0.35686,
+0.32157, 0.00000, 0.37647,
+0.35294, 0.00000, 0.39608,
+0.38039, 0.00000, 0.41569,
+0.41176, 0.00000, 0.43529,
+0.43922, 0.00000, 0.45490,
+0.47059, 0.00000, 0.47451,
+0.49804, 0.00000, 0.49412,
+0.52941, 0.00000, 0.51373,
+0.55686, 0.00000, 0.53725,
+0.58824, 0.00000, 0.55686,
+0.55686, 0.00000, 0.57647,
+0.52941, 0.00000, 0.59608,
+0.49804, 0.00000, 0.61569,
+0.47059, 0.00000, 0.63922,
+0.43922, 0.00000, 0.65882,
+0.41176, 0.00000, 0.67843,
+0.38039, 0.00000, 0.70196,
+0.35294, 0.00000, 0.72157,
+0.32157, 0.00000, 0.74118,
+0.29412, 0.00000, 0.76471,
+0.26275, 0.00000, 0.78431,
+0.23137, 0.00000, 0.80392,
+0.20392, 0.00000, 0.82745,
+0.17647, 0.00000, 0.84706,
+0.14510, 0.00000, 0.87059,
+0.11373, 0.00000, 0.89020,
+0.08627, 0.00000, 0.91373,
+0.05882, 0.00000, 0.93333,
+0.02745, 0.00000, 0.95686,
+0.00000, 0.00000, 0.97647,
+0.00000, 0.00000, 1.00000,
+0.00000, 0.02353, 0.97647,
+0.00000, 0.04706, 0.95686,
+0.00000, 0.06275, 0.93333,
+0.00000, 0.08235, 0.91373,
+0.00000, 0.09804, 0.89020,
+0.00000, 0.11373, 0.87059,
+0.00000, 0.12941, 0.84706,
+0.00000, 0.14118, 0.82745,
+0.00000, 0.15686, 0.80392,
+0.00000, 0.16863, 0.78431,
+0.00000, 0.18431, 0.76471,
+0.00000, 0.19608, 0.74118,
+0.00000, 0.21176, 0.72157,
+0.00000, 0.22353, 0.70196,
+0.00000, 0.23529, 0.67843,
+0.00000, 0.25098, 0.65882,
+0.00000, 0.26275, 0.63922,
+0.00000, 0.27451, 0.61569,
+0.00000, 0.28627, 0.59608,
+0.00000, 0.29804, 0.57647,
+0.00000, 0.30980, 0.55686,
+0.00000, 0.32157, 0.53725,
+0.00000, 0.33333, 0.51373,
+0.00000, 0.34510, 0.49412,
+0.00000, 0.35686, 0.47451,
+0.00000, 0.36863, 0.45490,
+0.00000, 0.38039, 0.43529,
+0.00000, 0.39216, 0.41569,
+0.00000, 0.40392, 0.39608,
+0.00000, 0.41176, 0.37647,
+0.00000, 0.42353, 0.35686,
+0.00000, 0.43529, 0.33725,
+0.00000, 0.44706, 0.31765,
+0.00000, 0.45882, 0.29804,
+0.00000, 0.46667, 0.27843,
+0.00000, 0.47843, 0.25882,
+0.00000, 0.49020, 0.23922,
+0.00000, 0.49804, 0.21961,
+0.00000, 0.50980, 0.20000,
+0.00000, 0.52157, 0.18431,
+0.00000, 0.52941, 0.16471,
+0.00000, 0.54118, 0.14510,
+0.00000, 0.55294, 0.12941,
+0.00000, 0.56078, 0.10980,
+0.00000, 0.57255, 0.09412,
+0.00000, 0.58431, 0.07451,
+0.00000, 0.59216, 0.05882,
+0.00000, 0.60392, 0.04314,
+0.00000, 0.61176, 0.02745,
+0.00000, 0.62353, 0.01176,
+0.00000, 0.63137, 0.00000,
+0.00000, 0.64314, 0.00000,
+0.00000, 0.65098, 0.00000,
+0.00000, 0.66275, 0.00000,
+0.00000, 0.67059, 0.00000,
+0.00000, 0.68235, 0.00000,
+0.00000, 0.69020, 0.00000,
+0.00000, 0.70196, 0.00000,
+0.00000, 0.70980, 0.00000,
+0.00000, 0.72157, 0.00000,
+0.00000, 0.72941, 0.00000,
+0.00000, 0.74118, 0.00000,
+0.00000, 0.74902, 0.00000,
+0.00000, 0.76078, 0.00000,
+0.00000, 0.76863, 0.00000,
+0.00000, 0.77647, 0.00000,
+0.00000, 0.78824, 0.00000,
+0.00000, 0.79608, 0.00000,
+0.00000, 0.80784, 0.00000,
+0.00000, 0.81569, 0.00000,
+0.00000, 0.82353, 0.00000,
+0.00000, 0.83529, 0.00000,
+0.00000, 0.84314, 0.00000,
+0.00000, 0.85490, 0.00000,
+0.00000, 0.86275, 0.00000,
+0.00000, 0.87059, 0.00000,
+0.00000, 0.88235, 0.00000,
+0.00000, 0.89020, 0.00000,
+0.00000, 0.89804, 0.00000,
+0.00000, 0.90980, 0.00000,
+0.00000, 0.91765, 0.00000,
+0.00000, 0.92549, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.94510, 0.00000,
+0.00000, 0.95294, 0.00000,
+0.00000, 0.96078, 0.00000,
+0.00000, 0.97255, 0.00000,
+0.00000, 0.98039, 0.00000,
+0.00000, 0.98824, 0.00000,
+0.00000, 1.00000, 0.00000,
+0.00000, 0.98824, 0.00000,
+0.00000, 0.98039, 0.00000,
+0.00000, 0.97255, 0.00000,
+0.00000, 0.96078, 0.00000,
+0.00000, 0.95294, 0.00000,
+0.00000, 0.94510, 0.00000,
+0.00000, 0.93725, 0.00000,
+0.00000, 0.92549, 0.00000,
+0.00000, 0.91765, 0.00000,
+0.00000, 0.90980, 0.00000,
+0.00000, 0.89804, 0.00000,
+0.00000, 0.89020, 0.00000,
+0.00000, 0.88235, 0.00000,
+0.00000, 0.87059, 0.00000,
+0.00000, 0.86275, 0.00000,
+0.00000, 0.85490, 0.00000,
+0.00000, 0.84314, 0.00000,
+0.00000, 0.83529, 0.00000,
+0.00000, 0.82353, 0.00000,
+0.00000, 0.81569, 0.00000,
+0.00000, 0.80784, 0.00000,
+0.00000, 0.79608, 0.00000,
+0.00000, 0.78824, 0.00000,
+0.00000, 0.77647, 0.00000,
+0.00784, 0.76863, 0.00000,
+0.03529, 0.77647, 0.00000,
+0.06667, 0.78824, 0.00000,
+0.09804, 0.80000, 0.00000,
+0.12941, 0.81176, 0.00000,
+0.16471, 0.82745, 0.00000,
+0.20000, 0.84314, 0.00000,
+0.23529, 0.85882, 0.00000,
+0.26667, 0.87059, 0.00000,
+0.30588, 0.89020, 0.00000,
+0.34118, 0.90196, 0.00000,
+0.37647, 0.92157, 0.00000,
+0.41176, 0.93333, 0.00000,
+0.44706, 0.95294, 0.00000,
+0.48627, 0.96863, 0.00000,
+0.52157, 0.98824, 0.00000,
+0.56078, 1.00000, 0.00000,
+0.59608, 1.00000, 0.00000,
+0.63529, 1.00000, 0.00000,
+0.67059, 1.00000, 0.00000,
+0.70980, 1.00000, 0.00000,
+0.74902, 1.00000, 0.00000,
+0.78431, 1.00000, 0.00000,
+0.82353, 1.00000, 0.00000,
+0.85882, 1.00000, 0.00000,
+0.89804, 1.00000, 0.00000,
+0.93333, 1.00000, 0.00000,
+0.97647, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+1.00000, 1.00000, 0.00000,
+0.99608, 1.00000, 0.00000,
+0.98039, 1.00000, 0.00000,
+0.96078, 0.97647, 0.00000,
+0.94510, 0.93725, 0.00000,
+0.92549, 0.89804, 0.00000,
+0.90980, 0.85882, 0.00000,
+0.89412, 0.81961, 0.00000,
+0.87451, 0.78039, 0.00000,
+0.85882, 0.74118, 0.00000,
+0.83922, 0.70196, 0.00000,
+0.82353, 0.66275, 0.00000,
+0.80392, 0.62353, 0.00000,
+0.78824, 0.58431, 0.00000,
+0.76863, 0.54510, 0.00000,
+0.75686, 0.50980, 0.00000,
+0.74118, 0.46667, 0.00000,
+0.72549, 0.43137, 0.00000,
+0.70980, 0.39216, 0.00000,
+0.69412, 0.35294, 0.00000,
+0.68235, 0.31765, 0.00000,
+0.66275, 0.27451, 0.00000,
+0.65098, 0.23922, 0.00000,
+0.63529, 0.20000, 0.00000,
+0.62745, 0.16863, 0.00000,
+0.61569, 0.12941, 0.00000,
+0.60784, 0.09804, 0.00000,
+0.61961, 0.08235, 0.00000,
+0.62745, 0.06275, 0.00000,
+0.63922, 0.04706, 0.00000,
+0.64706, 0.02353, 0.00000,
+0.65882, 0.00000, 0.00000,
+0.66667, 0.00000, 0.00000,
+0.67843, 0.00000, 0.00000,
+0.68627, 0.00000, 0.00000,
+0.69804, 0.00000, 0.00000,
+0.70980, 0.00000, 0.00000,
+0.71765, 0.00000, 0.00000,
+0.72941, 0.00000, 0.00000,
+0.73725, 0.00000, 0.00000,
+0.74902, 0.00000, 0.00000,
+0.75686, 0.00000, 0.00000,
+0.76863, 0.00000, 0.00000,
+0.77647, 0.00000, 0.00000,
+0.78824, 0.00000, 0.00000,
+0.80000, 0.00784, 0.00784,
+0.80784, 0.02745, 0.02745,
+0.81961, 0.05098, 0.05098,
+0.82745, 0.08235, 0.08235,
+0.83922, 0.11373, 0.11373,
+0.84706, 0.14902, 0.14902,
+0.85882, 0.19216, 0.19216,
+0.86667, 0.23137, 0.23137,
+0.87843, 0.27843, 0.27843,
+0.88627, 0.32549, 0.32549,
+0.89804, 0.37647, 0.37647,
+0.90980, 0.43137, 0.43137,
+0.91765, 0.48627, 0.48627,
+0.92941, 0.54118, 0.54118,
+0.93725, 0.60000, 0.60000,
+0.94902, 0.66275, 0.66275,
+0.95686, 0.72549, 0.72549,
+0.96863, 0.79216, 0.79216,
+0.97647, 0.85882, 0.85882,
+0.98824, 0.92941, 0.92941,
+1.00000, 1.00000, 1.00000
diff --git a/vendor/x11iraf/ximtool/data/rarrow.xbm b/vendor/x11iraf/ximtool/data/rarrow.xbm
new file mode 100644
index 00000000..ef327106
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/rarrow.xbm
@@ -0,0 +1,6 @@
+#define rarrow_width 16
+#define rarrow_height 16
+static char rarrow_bits[] = {
+ 0x40, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xf8, 0x03, 0xf8, 0x07, 0xf8, 0x0f,
+ 0xf8, 0x1f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x1f, 0xf8, 0x0f, 0xf8, 0x07,
+ 0xf8, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x40, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/red.lut b/vendor/x11iraf/ximtool/data/red.lut
new file mode 100644
index 00000000..0af15037
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/red.lut
@@ -0,0 +1,257 @@
+256,
+0.00000, 0.00000, 0.00000,
+0.00392, 0.00000, 0.00000,
+0.00784, 0.00000, 0.00000,
+0.01176, 0.00000, 0.00000,
+0.01569, 0.00000, 0.00000,
+0.01961, 0.00000, 0.00000,
+0.02353, 0.00000, 0.00000,
+0.02745, 0.00000, 0.00000,
+0.03137, 0.00000, 0.00000,
+0.03529, 0.00000, 0.00000,
+0.03922, 0.00000, 0.00000,
+0.04314, 0.00000, 0.00000,
+0.04706, 0.00000, 0.00000,
+0.05098, 0.00000, 0.00000,
+0.05490, 0.00000, 0.00000,
+0.05882, 0.00000, 0.00000,
+0.06275, 0.00000, 0.00000,
+0.06667, 0.00000, 0.00000,
+0.07059, 0.00000, 0.00000,
+0.07451, 0.00000, 0.00000,
+0.07843, 0.00000, 0.00000,
+0.08235, 0.00000, 0.00000,
+0.08627, 0.00000, 0.00000,
+0.09020, 0.00000, 0.00000,
+0.09412, 0.00000, 0.00000,
+0.09804, 0.00000, 0.00000,
+0.10196, 0.00000, 0.00000,
+0.10588, 0.00000, 0.00000,
+0.10980, 0.00000, 0.00000,
+0.11373, 0.00000, 0.00000,
+0.11765, 0.00000, 0.00000,
+0.12157, 0.00000, 0.00000,
+0.12549, 0.00000, 0.00000,
+0.12941, 0.00000, 0.00000,
+0.13333, 0.00000, 0.00000,
+0.13725, 0.00000, 0.00000,
+0.14118, 0.00000, 0.00000,
+0.14510, 0.00000, 0.00000,
+0.14902, 0.00000, 0.00000,
+0.15294, 0.00000, 0.00000,
+0.15686, 0.00000, 0.00000,
+0.16078, 0.00000, 0.00000,
+0.16471, 0.00000, 0.00000,
+0.16863, 0.00000, 0.00000,
+0.17255, 0.00000, 0.00000,
+0.17647, 0.00000, 0.00000,
+0.18039, 0.00000, 0.00000,
+0.18431, 0.00000, 0.00000,
+0.18824, 0.00000, 0.00000,
+0.19216, 0.00000, 0.00000,
+0.19608, 0.00000, 0.00000,
+0.20000, 0.00000, 0.00000,
+0.20392, 0.00000, 0.00000,
+0.20784, 0.00000, 0.00000,
+0.21176, 0.00000, 0.00000,
+0.21569, 0.00000, 0.00000,
+0.21961, 0.00000, 0.00000,
+0.22353, 0.00000, 0.00000,
+0.22745, 0.00000, 0.00000,
+0.23137, 0.00000, 0.00000,
+0.23529, 0.00000, 0.00000,
+0.23922, 0.00000, 0.00000,
+0.24314, 0.00000, 0.00000,
+0.24706, 0.00000, 0.00000,
+0.25098, 0.00000, 0.00000,
+0.25490, 0.00000, 0.00000,
+0.25882, 0.00000, 0.00000,
+0.26275, 0.00000, 0.00000,
+0.26667, 0.00000, 0.00000,
+0.27059, 0.00000, 0.00000,
+0.27451, 0.00000, 0.00000,
+0.27843, 0.00000, 0.00000,
+0.28235, 0.00000, 0.00000,
+0.28627, 0.00000, 0.00000,
+0.29020, 0.00000, 0.00000,
+0.29412, 0.00000, 0.00000,
+0.29804, 0.00000, 0.00000,
+0.30196, 0.00000, 0.00000,
+0.30588, 0.00000, 0.00000,
+0.30980, 0.00000, 0.00000,
+0.31373, 0.00000, 0.00000,
+0.31765, 0.00000, 0.00000,
+0.32157, 0.00000, 0.00000,
+0.32549, 0.00000, 0.00000,
+0.32941, 0.00000, 0.00000,
+0.33333, 0.00000, 0.00000,
+0.33725, 0.00000, 0.00000,
+0.34118, 0.00000, 0.00000,
+0.34510, 0.00000, 0.00000,
+0.34902, 0.00000, 0.00000,
+0.35294, 0.00000, 0.00000,
+0.35686, 0.00000, 0.00000,
+0.36078, 0.00000, 0.00000,
+0.36471, 0.00000, 0.00000,
+0.36863, 0.00000, 0.00000,
+0.37255, 0.00000, 0.00000,
+0.37647, 0.00000, 0.00000,
+0.38039, 0.00000, 0.00000,
+0.38431, 0.00000, 0.00000,
+0.38824, 0.00000, 0.00000,
+0.39216, 0.00000, 0.00000,
+0.39608, 0.00000, 0.00000,
+0.40000, 0.00000, 0.00000,
+0.40392, 0.00000, 0.00000,
+0.40784, 0.00000, 0.00000,
+0.41176, 0.00000, 0.00000,
+0.41569, 0.00000, 0.00000,
+0.41961, 0.00000, 0.00000,
+0.42353, 0.00000, 0.00000,
+0.42745, 0.00000, 0.00000,
+0.43137, 0.00000, 0.00000,
+0.43529, 0.00000, 0.00000,
+0.43922, 0.00000, 0.00000,
+0.44314, 0.00000, 0.00000,
+0.44706, 0.00000, 0.00000,
+0.45098, 0.00000, 0.00000,
+0.45490, 0.00000, 0.00000,
+0.45882, 0.00000, 0.00000,
+0.46275, 0.00000, 0.00000,
+0.46667, 0.00000, 0.00000,
+0.47059, 0.00000, 0.00000,
+0.47451, 0.00000, 0.00000,
+0.47843, 0.00000, 0.00000,
+0.48235, 0.00000, 0.00000,
+0.48627, 0.00000, 0.00000,
+0.49020, 0.00000, 0.00000,
+0.49412, 0.00000, 0.00000,
+0.49804, 0.00000, 0.00000,
+0.50196, 0.00000, 0.00000,
+0.50588, 0.00000, 0.00000,
+0.50980, 0.00000, 0.00000,
+0.51373, 0.00000, 0.00000,
+0.51765, 0.00000, 0.00000,
+0.52157, 0.00000, 0.00000,
+0.52549, 0.00000, 0.00000,
+0.52941, 0.00000, 0.00000,
+0.53333, 0.00000, 0.00000,
+0.53725, 0.00000, 0.00000,
+0.54118, 0.00000, 0.00000,
+0.54510, 0.00000, 0.00000,
+0.54902, 0.00000, 0.00000,
+0.55294, 0.00000, 0.00000,
+0.55686, 0.00000, 0.00000,
+0.56078, 0.00000, 0.00000,
+0.56471, 0.00000, 0.00000,
+0.56863, 0.00000, 0.00000,
+0.57255, 0.00000, 0.00000,
+0.57647, 0.00000, 0.00000,
+0.58039, 0.00000, 0.00000,
+0.58431, 0.00000, 0.00000,
+0.58824, 0.00000, 0.00000,
+0.59216, 0.00000, 0.00000,
+0.59608, 0.00000, 0.00000,
+0.60000, 0.00000, 0.00000,
+0.60392, 0.00000, 0.00000,
+0.60784, 0.00000, 0.00000,
+0.61176, 0.00000, 0.00000,
+0.61569, 0.00000, 0.00000,
+0.61961, 0.00000, 0.00000,
+0.62353, 0.00000, 0.00000,
+0.62745, 0.00000, 0.00000,
+0.63137, 0.00000, 0.00000,
+0.63529, 0.00000, 0.00000,
+0.63922, 0.00000, 0.00000,
+0.64314, 0.00000, 0.00000,
+0.64706, 0.00000, 0.00000,
+0.65098, 0.00000, 0.00000,
+0.65490, 0.00000, 0.00000,
+0.65882, 0.00000, 0.00000,
+0.66275, 0.00000, 0.00000,
+0.66667, 0.00000, 0.00000,
+0.67059, 0.00000, 0.00000,
+0.67451, 0.00000, 0.00000,
+0.67843, 0.00000, 0.00000,
+0.68235, 0.00000, 0.00000,
+0.68627, 0.00000, 0.00000,
+0.69020, 0.00000, 0.00000,
+0.69412, 0.00000, 0.00000,
+0.69804, 0.00000, 0.00000,
+0.70196, 0.00000, 0.00000,
+0.70588, 0.00000, 0.00000,
+0.70980, 0.00000, 0.00000,
+0.71373, 0.00000, 0.00000,
+0.71765, 0.00000, 0.00000,
+0.72157, 0.00000, 0.00000,
+0.72549, 0.00000, 0.00000,
+0.72941, 0.00000, 0.00000,
+0.73333, 0.00000, 0.00000,
+0.73725, 0.00000, 0.00000,
+0.74118, 0.00000, 0.00000,
+0.74510, 0.00000, 0.00000,
+0.74902, 0.00000, 0.00000,
+0.75294, 0.00000, 0.00000,
+0.75686, 0.00000, 0.00000,
+0.76078, 0.00000, 0.00000,
+0.76471, 0.00000, 0.00000,
+0.76863, 0.00000, 0.00000,
+0.77255, 0.00000, 0.00000,
+0.77647, 0.00000, 0.00000,
+0.78039, 0.00000, 0.00000,
+0.78431, 0.00000, 0.00000,
+0.78824, 0.00000, 0.00000,
+0.79216, 0.00000, 0.00000,
+0.79608, 0.00000, 0.00000,
+0.80000, 0.00000, 0.00000,
+0.80392, 0.00000, 0.00000,
+0.80784, 0.00000, 0.00000,
+0.81176, 0.00000, 0.00000,
+0.81569, 0.00000, 0.00000,
+0.81961, 0.00000, 0.00000,
+0.82353, 0.00000, 0.00000,
+0.82745, 0.00000, 0.00000,
+0.83137, 0.00000, 0.00000,
+0.83529, 0.00000, 0.00000,
+0.83922, 0.00000, 0.00000,
+0.84314, 0.00000, 0.00000,
+0.84706, 0.00000, 0.00000,
+0.85098, 0.00000, 0.00000,
+0.85490, 0.00000, 0.00000,
+0.85882, 0.00000, 0.00000,
+0.86275, 0.00000, 0.00000,
+0.86667, 0.00000, 0.00000,
+0.87059, 0.00000, 0.00000,
+0.87451, 0.00000, 0.00000,
+0.87843, 0.00000, 0.00000,
+0.88235, 0.00000, 0.00000,
+0.88627, 0.00000, 0.00000,
+0.89020, 0.00000, 0.00000,
+0.89412, 0.00000, 0.00000,
+0.89804, 0.00000, 0.00000,
+0.90196, 0.00000, 0.00000,
+0.90588, 0.00000, 0.00000,
+0.90980, 0.00000, 0.00000,
+0.91373, 0.00000, 0.00000,
+0.91765, 0.00000, 0.00000,
+0.92157, 0.00000, 0.00000,
+0.92549, 0.00000, 0.00000,
+0.92941, 0.00000, 0.00000,
+0.93333, 0.00000, 0.00000,
+0.93725, 0.00000, 0.00000,
+0.94118, 0.00000, 0.00000,
+0.94510, 0.00000, 0.00000,
+0.94902, 0.00000, 0.00000,
+0.95294, 0.00000, 0.00000,
+0.95686, 0.00000, 0.00000,
+0.96078, 0.00000, 0.00000,
+0.96471, 0.00000, 0.00000,
+0.96863, 0.00000, 0.00000,
+0.97255, 0.00000, 0.00000,
+0.97647, 0.00000, 0.00000,
+0.98039, 0.00000, 0.00000,
+0.98431, 0.00000, 0.00000,
+0.98824, 0.00000, 0.00000,
+0.99216, 0.00000, 0.00000,
+0.99608, 0.00000, 0.00392,
+1.00000, 0.00000, 0.00784
diff --git a/vendor/x11iraf/ximtool/data/solid.xbm b/vendor/x11iraf/ximtool/data/solid.xbm
new file mode 100644
index 00000000..4e24b3a0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/solid.xbm
@@ -0,0 +1,19 @@
+#define solid_width 64
+#define solid_height 24
+static char solid_bits[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/staircase.lut b/vendor/x11iraf/ximtool/data/staircase.lut
new file mode 100644
index 00000000..88e84057
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/staircase.lut
@@ -0,0 +1,257 @@
+256,
+0.00392, 0.00392, 0.31373,
+0.00784, 0.00784, 0.31373,
+0.01176, 0.01176, 0.31373,
+0.01569, 0.01569, 0.31373,
+0.01961, 0.01961, 0.31373,
+0.02353, 0.02353, 0.31373,
+0.02745, 0.02745, 0.31373,
+0.03137, 0.03137, 0.31373,
+0.03529, 0.03529, 0.31373,
+0.03922, 0.03922, 0.31373,
+0.04314, 0.04314, 0.31373,
+0.04706, 0.04706, 0.31373,
+0.05098, 0.05098, 0.31373,
+0.05490, 0.05490, 0.31373,
+0.05882, 0.05882, 0.31373,
+0.06275, 0.06275, 0.31373,
+0.06667, 0.06667, 0.47059,
+0.07059, 0.07059, 0.47059,
+0.07451, 0.07451, 0.47059,
+0.07843, 0.07843, 0.47059,
+0.08235, 0.08235, 0.47059,
+0.08627, 0.08627, 0.47059,
+0.09020, 0.09020, 0.47059,
+0.09412, 0.09412, 0.47059,
+0.09804, 0.09804, 0.47059,
+0.10196, 0.10196, 0.47059,
+0.10588, 0.10588, 0.47059,
+0.10980, 0.10980, 0.47059,
+0.11373, 0.11373, 0.47059,
+0.11765, 0.11765, 0.47059,
+0.12157, 0.12157, 0.47059,
+0.12549, 0.12549, 0.47059,
+0.12941, 0.12941, 0.62745,
+0.13333, 0.13333, 0.62745,
+0.13725, 0.13725, 0.62745,
+0.14118, 0.14118, 0.62745,
+0.14510, 0.14510, 0.62745,
+0.14902, 0.14902, 0.62745,
+0.15294, 0.15294, 0.62745,
+0.15686, 0.15686, 0.62745,
+0.16078, 0.16078, 0.62745,
+0.16471, 0.16471, 0.62745,
+0.16863, 0.16863, 0.62745,
+0.17255, 0.17255, 0.62745,
+0.17647, 0.17647, 0.62745,
+0.18039, 0.18039, 0.62745,
+0.18431, 0.18431, 0.62745,
+0.18824, 0.18824, 0.62745,
+0.19216, 0.19216, 0.78431,
+0.19608, 0.19608, 0.78431,
+0.20000, 0.20000, 0.78431,
+0.20392, 0.20392, 0.78431,
+0.20784, 0.20784, 0.78431,
+0.21176, 0.21176, 0.78431,
+0.21569, 0.21569, 0.78431,
+0.21961, 0.21961, 0.78431,
+0.22353, 0.22353, 0.78431,
+0.22745, 0.22745, 0.78431,
+0.23137, 0.23137, 0.78431,
+0.23529, 0.23529, 0.78431,
+0.23922, 0.23922, 0.78431,
+0.24314, 0.24314, 0.78431,
+0.24706, 0.24706, 0.78431,
+0.25098, 0.25098, 0.78431,
+0.25490, 0.25490, 0.94118,
+0.25882, 0.25882, 0.94118,
+0.26275, 0.26275, 0.94118,
+0.26667, 0.26667, 0.94118,
+0.27059, 0.27059, 0.94118,
+0.27451, 0.27451, 0.94118,
+0.27843, 0.27843, 0.94118,
+0.28235, 0.28235, 0.94118,
+0.28627, 0.28627, 0.94118,
+0.29020, 0.29020, 0.94118,
+0.29412, 0.29412, 0.94118,
+0.29804, 0.29804, 0.94118,
+0.30196, 0.30196, 0.94118,
+0.30588, 0.30588, 0.94118,
+0.30980, 0.30980, 0.94118,
+0.31373, 0.31373, 0.94118,
+0.31765, 0.31765, 0.95294,
+0.32157, 0.32157, 0.96471,
+0.32549, 0.32549, 0.97647,
+0.32941, 0.32941, 0.98824,
+0.33333, 0.33333, 1.00000,
+0.00392, 0.31373, 0.00392,
+0.00784, 0.31373, 0.00784,
+0.01176, 0.31373, 0.01176,
+0.01569, 0.31373, 0.01569,
+0.01961, 0.31373, 0.01961,
+0.02353, 0.31373, 0.02353,
+0.02745, 0.31373, 0.02745,
+0.03137, 0.31373, 0.03137,
+0.03529, 0.31373, 0.03529,
+0.03922, 0.31373, 0.03922,
+0.04314, 0.31373, 0.04314,
+0.04706, 0.31373, 0.04706,
+0.05098, 0.31373, 0.05098,
+0.05490, 0.31373, 0.05490,
+0.05882, 0.31373, 0.05882,
+0.06275, 0.31373, 0.06275,
+0.06667, 0.47059, 0.06667,
+0.07059, 0.47059, 0.07059,
+0.07451, 0.47059, 0.07451,
+0.07843, 0.47059, 0.07843,
+0.08235, 0.47059, 0.08235,
+0.08627, 0.47059, 0.08627,
+0.09020, 0.47059, 0.09020,
+0.09412, 0.47059, 0.09412,
+0.09804, 0.47059, 0.09804,
+0.10196, 0.47059, 0.10196,
+0.10588, 0.47059, 0.10588,
+0.10980, 0.47059, 0.10980,
+0.11373, 0.47059, 0.11373,
+0.11765, 0.47059, 0.11765,
+0.12157, 0.47059, 0.12157,
+0.12549, 0.47059, 0.12549,
+0.12941, 0.62745, 0.12941,
+0.13333, 0.62745, 0.13333,
+0.13725, 0.62745, 0.13725,
+0.14118, 0.62745, 0.14118,
+0.14510, 0.62745, 0.14510,
+0.14902, 0.62745, 0.14902,
+0.15294, 0.62745, 0.15294,
+0.15686, 0.62745, 0.15686,
+0.16078, 0.62745, 0.16078,
+0.16471, 0.62745, 0.16471,
+0.16863, 0.62745, 0.16863,
+0.17255, 0.62745, 0.17255,
+0.17647, 0.62745, 0.17647,
+0.18039, 0.62745, 0.18039,
+0.18431, 0.62745, 0.18431,
+0.18824, 0.62745, 0.18824,
+0.19216, 0.78431, 0.19216,
+0.19608, 0.78431, 0.19608,
+0.20000, 0.78431, 0.20000,
+0.20392, 0.78431, 0.20392,
+0.20784, 0.78431, 0.20784,
+0.21176, 0.78431, 0.21176,
+0.21569, 0.78431, 0.21569,
+0.21961, 0.78431, 0.21961,
+0.22353, 0.78431, 0.22353,
+0.22745, 0.78431, 0.22745,
+0.23137, 0.78431, 0.23137,
+0.23529, 0.78431, 0.23529,
+0.23922, 0.78431, 0.23922,
+0.24314, 0.78431, 0.24314,
+0.24706, 0.78431, 0.24706,
+0.25098, 0.78431, 0.25098,
+0.25490, 0.94118, 0.25490,
+0.25882, 0.94118, 0.25882,
+0.26275, 0.94118, 0.26275,
+0.26667, 0.94118, 0.26667,
+0.27059, 0.94118, 0.27059,
+0.27451, 0.94118, 0.27451,
+0.27843, 0.94118, 0.27843,
+0.28235, 0.94118, 0.28235,
+0.28627, 0.94118, 0.28627,
+0.29020, 0.94118, 0.29020,
+0.29412, 0.94118, 0.29412,
+0.29804, 0.94118, 0.29804,
+0.30196, 0.94118, 0.30196,
+0.30588, 0.94118, 0.30588,
+0.30980, 0.94118, 0.30980,
+0.31373, 0.94118, 0.31373,
+0.31765, 0.95294, 0.31765,
+0.32157, 0.96471, 0.32157,
+0.32549, 0.97647, 0.32549,
+0.32941, 0.98824, 0.32941,
+0.33333, 1.00000, 0.33333,
+0.31373, 0.00392, 0.00392,
+0.31373, 0.00784, 0.00784,
+0.31373, 0.01176, 0.01176,
+0.31373, 0.01569, 0.01569,
+0.31373, 0.01961, 0.01961,
+0.31373, 0.02353, 0.02353,
+0.31373, 0.02745, 0.02745,
+0.31373, 0.03137, 0.03137,
+0.31373, 0.03529, 0.03529,
+0.31373, 0.03922, 0.03922,
+0.31373, 0.04314, 0.04314,
+0.31373, 0.04706, 0.04706,
+0.31373, 0.05098, 0.05098,
+0.31373, 0.05490, 0.05490,
+0.31373, 0.05882, 0.05882,
+0.31373, 0.06275, 0.06275,
+0.47059, 0.06667, 0.06667,
+0.47059, 0.07059, 0.07059,
+0.47059, 0.07451, 0.07451,
+0.47059, 0.07843, 0.07843,
+0.47059, 0.08235, 0.08235,
+0.47059, 0.08627, 0.08627,
+0.47059, 0.09020, 0.09020,
+0.47059, 0.09412, 0.09412,
+0.47059, 0.09804, 0.09804,
+0.47059, 0.10196, 0.10196,
+0.47059, 0.10588, 0.10588,
+0.47059, 0.10980, 0.10980,
+0.47059, 0.11373, 0.11373,
+0.47059, 0.11765, 0.11765,
+0.47059, 0.12157, 0.12157,
+0.47059, 0.12549, 0.12549,
+0.62745, 0.12941, 0.12941,
+0.62745, 0.13333, 0.13333,
+0.62745, 0.13725, 0.13725,
+0.62745, 0.14118, 0.14118,
+0.62745, 0.14510, 0.14510,
+0.62745, 0.14902, 0.14902,
+0.62745, 0.15294, 0.15294,
+0.62745, 0.15686, 0.15686,
+0.62745, 0.16078, 0.16078,
+0.62745, 0.16471, 0.16471,
+0.62745, 0.16863, 0.16863,
+0.62745, 0.17255, 0.17255,
+0.62745, 0.17647, 0.17647,
+0.62745, 0.18039, 0.18039,
+0.62745, 0.18431, 0.18431,
+0.62745, 0.18824, 0.18824,
+0.78431, 0.19216, 0.19216,
+0.78431, 0.19608, 0.19608,
+0.78431, 0.20000, 0.20000,
+0.78431, 0.20392, 0.20392,
+0.78431, 0.20784, 0.20784,
+0.78431, 0.21176, 0.21176,
+0.78431, 0.21569, 0.21569,
+0.78431, 0.21961, 0.21961,
+0.78431, 0.22353, 0.22353,
+0.78431, 0.22745, 0.22745,
+0.78431, 0.23137, 0.23137,
+0.78431, 0.23529, 0.23529,
+0.78431, 0.23922, 0.23922,
+0.78431, 0.24314, 0.24314,
+0.78431, 0.24706, 0.24706,
+0.78431, 0.25098, 0.25098,
+0.94118, 0.25490, 0.25490,
+0.94118, 0.25882, 0.25882,
+0.94118, 0.26275, 0.26275,
+0.94118, 0.26667, 0.26667,
+0.94118, 0.27059, 0.27059,
+0.94118, 0.27451, 0.27451,
+0.94118, 0.27843, 0.27843,
+0.94118, 0.28235, 0.28235,
+0.94118, 0.28627, 0.28627,
+0.94118, 0.29020, 0.29020,
+0.94118, 0.29412, 0.29412,
+0.94118, 0.29804, 0.29804,
+0.94118, 0.30196, 0.30196,
+0.94118, 0.30588, 0.30588,
+0.94118, 0.30980, 0.30980,
+0.94118, 0.31373, 0.31373,
+0.94902, 0.39216, 0.39216,
+0.96078, 0.52941, 0.52941,
+0.97255, 0.66667, 0.66667,
+0.98431, 0.80392, 0.80392,
+0.99216, 0.80000, 0.80000,
+1.00000, 1.00000, 1.00000
diff --git a/vendor/x11iraf/ximtool/data/standard.lut b/vendor/x11iraf/ximtool/data/standard.lut
new file mode 100644
index 00000000..f77dcf02
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/standard.lut
@@ -0,0 +1,257 @@
+256,
+0.00392, 0.00392, 0.33333,
+0.00784, 0.00784, 0.34118,
+0.01176, 0.01176, 0.34902,
+0.01569, 0.01569, 0.35686,
+0.01961, 0.01961, 0.36471,
+0.02353, 0.02353, 0.37255,
+0.02745, 0.02745, 0.38039,
+0.03137, 0.03137, 0.38824,
+0.03529, 0.03529, 0.39608,
+0.03922, 0.03922, 0.40392,
+0.04314, 0.04314, 0.41176,
+0.04706, 0.04706, 0.41961,
+0.05098, 0.05098, 0.42745,
+0.05490, 0.05490, 0.43529,
+0.05882, 0.05882, 0.44314,
+0.06275, 0.06275, 0.45098,
+0.06667, 0.06667, 0.45882,
+0.07059, 0.07059, 0.46667,
+0.07451, 0.07451, 0.47451,
+0.07843, 0.07843, 0.48235,
+0.08235, 0.08235, 0.49020,
+0.08627, 0.08627, 0.49804,
+0.09020, 0.09020, 0.50588,
+0.09412, 0.09412, 0.51373,
+0.09804, 0.09804, 0.52157,
+0.10196, 0.10196, 0.52941,
+0.10588, 0.10588, 0.53725,
+0.10980, 0.10980, 0.54510,
+0.11373, 0.11373, 0.55294,
+0.11765, 0.11765, 0.56078,
+0.12157, 0.12157, 0.56863,
+0.12549, 0.12549, 0.57647,
+0.12941, 0.12941, 0.58431,
+0.13333, 0.13333, 0.59210,
+0.13725, 0.13725, 0.60000,
+0.14118, 0.14118, 0.60784,
+0.14510, 0.14510, 0.61569,
+0.14902, 0.14902, 0.62353,
+0.15294, 0.15294, 0.63137,
+0.15686, 0.15686, 0.63922,
+0.16078, 0.16078, 0.64706,
+0.16471, 0.16471, 0.65490,
+0.16863, 0.16863, 0.66275,
+0.17255, 0.17255, 0.67059,
+0.17647, 0.17647, 0.67843,
+0.18039, 0.18039, 0.68627,
+0.18431, 0.18431, 0.69412,
+0.18824, 0.18824, 0.70196,
+0.19216, 0.19216, 0.70980,
+0.19608, 0.19608, 0.71765,
+0.20000, 0.20000, 0.72549,
+0.20392, 0.20392, 0.73333,
+0.20784, 0.20784, 0.74118,
+0.21176, 0.21176, 0.74902,
+0.21569, 0.21569, 0.75686,
+0.21961, 0.21961, 0.76471,
+0.22353, 0.22353, 0.77255,
+0.22745, 0.22745, 0.78039,
+0.23137, 0.23137, 0.78824,
+0.23529, 0.23529, 0.79608,
+0.23922, 0.23922, 0.80392,
+0.24314, 0.24314, 0.81176,
+0.24706, 0.24706, 0.81961,
+0.25098, 0.25098, 0.82745,
+0.25490, 0.25490, 0.83529,
+0.25882, 0.25882, 0.84314,
+0.26275, 0.26275, 0.85098,
+0.26667, 0.26667, 0.85882,
+0.27059, 0.27059, 0.86667,
+0.27451, 0.27451, 0.87451,
+0.27843, 0.27843, 0.88235,
+0.28235, 0.28235, 0.89020,
+0.28627, 0.28627, 0.89804,
+0.29020, 0.29020, 0.90588,
+0.29412, 0.29412, 0.91373,
+0.29804, 0.29804, 0.92157,
+0.30196, 0.30196, 0.92941,
+0.30588, 0.30588, 0.93725,
+0.30980, 0.30980, 0.94510,
+0.31373, 0.31373, 0.95294,
+0.31765, 0.31765, 0.96078,
+0.32157, 0.32157, 0.96863,
+0.32549, 0.32549, 0.97647,
+0.32941, 0.32941, 0.98431,
+0.33333, 0.33333, 0.99216,
+0.00392, 0.33333, 0.00392,
+0.00784, 0.34118, 0.00784,
+0.01176, 0.34902, 0.01176,
+0.01569, 0.35686, 0.01569,
+0.01961, 0.36471, 0.01961,
+0.02353, 0.37255, 0.02353,
+0.02745, 0.38039, 0.02745,
+0.03137, 0.38824, 0.03137,
+0.03529, 0.39608, 0.03529,
+0.03922, 0.40392, 0.03922,
+0.04314, 0.41176, 0.04314,
+0.04706, 0.41961, 0.04706,
+0.05098, 0.42745, 0.05098,
+0.05490, 0.43529, 0.05490,
+0.05882, 0.44314, 0.05882,
+0.06275, 0.45098, 0.06275,
+0.06667, 0.45882, 0.06667,
+0.07059, 0.46667, 0.07059,
+0.07451, 0.47451, 0.07451,
+0.07843, 0.48235, 0.07843,
+0.08235, 0.49020, 0.08235,
+0.08627, 0.49804, 0.08627,
+0.09020, 0.50588, 0.09020,
+0.09412, 0.51373, 0.09412,
+0.09804, 0.52157, 0.09804,
+0.10196, 0.52941, 0.10196,
+0.10588, 0.53725, 0.10588,
+0.10980, 0.54510, 0.10980,
+0.11373, 0.55294, 0.11373,
+0.11765, 0.56078, 0.11765,
+0.12157, 0.56863, 0.12157,
+0.12549, 0.57647, 0.12549,
+0.12941, 0.58431, 0.12941,
+0.13333, 0.59210, 0.13333,
+0.13725, 0.60000, 0.13725,
+0.14118, 0.60784, 0.14118,
+0.14510, 0.61569, 0.14510,
+0.14902, 0.62353, 0.14902,
+0.15294, 0.63137, 0.15294,
+0.15686, 0.63922, 0.15686,
+0.16078, 0.64706, 0.16078,
+0.16471, 0.65490, 0.16471,
+0.16863, 0.66275, 0.16863,
+0.17255, 0.67059, 0.17255,
+0.17647, 0.67843, 0.17647,
+0.18039, 0.68627, 0.18039,
+0.18431, 0.69412, 0.18431,
+0.18824, 0.70196, 0.18824,
+0.19216, 0.70980, 0.19216,
+0.19608, 0.71765, 0.19608,
+0.20000, 0.72549, 0.20000,
+0.20392, 0.73333, 0.20392,
+0.20784, 0.74118, 0.20784,
+0.21176, 0.74902, 0.21176,
+0.21569, 0.75686, 0.21569,
+0.21961, 0.76471, 0.21961,
+0.22353, 0.77255, 0.22353,
+0.22745, 0.78039, 0.22745,
+0.23137, 0.78824, 0.23137,
+0.23529, 0.79608, 0.23529,
+0.23922, 0.80392, 0.23922,
+0.24314, 0.81176, 0.24314,
+0.24706, 0.81961, 0.24706,
+0.25098, 0.82745, 0.25098,
+0.25490, 0.83529, 0.25490,
+0.25882, 0.84314, 0.25882,
+0.26275, 0.85098, 0.26275,
+0.26667, 0.85882, 0.26667,
+0.27059, 0.86667, 0.27059,
+0.27451, 0.87451, 0.27451,
+0.27843, 0.88235, 0.27843,
+0.28235, 0.89020, 0.28235,
+0.28627, 0.89804, 0.28627,
+0.29020, 0.90588, 0.29020,
+0.29412, 0.91373, 0.29412,
+0.29804, 0.92157, 0.29804,
+0.30196, 0.92941, 0.30196,
+0.30588, 0.93725, 0.30588,
+0.30980, 0.94510, 0.30980,
+0.31373, 0.95294, 0.31373,
+0.31765, 0.96078, 0.31765,
+0.32157, 0.96863, 0.32157,
+0.32549, 0.97647, 0.32549,
+0.32941, 0.98431, 0.32941,
+0.33333, 0.99216, 0.33333,
+0.33333, 0.00392, 0.00392,
+0.34118, 0.00784, 0.00784,
+0.34902, 0.01176, 0.01176,
+0.35686, 0.01569, 0.01569,
+0.36471, 0.01961, 0.01961,
+0.37255, 0.02353, 0.02353,
+0.38039, 0.02745, 0.02745,
+0.38824, 0.03137, 0.03137,
+0.39608, 0.03529, 0.03529,
+0.40392, 0.03922, 0.03922,
+0.41176, 0.04314, 0.04314,
+0.41961, 0.04706, 0.04706,
+0.42745, 0.05098, 0.05098,
+0.43529, 0.05490, 0.05490,
+0.44314, 0.05882, 0.05882,
+0.45098, 0.06275, 0.06275,
+0.45882, 0.06667, 0.06667,
+0.46667, 0.07059, 0.07059,
+0.47451, 0.07451, 0.07451,
+0.48235, 0.07843, 0.07843,
+0.49020, 0.08235, 0.08235,
+0.49804, 0.08627, 0.08627,
+0.50588, 0.09020, 0.09020,
+0.51373, 0.09412, 0.09412,
+0.52157, 0.09804, 0.09804,
+0.52941, 0.10196, 0.10196,
+0.53725, 0.10588, 0.10588,
+0.54510, 0.10980, 0.10980,
+0.55294, 0.11373, 0.11373,
+0.56078, 0.11765, 0.11765,
+0.56863, 0.12157, 0.12157,
+0.57647, 0.12549, 0.12549,
+0.58431, 0.12941, 0.12941,
+0.59210, 0.13333, 0.13333,
+0.60000, 0.13725, 0.13725,
+0.60784, 0.14118, 0.14118,
+0.61569, 0.14510, 0.14510,
+0.62353, 0.14902, 0.14902,
+0.63137, 0.15294, 0.15294,
+0.63922, 0.15686, 0.15686,
+0.64706, 0.16078, 0.16078,
+0.65490, 0.16471, 0.16471,
+0.66275, 0.16863, 0.16863,
+0.67059, 0.17255, 0.17255,
+0.67843, 0.17647, 0.17647,
+0.68627, 0.18039, 0.18039,
+0.69412, 0.18431, 0.18431,
+0.70196, 0.18824, 0.18824,
+0.70980, 0.19216, 0.19216,
+0.71765, 0.19608, 0.19608,
+0.72549, 0.20000, 0.20000,
+0.73333, 0.20392, 0.20392,
+0.74118, 0.20784, 0.20784,
+0.74902, 0.21176, 0.21176,
+0.75686, 0.21569, 0.21569,
+0.76471, 0.21961, 0.21961,
+0.77255, 0.22353, 0.22353,
+0.78039, 0.22745, 0.22745,
+0.78824, 0.23137, 0.23137,
+0.79608, 0.23529, 0.23529,
+0.80392, 0.23922, 0.23922,
+0.81176, 0.24314, 0.24314,
+0.81961, 0.24706, 0.24706,
+0.82745, 0.25098, 0.25098,
+0.83529, 0.25490, 0.25490,
+0.84314, 0.25882, 0.25882,
+0.85098, 0.26275, 0.26275,
+0.85882, 0.26667, 0.26667,
+0.86667, 0.27059, 0.27059,
+0.87451, 0.27451, 0.27451,
+0.88235, 0.27843, 0.27843,
+0.89020, 0.28235, 0.28235,
+0.89804, 0.28627, 0.28627,
+0.90588, 0.29020, 0.29020,
+0.91373, 0.29412, 0.29412,
+0.92157, 0.29804, 0.29804,
+0.92941, 0.30196, 0.30196,
+0.93725, 0.30588, 0.30588,
+0.94510, 0.30980, 0.30980,
+0.95294, 0.31373, 0.31373,
+0.96078, 0.31765, 0.31765,
+0.96863, 0.32157, 0.32157,
+0.97647, 0.32549, 0.32549,
+0.98431, 0.32941, 0.32941,
+0.99216, 0.33333, 0.33333,
+1.00000, 0.33725, 0.33725
diff --git a/vendor/x11iraf/ximtool/data/vflip.xbm b/vendor/x11iraf/ximtool/data/vflip.xbm
new file mode 100644
index 00000000..73426f85
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/vflip.xbm
@@ -0,0 +1,6 @@
+#define vflip_width 16
+#define vflip_height 16
+static char vflip_bits[] = {
+ 0x00, 0x00, 0xfc, 0x3f, 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+ 0xc0, 0x03, 0xe0, 0x07, 0xfc, 0x3f, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/xflip.xbm b/vendor/x11iraf/ximtool/data/xflip.xbm
new file mode 100644
index 00000000..bdbbeb43
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/xflip.xbm
@@ -0,0 +1,6 @@
+#define xflip_width 16
+#define xflip_height 16
+static char xflip_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/xflip2.xbm b/vendor/x11iraf/ximtool/data/xflip2.xbm
new file mode 100644
index 00000000..326cff7b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/xflip2.xbm
@@ -0,0 +1,6 @@
+#define xflip2_width 16
+#define xflip2_height 16
+static char xflip2_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x18, 0x18,
+ 0x0c, 0x30, 0xfe, 0x7f, 0x06, 0x60, 0xfe, 0x7f, 0x0c, 0x30, 0x18, 0x18,
+ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/yflip.xbm b/vendor/x11iraf/ximtool/data/yflip.xbm
new file mode 100644
index 00000000..69603e9c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/yflip.xbm
@@ -0,0 +1,6 @@
+#define yflip_width 16
+#define yflip_height 16
+static char yflip_bits[] = {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/data/yflip2.xbm b/vendor/x11iraf/ximtool/data/yflip2.xbm
new file mode 100644
index 00000000..6ea8ae78
--- /dev/null
+++ b/vendor/x11iraf/ximtool/data/yflip2.xbm
@@ -0,0 +1,6 @@
+#define yflip2_width 16
+#define yflip2_height 16
+static char yflip2_bits[] = {
+ 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x03, 0x70, 0x07, 0x58, 0x0d, 0x48, 0x09,
+ 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x40, 0x01, 0x48, 0x09, 0x58, 0x0d,
+ 0x70, 0x07, 0xe0, 0x03, 0xc0, 0x01, 0x00, 0x00};
diff --git a/vendor/x11iraf/ximtool/eps.c b/vendor/x11iraf/ximtool/eps.c
new file mode 100644
index 00000000..ec7f83a8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/eps.c
@@ -0,0 +1,1902 @@
+#include <stdio.h>
+#include <math.h>
+#include <time.h>
+#include <pwd.h>
+#include "eps.h"
+
+#ifdef __STDC__
+#include <stdlib.h>
+#include <string.h>
+#endif
+
+#ifdef SOLARIS
+#include <sys/systeminfo.h>
+#endif
+
+
+/*
+** EPS.C -- EPS hardcopy routines. This code takes an input structure
+** containing the pixels, colormap, and output specifications and creates
+** and Encapsulated PostScript file.
+**
+** #include "eps.h" # flags, macro defs, etc.
+**
+** psim = eps_init ()
+** eps_print (psim, fp, &data, xdim, ydim, depth, pad)
+** eps_close (psim)
+**
+** eps_setPage (psim, orient, paper_size, scale, flags)
+** eps_setCmap (psim, &r, &g, &b, ncolors)
+** eps_setCompress (psim, ctype)
+** eps_setColorType (psim, otype)
+** eps_setLabel (psim, &label)
+** eps_setTransform (psim, z1, z2, ztype, offset, slope, cmap_name)
+** eps_setCorners (psim, llx, lly, urx, ury)
+**
+** eps_getImageSize (psim, xdim, ydim, &width, &height)
+** eps_getImagePos (psim, xdim, ydim, &llx, &llx)
+**
+** # Read-only Macro functions: Result type
+** ---------------------------- -----------
+** Orientation (psim) EPS_PORTRAIT | EPS_LANDSCAPE
+** Scale (psim) float scale value
+** MaxScale (psim) float maxaspect scale value
+** DoAutoScale (psim) bool
+** DoAutoRotate (psim) bool
+** DoMaxAspect (psim) bool
+** PageType (psim) EPS_LETTER | EPS_LEGAL | ...
+** PageXdim (psim) page pixel width
+** PageYdim (psim) page pixel height
+** PageWidth (psim) page size in inches
+** PageHeight (psim) page size in inches
+**
+** The first three routines are all that's required to output an array of
+** pixels to an open file descriptor. The default output produced is a
+** grayscale EPS file, centered in a portrait orientation (unless a rotation
+** is required to make it fit on the page) and auto scaled to fit on a normal
+** 8.5"x11" page.
+**
+** The remaining routines can be used to set various options, new colormaps
+** labels, etc. They are not required unless you need to override one or
+** more of the output defaults.
+*/
+
+#define MAX_LENLABEL 256
+#define SZ_EPSBUF 8193
+
+#ifndef AIXV3
+#ifndef OSF1
+typedef unsigned char uchar;
+#endif
+#endif
+
+
+static char *hextab = "0123456789abcdef";
+static int pixnum = 0, lpix = 0;
+static uchar *pixbuf;
+
+
+/* Public procedures.
+*/
+void eps_setPage(), eps_setTransform(), eps_setCorners();
+
+
+/* Private procedures.
+*/
+static void eps_simpleHeader(), eps_colorHeader();
+static void eps_pageParams(), eps_simpleTrailer();
+static void eps_writeCmap(), eps_writeTrailer();
+static void eps_writeMono(), eps_writePix();
+static void eps_writeMonoRGB(), eps_writeRGB();
+static void eps_putPix(), eps_flushPix();
+static void eps_annotate(), eps_portLabels(), eps_landLabels();
+static void eps_doColorbar();
+static float ticstep();
+static char *make_label();
+
+
+static int debug = 0;
+
+
+/* EPS_INIT -- Allocate and return an initialized pointer to a structure
+** containing the default output setup.
+*/
+PSImage *
+eps_init()
+{
+ register int i, n;
+ register PSImage *ps;
+ register uchar *op;
+
+
+ /* Allocate the structure. */
+ ps = (PSImage *) calloc ((unsigned)1, sizeof (PSImage));
+
+ /* Initialize the structure. */
+ ps->cols = 0;
+ ps->rows = 0;
+ ps->colorClass = EPS_GRAYSCALE;
+ ps->compression = NoCompression;
+ ps->annotate = 1;
+ ps->label = (char *) calloc (MAX_LENLABEL, sizeof (uchar));
+ ps->z1 = 0.0;
+ ps->z2 = 255.0;
+ ps->ztype = 0;
+
+ /* Set up a default grayscale colormap. */
+ ps->cmap.ncolors = 256;
+ for (i=0; i<ps->cmap.ncolors; i++)
+ ps->cmap.r[i] = ps->cmap.g[i] = ps->cmap.b[i] = i;
+ ps->cmap.IsDefault = 1;
+
+ /* Load the page information defaults. */
+ eps_setPage (ps, EPS_PORTRAIT, EPS_LETTER, 100, EPS_AUTOSCALE);
+
+ /* Initialize the annotation flags */
+ ps->page.flags |= (EPS_DOTITLE|EPS_DOBORDERS|EPS_DOCOLORBAR);
+
+ /* Initialize the pixel buffer array */
+ pixbuf = (uchar *) calloc (SZ_EPSBUF, sizeof (uchar));
+
+ return (ps);
+}
+
+
+/* EPS_PRINT -- Dump the given array of pixels to the output file as an EPS
+** format file. The data array may contain 8-bit, 24-bit RGB triplets, or
+** 32-bit RGBA pixels.
+*/
+void
+eps_print (psim, fp, data, xdim, ydim, depth, pad)
+PSImage *psim; /* EPS image structure */
+FILE *fp; /* output file descriptor */
+uchar *data; /* array of image pixels */
+int xdim, ydim; /* image dimensions */
+int depth; /* bits / pixel, must be 8,24, or 32 */
+int pad; /* bytes per line of padding */
+{
+ int npix = xdim * ydim;
+ uchar *pix = data;
+
+
+ psim->cols = xdim; /* save it for the headers */
+ psim->rows = ydim;
+
+ if (debug)
+ fprintf (stderr, "eps_print: w=%d h=%d d=%d pad=%d\n",
+ xdim, ydim, depth, pad);
+
+ switch (psim->colorClass) {
+ case EPS_GRAYSCALE:
+ /* Regardless of the color type desired we'll either write the
+ * pixels directly or convert from pseudocolor or RGB. For a
+ * start dump the header.
+ */
+ eps_simpleHeader (psim, fp);
+
+ if (psim->cmap.IsDefault && depth == 8) {
+ /* We're using the default grayscale colormap with an
+ * 8-bit image, so just dump the pixels.
+ */
+ if (debug)
+ fprintf (stderr,"eps_print: straight grayscale.\n");
+ eps_writePix (fp, pix, &psim->cmap, npix, xdim, pad);
+
+ } else if (!psim->cmap.IsDefault && depth == 8) {
+ /* We're using an arbitrary colormap with an 8-bit image,
+ * so convert to grayscale and write the pixels.
+ */
+ if (debug)
+ fprintf (stderr,"eps_print: pseudo cnv to grayscale.\n");
+ eps_writeMono (fp, pix, &psim->cmap, npix, xdim, pad);
+
+ } else {
+ /* Convert RGBA to grayscale. */
+ if (debug)
+ fprintf (stderr,"eps_print: RGB cnv to grayscale.\n");
+ eps_writeMonoRGB (fp, pix, npix, xdim, depth, pad);
+
+ }
+
+ /* Now that the image is out we restore the graphics context. */
+ fprintf (fp, "grestore\n" );
+
+ /* Write the colorbar. */
+ if (psim->annotate)
+ eps_annotate (psim, fp);
+
+ /* Write the trailer. */
+ eps_simpleTrailer (fp);
+ break;
+
+ case EPS_PSEUDOCOLOR:
+ /* Write the color prolog header. */
+ eps_colorHeader (psim, fp);
+
+ /* Dump the colormap. */
+ eps_writeCmap (&psim->cmap, fp);
+
+ /* Write color indices. */
+ eps_writePix (fp, pix, &psim->cmap, npix, xdim, pad);
+
+ /* Write the colorbar. */
+ if (psim->annotate)
+ eps_annotate (psim, fp);
+
+ /* Write the trailer to finish it off. */
+ eps_writeTrailer (fp);
+ break;
+
+ case EPS_TRUECOLOR:
+ /* Write the seudocolor prolog header. */
+ eps_colorHeader (psim, fp);
+
+ eps_writeRGB (fp, pix, &psim->cmap, npix, xdim, depth, pad);
+
+ /* Write the colorbar. */
+ if (psim->annotate)
+ eps_annotate (psim, fp);
+
+ /* Write the trailer to finish it off. */
+ eps_writeTrailer (fp);
+ break;
+
+ default:
+ perror ("Bad colorClass specification.\n");
+ break;
+ }
+
+ fflush (fp);
+}
+
+
+/* EPS_CLOSE -- Close down the EPS output structure.
+*/
+void
+eps_close (psim)
+PSImage *psim; /* EPS image structure */
+{
+ if (psim->label)
+ (void) free ((char *) psim->label);
+ (void) free ((char *) pixbuf);
+ (void) free (psim);
+}
+
+
+/* EPS_SETPAGE -- Inialize the page setup with a different size, orientation,
+** or scale options.
+*/
+void
+eps_setPage (psim, orientation, paper_size, scale, flags)
+PSImage *psim; /* EPS image structure */
+int orientation; /* page orientation flag */
+int paper_size; /* paper size flag */
+int scale; /* image scale percentage */
+int flags; /* option flags */
+{
+ int NPageTypes = sizeof (PageInfo) / sizeof (PSPageInfo);
+
+
+ /* Set the orientation of the output */
+ if (orientation == EPS_PORTRAIT)
+ psim->page.orientation = EPS_PORTRAIT;
+ else if (orientation == EPS_LANDSCAPE)
+ psim->page.orientation = EPS_LANDSCAPE;
+ else
+ perror ("eps_setPage: Invalid orientation.");
+
+ /* Set the output paper size */
+ if (paper_size >= 0 && paper_size <= NPageTypes)
+ psim->page.page_type = paper_size;
+ else
+ perror ("eps_setPage: Invalid paper size.");
+
+ /* Set scale and recompute dpi resolution. */
+ psim->page.scale = (float) scale / 100.0;
+ psim->page.maxscale = (float) scale / 100.0;
+ psim->page.dpi = 72; /* need to recalculate */
+
+ /* Set the option flags */
+ psim->page.flags = flags;
+
+ if (debug) {
+ fprintf (stderr,
+ "eps_setPage: orientation:%d size:%d scale:%g\n",
+ Orientation(psim), PageType(psim), Scale(psim));
+ fprintf (stderr,"\tautoscale:%d autorotate:%d maxaspect:%d\n",
+ DoAutoScale(psim), DoAutoRotate(psim), DoMaxAspect(psim));
+ }
+}
+
+
+/* EPS_SETCMAP -- Define a given colormap to be used on output.
+*/
+void
+eps_setCmap (psim, r, g, b, ncolors)
+PSImage *psim; /* EPS image structure */
+uchar *r, *g, *b; /* color components */
+int ncolors; /* number of colors in colormap */
+{
+ register int i = 0;
+
+ /* Load the colormap. */
+ psim->cmap.ncolors = ncolors;
+ /* for (i=0; i < ncolors; i++) { */
+ for (i=0; i < 256; i++) {
+ psim->cmap.r[i] = r[i];
+ psim->cmap.g[i] = g[i];
+ psim->cmap.b[i] = b[i];
+ }
+
+ psim->cmap.IsDefault = 0;
+}
+
+
+/* EPS_SETCOMPRESS -- Define the type of output compression to use.
+*/
+void
+eps_setCompress (psim, compress)
+PSImage *psim; /* EPS image structure */
+int compress; /* compression type flag */
+{
+ /* Set the compression type to use. */
+ switch (compress) {
+ case NoCompression:
+ case RLECompression:
+ psim->compression = compress;
+ break;
+ case LZWCompression:
+ case JPEGCompression:
+ default:
+ perror ("eps_setCompress: Invalid compression type.");
+ }
+}
+
+
+/* EPS_SETCOLORTYPE -- Set the type of output image to be written, e.g. even
+** though we have an RGB or pseudocolor image we may wish to coerce it to
+** a grayscale on output.
+*/
+void
+eps_setColorType (psim, color_class)
+PSImage *psim; /* EPS image structure */
+int color_class; /* output color class */
+{
+ /* Set the compression type to use. */
+ switch (color_class) {
+ case EPS_GRAYSCALE:
+ case EPS_PSEUDOCOLOR:
+ case EPS_TRUECOLOR:
+ psim->colorClass = color_class;
+ break;
+ default:
+ perror ("eps_setColorType: Invalid output color type.");
+ }
+}
+
+
+/* EPS_SETLABEL -- Set the output label to be used in annotation.
+*/
+void
+eps_setLabel (psim, label)
+register PSImage *psim; /* EPS image structure */
+char *label; /* Label string */
+{
+ register int maxlen = MAX_LENLABEL;
+
+ if (!psim->label)
+ psim->label = (char *) malloc (maxlen);
+
+ if (psim->page.flags & EPS_DOTITLE) {
+ (void) strncpy (psim->label, label, maxlen-1);
+ psim->label[maxlen-1] = '\0';
+ } else
+ psim->label[0] = '\0';
+}
+
+
+/* EPS_SETTRANSFORM -- Set the color transformation parameters, i.e. the
+** z1/z2 values that map the image pixel values being displayed to the number
+** of colors we have available. This is used in the annotation when labeling
+** the colorbar.
+*/
+void
+eps_setTransform (psim, z1, z2, ztype, offset, scale, cmap_name)
+PSImage *psim; /* EPS image structure */
+float z1, z2; /* zscale values */
+int ztype; /* Transformation type */
+float offset, scale; /* brightness/contrast values */
+char *cmap_name; /* colormap name */
+{
+ psim->z1 = z1;
+ psim->z2 = z2;
+ psim->ztype = ztype;
+ psim->offset = offset;
+ psim->scale = scale;
+ if (!psim->cmap.cmap_name)
+ psim->cmap.cmap_name = (char *) malloc (16);
+ strcpy (psim->cmap.cmap_name, cmap_name);
+
+ if (debug) {
+ fprintf (stderr,
+ "setTransform: z1=%g z2=%g zt=%d offset=%g scale=%g name='%s'\n",
+ psim->z1, psim->z2, psim->ztype,
+ psim->offset, psim->scale,
+ psim->cmap.cmap_name);
+ }
+}
+
+
+/* EPS_SETCORNERS -- Set the image corner values.
+*/
+void
+eps_setCorners (psim, llx, lly, urx, ury)
+PSImage *psim; /* EPS image structure */
+int llx, lly, urx, ury; /* image corners */
+{
+ psim->llx = llx;
+ psim->lly = lly;
+ psim->urx = urx;
+ psim->ury = ury;
+}
+
+
+/* EPS_GETIMAGESIZE -- Given the current page parameters and image dimensions,
+** compute the size of the image (in inches) on the page.
+*/
+void
+eps_getImageSize (psim, xdim, ydim, width, height)
+PSImagePtr psim; /* EPS image struct */
+int xdim, ydim; /* image dimensions */
+float *width, *height; /* width x height of image on page */
+{
+ int icols, irows, scols, srows, turnflag;
+ float llx, lly;
+
+
+ /* Get the common page parameters. */
+ eps_pageParams (psim, &llx, &lly, &icols, &irows, &scols, &srows,
+ &turnflag);
+
+ *width = (scols / (float) psim->page.dpi);
+ *height = (srows / (float) psim->page.dpi);
+}
+
+
+/* EPS_GETIMAGEPOS -- Given the current page parameters and image dimensions,
+** compute the position of the image (in pixels) on the page.
+*/
+void
+eps_getImagePos (psim, xdim, ydim, llx, lly)
+PSImagePtr psim; /* EPS image struct */
+int xdim, ydim; /* image dimensions */
+int *llx, *lly; /* LL coords for centered image */
+{
+ int icols, irows, scols, srows, turnflag;
+ float lx, ly;
+
+
+ /* Get the common page parameters. */
+ eps_pageParams (psim, &lx, &ly, &icols, &irows, &scols, &srows,
+ &turnflag);
+
+ *llx = (int) lx;
+ *lly = (int) ly;
+}
+
+
+/************************
+ * Private Procedures *
+ ************************/
+
+
+/* EPS_PAGEPARAMS -- Compute the EPS page parameters.
+*/
+static void
+eps_pageParams (psim, llx, lly, icols, irows, scols, srows, turnflag)
+PSImagePtr psim; /* EPS image struct */
+float *llx, *lly; /* LL coords for centered image */
+int *icols, *irows; /* final image rows/cols */
+int *scols, *srows; /* scaled rows/cols */
+int *turnflag; /* turn the image? */
+{
+ int devpix, pwidth, pheight, cols=0, rows=0;
+ float pixfac, scale = Scale(psim), margin;
+
+
+ /* See if we need to rotate the image to fit on the page. */
+ margin = (psim->annotate ? 0.9 : 0.95);
+ pwidth = (int) PageXdim(psim) * margin;
+ pheight = (int) PageYdim(psim) * margin;
+ *icols = cols = psim->cols;
+ *irows = rows = psim->rows;
+ *turnflag = 0;
+ if (DoAutoRotate(psim)) {
+ if (psim->cols > psim->rows && (scale * psim->cols) > pwidth) {
+ if (debug) fprintf (stderr, "Rotating image....\n");
+ *turnflag = 1;
+ cols = *irows;
+ rows = *icols;
+ }
+ } else if (psim->page.orientation == EPS_LANDSCAPE) {
+ if (debug) fprintf (stderr, "Rotating image....\n");
+ *turnflag = 1;
+ cols = *irows;
+ rows = *icols;
+ }
+
+ if (turnflag) {
+ margin = (turnflag ? 0.825 : margin);
+ pwidth = (int) PageXdim(psim) * margin;
+ pheight = (int) PageYdim(psim) * margin;
+ }
+
+ /* Figure out the image size. */
+ devpix = psim->page.dpi / 72.0 + 0.5; /* device pixels per unit */
+ pixfac = 72.0 / psim->page.dpi * devpix;
+ *scols = psim->page.scale * cols * pixfac;
+ *srows = psim->page.scale * rows * pixfac;
+
+ /* See if we need to fiddle with the size to get it on the page
+ * the way we want.
+ */
+ if (debug) {
+ fprintf (stderr, "before: scale=%g scols=%d srows=%d pixfac=%g\n",
+ scale, *scols, *srows, pixfac);
+ fprintf (stderr, "\tpwidth=%d pheight=%d\n", pwidth, pheight);
+ fprintf (stderr,"\tautoscale:%d autorotate:%d maxaspect:%d\n",
+ DoAutoScale(psim), DoAutoRotate(psim), DoMaxAspect(psim));
+ }
+ if ( *scols > pwidth || *srows > pheight ) {
+
+ /* Image is larger than we think will fit on the page. If we're
+ * autoscaling reset the scale.
+ */
+ if (DoAutoScale(psim)) {
+ if (debug)
+ fprintf (stderr, "Image too big, autoscaling...\n");
+ if ( *scols >= pwidth ) {
+ if (*scols >= *srows) {
+ scale *= (float)PageXdim(psim) / (float)*scols * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ } else {
+ scale *= (float)PageYdim(psim) / (float)*srows * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ }
+ }
+ if (debug)
+ fprintf (stderr, ": scale=%f scols=%d srows=%d pixfac=%g\n",
+ scale, *scols, *srows, pixfac);
+ if ( *srows >= pheight ) {
+ if (*scols >= *srows) {
+ scale *= (float)PageXdim(psim) / (float)*scols * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ } else {
+ scale *= (float)PageYdim(psim) / (float)*srows * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ }
+ }
+ if (debug)
+ fprintf (stderr, ": scale=%f scols=%d srows=%d pixfac=%g\n",
+ scale, *scols, *srows, pixfac);
+ psim->page.maxscale = scale; /* update new scale factor */
+
+ } else {
+ /* Notify user that the image won't fit and suggest a scale. */
+ if ( *scols > pwidth )
+ scale *= (float) PageXdim(psim) / (float) *scols * margin;
+ if ( *srows > pheight )
+ scale *= (float) PageYdim(psim) / (float) *srows * margin;
+ psim->page.maxscale = scale; /* update new scale factor */
+
+ fprintf (stderr,
+ "Image too big for the page, no autoscaling set...\n");
+ fprintf (stderr, "Reset autoscale flag or use scale < %g\n",
+ scale);
+ }
+
+ }
+
+ if (DoMaxAspect(psim)) {
+ /* Image will fit on page, but blow it up to a maximum size for
+ * the page orientation but retain the image aspect.
+ */
+ if (debug)
+ fprintf (stderr, "Doing max aspect...");
+ if ( *scols >= *srows ) {
+ scale *= (float) PageXdim(psim) / (float) *scols * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ } else if ( *srows > *scols ) {
+ scale *= (float) PageYdim(psim) / (float) *srows * margin;
+ *scols = scale * cols * pixfac;
+ *srows = scale * rows * pixfac;
+ }
+ psim->page.maxscale = scale; /* update new scale factor */
+ }
+
+ /* Center it on the page. */
+ *llx = (PageXdim(psim) - *scols) / 2 - (*turnflag ? 10 : 0);
+ *lly = (PageYdim(psim) - *srows) / 2 + (*turnflag ? 0 : 10);
+
+ if (debug) {
+ fprintf(stderr,"after: scale=%g scols=%d srows=%d ",
+ scale, *scols, *srows);
+ fprintf(stderr,"icols=%d irows=%d llx=%g lly=%g\n",
+ *icols, *irows, *llx, *lly);
+ }
+}
+
+
+/* EPS_WRITEPIX -- Write the pixels or color indices directly.
+*/
+static void
+eps_writePix (fp, pix, cmap, npix, xdim, pad)
+FILE *fp;
+uchar *pix;
+PSCmap *cmap;
+int npix;
+int xdim;
+int pad;
+{
+ register int i, min, max;
+
+
+ min = *pix;
+ max = *pix;
+ while (npix > 0) {
+ min = (min > *pix ? *pix : min);
+ max = (max < *pix ? *pix : max);
+
+ /* Write the pixels. */
+ for (i=0; i < PIX_PER_LINE && npix--; i+=2) {
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix++ & 0x0F)];
+ }
+ pixbuf[pixnum++] = '\n';
+
+ if (pixnum >= (SZ_EPSBUF - PIX_PER_LINE - 1)) {
+ pixbuf[pixnum] = '\0';
+ fwrite ((char *)pixbuf, sizeof(char), pixnum, fp);
+ pixnum = 0;
+ }
+
+ /* Skip the pad chars. */
+ for (i=0; i<pad && npix; i++, npix--)
+ pix++;
+ }
+ cmap->min = min;
+ cmap->max = max;
+ eps_flushPix (fp);
+}
+
+
+/* EPS_WRITEMONO -- Write a pseudocolor image and convert to grayscale.
+*/
+static void
+eps_writeMono (fp, pix, cmap, npix, xdim, pad)
+FILE *fp;
+uchar *pix;
+PSCmap *cmap;
+int npix;
+int xdim;
+int pad;
+{
+ register int i, min, max;
+ register uchar pval;
+
+ min = *pix;
+ max = *pix;
+ while (npix > 0) {
+ min = (min > *pix ? *pix : min);
+ max = (max < *pix ? *pix : max);
+
+ /* Write the pixels. */
+ for (i=0; i < PIX_PER_LINE && npix; i+=2, npix-- ) {
+ pval = (uchar) MONO (cmap->r[*pix],
+ cmap->g[*pix],
+ cmap->b[*pix++]);
+ pixbuf[pixnum++] = (uchar) hextab[(pval >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[(pval & 0x0F)];
+ }
+ pixbuf[pixnum++] = '\n';
+
+ if (pixnum >= (SZ_EPSBUF - PIX_PER_LINE - 1) || !npix) {
+ pixbuf[pixnum] = '\0';
+ fwrite ((char *)pixbuf, sizeof(char), pixnum, fp);
+ pixnum = 0;
+ }
+
+ /* skip the pad chars */
+ for (i=0; i<pad && npix; i++, npix--)
+ pix++;
+ }
+ cmap->min = min;
+ cmap->max = max;
+ eps_flushPix (fp);
+}
+
+
+/* EPS_WRITEMONORGB -- Write RGB data converted to grayscale.
+*/
+static void
+eps_writeMonoRGB (fp, pix, npix, xdim, depth, pad)
+FILE *fp;
+uchar *pix;
+int npix;
+int xdim;
+int depth;
+int pad;
+{
+ register int i;
+ register uchar pval;
+
+
+ while (npix > 0) {
+ /* Write the pixels. */
+ if (depth < 24) {
+ for (i=0; i < PIX_PER_LINE && npix; i+=2, npix-=3 ) {
+ pval = (uchar) MONO (*pix++, *pix++, *pix++);
+ pixbuf[pixnum++] = (uchar) hextab[(pval >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[(pval & 0x0F)];
+ }
+ } else {
+ /* Skip alpha channel in the loop */
+ for (i=0; i < PIX_PER_LINE && npix; i+=2, npix-=3, pix++ ) {
+ pval = (uchar) MONO (*pix++, *pix++, *pix++);
+ pixbuf[pixnum++] = (uchar) hextab[(pval >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[(pval & 0x0F)];
+ }
+ }
+ pixbuf[pixnum++] = '\n';
+
+ if (pixnum >= (SZ_EPSBUF - PIX_PER_LINE - 1)) {
+ pixbuf[pixnum] = '\0';
+ fwrite ((char *)pixbuf, sizeof(char), pixnum, fp);
+ pixnum = 0;
+ }
+
+ /* skip the pad chars */
+ for (i=0; i<pad && npix; i++, npix--)
+ pix++;
+ }
+ eps_flushPix (fp);
+}
+
+
+/* EPS_WRITERGB -- Write the pixels in RGB format, skipping a possible alpha
+** channel.
+*/
+static void
+eps_writeRGB (fp, pix, cmap, npix, xdim, depth, pad)
+FILE *fp;
+uchar *pix;
+PSCmap *cmap;
+int npix;
+int xdim;
+int depth;
+int pad;
+{
+ register int i, j, min, max;
+ register uchar val;
+
+
+ min = *pix;
+ max = *pix;
+ while (npix > 0) {
+ min = (min > *pix ? *pix : min);
+ max = (max < *pix ? *pix : max);
+
+ /* Write the pixels. */
+ if (depth < 24) {
+ for (i=0; i < PIX_PER_LINE && npix; i+=6, npix--, pix++ ) {
+ val = (uchar) cmap->r[*pix];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val & 0x0F)];
+ val = (uchar) cmap->g[*pix];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val & 0x0F)];
+ val = (uchar) cmap->b[*pix];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)val & 0x0F)];
+ }
+ } else {
+ /* Skip alpha channel in the loop */
+ for (i=0; i < PIX_PER_LINE && npix; i+=6, npix-=3, pix++ ) {
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix++ & 0x0F)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix++ & 0x0F)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix >> 4)];
+ pixbuf[pixnum++] = (uchar) hextab[((uchar)*pix++ & 0x0F)];
+ }
+ }
+ pixbuf[pixnum++] = '\n';
+
+ if (pixnum >= (SZ_EPSBUF - PIX_PER_LINE - 1)) {
+ pixbuf[pixnum] = '\0';
+ fwrite ((char *)pixbuf, sizeof(char), pixnum, fp);
+ pixnum = 0;
+ }
+
+
+ /* skip the pad chars */
+ for (i=0; i<pad && npix; i++, npix--)
+ pix++;
+ }
+ cmap->min = min;
+ cmap->max = max;
+ eps_flushPix (fp);
+}
+
+
+/* EPS_WRITECMAP -- Output Postscript colormap.
+*/
+static void
+eps_writeCmap (cmap, fp)
+PSCmap *cmap;
+FILE *fp;
+{
+ register int i, j;
+
+ /* Dump number of colors and colormap used. */
+ fprintf (fp, "256\n");
+ for (i=0; i < 256; ) {
+ for (j=0; j < 10 && i < 256; i++, j++) {
+ fprintf (fp, "%02x%02x%02x",
+ cmap->r[i], cmap->g[i], cmap->b[i]);
+ }
+ fprintf (fp, "\n");
+ }
+}
+
+
+/* EPS_SIMPLEHEADER -- Output simple Postscript header.
+*/
+static char *EPSSimpleRLEProlog[]= {
+ "/rlestr1 1 string def\n",
+ "/readrlestring { /* s -- nr */\n",
+ " /rlestr exch def /* - */\n",
+ " currentfile rlestr1 readhexstring pop /* s1 */\n",
+ " 0 get /* c */\n",
+ " dup 127 le { /* c */\n",
+ " currentfile rlestr 0 /* c f s 0 */\n",
+ " 4 3 roll /* f s 0 c */\n",
+ " 1 add getinterval /* f s */\n",
+ " readhexstring pop /* s */\n",
+ " length /* nr */\n",
+ " } { /* c */\n",
+ " 256 exch sub dup /* n n */\n",
+ " currentfile rlestr1 readhexstring pop /* n n s1 */\n",
+ " 0 get /* n n c */\n",
+ " exch 0 exch 1 exch 1 sub { /* n c 0 1 n-1*/\n",
+ " rlestr exch 2 index put\n",
+ " } for /* n c */\n",
+ " pop /* nr */\n",
+ " } ifelse /* nr */\n",
+ "} bind def\n",
+ "/readstring { /* s -- s */\n",
+ " dup length 0 { /* s l 0 */\n",
+ " 3 copy exch /* s l n s n l*/\n",
+ " 1 index sub /* s l n s n r*/\n",
+ " getinterval /* s l n ss */\n",
+ " readrlestring /* s l n nr */\n",
+ " add /* s l n */\n",
+ " 2 copy le { exit } if /* s l n */\n",
+ " } loop /* s l l */\n",
+ " pop pop /* s */\n",
+ "} bind def\n",
+ NULL
+};
+
+static void
+eps_simpleHeader (psim, fp)
+PSImagePtr psim;
+FILE *fp;
+{
+ register char **line;
+ int icols=0, irows=0, scols=0, srows=0, turnflag=0;
+ float llx = 0.0, lly = 0.0;
+ time_t timer;
+
+
+ /* Get the common page parameters. */
+ eps_pageParams (psim, &llx, &lly, &icols, &irows, &scols, &srows,
+ &turnflag);
+
+ /* Now write header and prolog stuff */
+ fprintf (fp, "%%!PS-Adobe-3.0 EPSF-3.0\n" );
+ fprintf (fp, "%%%%Title: XImtool Screen Hardcopy\n");
+ fprintf (fp, "%%%%Creator: XImtool\n");
+ timer = time ((time_t *) NULL);
+ (void) localtime (&timer);
+ fprintf (fp, "%%%%CreationDate: %s", ctime(&timer));
+ if (psim->annotate)
+ fprintf (fp, "%%%%BoundingBox: %d %d %d %d\n",
+ (int) (MAX (0, llx - X_ANNOT_MARGIN)),
+ (int) (MAX (0, lly - Y_ANNOT_MARGIN)),
+ (int) ( llx + scols + 0.5 + X_ANNOT_MARGIN),
+ (int) ( lly + srows + 0.5 + Y_ANNOT_MARGIN) );
+ else
+ fprintf (fp, "%%%%BoundingBox: %d %d %d %d\n",
+ (int) (MAX (0, llx - 10)),
+ (int) (MAX (0, lly - 10)),
+ (int) ( llx + scols + 0.5 + 10),
+ (int) ( lly + srows + 0.5 + 10) );
+ fprintf (fp, "%%%%Pages: 1\n");
+ fprintf (fp, "%%%%EndComments\n" );
+
+ if ( psim->compression == RLECompression ) {
+ for (line = EPSSimpleRLEProlog; *line; line++)
+ fprintf (fp, "%s\n",*line);
+ } else {
+ fprintf (fp, "/readstring {\n" ); /* s -- s */
+ fprintf (fp, " currentfile exch readhexstring pop\n" );
+ fprintf (fp, "} bind def\n" );
+ }
+
+ if (psim->colorClass == EPS_TRUECOLOR) {
+ fprintf (fp, "/rpicstr %d string def\n", icols );
+ fprintf (fp, "/gpicstr %d string def\n", icols );
+ fprintf (fp, "/bpicstr %d string def\n", icols );
+ } else
+ fprintf (fp, "/picstr %d string def\n", icols );
+ fprintf (fp, "%%%%EndProlog\n" );
+ fprintf (fp, "%%%%Page: 1 1\n" );
+ fprintf (fp, "gsave\n" );
+
+ fprintf (fp, "%g %g translate\n", llx, lly );
+ fprintf (fp, "%d %d scale\n", scols, srows );
+ if ( turnflag ) {
+ if (debug) fprintf (stderr, "turnflag enabled....\n");
+ fprintf (fp, "0.5 0.5 translate 90 rotate -0.5 -0.5 translate\n");
+ }
+ fprintf (fp, "%d %d 8\n", icols, irows);
+ fprintf (fp, "[ %d 0 0 -%d 0 %d ]\n", icols, irows, irows );
+
+ if (psim->colorClass == EPS_TRUECOLOR) {
+ fprintf (fp, "{ rpicstr readstring }\n" );
+ fprintf (fp, "{ gpicstr readstring }\n" );
+ fprintf (fp, "{ bpicstr readstring }\n" );
+ fprintf (fp, "true 3\n" );
+ fprintf (fp, "colorimage\n" );
+ } else {
+ fprintf (fp, "{ picstr readstring }\n" );
+ fprintf (fp, "image\n" );
+ }
+}
+
+
+/* EPS_ANNOTATE -- Annotate the main image window with axis labels,
+** colorbars, and the title string.
+*/
+
+static void
+eps_annotate (psim, fp)
+PSImagePtr psim;
+FILE *fp;
+{
+ register char **line;
+ register int i;
+ int icols=0, irows=0, scols=0, srows=0, turnflag=0;
+ int cbar_size, nlabels;
+ int xpos, xstep, ypos, ystep;
+ float Mval, xval, yval, tic, mtic, Mtic;
+ float llx = 0.0, lly = 0.0;
+
+
+ /* Get the common page parameters. */
+ eps_pageParams (psim, &llx, &lly, &icols, &irows, &scols, &srows,
+ &turnflag);
+
+ /* Main image title. */
+ if (psim->label != NULL && (psim->page.flags & EPS_DOTITLE)) {
+ /* Write the annotation prolog stufd. */
+ fprintf (fp, "gsave\n" );
+
+ fprintf (fp,
+ "/labelfont /NewCenturySchlbk-Roman findfont 16 scalefont def\n");
+ if (turnflag) {
+ fprintf (fp, "/label { moveto labelfont setfont\n");
+ fprintf (fp, " 90 rotate show -90 rotate\n} def\n" );
+ fprintf (fp, "(%s) %g %g label\n", psim->label,
+ llx - TITLE_OFFSET,
+ lly + (srows/2) - 8.25*(strlen(psim->label)/2) );
+ } else {
+ fprintf (fp, "/label { moveto labelfont setfont show } def\n" );
+ fprintf (fp, "(%s) %g %g label\n", psim->label,
+ llx + (scols/2) - 8.25*(strlen(psim->label)/2),
+ lly + srows + TITLE_OFFSET);
+ }
+ fprintf (fp, "grestore\n");
+ }
+
+ /* A border for the image axes. */
+ if (psim->page.flags & EPS_DOBORDERS) {
+ fprintf (fp, "gsave\n" );
+ fprintf (fp, "/imBorder {\n");
+ fprintf (fp, " %-4d %-4d moveto %% Outer axis\n",
+ (int)(llx - AXIS_OOFFSET),
+ (int)(lly - AXIS_OOFFSET));
+ fprintf (fp, " 0 %-4d rlineto\n", srows + (2 * AXIS_OOFFSET));
+ fprintf (fp, " %-4d 0 rlineto\n", scols + (2 * AXIS_OOFFSET));
+ fprintf (fp, " 0 -%-4d rlineto\n", srows + (2 * AXIS_OOFFSET));
+ fprintf (fp, " closepath\n");
+ fprintf (fp, " %g setlinewidth\n", AXIS_OWIDTH);
+ fprintf (fp, " stroke\n");
+
+ fprintf (fp, " %-4d %-4d moveto %% Inner axis\n",
+ (int)(llx - AXIS_IOFFSET),
+ (int)(lly - AXIS_IOFFSET));
+ fprintf (fp, " 0 %-4d rlineto\n", srows + (2 * AXIS_IOFFSET));
+ fprintf (fp, " %-4d 0 rlineto\n", scols + (2 * AXIS_IOFFSET));
+ fprintf (fp, " 0 -%-4d rlineto\n", srows + (2 * AXIS_IOFFSET));
+ fprintf (fp, " closepath\n");
+ fprintf (fp, " %g setlinewidth\n", AXIS_IWIDTH);
+ fprintf (fp, " stroke\n");
+
+ fprintf (fp, "} def\n");
+ fprintf (fp, "imBorder\n");
+
+ /* Axis label font definitions. */
+ fprintf (fp,"/axlabelfont /Times-Roman findfont 8 scalefont def\n");
+ fprintf (fp,
+ "/axlabel { moveto axlabelfont setfont %s show %s } def\n",
+ (turnflag ? "90 rotate" : " "),
+ (turnflag ? "-90 rotate" : " "));
+
+ /* Axis ticmark procedures. */
+ fprintf (fp, "/xMajorTicmark {\n");
+ fprintf (fp, " moveto\n");
+ fprintf (fp, " 0 %d rlineto ", MAJOR_TICK_SIZE);
+ fprintf (fp, " 0 %d rmoveto ",
+ srows + MAJOR_TICK_SIZE + (2 * AXIS_IOFFSET) );
+ fprintf (fp, " 0 -%d rlineto\n", MAJOR_TICK_SIZE);
+ fprintf (fp, " %g setlinewidth\n stroke\n", MAJOR_TICK_WIDTH);
+ fprintf (fp, "} def\n");
+ fprintf (fp, "/yMajorTicmark {\n");
+ fprintf (fp, " moveto\n");
+ fprintf (fp, " %d 0 rlineto ", MAJOR_TICK_SIZE);
+ fprintf (fp, " %d 0 rmoveto ",
+ scols + MAJOR_TICK_SIZE + (2 * AXIS_IOFFSET) );
+ fprintf (fp, " -%d 0 rlineto\n", MAJOR_TICK_SIZE);
+ fprintf (fp, " %g setlinewidth\n stroke\n", MAJOR_TICK_WIDTH);
+ fprintf (fp, "} def\n");
+ fprintf (fp, "/xMinorTicmark {\n");
+ fprintf (fp, " moveto\n");
+ fprintf (fp, " 0 %d rlineto ", MINOR_TICK_SIZE);
+ fprintf (fp, " 0 %d rmoveto ",
+ srows + MAJOR_TICK_SIZE + (2*AXIS_IOFFSET) +
+ (MAJOR_TICK_SIZE - MINOR_TICK_SIZE) );
+ fprintf (fp, " 0 -%d rlineto\n", MINOR_TICK_SIZE);
+ fprintf (fp, " %g setlinewidth\n stroke\n", MINOR_TICK_WIDTH);
+ fprintf (fp, "} def\n");
+ fprintf (fp, "/yMinorTicmark {\n");
+ fprintf (fp, " moveto\n");
+ fprintf (fp, " %d 0 rlineto ", MINOR_TICK_SIZE);
+ fprintf (fp, " %d 0 rmoveto ",
+ scols + MAJOR_TICK_SIZE + (2*AXIS_IOFFSET) +
+ (MAJOR_TICK_SIZE - MINOR_TICK_SIZE) );
+ fprintf (fp, " -%d 0 rlineto\n", MINOR_TICK_SIZE);
+ fprintf (fp, " %g setlinewidth\n stroke\n", MINOR_TICK_WIDTH);
+ fprintf (fp, "} def\n");
+
+ /* The axis labeling. */
+ if (turnflag)
+ eps_landLabels (fp, psim, scols, srows, icols, irows, llx, lly);
+ else
+ eps_portLabels (fp, psim, scols, srows, icols, irows, llx, lly);
+ fprintf (fp, "grestore\n");
+ }
+
+ /* The colorbar. */
+ if (psim->page.flags & EPS_DOCOLORBAR) {
+ eps_doColorbar (fp, psim, scols, srows, llx, lly, turnflag);
+
+ /* Print the transform information. */
+ fprintf (fp, "gsave\n");
+ fprintf (fp, "/Times-Roman findfont 8 scalefont setfont\n");
+ if (turnflag) {
+ cbar_size = MIN (512, MAX (256, srows + 2));
+ fprintf (fp, "%d %d moveto\n",
+ (int)llx + scols + 26,
+ (int)lly + (srows/2) - (cbar_size/2)-(cbar_size==256?5:1));
+ } else {
+ cbar_size = MIN (512, MAX (256, scols + 2));
+ fprintf (fp, "%d %d moveto\n",
+ (int)llx + (scols/2) - (cbar_size/2)-(cbar_size==256?5:1),
+ (int)(lly-29));
+ }
+ fprintf (fp, "(z1=%.2f z2=%.2f ztrans=%s Con=%.2f Brt=%.2f cmap=%s ncolors=%d) %s show %s\n",
+ psim->z1, psim->z2,
+ (psim->ztype==EPS_UNITARY ? "unitary":
+ (psim->ztype==EPS_LINEAR ? "linear" : "log")),
+ psim->scale, psim->offset,
+ psim->cmap.cmap_name,
+ psim->cmap.max - psim->cmap.min + 1,
+ (turnflag ? "90 rotate" : " "),
+ (turnflag ? "-90 rotate" : " "));
+ fprintf (fp, "grestore\n");
+ }
+
+ /* Print the timestamp. */
+ fprintf (fp, "gsave\n");
+ fprintf (fp, "/Times-Roman findfont 6 scalefont setfont\n");
+ fprintf (fp, "20 15 moveto\n(%s) show\n", make_label());
+ fprintf (fp, "grestore\n");
+
+ if (debug) {
+ fprintf (stderr, "colormap: min/max = %d/%d\n",
+ psim->cmap.min, psim->cmap.max);
+ fprintf (stderr, "label: '%s'", make_label());
+ }
+}
+
+
+/* EPS_PORTRAITLABELS -- Write out the labeling procedures for a portrait
+** mode image.
+*/
+
+static void
+eps_portLabels (fp, psim, scols, srows, icols, irows, llx, lly)
+FILE *fp;
+PSImagePtr psim;
+int scols, srows;
+int icols, irows;
+float llx, lly;
+{
+ int start, end, range, nlabels;
+ float xpos, xstep, ypos, ystep;
+ float Mval, xval=0.0, yval=0.0, tic, mtic, Mtic;
+
+
+ /* X Axis labeling and ticmarks.
+ */
+ nlabels = (scols > 256 ? 5 : 3);
+ fprintf (fp, "/axLabelX {\n");
+ if (psim->urx > psim->llx) {
+ start = psim->llx;
+ end = psim->urx;
+ } else {
+ start = psim->urx;
+ end = psim->llx;
+ }
+ range = end - start + 1;
+ Mtic = tic = ticstep ((float)range, (range>=256 ? NTICMARKS : 3));
+ mtic = (float) tic / (tic < 100 ? 5. : 10.);
+ Mval = ( (int)(start + Mtic) / (int) Mtic) * Mtic;
+ xval = ( (int)(start + mtic) / (int) mtic) * mtic;
+ xstep = mtic * ((float)scols/(float)(range));
+ if (psim->urx > psim->llx)
+ xpos = llx + ( (float)(xval - start) / (float)range * scols);
+ else {
+ xpos = (llx + scols) - ((float)(xval-start) / (float)range * scols);
+ xstep = -xstep;
+ }
+ while (xval <= end) {
+ if ( xval == Mval ) {
+ fprintf (fp, " %4d %4d xMajorTicmark\t",
+ (int)xpos, (int)(lly-AXIS_OOFFSET));
+ fprintf (fp, " (%g) %d %d axlabel\n",
+ xval,
+ (int)xpos-(xval>=1000?8:(xval>=100?5:2)),
+ (int)(lly-14));
+ Mval += Mtic;
+ } else
+ fprintf (fp, "\t%4d %4d xMinorTicmark\n",
+ (int)xpos, (int)(lly-AXIS_OOFFSET));
+ xval += mtic;
+ xpos += xstep;
+ }
+ fprintf (fp, "} def\n");
+ fprintf (fp, "axLabelX\n");
+
+ /* Y Axis labeling and ticmarks. */
+ nlabels = (srows > 256 ? 5 : 3);
+ fprintf (fp, "/axLabelY {\n");
+ if (psim->ury > psim->lly) {
+ start = psim->lly;
+ end = psim->ury;
+ } else {
+ start = psim->ury;
+ end = psim->lly;
+ }
+ range = end - start + 1;
+ Mtic = tic = ticstep ((float)range, (range>=256 ? NTICMARKS : 3));
+ mtic = (float) tic / (tic < 100 ? 5. : 10.);
+ Mval = ( (int)(start + Mtic) / (int) Mtic) * Mtic;
+ yval = ( (int)(start + mtic) / (int) mtic) * mtic;
+ ystep = mtic * ((float)srows/(float)(range));
+ if (psim->ury > psim->lly)
+ ypos = lly + ( (float)(yval - start) / (float)range * srows);
+ else {
+ ypos = (lly + srows) - ((float)(yval-start) / (float)range * srows);
+ ystep = -ystep;
+ }
+ while (yval <= end) {
+ if ( yval == Mval ) {
+ fprintf (fp, " %4d %4d yMajorTicmark\t",
+ (int)(llx-AXIS_OOFFSET), (int)ypos);
+ fprintf (fp, " (%g) %d %d axlabel\n",
+ yval,
+ (int)(llx-(yval>=1000?27:(yval>=100?20:16))),
+ (int)ypos-2);
+ Mval += Mtic;
+ } else
+ fprintf (fp, "\t%4d %4d yMinorTicmark\n",
+ (int)(llx-AXIS_OOFFSET), (int)ypos);
+ yval += mtic;
+ ypos += ystep;
+ }
+ fprintf (fp, "} def\n");
+ fprintf (fp, "axLabelY\n");
+}
+
+
+/* EPS_LANDSCAPELABELS -- Write out the labeling procedures for a landscape
+** mode image.
+*/
+static void
+eps_landLabels (fp, psim, scols, srows, icols, irows, llx, lly)
+FILE *fp;
+PSImagePtr psim;
+int scols, srows;
+int icols, irows;
+float llx, lly;
+{
+ float xpos, xstep, ypos, ystep;
+ int start, end, range, nlabels;
+ float Mval, xval=0.0, yval=0.0, tic, mtic, Mtic;
+
+
+ /* X Axis labeling and ticmarks. */
+ nlabels = (srows > 256 ? 5 : 3);
+ fprintf (fp, "/axLabelX {\n");
+ if (psim->ury > psim->lly) {
+ start = psim->lly;
+ end = psim->ury;
+ } else {
+ start = psim->ury;
+ end = psim->lly;
+ }
+ range = end - start + 1;
+ Mtic = tic = ticstep ((float)range, (range>=256 ? NTICMARKS : 3));
+ mtic = (float) tic / (tic < 100 ? 5. : 10.);
+ Mval = ( (int)(start + Mtic) / (int) Mtic) * Mtic;
+ xval = ( (int)(start + mtic) / (int) mtic) * mtic;
+ xstep = mtic * ((float)scols/(float)(range));
+ if (psim->ury > psim->lly)
+ xpos = (llx + scols) - ((float)(xval-start) / (float)range * scols);
+ else {
+ xpos = llx + ((float)(xval-start) / (float)range * scols);
+ xstep = -xstep;
+ }
+ while (xval <= end ) {
+ if ( xval == Mval ) {
+ fprintf (fp, " %4d %4d xMajorTicmark\t",
+ (int)xpos, (int)(lly-AXIS_OOFFSET));
+ fprintf (fp, " (%g) %d %d axlabel\n",
+ xval,
+ (int)xpos+2,
+ (int)(lly-(yval>=1000?30:(yval>=100?25:20))) );
+ Mval += Mtic;
+ } else
+ fprintf (fp, "\t%4d %4d xMinorTicmark\n",
+ (int)xpos, (int)(lly-AXIS_OOFFSET));
+ xval += mtic;
+ xpos -= xstep;
+ }
+ fprintf (fp, "} def\n");
+ fprintf (fp, "axLabelX\n");
+
+ /* Y Axis labeling and ticmarks. */
+ nlabels = (srows > 256 ? 5 : 3);
+ fprintf (fp, "/axLabelY {\n");
+ if (psim->urx > psim->llx) {
+ start = psim->llx;
+ end = psim->urx;
+ } else {
+ start = psim->urx;
+ end = psim->llx;
+ }
+ Mtic = tic = ticstep ((float)range, (range>=256 ? NTICMARKS : 3));
+ mtic = (float) tic / (tic < 100 ? 5. : 10.);
+ Mval = ( (int)(start + Mtic) / (int) Mtic) * Mtic;
+ yval = ( (int)(start + mtic) / (int) mtic) * mtic;
+ ystep = mtic * ((float)scols/(float)(range));
+ if (psim->urx > psim->llx)
+ ypos = lly + ( (float)(yval - start) / (float)range * scols);
+ else {
+ ypos = (lly + srows) - ((float)(yval-start) / (float)range * scols);
+ ystep = -ystep;
+ }
+ while (yval <= end) {
+ if ( yval == Mval ) {
+ fprintf (fp, " %4d %4d yMajorTicmark\t",
+ (int)(llx-AXIS_OOFFSET), (int)ypos);
+ fprintf (fp, " (%g) %d %d axlabel\n",
+ yval,
+ (int)(llx+scols+(2*AXIS_OOFFSET)+2),
+ (int)ypos-(yval>=1000?9:(yval>=100?6:2)) );
+ Mval += Mtic;
+ } else
+ fprintf (fp, "\t%4d %4d yMinorTicmark\n",
+ (int)(llx-AXIS_OOFFSET), (int)ypos);
+ yval += mtic;
+ ypos += ystep;
+ }
+ fprintf (fp, "} def\n");
+ fprintf (fp, "axLabelY\n");
+}
+
+
+/* EPS_DOCOLORBAR -- Annotate the image with a colorbar.
+*/
+
+static void
+eps_doColorbar (fp, psim, scols, srows, llx, lly, turnflag)
+FILE *fp;
+PSImagePtr psim;
+int scols, srows;
+float llx, lly;
+int turnflag;
+{
+ register int i, j, cbar_size;
+ int ncolors, nlabels, pos, step, cmel, cmstep, val;
+
+
+ /* Colorbar label font definitions. */
+ fprintf (fp, "/cblabelfont /Times-Roman findfont 10 scalefont def\n");
+ fprintf (fp, "/cblabel { moveto cblabelfont setfont %s show %s } def\n",
+ (turnflag ? "90 rotate" : " "),
+ (turnflag ? "-90 rotate" : " "));
+
+ /* A border for the colorbar. */
+ fprintf (fp, "/cbarBorder {\n");
+ if (turnflag) {
+ cbar_size = MIN (512, MAX (256, srows + 2)) - 1;
+ fprintf (fp, " %4d %4d moveto\n",
+ (int)llx + scols + 31,
+ (int)lly + (srows/2) - (cbar_size/2) - 1);
+ fprintf (fp, " 17 0 rlineto\n");
+ fprintf (fp, " 0 %4d rlineto\n", cbar_size + 3);
+ fprintf (fp, " -17 0 rlineto\n");
+ } else {
+ cbar_size = MIN (512, MAX (256, scols + 2));
+ fprintf (fp, " %-4d %4d moveto\n",
+ (int)llx + (scols/2) - (cbar_size/2) - 1,
+ (int)(lly - 46));
+ fprintf (fp, " 0 14 rlineto\n");
+ fprintf (fp, " %-4d 0 rlineto\n", cbar_size + 3);
+ fprintf (fp, " 0 -14 rlineto\n");
+ }
+ fprintf (fp, " closepath\n");
+ fprintf (fp, " 1 setlinewidth\n");
+ fprintf (fp, " stroke\n");
+ fprintf (fp, "} def\n");
+ fprintf (fp, "cbarBorder\n");
+
+ /* Draw the colorbar labels, but only for grayscale images. */
+ ncolors = psim->cmap.max - psim->cmap.min + 1;
+ nlabels = 5;
+ if (turnflag)
+ pos = (int)lly + (srows/2) - (cbar_size/2);
+ else
+ pos = (int)llx + (scols/2) - (cbar_size/2);
+ step = cbar_size / nlabels;
+ cmel = psim->cmap.min;
+ cmstep = ncolors / nlabels;
+ for (i=0; i <= nlabels; i++) {
+ val = MONO(psim->cmap.r[cmel], /* get grayscale value */
+ psim->cmap.g[cmel],
+ psim->cmap.b[cmel]);
+ if (psim->z1 != 0.0 && psim->z2 != 0.0) {
+ /* We have a transformation defined, convert the grayscale
+ * value to original image values. Assumes a linear
+ * transformation, for a log transformation the wcsbox
+ * reports only screen units so we'll do that here as well.
+ */
+ if (psim->ztype == EPS_LINEAR)
+ val = ((psim->z2-psim->z1)/(float)ncolors)*cmel + psim->z1;
+ }
+
+ if (turnflag)
+ fprintf (fp, "(%d) %d %d cblabel\n",
+ val,
+ (int)llx + scols + 57,
+ pos-(val<100?3:6));
+ else
+ fprintf (fp, "(%d) %d %d cblabel\n",
+ val,
+ pos-(val<100?3:6),
+ (int)(lly-55));
+ cmel += cmstep;
+ cmel = (cmel < psim->cmap.max ? cmel : psim->cmap.max);
+ pos += step;
+ }
+
+ /* Draw the colorbar. */
+ if (psim->colorClass == EPS_GRAYSCALE) {
+ fprintf (fp, "/cbarstr %d string def\n", ncolors);
+ fprintf (fp, "gsave\n" );
+ if (turnflag) {
+ fprintf (fp, "%d %d translate\n",
+ (int)(llx + scols + 45),
+ (int)(lly + (srows/2) - (cbar_size/2)) + 1);
+ fprintf (fp,
+ "0.5 0.5 translate 90 rotate -0.5 -0.5 translate\n");
+ } else {
+ fprintf (fp, "%g %g translate\n",
+ llx + (scols/2) - (cbar_size/2) + 1,
+ lly - 45 );
+ }
+ fprintf (fp, "%d 12 scale\n", cbar_size);
+ fprintf (fp, "%d 1 8 [ %d 0 0 1 0 0 ]\n", ncolors, ncolors);
+
+ fprintf (fp, "{ cbarstr readstring }\n" );
+ fprintf (fp, "image\n" );
+
+ } else {
+ fprintf (fp, "DisplayImage\n" );
+ if (turnflag) {
+ fprintf (fp, "%d %d\n",
+ (int)(llx + scols + 34),
+ (int)(lly + (srows/2) - (cbar_size/2)));
+ fprintf (fp, "12 %d\n", cbar_size);
+ } else {
+ fprintf (fp, "%d %d\n",
+ (int)llx + (scols/2) - (cbar_size/2),
+ (int)lly - 45 );
+ fprintf (fp, "%d 12\n", cbar_size);
+ }
+ fprintf (fp, "%d 1\n", ncolors);
+ fprintf (fp, "%d\n", turnflag);
+ fprintf (fp, "0\n");
+ fprintf (fp, "1\n");
+ }
+
+ /* Write out the colormap used. */
+ if (psim->colorClass == EPS_GRAYSCALE) {
+ for (i=psim->cmap.min; i <= psim->cmap.max; i++ ) {
+ fprintf (fp, "%02x",
+ MONO(psim->cmap.r[i],psim->cmap.g[i], psim->cmap.b[i]));
+ if ((i+1) % 32 == 0)
+ fprintf (fp, "\n");
+ }
+ fprintf (fp, "\n");
+ fprintf (fp, "grestore\n");
+ } else {
+ for (j=1, i=psim->cmap.min; i <= psim->cmap.max; i++, j++ )
+ fprintf (fp, "%02x%02x%02x\n",
+ psim->cmap.r[i],psim->cmap.g[i], psim->cmap.b[i]);
+ if (j % 12 ==0)
+ fprintf (fp, "\n");
+ }
+}
+
+
+/* EPS_COLORHEADER - Write the pseudocolor header prolog and compute EPS page
+** parameters.
+*/
+static char *EPSColorProlog[]=
+ {
+ "%%BeginProlog",
+ "%",
+ "% Display a color image. The image is displayed in color on",
+ "% Postscript viewers or printers that support color, otherwise",
+ "% it is displayed as grayscale.",
+ "%",
+ "/buffer 512 string def",
+ "/byte 1 string def",
+ "/color_packet 3 string def",
+ "/pixels 768 string def",
+ "",
+ "/DirectClassPacket",
+ "{",
+ " %",
+ " % Get a DirectClass packet.",
+ " %",
+ " % Parameters: ",
+ " % red.",
+ " % green.",
+ " % blue.",
+ " % length: number of pixels minus one of this color (optional).",
+ " %",
+ " currentfile color_packet readhexstring pop pop",
+ " compression 0 gt",
+ " {",
+ " /number_pixels 3 def",
+ " }",
+ " {",
+ " currentfile byte readhexstring pop 0 get",
+ " /number_pixels exch 1 add 3 mul def",
+ " } ifelse",
+ " 0 3 number_pixels 1 sub",
+ " {",
+ " pixels exch color_packet putinterval",
+ " } for",
+ " pixels 0 number_pixels getinterval",
+ "} bind def",
+ "",
+ "/DirectClassImage",
+ "{",
+ " %",
+ " % Display a DirectClass image.",
+ " %",
+ " systemdict /colorimage known",
+ " {",
+ " columns rows 8",
+ " [",
+ " columns 0 0",
+ " rows neg 0 rows",
+ " ]",
+ " { DirectClassPacket } false 3 colorimage",
+ " }",
+ " {",
+ " %",
+ " % No colorimage operator; convert to grayscale.",
+ " %",
+ " columns rows 8",
+ " [",
+ " columns 0 0",
+ " rows neg 0 rows",
+ " ]",
+ " { GrayDirectClassPacket } image",
+ " } ifelse",
+ "} bind def",
+ "",
+ "/GrayDirectClassPacket",
+ "{",
+ " %",
+ " % Get a DirectClass packet; convert to grayscale.",
+ " %",
+ " % Parameters: ",
+ " % red",
+ " % green",
+ " % blue",
+ " % length: number of pixels minus one of this color (optional).",
+ " %",
+ " currentfile color_packet readhexstring pop pop",
+ " color_packet 0 get 0.299 mul",
+ " color_packet 1 get 0.587 mul add",
+ " color_packet 2 get 0.114 mul add",
+ " cvi",
+ " /gray_packet exch def",
+ " compression 0 gt",
+ " {",
+ " /number_pixels 1 def",
+ " }",
+ " {",
+ " currentfile byte readhexstring pop 0 get",
+ " /number_pixels exch 1 add def",
+ " } ifelse",
+ " 0 1 number_pixels 1 sub",
+ " {",
+ " pixels exch gray_packet put",
+ " } for",
+ " pixels 0 number_pixels getinterval",
+ "} bind def",
+ "",
+ "/GrayPseudoClassPacket",
+ "{",
+ " %",
+ " % Get a PseudoClass packet; convert to grayscale.",
+ " %",
+ " % Parameters: ",
+ " % index: index into the colormap.",
+ " % length: number of pixels minus one of this color (optional).",
+ " %",
+ " currentfile byte readhexstring pop 0 get",
+ " /offset exch 3 mul def",
+ " /color_packet colormap offset 3 getinterval def",
+ " color_packet 0 get 0.299 mul",
+ " color_packet 1 get 0.587 mul add",
+ " color_packet 2 get 0.114 mul add",
+ " cvi",
+ " /gray_packet exch def",
+ " compression 0 gt",
+ " {",
+ " /number_pixels 1 def",
+ " }",
+ " {",
+ " currentfile byte readhexstring pop 0 get",
+ " /number_pixels exch 1 add def",
+ " } ifelse",
+ " 0 1 number_pixels 1 sub",
+ " {",
+ " pixels exch gray_packet put",
+ " } for",
+ " pixels 0 number_pixels getinterval",
+ "} bind def",
+ "",
+ "/PseudoClassPacket",
+ "{",
+ " %",
+ " % Get a PseudoClass packet.",
+ " %",
+ " % Parameters: ",
+ " % index: index into the colormap.",
+ " % length: number of pixels minus one of this color (optional).",
+ " %",
+ " currentfile byte readhexstring pop 0 get",
+ " /offset exch 3 mul def",
+ " /color_packet colormap offset 3 getinterval def",
+ " compression 0 gt",
+ " {",
+ " /number_pixels 3 def",
+ " }",
+ " {",
+ " currentfile byte readhexstring pop 0 get",
+ " /number_pixels exch 1 add 3 mul def",
+ " } ifelse",
+ " 0 3 number_pixels 1 sub",
+ " {",
+ " pixels exch color_packet putinterval",
+ " } for",
+ " pixels 0 number_pixels getinterval",
+ "} bind def",
+ "",
+ "/PseudoClassImage",
+ "{",
+ " %",
+ " % Display a PseudoClass image.",
+ " %",
+ " % Parameters: ",
+ " % colors: number of colors in the colormap.",
+ " % colormap: red, green, blue color packets.",
+ " %",
+ " currentfile buffer readline pop",
+ " token pop /colors exch def pop",
+ " /colors colors 3 mul def",
+ " /colormap colors string def",
+ " currentfile colormap readhexstring pop pop",
+ " systemdict /colorimage known",
+ " {",
+ " columns rows 8",
+ " [",
+ " columns 0 0",
+ " rows neg 0 rows",
+ " ]",
+ " { PseudoClassPacket } false 3 colorimage",
+ " }",
+ " {",
+ " %",
+ " % No colorimage operator; convert to grayscale.",
+ " %",
+ " columns rows 8",
+ " [",
+ " columns 0 0",
+ " rows neg 0 rows",
+ " ]",
+ " { GrayPseudoClassPacket } image",
+ " } ifelse",
+ "} bind def",
+ "",
+ "/DisplayImage",
+ "{",
+ " %",
+ " % Display a DirectClass or PseudoClass image.",
+ " %",
+ " % Parameters: ",
+ " % x & y translation.",
+ " % x & y scale.",
+ " % image columns & rows.",
+ " % orientation: 0-Portrait or 1-Landscape",
+ " % class: 0-DirectClass or 1-PseudoClass.",
+ " % compression: 0-RunlengthEncodedCompression or 1-NoCompression.",
+ " % hex color packets.",
+ " %",
+ " gsave",
+ " currentfile buffer readline pop",
+ " token pop /x exch def",
+ " token pop /y exch def pop",
+ " x y translate",
+ " currentfile buffer readline pop",
+ " token pop /x exch def",
+ " token pop /y exch def pop",
+ " x y scale",
+ " currentfile buffer readline pop",
+ " token pop /columns exch def",
+ " token pop /rows exch def pop",
+ " currentfile buffer readline pop",
+ " token pop /orient exch def pop",
+ " orient 0 gt { 0.5 0.5 translate 90 rotate -0.5 -0.5 translate } if",
+ " currentfile buffer readline pop",
+ " token pop /class exch def pop",
+ " currentfile buffer readline pop",
+ " token pop /compression exch def pop",
+ " class 0 gt { PseudoClassImage } { DirectClassImage } ifelse",
+ " grestore",
+ "} bind def",
+ "%%EndProlog",
+ "%%Page: 1 1",
+ NULL
+};
+
+
+static void
+eps_colorHeader (psim, fp)
+PSImagePtr psim;
+FILE *fp;
+{
+ register char **line;
+ int icols=0, irows=0, scols=0, srows=0, turnflag=0;
+ float llx = 0.0, lly = 0.0;
+ time_t timer;
+
+
+ /* Get the common page parameters. */
+ eps_pageParams (psim, &llx, &lly, &icols, &irows, &scols, &srows,
+ &turnflag);
+
+ /* Now write header and prolog stuff */
+ fprintf (fp, "%%!PS-Adobe-3.0 EPSF-3.0\n");
+ fprintf (fp, "%%%%Title: XImtool Screen Hardcopy\n");
+ fprintf (fp, "%%%%Creator: XImtool\n");
+ timer = time ((time_t *) NULL);
+ (void) localtime (&timer);
+ fprintf (fp, "%%%%CreationDate: %s", ctime(&timer));
+ if (psim->annotate)
+ fprintf (fp, "%%%%BoundingBox: %d %d %d %d\n",
+ (int) (MAX (0, llx - X_ANNOT_MARGIN)),
+ (int) (MAX (0, lly - Y_ANNOT_MARGIN)),
+ (int) ( llx + scols + 0.5 + X_ANNOT_MARGIN),
+ (int) ( lly + srows + 0.5 + Y_ANNOT_MARGIN) );
+ else
+ fprintf (fp, "%%%%BoundingBox: %d %d %d %d\n",
+ (int) (MAX (0, llx - 10)),
+ (int) (MAX (0, lly - 10)),
+ (int) ( llx + scols + 0.5 + 10),
+ (int) ( lly + srows + 0.5 + 10) );
+ fprintf (fp, "%%%%Pages: 1\n");
+ fprintf (fp, "%%%%EndComments\n");
+
+ /* Output remaining Postscript prolog commands. */
+ for (line = EPSColorProlog; *line; line++)
+ fprintf (fp, "%s\n",*line);
+ fprintf (fp, "userdict begin\n");
+ fprintf (fp, "%%%%BeginData:\n");
+
+ fprintf (fp, "DisplayImage\n");
+
+ /* Now write the image display parameters, specifically
+ *
+ * x & y translation.
+ * x & y scale.
+ * image columns & rows.
+ * orientation: 0-Portrait or 1-Landscape
+ * class: 0-DirectClass or 1-PseudoClass.
+ * compression: 0-RunlengthEncodedCompression or 1-NoCompression.
+ * hex color packets.
+ */
+
+ fprintf (fp, "%d %d\n%u %u\n%u %u\n%d\n%d\n%d\n",
+ (int) llx, (int) lly,
+ (int) scols, (int) srows,
+ psim->cols, psim->rows,
+ turnflag,
+ psim->colorClass == EPS_PSEUDOCOLOR,
+ psim->compression == NoCompression);
+}
+
+
+/* EPS_WRITETRAILER -- Output Postscript trailer blurb.
+*/
+static void
+eps_writeTrailer (fp)
+FILE *fp;
+{
+ fprintf (fp, "\n");
+ fprintf (fp, "showpage\n");
+ fprintf (fp, "%%%%EndData\n");
+ fprintf (fp, "end\n");
+ fprintf (fp, "%%%%PageTrailer\n");
+ fprintf (fp, "%%%%Trailer\n");
+ fprintf (fp, "%%%%EOF\n");
+}
+
+
+/* EPS_SIMPLETRAILER -- Output Postscript trailer blurb.
+*/
+static void
+eps_simpleTrailer (fp)
+FILE *fp;
+{
+ fprintf (fp, "showpage\n");
+}
+
+
+static void
+eps_flushPix (fp)
+FILE *fp;
+{
+ pixbuf[pixnum] = '\0';
+ fprintf (fp, "%s", pixbuf);
+ pixnum = 0;
+ lpix = 0;
+}
+
+
+/* Utility Routines.
+*/
+
+/* TICSTEP -- calculate nice intervals for the ticmarks.
+*/
+static float
+ticstep (range,nsteps)
+float range;
+int nsteps;
+{
+ double df, t2, t5, p1, p2, p3;
+ float ticstep;
+ int logtic;
+
+
+ df = range / (float)(nsteps + 1);
+ t2 = 0.301029996;
+ t5 = 0.698970004;
+ p1 = log10 ((double)(df > 0.0 ? df : -df));
+ p2 = (int) p1;
+ p3 = p1 - p2;
+ if(p3 < 0.) {
+ p3 = p2 + 1.;
+ p2 = p2 - 1.;
+ }
+
+ if (p3 < 1.0e-10)
+ ticstep = pow((double)10.0,(double)(p2));
+ else if (p3 > 0. && p3 <= t2)
+ ticstep = pow((double)10.0,(double)(p2+t2));
+ else if (p3 > t2 && p3 <= t5)
+ ticstep = pow((double)10.0,(double)(p2+t5));
+ else if (p3 > t5 && p3 <= 1.)
+ ticstep = pow((double)10.0,(double)(p2+1.));
+ else
+ ticstep = df;
+
+ logtic = (int) log10(ticstep) - 1;
+ ticstep = (int)( (ticstep / pow((double)10.,(double)logtic)) *
+ pow((double)10.,(double)logtic) );
+
+ if (ticstep < 0.1) ticstep = 0.10;
+
+ return (ticstep);
+}
+
+
+/* MAKE_LABEL -- Generate the label for the output printer page.
+*/
+static char *
+make_label()
+{
+ static char buf[128];
+ char hostname[32];
+ char username[32];
+ struct passwd *pw;
+ long clock;
+
+
+ bzero (buf, 128);
+ bzero (hostname, 32);
+ bzero (username, 32);
+
+#ifdef SOLARIS
+ sysinfo (SI_HOSTNAME, hostname, 32);
+#else
+ gethostname (hostname, 32);
+#endif
+
+ clock = time(0);
+ pw = getpwuid (getuid());
+ strcpy (username, pw->pw_name);
+ endpwent();
+
+ sprintf (buf, "NOAO/IRAF %s@%s %s",
+ username, hostname, asctime(localtime(&clock)));
+
+ return (buf);
+}
diff --git a/vendor/x11iraf/ximtool/eps.h b/vendor/x11iraf/ximtool/eps.h
new file mode 100644
index 00000000..89427ee1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/eps.h
@@ -0,0 +1,146 @@
+/*
+ * EPS.H -- Include definitions for EPS hardcopy routines.
+ */
+
+
+/* Handy macro definitions */
+
+#define MONO(rd,gn,bl) ((int)(rd*11 + gn*16 + bl*5) >> 5) /*.33R+ .5G+ .17B*/
+#undef MAX
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#undef MIN
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+
+#define Orientation(ps) ( ps->page.orientation )
+#define Scale(ps) ( ps->page.scale )
+#define MaxScale(ps) ( ps->page.maxscale )
+#define PageType(ps) ( ps->page.page_type )
+#define DoAutoScale(ps) ( ps->page.flags & EPS_AUTOSCALE )
+#define DoAutoRotate(ps) ( ps->page.flags & EPS_AUTOROTATE )
+#define DoMaxAspect(ps) ( ps->page.flags & EPS_MAXASPECT )
+
+#define PIX_PER_LINE 72
+
+/* Compression options. */
+#define NoCompression 0 /* Don't compress image */
+#define RLECompression 1 /* RLE compression */
+#define LZWCompression 2 /* LZW compression (not implemted) */
+#define JPEGCompression 3 /* JPEG compression (not implemted) */
+
+/* Output color classes. */
+#define EPS_GRAYSCALE 0 /* Write a grayscale image */
+#define EPS_PSEUDOCOLOR 1 /* Write a pseudocolor image */
+#define EPS_TRUECOLOR 2 /* Write a RGB image */
+
+/* Page option flags. */
+#define EPS_PORTRAIT 0 /* Page orientations */
+#define EPS_LANDSCAPE 1
+#define EPS_AUTOSCALE 0x01 /* Auto scale to fit on page */
+#define EPS_AUTOROTATE 0x02 /* Auto rotate to fit on page */
+#define EPS_MAXASPECT 0x04 /* Increase scale to max aspect */
+#define EPS_DOTITLE 0x10 /* Do title string */
+#define EPS_DOBORDERS 0x20 /* Do image borders */
+#define EPS_DOCOLORBAR 0x40 /* Do colorbar */
+
+/* Transformation parameters. */
+#define EPS_UNITARY 0
+#define EPS_LINEAR 1
+#define EPS_LOG 2
+
+/* Page layout structure. */
+typedef struct {
+ int orientation; /* page orioentation */
+ float scale; /* image scale factor */
+ float maxscale; /* maxaspect image scale factor */
+ int dpi; /* dpi resolution */
+ int page_type; /* type of paper being used */
+ int flags; /* option flags */
+} PSPage, *PSPagePtr;
+
+/* Colormap structure. */
+typedef struct {
+ int IsDefault; /* Are we using the default colormap? */
+ int ncolors; /* number of colormap colors */
+ int min, max; /* image min/max */
+ unsigned char r[256]; /* red colormap */
+ unsigned char g[256]; /* green colormap */
+ unsigned char b[256]; /* blue colormap */
+ char *cmap_name; /* colormap name */
+} PSCmap, *PSCmapPtr;
+
+/* Main EPS structure. */
+typedef struct {
+ int cols; /* num output columns */
+ int rows; /* num output rows */
+ int colorClass; /* output color class */
+ int compression; /* output compression type */
+ int annotate; /* annotate the output image? */
+ int llx, lly, urx, ury; /* image coordinate corners */
+ float z1, z2; /* zscale transform values */
+ int ztype; /* type of transformation */
+ float offset, scale; /* brightness/contrast values */
+ char *label; /* label string */
+
+ PSPage page; /* Page layout structure */
+ PSCmap cmap; /* Colormap struct */
+} PSImage, *PSImagePtr;
+
+
+/* Page sizes and resolution information. */
+#define EPS_LETTER 0
+#define EPS_LEGAL 1
+#define EPS_A4 2
+#define EPS_B5 3
+#define EPS_BSIZE 4
+#define EPS_4BY5 5
+#define EPS_35MM 6
+
+#define PageXdim(ps) ( PageInfo[ps->page.page_type].npixx )
+#define PageYdim(ps) ( PageInfo[ps->page.page_type].npixy )
+#define PageWidth(ps) ( PageInfo[ps->page.page_type].sizex )
+#define PageHeight(ps) ( PageInfo[ps->page.page_type].sizey )
+
+/* Page layout definitions. */
+#define X_ANNOT_MARGIN 30 /* margin in pixels for annotation */
+#define Y_ANNOT_MARGIN 60 /* margin in pixels for annotation */
+#define TITLE_OFFSET 20 /* Offset for title string */
+#define AXIS_OOFFSET 7 /* Outer offset for axis */
+#define AXIS_IOFFSET 2 /* Inner offset for axis */
+#define AXIS_OWIDTH 1.5 /* Outer axis width */
+#define AXIS_IWIDTH 1.0 /* Inner axis width */
+#define MAJOR_TICK_SIZE 5 /* Size of major tic mark */
+#define MAJOR_TICK_WIDTH 1.5 /* Width of major tic mark */
+#define MINOR_TICK_SIZE 3 /* Size of major tic mark */
+#define MINOR_TICK_WIDTH 0.5 /* Width of major tic mark */
+#define NTICMARKS 5 /* Number of major tick marks */
+
+
+typedef struct {
+ float sizex, sizey; /* page size in inches */
+ int npixx, npixy; /* pix resolution at 72 dpi */
+} PSPageInfo;
+
+static PSPageInfo PageInfo[] = { /* assumes 300 dpi */
+ { 8.500, 11.000, /* US NORMAL, aka LETTER */
+ 612, 762
+ },
+ { 8.500, 14.000, /* US LEGAL */
+ 612, 1008
+ },
+ { 8.267, 11.811, /* A4 */
+ 595, 850
+ },
+ { 7.283, 10.630, /* B5 */
+ 524, 765
+ },
+ {11.000, 17.000, /* B-size */
+ 762, 1224
+ },
+ { 3.875, 4.875, /* 4 by 5 */
+ 279, 351
+ },
+ { 0.945, 1.417, /* 35mm (24x36) */
+ 68, 102
+ }
+};
diff --git a/vendor/x11iraf/ximtool/fitsio.c b/vendor/x11iraf/ximtool/fitsio.c
new file mode 100644
index 00000000..9bbd50c1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/fitsio.c
@@ -0,0 +1,923 @@
+/*
+ * FITSIO.C -- Routines to load and save simple FITS files.
+ *
+ * ival = isFITS (fname)
+ * loadFITS (fname, pixels, w, h, r, g, b, ncolors,
+ * zsc, zr, &z1, &z2, nsample)
+ * writeFITS (fp, pixels, pixtype, w,h, r,g,b, ncolors)
+ * str = getFITSHdr (fname)
+
+ * LoadFITS(fname, numcols) - loads a FITS file
+ * WriteFITS(fp, pic, w, h, rmap, gmap, bmap, numcols)
+ *
+ * isFITS -- returns nonzero if the named file is a FITS file.
+ * loadFITS -- reads a FITS file and returns the decoded pixel array and gray-
+ * scale 8 bit colormap. The caller is responsible for freeing
+ * the pixels buffer.
+ * writeFITS -- performs the converse operation, writing the given pixel array
+ * and colormap to the output Sun rasterfile.
+ * Based on contributed FITS I/O software for XV by David Robinson.
+ */
+
+
+#include <stdio.h>
+#include <math.h>
+#include <ctype.h>
+
+#define NCARDS 36
+#define BLOCKSIZE 2880
+#define EPSILON 1.192e-7
+
+
+#define CONTRAST 0.25 /* zscaling parameters */
+#define NSAMPLE 1000
+
+
+/* MONO returns total intensity of r,g,b components */
+#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5) /*.33R+ .5G+ .17B*/
+
+/* data types */
+enum datatype { T_INT, T_LOG, T_REAL, T_NOVAL, T_STRING };
+
+typedef unsigned char byte;
+#ifndef AIXV3
+#ifndef OSF1
+typedef unsigned char uchar;
+#endif
+#endif
+
+typedef struct {
+ FILE *fp; /* file pointer */
+ int bitpix, size; /* bits per pixel, sizeof(unit) */
+ int naxis; /* number of axes */
+ long int axes[2]; /* size of each axis */
+ long int ndata; /* number of elements in data */
+ long int cpos; /* current position in data file */
+ char title[80]; /* image title */
+ int extend; /* image has extensions? */
+ int nextend; /* number of extensions */
+ float bscale, bzero; /* scaling parameters */
+} FITS;
+
+/* Function prototypes */
+#ifdef __STDC__
+
+#include <stddef.h>
+#include <stdlib.h>
+
+static char *ftopen2d (FITS *fs, char *file, int *nx, int *ny, int *bitpix);
+static void ftclose (FITS *fs);
+static char *ftgbyte (FITS *fs, uchar *buffer, int nelem, int zsc, int zr, float *z1, float *z2, int nsample);
+static char *rdheader (FITS *fs);
+static char *wrheader (FILE *fp, int nx, int ny);
+static char *rdcard (char *card, char *name, enum datatype dtype, long int *kvalue, float *rvalue);
+static void wrcard (char *card, char *name, enum datatype dtype, int kvalue);
+static char *ftgdata (FITS *fs, void *buffer, int nelem);
+static char *ftfixdata (FITS *fs, void *buffer, int nelem);
+#else
+static char *ftopen2d ();
+static void ftclose ();
+static char *ftgbyte ();
+static char *rdheader ();
+static char *wrheader ();
+static char *rdcard ();
+static void wrcard ();
+static char *ftgdata ();
+static char *ftfixdata ();
+#endif
+
+
+/* ----------------
+ * Public routines.
+ * ----------------*/
+
+
+/* loadFits - Load a simple FITS file.
+ */
+char *
+loadFITS (fname, pix, nx, ny, r,g,b, ncolors, zsc, zr, z1, z2, nsample)
+char *fname; /* input filename */
+uchar **pix; /* output pixels */
+int *nx, *ny; /* dimensions */
+uchar *r, *g, *b; /* colormap */
+int *ncolors; /* number of colors */
+int zsc, zr; /* z-scaling flags */
+float *z1, *z2; /* zscale values */
+int nsample; /* number of sample pts */
+
+{
+ FITS fs;
+ int i, w = 0, h = 0, bitpix, np;
+ byte *image;
+ char *error;
+
+ error = ftopen2d (&fs, fname, &w, &h, &bitpix);
+ if (error)
+ return error;
+ if (fs.extend)
+ return "Load support for MEF files\nis not currently implemented";
+
+ /* allocate memory for image and read it in */
+ np = w * h;
+ image = (byte *) malloc (np);
+ if (image == NULL)
+ return "Insufficient memory";
+
+ error = ftgbyte (&fs, image, np, zsc, zr, z1, z2, nsample);
+ ftclose (&fs);
+ if (error) {
+ free (image);
+ return error;
+ }
+
+ /* There seems to be a convention that fits files be displayed using
+ * a cartesian coordinate system. Thus the first pixel is in the lower
+ * left corner. Fix this by reflecting in the line y=h/2.
+ */
+ flip (image, w, h);
+
+ /* sucess ! */
+ *pix = (unsigned char *) image;
+ *nx = w;
+ *ny = h;
+ *ncolors = 256;
+ for (i = 0; i < 256; i++)
+ r[i] = g[i] = b[i] = i;
+
+ return NULL;
+}
+
+
+/* writeFITS -- Write the current frame buffer out as a FITS image.
+ */
+
+char *
+writeFITS (fp, image, w, h, rmap, gmap, bmap, numcols)
+FILE *fp;
+byte *image;
+int w, h;
+byte *rmap, *gmap, *bmap;
+int numcols;
+{
+ register int i, j, np, nend;
+ register byte *ptr;
+ char *error;
+ byte rgb[256];
+
+ error = wrheader(fp, w, h);
+ if (error != NULL)
+ return error;
+
+ for (i = 0; i < numcols; i++)
+ rgb[i] = MONO(rmap[i], gmap[i], bmap[i]);
+
+ /* flip line ordering when writing out */
+ for (i = h - 1; i >= 0; i--) {
+ ptr = &image[i*w];
+ for (j = 0; j < w; j++, ptr++)
+ putc(rgb[*ptr], fp);
+ }
+
+ np = w * h;
+ /* nend is the number of padding characters at the end of the last
+ * block.
+ */
+ nend = ((np + BLOCKSIZE - 1) / BLOCKSIZE) * BLOCKSIZE - np;
+
+ if (nend)
+ for (i = 0; i < nend; i++)
+ putc('\0', fp);
+
+ return NULL;
+}
+
+
+/* IsFITS -- Test a file to see if it is a FITS file.
+ */
+int
+isFITS (fname)
+char *fname; /* input filename */
+{
+ register FILE *fp;
+ int value = 0;
+ char keyw[8], val;
+
+ if (fp = fopen (fname, "r")) {
+ fscanf (fp, "%6s = %c", keyw, &val);
+ if (strcmp ("SIMPLE", keyw) == 0 && val == 'T')
+ value = 1;
+ fclose (fp);
+ }
+ return value;
+}
+
+
+/* getFITSHdr -- Get some set of header information for the GUI.
+ */
+
+char *
+getFITSHdr (fname)
+char *fname;
+{
+ FITS fs;
+ char *error, *title, *line;
+ int w, h, bitpix;
+
+ line = (char *) malloc (80);
+
+ error = ftopen2d (&fs, fname, &w, &h, &bitpix);
+ if (error) {
+ strcpy (line, error);
+ return (line);
+ }
+
+ if (fs.extend) {
+ sprintf (line, "%-16.16s %3d (%2d extns) %s",
+ fname, bitpix, fs.nextend, fs.title);
+ } else {
+ sprintf (line, "%-16.16s %3d %5dx%-5d %s",
+ fname, bitpix, w,h, fs.title);
+ }
+
+ ftclose (&fs);
+
+ return (line);
+}
+
+
+
+/*
+ * Private Procedures
+ * ------------------
+ */
+
+/* Writes a minimalist FITS file header */
+static char
+*wrheader (fp, nx, ny)
+FILE *fp;
+int nx, ny;
+{
+ char *block;
+ int i;
+
+ block = (char *) malloc (BLOCKSIZE);
+ if (block == NULL)
+ return "Insufficient memory for workspace";
+ memset(block, ' ', BLOCKSIZE);
+
+ i = 0;
+ wrcard(&block[80*i++], "SIMPLE", T_LOG, 1); /* SIMPLE keyword */
+ wrcard(&block[80*i++], "BITPIX", T_INT, 8); /* BITPIX keyword */
+ wrcard(&block[80*i++], "NAXIS", T_INT, 2); /* NAXIS keyword */
+ wrcard(&block[80*i++], "NAXIS1", T_INT, nx); /* NAXIS1 keyword */
+ wrcard(&block[80*i++], "NAXIS2", T_INT, ny); /* NAXIS2 keyword */
+ wrcard(&block[80*i++], "END", T_NOVAL, 0); /* END keyword */
+ i = fwrite(block, sizeof(char), BLOCKSIZE, fp);
+ if (i != BLOCKSIZE)
+ return "Error writing FITS file";
+ return NULL;
+}
+
+
+/* open a 2-dimensional fits file.
+ * Stores the dimensions of the file in nx and ny, and updates the FITS
+ * structure passed in fs.
+ * If successful, returns NULL otherwise returns an error message.
+ * Will return an error message if the primary data unit is not a 2-dimensional
+ * array.
+ */
+static char
+*ftopen2d(fs, file, nx, ny, bitpix)
+FITS *fs;
+char *file;
+int *nx, *ny, *bitpix;
+{
+ FILE *fp;
+ int naxis, i;
+ char *error;
+
+ fp = fopen(file, "rb");
+ if (fp == NULL)
+ return "Unable to open FITS file";
+
+ fs->fp = fp;
+ fs->bitpix = 0;
+ fs->naxis = 0;
+ fs->cpos = 0;
+
+ /* read header */
+ error = rdheader(fs);
+
+ if (error != NULL) {
+ ftclose(fs);
+ return error;
+ }
+
+ /* get number of data */
+ fs->ndata = 1;
+ for (i = 0; i < fs->naxis; i++)
+ fs->ndata = fs->ndata * fs->axes[i];
+
+ naxis = fs->naxis;
+
+ *nx = fs->axes[0];
+ *ny = fs->axes[1];
+ *bitpix = fs->bitpix;
+
+ return error;
+}
+
+
+/* closes a fits file */
+static void
+ftclose (fs)
+FITS *fs;
+{
+ if (fs == NULL)
+ return;
+ if (fs->fp != NULL)
+ fclose(fs->fp);
+}
+
+
+/* reads the fits header, and updates the FITS structure fs.
+ * Returns NULL on success, or an error message otherwise.
+ */
+static char *
+rdheader (fs)
+FITS *fs;
+{
+ int i, j, res;
+ char name[9];
+ char *block;
+ char *error;
+ long int val; /* the value */
+ float rval; /* floating point value */
+
+ block = (char *) malloc(BLOCKSIZE);
+ if (block == NULL)
+ return "Insufficient memory for workspace";
+
+ res = fread(block, sizeof(char), BLOCKSIZE, fs->fp);
+ if (res != BLOCKSIZE)
+ return "Error reading FITS file";
+ i = 0;
+
+ /* read SIMPLE key */
+ error = rdcard(block, "SIMPLE", T_LOG, &val, &rval);
+ if (error != NULL)
+ return error;
+ /*
+ if (val == 0)
+ return "Not a SIMPLE FITS file";
+ */
+ i++;
+
+ /* read BITPIX key */
+ error = rdcard(&block[80], "BITPIX", T_INT, &val, &rval);
+ if (error != NULL)
+ return error;
+ if (val != 8 && val != 16 && val != 32 && val != 64 && val != -32 &&
+ val != -64)
+ return "Bad BITPIX value in FITS file";
+ fs->bitpix = val;
+ j = fs->bitpix;
+ if (j < 0)
+ j = -j;
+ fs->size = j / 8;
+ i++;
+
+ /* read NAXIS key */
+ error = rdcard(&block[2*80], "NAXIS", T_INT, &val, &rval);
+ if (error != NULL)
+ return error;
+ if (val < 0 || val > 999)
+ return "Bad NAXIS value in FITS file";
+ if (val == 1 || val > 2)
+ return "FITS file is not a two-dimensional image";
+ fs->naxis = val;
+ i++;
+
+ /* Check for an EXTEND/NEXTEND keyword pair. */
+ error = rdcard(&block[3*80], "EXTEND", T_LOG, &val, &rval);
+ if (error == NULL) {
+ fs->extend = val; i++;
+ } else
+ fs->extend = 0;
+ error = rdcard(&block[4*80], "NEXTEND", T_INT, &val, &rval);
+ if (error == NULL) {
+ fs->nextend = val; i++;
+ } else
+ fs->nextend = 0;
+
+
+ /* read NAXISnnn keys.
+ * We allow NAXIS to be > 2 iff the dimensions of the extra axes are 1
+ */
+ for (j = 0; j < fs->naxis; j++) {
+ if (i == NCARDS) {
+ res = fread(block, sizeof(char), BLOCKSIZE, fs->fp);
+ if (res != BLOCKSIZE)
+ return "Error reading FITS file";
+ i = 0;
+ }
+
+ sprintf(name, "NAXIS%d", j + 1);
+ error = rdcard(&block[i*80], name, T_INT, &val, &rval);
+ if (error != NULL)
+ return error;
+ if (val < 0)
+ return "Bad NAXISn value in FITS file";
+ if (j < 2)
+ fs->axes[j] = val;
+ else if (val != 1)
+ return "FITS file is not a two-dimensional image";
+ i++;
+ }
+ fs->naxis = 2;
+
+ /* do remainder */
+ fs->bscale = 1.0;
+ fs->bzero = 0.0;
+ memset(fs->title, '\0', 80);
+ strcpy (fs->title, "No Title");
+ for (; ; ) {
+
+ if (block[i*80] == 'B') {
+ /* Try reading a BSCALE or BZERO keyword from this card. */
+ error = rdcard(&block[i*80], "BSCALE", T_REAL, &val, &rval);
+ if (error == NULL)
+ fs->bscale = rval;
+ error = rdcard(&block[i*80], "BZERO", T_REAL, &val, &rval);
+ if (error == NULL)
+ fs->bzero = rval;
+ }
+
+ if (i == NCARDS) {
+ res = fread(block, sizeof(char), BLOCKSIZE, fs->fp);
+ if (res != BLOCKSIZE)
+ return "Unexpected eof in FITS file";
+ i = 0;
+ }
+
+ if (strncmp(&block[i*80], "OBJECT ", 8) == 0) {
+ char *ip = &block[i*80];
+ int i = 0, j = 0;
+
+ /* Skip ahead to opening quote. */
+ while (*ip != '\'' && i < 80) ip++, i++;
+ ip++, i++;
+ for (j=0; j < 80 && *ip != '\''; j++) {
+ fs->title[j] = *ip;
+ ip++;
+ }
+ fs->title[j] = '\0';
+ }
+
+ if (strncmp(&block[i*80], "END ", 8) == 0)
+ break;
+ i++;
+ }
+ free(block);
+ return NULL;
+}
+
+
+/* write a header record into the 80 byte buffer card.
+ * The keyword name is passed in name. The value type is in dtype; this
+ * can have the following values:
+ * dtype = T_NOVAL
+ * no keyword value is written
+ * dtype = T_LOG
+ * a logical value, either 'T' or 'F' in column 30 is written
+ * dtype = T_INT
+ * an integer is written, right justified in columns 11-30
+ */
+static void
+wrcard (card, name, dtype, kvalue)
+char *card, *name;
+enum datatype dtype; /* type of value */
+int kvalue;
+{
+ int l;
+ memset(card, ' ', 80);
+ l = strlen(name);
+ if (l)
+ memcpy(card, name, l); /* copy name */
+
+ if (dtype == T_NOVAL)
+ return;
+
+ card[8] = '=';
+
+ if (dtype == T_LOG)
+ card[29] = kvalue ? 'T' : 'F';
+ else /* an integer */ {
+ sprintf(&card[10], "%20d", kvalue);
+ card[30] = ' ';
+ }
+
+}
+
+
+/* Read a header record, from the 80 byte buffer card.
+ * the keyword name must match 'name'; and parse its value according to
+ * dtype. This can have the following values:
+ * dtype = T_LOG
+ * value is logical, either 'T' or 'F' in column 30.
+ * dtype = T_INT
+ * value is an integer, right justified in columns 11-30.
+ * dtype = T_REAL
+ * value is a real
+ *
+ * The value is stored in kvalue.
+ * It returns NULL on success, or an error message otherwise.
+ */
+static char *
+rdcard (card, name, dtype, kvalue, rvalue)
+char *card, *name;
+enum datatype dtype; /* type of value */
+long int *kvalue;
+float *rvalue;
+{
+ int i, ptr;
+ char namestr[9];
+ static char error[45];
+
+ memcpy(namestr, card, 8);
+ i = 8;
+ do
+ i--;
+ while (i >= 0 && namestr[i] == ' ');
+ namestr[i+1] = '\0';
+
+ if (strcmp(namestr, name) != 0) {
+ sprintf(error, "Keyword %s not found in FITS file", name);
+ return error;
+ }
+
+ /* get start of value */
+ ptr = 10;
+ while (ptr < 80 && card[ptr] == ' ')
+ ptr++;
+ if (ptr == 80 || card[ptr] == '/')
+ return "FITS file has missing keyword value"; /* no value */
+
+ if (dtype == T_LOG) {
+ if ((card[ptr] != 'T' && card[ptr] != 'F'))
+ return "Keyword has bad logical value in FITS file";
+ *kvalue = (card[ptr] == 'T');
+
+ } else /* an integer or real */ {
+ int j, end;
+ long int ival;
+ float fval;
+ char num[21];
+
+ /*
+ if (ptr > 29)
+ return "Keyword has bad integer value in FITS file";
+ */
+ end = ptr;
+ while (end < 80 && (card[end] != ' ' && card[end] != '/'))
+ end++;
+ memcpy(num, &card[ptr], end - ptr);
+ num[end-ptr] = '\0';
+ if (dtype == T_INT) {
+ j = sscanf(num, "%ld", &ival);
+ if (j != 1)
+ return "Keyword has bad integer value in FITS file";
+ *kvalue = ival;
+ *rvalue = 0.0;
+ } else if (dtype == T_REAL) {
+ j = sscanf(num, "%g", &fval);
+ if (j != 1)
+ return "Keyword has bad real value in FITS file";
+ *kvalue = 0;
+ *rvalue = fval;
+ }
+ }
+
+ return NULL;
+}
+
+
+/* reads nelem values into the buffer.
+ * returns NULL for success or an error message.
+ * Copes with the fact that the last 2880 byte record of the FITS file
+ * may be truncated, and should be padded out with zeros.
+ */
+static char *
+ftgdata (fs, buffer, nelem)
+FITS *fs;
+void *buffer;
+int nelem;
+{
+ int res;
+
+ if (nelem == 0)
+ return NULL;
+
+ res = fread(buffer, fs->size, nelem, fs->fp);
+ /* if failed to read all the data */
+ if (res != nelem) {
+ /* nblock is the number of elements in a record. size is
+ * always a factor of BLOCKSIZE */
+ int loffs, nblock = BLOCKSIZE / fs->size;
+
+ if (!feof(fs->fp))
+ return "I/O error reading FITS file";
+
+ /* The last record might be short; check this.
+ * loffs is the offset of the start of the last record from
+ * the current position.
+ */
+ loffs = ((fs->ndata + nblock - 1) / nblock - 1) * nblock - fs->cpos;
+
+ /* if we didn't read to the end of the penultimate record */
+ if (res < loffs)
+ return "Unexpected EOF reading FITS file";
+
+ /* pad with zeros */
+ memset((char *)buffer + res * fs->size, '\0',
+ (nelem - res) * fs->size);
+ }
+ fs->cpos += res;
+ return ftfixdata(fs, buffer, nelem);
+}
+
+
+/* convert the raw data, as stored in the FITS file, to the format
+ * appropiate for the data representation of the host computer.
+ * Assumes that
+ * short int = 2 byte integer
+ * int = 4 byte integer
+ */
+static char *
+ftfixdata (fs, buffer, nelem)
+FITS *fs;
+void *buffer;
+int nelem;
+{
+ register int i, n = nelem;
+ register uchar *ptr = buffer;
+
+ /* conversions. Although the data may be signed, reverse using unsigned
+ * variables. Convert from big-endian two-byte signed integer to
+ * native form
+ */
+ if (fs->bitpix == 16)
+ for (i = 0; i < n; i++, ptr += 2)
+ *(unsigned short int *)ptr = (((int)*ptr) << 8) | (int)(ptr[1]);
+
+ /* convert from big-endian four-byte signed integer to native form */
+ else if (fs->bitpix == 32)
+ for (i = 0; i < n; i++, ptr += 4)
+ *(unsigned int *)ptr = (((unsigned int)*ptr) << 24) |
+ ((unsigned int)ptr[1] << 16) |
+ ((unsigned int)ptr[2] << 8) |
+ (unsigned int)ptr[3];
+
+ /* convert from IEE 754 single precision to native form */
+ else if (fs->bitpix == -32) {
+ register int j, k, expo;
+ static float *exps = NULL;
+
+ if (exps == NULL) {
+ exps = (float *)calloc(256, sizeof(float));
+ if (exps == NULL)
+ return "Insufficient memory for workspace";
+ exps[150] = 1.;
+ for (i = 151; i < 256; i++)
+ exps[i] = 2. * exps[i-1];
+ for (i = 149; i >= 0; i--)
+ exps[i] = 0.5 * exps[i+1];
+ }
+
+
+ for (i = 0; i < n; i++, ptr += 4) {
+ k = (int)*ptr;
+ j = ((int)ptr[1] << 16) | ((int)ptr[2] << 8) | (int)ptr[3];
+ expo = ((k & 127) << 1) | (j >> 23);
+ if ((expo | j) == 0)
+ *(float *)ptr = 0.;
+ else
+ *(float *)ptr = exps[expo] * (float)(j | 0x800000);
+ if (k & 128)
+ *(float *)ptr = -*(float *)ptr;
+ }
+
+ /* convert from IEE 754 double precision to native form */
+ } else if (fs->bitpix == -64) {
+ register int expo, k, l;
+ register unsigned int j;
+ static double *exps = NULL;
+
+ if (exps == NULL) {
+ exps = (double *)calloc(2048, sizeof(double));
+ if (exps == NULL)
+ return "Insufficient memory for workspace";
+ exps[1075] = 1.;
+ for (i = 1076; i < 2048; i++)
+ exps[i] = 2. * exps[i-1];
+ for (i = 1074; i >= 0; i--)
+ exps[i] = 0.5 * exps[i+1];
+ }
+
+ for (i = 0; i < n; i++, ptr += 8) {
+ k = (int)*ptr;
+ j = ((unsigned int)ptr[1] << 24) | ((unsigned int)ptr[2] << 16) |
+ ((unsigned int)ptr[3] << 8) | (unsigned int)ptr[4];
+ l = ((int)ptr[5] << 16) | ((int)ptr[6] << 8) | (int)ptr[7];
+ expo = ((k & 127) << 4) | (j >> 28);
+ if ((expo | j | l) == 0)
+ *(double *)ptr = 0.;
+ else
+ *(double *)ptr = exps[expo] * (16777216. *
+ (double)((j & 0x0FFFFFFF) | 0x10000000) + (double)l);
+ if (k & 128)
+ *(double *)ptr = -*(double *)ptr;
+ }
+ }
+ return NULL;
+}
+
+
+#undef max
+#define f_max(a,b) ((a) > (b) ? (a) : (b))
+#undef min
+#define f_min(a,b) ((a) < (b) ? (a) : (b))
+
+
+/* Reads a byte image from the FITS file fs. The image contains nelem pixels.
+ * If bitpix = 8, then the image is loaded as stored in the file if not scaled.
+ * Otherwise, it is rescaled so that the minimum value is stored as 0, and
+ * the maximum is stored as 255
+ */
+static char *
+ftgbyte(fs, cbuff, nelem, zsc, zr, z1, z2, nsample)
+FITS *fs;
+uchar *cbuff;
+int nelem;
+int zsc, zr;
+float *z1, *z2;
+int nsample;
+{
+ char * voidbuff;
+ register int i, n = nelem;
+ char *error;
+ int pmin = 0, pmax = 255;
+ int npts, stdline;
+ extern void zscale();
+
+ /* if the data is uchar, then read it directly */
+ if (fs->bitpix == 8 && (fs->bscale == 1.0 && fs->bzero == 0.0)) {
+ *z1 = 0.0;
+ *z2 = 255.0;
+ return ftgdata(fs, cbuff, nelem);
+ }
+
+ /* allocate a buffer to store the image */
+ if (fabs((double)fs->bscale-1.0) > EPSILON ||
+ fabs((double)fs->bzero) > EPSILON)
+ voidbuff = (char * )malloc(nelem * f_max(fs->size,4));
+ else
+ voidbuff = (char * )malloc(nelem * fs->size);
+ if (voidbuff == NULL)
+ return "Insufficient memory for workspace";
+ error = ftgdata(fs, voidbuff, nelem);
+ if (error != NULL) {
+ printf ("ftgbyte: %s\n", error);
+ return error;
+ }
+
+ /* If we've got BSCALE/BZERO values compute the original pixel values
+ * and convert the buffer to floating point before processing it.
+ * The voidbuff was allocated above with this in mind so it should be
+ * large enough that we can fix the pixels in place.
+ */
+
+ npts = fs->axes[0] * fs->axes[1];
+ stdline = (int)((float)fs->axes[1] / sqrt((float)npts/(float)nsample));
+ if (fs->bscale != 1.0 || fs->bzero != 0.0) {
+ register float *buf;
+
+ buf = (float *)voidbuff;
+
+ if (fs->bitpix == 8) {
+ for (i=(nelem-1); i >= 0; i--)
+ buf[i] = (float) voidbuff[i] * fs->bscale + fs->bzero;
+ } else if (fs->bitpix == 16) {
+ register short *old;
+ for (i=(nelem-1); i >= 0; i--) {
+ old = (short *) &voidbuff[i * 2];
+ buf[i] = (float) *old * fs->bscale + fs->bzero;
+ }
+ } else if (fs->bitpix == 32) {
+ register int *old;
+ for (i=(nelem-1); i >= 0; i--) {
+ old = (int *) &voidbuff[i * 4];
+ buf[i] = (float) *old * fs->bscale + fs->bzero;
+ }
+ } else if (fs->bitpix == -32) {
+ register float *old;
+ for (i=(nelem-1); i >= 0; i--) {
+ old = (float *) &voidbuff[i * 4];
+ buf[i] = (float) *old * fs->bscale + fs->bzero;
+ }
+ } else if (fs->bitpix == -64) {
+ register double *old, *dbuf;
+ register float *fpix;
+
+ dbuf = (double *) malloc (nelem * sizeof(double));
+ for (i=(nelem-1); i >= 0; i--) {
+ old = (double *) &voidbuff[i * 8];
+ dbuf[i] = (float) *old * fs->bscale + fs->bzero;
+ }
+ fpix = (float *) voidbuff;
+ for (i=0; i<nelem; i++)
+ buf[i] = fpix[i] = (float) dbuf[i];
+ free ((double *) dbuf);
+ }
+
+ fs->size = 4;
+ fs->bitpix = -32;
+
+ /* compute the optimal zscale values */
+ if (zsc)
+ zscale ((char *)buf, fs->axes[0], fs->axes[1], fs->bitpix,
+ z1, z2, CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((float *)buf, nelem, fs->bitpix, z1, z2);
+
+ } else {
+ /* compute the optimal zscale values */
+ if (zsc)
+ zscale (voidbuff, fs->axes[0], fs->axes[1], fs->bitpix,
+ z1, z2, CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((float *)voidbuff, nelem, fs->bitpix, z1, z2);
+ }
+
+ /* convert short int to uchar */
+ if (fs->bitpix == 16) {
+ register short int *buffer = (short *)voidbuff;
+ register int max, min;
+ register float scale;
+
+ min = (int) *z1;
+ max = (int) *z2;
+ scale = (max == min) ? 0. : 255. / (*z2 -*z1);
+
+ /* rescale and convert */
+ for (i = 0, buffer = (short *)voidbuff; i < n; i++)
+ cbuff[i] = f_max (pmin, f_min (pmax,
+ (int)(scale * (float)((int)buffer[i] - min)) ));
+
+ /* convert long int to uchar */
+ } else if (fs->bitpix == 32) {
+ register int *buffer = (int *)voidbuff;
+ register int max, min;
+ register float scale;
+
+ min = (int) *z1;
+ max = (int) *z2;
+ scale = (max == min) ? 0. : 255. / (*z2 - *z1);
+
+ /* rescale and convert */
+ for (i = 0, buffer = (int *)voidbuff; i < n; i++)
+ cbuff[i] = f_max (pmin, f_min (pmax,
+ (int)(scale * (float)((int)buffer[i] - min)) ));
+
+ /* convert float to uchar */
+ } else if (fs->bitpix == -32) {
+ register float *buffer = (float *)voidbuff;
+ register float max, min, scale;
+
+ min = *z1;
+ max = *z2;
+ scale = (max == min) ? 0. : 255. / (*z2 - *z1);
+
+ /* rescale and convert */
+ for (i = 0, buffer = (float *)voidbuff; i < n; i++)
+ cbuff[i] = f_max (pmin, f_min (pmax,
+ (int)(scale * ((float)buffer[i] - min)) ));
+
+ /* convert double to uchar */
+ } else if (fs->bitpix == -64) {
+ register double *buffer = (double *)voidbuff;
+ register double max, min, scale;
+
+ min = (double) *z1;
+ max = (double) *z2;
+ scale = (max == min) ? 0. : 255. / (*z2 - *z1);
+
+ /* rescale and convert */
+ for (i = 0, buffer = (double *)voidbuff; i < n; i++)
+ cbuff[i] = f_max (pmin, f_min (pmax,
+ (int)(scale * ((double)buffer[i] - min)) ));
+ }
+
+ free( (char *)voidbuff);
+ return NULL;
+}
diff --git a/vendor/x11iraf/ximtool/gifio.c b/vendor/x11iraf/ximtool/gifio.c
new file mode 100644
index 00000000..de81085b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gifio.c
@@ -0,0 +1,1325 @@
+/*
+ * GIFIO.C -- Routines to load and save simple GIF files.
+ *
+ * ival = isGIF (fname)
+ * loadGIF (fname, pixels, pixtype, w,h, r,g,b, ncolors)
+ * writeGIF (fp, pixels, pixtype, w,h, r,g,b, ncolors, gray)
+
+ * LoadGIF(fname, numcols) - loads a GIF file
+ * WriteGIF(fp, pic, w, h, rmap, gmap, bmap, numcols)
+ *
+ * isGIF -- returns nonzero if the named file is a GIF file.
+ * loadGIF -- reads a GIF file and returns the decoded pixel array and gray-
+ * scale 8 bit colormap. The caller is responsible for freeing
+ * the pixels buffer.
+ * writeGIF -- performs the converse operation, writing the given pixel array
+ * and colormap to the output GIF file.
+ *
+ * Based on GIFENCOD by David Rowley <mgardi@watdscu.waterloo.edu>.A
+ * Lempel-Zim compression based on "compress".
+ */
+
+#include <stdio.h>
+#include <math.h>
+
+
+/* a code_int must be able to hold 2**GIFBITS values of type int, and also -1
+ */
+typedef int code_int;
+typedef long int count_int;
+typedef unsigned char byte;
+#ifndef AIXV3
+#ifndef OSF1
+typedef unsigned char uchar;
+#endif
+#endif
+
+#define MAXCOLORS 256
+#define TRUE 1
+#define FALSE 0
+
+#define CM_RED 0
+#define CM_GREEN 1
+#define CM_BLUE 2
+
+#define GIFBITS 12
+
+#define INTERLACE 0x40
+#define LOCALCOLORMAP 0x80
+
+#define BitSet(byte, bit) (((byte) & (bit)) == (bit))
+#define ReadOK(file,buffer,len) (fread(buffer, len, 1, file) != 0)
+#define LM_to_uint(a,b) (((b)<<8)|(a))
+
+static struct {
+ unsigned int Width;
+ unsigned int Height;
+ unsigned int BitPixel;
+ unsigned int ColorResolution;
+ unsigned int Background;
+ unsigned int AspectRatio;
+} GifScreen;
+
+static struct {
+ int transparent;
+ int delayTime;
+ int inputFlag;
+ int disposal;
+} Gif89 = {
+ -1, -1, -1, 0 };
+
+
+
+/* MONO returns total intensity of r,g,b components */
+#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5) /*.33R+ .5G+ .17B*/
+
+
+/* Function prototypes */
+#ifdef __STDC__
+
+#include <stddef.h>
+#include <stdlib.h>
+
+static int colorstobpp (int colors);
+static int GetPixel (int x, int y);
+static void BumpPixel (void);
+static int GIFNextPixel ();
+static void GIFEncode (FILE* fp, int GWidth, int GHeight, int GInterlace,
+ int Background, int BitsPerPixel, int Red[], int Green[], int Blue[]);
+static void Putword (int w, FILE* fp);
+static void compress (int init_bits, FILE* outfile);
+static void output (code_int code);
+static void cl_block (void);
+static void cl_hash (count_int hsize);
+static void writeerr (void);
+static void char_init (void);
+static void char_out (int c);
+static void flush_char (void);
+
+static char *ReadGIF (FILE *fd, int imageNumber, uchar **pix, int *nx, int *ny,
+ uchar *r, uchar *g, uchar *b, int *ncolors);
+static int ReadColorMap (FILE *fd, int number, uchar *r, uchar *g, uchar *b );
+static int DoExtension (FILE *fd, int label );
+static int GetDataBlock (FILE *fd, uchar *buf );
+static int GetCode (FILE *fd, int code_size, int flag );
+static int LWZReadByte (FILE *fd, int flag, int input_code_size );
+static char *ReadImage (FILE *fd, int len, int height,
+ int interlace, int ignore, uchar **image );
+
+#else
+static int colorstobpp(), GIFNextPixel();
+static void BumpPixel (), GIFEncode (), Putword (), compress ();
+static void output (), cl_block (), cl_hash (), writeerr (), char_init ();
+static void char_out (), flush_char ();
+
+static char *ReadGIF (), *ReadImage ();
+static int ReadColorMap (), DoExtension (), GetDataBlock ();
+static int GetCode (), LWZReadByte ();
+#endif
+
+static byte *pixels;
+static int nrows, ncols;
+static char *errstr = NULL;
+
+
+/* ----------------
+ * Public routines.
+ * ----------------*/
+
+
+/* loadGIF - Load a GIF file.
+ */
+
+char *
+loadGIF (fname, pix, nx, ny, r,g,b, ncolors, gray)
+char *fname; /* input filename */
+uchar **pix; /* output pixels */
+int *nx, *ny; /* dimensions */
+uchar *r, *g, *b; /* colormap */
+int *ncolors; /* number of colors */
+int gray; /* read as a grayscale? */
+{
+ register FILE *fd;
+ register int i, imageNumber = 1;
+
+ if ((fd = fopen(fname, "rb")) == NULL)
+ return "Unable to open FITS file";
+
+ for (i=0; i < 256; i++)
+ r[i] = g[i] = b[i] = 0;
+
+ errstr = ReadGIF(fd, imageNumber, pix, nx, ny, r, g, b, ncolors);
+
+ /* If we requested grayscale reset the colormap and pixels. */
+ if (gray)
+ for (i=0; i < 256; i++)
+ r[i] = g[i] = b[i] = MONO(r[i],g[i],b[i]);
+
+ fclose (fd);
+ return (errstr);
+}
+
+
+/* writeGIF -- Write a GIF image.
+ */
+
+int
+writeGIF (fp, image, w, h, rmap, gmap, bmap, numcols, gray)
+FILE *fp; /* output file descriptor */
+byte *image; /* image pixels */
+int w, h; /* image dimensions */
+byte *rmap, *gmap, *bmap; /* colormap */
+int numcols; /* number of colors */
+int gray; /* save as grayscale? */
+{
+ register int i, bpp, npix;
+ int r[MAXCOLORS], g[MAXCOLORS], b[MAXCOLORS];
+
+ /* Change type of the colormap. */
+ if (gray)
+ for (i = 0; i < MAXCOLORS; i++)
+ r[i] = g[i] = b[i] = (int) MONO(rmap[i],gmap[i],bmap[i]);
+ else
+ for (i = 0; i < MAXCOLORS; i++) {
+ r[i] = (int) rmap[i];
+ g[i] = (int) gmap[i];
+ b[i] = (int) bmap[i];
+ }
+ bpp = colorstobpp (numcols);
+
+ /* Load the pixel buffer */
+ npix = w * h;
+ ncols = w;
+ nrows = h;
+ pixels = (byte *) malloc (npix * sizeof(byte));
+ for (i = 0; i < npix; i++)
+ pixels[i] = image[i];
+
+ /* All set, write it out. */
+ GIFEncode (fp, w, h, 0, 0, bpp, r, g, b);
+
+ /* Clean up. */
+ free ((byte *)pixels);
+}
+
+
+/* IsGIF -- Test a file to see if it is a GIF file.
+ */
+int
+isGIF (fname)
+char *fname; /* input filename */
+{
+ register FILE *fp;
+ int value = 0;
+ char tag[5];
+
+ if (fp = fopen (fname, "r")) {
+ fread (tag, sizeof(char), 4, fp);
+ if (strncmp ("GIF8", tag, 4) == 0)
+ value = 1;
+ fclose (fp);
+ }
+ return value;
+}
+
+
+/* getGIFHdr -- Get some set of header information for the GUI.
+ */
+
+char *
+getGIFHdr (fname)
+char *fname;
+{
+ FILE *fp;
+ char *line;
+ uchar buf[16], version[4];
+ int nx, ny, ncolors;
+
+
+ /* Open the image. */
+ fp = fopen (fname, "r");
+ if (!fp)
+ return NULL;
+
+ /* Get the version. */
+ if (!ReadOK(fp, buf, 6) || strncmp(buf, "GIF", 3) != 0)
+ return NULL;
+ strncpy(version, buf + 3, 3);
+ version[3] = '\0';
+
+
+ /* Read the image header. */
+ if (!ReadOK(fp, buf, 7))
+ return NULL;
+ nx = LM_to_uint(buf[0], buf[1]);
+ ny = LM_to_uint(buf[2], buf[3]);
+ ncolors = 2 << (buf[4] & 0x07);
+
+ /* Format the description. */
+ line = (char *) malloc (80);
+ sprintf (line, "%-16.16s 8 %5dx%-5d GIF%s Image (%d colors)",
+ fname, nx, ny, version, ncolors);
+
+ fclose (fp);
+ return (line);
+}
+
+
+
+/* ------------------
+ * Private Procedures
+ * ------------------*/
+
+
+/* COLORSTOBPP -- Convert the numbers of colors we're writing to a
+ * bits-per-pixel value.
+ */
+static int
+colorstobpp (colors)
+int colors;
+{
+ int bpp;
+
+ if (colors <= 2)
+ bpp = 1;
+ else if (colors <= 4)
+ bpp = 2;
+ else if (colors <= 8)
+ bpp = 3;
+ else if (colors <= 16)
+ bpp = 4;
+ else if (colors <= 32)
+ bpp = 5;
+ else if (colors <= 64)
+ bpp = 6;
+ else if (colors <= 128)
+ bpp = 7;
+ else if (colors <= 256)
+ bpp = 8;
+ else
+ perror ("can't happen");
+
+ return bpp;
+}
+
+
+
+/*----------------------
+ * GIF Input Procedures
+ *----------------------*/
+
+
+/* +-------------------------------------------------------------------+
+ * | Copyright 1990, David Koblas. |
+ * | Permission to use, copy, modify, and distribute this software |
+ * | and its documentation for any purpose and without fee is hereby |
+ * | granted, provided that the above copyright notice appear in all |
+ * | copies and that both that copyright notice and this permission |
+ * | notice appear in supporting documentation. This software is |
+ * | provided "as is" without express or implied warranty. |
+ * +-------------------------------------------------------------------+
+ */
+
+
+static char *
+ReadGIF(fd, imageNumber, pix, nx, ny, r, g, b, ncolors)
+FILE *fd;
+int imageNumber;
+uchar **pix;
+int *nx, *ny;
+uchar *r, *g, *b;
+int *ncolors;
+{
+ uchar buf[16];
+ uchar c;
+ int useGlobalColormap;
+ int bitPixel;
+ int imageCount = 0;
+ char version[4];
+
+ if (!ReadOK(fd, buf, 6))
+ return "error reading magic number";
+
+ if (strncmp(buf, "GIF", 3) != 0)
+ return "not a GIF file";
+
+ strncpy(version, buf + 3, 3);
+ version[3] = '\0';
+
+ if ((strcmp(version, "87a") != 0) && (strcmp(version, "89a") != 0))
+ return "bad version number, not '87a' or '89a'";
+
+ if (!ReadOK(fd, buf, 7))
+ return "failed to read screen descriptor";
+
+ *nx = GifScreen.Width = LM_to_uint(buf[0], buf[1]);
+ *ny = GifScreen.Height = LM_to_uint(buf[2], buf[3]);
+ *ncolors = GifScreen.BitPixel = 2 << (buf[4] & 0x07);
+ GifScreen.ColorResolution = (((buf[4] & 0x70) >> 3) + 1);
+ GifScreen.Background = buf[5];
+ GifScreen.AspectRatio = buf[6];
+
+ if (BitSet(buf[4], LOCALCOLORMAP)) { /* Global Colormap */
+ if (ReadColorMap(fd, *ncolors, r, g, b))
+ return "error reading global colormap";
+ }
+
+ if (GifScreen.AspectRatio != 0 && GifScreen.AspectRatio != 49) {
+ float r;
+ r = ( (float) GifScreen.AspectRatio + 15.0 ) / 64.0;
+ }
+
+ for (; ; ) {
+ if (!ReadOK(fd, &c, 1))
+ return "EOF / read error on image data";
+
+ if (c == ';') { /* GIF terminator */
+ if (imageCount < imageNumber)
+ return "requested image number not found";
+ return;
+ }
+
+ if (c == '!') { /* Extension */
+ if (!ReadOK(fd, &c, 1))
+ return "OF / read error on extention function code";
+ DoExtension(fd, c);
+ continue;
+ }
+
+ if (c != ',') /* Not a valid start character */
+ continue;
+
+ ++imageCount;
+
+ if (!ReadOK(fd, buf, 9))
+ return "couldn't read left/top/width/height";
+
+ useGlobalColormap = !BitSet(buf[8], LOCALCOLORMAP);
+
+ bitPixel = 1 << ((buf[8] & 0x07) + 1);
+
+ if (!useGlobalColormap) {
+ if (ReadColorMap(fd, bitPixel, r, g, b))
+ return "error reading local colormap";
+ return (ReadImage(fd, LM_to_uint(buf[4], buf[5]),
+ LM_to_uint(buf[6], buf[7]), BitSet(buf[8], INTERLACE),
+ imageCount != imageNumber, pix ));
+ } else {
+ return (ReadImage(fd, LM_to_uint(buf[4], buf[5]),
+ LM_to_uint(buf[6], buf[7]), BitSet(buf[8], INTERLACE),
+ imageCount != imageNumber, pix ));
+ }
+
+ }
+}
+
+
+static int
+ReadColorMap(fd, number, r, g, b)
+FILE *fd;
+int number;
+uchar *r, *g, *b;
+{
+ int i;
+ uchar rgb[3];
+
+ for (i = 0; i < number; ++i) {
+ if (!ReadOK(fd, rgb, sizeof(rgb)))
+ return TRUE;
+
+ r[i] = rgb[0] ;
+ g[i] = rgb[1] ;
+ b[i] = rgb[2] ;
+ }
+ return FALSE;
+}
+
+
+static int
+DoExtension(fd, label)
+FILE *fd;
+int label;
+{
+ static char buf[256];
+ char *str;
+
+ switch (label) {
+ case 0x01: /* Plain Text Extension */
+ str = "Plain Text Extension";
+ break;
+ case 0xff: /* Application Extension */
+ str = "Application Extension";
+ break;
+ case 0xfe: /* Comment Extension */
+ str = "Comment Extension";
+ while (GetDataBlock(fd, (uchar * ) buf) != 0)
+ ;
+ return FALSE;
+ case 0xf9: /* Graphic Control Extension */
+ str = "Graphic Control Extension";
+ (void) GetDataBlock(fd, (uchar * ) buf);
+ Gif89.disposal = (buf[0] >> 2) & 0x7;
+ Gif89.inputFlag = (buf[0] >> 1) & 0x1;
+ Gif89.delayTime = LM_to_uint(buf[1], buf[2]);
+ if ((buf[0] & 0x1) != 0)
+ Gif89.transparent = buf[3];
+
+ while (GetDataBlock(fd, (uchar * ) buf) != 0)
+ ;
+ return FALSE;
+ default:
+ str = buf;
+ sprintf(buf, "UNKNOWN (0x%02x)", label);
+ break;
+ }
+
+ while (GetDataBlock(fd, (uchar * ) buf) != 0) ;
+
+ return FALSE;
+}
+
+
+static int ZeroDataBlock = FALSE;
+
+static int
+GetDataBlock(fd, buf)
+FILE *fd;
+uchar *buf;
+{
+ uchar count;
+
+ if (!ReadOK(fd, &count, 1))
+ return - 1;
+
+ ZeroDataBlock = count == 0;
+
+ if ((count != 0) && (!ReadOK(fd, buf, count)))
+ return - 1;
+
+ return count;
+}
+
+
+static int
+GetCode(fd, code_size, flag)
+FILE *fd;
+int code_size;
+int flag;
+{
+ static uchar buf[280];
+ static int curbit, lastbit, done, last_byte;
+ int i, j, ret;
+ uchar count;
+
+ if (flag) {
+ curbit = 0;
+ lastbit = 0;
+ done = FALSE;
+ return 0;
+ }
+
+ if ( (curbit + code_size) >= lastbit) {
+ if (done)
+ return - 1;
+ buf[0] = buf[last_byte-2];
+ buf[1] = buf[last_byte-1];
+
+ if ((count = GetDataBlock(fd, &buf[2])) == 0)
+ done = TRUE;
+
+ last_byte = 2 + count;
+ curbit = (curbit - lastbit) + 16;
+ lastbit = (2 + count) * 8 ;
+ }
+
+ ret = 0;
+ for (i = curbit, j = 0; j < code_size; ++i, ++j)
+ ret |= ((buf[ i / 8 ] & (1 << (i % 8))) != 0) << j;
+
+ curbit += code_size;
+
+ return ret;
+}
+
+
+static int
+LWZReadByte(fd, flag, input_code_size)
+FILE *fd;
+int flag;
+int input_code_size;
+{
+ static int fresh = FALSE;
+ int code, incode;
+ static int code_size, set_code_size;
+ static int max_code, max_code_size;
+ static int firstcode, oldcode;
+ static int clear_code, end_code;
+ static int table[2][(1<< GIFBITS)];
+ static int stack[(1<<(GIFBITS))*2], *sp;
+ register int i;
+
+ if (flag) {
+ set_code_size = input_code_size;
+ code_size = set_code_size + 1;
+ clear_code = 1 << set_code_size ;
+ end_code = clear_code + 1;
+ max_code_size = 2 * clear_code;
+ max_code = clear_code + 2;
+
+ GetCode(fd, 0, TRUE);
+
+ fresh = TRUE;
+
+ for (i = 0; i < clear_code; ++i) {
+ table[0][i] = 0;
+ table[1][i] = i;
+ }
+ for (; i < (1 << GIFBITS); ++i)
+ table[0][i] = table[1][0] = 0;
+
+ sp = stack;
+
+ return 0;
+ } else if (fresh) {
+ fresh = FALSE;
+ do {
+ firstcode = oldcode =
+ GetCode(fd, code_size, FALSE);
+ } while (firstcode == clear_code);
+ return firstcode;
+ }
+
+ if (sp > stack)
+ return * --sp;
+
+ while ((code = GetCode(fd, code_size, FALSE)) >= 0) {
+ if (code == clear_code) {
+ for (i = 0; i < clear_code; ++i) {
+ table[0][i] = 0;
+ table[1][i] = i;
+ }
+ for (; i < (1 << GIFBITS); ++i)
+ table[0][i] = table[1][i] = 0;
+ code_size = set_code_size + 1;
+ max_code_size = 2 * clear_code;
+ max_code = clear_code + 2;
+ sp = stack;
+ firstcode = oldcode =
+ GetCode(fd, code_size, FALSE);
+ return firstcode;
+ } else if (code == end_code) {
+ int count;
+ uchar buf[260];
+
+ if (ZeroDataBlock)
+ return - 2;
+
+ while ((count = GetDataBlock(fd, buf)) > 0)
+ ;
+
+ return - 2;
+ }
+
+ incode = code;
+
+ if (code >= max_code) {
+ *sp++ = firstcode;
+ code = oldcode;
+ }
+
+ while (code >= clear_code) {
+ *sp++ = table[1][code];
+ code = table[0][code];
+ }
+
+ *sp++ = firstcode = table[1][code];
+
+ if ((code = max_code) < (1 << GIFBITS)) {
+ table[0][code] = oldcode;
+ table[1][code] = firstcode;
+ ++max_code;
+ if ((max_code >= max_code_size) &&
+ (max_code_size < (1 << GIFBITS))) {
+ max_code_size *= 2;
+ ++code_size;
+ }
+ }
+
+ oldcode = incode;
+
+ if (sp > stack)
+ return * --sp;
+ }
+ return code;
+}
+
+
+static char *
+ReadImage(fd, len, height, interlace, ignore, image)
+FILE *fd;
+int len, height;
+int interlace, ignore;
+uchar **image;
+{
+ uchar c;
+ int v;
+ int xpos = 0, ypos = 0, pass = 0;
+
+ /* Initialize the Compression routines */
+ if (!ReadOK(fd, &c, 1))
+ return "EOF / read error on image data";
+
+ if (LWZReadByte(fd, TRUE, c) < 0)
+ return "error reading image";
+
+ /* If this is an "uninteresting picture" ignore it. */
+ if (ignore) {
+ while (LWZReadByte(fd, FALSE, c) >= 0)
+ ;
+ return;
+ }
+
+ if ((*image = (uchar *)malloc(len * height)) == NULL)
+ return "couldn't alloc space for image";
+
+ while ((v = LWZReadByte(fd, FALSE, c)) >= 0 ) {
+ (*image)[ypos * len + xpos] = v;
+
+ ++xpos;
+ if (xpos == len) {
+ xpos = 0;
+ if (interlace) {
+ switch (pass) {
+ case 0:
+ case 1:
+ ypos += 8;
+ break;
+ case 2:
+ ypos += 4;
+ break;
+ case 3:
+ ypos += 2;
+ break;
+ }
+
+ if (ypos >= height) {
+ ++pass;
+ switch (pass) {
+ case 1:
+ ypos = 4;
+ break;
+ case 2:
+ ypos = 2;
+ break;
+ case 3:
+ ypos = 1;
+ break;
+ default:
+ goto fini;
+ }
+ }
+ } else {
+ ++ypos;
+ }
+ }
+ if (ypos >= height)
+ break;
+ }
+
+fini:
+ return NULL;
+}
+
+
+
+/*-----------------------
+ * GIF Output Procedures
+ *-----------------------*/
+
+/*****************************************************************************
+ *
+ * GIFENCODE.C - GIF Image compression interface
+ *
+ * GIFEncode (FName, GHeight, GWidth, GInterlace, Background,
+ * BitsPerPixel, Red, Green, Blue)
+ *
+ *****************************************************************************/
+
+#define TRUE 1
+#define FALSE 0
+
+static int Width, Height;
+static int curx, cury;
+static long CountDown;
+static int Pass = 0;
+static int Interlace;
+
+
+
+static void
+GIFEncode (fp, GWidth, GHeight, GInterlace, Background,
+BitsPerPixel, Red, Green, Blue)
+
+FILE*fp;
+int GWidth, GHeight;
+int GInterlace;
+int Background;
+int BitsPerPixel;
+int Red[], Green[], Blue[];
+{
+ int B;
+ int RWidth, RHeight;
+ int LeftOfs, TopOfs;
+ int Resolution;
+ int ColorMapSize;
+ int InitCodeSize;
+ int i;
+
+ Interlace = GInterlace;
+
+ ColorMapSize = 1 << BitsPerPixel;
+
+ RWidth = Width = GWidth;
+ RHeight = Height = GHeight;
+ LeftOfs = TopOfs = 0;
+
+ Resolution = BitsPerPixel;
+
+ /* Calculate number of bits we are expecting */
+ CountDown = (long)Width * (long)Height;
+
+ /* Indicate which pass we are on (if interlace) */
+ Pass = 0;
+
+ /* The initial code size */
+ if (BitsPerPixel <= 1)
+ InitCodeSize = 2;
+ else
+ InitCodeSize = BitsPerPixel;
+
+ /* Set up the current x and y position */
+ curx = cury = 0;
+
+ /* Write the Magic header */
+ fwrite ("GIF87a", 1, 6, fp);
+
+ /* Write out the screen width and height */
+ Putword (RWidth, fp);
+ Putword (RHeight, fp);
+
+ /* Indicate that there is a global colour map */
+ B = 0x80; /* Yes, there is a color map */
+
+ /* OR in the resolution */
+ B |= (Resolution - 1) << 5;
+
+ /* OR in the Bits per Pixel */
+ B |= (BitsPerPixel - 1);
+
+ /* Write it out */
+ fputc (B, fp);
+
+ /* Write out the Background colour */
+ fputc (Background, fp);
+
+ /* Byte of 0's (future expansion) */
+ fputc (0, fp);
+
+ /* Write out the Global Colour Map */
+ for (i = 0; i < ColorMapSize; ++i) {
+ fputc (Red[i], fp);
+ fputc (Green[i], fp);
+ fputc (Blue[i], fp);
+ }
+
+ /* Write an Image separator */
+ fputc (',', fp);
+
+ /* Write the Image header */
+ Putword (LeftOfs, fp);
+ Putword (TopOfs, fp);
+ Putword (Width, fp);
+ Putword (Height, fp);
+
+ /* Write out whether or not the image is interlaced */
+ if (Interlace)
+ fputc (0x40, fp);
+ else
+ fputc (0x00, fp);
+
+ /* Write out the initial code size */
+ fputc (InitCodeSize, fp);
+
+ /* Go and actually compress the data */
+ compress (InitCodeSize + 1, fp);
+
+ /* Write out a Zero-length packet (to end the series) */
+ fputc (0, fp);
+
+ /* Write the GIF file terminator */
+ fputc (';', fp);
+}
+
+
+/* Bump the 'curx' and 'cury' to point to the next pixel
+ */
+static void
+BumpPixel()
+{
+ /* Bump the current X position */
+ ++curx;
+
+ /* If we are at the end of a scan line, set curx back to the beginning
+ * If we are interlaced, bump the cury to the appropriate spot,
+ * otherwise, just increment it.
+ */
+ if (curx == Width) {
+ curx = 0;
+
+ if (!Interlace)
+ ++cury;
+ else {
+ switch (Pass) {
+ case 0:
+ cury += 8;
+ if (cury >= Height) {
+ ++Pass;
+ cury = 4;
+ }
+ break;
+ case 1:
+ cury += 8;
+ if (cury >= Height) {
+ ++Pass;
+ cury = 2;
+ }
+ break;
+ case 2:
+ cury += 4;
+ if (cury >= Height) {
+ ++Pass;
+ cury = 1;
+ }
+ break;
+ case 3:
+ cury += 2;
+ break;
+ }
+ }
+ }
+}
+
+
+/* Return the next pixel from the image
+ */
+static int
+GIFNextPixel ()
+{
+ int r;
+
+ if (CountDown == 0)
+ return EOF;
+
+ --CountDown;
+ r = (int) pixels[ cury * ncols + curx ] ;
+ BumpPixel();
+ return r;
+}
+
+
+/* Write out a word to the GIF file
+ */
+static void
+Putword (w, fp)
+int w;
+FILE*fp;
+{
+ fputc (w & 0xff, fp);
+ fputc ((w / 256) & 0xff, fp);
+}
+
+
+/***************************************************************************
+ *
+ * GIFCOMPR.C - GIF Image compression routines
+ *
+ * Lempel-Ziv compression based on 'compress'. GIF modifications by
+ * David Rowley (mgardi@watdcsu.waterloo.edu)
+ *
+ ***************************************************************************/
+
+/*
+ * General DEFINEs
+ */
+
+#define GIFBITS 12
+#define HSIZE 5003 /* 80% occupancy */
+
+#ifdef NO_UCHAR
+typedef char char_type;
+#else /*NO_UCHAR*/
+typedef unsigned char char_type;
+#endif /*NO_UCHAR*/
+
+/*
+ *
+ * GIF Image compression - modified 'compress'
+ *
+ * Based on: compress.c - File compression ala IEEE Computer, June 1984.
+ *
+ * By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)
+ * Jim McKie (decvax!mcvax!jim)
+ * Steve Davies (decvax!vax135!petsd!peora!srd)
+ * Ken Turkowski (decvax!decwrl!turtlevax!ken)
+ * James A. Woods (decvax!ihnp4!ames!jaw)
+ * Joe Orost (decvax!vax135!petsd!joe)
+ *
+ */
+#include <ctype.h>
+
+#define ARGVAL() (*++(*argv) || (--argc && *++argv))
+
+static int n_bits; /* number of bits/code */
+static int maxbits = GIFBITS; /* user settable max # bits/code */
+static code_int maxcode; /* maximum code, given n_bits */
+ /* should NEVER generate this code */
+static code_int maxmaxcode = (code_int) 1 << GIFBITS;
+#ifdef COMPATIBLE /* But wrong! */
+# define MAXCODE(n_bits) ((code_int) 1 << (n_bits) - 1)
+#else /*COMPATIBLE*/
+# define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
+#endif /*COMPATIBLE*/
+
+static count_int htab [HSIZE];
+static unsigned short codetab [HSIZE];
+#define HashTabOf(i) htab[i]
+#define CodeTabOf(i) codetab[i]
+
+/*static*/ code_int hsize = HSIZE; /* for dynamic table sizing */
+
+/* To save much memory, we overlay the table used by compress() with those
+ * used by decompress(). The tab_prefix table is the same size and type
+ * as the codetab. The tab_suffix table needs 2**GIFBITS characters. We
+ * get this from the beginning of htab. The output stack uses the rest
+ * of htab, and contains characters. There is plenty of room for any
+ * possible stack (stack used to be 8000 characters).
+ */
+
+#define tab_prefixof(i) CodeTabOf(i)
+#define tab_suffixof(i) ((char_type*)(htab))[i]
+#define de_stack ((char_type*)&tab_suffixof((code_int)1<<GIFBITS))
+
+static code_int free_ent = 0; /* first unused entry */
+
+/*
+ * block compression parameters -- after all codes are used up,
+ * and compression rate changes, start over.
+ */
+static int clear_flg = 0;
+
+static int offset;
+static long int in_count = 1; /* length of input */
+static long int out_count = 0; /* # of codes output (for debugging) */
+
+/*
+ * compress stdin to stdout
+ *
+ * Algorithm: use open addressing double hashing (no chaining) on the
+ * prefix code / next character combination. We do a variant of Knuth's
+ * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
+ * secondary probe. Here, the modular division first probe is gives way
+ * to a faster exclusive-or manipulation. Also do block compression with
+ * an adaptive reset, whereby the code table is cleared when the compression
+ * ratio decreases, but after the table fills. The variable-length output
+ * codes are re-sized at this point, and a special CLEAR code is generated
+ * for the decompressor. Late addition: construct the table according to
+ * file size for noticeable speed improvement on small files. Please direct
+ * questions about this implementation to ames!jaw.
+ */
+
+static int g_init_bits;
+static FILE *g_outfile;
+
+static int ClearCode;
+static int EOFCode;
+
+static unsigned long cur_accum = 0;
+static int cur_bits = 0;
+static unsigned long masks[] = {
+ 0x0000, 0x0001, 0x0003, 0x0007, 0x000F,
+ 0x001F, 0x003F, 0x007F, 0x00FF,
+ 0x01FF, 0x03FF, 0x07FF, 0x0FFF,
+ 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
+
+static int a_count; /* Number of characters so far in this 'packet' */
+static char accum[ 256 ]; /* Define the storage for the packet accumulator */
+
+static void
+compress (init_bits, outfile)
+int init_bits;
+FILE*outfile;
+{
+ register long fcode;
+ register code_int i /* = 0 */;
+ register int c;
+ register code_int ent;
+ register code_int disp;
+ register code_int hsize_reg;
+ register int hshift;
+
+ /*
+ * Set up the globals: g_init_bits - initial number of bits
+ * g_outfile - pointer to output file
+ */
+ g_init_bits = init_bits;
+ g_outfile = outfile;
+
+ /*
+ * Set up the necessary values
+ */
+ offset = 0;
+ out_count = 0;
+ clear_flg = 0;
+ cur_accum = 0;
+ cur_bits = 0;
+ in_count = 1;
+ maxbits = GIFBITS;
+ maxcode = MAXCODE(n_bits = g_init_bits);
+
+ ClearCode = (1 << (init_bits - 1));
+ EOFCode = ClearCode + 1;
+ free_ent = ClearCode + 2;
+
+ char_init();
+ for (i=0; i<HSIZE; i++) {
+ htab[i] = 0;
+ codetab[i] = 0;
+ }
+
+ ent = GIFNextPixel ();
+
+ hshift = 0;
+ for (fcode = (long) hsize; fcode < 65536L; fcode *= 2L)
+ ++hshift;
+ hshift = 8 - hshift; /* set hash code range bound */
+
+ hsize_reg = hsize;
+ cl_hash ((count_int) hsize_reg); /* clear hash table */
+
+ output ((code_int)ClearCode);
+
+ while ((c = GIFNextPixel ()) != EOF) {
+
+ ++in_count;
+
+ fcode = (long) (((long) c << maxbits) + ent);
+ i = (((code_int)c << hshift) ^ ent); /* xor hashing */
+
+ if (HashTabOf (i) == fcode) {
+ ent = CodeTabOf (i);
+ continue;
+ } else if ((long)HashTabOf (i) < 0) /* empty slot */
+ goto nomatch;
+ disp = hsize_reg - i; /* secondary hash (after G. Knott) */
+ if (i == 0)
+ disp = 1;
+probe:
+ if ((i -= disp) < 0)
+ i += hsize_reg;
+
+ if (HashTabOf (i) == fcode) {
+ ent = CodeTabOf (i);
+ continue;
+ }
+ if ((long)HashTabOf (i) > 0)
+ goto probe;
+nomatch:
+ output ((code_int) ent);
+ ++out_count;
+ ent = c;
+ if (free_ent < maxmaxcode) { /* } */
+ CodeTabOf (i) = free_ent++; /* code -> hashtable */
+ HashTabOf (i) = fcode;
+ } else
+ cl_block();
+ }
+
+ /*
+ * Put out the final code.
+ */
+ output ((code_int)ent);
+ ++out_count;
+ output ((code_int) EOFCode);
+}
+
+/*****************************************************************
+ * TAG (output)
+ *
+ * Output the given code.
+ * Inputs:
+ * code: A n_bits-bit integer. If == -1, then EOF. This assumes
+ * that n_bits =< (long)wordsize - 1.
+ * Outputs:
+ * Outputs code to the file.
+ * Assumptions:
+ * Chars are 8 bits long.
+ * Algorithm:
+ * Maintain a GIFBITS character long buffer (so that 8 codes will
+ * fit in it exactly). Use the VAX insv instruction to insert each
+ * code in turn. When the buffer fills up empty it and start over.
+ */
+
+
+static void
+output (code)
+code_int code;
+{
+ cur_accum &= masks[ cur_bits ];
+
+ if (cur_bits > 0)
+ cur_accum |= ((long)code << cur_bits);
+ else
+ cur_accum = code;
+
+ cur_bits += n_bits;
+
+ while (cur_bits >= 8) {
+ char_out ((unsigned int)(cur_accum & 0xff));
+ cur_accum >>= 8;
+ cur_bits -= 8;
+ }
+
+ /*
+ * If the next entry is going to be too big for the code size,
+ * then increase it, if possible.
+ */
+ if (free_ent > maxcode || clear_flg) {
+
+ if (clear_flg) {
+ maxcode = MAXCODE (n_bits = g_init_bits);
+ clear_flg = 0;
+ } else {
+ ++n_bits;
+ if (n_bits == maxbits)
+ maxcode = maxmaxcode;
+ else
+ maxcode = MAXCODE(n_bits);
+ }
+ }
+
+ if (code == EOFCode) {
+ /* At EOF, write the rest of the buffer. */
+ while (cur_bits > 0) {
+ char_out ((unsigned int)(cur_accum & 0xff));
+ cur_accum >>= 8;
+ cur_bits -= 8;
+ }
+ flush_char();
+ fflush (g_outfile);
+ if (ferror (g_outfile))
+ writeerr();
+ }
+}
+
+
+/*
+ * Clear out the hash table
+ */
+static void
+cl_block () /* table clear for block compress */
+{
+
+ cl_hash ((count_int) hsize);
+ free_ent = ClearCode + 2;
+ clear_flg = 1;
+
+ output ((code_int)ClearCode);
+}
+
+static void
+cl_hash(hsize) /* reset code table */
+register count_int hsize;
+{
+
+ register count_int *htab_p = htab + hsize;
+
+ register long i;
+ register long m1 = -1;
+
+ i = hsize - 16;
+ do { /* might use Sys V memset(3) here */
+ *(htab_p - 16) = m1;
+ *(htab_p - 15) = m1;
+ *(htab_p - 14) = m1;
+ *(htab_p - 13) = m1;
+ *(htab_p - 12) = m1;
+ *(htab_p - 11) = m1;
+ *(htab_p - 10) = m1;
+ *(htab_p - 9) = m1;
+ *(htab_p - 8) = m1;
+ *(htab_p - 7) = m1;
+ *(htab_p - 6) = m1;
+ *(htab_p - 5) = m1;
+ *(htab_p - 4) = m1;
+ *(htab_p - 3) = m1;
+ *(htab_p - 2) = m1;
+ *(htab_p - 1) = m1;
+ htab_p -= 16;
+ } while ((i -= 16) >= 0);
+
+ for (i += 16; i > 0; --i)
+ *--htab_p = m1;
+}
+
+static void
+writeerr()
+{
+ perror ("error writing output file");
+}
+
+
+/******************************************************************************
+ *
+ * GIF Specific routines
+ *
+ ******************************************************************************/
+
+
+/* Set up the 'byte output' routine
+ */
+static void
+char_init()
+{
+ register int i;
+
+ a_count = 0;
+ for (i=0; i<256; i++)
+ accum[i] = 0;
+}
+
+
+/*
+ * Add a character to the end of the current packet, and if it is 254
+ * characters, flush the packet to disk.
+ */
+static void
+char_out (c)
+int c;
+{
+ accum[ a_count++ ] = c;
+ if (a_count >= 254)
+ flush_char();
+}
+
+/*
+ * Flush the packet to disk, and reset the accumulator
+ */
+static void
+flush_char()
+{
+ if (a_count > 0) {
+ fputc (a_count, g_outfile);
+ fwrite (accum, 1, a_count, g_outfile);
+ a_count = 0;
+ }
+}
diff --git a/vendor/x11iraf/ximtool/gui.bak/blink.obj b/vendor/x11iraf/ximtool/gui.bak/blink.obj
new file mode 100644
index 00000000..dfae6861
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/blink.obj
@@ -0,0 +1,46 @@
+
+set Objects(blink_panel) { \
+ toplevel TopLevelShell blink_panel\
+ blink_panel Layout bpLayout\
+\
+ bpLayout Frame brMenuFrame\
+ brMenuFrame Layout brMenuBar\
+ brMenuBar Command brClose\
+\
+ bpLayout Frame brFrame\
+ brFrame Layout brLayout\
+\
+ brLayout Group brFramesG\
+ brFramesG Layout brFrames\
+ brFrames MenuButton brFrame1\
+ brFrames MenuButton brFrame2\
+ brFrames MenuButton brFrame3\
+ brFrames MenuButton brFrame4\
+ brFrames MenuButton brFrame5\
+ brFrames MenuButton brFrame6\
+ brFrames MenuButton brFrame7\
+ brFrames MenuButton brFrame8\
+ brFrames MenuButton brFrame9\
+ brFrames MenuButton brFrame10\
+ brFrames MenuButton brFrame11\
+ brFrames MenuButton brFrame12\
+ brFrames MenuButton brFrame13\
+ brFrames MenuButton brFrame14\
+ brFrames MenuButton brFrame15\
+ brFrames MenuButton brFrame16\
+\
+ brLayout Group brCmdG\
+ brCmdG Layout brCmd\
+ brCmd Command brReset\
+ brCmd Label brRateLabel\
+ brCmd Frame brBRframe\
+ brBRframe Layout brBRlayout\
+ brBRlayout Arrow brBRdecrease\
+ brBRlayout TextBox brBRtext\
+ brBRlayout Arrow brBRincrease\
+ brCmd Command brRegButton\
+ brCmd Command brMatchButton\
+ brCmd TextToggle brBlinkButton\
+ brCmd TextToggle brAregButton\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/blink.res b/vendor/x11iraf/ximtool/gui.bak/blink.res
new file mode 100644
index 00000000..311bad2a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/blink.res
@@ -0,0 +1,167 @@
+
+set Resources(blink_panel) { \
+
+ *blink_panel.geometry: 425x200
+ *blink_panel.title: Blink/Register Frames
+
+ *brMenuBar*Command.internalHeight: 4
+ *brMenuBar*Command.internalWidth: 12
+ *brMenuBar*Command.height: 27
+ *brMenuBar*borderWidth: 0
+
+ *brMenuBar*Label.font: 7x13bold
+ *brLayout*Command.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brRegButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brReset.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brMatchButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brBlinkButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brAregButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+
+ *brMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> brClose 5 } \
+ 5 < -5 > \
+ }
+ *brClose.label: Dismiss
+
+ *brMenuFrame.frameType: raised
+ *brMenuFrame.frameWidth: 2
+ *bpLayout.layout: vertical { \
+ brMenuFrame < +inf -inf * > \
+ 1 < -1 > \
+ brFrame < +inf -inf * +inf -inf > \
+ }
+
+ *brFrame.frameType: chiseled
+ *brFrame.frameWidth: 2
+ *brFrame.outerOffset: 4
+ *brFrame.innerOffset: 4
+
+ *brLayout.borderWidth: 0
+ *brLayout.layout: vertical { \
+ 3 < -3 > \
+ horizontal { -3 brFramesG < +inf -inf * > -3 } \
+ -5 \
+ horizontal { -3 brCmdG < +inf -inf * +inf -inf > -3 } \
+ -5 \
+ }
+
+ *brCmdG.label:
+ *brCmdG.outerOffset: 7
+ *brCmdG.innerOffset: 7
+ *brCmdG*borderWidth: 0
+ *brCmd.layout: horizontal { \
+ 2 \
+ vertical { \
+ 2 \
+ horizontal { \
+ 2 \
+ brRateLabel \
+ 2 \
+ brBRframe < +inf -inf * >\
+ 4 \
+ brReset \
+ 2 \
+ } \
+ 8 < -8 > \
+ horizontal { \
+ 4 \
+ brMatchButton < +inf -inf * > \
+ 5 < -5 > \
+ brRegButton < +inf -inf * > \
+ 2 \
+ } \
+ 1 < +inf > \
+ } \
+ 10 \
+ vertical { \
+ 2 \
+ brBlinkButton < +inf * > \
+ 10 < -10 > \
+ brAregButton < +inf * > \
+ 1 < +inf > \
+ } \
+ 2 \
+ }
+
+ *brFramesG.label: Frames List
+ *brFramesG.outerOffset: 7
+ *brFramesG.innerOffset: 7
+ *brFramesG*SimpleMenu.borderColor: black
+ *brFramesG*SimpleMenu.borderWidth: 1
+ *brFramesG*SimpleMenu.foreground: White
+ *brFramesG*SimpleMenu.background: SteelBlue
+
+ *brFrames.borderWidth: 0
+ *brFrames.layout: horizontal { \
+ 5 < +inf > \
+ brFrame1 < +inf * > 1 \
+ brFrame2 < +inf * > 1 \
+ brFrame3 < +inf * > 1 \
+ brFrame4 < +inf * > 1 \
+ brFrame5 < +inf * > 1 \
+ brFrame6 < +inf * > 1 \
+ brFrame7 < +inf * > 1 \
+ brFrame8 < +inf * > 1 \
+ brFrame9 < +inf * > 1 \
+ brFrame10 < +inf * > 1 \
+ brFrame11 < +inf * > 1 \
+ brFrame12 < +inf * > 1 \
+ brFrame13 < +inf * > 1 \
+ brFrame14 < +inf * > 1 \
+ brFrame15 < +inf * > 1 \
+ brFrame16 < +inf * > \
+ 5 < +inf > \
+ }
+
+ *brBRlayout.layout: horizontal { \
+ brBRdecrease \
+ brBRtext < +inf -100% * > \
+ brBRincrease \
+ }
+
+ *blink_panel*TextToggle.location: 0 0 110 23
+ *blink_panel*TextToggle.frameWidth: 1
+ *blink_panel*TextToggle.highlightColor: yellow
+ *blink_panel*TextToggle.offIcon: square0s
+ *blink_panel*TextToggle.onIcon: square1s
+ *blink_panel*TextToggle.outerOffset: 0
+ *blink_panel*TextToggle.innerOffset: 2
+ *blink_panel*Command.height: 23
+ *blink_panel*Arrow.width: 16
+ *blink_panel*Arrow.height: 20
+
+
+ *brFramesLabel.label: Frames:
+ *brFrame1.menuName: frame1Menu
+ *brFrame2.menuName: frame2Menu
+ *brFrame3.menuName: frame3Menu
+ *brFrame4.menuName: frame4Menu
+ *brFrame5.menuName: frame5Menu
+ *brFrame6.menuName: frame6Menu
+ *brFrame7.menuName: frame7Menu
+ *brFrame8.menuName: frame8Menu
+ *brFrame9.menuName: frame9Menu
+ *brFrame10.menuName: frame10Menu
+ *brFrame11.menuName: frame11Menu
+ *brFrame12.menuName: frame12Menu
+ *brFrame13.menuName: frame13Menu
+ *brFrame14.menuName: frame14Menu
+ *brFrame15.menuName: frame15Menu
+ *brFrame16.menuName: frame16Menu
+ *brReset.label: Reset
+
+ *brRateLabel.label: Rate:
+ *brBRframe.frameType: sunken
+ *brBRframe.frameWidth: 1
+ *brBRtext.width: 40
+ *brBRtext.height: 23
+ *brBRdecrease.direction: left
+ *brBRincrease.direction: right
+ *brRegButton.label: Register
+ *brMatchButton.label: Match LUTs
+ *brBlinkButton.label: Blink
+ *brAregButton.label: Auto-Register
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/boot.tcl b/vendor/x11iraf/ximtool/gui.bak/boot.tcl
new file mode 100644
index 00000000..936273a5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/boot.tcl
@@ -0,0 +1,74 @@
+
+
+################################################################################
+# GUI Bootstrap Procedures
+################################################################################
+
+# Initialize the widget tree.
+proc InitWidgetTree args \
+{
+ global Objects Resources Version
+
+
+ # Add a new objects description for each of the panels found so we can
+ # create them by name later rather that with the defaults.
+
+ set guiResources ""
+ foreach obj [array names Objects] {
+ set guiResources \
+ [ format "%s\n\n*%s_objects:%s\n" \
+ $guiResources $obj $Objects($obj) ]
+ }
+
+ # Now append all the Resource strings, changing any version strings as
+ # needed.
+
+ foreach res [array names Resources] {
+ regsub -all XIMTOOL_VERSION $Resources($res) $Version ver
+ set guiResources [ format "%s\n\n%s\n\n" $guiResources $ver ]
+ }
+
+ # Define all of the GUI objects and resources.
+ appInitialize ximtool XImtool $guiResources
+}
+
+
+# Realize a window module, i.e. create it's objects.
+proc Realize { module args } \
+{
+ global Objects
+
+ # Create any widgets for the module. We only do this once and set a
+ # flag to indicate the objects have been created so we don't do it on
+ # subsequent realizations.
+ if { [info exists Objects($module)] } {
+ createObjects [format "%s_objects" $module]
+ reset-server
+ }
+}
+
+
+# Bootstrap up the GUI.
+InitWidgetTree
+Realize ximtool
+Realize parameters
+Realize panelShell
+Realize tcl_panel
+Realize pixel_table
+Realize hdr_panel
+Realize blink_panel
+Realize help_panel
+Realize xpan_panel
+Realize xmag_panel
+Realize warning
+
+reset-server
+
+# Set the gterm widget focus.
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+
+# Crank it up.
+activate
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/compass.tcl b/vendor/x11iraf/ximtool/gui.bak/compass.tcl
new file mode 100644
index 00000000..2822e1d8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/compass.tcl
@@ -0,0 +1,205 @@
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set n_x [lindex $Compass($id) 1]
+ set n_y [lindex $Compass($id) 2]
+ set e_x [lindex $Compass($id) 3]
+ set e_y [lindex $Compass($id) 4]
+ set trans [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set n_x 0.0 ; set n_y 1.0
+ set e_x 1.0 ; set e_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set trans 0
+ set Compass($id) { 0.0 0.0 1.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($n_y,$n_x)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the graphics.
+ send imagewin setColorIndex $compassColor
+ send imagewin setFillType solid
+
+ # Now draw the parts of the compass.
+ drawCompassAxes $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale \
+ $pcx $pcy
+ drawCompassLabels $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale\
+ $pcx $pcy $xlab $ylab
+ drawCompassPtr $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale \
+ $pcx $pcy $angle
+
+ # Reset the logical resolution of the window.
+ send imagewin setLogRes $sv_xl $sv_yl
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+proc drawCompassAxes {n_x n_y e_x e_y trans xflip yflip scale pcx pcy} \
+{
+ set cpoints { }
+ lappend cpoints [list $e_x $e_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $n_x $n_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($trans > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($trans > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the compass axes.
+ send imagewin drawPolyline $pts
+}
+
+proc drawCompassLabels {n_x n_y e_x e_y trans xflip yflip scale pcx pcy xlab ylab} \
+{
+
+ set pts { }
+ set lpoints { }
+
+ set xo [expr (0.2 * [expr "($xflip > 0) ? -1 : 1"])]
+ set yo [expr (0.2 * [expr "($yflip > 0) ? 1 : -1"])]
+
+ lappend lpoints [list [expr "$e_x+$xo"] $e_y ]
+ lappend lpoints [list $n_x [expr "$n_y+$yo"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($trans > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($trans > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 0] [lindex $pts 1] $xlab
+ send imagewin drawAlphaText [lindex $pts 2] [lindex $pts 3] $ylab
+}
+
+proc drawCompassPtr {n_x n_y e_x e_y trans xflip yflip scale pcx pcy angle} \
+{
+
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+
+ # Initialize the drawing points.
+ set pts {}
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($trans > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($trans > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($n_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($n_y - ($sx * $sino + $sy * $coso))]
+
+ # Get the scaled position.
+ set sx [expr ($scale * $rx)]
+ set sy [expr ($scale * $ry)]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the compass pointer.
+ send imagewin drawPolygon $pts
+}
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/compass.tcl.bak b/vendor/x11iraf/ximtool/gui.bak/compass.tcl.bak
new file mode 100644
index 00000000..761b99c3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/compass.tcl.bak
@@ -0,0 +1,195 @@
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set north_x [lindex $Compass($id) 1]
+ set north_y [lindex $Compass($id) 2]
+ set east_x [lindex $Compass($id) 3]
+ set east_y [lindex $Compass($id) 4]
+ set transpose [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set north_x 0.0 ; set north_y 1.0
+ set east_x 1.0 ; set east_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set transpose 0
+ set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($north_y,$north_x)"]
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the drawing points.
+ set pts {}
+
+ set cpoints { }
+ lappend cpoints [list $east_x $east_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $north_x $north_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ set rpoints { }
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($transpose > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($transpose > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]
+
+ lappend rpoints [list $rx $ry]
+ }
+ foreach p $rpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+ set lpoints { }
+ lappend lpoints [list [expr "$east_x-0.2"] $east_y ]
+ lappend lpoints [list $north_x [expr "$north_y+0.2"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ # Draw the compass axes.
+ set compassPts [lrange $pts 0 5]
+ send imagewin setColorIndex $compassColor
+ send imagewin drawPolyline $compassPts
+
+ # Draw the compass pointer.
+ set head [lrange $pts 6 13]
+ send imagewin setFillType solid
+ send imagewin drawPolygon $head
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab
+ send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab
+
+ send imagewin setLogRes $sv_xl $sv_yl
+
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/display.res b/vendor/x11iraf/ximtool/gui.bak/display.res
new file mode 100644
index 00000000..2f3f47e2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/display.res
@@ -0,0 +1,451 @@
+
+set Resources(display_panel) { \
+
+ !================================
+ ! Main Display Control Panel.
+ !================================
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+
+ *blinkFrame1.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame2.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame3.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame4.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *matchButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *registerButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *autoregButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -5 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ -5 \
+ controlBox < +inf * > \
+ -5 \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 7
+
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ vertical { \
+ 3 < -3 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 3 < -3 > \
+ } \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 1
+ *frameData.width: 150
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 7
+ *frameSelect.innerOffset: 2
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame
+
+ *frameBox.layout: vertical { \
+ 3 \
+ horizontal { -2 frlistBox < * +inff -inff > } \
+ 3 < +inf -3 > \
+ horizontal { prevFrame < +inf -inf * > 4 nextFrame < +inf -inf * > } \
+ }
+ *framePort.allowVert: True
+ *framePort.allowHoriz: False
+ *framePort.useRight: True
+ *framePort.height: 80
+
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*frame1.label: 1\ \
+ *frameBox*frame2.label: 2\ \
+ *frameBox*frame3.label: 3\ \
+ *frameBox*frame4.label: 4\ \
+
+ *frameBox*frame5.label: 5\ \
+ *frameBox*frame6.label: 6\ \
+ *frameBox*frame7.label: 7\ \
+ *frameBox*frame8.label: 8\ \
+ *frameBox*frame9.label: 9\ \
+ *frameBox*frame10.label: 10\
+ *frameBox*frame11.label: 11\
+ *frameBox*frame12.label: 12\
+ *frameBox*frame13.label: 13\
+ *frameBox*frame14.label: 14\
+ *frameBox*frame15.label: 15\
+ *frameBox*frame16.label: 16\
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xxx
+ *frameBox*nextFrame.label: xxx
+
+ *frameList*location: 0 0 50 20
+ *frameList.layout: vertical { \
+ frame1 < +inf * >\
+ frame2 < +inf * >\
+ frame3 < +inf * >\
+ frame4 < +inf * >\
+ frame5 < +inf * >\
+ frame6 < +inf * >\
+ frame7 < +inf * >\
+ frame8 < +inf * >\
+ frame9 < +inf * >\
+ frame10 < +inf * >\
+ frame11 < +inf * >\
+ frame12 < +inf * >\
+ frame13 < +inf * >\
+ frame14 < +inf * >\
+ frame15 < +inf * >\
+ frame16 < +inf * >\
+ }
+
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 7
+ *zoomBox.shrinkToFit: True
+ *zoomBox*TextButton.frameWidth: 1
+ *zoomBox*TextButton.outerOffset: 0
+
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { toggleZoom < +inf * +inf > 1 } \
+ 1 \
+ vertical { 1 < +inf > z5 1 < +inf > z3 0 < +inf > } \
+ 1 \
+ vertical { zoomIn < +inf * +inf > 1 } \
+ } \
+ 1 \
+ horizontal { \
+ 1 < +inf > \
+ d8 1 d4 1 d2 1 x1 1 z2 1 z4 1 z8 \
+ 1 < +inf > \
+ } \
+ 1 \
+ horizontal { \
+ vertical { 1 zoomOut < +inf * +inf > } \
+ 1 \
+ vertical { 0 < +inf > d3 1 < +inf > d5 1 < +inf > } \
+ 1 \
+ vertical { 1 centerFrame < +inf * +inf > } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 2
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 2
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 2
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 2
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.layout: horizontal { \
+ 2 < -2 > \
+ aspect < +inf * > 2 \
+ flipX < +inf * > 2 \
+ flipY < +inf * > 2 \
+ flipXY < +inf * > 2 \
+ clearFrame < +inf * > 2 \
+ fitFrame < +inf * > \
+ 2 < -2 > \
+ }
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 7
+
+ *enhance*Viewport.allowVert: True
+ *enhance*Viewport.allowHoriz: False
+ *enhance*Viewport.useRight: False
+ *enhance*Viewport.resizeable: True
+ *enhance*Scrollbar.width: 17
+ *enhance*Scrollbar.minimumThumb: 10
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 2 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { -1 contrastLabel 3 < -3 > brightnessLabel -1 } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*frameType: sunken
+ *enhance*frameWidth: 1
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+
+ *colorlist.width: 100
+ *colorlist.height: 98
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 17
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 17
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+
+ ! ---------------------
+ ! BLINK/REGISTER
+ ! ---------------------
+ *blinkBox.label: Blink/Register
+ *blinkBox.location: 0 0 235 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 7
+ *blinkBox*TextToggle.frameWidth: 1
+
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkPanel < -50% * > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ vertical { \
+ 2 matchButton < +inf * > 4 < -4 > registerButton < +inf * > \
+ } \
+ 5 < -5 > \
+ vertical { \
+ 1 blinkButton < +inf * > 4 < -4 > autoregButton < +inf * > \
+ } \
+ } \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *blink.TextToggle.location: 0 0 102 23
+ *blink.TextToggle.frameWidth: 1
+ *blink*TextToggle.highlightColor: yellow
+ *blink*TextToggle.offIcon: square0s
+ *blink*TextToggle.onIcon: square1s
+ *blink*TextToggle.outerOffset: 1
+ *blink*Command.height: 27
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+
+ *blinkFramesLabel.label: Frames List:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkPanel.label: x
+ *blinkPanel.width: 20
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 1
+ *BRtext.width: 40
+ *BRtext.height: 23
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+ *autoregButton.label: Auto-Register
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 7
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 20
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox.TextToggle.highlightThickness: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *magnifierButton.label: Magnifier
+ *warningsButton.label: Warnings
+ *peakupButton.label: Centroid Peaks
+ *peakupButton.on: True
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 7
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/func.tcl b/vendor/x11iraf/ximtool/gui.bak/func.tcl
new file mode 100644
index 00000000..3f521a0f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/func.tcl
@@ -0,0 +1,123 @@
+
+################################################################################
+# CURSOR CENTEROID AND AUTO-REGISTER FUNCTIONS.
+################################################################################
+
+# Set the centroiding box size.
+set ctid 0
+set cid 0
+
+proc cbxDestroy args \
+{
+ global centerBoxSize cid ctid
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+}
+
+proc setCtrBoxSize { x y delta args } \
+{
+ global centerBoxSize cid ctid
+ global cpXscale cpYscale
+
+ incr centerBoxSize $delta
+ if {$centerBoxSize <= 1} { set centerBoxSize 1 }
+
+ # Kill off any old markers before drawing the new one.
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr cid
+ send imagewin createMarker cbm$cid \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $x \
+ y $y \
+ width [expr $cpXscale * $centerBoxSize] \
+ height [expr $cpXscale * $centerBoxSize] \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ctid [ postTimedCallback cbxDestroy 500]
+}
+
+
+# Compute a centroid offset for the current position to peak-up on the
+# feature.
+
+proc centroid { x y type args } \
+{
+ global centerBoxSize
+ global cpXscale cpYscale
+
+ # Convert to image coords.
+ set sz [expr "int ($centerBoxSize * $cpXscale)"]
+
+ # Get the centroid position.
+ if {$type != "min"} {
+ if {[send peakupButton get on]} {
+ set center [ send client centroid $x $y $sz ]
+ } else {
+ set center [ send client centroid $x $y $sz max ]
+ }
+ } else {
+ set center [ send client centroid $x $y $sz min ]
+ }
+
+ # Now reposition the cursor.
+ set xoff [lindex $center 0 ]
+ set yoff [lindex $center 1 ]
+ move_cursor $xoff $yoff
+}
+
+
+# Set the auto-register center offset position
+proc offset { x y args } \
+{
+ global frame blinkFrames auto_reg
+ global frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # No-op of auto-register isn't on.
+ if { $auto_reg == 0 } {
+ Wexec client "Auto-Register is not enabled!"
+ return
+ }
+
+ # If we're not in the blink frames list ignore the request.
+ if { [string first $frame $blinkFrames] == -1 } {
+ Wexec client "Frame not in current\nregister list."
+ return
+ }
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set xoff [expr "int ($rx) - $frameCenterX($frame)" ]
+ set yoff [expr "int ($ry) - $frameCenterY($frame)" ]
+
+ set frameOffsetX($frame) $xoff
+ set frameOffsetY($frame) $yoff
+
+ # Adjust the display.
+ send client setOffset $xoff $yoff
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/global.res b/vendor/x11iraf/ximtool/gui.bak/global.res
new file mode 100644
index 00000000..59bb1e67
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/global.res
@@ -0,0 +1,103 @@
+
+set Resources(global) { \
+
+ !---------------------------------------------------------
+ ! Define some global widget resources for the main panels.
+ !---------------------------------------------------------
+ *shadowWidth: 1
+ *background: gray77
+! *foreground: black
+ *Arrow.width: 16
+ *Arrow.height: 25
+ *Text*height: 21
+ *Command.height: 21
+ *Command.highlightThickness: 1
+ *MenuButton.height: 21
+ *MenuButton.highlightThickness: 1
+ *Label.borderWidth: 0
+ *Label.shadowWidth: 0
+ *TextButton.shadowWidth: 0
+ *TextButton.highlightThickness: 1
+ *TextToggle*borderWidth: 0
+ *TextToggle.highlightThickness: 0
+ *Toggle.highlightThickness: 1
+ *Group.shrinkToFit: True
+
+ *Arrow.foreground: gray
+ *Arrow.background: gray68
+ *Text*background: gray68
+ *AsciiText*background: gray68
+ *TextBox.background: gray68
+ *MultiList*background: gray68
+ *Slider2d.thumbColor: gray77
+
+
+ !-------------------------------------------------------------
+ ! Define resources to take advantage of the 3D scrollbar look.
+ !-------------------------------------------------------------
+ *Scrollbar*background: gray77
+ *Scrollbar*shadowWidth: 1
+ *Scrollbar*width: 15
+ *Scrollbar*height: 15
+ *Scrollbar*cursorName: top_left_arrow
+ *Scrollbar*pushThumb: true
+
+ *HTML.Scrollbar.shadowWidth: 1
+ *HTML*Scrollbar*width: 15
+ *HTML*Scrollbar*height: 15
+
+
+ !----------------------------------------
+ ! Menu resources giving a shadow effect.
+ !----------------------------------------
+ *SmeBSB.leftMargin: 10
+ *SmeBSB.rightMargin: 5
+ *SmeBSB.shadowWidth: 2
+ *SmeBSB.foreground: gray90
+ *SmeBSB.background: SteelBlue
+ *SimpleMenu.background: gray77
+ *SimpleMenu.borderWidth: 2
+ *SimpleMenu.borderColor: black
+ *SimpleMenu.line1.foreground: gray61
+ *SimpleMenu.line2.foreground: gray91
+ *SimpleMenu.line3.foreground: gray61
+ *SimpleMenu.line4.foreground: gray91
+ *SimpleMenu.line5.foreground: gray61
+ *SimpleMenu.line6.foreground: gray91
+ *SimpleMenu.line7.foreground: gray61
+ *SimpleMenu.line8.foreground: gray91
+ *SimpleMenu.line9.foreground: gray61
+ *SimpleMenu.line10.foreground: gray91
+ *SimpleMenu.line11.foreground: gray61
+ *SimpleMenu.line12.foreground: gray91
+ *SimpleMenu.line13.foreground: gray61
+ *SimpleMenu.line14.foreground: gray91
+ *SimpleMenu.line15.foreground: gray61
+ *SimpleMenu.line16.foreground: gray91
+ *SimpleMenu.line17.foreground: gray61
+ *SimpleMenu.line18.foreground: gray91
+ *SimpleMenu.line19.foreground: gray61
+ *SimpleMenu.line20.foreground: gray91
+ *SimpleMenu.line21.foreground: gray61
+ *SimpleMenu.line22.foreground: gray91
+ *SimpleMenu.line23.foreground: gray61
+ *SimpleMenu.line24.foreground: gray91
+ *SimpleMenu.line25.foreground: gray61
+ *SimpleMenu.line26.foreground: gray91
+ *SimpleMenu.line27.foreground: gray61
+ *SimpleMenu.line28.foreground: gray91
+ *SimpleMenu.line29.foreground: gray61
+ *SimpleMenu.line30.foreground: gray91
+ *SimpleMenu.line31.foreground: gray61
+ *SimpleMenu.line32.foreground: gray91
+ *SimpleMenu.line33.foreground: gray61
+ *SimpleMenu.line34.foreground: gray91
+ *SimpleMenu.line35.foreground: gray61
+ *SimpleMenu.line36.foreground: gray91
+ *SimpleMenu.line37.foreground: gray61
+ *SimpleMenu.line38.foreground: gray91
+ *SimpleMenu.line39.foreground: gray61
+ *SimpleMenu.line40.foreground: gray91
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/global.tcl b/vendor/x11iraf/ximtool/gui.bak/global.tcl
new file mode 100644
index 00000000..4908e752
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/global.tcl
@@ -0,0 +1,147 @@
+
+
+##############################################################################
+# Utility Procedures.
+##############################################################################
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 1.3EXPORT"
+
+set winWidth [send imagewin get width ] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set appWidth [send display get width ] ;# application window width
+set appHeight [send display get height] ;# application window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set ruler none ;# selected ruler
+set ruleno 0 ;# used to name new rulers
+set blinkFrames "1 2" ;# list of blink frames
+set auto_reg 0
+
+set panel_up 0 ;# control panel mapped
+set help_up 0 ;# help panel mapped
+set ism_enable 0 ;# ISM is running
+set ism_capable 1 ;# Client is ISM capable
+set frameCache(0) "" ;# ISM frame cache
+
+set ctype "equatorial" ;# default coord type
+set eqtype "fk5" ;# default equatorial type
+
+# Global constants.
+set MAX_FRAMES 16 ;# max frame buffers
+
+# TCL constants
+set tcl_precision 8
+
+
+
+# Window resize callbacks.
+proc winResize {w width height} {
+ global winWidth winHeight
+
+ if {$width <= 1 || $height <= 1} \
+ return
+
+ set winWidth $width
+ set winHeight $height
+} ; send imagewin addCallback winResize resize
+
+proc appResize {w width height} \
+{
+ global doHcut doVcut cutXPos cutYPos
+ global appWidth appHeight
+
+ set appWidth $width
+ set appHeight $height
+
+ catch {
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ }
+} ; #send imagewin addCallback appResize resize
+
+
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { showToolBar }
+ { showPanelBar }
+ { warnings }
+ { centerBoxSize }
+ { peakCentroid }
+ { highlight }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set frameOffsetX($i) 0 ;# X register offset
+ set frameOffsetY($i) 0 ;# Y register offset
+ set enhancement($i) none ;# colortable enhancement
+}
+
+
+#trace variable frameOffsetX w debug_pvar ;# Debug stuff
+#trace variable frameOffsetY w debug_pvar
+#trace variable frameZoomX w debug_pvar
+#trace variable frameZoomY w debug_pvar
+#trace variable frameScaleX w debug_pvar
+#trace variable frameScaleY w debug_pvar
+
+proc debug_pvar { name element op } \
+{
+ if {$element != ""} {
+ set name ${name}($element)
+ }
+ upvar $name x
+ puts "Variable $name set to $x"
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/hdr.obj b/vendor/x11iraf/ximtool/gui.bak/hdr.obj
new file mode 100644
index 00000000..5940a85a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/hdr.obj
@@ -0,0 +1,36 @@
+
+set Objects(hdr_panel) { \
+ toplevel TopLevelShell hdr_panel\
+ hdr_panel Layout hdrLayout\
+\
+ hdrLayout Frame hdrMenuFrame\
+ hdrMenuFrame Layout hdrMenuBar\
+ hdrMenuBar Command hdrClose\
+\
+ hdrLayout Group hdrObjGroup\
+ hdrObjGroup Layout hdrObjLayout\
+ hdrObjLayout Label hdrObjLabel\
+ hdrObjLayout MenuButton hdrObjMenu\
+\
+ hdrLayout Frame hdrTabFrame\
+ hdrTabFrame Tabs hdrTabs\
+ hdrTabs Group hdrHdrGroup\
+ hdrTabs Group hdrWcsGroup\
+\
+ hdrHdrGroup Layout hdrHdrLayout\
+ hdrHdrLayout Frame hFindFrame\
+ hFindFrame AsciiText hFindEntry\
+ hdrHdrLayout Command hdrFilter\
+ hdrHdrLayout Command hdrFind\
+ hdrHdrLayout Command hdrClear\
+ hdrHdrLayout HTML hdrText\
+\
+ hdrWcsGroup Layout hdrWcsLayout\
+ hdrWcsLayout Group hdrInfoGroup\
+ hdrInfoGroup Frame hdrIGFrame\
+ hdrIGFrame AsciiText hdrIGText\
+ hdrWcsLayout Group hdrKeywGroup\
+ hdrKeywGroup Frame hdrKGFrame\
+ hdrKGFrame AsciiText hdrKGText\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/hdr.res b/vendor/x11iraf/ximtool/gui.bak/hdr.res
new file mode 100644
index 00000000..b0b96528
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/hdr.res
@@ -0,0 +1,138 @@
+
+set Resources(hdr_panel) { \
+
+ *hdr_panel.geometry: 550x600
+ *hdr_panel.title: Image Header
+
+ *hdr_panel*SimpleMenu.borderColor: black
+ *hdr_panel*SimpleMenu.borderWidth: 1
+ *hdr_panel*SimpleMenu.foreground: White
+ *hdr_panel*SimpleMenu.background: SteelBlue
+
+ *hdrMenuFrame.frameType: raised
+ *hdrMenuFrame.frameWidth: 2
+ *hdrLayout.layout: vertical { \
+ hdrMenuFrame < +inf -inf * > \
+ hdrObjGroup < +inf -inf * > \
+ hdrTabFrame < +inf -inf * +inf -inf> \
+ }
+
+ *hdrMenuBar*borderWidth: 0
+ *hdrMenuBar*Command.internalHeight: 5
+ *hdrMenuBar*Command.internalWidth: 12
+ *hdrMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> hdrClose 7 } \
+ 5 < -5 > \
+ }
+ *hdrClose.label: Dismiss
+
+ *hdrObjGroup.label:
+ *hdrObjGroup.outerOffset: 7
+ *hdrObjGroup.innerOffset: 4
+ *hdrObjLayout.borderWidth: 0
+ *hdrObjLayout.layout: vertical { \
+ horizontal { hdrObjLabel 2 hdrObjMenu < +inf -inf * > 2 } \
+ }
+ *hdrObjLabel.label: Image Name:
+ *hdrObjMenu.label:
+ *hdrObjMenu.justify: left
+ *hdrObjMenu.font: 7x13
+ *hdrObjMenu.menuName: objMenu
+ *hdrObjMenu.internalWidth: 5
+ *hdrObjMenu.internalHeight: 1
+ *hdrObjMenu.shadowWidth: 1
+
+ *hdrHdrGroup.tabLabel: Image Header
+ *hdrHdrGroup.label:
+ *hdrHdrGroup.outerOffset: 7
+ *hdrHdrGroup.innerOffset: 5
+ *hdrHdrLayout.borderWidth: 0
+ *hdrHdrLayout.layout: vertical { \
+ horizontal { \
+ hdrFilter 2 hFindFrame < +inf -inf * > 2 hdrFind 1 hdrClear \
+ } \
+ 5 \
+ hdrText < +inf -inf * +inf -inf > \
+ }
+ *hFindEntry*editType: edit
+ *hFindEntry*font: 7x13
+ *hFindEntry*displayCaret: True
+ *hFindEntry*width: 150
+ *hFindFrame.frameWidth: 1
+ *hFindFrame*borderWidth: 0
+ *hFindFrame.frameType: sunken
+ *hFindFrame.width: 150
+ *hFindFrame.height: 23
+ *hdrFilter.label: Keyword Filter
+ *hdrFind.label: Search
+ *hdrClear.label: Clear
+
+ ! Resources if the header text widget is AsciiText
+! *hdrText*scrollVertical: Always
+! *hdrText*scrollHorizontal: Always
+! *hdrText*editType: edit
+! *hdrText*font: 7x13
+! *hdrText*background: gray77
+! *hdrText*displayCaret: False
+! *hdrText*bottomMargin: 10
+! *hdrText*Scrollbar.width: 15
+! *hdrText*Scrollbar.height: 15
+
+ ! Resources if the header text widget is HTML
+ *hdrText.width: 600
+ *hdrText.height: 500
+ *hdrText.anchorUnderlines: 1
+ *hdrText.visitedAnchorUnderlines: 1
+ *hdrText.verticalScrollOnRight: True
+ *hdrText.plainFont: 7x13
+ *hdrText.marginWidth: 5
+ *hdrText.marginHeight: 5
+
+
+ *hdrWcsGroup.tabLabel: Image WCS Info
+ *hdrWcsGroup.label:
+ *hdrWcsGroup.outerOffset: 5
+ *hdrWcsGroup.innerOffset: 5
+ *hdrWcsGroup*Text*scrollVertical: whenNeeded
+ *hdrWcsGroup*Text*scrollHorizontal: whenNeeded
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*displayCaret: False
+ *hdrWcsGroup*Text*borderWidth: 0
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*font: 7x13
+ *hdrWcsGroup*Text*Scrollbar.width: 15
+ *hdrWcsGroup*Text*Scrollbar.height: 15
+ *hdrWcsLayout.borderWidth: 0
+ *hdrWcsLayout.layout: vertical { \
+ 2 < -2 > \
+ hdrInfoGroup < +inf -inf * > \
+ 2 < -2 > \
+ hdrKeywGroup < +inf -inf * +inf -inf > \
+ -4 \
+ }
+ *hdrInfoGroup.label: Basic WCS Information
+ *hdrInfoGroup.outerOffset: 7
+ *hdrInfoGroup.innerOffset: 0
+ *hdrIGFrame.frameType: sunken
+ *hdrIGFrame.frameWidth: 1
+ *hdrIGText.height: 130
+! *hdrIGText*background: black
+! *hdrIGText*foreground: yellow2
+ *hdrIGText*background: gray68
+ *hdrIGText*foreground: black
+ *hdrWcsGroup*hdrIGText*scrollVertical: never
+ *hdrWcsGroup*hdrIGText*scrollHorizontal: never
+ *hdrWcsGroup*hdrIGText*font: 7x13
+ *hdrKeywGroup.label: WCS Header Keywords
+ *hdrKeywGroup.outerOffset: 7
+ *hdrKeywGroup.innerOffset: 5
+ *hdrKGFrame.frameType: sunken
+ *hdrKGFrame.frameWidth: 1
+ *hdrKGText*background: gray77
+ *hdrKGText*bottomMargin: 10
+
+ *hdrIGText*background: gray77
+ *hdrIGFrame.frameWidth: 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/hdr.tcl b/vendor/x11iraf/ximtool/gui.bak/hdr.tcl
new file mode 100644
index 00000000..4dc7489a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/hdr.tcl
@@ -0,0 +1,105 @@
+
+################################################################################
+# Header Display Callbacks.
+################################################################################
+
+set hdrImage ""
+set hdrImageId ""
+set hdrKeywords "*"
+
+
+proc fitsHdrClose args \
+{
+ global hdr_up
+
+ send hdr_panel unmap
+ send imageHeader set on False
+ set hdr_up 0
+} ; send hdrClose addCallback fitsHdrClose
+
+proc ptFitsHeader {widget type state args} \
+{
+ global hdr_up
+
+ set hdr_up $state
+ if {$hdr_up == 1} {
+ send imageHeader set on True
+ send hdr_panel map
+ } else {
+ send imageHeader set on False
+ send hdr_panel unmap
+ }
+}; send imageHeader addCallback ptFitsHeader
+
+proc getHeader { name id } \
+{
+ global hdrImage hdrImageId hdrKeywords
+
+ set hdrImage $name
+ set hdrImageId $id
+ send hdrObjMenu set label $name
+ send hdrText setText ""
+ send hdrIGText set string ""
+ send hdrKGText set string ""
+
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+}
+
+proc hdrKeywFilter args \
+{
+ global hdrImageId hdrKeywords
+
+ set str [ send hFindEntry get string ]
+ if {$str != ""} {
+ set hdrKeywords $str
+ send hdrText setText ""
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+ }
+} ; send hdrFilter addCallback hdrKeywFilter
+
+
+# Set the image menu in the header panel.
+proc setHdrObjMenu { frame args } \
+{
+ global frameCache ism_enable
+
+ if {! $ism_enable} \
+ return
+
+ # Create the menu of images for the header panel.
+ set items { }
+ foreach i [list $frameCache($frame)] {
+ set l [lindex $i 0]
+ set lid [lindex $i 1]
+ regsub -all {[\[]} $l "\\\[" l2
+ catch {
+ lappend items [format "%s f.exec \{getHeader %s %d\}" $l $l2 $lid]
+ }
+ }
+ editMenu objMenu hdrObjMenu $items
+}
+
+
+# Search box for the header.
+proc hdrFind args \
+{
+ set phrase [send hFindEntry get string]
+
+ if { $phrase != "" } {
+ if {[send hdrText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send hdrText gotoId $id
+ send hdrText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }
+
+send hdrClear addCallback { send hFindEntry set string "" }
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/help.obj b/vendor/x11iraf/ximtool/gui.bak/help.obj
new file mode 100644
index 00000000..36759f63
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/help.obj
@@ -0,0 +1,27 @@
+
+set Objects(help_panel) { \
+ toplevel TopLevelShell help_panel\
+ help_panel Layout helpLayout\
+ helpLayout Group helpMenuGroup\
+ helpMenuGroup Layout helpMenubar\
+ helpLayout Layout helpInfoLayout\
+\
+ helpMenubar Command helpClose\
+\
+ helpLayout Command helpBack\
+ helpLayout Command helpForward\
+ helpLayout Command helpHome\
+ helpLayout Frame hfFrame\
+ hfFrame AsciiText hfEntry\
+ helpLayout Command hfFind\
+ helpLayout Command hfClear\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText\
+\
+ helpInfoLayout Label helpIRAFLogo\
+ helpInfoLayout Label helpInfo1\
+ helpInfoLayout Label helpInfo2\
+ helpInfoLayout Label helpInfo3\
+ helpInfoLayout Label helpNOAOLogo\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/help.res b/vendor/x11iraf/ximtool/gui.bak/help.res
new file mode 100644
index 00000000..ca70390b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/help.res
@@ -0,0 +1,111 @@
+
+set Resources(help_panel) { \
+
+ !----------------------
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 500
+ *help_panel.height: 550
+ *helpLayout*borderWidth: 0
+ *helpLayout*Command.internalHeight: 4
+ *helpLayout*Command.internalWidth: 12
+ *helpLayout*HTML*shadowWidth: 1
+ *helpLayout*helpText*Scrollbar.shadowWidth: 1
+
+ *helpMenuGroup.label:
+ *helpMenuGroup.height: 45
+ *helpMenuGroup.outerOffset: 0
+ *helpMenuGroup.innerOffset: 0
+ *helpMenuGroup.frameType: raised
+ *helpMenubar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 20 < +inf -20 > helpClose 7 } \
+ 5 < -5 > \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Dismiss
+
+
+ *hfEntry*editType: edit
+ *hfEntry*font: 7x13
+ *hfEntry*displayCaret: True
+ *hfFrame.frameWidth: 1
+ *hfFrame.frameType: sunken
+ *hfFrame.width: 250
+ *hfFind.label: Search
+ *hfFind.shadowWidth: 1
+ *hfClear.label: Clear
+ *hfClear.shadowWidth: 1
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { helpMenuGroup < +inf -inf * > } \
+ 5 \
+ horizontal { \
+ 5 \
+ helpBack 2 helpForward 2 helpHome \
+ 20 < +inf -20 > \
+ hfFrame < +inf -inf * > 3 hfFind 1 hfClear \
+ 5 \
+ } \
+ 5 \
+ horizontal { helpTextFrame < +inf -inf * +inf -inf > } \
+ horizontal { helpInfoLayout < +inf -inf * > } \
+ -1 \
+ }
+ *helpTextFrame.frameWidth: 1
+ *helpTextFrame.frameType: sunken
+ *helpText.width: 600
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText*Scrollbar.shadowWidth: 1
+ *helpText.plainFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainboldFont: -adobe-courier-bold-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainitalicFont: -adobe-courier-medium-o-normal-*-12-*-*-*-*-*-*-*
+! *helpText.boldFont: 6x12bold
+
+
+ ! Contact info at the bottom of the panel.
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { 5 helpIRAFLogo 5 } \
+ 1 < +inf > \
+ vertical { \
+ 5 \
+ helpInfo1 < +inf -inf * +inf -inf > \
+ helpInfo2 < +inf -inf * +inf -inf > \
+ helpInfo3 < +inf -inf * +inf -inf > \
+ 5 \
+ } \
+ 1 < +inf > \
+ vertical { 5 helpNOAOLogo 5 } \
+ 5 \
+ }
+ *helpInfo1.label: XIMTOOL_VERSION
+ *helpInfo2.label: iraf@noao.edu (520) 318-8160
+ *helpInfo3.label: \
+ NOAO is operated by AURA under cooperative agreement with the NSF
+
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalHeight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: SteelBlue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalHeight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: SteelBlue
+ *helpInfoLayout.helpNOAOLogo.background: white
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/help.tcl b/vendor/x11iraf/ximtool/gui.bak/help.tcl
new file mode 100644
index 00000000..cc55e978
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/help.tcl
@@ -0,0 +1,209 @@
+
+###############################################
+# Define procedure for the help panel
+###############################################
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+send helpInfo1 set label $version
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+proc Help args \
+{
+ global help_up
+ if {$help_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set help_up 0
+ }
+}
+
+proc helpPanel args \
+{
+ global help_up
+ if {$help_up} {
+ send help_panel unmap
+ set help_up 0
+ } else {
+ send help_panel map
+ set help_up 1
+ }
+}
+
+proc panelHelp args \
+{
+ Help
+} ; send panelHelp addCallback panelHelp
+
+proc helpQuit args \
+{
+ global help_up
+ send help_panel unmap
+ set help_up 0
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } \
+{
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} \
+{
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack setSensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward setSensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward setSensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} \
+{
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args \
+{
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ send helpBack setSensitive True
+ } else {
+ send helpBack setSensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args \
+{
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack setSensitive False }
+ if {$linkIndex >= 0} { send helpForward setSensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args \
+{
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward setSensitive False
+ send helpBack setSensitive False
+}; send helpHome addCallback hlpHome
+
+
+proc helpFind args \
+{
+ set phrase [send hfEntry get string]
+
+ if { $phrase != "" } {
+ if {[send helpText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send helpText gotoId $id
+ send helpText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hfEntry hfFind } { send $w addCallback helpFind }
+
+send hfClear addCallback { send hfEntry set string "" }
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/imagewin.tcl b/vendor/x11iraf/ximtool/gui.bak/imagewin.tcl
new file mode 100644
index 00000000..5969ac6c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/imagewin.tcl
@@ -0,0 +1,1123 @@
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } \
+{
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} \
+{
+ global frameMenuDescription nframes frames
+
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+
+ if {$nframes > 0} {
+
+ # Creates the Frames menu on the main image window.
+ set items { }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send client setFrame $i\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ editMenu frameMenu frameButton $items
+
+ # Create the menu for the blink frames list.
+ set items { }
+ for {set i 0} {$i <= $nframes} {incr i} {
+ set j [expr ($i + 1)]
+ if {$i == 0} {
+ set s "\"none\" f.exec \{send brFrameBTN set label \" \"\}"
+ lappend items $s
+ } else {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send brFrameBTN set label $l\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ regsub -all BTN $items $i nmenu
+ editMenu frame${i}Menu brFrame$i $nmenu
+ }
+
+ } else {
+ editMenu frameMenu frameButton $frameMenuDescription
+
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ editMenu frame${i}Menu brFrame$i $frameMenuDescription
+ }
+ }
+ }
+
+ for {set i 1} {$i <= 16} {incr i} {
+ if {$i <= $nframes} {
+ send frame$i map
+ } else {
+ send frame$i unmap
+ }
+ }
+
+ if {$nframes > 2} {
+ setAllTileFrames
+ }
+}; send nframes addCallback setNFrames
+
+
+# Set the default main window frame menu.
+set frameMenuDescription {
+ {" 1" f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ {" 2" f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ {" 3" f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ {" 4" f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+
+
+
+# Initialize the frame lists panels (blink panel and tile tab).
+for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label [format "%2d" $i]
+ send tFrame$i set label [format "%2d" $i]
+ if {$i <= 4} {
+ send brFrame$i setSensitive True
+ send tFrame$i "setSensitive True ; set state 1"
+ } else {
+ send brFrame$i setSensitive False
+ send tFrame$i "setSensitive False ; set state 0"
+ }
+ createMenu frame${i}Menu brFrame$i $frameMenuDescription
+}
+
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} \
+{
+ global frame
+
+ set frame $new
+ send frameButton set label [format "%2d" $frame]
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+ wcsFmtFBConfig
+ drawCompass
+}; send frame addCallback frameChanged
+
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} \
+{
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+
+ wcsFmtFBConfig
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frameOffsetX frameOffsetY
+ global frame auto_reg blinkFrames
+
+ # Update the position.
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+ set frameOffsetX($frame) [lindex $new 6]
+ set frameOffsetY($frame) [lindex $new 7]
+
+ # If auto-registering is enabled, do it now, but only when we're updating
+ # the current display frame, and only if that frame is in the framelist.
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+
+ foreach f $blinkFrames {
+ if {$f != $frame} {
+ set frameZoomX($f) $frameZoomX($frame)
+ set frameZoomY($f) $frameZoomY($frame)
+ set frameCenterX($f) $frameCenterX($frame)
+ set frameCenterY($f) $frameCenterY($frame)
+ set frameScaleX($f) $frameScaleX($frame)
+ set frameScaleY($f) $frameScaleY($frame)
+ }
+ }
+ }
+ deleteAllRulers
+
+}; send frameView addCallback setFrameView
+
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} \
+{
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} \
+{
+ set lab [string trimright $new]
+ send imageTitle set label $lab
+
+ set image [lindex [ split $lab '-'] 0 ]
+ wcsFmtImname $image
+
+ set title [lindex [ split $lab '-'] 1 ]
+ wcsFmtImtitle $title
+ deleteAllRulers
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send xflipButton set state [true $new]
+ } else {
+ send yflipButton set state [true $new]
+ }
+ deleteAllRulers
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+
+proc Quit args \
+{
+ global ism_enable
+
+ if {$ism_enable} {
+ catch { send wcspix quit }
+ }
+ send client Quit
+}
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x ; flipRegister }
+proc yflip args { send client flip y ; flipRegister }
+proc xyflip args { send client flip x y ; flipRegister }
+proc flipRegister args \
+{
+ global auto_reg frame blinkFrames
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+ }
+}
+
+
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00}
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00}
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f}
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00}
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap bar 10 10 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap dot 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+ 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap null 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+catch { send controlButton "set bitmap panel; addCallback panel" }
+catch { send helpButton "set bitmap qmark; addCallback Help" }
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+send blinkPanel "set bitmap panel"
+
+
+
+# WINDOW the current frame.
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+ global auto_reg frame frameOffsetX frameOffsetY
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs \
+ $xmag $ymag $xcen $ycen \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+# Pan the display frame one width/height in a given direction.
+proc moveFrame { xs ys args } \
+{
+ global winWidth winHeight frame
+ global frameWidth frameHeight
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # Get the step size for the new position.
+ set xstep_size [ expr "$xs * $winWidth / $frameZoomX($frame)" ]
+ set ystep_size [ expr "$ys * $winHeight / $frameZoomY($frame)" ]
+
+ # Set the boundaries so we only move up to the edges.
+ set xl [ expr "($winWidth / $frameZoomX($frame)) / 2 + 1" ]
+ set yl [ expr "($winHeight / $frameZoomY($frame)) / 2 + 1" ]
+ set xu [ expr "$frameWidth - $xl" ]
+ set yu [ expr "$frameHeight - $yl" ]
+
+ # Set the new center position.
+ set nxc [ expr "$frameCenterX($frame) + $xstep_size" ]
+ set nyc [ expr "$frameCenterY($frame) + $ystep_size" ]
+ if {$nxc < $xl} { set nxc $xl }
+ if {$nxc > $xu} { set nxc $xu }
+ if {$nyc < $yl} { set nyc $yl }
+ if {$nyc > $yu} { set nyc $yu }
+
+ # Finally, send the command to move the frame.
+ send client zoomAbs \
+ $frameZoomX($frame) $frameZoomY($frame) $nxc $nyc \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+!Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.dblline }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.dblline }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+
+# WCSBOX -- Real time coordinate display.
+
+set track_enable 0
+set last_x 0
+set last_y 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame pixtab_up tabTop
+ global frameWidth frameHeight redraw_compass
+ global ism_enable wcsLabels last_x last_y
+ global ct_warn plotSpeed doHcut doVcut
+
+
+ # If the cursor was frozen release it now.
+ if {$ct_warn} {
+ curtrack_destroy
+ }
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ scan $text "%g %g %g" nx ny nz
+ } else {
+ set text [format " %7.2f %7.2f %9.1f " $rx $ry $rz]
+ set nx $rx ; set ny $ry ; set nz $rz
+ }
+
+ # Update the coords panel and pixel table.
+ wcsFmtSValue $nz
+ if {$pixtab_up} {
+ updatePixelTable $x $y $nx $ny
+ }
+
+ # If the ISM is running update the coords box with all the selected
+ # options, otherwise just write the one-line frame wcs coords.
+ if {$ism_enable} {
+ updateCoordsBox
+
+ } else {
+ # Update the on-screen marker.
+ if {$track_enable} {
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+
+ # Update the control panel readout (always done).
+ if {$wcsLabels} {
+ set ln [format " X: %12s Y: %12s WCS: Display" $nx $ny]
+ } else {
+ set ln [format " %12s %12s Display" $nx $ny]
+ }
+ send wtWcs1 set string $ln
+
+ if {$redraw_compass} \
+ drawCompass
+ }
+
+
+ # Update the cut-plots if enabled. If we're set for speed the don't
+ # track the really large cursor motions, wait till the differences are
+ # small indicating a finer motion.
+ if {$doHcut || $doVcut} {
+ set dist [ expr "sqrt(pow(($last_x - $x),2) + pow(($last_y - $y),2))" ]
+ if {($plotSpeed && $dist < 30) || ! $plotSpeed} {
+ cutPlots $x $y
+ }
+ }
+
+ # Save the position so we can track differences with last position.
+ set last_x $x
+ set last_y $y
+}
+
+
+proc setTrack {state} \
+{
+ global ism_enable track_enable wcsboxGeom
+ global winWidth winHeight up_todo
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 27ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ # Turn on the option toggles on the control panel.
+ foreach n {1 2 3 4} {
+ if {[send sysWcs$n get label] != "None"} {
+ send wiWcs$n set on True
+ }
+ }
+ if {$ism_enable} {
+ resizeCoordsBox $up_todo
+ }
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+
+ # Turn off the option toggles on the control panel.
+ foreach w {wiWcs1 wiWcs2 wiWcs3 wiWcs4} { send $w set on False }
+ resizeCoordsBox 0
+ }
+ updateCoordsBox
+}
+
+proc wcsboxDestroyCallback args \
+{
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args \
+{
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+ }
+}
+
+proc wcsboxMoved {marker event position} \
+{
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} \
+{
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+
+#---------------------
+# FRAME BLINK.
+#---------------------
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args \
+{
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args \
+{
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args \
+{
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args \
+{
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client windowColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec { panelTabToggle info_panel } }
+ { "Load" f.exec {
+ panelTabToggle load_panel
+ set panel_up 1
+ } }
+ { "Save" f.exec { Save } }
+ { "Save As..." f.exec { panelTabToggle save_panel } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec { panelTabToggle print_panel } }
+ { f.dblline }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Quit" f.exec { Quit } }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.dblline }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.dblline }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.dblline }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Auto-Register" f.exec cpAutoRegister }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.dblline }
+ { "Control Panel" f.exec { panelTabToggle display_panel } }
+ { "Print Panel" f.exec { panelTabToggle print_panel } }
+ { "Load Panel" f.exec { panelTabToggle load_panel } }
+ { "Save Panel" f.exec { panelTabToggle save_panel } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+
+#-------------------------------
+# Frozen Cursor Warning Message
+#-------------------------------
+
+set ct_warn 0
+
+proc curtrack_msg { x y args } \
+{
+ global ct_warn last_x last_y winHeight winWidth
+
+
+ if {! $ct_warn == 0} {
+ return
+ }
+
+ send imagewin createMarker curtrack_warn {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 21
+ lineWidth 0
+ imageText true
+ textBgColor red
+ textColor yellow
+ visible true
+ sensitive true
+ activated true
+ x 5
+ y 5
+ }
+
+ send curtrack_warn "set text \{ CURSOR READOUT FROZEN \}"
+ set ypos [ expr ($winHeight - 25) ]
+ send curtrack_warn "markpos; setAttributes x 5 y $ypos; redraw"
+ send curtrack_warn "redraw noerase"
+ set ct_warn 1
+
+ # Mark the position of the cursor.
+ send imagewin createMarker x_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x 1 \
+ y $last_y \
+ width $winWidth \
+ height 1 \
+ activated True \
+ visible True \
+ sensitive False
+
+ send imagewin createMarker y_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $last_x \
+ y 1 \
+ width 1 \
+ height $winHeight \
+ activated True \
+ visible True \
+ sensitive False
+
+ # Raise the coordinate marker so we can see where we are.
+ send wcsbox raise
+}
+
+
+proc curtrack_destroy args \
+{
+ global ct_warn
+
+ if {$ct_warn} {
+ send curtrack_warn destroy
+ send x_curpos destroy
+ send y_curpos destroy
+ set ct_warn 0
+ }
+}
diff --git a/vendor/x11iraf/ximtool/gui.bak/info.res b/vendor/x11iraf/ximtool/gui.bak/info.res
new file mode 100644
index 00000000..227681fb
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/info.res
@@ -0,0 +1,58 @@
+
+set Resources(info_panel) { \
+
+ !--------------------
+ ! Information Panel
+ !--------------------
+ *infoLayout*borderWidth: 0
+ *infoLayout*Frame.frameType: sunken
+ *infoLayout*Frame.frameWidth: 1
+ *infoLayout*Command.internalWidth: 12
+ *infoLayout*Text*editType: read
+ *infoLayout*Text*scrollVertical: whenNeeded
+ *infoLayout*Text*scrollHorizontal: whenNeeded
+ *infoLayout*Text*displayCaret: False
+ *infoLayout*Scrollbar.background: gray77
+ *infoLayout*Scrollbar.width: 17
+ *infoLayout*Scrollbar.height: 17
+
+ *infoText.height: 240
+ *infoText*font: 6x13
+ *infoLayout.layout: vertical { \
+ infoBox < +inf -inf * > \
+ }
+
+ *infoBox.label:
+ *infoBox.outerOffset: 0
+ *infoBox.innerOffset: 3
+ *infoBoxL*TextToggle.frameType: raised
+ *infoBoxL*TextToggle.frameWidth: 1
+ *infoBoxL*TextToggle*outerOffset: 0
+ *infoBoxL*TextToggle*innerOffset: 1
+ *infoBoxL*TextToggle.location: 0 0 100 25
+ *infoBoxL*TextToggle*onIcon: square1s
+ *infoBoxL*TextToggle*offIcon: square0s
+ *infoBoxL*TextToggle*highlightColor: cyan
+ *infoBoxL.layout: vertical { \
+ infoFrame < +inf -inf * +inf -inf > 1 \
+ 4 \
+ horizontal { \
+ infoOptFr < +inf -inf * > 1 \
+ infoOptSvr < +inf -inf * > 1 \
+ infoOptClients < +inf -inf * > 1 \
+ infoOptWCS < +inf -inf * > 1 \
+ infoOptIsm < +inf -inf * > 1 \
+ infoOptFB < +inf -inf * > \
+ }\
+ 2 \
+ }
+ *infoOptFr.label: Frame
+ *infoOptFr.on: True
+ *infoOptSvr.label: Server
+ *infoOptWCS.label: WCS
+ *infoOptIsm.label: ISM
+ *infoOptClients.label: Clients
+ *infoOptFB.label: Imtoolrc
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/info.tcl b/vendor/x11iraf/ximtool/gui.bak/info.tcl
new file mode 100644
index 00000000..3f0e89fc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/info.tcl
@@ -0,0 +1,86 @@
+
+################################################################################
+# INFO box.
+################################################################################
+
+set infoMode infoOptFr
+
+
+# Current Frame information.
+proc infoFrameUpdate args \
+{
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if { [send infoOptWCS get on] } {
+ send client info wcs
+ return
+ } elseif {! [send infoOptFr get on]} \
+ return
+
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set cntr [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $cntr]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+ set line9 [format "Offset:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXoff $cpYoff]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8 $line9
+ ]
+ }
+}
+set params {frame frameView nframes frameSize frameTitle enhancement}
+foreach p $params { send $p addCallback infoFrameUpdate }
+
+
+# Server Program State information.
+proc infoOptToggle { widget type state args } \
+{
+ global infoMode ismInfoText
+
+ if {$state} { set not False } else { set not True }
+
+ send $infoMode set on $not
+ set infoMode $widget
+
+ switch $widget {
+ infoOptFr { infoFrameUpdate }
+ infoOptSvr { set bp [send imagewin get basePixel]
+ set mc [send imagewin get maxColors]
+ send client info server $bp $mc
+ }
+ infoOptIsm { send infoText set string $ismInfoText }
+ infoOptClients { send client info clients }
+ infoOptWCS { send client info wcs }
+ infoOptFB { send client info imtoolrc }
+ }
+}
+set iopts {infoOptFr infoOptSvr infoOptIsm infoOptClients infoOptWCS infoOptFB }
+foreach w $iopts { send $w addCallback infoOptToggle }
+
+
+proc infoSetText { param old new } \
+{
+ send infoText set string $new
+} ; send info addCallback infoSetText
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/ism.tcl b/vendor/x11iraf/ximtool/gui.bak/ism.tcl
new file mode 100644
index 00000000..e0947d90
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/ism.tcl
@@ -0,0 +1,423 @@
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+#set Compass(0) { 0.0 1 1 0 X Y }
+set Compass(0) { 0.0 0.0 1.0 -1.0 0.0 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2]}
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+
+ #set xflip [lindex $argv 2]
+ #set yflip [lindex $argv 3]
+ #set transpose [lindex $argv 4]
+ #set xlab [lindex $argv 5]
+ #set ylab [lindex $argv 6]
+
+ set north_x [lindex $argv 2]
+ set north_y [lindex $argv 3]
+ set east_x [lindex $argv 4]
+ set east_y [lindex $argv 5]
+ set transpose [lindex $argv 6]
+ set xlab [lindex $argv 7]
+ set ylab [lindex $argv 8]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ #set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ set Compass($objid) [list $angle $north_x $north_y $east_x $east_y \
+ $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/ism.tcl.bak b/vendor/x11iraf/ximtool/gui.bak/ism.tcl.bak
new file mode 100644
index 00000000..4dd43305
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/ism.tcl.bak
@@ -0,0 +1,411 @@
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+set Compass(0) { 0.0 1 1 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2]}
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+ set transpose [lindex $argv 4]
+ set xlab [lindex $argv 5]
+ set ylab [lindex $argv 6]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/load.res b/vendor/x11iraf/ximtool/gui.bak/load.res
new file mode 100644
index 00000000..6686f5c4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/load.res
@@ -0,0 +1,173 @@
+
+set Resources(load_panel) { \
+
+ !-------------------------------
+ ! File Load Control Panel.
+ !-------------------------------
+ *filesLayout*borderWidth: 0
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*TextToggle.ledtMargin: 3
+ *filesLayout*SimpleMenu.borderWidth: 1
+ *filesLayout*SimpleMenu.borderColor: black
+ *filesLayout*SimpleMenu.foreground: White
+ *filesLayout*SimpleMenu.background: SteelBlue
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ imlistGroup < +inf -inf * > \
+ 3 \
+ horizontal { -5 imoptsGroup < +inf -inf * > -5 } \
+ -1 \
+ loadCmdGroup < +inf -inf * > \
+ }
+
+ *imlistGroup.label:
+ *imlistGroup.frameWidth: 2
+ *imlistGroup.outerOffset: 2
+ *imlistLayout*Label.shadowWidth: 0
+ *imlistLayout*Label.justify: left
+ *imlistLayout*Command.width: 90
+ *imlistLayout*Command.height: 23
+ *imlistLayout*Command.shadowWidth: 1
+ *imlistLayout*Viewport.allowVert: True
+ *imlistLayout*Viewport.allowHoriz True
+ *imlistLayout*Viewport.useRight: True
+ *imlistLayout*Viewport.useBottom: True
+ *imlistLayout*Viewport.resizeable: True
+ *imlistLayout*Scrollbar.height: 17
+ *imlistLayout*Scrollbar.width: 17
+ *imlistLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ rootButton < +inf -inf * > 1 \
+ homeButton < +inf -inf * > 1 \
+ upButton < +inf -inf * > 1 \
+ rescanButton < +inf -inf * > \
+ 3 \
+ imtemplateLabel 3 imtemplateFrame < +inf -inf * > \
+ 3 \
+ } \
+ 5 \
+ horizontal { 1 imlistLabel < +inf -inf * > 1 } \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 \
+ dirLabel < +inf -inf * > \
+ 3 \
+ horizontal { 5 fnameLabel 5 filnamFrame < +inf -inf * > } \
+ 3 \
+ }
+ *imtemplateLabel.label: Filter:
+ *imtemplateText*editType: edit
+ *imtemplateText*height: 23
+ *imtemplateText*font: 7x13
+ !*imageList.width: 100
+ *imageList*height: 140
+ *imageList.shadeSurplus: False
+ *imageList.defaultColumns: 3
+ *imageList.font: 7x13
+ *imlistView.resizeable: True
+ *imlistLabel.height: 0
+ *imlistLabel.label: xxx
+ *imlistLabel.justify: left
+ *imlistLabel.font: *lucida-bold-r*10*
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *dirLabel.label: \ \ Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 22
+
+ *imoptsGroup.label: Options
+ *imoptsGroup.frameWidth: 2
+ *imoptsGroup.outerOffset: 7
+ *imoptsGroup*offIcon: square0s
+ *imoptsGroup*onIcon: square1s
+ *imoptsGroup*highlightColor: yellow
+ *imoptsLayout*Label.shadowWidth: 0
+ *imoptsLayout*Label.justify: left
+ *imoptsLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ autoload 6 grayscale \
+ 3 < +inf > \
+ browseHdrs \
+ 3 < +inf > \
+ frameLabel 2 frameFrame \
+ 3 \
+ } \
+ 6 \
+ horizontal { \
+ 3 \
+ zscale 6 zrange \
+ 3 \
+ z1Label z1Frame < +inf * > 2 \
+ z2Label z2Frame < +inf * > 2 \
+ nsampLabel nsampFrame < +inf * > \
+ 3 \
+ } \
+ 3 \
+ }
+ *grayscale.label: Auto Grayscale
+ *grayscale.location: 0 0 100 22
+ *autoload.label: Auto Load
+ *autoload.location: 0 0 80 22
+ *autoload.on: True
+ *browseHdrs.label: List Image Headers
+ *browseHdrs.location: 0 0 120 22
+ *browseHdrs.on: False
+ *zscale.label: Zscale
+ *zscale.location: 0 0 60 22
+ *zrange.label: Zrange
+ *zrange.location: 0 0 60 22
+ *z1Label.label: z1
+ *z1Value*width: 60
+ *z1Value*height: 22
+ *z1Value*editType: edit
+ *z2Label.label: z2
+ *z2Value*width: 60
+ *z2Value*height: 22
+ *z2Value*editType: edit
+ *nsampLabel.label: Nsample
+ *nsampValue*width: 60
+ *nsampValue*height: 22
+ *nsampValue*editType: edit
+ *frameLabel.label: Frame:\
+ *frameFrame.width: 50
+ *frameFrame.resize: False
+ *frameFrame.label: Current
+ *frameFrame.font: 6x13
+ *frameFrame.menuName: loadFrames
+
+
+ *loadCmdGroup.label:
+ *loadCmdGroup*frameWidth: 2
+ *loadCmdGroup*outerOffset: 5
+ *loadCmdGroup.outerOffset: 2
+ *loadCmdGroup*innerOffset: 5
+ *loadCmdGroup.frameType: sunken
+ *loadCmdGroup.label:
+ *loadCmdGroup.location: 0 0 400 45
+ *loadCmdLayout*Command.internalWidth: 12
+ *loadCmdLayout.layout: horizontal { \
+ 2 \
+ filesLoadButton \
+ 1 < +inf > \
+ filesStatus \
+ 2 \
+ }
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/load.tcl b/vendor/x11iraf/ximtool/gui.bak/load.tcl
new file mode 100644
index 00000000..425f0226
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/load.tcl
@@ -0,0 +1,247 @@
+
+################################################################################
+# Image and objects list display and section
+################################################################################
+
+proc filesTextHighlight { widget event args } \
+{
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+foreach w {imtemplateText fnameText z1Value z2Value} {
+ send $w addEventHandler filesTextHighlight enterWindowMask
+ send $w addEventHandler filesTextHighlight leaveWindowMask
+}
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+set label \
+ [format "%-35.35s %6s %12s %12s"\
+ " Image" "Bitpix" " Size" " Title"]
+send imlistLabel set label $label
+send imlistLabel "set height 0 ; unmap"
+
+
+# Create the Frames menu on the load panel window.
+set loadItems { "Current f.exec \{send frameFrame set label Current\}"}
+for {set i 1} {$i <= $MAX_FRAMES} {incr i} {
+ lappend loadItems "\"\ \ $i\ \ \" f.exec \{send frameFrame set label $i\}"
+}; createMenu loadFrames frameFrame $loadItems
+
+
+
+
+
+# Filename pattern callback.
+proc setPattern { widget mode pattern args } \
+{
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+
+# Load options parameter callback.
+proc doLoadOptions { param old new } \
+{
+ global warnings panel_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format " Directory: %s" $val ] }
+ newfile { send fnameText set string $val }
+ status { send filesStatus set label $val
+ if { ! $panel_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayscale set on $val }
+ zscale { send zscale set on $val
+ if {$val} {
+ send zrange setSensitive False
+ } else {
+ send zrange setSensitive True
+ }
+ }
+ zrange { send zrange set on $val
+ if {$val} {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive False
+ }
+ } else {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive True
+ }
+ }
+ }
+ z1 { send z1Value set string [format "%s" $val ] }
+ z2 { send z2Value set string [format "%s" $val ] }
+ nsample { send nsampValue set string [format "%s" $val ] }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+# Option utility routines.
+proc toggleGraymap args \
+{
+ send client setLoadOption gray [ send grayscale get on ]
+} ; send grayscale addCallback toggleGraymap
+
+proc toggleHeaders args \
+{
+ if { [send browseHdrs get on] } {
+ send client setLoadOption headers
+ send rootButton setSensitive False
+ send homeButton setSensitive False
+ send upButton setSensitive False
+ send rescanButton setSensitive False
+ send imlistLabel "set height 10 ; map"
+ } else {
+ send client setLoadOption rescan
+ send rootButton setSensitive True
+ send homeButton setSensitive True
+ send upButton setSensitive True
+ send rescanButton setSensitive True
+ send imlistLabel "set height 0 ; unmap"
+ }
+} ; send browseHdrs addCallback toggleHeaders
+
+proc toggleZscale args \
+{
+ send client setLoadOption zscale [send zscale get on]
+} ; send zscale addCallback toggleZscale
+
+proc toggleZrange args \
+{
+ send client setLoadOption zrange [send zrange get on]
+} ; send zrange addCallback toggleZrange
+
+proc setZ1 { widget mode pattern args } \
+{
+ send client setLoadOption z1 $pattern
+} ; send z1Value addCallback setZ1
+
+proc setZ2 { widget mode pattern args } \
+{
+ send client setLoadOption z2 $pattern
+} ; send z2Value addCallback setZ2
+
+proc setNsamp { widget mode pattern args } \
+{
+ send client setLoadOption nsample $pattern
+} ; send nsampValue addCallback setNsamp
+
+proc fileLoad { widget mode fname args } \
+{
+ loadImage $fname
+} ; send fnameText addCallback fileLoad
+
+
+
+# Image list selection routines.
+
+set fileList {}
+
+proc setFileList { param old new } \
+{
+ global fileList
+ set fileList $new
+
+ # Get the max length of the strings so we can set
+ # the list columns appropriately.
+ set max 0
+ foreach n $new {
+ set len [string length $n]
+ if {$len > $max} { set max $len }
+ }
+
+ # Optimize the number of columns for the file list.
+ if {$max > 35} {
+ send imageList set defaultColumns 1
+ } elseif {$max > 21} {
+ send imageList set defaultColumns 2
+ } elseif {$max > 12} {
+ send imageList set defaultColumns 3
+ } elseif {$max > 5} {
+ send imageList set defaultColumns 4
+ } else {
+ send imageList set defaultColumns 5
+ }
+
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flResize args \
+{
+ global fileList
+ send imageList setList $fileList resize
+}; send imageList addEventHandler flResize ResizeRedirectMask
+
+proc flSelectPrint { widget cbtype selections args } \
+{
+ if {! [send autoload get on]} \
+ return
+
+ foreach selection $selections {
+ if { [send zrange get on] } {
+ loadImage [lindex $selection 0]
+ } else {
+ loadImage $selection
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+
+# Load the named image in the display.
+proc loadImage { name } \
+{
+ global frame
+
+ set fr [send frameFrame get label]
+
+ if { $fr == "Current" } { set fr $frame }
+
+ if { [fileSetOptions] >= 0 } {
+ send imagewin setCursorType busy
+ send client load $name $fr
+ send imagewin setCursorType idle
+ send fnameText set string $name
+ }
+}
+
+# Load button callback.
+proc fileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ loadImage $fname
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+
+# Send and selected options to the client before loading the image.
+proc fileSetOptions args \
+{
+ if { ![send zscale get on] && ![send zrange get on] } {
+ set z1 [send z1Value get string]
+ set z2 [send z2Value get string]
+
+ if {$z1 == $z2} {
+ Wexec client "z1/z2 values are not set properly"
+ return -1
+ } else {
+ send client setLoadOption z1 $z1
+ send client setLoadOption z2 $z2
+ }
+ }
+
+ return 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/magnifier.tcl b/vendor/x11iraf/ximtool/gui.bak/magnifier.tcl
new file mode 100644
index 00000000..74e43f94
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/magnifier.tcl
@@ -0,0 +1,576 @@
+
+################################################################################
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+################################################################################
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+proc toggleMagnifier args \
+{
+ global magnifier_enable
+ if {$magnifier_enable} {
+ setMagnifier 0
+ } else {
+ setMagnifier 1
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args \
+{
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} \
+{
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args \
+{
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} \
+{
+ global magnifierGeom displayMagnifier
+
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args \
+{
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+# if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+# # For efficiency we won't compute the sqrt of the distance but instead
+# # just compare the square. Use a threshold of 6 pixels so when we
+# # narrow in on the ROI the magnifier is still (mostly) correct.
+# set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+# (($last_mag_y-$y) * ($last_mag_y-$y))]
+# if {$diff > 36} {
+# set last_mag_x $x
+# set last_mag_y $y
+# return
+# }
+# }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } \
+ return
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/main-old.obj b/vendor/x11iraf/ximtool/gui.bak/main-old.obj
new file mode 100644
index 00000000..87617b81
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/main-old.obj
@@ -0,0 +1,51 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL.GUI -- Default GUI for the Ximtool image display server.
+#
+# Version 1.3 -- EXPORT VERSION
+
+
+set Version "NOAO/IRAF XImtool Version 1.3EXPORT"
+
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display \
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton \
+ menubar MenuButton viewButton \
+ menubar MenuButton optionsButton \
+ menubar Label imageTitle \
+ menubar Toggle controlButton \
+ menubar Toggle xflipButton \
+ menubar Toggle yflipButton \
+ menubar Command prevButton \
+ menubar MenuButton frameButton \
+ menubar Command nextButton \
+ menubar Toggle helpButton \
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/main-old.res b/vendor/x11iraf/ximtool/gui.bak/main-old.res
new file mode 100644
index 00000000..70d95cc0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/main-old.res
@@ -0,0 +1,422 @@
+
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: Black
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: Black
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.foreground: Black
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: Black
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: Black
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: Black
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 0
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ -2 \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ vcutFrame < * +inf -inf > \
+ } \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 plotOpts -4 } \
+ } \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ hcut 2 vcut \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 0
+ *hcutFrame.outerOffset: 0
+ *hcutPlot.color0: gray77
+ *hcutPlot.color1: black
+ *hcutPlot.color0: darkslategray
+ *hcutPlot.color1: ivory2
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 5
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ *vcutPlot.color0: gray77
+ *vcutPlot.color1: black
+ *vcutPlot.color0: darkslategray
+ *vcutPlot.color1: ivory2
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 5
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 40
+ *menuGroup.width: 518
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 1 < -1 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ controlButton 1 < -1 > \
+ 1 < -1 > \
+ xflipButton 1 < -1 > yflipButton \
+ 1 < -1 > \
+ prevButton 1 < -1 > frameButton 1 < -1 > nextButton \
+ 1 < -1 > \
+ helpButton \
+ 1 < -1 > \
+ }
+
+ *menubar*SimpleMenu.borderColor: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: white
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *menubar.width: 518
+ *menubar*borderWidth: 0
+ *menubar*Command.label: x
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 518
+ *imageFrame.height: 518
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 518
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.color8: #7c8498
+ *imagewin.color9: steelblue
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Ctrl <Key>a: call(toggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift<Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+ *colorbar.borderWidth: 0
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.width: 50
+ *colorbar.height: 17
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/main.obj b/vendor/x11iraf/ximtool/gui.bak/main.obj
new file mode 100644
index 00000000..c866908f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/main.obj
@@ -0,0 +1,85 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL-ALT.GUI -- Default GUI for the Ximtool-alt image display server.
+#
+# Version 1.3 -- EXPORT VERSION
+
+set Version "NOAO/IRAF XImtool Version 1.3EXPORT"
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display\
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton\
+ menubar MenuButton viewButton\
+ menubar MenuButton optionsButton\
+ menubar Label imageTitle\
+ menubar Toggle mXflipButton\
+ menubar Toggle mYflipButton\
+ menubar Command mPrevButton\
+ menubar MenuButton mFrameButton\
+ menubar Command mNextButton\
+ menubar Toggle toolButton\
+ menubar Toggle panelButton\
+\
+ display Layout toolbar\
+ toolbar Command tbZoomIn\
+ toolbar Command tbZoom0\
+ toolbar Command tbZoomOut\
+ toolbar Command tbInvert\
+ toolbar Command tbNormalize\
+ toolbar Command tbMatchLUT\
+ toolbar Toggle tbAutoReg\
+ toolbar Command tbRegister\
+ toolbar Command tbCenter\
+ toolbar Command tbBlinkDec\
+ toolbar Toggle tbBlink\
+ toolbar Command tbBlinkInc\
+ toolbar Toggle xflipButton\
+ toolbar Toggle yflipButton\
+ toolbar Toggle tbTile\
+ toolbar Toggle tbCompass\
+ toolbar Command prevButton\
+ toolbar MenuButton frameButton\
+ toolbar Command nextButton\
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+\
+ display Layout panelbar\
+ panelbar Toggle pbDisplayP\
+ panelbar Toggle pbLoadP\
+ panelbar Toggle pbSaveP\
+ panelbar Toggle pbPrintP\
+ panelbar Toggle pbInfoP\
+ panelbar Toggle pbTileP\
+ panelbar Toggle pbCoordP\
+ panelbar Toggle pbPanM\
+ panelbar Toggle pbMagM\
+ panelbar Toggle pbWcsM\
+ panelbar Toggle pbIsm\
+ panelbar Toggle helpButton\
+ panelbar Command pbQuit\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/main.res b/vendor/x11iraf/ximtool/gui.bak/main.res
new file mode 100644
index 00000000..3f1ccb84
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/main.res
@@ -0,0 +1,521 @@
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: White
+ *rulerMenu.foreground: White
+ *display.imagewin.markerMenu.foreground: White
+ *display.imagewin.rulerMenu.foreground: White
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: White
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: White
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerColor.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: White
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: White
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 0
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ horizontal { 1 toolbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ horizontal { 1 panelbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ vcutFrame < * +inf -inf > \
+ } \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 plotOpts -4 } \
+ } \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ hcut 2 vcut \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 0
+ *hcutFrame.outerOffset: 0
+ *hcutPlot.color0: gray77
+ *hcutPlot.color1: black
+ *hcutPlot.color0: darkslategray
+ *hcutPlot.color1: ivory2
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 5
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ *vcutPlot.color0: gray77
+ *vcutPlot.color1: black
+ *vcutPlot.color0: darkslategray
+ *vcutPlot.color1: ivory2
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 5
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 40
+ *menuGroup.width: 518
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 2 < -2 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ mXflipButton 1 < -1 > mYflipButton \
+ 1 < -1 > \
+ mPrevButton 1 < -1 > mFrameButton 1 < -1 > mNextButton \
+ 1 < -1 > \
+ toolButton 1 < -1 > panelButton \
+ 2 < -2 > \
+ }
+
+ *menubar*SimpleMenu.foreground: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: White
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *menubar.width: 518
+ *menubar*borderWidth: 0
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *toolbar.layout: horizontal { \
+ tbZoomIn < +inf -inf * > 1 < -1 > \
+ tbZoom0 < +inf -inf * > 1 < -1 > \
+ tbZoomOut < +inf -inf * > 1 < -1 > \
+ tbInvert < +inf -inf * > 1 < -1 > \
+ tbNormalize < +inf -inf * > 1 < -1 > \
+ tbMatchLUT < +inf -inf * > 1 < -1 > \
+ tbAutoReg < +inf -inf * > 1 < -1 > \
+ tbRegister < +inf -inf * > 1 < -1 > \
+ tbCenter < +inf -inf * > 1 < -1 > \
+ tbBlinkDec < +inf -inf * > 1 < -1 > \
+ tbBlink < +inf -inf * > 1 < -1 > \
+ tbBlinkInc < +inf -inf * > 1 < -1 > \
+ xflipButton < +inf -inf * > 1 < -1 > \
+ yflipButton < +inf -inf * > 1 < -1 > \
+ tbCompass < +inf -inf * > 1 < -1 > \
+ tbTile < +inf -inf * > 1 < -1 > \
+ prevButton < +inf -inf * > 1 < -1 > \
+ frameButton < +inf -inf * > 1 < -1 > \
+ nextButton < +inf -inf * > 1 < -1 > \
+ }
+ *toolbar.width: 518
+ *toolbar.height: 25
+ *toolbar*borderWidth: 0
+ *toolbar*Command.internalWidth: 3
+ *toolbar*Command.borderWidth: 0
+ *toolbar*Toggle.internalWidth: 2
+ *toolbar*Toggle.borderWidth: 0
+
+ *panelbar.layout: horizontal { \
+ pbDisplayP < +inf -inf * > 1 < -1 > \
+ pbPrintP < +inf -inf * > 1 < -1 > \
+ pbLoadP < +inf -inf * > 1 < -1 > \
+ pbSaveP < +inf -inf * > 1 < -1 > \
+ pbInfoP < +inf -inf * > 1 < -1 > \
+ pbTileP < +inf -inf * > 1 < -1 > \
+ pbCoordP < +inf -inf * > 1 < -1 > \
+ pbPanM < +inf -inf * > 1 < -1 > \
+ pbMagM < +inf -inf * > 1 < -1 > \
+ pbWcsM < +inf -inf * > 1 < -1 > \
+ pbIsm < +inf -inf * > 1 < -1 > \
+ helpButton < +inf -inf * > 1 < -1 > \
+ pbQuit < +inf -inf * > 1 < -1 > \
+ }
+ *panelbar*SimpleMenu.borderColor: Black
+ *panelbar*SimpleMenu.borderWidth: 1
+ *SmeBSB.vertSpace: 10
+
+ *panelbar.width: 12
+ *panelbar.height: 25
+ *panelbar*borderWidth: 0
+ *panelbar*Label.internalWidth: 4
+ *panelbar*Label.borderWidth: 0
+ *panelbar*Command.internalWidth: 4
+ *panelbar*Command.borderWidth: 0
+ *panelbar*Toggle.internalWidth: 3
+ *panelbar*Toggle.borderWidth: 0
+
+ *pbLoadP.label: Load
+ *pbDisplayP.label: Display
+ *pbSaveP.label: Save
+ *pbPrintP.label: Print
+ *pbInfoP.label: Info
+ *pbTileP.label: Tile
+ *pbCoordP.label: Coords
+ *pbPanM.label: Pan
+ *pbPanM.state: 1
+ *pbMagM.label: Mag
+ *pbMagM.state: 0
+ *pbWcsM.label: WCS
+ *pbWcsM.state: 1
+ *pbIsm.label: ISM
+ *pbIsm.state: 0
+ *helpButton.label:
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *toolButton.label:
+ *toolButton.state: 0
+ *panelButton.label:
+ *panelButton.state: 0
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+ *mFrameButton.menuName: mFrameMenu
+ *mFrameButton.label: 1
+ *mFrameButton.width: 20
+ *pbQuit.label: Quit
+ *tbZoom0.label: Mag
+ *tbBlink.label: Blink
+ *tbBlink.internalWidth: 3
+ *tbCenter.label: Cntr
+ *tbAutoReg.label: AReg
+ *tbRegister.label: Reg
+ *tbInvert.label: Inv
+ *tbNormalize.label: Norm
+ *tbMatchLUT.label: Match
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *panelbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *toolbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 518
+ *imageFrame.height: 518
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 518
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.idleCursor: crosshair
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.color8: #7c8498
+ *imagewin.color9: SteelBlue
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>a: call(tbToggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tbTileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !Shift<Btn1Down>: call(setDynamicMagnifier,1) \n\
+ !Shift<Btn1Up>: call(setDynamicMagnifier,0) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift <Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.height: 17
+ *colorbar.width: 50
+ *colorbar.borderWidth: 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/mkgui b/vendor/x11iraf/ximtool/gui.bak/mkgui
new file mode 100755
index 00000000..76f9f288
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/mkgui
@@ -0,0 +1,81 @@
+#!/bin/csh -f
+
+set old = 0
+set file = ximtool.gui
+
+old:
+
+echo -n "Building $file ..."
+if ($old == 0) then
+ cat main.obj > $file
+else
+ cat main-old.obj > $file
+endif
+cat panel.obj >> $file
+cat param.obj >> $file
+cat help.obj >> $file
+cat blink.obj >> $file
+cat hdr.obj >> $file
+cat pixtab.obj >> $file
+cat tcl.obj >> $file
+cat warn.obj >> $file
+
+cat global.res >> $file
+if ($old == 0) then
+ cat main.res >> $file
+else
+ cat main-old.res >> $file
+endif
+cat panel.res >> $file
+cat display.res >> $file
+cat print.res >> $file
+cat info.res >> $file
+cat load.res >> $file
+cat save.res >> $file
+cat tile.res >> $file
+cat wcs.res >> $file
+cat blink.res >> $file
+cat hdr.res >> $file
+cat pixtab.res >> $file
+cat help.res >> $file
+cat tcl.res >> $file
+cat warn.res >> $file
+cat resources.res >> $file
+
+cat boot.tcl >> $file
+cat global.tcl >> $file
+cat plots.tcl >> $file
+cat imagewin.tcl >> $file
+cat func.tcl >> $file
+cat panel.tcl >> $file
+cat magnifier.tcl >> $file
+cat panner.tcl >> $file
+cat print.tcl >> $file
+cat info.tcl >> $file
+cat load.tcl >> $file
+cat save.tcl >> $file
+cat tile.tcl >> $file
+cat wcs.tcl >> $file
+cat compass.tcl >> $file
+cat rulers.tcl >> $file
+cat help.tcl >> $file
+cat hdr.tcl >> $file
+cat pixtab.tcl >> $file
+cat warn.tcl >> $file
+cat tcl.tcl >> $file
+cat ism.tcl >> $file
+if ($old == 0) then
+ cat toolbars.tcl >> $file
+endif
+
+echo "Done"
+
+if ($old == 0) then
+ set old = 1
+ set file = ximtool-old.gui
+ goto old
+endif
+
+echo -n "Installing files ..."
+mv *.gui ../
+echo "Done"
diff --git a/vendor/x11iraf/ximtool/gui.bak/panel.obj b/vendor/x11iraf/ximtool/gui.bak/panel.obj
new file mode 100644
index 00000000..26157cef
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/panel.obj
@@ -0,0 +1,412 @@
+
+set Objects(panelShell) { \
+ toplevel TopLevelShell panelShell\
+ panelShell Layout panel\
+\
+ panel Frame panelMenuFrame\
+ panelMenuFrame Layout panelMenuBar\
+ panelMenuBar Command panelHelp\
+ panelMenuBar Command panelClose\
+\
+ panel Frame tabFrame\
+ tabFrame Tabs panelTabs\
+ panelTabs Frame display_panel\
+ panelTabs Frame print_panel\
+ panelTabs Frame load_panel\
+ panelTabs Frame save_panel\
+ panelTabs Frame info_panel\
+ panelTabs Frame tile_panel\
+ panelTabs Frame wcs_panel\
+\
+\
+ display_panel Layout controlPanel\
+ controlPanel Group viewBox\
+ controlPanel Group enhancementBox\
+ controlPanel Group blinkBox\
+ controlPanel Group optionsBox\
+ controlPanel Frame controlBox\
+\
+ viewBox Layout view\
+ view Group frameSelect\
+ frameSelect Layout frameBox\
+ frameBox Box frlistBox\
+ frlistBox Viewport framePort\
+ framePort Layout frameList\
+ frameList TextToggle frame1\
+ frameList TextToggle frame2\
+ frameList TextToggle frame3\
+ frameList TextToggle frame4\
+ frameList TextToggle frame5\
+ frameList TextToggle frame6\
+ frameList TextToggle frame7\
+ frameList TextToggle frame8\
+ frameList TextToggle frame9\
+ frameList TextToggle frame10\
+ frameList TextToggle frame11\
+ frameList TextToggle frame12\
+ frameList TextToggle frame13\
+ frameList TextToggle frame14\
+ frameList TextToggle frame15\
+ frameList TextToggle frame16\
+ frameBox Command prevFrame\
+ frameBox Command nextFrame\
+ view Frame frameDataBox\
+ frameDataBox TextBox frameData\
+ view Group zoomBox\
+ zoomBox Layout zoom\
+ zoom TextButton toggleZoom\
+ zoom TextButton zoomIn\
+ zoom Command x1\
+ zoom Command z2\
+ zoom Command z3\
+ zoom Command z4\
+ zoom Command z5\
+ zoom Command z8\
+ zoom TextButton zoomOut\
+ zoom TextButton centerFrame\
+ zoom Command d2\
+ zoom Command d3\
+ zoom Command d4\
+ zoom Command d5\
+ zoom Command d8\
+ view Layout viewButtons\
+ viewButtons Command aspect\
+ viewButtons Command flipX\
+ viewButtons Command flipY\
+ viewButtons Command flipXY\
+ viewButtons Command clearFrame\
+ viewButtons Command fitFrame\
+\
+ enhancementBox Layout enhance\
+ enhance Frame colorlistFrame\
+ colorlistFrame Viewport colorlistView\
+ colorlistView MultiList colorlist\
+ enhance Frame colordataFrame\
+ colordataFrame TextBox colordata\
+ enhance Label contrastLabel\
+ enhance Slider2d contrastSlider\
+ enhance Label brightnessLabel\
+ enhance Slider2d brightnessSlider\
+ enhance Command invertButton\
+ enhance Command optimizeButton\
+\
+ blinkBox Layout blink\
+ blink Label blinkFramesLabel\
+ blink Command blinkFrame1\
+ blink Command blinkFrame2\
+ blink Command blinkFrame3\
+ blink Command blinkFrame4\
+ blink Toggle blinkPanel\
+ blink Command blinkReset\
+ blink Label blinkRateLabel\
+ blink Frame BRframe\
+ BRframe Layout BRlayout\
+ BRlayout Arrow BRdecrease\
+ BRlayout TextBox BRtext\
+ BRlayout Arrow BRincrease\
+ blink Command registerButton\
+ blink Command matchButton\
+ blink TextToggle blinkButton\
+ blink TextToggle autoregButton\
+\
+ optionsBox TextToggle pannerButton\
+ optionsBox TextToggle magnifierButton\
+ optionsBox TextToggle coordsBoxButton\
+ optionsBox TextToggle autoscaleButton\
+ optionsBox TextToggle antialiasButton\
+ optionsBox TextToggle tileFramesButton\
+ optionsBox TextToggle warningsButton\
+ optionsBox TextToggle peakupButton\
+\
+ controlBox Layout control\
+ control Command initializeButton\
+ control Command normalizeButton\
+\
+\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+ optLayout Group annOptsGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage TextToggle epsSquareButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage TextToggle epsB5Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame\
+ ScaleFrame Layout ScaleLayout\
+ ScaleLayout Arrow SCdecrease\
+ ScaleLayout TextBox SCtext\
+ ScaleLayout Arrow SCincrease\
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle compressButton\
+\
+ annOptsGroup Layout annOpts\
+ annOpts TextToggle annotateButton\
+ annOpts TextToggle colorbarButton\
+ annOpts TextToggle titleButton\
+ annOpts TextToggle bordersButton\
+ annOpts Label titleLabel\
+ annOpts Frame titleFrame\
+ titleFrame AsciiText titleString\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers\
+ printers Frame printlistFrame\
+ printlistFrame Viewport printlistView\
+ printlistView MultiList printlist\
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout Command okayPrint\
+ cmdLayout Label printStatus\
+\
+\
+ load_panel Layout filesLayout\
+ filesLayout Group imlistGroup\
+ imlistGroup Layout imlistLayout\
+ imlistLayout Command rootButton\
+ imlistLayout Command homeButton\
+ imlistLayout Command upButton\
+ imlistLayout Command rescanButton\
+ imlistLayout Label dirLabel\
+ imlistLayout Label fnameLabel\
+ imlistLayout Frame filnamFrame\
+ filnamFrame AsciiText fnameText\
+ imlistLayout Label imtemplateLabel\
+ imlistLayout Frame imtemplateFrame\
+ imtemplateFrame AsciiText imtemplateText\
+ imlistLayout Label imlistLabel\
+ imlistLayout Frame imlistFrame\
+ imlistFrame Viewport imlistView\
+ imlistView MultiList imageList\
+\
+ filesLayout Group imoptsGroup\
+ imoptsGroup Layout imoptsLayout\
+ imoptsLayout TextToggle grayscale\
+ imoptsLayout TextToggle autoload\
+ imoptsLayout TextToggle browseHdrs\
+ imoptsLayout TextToggle zscale\
+ imoptsLayout TextToggle zrange\
+ imoptsLayout Label z1Label\
+ imoptsLayout Frame z1Frame\
+ z1Frame AsciiText z1Value\
+ imoptsLayout Label z2Label\
+ imoptsLayout Frame z2Frame\
+ z2Frame AsciiText z2Value\
+ imoptsLayout Label nsampLabel\
+ imoptsLayout Frame nsampFrame\
+ nsampFrame AsciiText nsampValue\
+ imoptsLayout Label frameLabel\
+ imoptsLayout MenuButton frameFrame\
+\
+ filesLayout Group loadCmdGroup\
+ loadCmdGroup Layout loadCmdLayout\
+ loadCmdLayout Command filesLoadButton\
+ loadCmdLayout Label filesStatus\
+\
+\
+ save_panel Layout saveLayout\
+ saveLayout Group saveNameGroup\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveLayout Group saveOptGroup\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox\
+ saveDataBox TextBox saveData\
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle epsButton\
+ formats TextToggle x11Button\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveLayout Group saveCmdGroup\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout Command okaySave\
+ saveCmdLayout Label saveStatus\
+\
+\
+ info_panel Layout infoLayout\
+ infoLayout Group infoBox\
+ infoBox Layout infoBoxL\
+ infoBoxL Frame infoFrame\
+ infoFrame AsciiText infoText\
+ infoBoxL TextToggle infoOptFr\
+ infoBoxL TextToggle infoOptWCS\
+ infoBoxL TextToggle infoOptSvr\
+ infoBoxL TextToggle infoOptClients\
+ infoBoxL TextToggle infoOptIsm\
+ infoBoxL TextToggle infoOptFB\
+\
+\
+ wcs_panel Layout wcsLayout\
+ wcsLayout Group wcsGroup\
+ wcsGroup Layout wcsBox\
+\
+ wcsBox Frame wcsFrame\
+ wcsFrame Layout wcsText\
+ wcsText AsciiText wtName\
+ wcsText AsciiText wtTitle\
+ wcsText AsciiText wtFBCfg\
+ wcsText AsciiText wtIPixval\
+ wcsText AsciiText wtSPixval\
+ wcsText AsciiText wtBPixval\
+ wcsText AsciiText wtWcs1\
+ wcsText AsciiText wtWcs2\
+ wcsText AsciiText wtWcs3\
+ wcsText AsciiText wtWcs4\
+\
+ wcsBox TextToggle ismToggle\
+ wcsBox TextToggle pixelTable\
+ wcsBox TextToggle imageHeader\
+ wcsBox TextToggle compass\
+ wcsBox TextToggle wcsOptions\
+\
+\
+ wcsLayout Group wcsOptGroup\
+ wcsOptGroup Layout wcsOptLayout\
+\
+ wcsOptLayout Group wcsCoords\
+ wcsCoords Layout wcLayout\
+ wcLayout Label wcTitle\
+ wcLayout Frame wcLine\
+ wcLayout Label wlWcs1\
+ wcLayout Label wlWcs2\
+ wcLayout Label wlWcs3\
+ wcLayout Label wlWcs4\
+ wcLayout MenuButton sysWcs1\
+ wcLayout MenuButton sysWcs2\
+ wcLayout MenuButton sysWcs3\
+ wcLayout MenuButton sysWcs4\
+ wcLayout MenuButton fmtWcs1\
+ wcLayout MenuButton fmtWcs2\
+ wcLayout MenuButton fmtWcs3\
+ wcLayout MenuButton fmtWcs4\
+ wcLayout TextToggle wpWcs1\
+ wcLayout TextToggle wpWcs2\
+ wcLayout TextToggle wpWcs3\
+ wcLayout TextToggle wpWcs4\
+ wcLayout TextToggle wiWcs1\
+ wcLayout TextToggle wiWcs2\
+ wcLayout TextToggle wiWcs3\
+ wcLayout TextToggle wiWcs4\
+\
+ wcsOptLayout Group wcsOpts\
+ wcsOpts Layout woLayout\
+ woLayout TextToggle woptLabels\
+ woLayout TextToggle woptTitles\
+ woLayout TextToggle woptFBinfo\
+ woLayout TextToggle woptBPM\
+\
+ wcsOptLayout Group wcsIsmGroup\
+ wcsIsmGroup Layout wcsIsmLayout\
+ wcsIsmLayout Label wcsIsmLabel\
+ wcsIsmLayout Frame wcsIsmFrame\
+ wcsIsmFrame AsciiText wcsIsmCmd\
+ wcsIsmLayout Command wcsIsmInit\
+\
+\
+ tile_panel Frame tileOpts\
+ tileOpts Layout toptLayout\
+ toptLayout Group tFramesG\
+ toptLayout Group tileMode\
+ tileMode TextToggle tileDisabled\
+ tileMode TextToggle tileManual\
+ tileMode TextToggle tileBest\
+ tileMode TextToggle tileSquare\
+ tileMode TextToggle tileHorizontal\
+ tileMode TextToggle tileVertical\
+ tileMode TextToggle tileRow\
+ tileMode TextToggle tileCol\
+ toptLayout Group userOrientG\
+ toptLayout Group fillStyle\
+ fillStyle TextToggle byCols\
+ fillStyle TextToggle bottomUp\
+ toptLayout Group tileLabel\
+ tileLabel TextToggle labelImname\
+ tileLabel TextToggle labelTitles\
+ tileLabel TextToggle labelFrames\
+ toptLayout Frame geomFrame\
+ geomFrame Label tileGeometry\
+\
+ userOrientG Layout userOrientL\
+ userOrientL Label nrowLab\
+ userOrientL Frame nrFrame\
+ nrFrame Layout nrLayout\
+ nrLayout Arrow nrdecrease\
+ nrLayout Label nrtext\
+ nrLayout Arrow nrincrease\
+ userOrientL Label ncolLab\
+ userOrientL Frame ncFrame\
+ ncFrame Layout ncLayout\
+ ncLayout Arrow ncdecrease\
+ ncLayout Label nctext\
+ ncLayout Arrow ncincrease\
+\
+ tFramesG Layout tFrames\
+ tFrames Command tAll\
+ tFrames Command tNone\
+ tFrames Toggle tFrame1\
+ tFrames Toggle tFrame2\
+ tFrames Toggle tFrame3\
+ tFrames Toggle tFrame4\
+ tFrames Toggle tFrame5\
+ tFrames Toggle tFrame6\
+ tFrames Toggle tFrame7\
+ tFrames Toggle tFrame8\
+ tFrames Toggle tFrame9\
+ tFrames Toggle tFrame10\
+ tFrames Toggle tFrame11\
+ tFrames Toggle tFrame12\
+ tFrames Toggle tFrame13\
+ tFrames Toggle tFrame14\
+ tFrames Toggle tFrame15\
+ tFrames Toggle tFrame16\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/panel.res b/vendor/x11iraf/ximtool/gui.bak/panel.res
new file mode 100644
index 00000000..52e27826
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/panel.res
@@ -0,0 +1,69 @@
+
+set Resources(panelShell) { \
+
+ !================================
+ ! Main Integrated Control Panel
+ !================================
+ *panelShell.title: XImtool Control Panel
+ *panelShell.geometry: 480x630
+ *panelShell.maxWidth: 480
+ *panelShell.minWidth: 480
+ *panelTabs.internalHeight: 3
+ *panelTabs.internalWidth: 10
+
+ *Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *List.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextToggle.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ *display_panel.tabLabel: Display
+ *display_panel.innerOffset: 5
+ *print_panel.tabLabel: Print
+ *print_panel.innerOffset: 5
+ *load_panel.tabLabel: Load
+ *load_panel.innerOffset: 5
+ *save_panel.tabLabel: Save
+ *save_panel.innerOffset: 5
+ *info_panel.tabLabel: Info
+ *info_panel.innerOffset: 5
+ *tile_panel.tabLabel: Tile
+ *tile_panel.innerOffset: 5
+ *wcs_panel.tabLabel: Coords
+ *wcs_panel.innerOffset: 5
+
+ *panelMenuBar*borderWidth: 0
+ *panelMenuBar*Command.internalHeight: 4
+ *panelMenuBar*Command.internalWidth: 15
+ *panelMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 10 < +inf -10> \
+ panelHelp \
+ 3 < -3 > \
+ panelClose \
+ 7 < -7 > \
+ } \
+ 5 < -5 > \
+ }
+
+ *panelHelp.label: Help
+ *panelClose.label: Dismiss
+
+
+ *tabFrame.outerOffset: 3
+ *tabFrame.innerOffset: 0
+ *tabFrame.frameWidth: 0
+ *tabFrame.frameType: chiseled
+ *panelMenuFrame.outerOffset: 0
+ *panelMenuFrame.innerOffset: 1
+ *panelMenuFrame.frameType: raised
+ *panelMenuFrame.frameWidth: 2
+ *panel.layout: vertical { \
+ panelMenuFrame < +inf -inf * > \
+ 3 \
+ horizontal { tabFrame < +inf -inf * +inf -inf> } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/panel.tcl b/vendor/x11iraf/ximtool/gui.bak/panel.tcl
new file mode 100644
index 00000000..0c873862
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/panel.tcl
@@ -0,0 +1,833 @@
+
+################################################################################
+# MAIN CONTROL PANEL
+################################################################################
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args \
+{
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+#-----------------------------------------------------------------------------
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+
+
+# panel -- Toggle control panel display.
+proc panel args \
+{
+ global panel_up
+ if {$panel_up} {
+ send panelShell unmap
+ set panel_up 0
+ } else {
+ send panelShell map
+ set panel_up 1
+ }
+}
+
+proc pbTracePanel {name element op} \
+{
+ catch {
+ upvar $name panel_up
+ send controlButton set state $panel_up
+ }
+} ; trace variable panel_up w pbTracePanel
+
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} \
+{
+ global frame nframes frames
+ global displayPanner displayMagnifier displayCoords
+ global blinkFrames warnings peakCentroid
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+
+ # Initialize to hide the extra frames.
+ send frlistBox set width 30
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i {1 2 3 4} {
+ send blinkFrame$button set label $i
+ incr button
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ send peakupButton set on [true $peakCentroid]
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+
+# Control Panel Tabs widget procedures.
+#----------------------------------------
+
+set cpTabs { display_panel print_panel load_panel save_panel \
+ info_panel wcs_panel tile_panel}
+set tabTop "display_panel"
+
+
+# Resize the control panel depending on the Tab selected.
+proc cpResizeCB { widget event a b c d e args } \
+{
+ global tabTop fileList
+
+ # Handle only the first exposure event generated.
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ set tabTop $widget
+
+ switch $widget {
+ display_panel { send panel set height 595 }
+ print_panel { send panel set height 545 }
+ load_panel { send panel set height 485
+ if { [send browseHdrs get on] } {
+ send imageList setList $fileList resize
+ } else {
+ send client setLoadOption rescan
+ }
+ }
+ save_panel { send panel set height 325 }
+ info_panel { send panel set height 380 }
+ tile_panel { send panel set height 405 }
+ wcs_panel { setCoordPanelHeight }
+ }
+ }
+} ; foreach w $cpTabs { send $w addEventHandler cpResizeCB exposureMask }
+
+
+proc panelDismiss args \
+{
+ global panel_up
+ send panelShell unmap
+ set panel_up 0
+} ; send panelClose addCallback panelDismiss
+
+
+proc panelTabToggle { panel args } \
+{
+ global tabTop panel_up
+
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $widget set state 0
+ set panel_up 0
+ return
+ }
+
+ # Special cases for each panel.
+ if {$panel == "load_panel"} {
+ send client setLoadOption rescan
+ }
+
+ send panelTabs setTop $panel
+ set tabTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send panelShell map
+ set panel_up 1
+ }
+}
+
+proc displayPanel args { panelTabToggle display_panel }
+proc infoPanel args { panelTabToggle info_panel }
+proc loadPanel args { panelTabToggle load_panel }
+proc savePanel args { panelTabToggle save_panel }
+proc printPanel args { panelTabToggle print_panel }
+proc tilePanel args { panelTabToggle tile_panel }
+proc wcsPanel args { panelTabToggle wcs_panel }
+
+
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} \
+{
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} \
+{
+ global frameCache
+
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+
+ # Update the header panel object list.
+ catch {
+ # Only update when the header panel is open.
+ if {[info exists frameCache($new)] && [send imageHeader get on]} {
+ setHdrObjMenu $new
+ getHeader [lindex $frameCache($new) 0] [lindex $frameCache($new) 1]
+ }
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+for {set i 1} {$i <= 16} {incr i} {send frame$i addCallback cpSetFrame}
+
+# Initialize to hide the extra frames.
+send frlistBox set width 30
+
+proc blinkPanelCB { widget type state args } \
+{
+ if {$state} {
+ send blink_panel map
+ } else {
+ send blink_panel unmap
+ }
+} ; send blinkPanel addCallback blinkPanelCB
+
+proc blinkPanelClose args \
+{
+ send blink_panel unmap
+ send blinkPanel set state 0
+} ; send brClose addCallback blinkPanelClose
+
+
+
+# Frame buttons.
+proc cpFrameAction {widget args} \
+{
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args \
+{
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args \
+{
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+}
+
+proc initFitFrame { param old new } \
+{
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} \
+{
+ global frameZoomX frameZoomY zoomindex frame
+ global frameOffsetX frameOffsetY frameCenterX frameCenterY
+
+ if {$mode == "fixed"} {
+ #send client zoom $zoom_x $zoom_y
+ send client zoomAbs $zoom_x $zoom_y \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ #send client zoom \
+ # [expr $frameZoomX($frame) * $zoom_x] \
+ # [expr $frameZoomY($frame) * $zoom_y]
+ send client zoomAbs \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y] \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget { toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8 } {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+set cpXoff 0
+set cpYoff 0
+
+proc cpDisplayFrameData {name old new} \
+{
+ global cpFrame cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+ set xoff [lindex $new 6]; set yoff [lindex $new 7]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xoff != $cpXoff || $yoff != $cpYoff ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpXoff $xoff;
+ set cpYmag $ymag; set cpYoff $yoff;
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ set offset [format " Offset: (%0.1f,%0.1f)" $cpXoff $cpYoff]
+
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2 $offset \
+ ]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args \
+{
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args \
+{
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} \
+{
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set colorTables {}
+
+proc cpSetColorList {param old new} \
+{
+ set colorTables $new
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc colorlistResize args \
+{
+ global colorTables
+ send colorlist setList $colorTables resize
+}; send colorlist addEventHandler colorlistResize ResizeRedirectMask
+
+proc cpSelectColor {widget cbtype selections indices} \
+{
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+send brBRtext set label $blinkRate
+
+proc cpSetBlinkRate {w args} \
+{
+ global blinkRate
+ if {$w == "BRincrease" || $w == "brBRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+}
+foreach w {BRincrease BRdecrease brBRincrease brBRdecrease} {
+ send $w addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} \
+{
+ global blinkFrames frames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i {1 2 3 4} {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send blinkButton set on False
+ send brBlinkButton set on False
+ blink
+ } elseif {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+} ; foreach w {blinkButton brBlinkButton} {send $w addCallback cpBlink}
+
+
+proc cpAutoRegister {widget type state args} \
+{
+ global auto_reg frame frames blinkFrames
+ global frameZoomX frameZoomY frameOffsetX frameOffsetY
+
+ set auto_reg $state
+ if {$auto_reg == 1} {
+ send autoregButton set on True
+ send brAregButton set on True
+ } else {
+ send autoregButton set on False
+ send brAregButton set on False
+ }
+
+ # Register the frames to zero the offsets.
+ send client registerFrames \{$blinkFrames\}
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+} ; foreach w {autoregButton brAregButton} {send $w addCallback cpAutoRegister}
+
+
+proc toggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ }
+}
+
+proc resetAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} \
+ toggleAutoReg
+}; send initialize addCallback resetAutoReg
+
+
+proc cpResetBlink args \
+{
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i {1 2 3 4} {
+ send blinkFrame$i set label " "
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+ set blinkIndex 0
+}
+send blinkReset addCallback cpResetBlink
+send brReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send blinkButton set on [expr $blinkId != 0]
+ send brBlinkButton set on [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} \
+{
+ global blinkFrames frames
+
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ for {set i 1} {$i <= $new} {incr i} {
+ if {$i <= 4} {
+ send blinkFrame$button set label $i
+ }
+ send brFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args \
+{
+ global frames blinkFrames
+ global frameOffsetX frameOffsetY
+
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+ send client registerFrames \{$blinkFrames\}
+}
+send registerButton addCallback cpRegisterFrames
+send brRegButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args \
+{
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}
+send matchButton addCallback cpMatchFrames
+send brMatchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} \
+{
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} \
+{
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} \
+{
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} \
+{
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args \
+{
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args \
+{
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} \
+{
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args \
+{
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} \
+{
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames { widget type state args } \
+{
+ global tile_frames tileOpt
+
+ set value [send tileFramesButton get on]
+ if {$value} {
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $tile_frames \}
+} ; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/panner.tcl b/vendor/x11iraf/ximtool/gui.bak/panner.tcl
new file mode 100644
index 00000000..6bdea0c7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/panner.tcl
@@ -0,0 +1,535 @@
+
+################################################################################
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+################################################################################
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_mag_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args \
+{
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global last_compass
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Redraw the compass if necessary.
+ send compass "setSensitive True ; set on $last_compass"
+ if { $last_compass } \
+ drawCompass
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args \
+{
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+
+ # Disable the compass.
+ send compass "setSensitive False ; set on False"
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args \
+{
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} \
+{
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} \
+{
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+ global frame auto_reg frameOffsetX frameOffsetY
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ if {$auto_reg == 1} {
+ send client zoomAbs $xscale $yscale $x $y \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ send client zoom $xscale $yscale $x $y
+ }
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} \
+{
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} \
+{
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ drawCompass
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global frame
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+ drawCompass
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args \
+{
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global frame
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ eraseCompass
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+
+ drawCompass
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} \
+{
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/param.obj b/vendor/x11iraf/ximtool/gui.bak/param.obj
new file mode 100644
index 00000000..b9a2d734
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/param.obj
@@ -0,0 +1,32 @@
+
+set Objects(parameters) { \
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter tileOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help\
+ ximtool Parameter info\
+ ximtool Parameter ism_msg\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/pixtab.obj b/vendor/x11iraf/ximtool/gui.bak/pixtab.obj
new file mode 100644
index 00000000..1da660a2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/pixtab.obj
@@ -0,0 +1,30 @@
+
+set Objects(pixel_table) { \
+ toplevel TopLevelShell pixel_panel\
+\
+ pixel_panel Layout pixel_table\
+ pixel_table Frame pixtabMenuFrame\
+ pixtabMenuFrame Layout pixtabMenuBar\
+ pixtabMenuBar MenuButton pixtabSize\
+ pixtabMenuBar Command pixtabHelp\
+ pixtabMenuBar Command pixtabClose\
+\
+ pixel_table Frame pixtabFrame\
+ pixtabFrame Porthole ptPort\
+ ptPort Layout ptLayout\
+ ptLayout Frame ptColFrame\
+ ptColFrame MultiList ptColLabs\
+ ptLayout Frame ptRowFrame\
+ ptRowFrame MultiList ptRowLabs\
+ ptLayout Frame ptFrame\
+ ptFrame MultiList pixtab\
+\
+ ptLayout Label meanLabel\
+ ptLayout Frame meanFrame\
+ meanFrame Label meanValue\
+\
+ ptLayout Label sigLabel\
+ ptLayout Frame sigFrame\
+ sigFrame Label sigValue\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/pixtab.res b/vendor/x11iraf/ximtool/gui.bak/pixtab.res
new file mode 100644
index 00000000..b41296c7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/pixtab.res
@@ -0,0 +1,128 @@
+
+set Resources(pixel_table) { \
+
+ *pixel_panel.title: Image Pixel Table
+ *pixel_panel*SimpleMenu.borderWidth: 1
+ *pixel_panel*SimpleMenu.borderColor: black
+ *pixel_panel*SimpleMenu.foreground: White
+ *pixel_panel*SimpleMenu.background: SteelBlue
+
+ *pixtabMenuBar*borderWidth: 0
+ *pixtabMenuBar*Command.internalHeight: 4
+ *pixtabMenuBar*Command.internalWidth: 12
+ *pixtabMenuBar.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ pixtabSize 10 < +inf -10> pixtabHelp 5 pixtabClose \
+ 7 \
+ } \
+ 5 \
+ }
+ *pixtabSize.label: Size
+ *pixtabSize.menuName: pixtabMenu
+ *pixtabHelp.label: Help
+ *pixtabHelp.sensitive: False
+ *pixtabClose.label: Dismiss
+
+ *pixtabMenuFrame.frameType: raised
+ *pixtabMenuFrame.frameWidth: 2
+ *pixel_table.layout: vertical { \
+ 1 \
+ pixtabMenuFrame < +inf -inf * > \
+ 1 \
+ pixtabFrame < +inf -inf * +inf -inf > \
+ 1 \
+ }
+
+
+ *pixtabFrame.frameType: raised
+ *pixtabFrame.frameWidth: 0
+ *pixtabFrame*borderWidth: 0
+ *pixtabFrame*font: 6x10
+ *pixtabFrame*MultiList.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*Label.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*TextToggle.font: -*-helvetica-medium-r-normal-*-10-*
+
+ *pixtabFrame*MultiList.forceColumns: True
+ *pixtabFrame*MultiList.defaultColumns: 5
+ *pixtabFrame*MultiList.shadeSurplus: False
+ *pixtabFrame*MultiList.borderWidth: 0
+ *pixtabFrame*MultiList.rowHeight: 25
+ *pixtabFrame*MultiList.rowSpacing: 7
+ *pixtabFrame*MultiList.internalWidth: 7
+ *pixtabFrame*MultiList.internalHeight: 4
+ *pixtabFrame*MultiList.width: 410
+ *pixtabFrame*MultiList.height: 160
+ *pixtabFrame*MultiList.columnWidth: 50
+ *pixtabFrame*MultiList.columnSpacing: 2
+ *pixtabFrame*MultiList.maxSelectable: 1
+ *pixtabFrame*MultiList.highlightForeground: red
+ *pixtabFrame*MultiList.highlightBackground: gray77
+ *pixtabFrame*MultiList.background: gray77
+ *pixtabFrame*TextToggle.background: gray77
+
+ *pixtabFrame*Label.width: 00
+ !*pixtabFrame*Label.resize: False
+
+ *meanFrame.frameWidth: 2
+ *meanFrame.frameType: chiseled
+ *meanFrame.outerOffset: 0
+ *meanFrame.width: 120
+ *meanLabel.label: Mean:
+ *meanValue.label:
+ *meanValue.resize: False
+
+ *sigFrame.frameWidth: 2
+ *sigFrame.frameType: chiseled
+ *sigFrame.outerOffset: 0
+ *sigFrame.width: 120
+ *sigLabel.label: Stdev:
+ *sigValue.label:
+ *sigValue.resize: False
+
+ *ptColFrame.frameWidth: 0
+ *ptColFrame.outerOffset: 0
+ *ptRowFrame.frameWidth: 0
+ *ptRowFrame.outerOffset: 0
+
+ *pixtabFrame*ptColLabs.width: 410
+ *pixtabFrame*ptColLabs.height: 23
+ *pixtabFrame*ptColLabs.defaultColumns: 5
+ *pixtabFrame*ptColLabs.forceColumns: True
+ *pixtabFrame*ptColLabs.columnWidth: 50
+ *pixtabFrame*ptColLabs.columnSpacing: 2
+ *pixtabFrame*ptRowLabs.width: 60
+ *pixtabFrame*ptRowLabs.height: 110
+ *pixtabFrame*ptRowLabs.defaultColumns: 1
+ *pixtabFrame*ptRowLabs.forceColumns: True
+ *pixtabFrame*ptRowLabs.verticalList: True
+ *pixtabFrame*ptRowLabs.columnWidth: 50
+ *pixtabFrame*ptRowLabs.columnSpacing: 2
+ *pixtabFrame*pixtab.verticalList: True
+
+ *ptFrame.outerOffset: 0
+ *ptFrame.innerOffset: 0
+ *ptFrame.borderWidth: 0
+ *ptFrame.frameWidth: 1
+ *ptFrame.frameType: sunken
+ *ptLayout.layout: vertical { \
+ 3 \
+ horizontal { 65 ptColFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { \
+ vertical { ptRowFrame< * +inf -inf > 5 } \
+ 1 \
+ vertical { ptFrame } \
+ 5 \
+ } \
+ 1 \
+ horizontal { \
+ 2 < +inf > \
+ meanLabel meanFrame < +inf -inf * > 2 \
+ sigLabel sigFrame < +inf -inf * > \
+ 10 \
+ } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/pixtab.tcl b/vendor/x11iraf/ximtool/gui.bak/pixtab.tcl
new file mode 100644
index 00000000..d23827c9
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/pixtab.tcl
@@ -0,0 +1,144 @@
+
+################################################################################
+# Pixel Table Callbacks.
+################################################################################
+
+set psize 5
+set pixtab_up 0
+set hdr_up 0
+
+createMenu pixtabMenu pixtabSize {
+ { "3x3" f.exec { pixtabSetSize 3 } }
+ { "5x5" f.exec { pixtabSetSize 5 } }
+ { "7x7" f.exec { pixtabSetSize 7 } }
+ { "9x9" f.exec { pixtabSetSize 9 } }
+}
+
+
+proc updatePixelTable { cx cy wx wy args } \
+{
+ global psize pixtab_up ism_enable
+
+ if {! $pixtab_up} \
+ return
+ if {$ism_enable} \
+ return
+
+ set delta [expr int($psize / 2) ]
+ set x1 [expr ($wx - $delta) ]
+ set x2 [expr ($wx + $delta) ]
+ set y1 [expr ($wy - $delta) ]
+ set y2 [expr ($wy + $delta) ]
+ set c [ expr int($psize / 2) ]
+
+
+ # Update the table labels.
+ set x $x1 ; set xl {}
+ set y $y2 ; set yl {}
+ for {set i 0} {$i < $psize} {incr i} {
+ lappend xl [format " %10.1f " $x] ; set x [ expr ($x + 1.) ]
+ lappend yl [format " %10.1f " $y] ; set y [ expr ($y - 1.) ]
+ }
+ send ptColLabs setList $xl ; send ptColLabs highlight $c
+ send ptRowLabs setList $yl ; send ptRowLabs highlight $c
+
+ # Update the pixel table itself.
+ #set pix [ send client getPixels $cx $cy $psize True ]
+
+ set x0 [ expr int($cx - $psize / 2. + 0.5)]
+ set y0 [ expr int($cy - $psize / 2. + 0.5)]
+ set pix [ send client getPixels $x0 $y0 $psize $psize ]
+ send pixtab setList [ lrange $pix 4 end ]
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Update the pixtab stats.
+ set sum 0.0
+ set sum2 0.0
+ set npix [ expr ($psize * $psize) ]
+ set nend [ expr ($psize * $psize) + 4 ]
+ for {set i 4} {$i < $nend} {incr i} {
+ set val [lindex $pix $i]
+ catch {
+ set sum [ expr ($sum + $val) ]
+ set sum2 [ expr ($sum2 + $val * $val) ]
+ }
+ }
+
+ set mean [ expr ($sum / ($npix * 1.0)) ]
+ set var [ expr (($sum2 - $sum * $mean) / ($npix - 1)) ]
+ if {$var <= 0.0} {
+ set stdev 0.0
+ } else {
+ set stdev [ expr sqrt ($var) ]
+ }
+ send meanValue set label [ format "%10.2f" $mean ]
+ send sigValue set label [ format "%10.4f" $stdev ]
+}
+
+
+proc pixtabClose args \
+{
+ global pixtab_up
+
+ send pixel_panel unmap
+ send pixelTable set on False
+ set pixtab_up 0
+ catch { send wcspix set psize 0 }
+} ; send pixtabClose addCallback pixtabClose
+
+
+proc pixtabSetSize { size args } \
+{
+ global psize ism_enable
+
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Now reset the window size.
+ switch $size {
+ 3 { send pixel_panel "resize 265 175"
+ send pixtab "set width 180 ; set height 60"
+ }
+ 5 { send pixel_panel "resize 375 215"
+ send pixtab "set width 290 ; set height 105"
+ }
+ 7 { send pixel_panel "resize 495 265"
+ send pixtab "set width 410 ; set height 150"
+ }
+ 9 { send pixel_panel "resize 610 310"
+ send pixtab "set width 525 ; set height 195"
+ }
+ }
+
+ send pixtab set defaultColumns $size
+ send ptColLabs set defaultColumns $size
+ set psize $size
+
+ # Notify the ISM we've changed size.
+ if ($ism_enable) {
+ catch { send wcspix set psize $psize }
+ }
+
+ send imagewin getCursorPos xc yc
+ updatePixelTable $xc $yc $xc $yc
+
+} ; pixtabSetSize $psize
+
+
+proc ptPixelTable {widget type state args} \
+{
+ global pixtab_up psize
+
+ set pixtab_up $state
+ if {$pixtab_up == 1} {
+ send pixelTable set on True
+ send pixel_panel map
+ catch { send wcspix set psize $psize }
+ } else {
+ send pixelTable set on False
+ send pixel_panel unmap
+ catch { send wcspix set psize 0 }
+ }
+}; send pixelTable addCallback ptPixelTable
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/plots.tcl b/vendor/x11iraf/ximtool/gui.bak/plots.tcl
new file mode 100644
index 00000000..c4abd426
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/plots.tcl
@@ -0,0 +1,659 @@
+
+
+################################################################################
+# Cut-plot handling routines.
+################################################################################
+
+set doHcut 0
+set doVcut 0
+set plotSpeed 1 ; send plotSpeed set on True
+set curJump 1 ; send curJump set on True
+set curTrack 1 ; send curTrack set on True
+
+set cutXPos [expr "$winWidth / 2"]
+set cutYPos [expr "$winHeight / 2"]
+set cutXScale 1.0
+set cutYScale 1.0
+
+
+
+# Change the cursor to the crosshair when in the plot
+proc cutCursor { widget event args } \
+{
+ global doHcut doVcut curTrack
+
+ if {! $curTrack} \
+ return
+
+ if { $event == "enterNotify" } {
+ send $widget setCursorType ginMode
+
+ # Disable the update of the graph we're in while in the plot window.
+ if {$widget == "hcutPlot"} { set doHcut 0 } else { set doVcut 0 }
+ } elseif { $event == "leaveNotify" } {
+ send $widget setCursorType idle
+
+ # Enable the update of the graph we're leaving.
+ if {$widget == "hcutPlot"} { set doHcut 1 } else { set doVcut 1 }
+ }
+ cutPlotRefresh
+}
+foreach w {hcutPlot vcutPlot} {
+ send $w addEventHandler cutCursor enterWindowMask
+ send $w addEventHandler cutCursor leaveWindowMask
+}
+
+proc cutPlotRefresh args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+} ; send imagewin addEventHandler cutPlotRefresh enterWindowMask
+
+proc cutPlotRedraw args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+}
+
+
+# Disable the options when we first start up.
+#send plotOpts "set height 1 ; set width 1 ; unmap"
+foreach w {plotOpts hcutFrame vcutFrame} { send $w unmap }
+
+
+# Cut-Plot options callback.
+proc doPlotOpts { widget type state args } \
+{
+ global plotSpeed curJump curTrack doHcut doVcut
+ global cutXPos cutYPos
+
+ if {$state} { set not 0 } else { set not 1 }
+
+ switch $widget {
+ plotSpeed { if {$state} {
+ send plotAccurate set on 0 ; send plotImgPix set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotAccurate { if {$state} {
+ send plotImgPix set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotImgPix { if {$state} {
+ send plotAccurate set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ curJump { send curSmooth set on $not ; set curJump $state }
+ curSmooth { send curJump set on $not ; set curJump $not }
+ curTrack { set curTrack $state }
+ }
+
+ # Redraw the plots right away.
+ if {$widget == "plotSpeed" || $widget == "plotAccurate"} {
+ cutPlots $cutXPos $cutYPos
+ }
+}
+foreach w { plotSpeed plotAccurate plotImgPix curJump curSmooth curTrack } {
+ send $w addCallback doPlotOpts
+}
+
+
+# Toggle the display of the horizontal or vertical cut plot windows.
+
+proc cutPlotToggle { widget type state args } \
+{
+ global doHcut doVcut cutXPos cutYPos
+ set debug 0
+
+ set hstate [send hcut get state]
+ set vstate [send vcut get state]
+ set w [send display get width]
+ set h [send display get height]
+
+ if {$debug} { print " " ; print [format "display: %d x %d\n" $w $h] }
+
+ if {$widget == "hcut"} {
+ set hfw [expr [send hcutFrame get width] - 4]
+ set hpw [send hcutPlot get width]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$vstate} {
+ send plotOpts set width 134
+ }
+ send hcutFrame "set width $hpw ; set height 132; map"
+ send hcutPlot "set width $hfw ; set height 128"
+ send display "set height [ expr ($h + 132) ]; set width $w"
+ drawHcutAxes 1
+ setHcutCursor 1
+ if {$vstate} {
+ send plotOpts "set height 134 ; map"
+ vcutInit
+ }
+ hcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setHcutCursor 0
+ drawHcutAxes 0
+ send hcutPlot clearScreen
+ send plotOpts "unmap; set height 4"
+ send hcutFrame "unmap; set width $hfw; set height 4"
+ send plotOpts "set width 4"
+ send display "set height [ expr ($h - 128) ] ; set width $w"
+ if {$vstate} {
+ vcutInit
+ }
+ }
+ set doHcut $state
+ } else {
+ set vfh [expr [send vcutFrame get height] - 4]
+ set vph [send vcutPlot get height]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$hstate} {
+ send plotOpts set height 134
+ }
+ send vcutFrame "set height $vph ; set width 132 ; map"
+ send vcutPlot "set height $vfh ; set width 128"
+ send display "set height $h; set width [ expr ($w + 132) ]"
+ drawVcutAxes 1
+ setVcutCursor 1
+ if {$hstate} {
+ send plotOpts "set height 134 ; set width 134; map"
+ hcutInit
+ }
+ vcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setVcutCursor 0
+ drawVcutAxes 0
+ send vcutPlot clearScreen
+ send plotOpts "unmap; set width 4"
+ send vcutFrame "unmap; set height $vfh; set width 4"
+ send plotOpts "set height 4"
+ send display "set width [ expr ($w - 128) ] ; set height $h"
+ if {$hstate} {
+ hcutInit
+ }
+ }
+ set doVcut $state
+ }
+
+ if {$debug} {
+ print [format " hFrame: %d x %d\n" \
+ [send hcutFrame get width] [send hcutFrame get height] ]
+ print [format " hPlot: %d x %d\n" \
+ [send hcutPlot get width] [send hcutPlot get height] ]
+ print [format " vFrame: %d x %d\n" \
+ [send vcutFrame get width] [send vcutFrame get height] ]
+ print [format " vPlot: %d x %d\n" \
+ [send vcutPlot get width] [send vcutPlot get height] ]
+ print [format "state: %d %d\n" $hstate $vstate]
+ print [format "display: %d x %d\n" $w $h]
+ }
+
+ cutPlots $cutXPos $cutYPos
+} ; foreach w { hcut vcut } { send $w addCallback cutPlotToggle }
+
+
+# Draw the cut plots.
+proc cutPlots { xpos ypos args } \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ catch {
+ if {$doHcut} { plotHcut $xpos $ypos }
+ if {$doVcut} { plotVcut $xpos $ypos }
+ }
+
+ set cutXPos $xpos ; set cutYPos $ypos
+}
+
+
+################################################################################
+# Horizontal Cut-Plot Routines
+################################################################################
+
+set hcutVec {}
+
+# Initiailize the horizontal cut-plot
+proc hcutInit args \
+{
+ global logz cutXScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send hcutPlot getPhysRes xr yr
+ send hcutPlot setLogRes $xr $yr
+
+ set logx [send imagewin get width]
+ set logz [expr ($z2 - $z1)]
+ set cutXScale [expr ($xr * 1.0) / ($logx * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6"
+ drawHcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotHcut { xpos ypos } \
+{
+ global doHcut cutXScale
+ global hcutVec cutXPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doHcut } \
+ return
+
+ # Do the horizontal cut plot.
+ set width [send imagewin get width]
+ if {$plotSpeed} {
+ set pix [send client getPixels 0 $ypos $width 1 2 5 $cutXScale]
+ } else {
+ set pix [send client getPixels 0 $ypos $width 1 2 1 $cutXScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Erase the last plot rather than clear the screen and redraw
+ # the new vector.
+ send hcutPlot setColorIndex background
+ send hcutPlot drawPolyline $hcutVec
+ send hcutPlot setColorIndex foreground
+ send hcutPlot drawPolyline $vec
+ set hcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawHcutIndicator $xpos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$ypos % 3"] == 0} {
+ catch {
+ drawHcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send hcutAxes1 redraw ;# redraw the axes markers
+ send hcutAxes2 redraw
+ }
+}
+
+
+# Create markers to indicate axes on the horizontal cut-plot.
+proc drawHcutAxes { state } \
+{
+ if {$state} {
+ send hcutPlot createMarker hcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 60 \
+ height 30 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ send hcutPlot createMarker hcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ height 60 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send hcutAxes1 destroy ; send hcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setHcutCursor { state } \
+{
+ if {$state} {
+ set pts { {252 10} {260 10} {256 1} }
+
+ send hcutPlot createMarker hcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 256 \
+ y 12 \
+ width 8 \
+ height 10 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send hcutCursor setVertices $pts
+ send hcutCursor set visible True
+
+ } else {
+ send hcutCursor destroy
+ }
+}
+
+# Label the axes on the horizontal cut plot.
+proc drawHcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ send hcutPlot "setColorIndex 6 ; \
+ drawAlphaText 2 10 [format "%.1f" $z2] ; \
+ drawAlphaText 2 34 [format "%.1f" $high] ; \
+ drawAlphaText 2 64 [format "%.1f" $mid] ; \
+ drawAlphaText 2 94 [format "%.1f" $low] ; \
+ drawAlphaText 2 120 [format "%.1f" $z1]"
+}
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawHcutIndicator { xpos } \
+{
+ global cutXScale cutXPos
+
+ send hcutCursor move [expr ($xpos * $cutXScale)] 12
+ set cutXPos $xpos
+}
+
+# Track the cursor while in the cut-graph window.
+proc hcutWCSUpdate { x y args } \
+{
+ global cutYPos curTrack
+ if {$curTrack} {
+ wcsUpdate $x $cutYPos
+ }
+ drawHcutIndicator $x
+}
+
+
+
+
+################################################################################
+# Vertical Cut-Plot Routines
+################################################################################
+
+set vcutVec {}
+
+# Initiailize the vertical cut-plot
+proc vcutInit args \
+{
+ global cutYScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send vcutPlot getPhysRes xr yr
+ send vcutPlot setLogRes $xr $yr
+
+ set logy [send imagewin get height]
+ set logz [expr ($z2 - $z1)]
+ set cutYScale [expr ($yr * 1.0) / ($logy * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6; reset"
+ drawVcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotVcut { xpos ypos } \
+{
+ global doVcut cutYScale
+ global vcutVec cutXPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doVcut } \
+ return
+
+ # Do the vertical cut plot.
+ set height [send imagewin get height]
+ if {$plotSpeed} {
+ set pix [send client getPixels $xpos 0 1 $height 3 5 $cutYScale]
+ } else {
+ set pix [send client getPixels $xpos 0 1 $height 3 1 $cutYScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Draw the vector.
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+ send vcutPlot drawPolyline $vec
+ set vcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawVcutIndicator $ypos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$xpos % 3"] == 0} {
+ catch {
+ drawVcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send vcutAxes1 redraw ;# redraw the axes markers
+ send vcutAxes2 redraw
+ }
+}
+
+# Erase the last plot rather than clear the screen and redraw it all. The
+# erase is done by redrawing the last vector in the the background color.
+proc eraseOldVcut args \
+{
+ global cutYPos vcutVec
+
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+}
+
+# Draw the horizontal cut-plot.
+# Create markers to indicate axes on the vertical cut-plot.
+proc drawVcutAxes { state } \
+{
+ if {$state} {
+ send vcutPlot createMarker vcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 60 \
+ y 1 \
+ height 4096 \
+ width 30 \
+ activated True \
+ visible True \
+ sensitive False
+ send vcutPlot createMarker vcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ width 60 \
+ height 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send vcutAxes1 destroy ; send vcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setVcutCursor { state } \
+{
+ if {$state} {
+ set pts { {10 252} {10 260} {1 256} }
+
+ send vcutPlot createMarker vcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 12 \
+ y 256 \
+ width 10 \
+ height 8 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send vcutCursor setVertices $pts
+ send vcutCursor set visible True
+
+ } else {
+ send vcutCursor destroy
+ }
+}
+
+# Label the axes on the vertical cut plot.
+proc drawVcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ # Initialize the label strings and positions.
+ set labels {}
+ foreach i [list $z2 $high $mid $low $z1] {
+ lappend labels [ format "%.1f" $i ]
+ }
+ set xposns { 2 28 58 88 112 }
+
+ send vcutPlot "setColorIndex 6"
+
+ # Draw each label vertically down the position since we can't rotate
+ # the text.
+ set xp 0
+ foreach lab $labels {
+ set chars [split $lab {} ]
+ set yp 12
+ set xpos [lindex $xposns $xp]
+ foreach ch $chars {
+ if {$ch == "."} { incr yp -4 }
+ send vcutPlot drawAlphaText $xpos $yp $ch
+ incr yp 10
+ }
+ incr xp
+ }
+}
+
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawVcutIndicator { ypos } \
+{
+ global cutYScale cutYPos
+
+ send vcutCursor move 12 [expr ($ypos * $cutYScale)]
+ set cutYPos $ypos
+}
+
+
+# Track the cursor while in the cut-graph window.
+proc vcutWCSUpdate { x y args } \
+{
+ global cutXPos curTrack
+ if {$curTrack} {
+ wcsUpdate $cutXPos $y
+ }
+ drawVcutIndicator $y
+}
+
+
+
+################################################################################
+# UTILITY ROUTINES
+################################################################################
+
+
+# TICSTEP -- Utility routine to compute nice ticmark steps in plots.
+# [ NOT CURRENTLY USED. ]
+
+proc ticstep { range nsteps } \
+{
+ set t2 0.301029996
+ set t5 0.698970004
+ set df [ expr "$range / double($nsteps + 1)" ]
+ if {$df > 0.0} {
+ set p1 [ expr "log10(double($df))" ]
+ } else {
+ set p1 [ expr "log10(double(-$df))" ]
+ }
+ set p2 [ expr "int($p1)" ]
+ set p3 [ expr "$p1 - $p2" ]
+
+ if { $p3 < 0.0 } {
+ set p3 [ expr "$p2 + 1.0" ]
+ set p2 [ expr "$p2 - 1.0" ]
+ }
+
+ if { $p3 < 1.0e-10 } {
+ set ticstep [ expr "pow(double(10.0),double($p2))" ]
+ } elseif { $p3 > 0. && $p3 <= $t2 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t2))" ]
+ } elseif { $p3 > $t2 && $p3 <= $t5 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t5))" ]
+ } elseif { $p3 > $t5 && $p3 <= 1.0 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + 1.))" ]
+ } else {
+ set ticstep $df
+ }
+
+ set logtic [ expr "int(log10($ticstep)) - 1" ]
+ set scale [ expr "pow(double(10.0),double($logtic))" ]
+ set ticstep [ expr "int( ($ticstep / $scale) * $scale)" ]
+
+ if {$ticstep < 0.1} { set ticstep 0.10 }
+
+ return $ticstep
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/print.res b/vendor/x11iraf/ximtool/gui.bak/print.res
new file mode 100644
index 00000000..aa88bd37
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/print.res
@@ -0,0 +1,304 @@
+
+set Resources(print_panel) { \
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 20
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -3 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 80
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 1
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*Text*height: 22
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout.layout: horizontal { \
+ labelLayout 5 inputLayout < +inf -inf * > \
+ }
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { 5 toLabel 7 printerLabel }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { 5 toPrinter 5 toFile 5 < +inf -inf > } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 330
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 2
+ *optLayout*borderWidth: 0
+ *optLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ vertical { \
+ 5 \
+ epsPageGroup < +inf -inf * > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ vertical { \
+ 5 \
+ printColorGroup < +inf -inf * > \
+ printerGroup < +inf -inf * > \
+ -1 \
+ } \
+ -1 \
+ } \
+ 5 \
+ horizontal { annOptsGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 7
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel 4 < -4 > \
+ horizontal { 25 epsPortButton epsLandButton epsSquareButton -1 } \
+ 4 \
+ epsSizeLabel -1 \
+ horizontal { \
+ 25 epsLetterButton epsLegalButton epsA4Button epsB5Button -1 \
+ } \
+ 10 \
+ horizontal { 5 epsScaleLabel 4 ScaleFrame < +inf -inf * > } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 65
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 85
+ *epsSquareButton.label: Square
+ *epsSquareButton.width: 70
+ *epsSquareButton.sensitive: False
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 60
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 60
+ *epsA4Button.label: A4
+ *epsA4Button.width: 50
+ *epsB5Button.label: B5
+ *epsB5Button.width: 50
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Output Image Scale:
+ *epsScaleLabel.justify: right
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 1
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 35
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease SCtext < +inf -100% * > SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 22
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 7
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 125
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.location: 0 0 250 60
+ *options.frameWidth: 2
+ *options.layout: horizontal { \
+ 5 \
+ vertical { -1 epsscaleButton 2 autorotateButton -1 } \
+ 3 \
+ vertical { -1 aspectButton 2 compressButton -1 } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: RLE Compress
+ *compressButton.sensitive: False
+
+
+ ! Annotation options box resources.
+ ! ------------------------------------
+ *annOptsGroup.outerOffset: 7
+ *annOptsGroup.innerOffset: 5
+ *annOptsGroup*onIcon: square1s
+ *annOptsGroup*offIcon: square0s
+ *annOptsGroup.label: Annotation Options
+ *annOptsGroup*TextToggle.width: 90
+ *annOptsGroup*TextToggle.highlightColor: yellow
+ *annOptsGroup*Frame.frameType: sunken
+ *annOptsGroup*Frame.frameWidth: 1
+ *annOptsGroup*Frame.width: 300
+ *annOptsGroup*Text*editType: edit
+ *annOpts.frameWidth: 2
+ *annOpts.location: 0 0 400 70
+ *annOpts.layout: vertical { \
+ 2 \
+ horizontal { \
+ 5 annotateButton 2 titleButton 2 bordersButton 2 colorbarButton 5 \
+ } \
+ 3 \
+ horizontal { -1 titleLabel 2 titleFrame < +inf -inf * > -1 } \
+ -1 \
+ }
+ *annotateButton.label: \ Annotate
+ *titleButton.label: \ Title
+ *bordersButton.label: \ Borders
+ *colorbarButton.label: \ Colorbar
+ *titleLabel.label: Title String
+ *titleString*string: imtitle
+ *titleString*height: 23
+ *titleString*Text*editType: edit
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 7
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 110
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 1 \
+ vertical { -1 prGrayButton 2 prPseudoButton 2 prRGBButton -1 } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 130
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 7
+
+ *printers*Viewport.allowVert: True
+ *printers*Viewport.allowHoriz: False
+ *printers*Viewport.useRight: True
+ *printers*Viewport.resizeable: True
+ *printers*Scrollbar.width: 17
+ *printers*Scrollbar.minimumThumb: 10
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*frameType: sunken
+ *printers*frameWidth: 1
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 50
+ *cmdLayout.borderWidth: 0
+ *cmdLayout*Command.internalWidth: 12
+ *cmdLayout.layout: horizontal { \
+ 2 \
+ okayPrint 1 < +inf > printStatus < +inf -inf * +inf -inf > \
+ 2 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/print.tcl b/vendor/x11iraf/ximtool/gui.bak/print.tcl
new file mode 100644
index 00000000..983d2a15
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/print.tcl
@@ -0,0 +1,342 @@
+
+################################################################################
+# Print Panel Functions.
+################################################################################
+
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args \
+{
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } \
+{
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ send titleButton setSensitive true
+ send colorbarButton setSensitive true
+ send bordersButton setSensitive true
+ send titleLabel setSensitive true
+ send titleString setSensitive true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ send titleButton setSensitive false
+ send colorbarButton setSensitive false
+ send bordersButton setSensitive false
+ send titleLabel setSensitive false
+ send titleString setSensitive false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ } elseif { $val == "B5" } {
+ send epsB5Button set on true
+ set page_size epsB5Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+ dotitle { if { $val == "True" } {
+ send titleButton set on true
+ } elseif { $val == "False" } {
+ send titleButton set on false
+ }
+ }
+ doborders { if { $val == "True" } {
+ send bordersButton set on true
+ } elseif { $val == "False" } {
+ send bordersButton set on false
+ }
+ }
+ docolorbar { if { $val == "True" } {
+ send colorbarButton set on true
+ } elseif { $val == "False" } {
+ send colorbarButton set on false
+ }
+ }
+ title { send titleString set string $val
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button epsB5Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+ titleButton bordersButton colorbarButton
+}
+
+proc prPrintCommand { widget cbtype args } \
+{
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prTitleString { widget cbtype args } \
+{
+ send client setPrintOption title $args
+}; send titleString addCallback prTitleString
+
+proc prOptionToggle { widget cbtype args } \
+{
+ global imageScale
+
+ # Handle the image scale widgets first.
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+ epsB5Button { send client setPrintOption papersize B5 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } \
+{
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+
+ titleButton { send client setPrintOption dotitle $val }
+ bordersButton { send client setPrintOption doborders $val }
+ colorbarButton { send client setPrintOption docolorbar $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set lprList {}
+
+proc psSetPrintList {param old new} \
+{
+ global lprList
+ set lprList $new
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc lprResize args \
+{
+ global lprList
+ send printlist setList $lprList resize
+ send printlist highlight 0
+}; send printlist addEventHandler lprResize ResizeRedirectMask
+
+proc psSelectPrint {widget cbtype selections indices} \
+{
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc Print args \
+{
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ set val [ send titleString get string ]
+ send client setPrintOption title $val
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } \
+{
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/resources.res b/vendor/x11iraf/ximtool/gui.bak/resources.res
new file mode 100644
index 00000000..201e2e16
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/resources.res
@@ -0,0 +1,26 @@
+
+set Resources(gui) { \
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *showToolBar: False
+ *showPanelBar: False
+ *warnings: True
+ *centerBoxSize: 5
+ *peakCentroid: True
+}
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/rulers.tcl b/vendor/x11iraf/ximtool/gui.bak/rulers.tcl
new file mode 100644
index 00000000..98f30a0f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/rulers.tcl
@@ -0,0 +1,524 @@
+
+
+################################################################################
+# RULER MARKERS
+################################################################################
+
+set rulerX 0 ;# ruler start in screen coords
+set rulerY 0
+set rulerPts { {0 0} {0 0} {0 0} } ;# ruler vertices
+set rulerList { } ;# ruler list
+
+set rulerSticky { } ;# list of sticky rulers
+set isSticky "Sticky" ;# menu label
+
+set rulerWCS 0 ;# use WCS coords
+set rulerXWCS 0 ;# ruler start in WCS units
+set rulerYWCS 0
+set rulerXWCS2 0 ;# ruler end in WCS units
+set rulerYWCS2 0
+set rulerFmt pixel ;# ruler label format
+
+
+# Translations when pointer is inside marker.
+set rulerTranslations { \
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: call(deleteNamedRuler,NAME,$x,$y)
+ <Key>Delete: call(deleteNamedRuler,NAME,$x,$y)
+ <KeyPress>: m_input()
+ <Btn3Down>: call(setRulerMenu) popup(rulerMenu)
+ <Btn3Up>: popdown(rulerMenu)
+!Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(resizeRuler,$x,$y,0)
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y)
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+
+
+# Popup menu in effect when inside marker.
+set rulerMenuDescription {
+ { "Ruler" f.title }
+ { f.dblline }
+ { "$isSticky" f.exec {
+ toggleSticky $ruler
+ } }
+ { f.line }
+ { "Units" f.menu rulerUnits }
+ { "Color" f.menu rulerColor }
+ { f.line }
+ { "Draw into Frame" f.exec {
+ writeRuler $ruler
+ } sensitive False }
+ { f.line }
+ { "Destroy" f.exec {
+ scan $ruler "ruler%d" num
+ deleteNamedRuler $num x y
+ } }
+} ; createMenu rulerMenu imagewin $rulerMenuDescription
+
+set rulerUnitsDescription {
+ { Units f.title }
+ { f.dblline }
+ { "Pixels" f.exec { setUnits $ruler pixel } }
+ { "Arc Seconds" f.exec { setUnits $ruler arcsec
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Arc Minutes" f.exec { setUnits $ruler arcmin
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Degrees" f.exec { setUnits $ruler degrees
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+} ; createMenu rulerUnits rulerMenu $rulerUnitsDescription
+
+set rulerColorDescription {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "r_setColor $ruler black yellow"
+ bitmap solid foreground black }
+ { "" f.exec "r_setColor $ruler white black"
+ bitmap solid foreground white }
+ { "" f.exec "r_setColor $ruler red yellow"
+ bitmap solid foreground red }
+ { "" f.exec "r_setColor $ruler green black"
+ bitmap solid foreground green }
+ { "" f.exec "r_setColor $ruler blue white"
+ bitmap solid foreground blue }
+ { "" f.exec "r_setColor $ruler magenta black"
+ bitmap solid foreground magenta }
+ { "" f.exec "r_setColor $ruler cyan black"
+ bitmap solid foreground cyan }
+ { "" f.exec "r_setColor $ruler yellow black"
+ bitmap solid foreground yellow }
+} ; createMenu rulerColor rulerMenu $rulerColorDescription
+
+
+proc makeRuler {parent x y} \
+{
+ global rulerTranslations ruleno rulerWCS rulerXWCS rulerYWCS
+ global rulerPts rulerX rulerY rulerList
+ global isSticky rulerMenuDescription rulerUnitsDescription
+ global coord coordLab
+
+
+ incr ruleno ; set ruler ruler$ruleno
+
+ # Substitute so the marker translation will delete the marker
+ # by it's number rather than the default parent widget name.
+ regsub -all NAME $rulerTranslations $ruleno translations
+
+ # Create the polygon for the marker.
+ send $parent createMarker $ruler \
+ type polygon\
+ createMode noninteractive\
+ translations $translations\
+ lineColor yellow\
+ fill False\
+ highlightWidth 1\
+ highlightColor yellow\
+ knotSize 0\
+ activated True\
+ visible False\
+ sensitive True\
+ x $x\
+ y $y
+
+ # Define a callback so we can identify the ruler.
+ send $ruler addCallback selectRuler focusIn focusOut
+
+ # Create the text markers for the labels.
+ send $parent set markerTextFont 6x9
+ makeLabelMarker $parent rulerXlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerYlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerHlab$ruleno 8ch 1ch
+ send $parent set markerTextFont 6x13
+
+ set rulerX $x ;# save the reference point
+ set rulerY $y
+
+ set ref [ list $x $y ] ;# initialize the polygon
+ set rx [ list [expr "$x +1"] $y ]
+ set ry [ list $x [expr "$y +1"] ]
+ set rulerPts [list $ref $rx $ry ]
+
+ send $ruler setVertices $rulerPts ;# set attributes
+ send $ruler set visible True"
+ send $ruler setAttribute autoRedraw True
+
+ # See whether we have a WCS to use.
+ set rulerWCS 0
+ set rulerXWCS 0
+ set rulerYWCS 0
+ for {set num 1} {$num <= 4 && $rulerWCS == 0} {incr num} {
+ if { [info exists coordLab(wcs$num)] } {
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+ if {$xl==" ra" || $xl=="elon" || $xl=="glon" || $xl=="slon"} {
+ set rulerWCS $num
+ set rulerXWCS [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set rulerYWCS [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ }
+ }
+ }
+
+ # Edit the menus.
+ set isSticky "Sticky"
+ editMenu rulerMenu imagewin $rulerMenuDescription
+ editMenu rulerUnits imagewin $rulerUnitsDescription
+
+
+ lappend rulerList $ruleno
+}
+
+proc wcs2log { val label fmt} \
+{
+ set newval $val
+ if {$fmt == "sexigesimal" || $fmt == "default"} {
+ scan $val "%d:%d:%f" h m s
+ set newval [expr "double($h) + double($m) / 60.0 + double($s) / 3600.0"]
+ if {$label == " ra"} {
+ set newval [expr "double($newval * 15.0)"]
+ }
+ }
+ return [expr "double($newval)" ]
+}
+
+
+proc resizeRuler {x y redraw} \
+{
+ global rulerPts rulerX rulerY ruleno coord coordLab
+ global rulerWCS rulerXWCS rulerYWCS rulerFmt
+ global rulerXWCS2 rulerYWCS2
+
+
+ # Track the mouse.
+ set ref [ list $rulerX $rulerY ]
+ set rx [ list $x $rulerY ]
+ set ry [ list $x $y ]
+ set rulerPts [list $ref $rx $ry ]
+
+ # Compute the distances.
+ if {$rulerWCS > 0} {
+ set num $rulerWCS
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+
+ # Save the cursor coords in WCS so we can convert labels.
+ if {$redraw} {
+ set nx $rulerXWCS2
+ set ny $rulerYWCS2
+ } else {
+ set nx [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set ny [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ set rulerXWCS2 $nx
+ set rulerYWCS2 $ny
+ }
+ }
+
+ if {$rulerFmt == "pixel"} {
+ set xdist [ expr "abs($x - $rulerX)" ]
+ set ydist [ expr "abs($y - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ } else {
+ set xdist [ expr "abs($nx - $rulerXWCS)" ]
+ set ydist [ expr "abs($ny - $rulerYWCS)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ }
+
+ # Redraw the polygon.
+ send ruler$ruleno setVertices $rulerPts
+
+ # Label the distances.
+ setXRulerLabel $x $y $xdist
+ setYRulerLabel $x $y $ydist
+ setHRulerLabel $x $y $hdist
+}
+
+# Create a label marker for the ruler.
+proc makeLabelMarker { parent name width height } \
+{
+ send $parent createMarker $name \
+ type text \
+ createMode noninteractive \
+ width $width \
+ height $height \
+ lineWidth 0 \
+ imageText true \
+ textBgColor yellow \
+ textColor black \
+ activated true \
+ visible false
+}
+
+proc setXRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpXscale rulerFmt
+
+ send rulerXlab$ruleno set visible False
+
+ if {[expr "abs($cx - $rulerX)"] > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerXlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY - 14"]
+ } else {
+ set yp [expr "$rulerY + 2"]
+ }
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - 10"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - 10"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerXlab$ruleno "setAttributes x $xp y $yp"
+ send rulerXlab$ruleno "set text \{$text\}; redraw erase"
+
+ send rulerXlab$ruleno set visible True
+ }
+}
+
+proc setYRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale rulerFmt
+
+ send rulerYlab$ruleno set visible False
+
+ if {[expr "abs($cy - $rulerY)"] > 20} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpYscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerYlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$cx + 2"]
+ } else {
+ set xp [expr "$cx - $len * 6 - 5"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerYlab$ruleno "setAttributes x $xp y $yp"
+ send rulerYlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerYlab$ruleno set visible True
+ }
+}
+
+proc setHRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale cpXscale rulerFmt
+
+ send rulerHlab$ruleno set visible False
+
+ set xdist [ expr "abs($cx - $rulerX)" ]
+ set ydist [ expr "abs($cy - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+
+ if {$hdist > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerHlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - $len * 6"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - $len * 3"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerHlab$ruleno "setAttributes x $xp y $yp"
+ send rulerHlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerHlab$ruleno set visible True
+ } else {
+ send rulerHlab$ruleno set visible False
+ }
+}
+
+
+# Callback executed when a marker gets or loses the focus.
+proc selectRuler {active_ruler event event_data} \
+{
+ global ruler
+ switch $event {
+ focusIn { set ruler $active_ruler }
+ focusOut { }
+ }
+}
+
+# Reset the ruler format type.
+proc setUnits { ruler units } \
+{
+ global rulerFmt rulerX rulerY
+
+ send $ruler getVertices pts
+ set rulerX [lindex [lindex [lindex $pts 0] 0] 0]
+ set rulerY [lindex [lindex [lindex $pts 0] 0] 1]
+ set cx [lindex [lindex [lindex $pts 0] 1] 0] ; incr cx -1
+ set cy [lindex [lindex [lindex $pts 0] 2] 1] ; incr cy -1
+
+ set rulerFmt $units
+ resizeRuler $cx $cy 1
+}
+
+# Menu option toggle callbacks.
+proc toggleSticky { ruler } \
+{
+ global isSticky rulerSticky rulerMenuDescription
+
+ set index [ lsearch $rulerSticky $ruler]
+ if { $index >= 0 } {
+ # Remove it from the list.
+ set rulerSticky [lreplace $rulerSticky $index $index]
+ set isSticky "Sticky"
+ } else {
+ # Add it to the list.
+ lappend rulerSticky $ruler
+ set isSticky "UnSticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+proc setRulerMenu args \
+{
+ global ruler isSticky rulerSticky rulerMenuDescription
+
+ if { [lsearch $rulerSticky $ruler] >= 0 } {
+ set isSticky "UnSticky"
+ } else {
+ set isSticky "Sticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+
+# Draw the ruler to the frame buffer as a graphic.
+proc writeRuler { ruler } \
+{
+}
+
+# Change the color of the ruler.
+proc r_setColor {ruler bgcolor fgcolor} {
+
+ # Recolor the polygon.
+ send $ruler \
+ "markpos; set lineColor $bgcolor; set highlightColor $bgcolor; redraw"
+
+ # Recolor the labels.
+ scan $ruler "ruler%d" num
+ send rulerXlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerYlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerHlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+}
+
+
+# Delete the current ruler, called when we have a Btn1Up on the current ruler.
+proc deleteRuler {x y} { global ruleno ; deleteNamedRuler $ruleno $x $y }
+
+# Delete all rulers on the screen, usually called when the view changes.
+# We preserve the rulers marked as 'sticky'.
+proc deleteAllRulers args \
+{
+ global rulerList rulerSticky
+
+ foreach r $rulerList {
+ # Delete the ruler if it's not in the sticky list.
+ if { [lsearch $rulerSticky ruler$r] == -1 } {
+ deleteNamedRuler $r x y
+ }
+ }
+}
+
+# Delete a particular ruler, usually called from the translation table on
+# the marker itself.
+proc deleteNamedRuler {name x y} \
+{
+ global rulerList
+
+ catch {
+ send ruler$name destroy
+ send rulerXlab$name destroy
+ send rulerYlab$name destroy
+ send rulerHlab$name destroy
+ }
+
+ # Remove the ruler from the list.
+ set index [lsearch $rulerList $name]
+ set rulerList [lreplace $rulerList $index $index]
+}
+
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/save.res b/vendor/x11iraf/ximtool/gui.bak/save.res
new file mode 100644
index 00000000..81c45ace
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/save.res
@@ -0,0 +1,143 @@
+
+set Resources(save_panel) { \
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel*TextToggle.alignment: left
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ saveNameGroup < +inf * > \
+ saveOptGroup < +inf -inf * > -3 \
+ saveCmdGroup < +inf * > \
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 50
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 1
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout.layout: vertical { \
+ 2 \
+ horizontal { 5 saveLabel 5 fnameFrame < +inf -inf * > 5 } \
+ 2 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 140
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { 5 < -5 > fmtGroup < +inf * +inf > -1 } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -inff * +inff -inff > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { 5 < -5 > saveColorGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 140 120
+ *saveColorGroup.outerOffset: 7
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 110
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { 5 svGrayButton 2 svPseudoButton 2 svRGBButton -1 } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svRGBButton.label: RGB
+
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 1
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 7
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { 5 fitsButton 2 gifButton 2 tiffButton 2 rawButton 1 } \
+ 2 < -2 > \
+ vertical { 5 epsButton 2 rasButton 2 x11Button 2 jpegButton 1 } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *epsButton.label: EPS
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: False
+ *x11Button.sensitive: False
+ *rawButton.sensitive: False
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 50
+ *saveCmdLayout*Command.internalWidth: 12
+ *saveCmdLayout.layout: horizontal { \
+ 2 \
+ okaySave 1 < +inf -1 > saveStatus < +inf -inf * > \
+ 2 \
+ }
+ *okaySave.label: Save
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/save.tcl b/vendor/x11iraf/ximtool/gui.bak/save.tcl
new file mode 100644
index 00000000..36706d31
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/save.tcl
@@ -0,0 +1,156 @@
+
+################################################################################
+# Save panel functions.
+################################################################################
+
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button epsButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } \
+{
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ epsButton { send client setSaveOption format eps }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } \
+{
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } \
+{
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ eps { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format epsButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+
+proc Save args \
+{
+ global panel_up
+
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+} ; send okaySave addCallback Save
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/tcl.obj b/vendor/x11iraf/ximtool/gui.bak/tcl.obj
new file mode 100644
index 00000000..3bea2d87
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/tcl.obj
@@ -0,0 +1,13 @@
+
+set Objects(tcl_panel) { \
+ toplevel TopLevelShell tcl_panel\
+ tcl_panel Layout tclLayout\
+ tclLayout Group tclCmdGroup\
+ tclCmdGroup Layout tclCmd\
+ tclCmd Command tclClear\
+ tclCmd Command tclExecute\
+ tclCmd Command tclDismiss\
+ tclLayout Frame tclFrame\
+ tclFrame AsciiText tclEntry\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/tcl.res b/vendor/x11iraf/ximtool/gui.bak/tcl.res
new file mode 100644
index 00000000..6c250bc7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/tcl.res
@@ -0,0 +1,44 @@
+set Resources(tcl_panel) { \
+
+ !--------------------------------
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tcl_panel.width: 550
+ *tcl_panel.height: 180
+ *tcl_panel.title: Debug TCL Command Entry
+ *tclLayout*borderWidth: 0
+ *tclLayout*Frame.frameType: sunken
+ *tclLayout*Frame.frameWidth: 2
+ *tclLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ tclCmdGroup < +inf -inf * > \
+ tclFrame < +inf -inf * +inf -inf> \
+ 0 < +0 -0 > \
+ }
+ *tclEntry*foreground: black
+ *tclEntry*editType: edit
+ *tclEntry*type: string
+ *tclEntry*font: 7x13
+ *tclEntry*scrollVertical: Always
+ *tclEntry*scrollHorizontal: whenNeeded
+
+ *tclCmdGroup.label:
+ *tclCmdGroup.outerOffset: 0
+ *tclCmdGroup.innerOffset: 0
+ *tclCmd.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ tclClear 3 \
+ tclExecute \
+ 10 < +inf -10> \
+ tclDismiss \
+ 5 \
+ } \
+ 5 \
+ }
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclDismiss.label: Dismiss
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/tcl.tcl b/vendor/x11iraf/ximtool/gui.bak/tcl.tcl
new file mode 100644
index 00000000..44d5e04e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/tcl.tcl
@@ -0,0 +1,36 @@
+
+################################################
+# Define some TCL debug procedures.
+################################################
+
+set tcl_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { send tcl_panel unmap }
+proc tclOpen args \
+{
+ global tcl_up
+ send tcl_panel map
+ set tcl_up 1
+}
+
+proc tclPanel args \
+{
+ global tcl_up
+ if {$tcl_up} {
+ send tcl_panel unmap
+ set tcl_up 0
+ } else {
+ send tcl_panel map
+ set tcl_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclDismiss addCallback tclClose
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/tile.res b/vendor/x11iraf/ximtool/gui.bak/tile.res
new file mode 100644
index 00000000..29390013
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/tile.res
@@ -0,0 +1,149 @@
+
+set Resources(tile_panel) { \
+
+ *tileOpts.frameType: chiseled
+ *tileOpts.frameWidth: 2
+ *tileOpts.outerOffset: 5
+ *tileOpts.innerOffset: 7
+ *tileOpts*shrinkToFit: True
+ *tileOpts*borderWidth: 0
+
+ *toptLayout.layout: vertical { \
+ horizontal { -6 tFramesG < +inf -inf * > -6 } \
+ horizontal { \
+ -1 \
+ horizontal { -6 tileMode < * +inf -inf > -6 } \
+ vertical { \
+ horizontal { -3 userOrientG < +inf -inf * > -3 } \
+ horizontal { -3 fillStyle < +inf -inf * > -3 } \
+ horizontal { -3 tileLabel < +inf -inf * > -3 } \
+ -7 \
+ horizontal { -3 geomFrame < +inf -inf * > -3 } \
+ } \
+ -1 \
+ } \
+ -4 \
+ }
+ *tileMode.label: Tile Mode
+ *tileMode.outerOffset: 7
+ *tileMode.innerOffset: 5
+ *tileMode*location: 0 0 150 20
+ *tileMode*TextToggle.outerOffset: 2
+ *tileMode*TextToggle.innerOffset: 1
+ *tileMode*TextToggle.frameWidth: 0
+ *tileMode*TextToggle.leftMargin: 10
+ *tileMode*TextToggle.rightMargin: 20
+ *tileMode*TextToggle.onIcon: diamond1s
+ *tileMode*TextToggle.offIcon: diamond0s
+ *tileMode*TextToggle.highlightColor: yellow
+
+ *tileDisabled.label: Disabled
+ *tileManual.label: Manual
+ *tileBest.label: Best
+ *tileSquare.label: Square
+ *tileHorizontal.label: Horizontal
+ *tileVertical.label: Vertical
+ *tileRow.label: One Row
+ *tileCol.label: One Column
+
+ *fillStyle.label: Fill Style
+ *fillStyle.location: 0 0 160 30
+ *fillStyle.outerOffset: 7
+ *fillStyle.innerOffset: 5
+ *fillStyle.rows: 1
+ *fillStyle*selectionStyle: multi
+ *fillStyle*outerOffset: 0
+ *fillStyle*innerOffset: 1
+ *fillStyle*leftMargin: 7
+ *fillStyle*onIcon: square1s
+ *fillStyle*offIcon: square0s
+ *fillStyle*highlightColor: yellow
+ *fillStyle.TextToggle.frameWidth: 0
+ *fillStyle.TextToggle.location: 0 0 85 23
+ *byCols.label: Fill by Columns
+ *bottomUp.label: Fill from Bottom
+
+ *tileLabel.label: Tile Labels
+ *tileLabel.location: 0 0 175 30
+ *tileLabel.outerOffset: 7
+ *tileLabel.innerOffset: 5
+ *tileLabel.rows: 1
+ *tileLabel*selection: -1
+ *tileLabel*outerOffset: 0
+ *tileLabel*innerOffset: 1
+ *tileLabel*leftMargin: 7
+ *tileLabel*onIcon: square1s
+ *tileLabel*offIcon: square0s
+ *tileLabel*highlightColor: yellow
+ *tileLabel.TextToggle.frameWidth: 0
+ *tileLabel.TextToggle.location: 0 0 85 23
+ *labelFrames.label: Frameno
+ *labelImname.label: Img Name
+ *labelTitles.label: Img Title
+
+ *geomFrame.frameWidth: 0
+ *geomFrame.frameType: sunken
+ *geomFrame.outerOffset: 7
+ *geomFrame.innerOffset: 4
+ *tileGeometry.width: 220
+ *tileGeometry.height; 37
+ *tileGeometry.background: gray77
+ *tileGeometry.font: 7x13bold
+ *tileGeometry.label: Tile Geometry: 1 x 2
+
+ *userOrientG.label: Manual Configuration
+ *userOrientG.height: 90
+ *userOrientG.width: 220
+ *userOrientG.outerOffset: 7
+ *userOrientG.innerOffset: 5
+ *userOrientG.shrinkToFit: True
+ *userOrientG*Frame.frameWidth: 1
+ *userOrientG*Frame.frameType: sunken
+ *userOrientG*Text.height: 21
+ *userOrientG*Text*editType: edit
+ *userOrientL.borderWidth: 0
+ *userOrientL.layout: vertical { \
+ 1 \
+ horizontal { 18 nrowLab < +50% -inf * > nrFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { ncolLab < +50% -inf * > ncFrame < +inf -inf * > 5 } \
+ }
+ *nrowLab.justify: right
+ *ncolLab.justify: right
+
+ *nrLayout.layout: horizontal {nrdecrease nrtext < +inf -inf * > nrincrease}
+ *nrdecrease.direction: left
+ *nrincrease.direction: right
+ *nrowLab.label: Tile Rows:
+ *nrtext.background: gray68
+ *nrtext.justify: center
+ *nrtext.font: 7x13bold
+ *nrtext.label: 1
+
+ *ncLayout.layout: horizontal {ncdecrease nctext < +inf -inf * > ncincrease}
+ *ncdecrease.direction: left
+ *ncincrease.direction: right
+ *ncolLab.label: Tile Columns:
+ *nctext.background: gray68
+ *nctext.justify: center
+ *nctext.font: 7x13bold
+ *nctext.label: 2
+
+ *tFramesG.label: Tile Frames
+ *tFramesG.outerOffset: 7
+ *tFramesG.innerOffset: 7
+ *tFrames.borderWidth: 0
+ *tFrames*Toggle.height: 17
+ *tFrames.layout: horizontal { \
+ tAll \
+ 2 \
+ tFrame1 tFrame2 tFrame3 tFrame4 tFrame5 \
+ tFrame6 tFrame7 tFrame8 tFrame9 tFrame10 \
+ tFrame11 tFrame12 tFrame13 tFrame14 tFrame15 tFrame16 \
+ 2 \
+ tNone \
+ }
+ *tAll.label: All\
+ *tNone.label: None
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/tile.tcl b/vendor/x11iraf/ximtool/gui.bak/tile.tcl
new file mode 100644
index 00000000..279475ab
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/tile.tcl
@@ -0,0 +1,214 @@
+
+################################################################################
+# TILE GEOMETRY
+################################################################################
+
+set tileSel 2
+set tileOpt 0
+set tileNcols 2
+set tileNrows 1
+set tile_frames {}
+
+proc selectTileOrientation { widget type select args } \
+{
+ global tileSel tileOpt
+
+ set w { nrowLab ncolLab nrdecrease nrincrease ncdecrease ncincrease }
+ if {$select == "Manual"} {
+ foreach p $w { send $p setSensitive True }
+ } elseif {$select != "none"} {
+ foreach p $w { send $p setSensitive False }
+ }
+
+ set w { byCols bottomUp labelFrames labelImname labelTitles }
+ if {$select == "Disabled"} {
+ foreach p $w { send $p setSensitive False }
+ } else {
+ foreach p $w { send $p setSensitive True }
+ }
+
+ switch $select {
+ Disabled { set tileSel 0 }
+ Manual { set tileSel 1
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+ set select [format "%dx%d" $nx $ny]
+ }
+ Best { set tileSel 2 }
+ Square { set tileSel 3 }
+ Horizontal { set tileSel 4 }
+ Vertical { set tileSel 5 }
+ "One Row" { set tileSel 6 }
+ "One Column" { set tileSel 7 }
+ none { send tileMode set selection $tileSel ; return }
+ }
+
+ # Reset the button in case we're called directly from elsewhere.
+ send tileMode set selection $tileSel
+
+ # Send the option to the client.
+ if {$tileSel > 0} {
+ setTileFrames
+ send client setOption tileFrames "True"
+ set tileOpt $tileSel
+ } else {
+ send client setOption tileFrames "False"
+ }
+
+} ; send tileMode addCallback selectTileOrientation
+
+proc tileSelToLabel { selection args } \
+{
+ switch $selection {
+ 0 { return "Disabled" }
+ 1 { return "Manual" }
+ 2 { return "Best" }
+ 3 { return "Square" }
+ 4 { return "Horizontal" }
+ 5 { return "Vertical" }
+ 6 { return "One Row" }
+ 7 { return "One Column" }
+ }
+ return "Best"
+}
+
+# Callback for the fill style options.
+proc selectFillStyle { widget type state args } \
+{
+ if {$state} { set not False } else { set not True }
+
+ switch $widget {
+ byCols { send client setOption tileByRows $not }
+ bottomUp { send client setOption tileTopDown $not }
+ }
+} ; foreach w {byCols bottomUp} { send $w addCallback selectFillStyle }
+
+# Callback for the tile labelling options.
+proc selectTileLabels { widget type state args } \
+{
+ if {$state} {
+ switch $widget {
+ labelFrames { send client setOption tileLabels 1 }
+ labelImname { send client setOption tileLabels 2 }
+ labelTitles { send client setOption tileLabels 3 }
+ }
+ } else {
+ send client setOption tileLabels 0
+ }
+ send $widget set on $state
+}
+foreach w {labelFrames labelImname labelTitles} {
+ send $w addCallback selectTileLabels
+}
+
+# Callback for the Tile Frame selection toggles.
+proc setTileFrames args \
+{
+ global tile_frames tileSel tileNcols tileNrows
+
+ # No-op if tiling isn't enabled.
+ if {$tileSel == 0} \
+ return
+
+ # Get the new tile frames list.
+ set tile_frames {}
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get state]} {
+ lappend tile_frames $i
+ }
+ }
+
+ # Reset the geometry.
+ set geom [format "%dx%d" $tileNcols $tileNrows]
+ switch $tileSel {
+ 1 { send client setOption tileGeom $geom \{ $tile_frames \} }
+ 2 { send client setOption tileGeom Best \{ $tile_frames \} }
+ 3 { send client setOption tileGeom Square \{ $tile_frames \} }
+ 4 { send client setOption tileGeom Horizontal \{ $tile_frames \} }
+ 5 { send client setOption tileGeom Vertical \{ $tile_frames \} }
+ 6 { send client setOption tileGeom Row \{ $tile_frames \} }
+ 7 { send client setOption tileGeom Column \{ $tile_frames \} }
+ }
+}; for {set i 1} {$i <= 16} {incr i} {send tFrame$i addCallback setTileFrames}
+
+proc setAllTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state True
+ }
+ }
+ setTileFrames
+} ; send tAll addCallback setAllTileFrames
+
+proc setNoTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state False
+ }
+ }
+ setTileFrames
+} ; send tNone addCallback setNoTileFrames
+
+proc tileOptions { param old new } \
+{
+ global tileNcols tileNrows
+
+ set tileNcols [lindex $new 0]
+ set tileNrows [lindex $new 1]
+
+ # Set the geometry.
+ send nctext set label $tileNcols
+ send nrtext set label $tileNrows
+ send tileGeometry set label [format \
+ "Tile Geometry: %-2dx%2d" $tileNcols $tileNrows]
+
+} ; send tileOptions addCallback tileOptions
+
+
+proc tileSetRows { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "nrdecrease" && [expr ($ny-1)] > 0} {
+ incr ny -1
+ } elseif {$widget == "nrincrease" && [expr ($ny+1)] <= $nframes} {
+ incr ny 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { nrdecrease nrincrease } { send $w addCallback tileSetRows }
+
+proc tileSetCols { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "ncdecrease" && [expr ($nx-1)] > 0} {
+ incr nx -1
+ } elseif {$widget == "ncincrease" && [expr ($nx+1)] <= $nframes} {
+ incr nx 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { ncdecrease ncincrease } { send $w addCallback tileSetCols }
+
+
+# Initialize the frame tiling.
+setAllTileFrames
+selectTileOrientation junk junk Disabled
+selectFillStyle byRows junk True
+selectFillStyle topDown junk True
+selectTileLabels labelImname junk False
diff --git a/vendor/x11iraf/ximtool/gui.bak/toolbars.tcl b/vendor/x11iraf/ximtool/gui.bak/toolbars.tcl
new file mode 100644
index 00000000..626b93e3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/toolbars.tcl
@@ -0,0 +1,555 @@
+
+
+################################################################################
+#
+# XIMTOOL-ALT -- Procedures and declarations for the ALT GUI.
+#
+################################################################################
+
+# Creat the bitmaps needed for the alternate optional bars.
+
+createBitmap tools 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf,
+ 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap control 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xe3, 0xc7, 0xe3, 0xcf, 0x33, 0xcc,
+ 0x33, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x33, 0xcc, 0xf3, 0xcf,
+ 0xe3, 0xc7, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap tile 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap compass 16 16 {
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0x00, 0x07,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xfc, 0x07,
+ 0xfc, 0x07, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap plus 11 11 {
+ 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00};
+
+createBitmap minus 11 11 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap disk 16 16 {
+ 0xfe,0x1f,0x11,0x25,0x11,0x45,0x11,0x44,0xf1,0x47,0x01,0x40,0x01,0x40,0xf9,
+ 0x4f,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0xff,0x7f,
+ 0x00,0x00};
+
+createBitmap printer 32 16 {
+ 0x00, 0xfe, 0x07, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x12, 0x00,
+ 0x00, 0x02, 0x22, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x02, 0x20, 0x00,
+ 0x00, 0x02, 0x20, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x10, 0x03, 0xe0, 0x06,
+ 0x08, 0xff, 0x7f, 0x09, 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f,
+ 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x08,
+ 0xf8, 0xff, 0xff, 0x0f};
+
+
+send tbBlinkDec "set bitmap larrow" ;# Assign the bitmaps to the buttons.
+send tbBlinkInc "set bitmap rarrow"
+send tbZoomIn "set bitmap plus"
+send tbZoomOut "set bitmap minus"
+send tbTile "set bitmap tile"
+send tbCompass "set bitmap compass; addCallback toggleCompass"
+#send helpButton "set bitmap qmark; addCallback Help"
+send mXflipButton "set bitmap xflip; addCallback xflip"
+send mYflipButton "set bitmap yflip; addCallback yflip"
+send mNextButton "set bitmap rarrow; addCallback nextFrame"
+send mPrevButton "set bitmap larrow; addCallback prevFrame"
+
+
+# toolBox -- Toggle the toolbox and panelbar display.
+
+set toolbox_up [ true $showToolBar ]
+set panelbar_up [ true $showPanelBar ]
+
+proc toolBoxToggle args \
+{
+ global toolbox_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$toolbox_up} {
+ send toolbar set height 0
+ send toolButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w; set height $nh"
+ set toolbox_up 0
+ send mXflipButton map
+ send mYflipButton map
+ send mPrevButton map
+ send mFrameButton map
+ send mNextButton map
+ } else {
+ send toolbar set height 25
+ send toolButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set toolbox_up 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+ }
+}
+
+proc panelBarToggle args \
+{
+ global panelbar_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$panelbar_up} {
+ send panelbar set height 0
+ send panelButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 0
+ } else {
+ send panelbar set height 25
+ send panelButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 1
+ }
+}
+
+
+
+# Initialize the bars to be displayed if the resource was set.
+
+send toolButton "set bitmap tools; addCallback toolBoxToggle"
+if { ! [ true $showToolBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send toolbar set height 0
+ send toolButton set state 0
+} else {
+ send toolButton set state 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+}
+
+send panelButton "deleteCallback panel"
+send panelButton "set bitmap control; addCallback panelBarToggle"
+
+if { ! [ true $showPanelBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send panelbar set height 0
+ send panelButton set state 0
+} else {
+ send panelButton set state 1
+}
+
+
+##############################################
+# Panelbar callbacks.
+##############################################
+
+send pbQuit addCallback Quit
+send helpClose addCallback "send helpButton set state 0"
+
+
+# Control Panel.
+#------------------------------------------------------
+proc pbToggleControl {name element op} \
+{
+ upvar $name panel_up
+ send pbDisplayP set state [expr !($panel_up)]
+} ; #trace variable panel_up w pbToggleControl
+
+proc pbResetPanel {param old new} \
+{
+ global displayPanner displayMagnifier displayCoords
+ switch $new {
+ done { send pbPanM set state [true $displayPanner]
+ send pbMagM set state [true $displayMagnifier]
+ send pbWcsM set state [true $displayCoords]
+ }
+ }
+} ; send initialize addCallback pbResetPanel
+
+set WidgetToTab(pbDisplayP) display_panel
+set WidgetToTab(pbInfoP) info_panel
+set WidgetToTab(pbLoadP) load_panel
+set WidgetToTab(pbPrintP) print_panel
+set WidgetToTab(pbSaveP) save_panel
+set WidgetToTab(pbTileP) tile_panel
+set WidgetToTab(pbCoordP) wcs_panel
+
+set TabToWidget(display_panel) pbDisplayP
+set TabToWidget(print_panel) pbPrintP
+set TabToWidget(load_panel) pbLoadP
+set TabToWidget(save_panel) pbSaveP
+set TabToWidget(info_panel) pbInfoP
+set TabToWidget(tile_panel) pbTileP
+set TabToWidget(wcs_panel) pbCoordP
+
+set pbTabTop "pbDisplayP"
+
+proc pbPanelDismiss args \
+{
+ global tabTop TabToWidget WidgetToTab
+ set panel $TabToWidget($tabTop)
+ send $panel set state 0
+} ; send panelClose addCallback pbPanelDismiss
+
+proc pbResizeCB {widget event a b c d e args} \
+{
+ global pbTabTop TabToWidget WidgetToTab
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ send $pbTabTop set state 0
+ set new $TabToWidget($widget)
+ send $new set state 1
+ set pbTabTop $new
+ }
+} ; foreach w $cpTabs {send $w addEventHandler pbResizeCB exposureMask}
+
+proc pbPanelTabs { widget type state args } \
+{
+ global pbTabTop tabTop panel_up
+ global TabToWidget WidgetToTab
+
+ set panel $WidgetToTab($widget)
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $widget set state 0
+ set panel_up 0
+ return
+ }
+
+ send $TabToWidget($tabTop) set state 0
+ set tabTop $panel
+ set pbTabTop $TabToWidget($panel)
+ send panelTabs setTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send $widget set state 1
+ send panelShell map
+ set panel_up 1
+ }
+}
+foreach w { pbDisplayP pbInfoP pbLoadP pbPrintP pbSaveP pbTileP pbCoordP } {
+ send $w addCallback pbPanelTabs
+}
+
+
+
+# Load Panel. (Really need to clean this up.)
+#------------------------------------------------------
+proc pbDoLoadOptions { param old new } \
+{
+ set val [ join [lrange $new 1 end] " " ]
+ switch [lindex $new 0] {
+ newfile { send fnameText set string $val }
+ }
+} ; send loadOptions addCallback pbDoLoadOptions
+
+proc pbFileLoad { widget mode fname args } \
+{
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ send imagewin setCursorType idle
+} ; send fnameText addCallback pbFileLoad
+
+proc pbflSelectPrint {widget cbtype selections args} \
+{
+ foreach selection $selections {
+ ;
+ }
+}; #send imageList addCallback pbflSelectPrint
+
+proc pbFileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname != ""} {
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ }
+} ; send filesLoadButton addCallback pbFileLoadB
+
+
+# Panner Marker.
+#------------------------------------------------------
+proc pbTracePanner {name element op} \
+{
+ global last_compass
+
+ catch {
+ upvar $name panner_enable
+ send pbPanM set state $panner_enable
+
+ if { $panner_enable } {
+ send tbCompass "setSensitive True ; set state $last_compass"
+ drawCompass
+ } else {
+ send tbCompass "setSensitive False ; set state False"
+ eraseCompass
+ }
+ }
+} ; trace variable panner_enable w pbTracePanner
+
+proc pannerPanel args \
+{
+ global panner_enable displayPanner
+
+ setPanner [expr !$panner_enable]
+ send pannerButton set on [expr $panner_enable]
+}; send pbPanM addCallback pannerPanel
+
+
+# Magnifier Marker.
+#------------------------------------------------------
+proc pbTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send pbMagM set state $magnifier_enable
+} ; trace variable magnifier_enable w pbTraceMagnifier
+
+proc magnifierPanel args \
+{
+ global magnifier_enable displayMagnifier
+ setMagnifier [expr !$magnifier_enable]
+ send magnifierButton set on [expr $magnifier_enable]
+}; send pbMagM addCallback magnifierPanel
+
+
+# CoordsBox Marker.
+#------------------------------------------------------
+proc pbTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send pbWcsM set state $track_enable
+} ; trace variable track_enable w pbTraceCoordsBox
+
+proc wcsPanel args \
+{
+ global track_enable
+ setTrack [expr !$track_enable]
+}; send pbWcsM addCallback wcsPanel
+
+
+
+# WPIX ISM Callbacks.
+#------------------------------------------------------
+
+proc altIsmToggle { widget type state args } \
+{
+ ismToggle pbIsm junk $state
+} ; send pbIsm addCallback altIsmToggle
+
+proc pbTraceIsm {name element op} \
+{
+ upvar $name ism_enable
+ send pbIsm set state $ism_enable
+} ; trace variable ism_enable w pbTraceIsm
+
+
+proc altIsmMsgCB { param old new } \
+{
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ deliver { ${ism}_alt_msg $argc $argv }
+ }
+} ; send ism_msg addCallback altIsmMsgCB
+
+
+proc wcspix_alt_msg { argc argv } \
+{
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+ switch $cmd {
+ startup { }
+ shutdown { }
+ disable { send pbIsm "set state False ; setSensitive False" }
+ capable { send pbIsm "setSensitive True" }
+ }
+}
+
+
+
+##############################################
+# Toolbar callbacks.
+##############################################
+
+send tbNormalize addCallback normalize
+send tbInvert addCallback cpInvert
+send tbRegister addCallback cpRegisterFrames
+send tbMatchLUT addCallback cpMatchFrames
+
+
+# Frame Selection.
+#------------------
+createMenu mFrameMenu mFrameButton $frameMenuDescription
+
+proc altFrameChanged {param old new} \
+{
+ send mFrameButton set label $new
+} ; send frame addCallback altFrameChanged
+
+
+# Image Flipping.
+#------------------------------------------------------
+proc tbSetFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send mXflipButton set state [true $new]
+ } else {
+ send mYflipButton set state [true $new]
+ }
+}; foreach i {xflip yflip} { send $i addCallback tbSetFlip }
+
+
+# Zoom/Pan buttons.
+#------------------------------------------------------
+proc tbZoomAction { widget args } \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ tbZoom0 { cpZoom 1 1 fixed }
+ tbZoomIn { cpZoom 2.0 2.0 relative }
+ tbZoomOut { cpZoom 0.5 0.5 relative }
+ tbCenter { send client pan [expr $frameWidth/2.0] [expr $frameHeight/2.0] }
+ }
+}
+foreach widget { tbCenter tbZoomIn tbZoom0 tbZoomOut } {
+ send $widget addCallback tbZoomAction
+}
+
+
+# Frame Blink.
+#------------------------------------------------------
+proc tbSetBlinkRate {w args} \
+{
+ if {$w == "tbBlinkInc"} {
+ cpSetBlinkRate BRincrease
+ } else {
+ cpSetBlinkRate BRdeccrease
+ }
+}
+foreach w {tbBlinkDec tbBlinkInc} { send $w addCallback tbSetBlinkRate }
+
+proc tbBlink { widget args } \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send tbBlink set state 0
+ } else {
+ if {$widget != "tbBlink"} {
+ if {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+ } else {
+ if {($blinkId != 0) != [send $widget get state]} {
+ toggleBlink
+ }
+ }
+ }
+} ; send tbBlink addCallback tbBlink
+
+proc tbTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send tbBlink set state [expr $blinkId != 0]
+} ; trace variable blinkId w tbTraceBlink
+
+
+# Auto-register.
+#------------------------------------------------------
+proc tbAutoRegister { widget type state args } \
+{
+ send tbAutoReg set state $state
+}
+foreach w {autoregButton brAregButton tbAutoReg} {
+ send $w addCallback cpAutoRegister
+}
+
+proc tbToggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ }
+}
+
+
+# Frame Tiles.
+#------------------------------------------------------
+proc tbSetTileFrames args \
+{
+ global tileOpt
+
+ # Send the option to the client.
+ if {[send tbTile get state ]} {
+ if {$tileOpt == 0} {
+ # If mode is disabled, turn on the tile selection.
+ selectTileOrientation junk junk Best
+ } else {
+ # Otherwise, turn on in current mode.
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ }
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+}; send tbTile addCallback tbSetTileFrames
+
+proc tbTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+ send tbTile set state $new
+}; send tileFrames addCallback tbTrackTileFrames
+
+proc tbTileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ if {$value} { set not 0 } else { set not 1 }
+
+ send tileFramesButton set on [expr $not]
+ send tbTile set on [expr $not]
+ cpSetTileFrames
+}
+
+
+# Compass Indicator.
+#------------------------------------------------------
+proc tbToggleCompass { widget type state args } \
+{
+ global frame
+
+ if {$state} {
+ send compass set on True
+ send tbCompass set state 1
+ drawCompass
+ } else {
+ send compass set on False
+ send tbCompass set state 0
+ eraseCompass
+ }
+} ; foreach w {compass tbCompass} { send $w addCallback tbToggleCompass }
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/warn.obj b/vendor/x11iraf/ximtool/gui.bak/warn.obj
new file mode 100644
index 00000000..51c617e0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/warn.obj
@@ -0,0 +1,12 @@
+
+set Objects(warning) { \
+ toplevel TransientShell warning\
+ warning Layout warn\
+ warn Frame warnFrame\
+ warnFrame Layout WFlayout\
+ WFlayout Icon warnIcon\
+ WFlayout TextBox warnText\
+ warn Command warnOk\
+ warn Command warnCancel\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/warn.res b/vendor/x11iraf/ximtool/gui.bak/warn.res
new file mode 100644
index 00000000..e1608938
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/warn.res
@@ -0,0 +1,49 @@
+
+set Resources(warning) { \
+
+ ! ---------------------
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 5 warnFrame < +inf * +inf > 5 } \
+ 5 < -5 > \
+ horizontal { \
+ 10 \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 10 \
+ } \
+ 5 < -5 > \
+ }
+ *warnOk.label: Okay
+ *warnCancel.label: Cancel
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { 5 < +inf -5 > warnIcon 5 < +inf -5 > } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnText.background: gray77
+}
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/warn.tcl b/vendor/x11iraf/ximtool/gui.bak/warn.tcl
new file mode 100644
index 00000000..e0465bc3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/warn.tcl
@@ -0,0 +1,49 @@
+
+################################################################################
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+################################################################################
+
+set W_object ""
+set W_ok_cmd ""
+set W_cancel_cmd ""
+
+proc Wexec {object msg args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ set W_object $object
+ set W_ok_cmd [lindex $args 0]
+ set W_cancel_cmd [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ switch $widget {
+ warnOk { if [llength $W_ok_cmd] { send $W_object $W_ok_cmd }
+ }
+ warnCancel { if [llength $W_cancel_cmd] { send $W_object $W_cancel_cmd }
+ }
+ }
+ send warning unmap
+}
+send warnOk addCallback Wbutton
+send warnCancel addCallback Wbutton
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} \
+{
+ Wexec client [lindex $new 0] [lindex $new 1]
+}; send alert addCallback setAlert
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/wcs.res b/vendor/x11iraf/ximtool/gui.bak/wcs.res
new file mode 100644
index 00000000..0f9ec8d5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/wcs.res
@@ -0,0 +1,212 @@
+
+set Resources(wcs_panel) { \
+
+ !--------------------
+ ! WCS Readout Panel
+ !--------------------
+ *wcsGroup*TextToggle.offIcon: square0s
+ *wcsGroup*TextToggle.onIcon: square1s
+
+ !*wcsLayout*TextToggle.location: 0 0 160 23
+ *wcsLayout*TextToggle.height: 23
+ *wcsLayout*TextToggle.outerOffset: 0
+ *wcsLayout*Layout.borderWidth: 0
+ *wcsLayout.borderWidth: 0
+ *wcsLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ wcsGroup < +inf -inf * > \
+ 5 \
+ horizontal { -1 wcsOptGroup < +inf -inf * > -1 } \
+ -2 \
+ }
+
+ *wcsOptGroup.label:
+ *wcsOptGroup.outerOffset: 0
+ *wcsOptGroup.innerOffset: 5
+ *wcsOptGroup.frameType: chiseled
+ *wcsOptGroup.frameWidth: 0
+ *wcsOptLayout.layout: vertical { \
+ horizontal { -9 wcsCoords < +inf -inf * > -9 } \
+ -3 \
+ horizontal { -5 wcsOpts < +inf -inf * > -5 } \
+ horizontal { -5 wcsIsmGroup < +inf -inf * > -5 } \
+ 1 \
+ }
+
+ *wcsOpts.label:
+ *wcsOpts.width: 265
+ *wcsOpts.height: 40
+ *wcsOpts.outerOffset: 3
+ *wcsOpts.innerOffset: 3
+ *woLayout*TextToggle.frameWidth: 0
+ *woLayout*TextToggle.onIcon: square1s
+ *woLayout*TextToggle.offIcon: square0s
+ *woLayout*TextToggle.highlightColor: cyan
+ *woLayout*TextToggle.alignment: left
+ *woLayout*TextToggle.leftMargin: 5
+ *woLayout.layout: horizontal { \
+ 3 \
+ woptLabels < +inf -inf * > 2 \
+ woptTitles < +inf -inf * > 2 \
+ woptFBinfo < +inf -inf * > 2 \
+ woptBPM < +inf -inf * > \
+ 3 \
+ }
+ *woptLabels.label: WCS Labels
+ *woptLabels.on: True
+ *woptTitles.label: Image Titles
+ *woptTitles.on: True
+ *woptFBinfo.label: Frame Buffer Info
+ *woptFBinfo.on: True
+ *woptBPM.label: BPM Data
+ *woptBPM.on: False
+ *woptLabels.location: 0 0 150 21
+ *woptTitles.location: 0 0 150 21
+ *woptFBinfo.location: 0 0 175 21
+ *woptBPM.location: 0 0 120 21
+
+
+ *wcsCoords.label: Readout Values
+ *wcsCoords.width: 265
+ *wcsCoords.height: 135
+ *wcsCoords.outerOffset: 7
+ *wcsCoords.innerOffset: 3
+ *wcLayout*TextToggle.offIcon: diamond0s
+ *wcLayout*TextToggle.onIcon: diamond1s
+ *wcLayout*TextToggle.highlightColor: yellow2
+ *wcLayout*TextToggle.shrinkToFit: True
+ *wcLayout*TextToggle.frameWidth: 0
+ *wcLayout*TextToggle.label:
+ *wcLayout*TextToggle.on: True
+ *wcLayout*Label.justify: right
+ *wcLayout*Label.font: 7x13bold
+ *wcLayout*SimpleMenu.borderColor: black
+ *wcLayout*SimpleMenu.borderWidth: 1
+ *wcLayout*SimpleMenu.foreground: White
+ *wcLayout*SimpleMenu.background: SteelBlue
+ *wcLayout*MenuButton.shadowWidth: 1
+ *wcLayout*MenuButton.resize: False
+ *wcLayout.layout: vertical {\
+ 1 \
+ horizontal { 20 < -20 > wcTitle < +inf -inf * > 20 < -20 > }\
+ 1 \
+ horizontal { 5 wcLine < +inf -inf * > 5 } \
+ 5 \
+ horizontal { \
+ 10 \
+ vertical { 2 wlWcs1 2 wlWcs2 2 wlWcs3 2 wlWcs4 2 } 5 \
+ vertical { 1 sysWcs1 1 sysWcs2 1 sysWcs3 1 sysWcs4 1 } 5 \
+ vertical { 1 fmtWcs1 1 fmtWcs2 1 fmtWcs3 1 fmtWcs4 1 } 20 \
+ vertical { 1 wpWcs1 3 wpWcs2 3 wpWcs3 3 wpWcs4 3 } 20 \
+ vertical { 1 wiWcs1 3 wiWcs2 3 wiWcs3 3 wiWcs4 3 } 15 \
+ } \
+ 3 \
+ }
+ *wcTitle.label: Type\ \ \ \ \ \ \ \ \ \ Format\ \ \ \ \ \ Panel\ ImgWin
+
+ *wcLine.height: 2
+ *wcLine.frameWidth: 2
+ *wcLine.frameType: ledged
+
+ *wlWcs1.label: First WCS
+ *wlWcs2.label: Second WCS
+ *wlWcs3.label: Third WCS
+ *wlWcs4.label: Fourth WCS
+ *sysWcs1.label: \ Image Display\
+ *sysWcs1.menuName: sysMenu1
+ *sysWcs2.label: None
+ *sysWcs2.menuName: sysMenu2
+ *sysWcs3.label: None
+ *sysWcs3.menuName: sysMenu3
+ *sysWcs4.label: None
+ *sysWcs4.menuName: sysMenu4
+ *fmtWcs1.label: \ Sexigesimal\
+ *fmtWcs1.menuName: fmtMenu1
+ *fmtWcs2.label: None
+ *fmtWcs2.menuName: fmtMenu2
+ *fmtWcs3.label: None
+ *fmtWcs3.menuName: fmtMenu3
+ *fmtWcs4.label: None
+ *fmtWcs4.menuName: fmtMenu4
+
+ *editMenu fmtWcsMenu$i fmtWcs$i $items
+
+ *wcsIsmGroup.label:
+ *wcsIsmGroup.width: 395
+ *wcsIsmGroup.height: 50
+ *wcsIsmGroup.outerOffset: 3
+ *wcsIsmGroup.innerOffset: 5
+ *wcsIsmGroup*borderWidth: 0
+ *wcsIsmLayout.layout: horizontal { \
+ wcsIsmLabel 1 wcsIsmFrame < +inf -inf * > 3 wcsIsmInit 1 \
+ }
+ *wcsIsmLabel.label: ISM Command
+ *wcsIsmFrame.frameType: sunken
+ *wcsIsmFrame.frameWidth: 1
+ *wcsIsmFrame.outerOffset: 1
+ *wcsIsmFrame*height: 23
+ *wcsIsmCmd*editType: edit
+ *wcsIsmCmd.displayCaret: True
+ *wcsIsmInit.label: Initialize
+ *wcsIsmInit.internalWidth: 7
+
+ *wcsBox*borderWidth: 0
+ *wcsBox*TextToggle.frameType: raised
+ *wcsBox*TextToggle.frameWidth: 1
+ *wcsBox*TextToggle.leftMargin: 2
+ *wcsBox*borderWidth: 0
+ *wcsBox.layout: vertical { \
+ wcsFrame < +inf -inf * > \
+ 2 \
+ horizontal { \
+ 2 \
+ ismToggle < +inf -inf * > 2 \
+ pixelTable < +inf -inf * > 2 \
+ imageHeader < +inf -inf * > 2 \
+ compass < +inf -inf * > 2 \
+ wcsOptions < +inf -inf * > \
+ 2 \
+ } \
+ }
+ *ismToggle.label: ISM Mod
+ *ismToggle.label: WCS/Pix
+ *pixelTable.label: Pix Table
+ *imageHeader.label: Header
+ *imageHeader.sensitive: False
+ *compass.label: Compass
+ *wcsOptions.label: Options
+
+ *wcsGroup.label:
+ *wcsGroup.outerOffset: 0
+ *wcsGroup.innerOffset: 5
+ *wcsGroup.frameType: chiseled
+ *wcsGroup.frameWidth: 2
+ *wcsGroup*Text*width: 260
+ *wcsGroup*Text*height: 17
+ *wcsGroup*Text*font: 7x13
+ *wcsGroup*Text*displayCaret: False
+ *wcsGroup*Text*editType: read
+ *wcsGroup*Text*background: black
+ *wcsGroup*Text*foreground: yellow2
+ *wcsGroup*TextToggle.highlightColor: cyan
+ *wcsFrame.frameType: sunken
+ *wcsFrame.frameWidth: 1
+ *wcsText*background: yellow4
+ *wcsText.layout: vertical { \
+ wtName < +inf -inf * > -3 \
+ wtTitle < +inf -inf * > -3 \
+ wtFBCfg < +inf -inf * > \
+ 1 < -1 > \
+ wtWcs1 < +inf -inf * > -3 \
+ wtWcs2 < +inf -inf * > -3 \
+ wtWcs3 < +inf -inf * > -3 \
+ wtWcs4 < +inf -inf * > \
+ 1 < -1 > \
+ horizontal { \
+ wtIPixval < +inf -inf * +inf > 1 \
+ wtSPixval < +inf -inf * +inf > 1 \
+ wtBPixval < +inf -inf * +inf > \
+ } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/wcs.tcl b/vendor/x11iraf/ximtool/gui.bak/wcs.tcl
new file mode 100644
index 00000000..8b14db4f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/wcs.tcl
@@ -0,0 +1,464 @@
+
+################################################################################
+# Coords Panel Callbacks.
+################################################################################
+
+# In case we need to change the values....
+#global wcsPHeight wcsPTxtHeight wcsPGrHeight wcsPOptHeight
+#set wcsPHeight 267
+#set wcsPTxtHeight 132
+#set wcsPGrHeight 175
+#set wcsPOptHeight 233
+#setCoordPanelHeight
+
+set wcsPHeight 267 ;# full panel no options
+set wcsPTxtHeight 132 ;# size of text area box
+set wcsPGrHeight 175 ;# size of text area group
+set wcsPOptHeight 233 ;# extra height for opts boxes
+
+# Set the WCS readout panel sensitivity depending on whether the ISM
+# is currently enabled.
+proc setCoordPanelSensitivity args \
+{
+ set widgets {
+ wpWcs2 wpWcs3 wpWcs4
+ wiWcs2 wiWcs3 wiWcs4
+ wlWcs2 wlWcs3 wlWcs4
+ sysWcs2 sysWcs3 sysWcs4
+ fmtWcs2 fmtWcs3 fmtWcs4
+ }
+
+ send sysWcs1 set label "Display"
+ send fmtWcs1 set label "Default"
+
+ for {set i 2} {$i <= 4} {incr i} {
+ send sysWcs$i set label "None" ; send fmtWcs$i set label "Default"
+ send wpWcs$i set on False ; send wiWcs$i set on False
+ send wtWcs$i set height 4
+ }
+
+ if {[send ismToggle get on]} {
+ send sysWcs2 set label "World" ; send fmtWcs2 set label "Default"
+ send wpWcs2 set on True ; send wiWcs2 set on True
+ send wtWcs2 set height 17
+
+ foreach w $widgets { send $w setSensitive True }
+ } else {
+ foreach w $widgets { send $w setSensitive False }
+ }
+}
+
+
+# Set the Coords Panel height depending on the option settings.
+proc setCoordPanelHeight args \
+{
+ global wcsPHeight wcsPOptHeight wcsPTxtHeight wcsPGrHeight
+ global tabTop
+
+ if {$tabTop != "wcs_panel"} \
+ return
+
+ # Get the height of the text area
+ set panel_h $wcsPHeight
+ set shrinkage 0
+ foreach w { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo } {
+ if {[send $w get on] == 0} {
+ incr shrinkage 13
+ }
+ }
+ if {[send woptTitles get on] == 0} {
+ incr shrinkage 26
+ }
+
+ set ph [expr ($wcsPHeight - $shrinkage)]
+ if {[send wcsOptions get on] == 1} {
+ incr ph $wcsPOptHeight
+ }
+
+ send wcsGroup set height [ expr ($wcsPGrHeight - $shrinkage) ]
+ send wcsFrame set height [ expr ($wcsPTxtHeight - $shrinkage) ]
+ send panel set height $ph
+}
+
+# Toggle the options display for the panel.
+proc wcsOptToggle { widget type state args } \
+{
+ global wcsPOptHeight
+ set h [ send panel get height ]
+ if {$state == 1} {
+ send panel set height [ expr ($h + $wcsPOptHeight) ]
+ } else {
+ send panel set height [ expr ($h - $wcsPOptHeight) ]
+ }
+} ; send wcsOptions addCallback wcsOptToggle
+
+# Handle the panel display toggles.
+proc wcsCoordsCB { widget type state args } \
+{
+
+ set hght [ expr (($state == 1) ? 17 : 4)]
+ switch $widget {
+ wpWcs1 { send wtWcs1 set height $hght }
+ wpWcs2 { send wtWcs2 set height $hght }
+ wpWcs3 { send wtWcs3 set height $hght }
+ wpWcs4 { send wtWcs4 set height $hght }
+ woptFBinfo { send wtFBCfg set height $hght }
+ woptTitles { send wtName set height $hght ; send wtTitle set height $hght }
+ }
+ setCoordPanelHeight
+}
+set wcValues { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo woptTitles }
+foreach w $wcValues { send $w addCallback wcsCoordsCB }
+
+
+# Handle WCS label string options.
+set wcsLabels 1
+proc wcsLabelsCB { widget type state args } \
+{
+ global up_todo wcsLabels
+ set wcsLabels $state
+ #resizeCoordsBox 0
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+} ; send woptLabels addCallback wcsLabelsCB
+
+
+# Toggle the BPM tracking state.
+proc wcsBPMCB { widget type state args } \
+{
+ global ism_enable
+ if ($ism_enable) { catch { send wcspix set bpm $state } }
+} ; send woptBPM addCallback wcsBPMCB
+
+
+# Procedures to format lines in the wcsText box.
+proc wcsFmtImname { name } \
+{
+ send wtName set string [format " Name: %s" [string trimleft $name]]
+}
+
+proc wcsFmtImtitle { title } \
+{
+ send wtTitle set string [format " Title: %s" [string trimleft $title]]
+}
+
+proc wcsFmtFBConfig args \
+{
+ global frameWidth frameHeight frame nframes
+ set buf [ format "%5d x %-5d" $frameWidth $frameHeight ]
+ set line [ format "Frame Buf: %-13s Frame: %d of %d" \
+ [string trimleft $buf] $frame $nframes ]
+ send wtFBCfg set string $line
+}
+
+proc wcsFmtIValue { value } \
+{
+ global coord
+ set line [ format " Pixel: %.11s" $value ]
+ send wtIPixval set string $line
+ if {[info exists coord(ival)]} {
+ set coord(ival) $value
+ updateCoordsBox
+ }
+}
+
+proc wcsFmtSValue { value } \
+{
+ global coord
+ set line [ format " Scaled: %.8s" $value ]
+ send wtSPixval set string $line
+ set coord(sval) [format "%s" $value]
+}
+
+proc wcsFmtBValue { value } \
+{
+ global coord
+
+ if { [send woptBPM get on] } {
+ set line [ format " BPM: %s" $value ]
+ set color [expr { ($value == 0) ? "black" : "red" } ]
+ set msg [format "set string \{%s\}; set background %s" $line $color ]
+ set coord(bval) [format "%s" $value]
+ } else {
+ set line [ format " BPM: (off)" ]
+ set msg [format "set string \{%s\}" $line]
+ }
+ send wtBPixval $msg
+}
+
+proc wcsFmtWcs { num wcsname x y xunit yunit args } \
+{
+ global coord coordLab wcsLabels
+
+ if {$wcsLabels} {
+ set line [ format "%4s: %12s %4s: %12s WCS: %s" \
+ $xunit $x $yunit $y [string trimleft $wcsname] ]
+ } else {
+ set line [ format "%4s %12s %4s %12s %s" \
+ " " $x " " $y [string trimleft $wcsname] ]
+ }
+ send wtWcs$num set string $line
+
+ if {[info exists coord(wcs$num)]} {
+ if {$num == 1} {
+ set coord(wcs1) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(sval) ]
+ } elseif {$num == 2} {
+ set coord(wcs2) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(ival) ]
+ } else {
+ set coord(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" $x $y $wcsname ]
+ }
+
+ set coordLab(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" \
+ $xunit $yunit [string trimleft $wcsname ] ]
+ updateCoordsBox
+ }
+}
+
+
+
+# Handle the wcsbox readout.
+#------------------------------
+set up_todo 2
+set up_done 0
+set coord(ival) 0.
+set coord(sval) 0.
+set coord(bval) 0
+set coord(wcs1) { 0. 0. 0. }
+set coord(wcs2) { 0. 0. 0. }
+set coord(wcs3) { 0. 0. 0. }
+set coord(wcs4) { 0. 0. 0. }
+
+proc wcsCoordB { widget type state args } \
+{
+ global coord up_todo
+
+ switch $widget {
+ wiWcs1 { set line wcs1 ;set coord($line) { 0. 0. "" } }
+ wiWcs2 { set line wcs2 ;set coord($line) { 0. 0. "" } }
+ wiWcs3 { set line wcs3 ;set coord($line) { 0. 0. "" } }
+ wiWcs4 { set line wcs4 ;set coord($line) { 0. 0. "" } }
+ }
+
+ if {$state} {
+ incr up_todo
+ } else {
+ unset coord($line)
+ incr up_todo -1
+ }
+
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+set wiValues { wiWcs1 wiWcs2 wiWcs3 wiWcs4 }
+foreach w $wiValues { send $w addCallback wcsCoordB }
+
+
+# Resize the coords box depending on the panel options.
+proc resizeCoordsBox { nlines } \
+{
+ global track_enable wcsLabels winWidth winHeight wcsboxGeom
+
+ if {! $track_enable} \
+ return
+
+ send wcsbox getAttributes width cur_w height cur_h
+ set defGeom [format "%sx%s-5-5" $cur_w $cur_h]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ set ew [expr (($wcsLabels == 1) ? 125 : 65)]
+
+ # Reset to the default geometry
+ if {$nlines == 0} {
+ set x [expr ($x + $ew)]
+ set y [expr ($y + $height - 17 + 1)]
+ set new_w 166
+ set new_h 17
+
+ } else {
+ if {$width > 166} { ;# not using default wcsbox
+ set new_w $width
+ } else {
+ set new_w [expr ($width + $ew)]
+ set x [expr ($x - $ew)]
+ if {$wcsLabels == 0} {
+ incr x 60
+ }
+ }
+ set new_h [ expr ($nlines * 17) ]
+ set y [expr ($y + $height - $new_h + 1)]
+ }
+
+ # Bounds checking.
+ if {$x < 5} {
+ set x 5
+ } elseif {$x > [expr ($winWidth - $new_w - 5)]} {
+ set x [expr ($winWidth - $new_w - 5)]
+ }
+ if {$y < 5} {
+ set y 5
+ } elseif {$y > [expr ($winHeight - $new_h - 5)]} {
+ set y [expr ($winHeight - $new_h - 5)]
+ }
+
+ # Finally redraw the marker.
+ send wcsbox "\
+ setAttributes \
+ width $new_w \
+ height $new_h \
+ x $x \
+ y $y; \
+ redraw"
+
+ set wcsboxGeom [send imagewin getGeometry $x $y $new_w $new_h]
+ send client encodewcs [expr ($winWidth / 2)] [expr ($winHeight / 2)]
+ updateCoordsBox
+}
+
+
+# Shortcuts for known WCS labels.
+set labels(display) "TV"
+set labels(logical) "Log"
+set labels(physical) "Phys"
+set labels(equatorial) "Eq"
+set labels(ecliptic) "Ecl"
+set labels(galactic) "Gal"
+set labels(supergalactic) "SGal"
+set labels(amplifier) "Amp"
+set labels(ccd) "CCD"
+set labels(detector) "Det"
+
+
+# Format the coords box marker with the selected output options.
+proc updateCoordsBox args \
+{
+ global ism_enable coord coordLab wcsLabels
+ global up_done up_todo labels track_enable
+ global coord
+
+ if {! $ism_enable} \
+ return
+
+ incr up_done
+
+ set text ""
+ foreach l {wcs1 wcs2 wcs3 wcs4} {
+ if {[info exists coord($l)]} {
+ set x [lindex $coord($l) 0]
+ set y [lindex $coord($l) 1]
+ set z [string tolower [string trimleft [lindex $coord($l) 2] ] ]
+ if {[info exists labels($z)]} {
+ set z $labels($z)
+ }
+
+ if {$wcsLabels && [info exists coordLab($l)]} {
+ set lx [lindex $coordLab($l) 0]
+ set ly [lindex $coordLab($l) 1]
+ append text [format " %4s %12.12s %4s %12.12s %9.9s \n" \
+ $lx $x $ly $y $z ]
+ } else {
+ append text [format " %12.12s %12.12s %9.9s \n" $x $y $z ]
+ }
+ }
+ }
+
+ # Now send the string.
+ if {$track_enable} {
+ set color [expr { ($coord(bval) == 0) ? "black" : "red" } ]
+ set txt [format "set text \{%s\}; set textBgColor %s; redraw noerase" \
+ $text $color ]
+ send wcsbox $txt
+ }
+
+ if {$up_done >= $up_todo} {
+ set up_done 0 ;# reset counter
+ }
+}
+
+
+# Create the WCS format menus.
+#------------------------------------
+proc setWcsFmt { format line } \
+{
+ catch { send wcspix set format $format $line }
+}
+
+for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ lappend items "\"Default\" f.exec \{setWcsFmt default $i\}"
+ lappend items "\"Sexigesimal\" f.exec \{setWcsFmt hms $i\}"
+ lappend items "\"Degrees\" f.exec \{setWcsFmt deg $i\}"
+ lappend items "\"Radians\" f.exec \{setWcsFmt rad $i\}"
+ editMenu fmtMenu$i fmtWcs$i $items
+}
+
+
+# Create the default WCS type menus.
+#------------------------------------
+
+set defaultWcsMenu {
+ { "None" f.exec {setWcsSys none WCS_LINE } }
+ { "Display" f.exec {setWcsSys display WCS_LINE } }
+ { "World" f.exec {setWcsSys world WCS_LINE } }
+ { "Logical" f.exec {setWcsSys logical WCS_LINE } }
+ { "Physical" f.exec {setWcsSys physical WCS_LINE } }
+ { f.dblline }
+}
+
+proc setWcsSys { sys line } \
+{
+ if {[string tolower $sys] == "none"} {
+ wcsCoordB wiWcs$line junk 0
+ send sysWcs$line set label "None"; send fmtWcs$line set label "Default"
+ send wpWcs$line set on False ; send wiWcs$line set on False
+ send wtWcs$line set height 4
+ setCoordPanelHeight
+
+ } else {
+ catch { send wcspix set wcs $sys $line }
+ }
+}
+
+proc resetDefaultWcsMenu args \
+{
+ global defaultWcsMenu
+
+ for {set i 1} {$i <= 4} {incr i} {
+ regsub -all WCS_LINE $defaultWcsMenu $i menu_def
+ editMenu sysMenu$i sysWcs$i $menu_def
+ }
+} ; resetDefaultWcsMenu
+
+
+# Initialize the coordinates panel.
+#------------------------------------
+
+proc initCoordsPanel args \
+{
+ #send wcLine set height 2 ;# kludge for label widget
+
+ # Initialize the display strings in the coords box.
+ wcsFmtImname ""
+ wcsFmtImtitle ""
+ wcsFmtFBConfig
+ wcsFmtIValue "0." ; wcsFmtSValue "0." ; wcsFmtBValue "0"
+ wcsFmtWcs 1 "" "" "" " X" " Y"
+ wcsFmtWcs 2 "" "" "" " X" " Y"
+ wcsFmtWcs 3 "" "" "" " X" " Y"
+ wcsFmtWcs 4 "" "" "" " X" " Y"
+
+ send fmtWcs1 set label Default
+ send wpWcs1 set on True ;send wiWcs1 set on True
+ send wpWcs2 set on True ;send wiWcs2 set on True
+ send wpWcs3 set on False ;send wiWcs3 set on False ;send wtWcs3 set height 4
+ send wpWcs4 set on False ;send wiWcs4 set on False ;send wtWcs4 set height 4
+
+ # Set the Coords Panel height.
+ set wcsPTxtHeight [send wcsText get height]
+ setCoordPanelHeight
+
+ # Set the WCS readout panel sensitivity.
+ setCoordPanelSensitivity
+
+} ; initCoordsPanel
+
+
diff --git a/vendor/x11iraf/ximtool/gui.bak/zztest b/vendor/x11iraf/ximtool/gui.bak/zztest
new file mode 100644
index 00000000..c7eabfe1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui.bak/zztest
@@ -0,0 +1,56 @@
+
+# Test to see if we can create a new panel.
+appExtend {
+ *test_objects:\
+ toplevel TopLevelShell testPanel\
+ testPanel Form testForm\
+ testForm Label testLabel\
+ testForm Command testQuit
+
+ *testPanel.geometry: 250x40
+ *testLabel.label: Hello, world!
+ *testQuit.fromHoriz: testLabel
+ *testQuit.label: Quit
+}
+createObjects test_objects
+
+
+#------------------------------------------------------------------------------
+# Test to see if we can add a widget to an existing widget tree, i.e. create
+# a widget and assign an existing parent. Try adding a new button to the
+# ximtool panelbar.
+
+appExtend {
+ *par_objects:\
+ panelbar Toggle pbTest
+
+ *pbTest.label: TESTING
+}
+createObjects par_objects
+
+# change the layout to include the new widget.
+#send panelbar unmap
+send panelbar set layout "horizontal \{ \
+ pbTest < +inf -inf * > 1 < -1 > \
+ pbDisplayP < +inf -inf * > 1 < -1 > \
+ pbPrintP < +inf -inf * > 1 < -1 > \
+ pbLoadP < +inf -inf * > 1 < -1 > \
+ pbSaveP < +inf -inf * > 1 < -1 > \
+ pbInfoP < +inf -inf * > 1 < -1 > \
+ pbTileP < +inf -inf * > 1 < -1 > \
+ pbCoordP < +inf -inf * > 1 < -1 > \
+ pbPanM < +inf -inf * > 1 < -1 > \
+ pbMagM < +inf -inf * > 1 < -1 > \
+ pbWcsM < +inf -inf * > 1 < -1 > \
+ pbIsm < +inf -inf * > 1 < -1 > \
+ helpButton < +inf -inf * > 1 < -1 > \
+ pbQuit < +inf -inf * > 1 < -1 > \
+ \}"
+#send panelbar map
+
+# Do the callbacks
+proc testToggle { widget type state args } \
+{
+ if {$state} { send testPanel map } else { send testPanel unmap }
+} ; send pbTest addCallback testToggle
+send testQuit addCallback "send testPanel unmap; send pbTest set state False"
diff --git a/vendor/x11iraf/ximtool/gui/blink.obj b/vendor/x11iraf/ximtool/gui/blink.obj
new file mode 100644
index 00000000..dfae6861
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/blink.obj
@@ -0,0 +1,46 @@
+
+set Objects(blink_panel) { \
+ toplevel TopLevelShell blink_panel\
+ blink_panel Layout bpLayout\
+\
+ bpLayout Frame brMenuFrame\
+ brMenuFrame Layout brMenuBar\
+ brMenuBar Command brClose\
+\
+ bpLayout Frame brFrame\
+ brFrame Layout brLayout\
+\
+ brLayout Group brFramesG\
+ brFramesG Layout brFrames\
+ brFrames MenuButton brFrame1\
+ brFrames MenuButton brFrame2\
+ brFrames MenuButton brFrame3\
+ brFrames MenuButton brFrame4\
+ brFrames MenuButton brFrame5\
+ brFrames MenuButton brFrame6\
+ brFrames MenuButton brFrame7\
+ brFrames MenuButton brFrame8\
+ brFrames MenuButton brFrame9\
+ brFrames MenuButton brFrame10\
+ brFrames MenuButton brFrame11\
+ brFrames MenuButton brFrame12\
+ brFrames MenuButton brFrame13\
+ brFrames MenuButton brFrame14\
+ brFrames MenuButton brFrame15\
+ brFrames MenuButton brFrame16\
+\
+ brLayout Group brCmdG\
+ brCmdG Layout brCmd\
+ brCmd Command brReset\
+ brCmd Label brRateLabel\
+ brCmd Frame brBRframe\
+ brBRframe Layout brBRlayout\
+ brBRlayout Arrow brBRdecrease\
+ brBRlayout TextBox brBRtext\
+ brBRlayout Arrow brBRincrease\
+ brCmd Command brRegButton\
+ brCmd Command brMatchButton\
+ brCmd TextToggle brBlinkButton\
+ brCmd TextToggle brAregButton\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/blink.res b/vendor/x11iraf/ximtool/gui/blink.res
new file mode 100644
index 00000000..311bad2a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/blink.res
@@ -0,0 +1,167 @@
+
+set Resources(blink_panel) { \
+
+ *blink_panel.geometry: 425x200
+ *blink_panel.title: Blink/Register Frames
+
+ *brMenuBar*Command.internalHeight: 4
+ *brMenuBar*Command.internalWidth: 12
+ *brMenuBar*Command.height: 27
+ *brMenuBar*borderWidth: 0
+
+ *brMenuBar*Label.font: 7x13bold
+ *brLayout*Command.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brRegButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brReset.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brMatchButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brBlinkButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brAregButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+
+ *brMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> brClose 5 } \
+ 5 < -5 > \
+ }
+ *brClose.label: Dismiss
+
+ *brMenuFrame.frameType: raised
+ *brMenuFrame.frameWidth: 2
+ *bpLayout.layout: vertical { \
+ brMenuFrame < +inf -inf * > \
+ 1 < -1 > \
+ brFrame < +inf -inf * +inf -inf > \
+ }
+
+ *brFrame.frameType: chiseled
+ *brFrame.frameWidth: 2
+ *brFrame.outerOffset: 4
+ *brFrame.innerOffset: 4
+
+ *brLayout.borderWidth: 0
+ *brLayout.layout: vertical { \
+ 3 < -3 > \
+ horizontal { -3 brFramesG < +inf -inf * > -3 } \
+ -5 \
+ horizontal { -3 brCmdG < +inf -inf * +inf -inf > -3 } \
+ -5 \
+ }
+
+ *brCmdG.label:
+ *brCmdG.outerOffset: 7
+ *brCmdG.innerOffset: 7
+ *brCmdG*borderWidth: 0
+ *brCmd.layout: horizontal { \
+ 2 \
+ vertical { \
+ 2 \
+ horizontal { \
+ 2 \
+ brRateLabel \
+ 2 \
+ brBRframe < +inf -inf * >\
+ 4 \
+ brReset \
+ 2 \
+ } \
+ 8 < -8 > \
+ horizontal { \
+ 4 \
+ brMatchButton < +inf -inf * > \
+ 5 < -5 > \
+ brRegButton < +inf -inf * > \
+ 2 \
+ } \
+ 1 < +inf > \
+ } \
+ 10 \
+ vertical { \
+ 2 \
+ brBlinkButton < +inf * > \
+ 10 < -10 > \
+ brAregButton < +inf * > \
+ 1 < +inf > \
+ } \
+ 2 \
+ }
+
+ *brFramesG.label: Frames List
+ *brFramesG.outerOffset: 7
+ *brFramesG.innerOffset: 7
+ *brFramesG*SimpleMenu.borderColor: black
+ *brFramesG*SimpleMenu.borderWidth: 1
+ *brFramesG*SimpleMenu.foreground: White
+ *brFramesG*SimpleMenu.background: SteelBlue
+
+ *brFrames.borderWidth: 0
+ *brFrames.layout: horizontal { \
+ 5 < +inf > \
+ brFrame1 < +inf * > 1 \
+ brFrame2 < +inf * > 1 \
+ brFrame3 < +inf * > 1 \
+ brFrame4 < +inf * > 1 \
+ brFrame5 < +inf * > 1 \
+ brFrame6 < +inf * > 1 \
+ brFrame7 < +inf * > 1 \
+ brFrame8 < +inf * > 1 \
+ brFrame9 < +inf * > 1 \
+ brFrame10 < +inf * > 1 \
+ brFrame11 < +inf * > 1 \
+ brFrame12 < +inf * > 1 \
+ brFrame13 < +inf * > 1 \
+ brFrame14 < +inf * > 1 \
+ brFrame15 < +inf * > 1 \
+ brFrame16 < +inf * > \
+ 5 < +inf > \
+ }
+
+ *brBRlayout.layout: horizontal { \
+ brBRdecrease \
+ brBRtext < +inf -100% * > \
+ brBRincrease \
+ }
+
+ *blink_panel*TextToggle.location: 0 0 110 23
+ *blink_panel*TextToggle.frameWidth: 1
+ *blink_panel*TextToggle.highlightColor: yellow
+ *blink_panel*TextToggle.offIcon: square0s
+ *blink_panel*TextToggle.onIcon: square1s
+ *blink_panel*TextToggle.outerOffset: 0
+ *blink_panel*TextToggle.innerOffset: 2
+ *blink_panel*Command.height: 23
+ *blink_panel*Arrow.width: 16
+ *blink_panel*Arrow.height: 20
+
+
+ *brFramesLabel.label: Frames:
+ *brFrame1.menuName: frame1Menu
+ *brFrame2.menuName: frame2Menu
+ *brFrame3.menuName: frame3Menu
+ *brFrame4.menuName: frame4Menu
+ *brFrame5.menuName: frame5Menu
+ *brFrame6.menuName: frame6Menu
+ *brFrame7.menuName: frame7Menu
+ *brFrame8.menuName: frame8Menu
+ *brFrame9.menuName: frame9Menu
+ *brFrame10.menuName: frame10Menu
+ *brFrame11.menuName: frame11Menu
+ *brFrame12.menuName: frame12Menu
+ *brFrame13.menuName: frame13Menu
+ *brFrame14.menuName: frame14Menu
+ *brFrame15.menuName: frame15Menu
+ *brFrame16.menuName: frame16Menu
+ *brReset.label: Reset
+
+ *brRateLabel.label: Rate:
+ *brBRframe.frameType: sunken
+ *brBRframe.frameWidth: 1
+ *brBRtext.width: 40
+ *brBRtext.height: 23
+ *brBRdecrease.direction: left
+ *brBRincrease.direction: right
+ *brRegButton.label: Register
+ *brMatchButton.label: Match LUTs
+ *brBlinkButton.label: Blink
+ *brAregButton.label: Auto-Register
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/boot.tcl b/vendor/x11iraf/ximtool/gui/boot.tcl
new file mode 100644
index 00000000..936273a5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/boot.tcl
@@ -0,0 +1,74 @@
+
+
+################################################################################
+# GUI Bootstrap Procedures
+################################################################################
+
+# Initialize the widget tree.
+proc InitWidgetTree args \
+{
+ global Objects Resources Version
+
+
+ # Add a new objects description for each of the panels found so we can
+ # create them by name later rather that with the defaults.
+
+ set guiResources ""
+ foreach obj [array names Objects] {
+ set guiResources \
+ [ format "%s\n\n*%s_objects:%s\n" \
+ $guiResources $obj $Objects($obj) ]
+ }
+
+ # Now append all the Resource strings, changing any version strings as
+ # needed.
+
+ foreach res [array names Resources] {
+ regsub -all XIMTOOL_VERSION $Resources($res) $Version ver
+ set guiResources [ format "%s\n\n%s\n\n" $guiResources $ver ]
+ }
+
+ # Define all of the GUI objects and resources.
+ appInitialize ximtool XImtool $guiResources
+}
+
+
+# Realize a window module, i.e. create it's objects.
+proc Realize { module args } \
+{
+ global Objects
+
+ # Create any widgets for the module. We only do this once and set a
+ # flag to indicate the objects have been created so we don't do it on
+ # subsequent realizations.
+ if { [info exists Objects($module)] } {
+ createObjects [format "%s_objects" $module]
+ reset-server
+ }
+}
+
+
+# Bootstrap up the GUI.
+InitWidgetTree
+Realize ximtool
+Realize parameters
+Realize panelShell
+Realize tcl_panel
+Realize pixel_table
+Realize hdr_panel
+Realize blink_panel
+Realize help_panel
+Realize xpan_panel
+Realize xmag_panel
+Realize warning
+
+reset-server
+
+# Set the gterm widget focus.
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+
+# Crank it up.
+activate
+
+
diff --git a/vendor/x11iraf/ximtool/gui/compass.tcl b/vendor/x11iraf/ximtool/gui/compass.tcl
new file mode 100644
index 00000000..13f5bed8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/compass.tcl
@@ -0,0 +1,215 @@
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set north_x [lindex $Compass($id) 1]
+ set north_y [lindex $Compass($id) 2]
+ set east_x [lindex $Compass($id) 3]
+ set east_y [lindex $Compass($id) 4]
+ set transpose [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set north_x 0.0 ; set north_y 1.0
+ set east_x 1.0 ; set east_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set transpose 0
+ set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($north_y,$north_x)"]
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the drawing points.
+ set pts {}
+
+ set cpoints { }
+ lappend cpoints [list $east_x $east_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $north_x $north_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ set rpoints { }
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($transpose > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($transpose > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]
+
+ lappend rpoints [list $rx $ry]
+ }
+ foreach p $rpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+ set lpoints { }
+ lappend lpoints [list [expr "$east_x-0.2"] $east_y ]
+ lappend lpoints [list $north_x [expr "$north_y+0.2"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ # Draw the compass axes.
+ set compassPts [lrange $pts 0 5]
+ send imagewin setColorIndex $compassColor
+ send imagewin drawPolyline $compassPts
+
+
+ # Draw the compass pointer.
+ set head [lrange $pts 6 13]
+ send imagewin setFillType solid
+ send imagewin drawPolygon $head
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab
+ send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab
+
+ send imagewin setLogRes $sv_xl $sv_yl
+
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+# This is a kludge to redraw the compass after it is erased when displaying
+# a new image. Once the user moves the mouse back into the main window we'll
+# do the redraw.
+send imagewin addEventHandler drawCompass enterWindowMask
+
+
+
+proc createCompassMarker { pts args } \
+{
+ set cm_points { }
+ lappend cm_points [lrange $pts 0 1]
+ lappend cm_points [lrange $pts 2 3]
+ lappend cm_points [lrange $pts 4 5]
+
+ print [list $cm_points]
+
+}
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
diff --git a/vendor/x11iraf/ximtool/gui/compass.tcl.bak b/vendor/x11iraf/ximtool/gui/compass.tcl.bak
new file mode 100644
index 00000000..761b99c3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/compass.tcl.bak
@@ -0,0 +1,195 @@
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set north_x [lindex $Compass($id) 1]
+ set north_y [lindex $Compass($id) 2]
+ set east_x [lindex $Compass($id) 3]
+ set east_y [lindex $Compass($id) 4]
+ set transpose [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set north_x 0.0 ; set north_y 1.0
+ set east_x 1.0 ; set east_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set transpose 0
+ set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($north_y,$north_x)"]
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the drawing points.
+ set pts {}
+
+ set cpoints { }
+ lappend cpoints [list $east_x $east_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $north_x $north_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ set rpoints { }
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($transpose > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($transpose > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]
+
+ lappend rpoints [list $rx $ry]
+ }
+ foreach p $rpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+ set lpoints { }
+ lappend lpoints [list [expr "$east_x-0.2"] $east_y ]
+ lappend lpoints [list $north_x [expr "$north_y+0.2"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ # Draw the compass axes.
+ set compassPts [lrange $pts 0 5]
+ send imagewin setColorIndex $compassColor
+ send imagewin drawPolyline $compassPts
+
+ # Draw the compass pointer.
+ set head [lrange $pts 6 13]
+ send imagewin setFillType solid
+ send imagewin drawPolygon $head
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab
+ send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab
+
+ send imagewin setLogRes $sv_xl $sv_yl
+
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
diff --git a/vendor/x11iraf/ximtool/gui/compass.tcl.new b/vendor/x11iraf/ximtool/gui/compass.tcl.new
new file mode 100644
index 00000000..2822e1d8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/compass.tcl.new
@@ -0,0 +1,205 @@
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set n_x [lindex $Compass($id) 1]
+ set n_y [lindex $Compass($id) 2]
+ set e_x [lindex $Compass($id) 3]
+ set e_y [lindex $Compass($id) 4]
+ set trans [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set n_x 0.0 ; set n_y 1.0
+ set e_x 1.0 ; set e_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set trans 0
+ set Compass($id) { 0.0 0.0 1.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($n_y,$n_x)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the graphics.
+ send imagewin setColorIndex $compassColor
+ send imagewin setFillType solid
+
+ # Now draw the parts of the compass.
+ drawCompassAxes $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale \
+ $pcx $pcy
+ drawCompassLabels $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale\
+ $pcx $pcy $xlab $ylab
+ drawCompassPtr $n_x $n_y $e_x $e_y $trans $xflip $yflip $scale \
+ $pcx $pcy $angle
+
+ # Reset the logical resolution of the window.
+ send imagewin setLogRes $sv_xl $sv_yl
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+proc drawCompassAxes {n_x n_y e_x e_y trans xflip yflip scale pcx pcy} \
+{
+ set cpoints { }
+ lappend cpoints [list $e_x $e_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $n_x $n_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($trans > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($trans > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the compass axes.
+ send imagewin drawPolyline $pts
+}
+
+proc drawCompassLabels {n_x n_y e_x e_y trans xflip yflip scale pcx pcy xlab ylab} \
+{
+
+ set pts { }
+ set lpoints { }
+
+ set xo [expr (0.2 * [expr "($xflip > 0) ? -1 : 1"])]
+ set yo [expr (0.2 * [expr "($yflip > 0) ? 1 : -1"])]
+
+ lappend lpoints [list [expr "$e_x+$xo"] $e_y ]
+ lappend lpoints [list $n_x [expr "$n_y+$yo"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($trans > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($trans > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 0] [lindex $pts 1] $xlab
+ send imagewin drawAlphaText [lindex $pts 2] [lindex $pts 3] $ylab
+}
+
+proc drawCompassPtr {n_x n_y e_x e_y trans xflip yflip scale pcx pcy angle} \
+{
+
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+
+ # Initialize the drawing points.
+ set pts {}
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($trans > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($trans > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($n_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($n_y - ($sx * $sino + $sy * $coso))]
+
+ # Get the scaled position.
+ set sx [expr ($scale * $rx)]
+ set sy [expr ($scale * $ry)]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ lappend pts $rx $ry
+ }
+
+ # Draw the compass pointer.
+ send imagewin drawPolygon $pts
+}
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
diff --git a/vendor/x11iraf/ximtool/gui/display.res b/vendor/x11iraf/ximtool/gui/display.res
new file mode 100644
index 00000000..155d8e17
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/display.res
@@ -0,0 +1,451 @@
+
+set Resources(display_panel) { \
+
+ !================================
+ ! Main Display Control Panel.
+ !================================
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+
+ *blinkFrame1.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame2.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame3.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame4.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *matchButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *registerButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *autoregButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -5 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ -5 \
+ controlBox < +inf * > \
+ -5 \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 7
+
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ vertical { \
+ 3 < -3 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 3 < -3 > \
+ } \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 1
+ *frameData.width: 150
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 7
+ *frameSelect.innerOffset: 2
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame
+
+ *frameBox.layout: vertical { \
+ 3 \
+ horizontal { -2 frlistBox < * +inff -inff > } \
+ 3 < +inf -3 > \
+ horizontal { prevFrame < +inf -inf * > 4 nextFrame < +inf -inf * > } \
+ }
+ *framePort.allowVert: True
+ *framePort.allowHoriz: False
+ *framePort.useRight: True
+ *framePort.height: 80
+
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*frame1.label: 1\ \
+ *frameBox*frame2.label: 2\ \
+ *frameBox*frame3.label: 3\ \
+ *frameBox*frame4.label: 4\ \
+
+ *frameBox*frame5.label: 5\ \
+ *frameBox*frame6.label: 6\ \
+ *frameBox*frame7.label: 7\ \
+ *frameBox*frame8.label: 8\ \
+ *frameBox*frame9.label: 9\ \
+ *frameBox*frame10.label: 10\
+ *frameBox*frame11.label: 11\
+ *frameBox*frame12.label: 12\
+ *frameBox*frame13.label: 13\
+ *frameBox*frame14.label: 14\
+ *frameBox*frame15.label: 15\
+ *frameBox*frame16.label: 16\
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xxx
+ *frameBox*nextFrame.label: xxx
+
+ *frameList*location: 0 0 50 20
+ *frameList.layout: vertical { \
+ frame1 < +inf * >\
+ frame2 < +inf * >\
+ frame3 < +inf * >\
+ frame4 < +inf * >\
+ frame5 < +inf * >\
+ frame6 < +inf * >\
+ frame7 < +inf * >\
+ frame8 < +inf * >\
+ frame9 < +inf * >\
+ frame10 < +inf * >\
+ frame11 < +inf * >\
+ frame12 < +inf * >\
+ frame13 < +inf * >\
+ frame14 < +inf * >\
+ frame15 < +inf * >\
+ frame16 < +inf * >\
+ }
+
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 7
+ *zoomBox.shrinkToFit: True
+ *zoomBox*TextButton.frameWidth: 1
+ *zoomBox*TextButton.outerOffset: 0
+
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { toggleZoom < +inf * +inf > 1 } \
+ 1 \
+ vertical { 1 < +inf > z5 1 < +inf > z3 0 < +inf > } \
+ 1 \
+ vertical { zoomIn < +inf * +inf > 1 } \
+ } \
+ 1 \
+ horizontal { \
+ 1 < +inf > \
+ d8 1 d4 1 d2 1 x1 1 z2 1 z4 1 z8 \
+ 1 < +inf > \
+ } \
+ 1 \
+ horizontal { \
+ vertical { 1 zoomOut < +inf * +inf > } \
+ 1 \
+ vertical { 0 < +inf > d3 1 < +inf > d5 1 < +inf > } \
+ 1 \
+ vertical { 1 centerFrame < +inf * +inf > } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 2
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 2
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 2
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 2
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.layout: horizontal { \
+ 2 < -2 > \
+ aspect < +inf * > 2 \
+ flipX < +inf * > 2 \
+ flipY < +inf * > 2 \
+ flipXY < +inf * > 2 \
+ clearFrame < +inf * > 2 \
+ fitFrame < +inf * > \
+ 2 < -2 > \
+ }
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 7
+
+ *enhance*Viewport.allowVert: True
+ *enhance*Viewport.allowHoriz: False
+ *enhance*Viewport.useRight: False
+ *enhance*Viewport.resizeable: True
+ *enhance*Scrollbar.width: 17
+ *enhance*Scrollbar.minimumThumb: 10
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 2 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { -1 contrastLabel 3 < -3 > brightnessLabel -1 } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*frameType: sunken
+ *enhance*frameWidth: 1
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+
+ *colorlist.width: 100
+ *colorlist.height: 98
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 17
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 17
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+
+ ! ---------------------
+ ! BLINK/REGISTER
+ ! ---------------------
+ *blinkBox.label: Blink/Register
+ *blinkBox.location: 0 0 235 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 7
+ *blinkBox*TextToggle.frameWidth: 1
+
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkPanel < -50% * > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ vertical { \
+ 2 matchButton < +inf * > 4 < -4 > registerButton < +inf * > \
+ } \
+ 5 < -5 > \
+ vertical { \
+ 1 blinkButton < +inf * > 4 < -4 > autoregButton < +inf * > \
+ } \
+ } \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *blink.TextToggle.location: 0 0 102 23
+ *blink.TextToggle.frameWidth: 1
+ *blink*TextToggle.highlightColor: yellow
+ *blink*TextToggle.offIcon: square0s
+ *blink*TextToggle.onIcon: square1s
+ *blink*TextToggle.outerOffset: 1
+ *blink*Command.height: 27
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+
+ *blinkFramesLabel.label: Frames List:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkPanel.label: x
+ *blinkPanel.width: 20
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 1
+ *BRtext.width: 40
+ *BRtext.height: 23
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+ *autoregButton.label: Auto-Register
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 7
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 20
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox.TextToggle.highlightThickness: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *magnifierButton.label: Magnifier
+ *warningsButton.label: Warnings
+ *peakupButton.label: Centroid Peaks
+ *peakupButton.on: True
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 7
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/func.tcl b/vendor/x11iraf/ximtool/gui/func.tcl
new file mode 100644
index 00000000..3144e214
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/func.tcl
@@ -0,0 +1,202 @@
+
+################################################################################
+# CURSOR CENTEROID AND AUTO-REGISTER FUNCTIONS.
+################################################################################
+
+# Set the centroiding box size.
+set ctid 0
+set cid 0
+
+proc cbxDestroy args \
+{
+ global centerBoxSize cid ctid
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+}
+
+proc setCtrBoxSize { x y delta args } \
+{
+ global centerBoxSize cid ctid
+ global cpXscale cpYscale
+
+ incr centerBoxSize $delta
+ if {$centerBoxSize <= 1} { set centerBoxSize 1 }
+
+ # Kill off any old markers before drawing the new one.
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr cid
+ send imagewin createMarker cbm$cid \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $x \
+ y $y \
+ width [expr $cpXscale * $centerBoxSize] \
+ height [expr $cpXscale * $centerBoxSize] \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ctid [ postTimedCallback cbxDestroy 500]
+}
+
+
+# Box size is half-width of the marker size. Value is the slider value.
+set focusBoxSize $winWidth
+set focusValue 100.0
+set fid 0
+set ftid 0
+set moving 0
+
+proc setFocusBoxSize { sz args } \
+{
+ global focusBoxSize fid ftid focusValue moving
+ global winWidth winHeight
+
+
+ if { $moving == 0 } {
+ return done
+ }
+
+ if { $winWidth < $winHeight } {
+ set max [expr $winWidth / 2 - 64]
+ } else {
+ set max [expr $winHeight / 2 - 64]
+ }
+ set focusBoxSize [expr 64 + ($sz * $max) - 1]
+ #send client setOption cmfocus [expr ($focusBoxSize / 2)]
+ send client setOption cmfocus $focusBoxSize
+
+ # Destroy any existing markers.
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr fid
+ send imagewin createMarker fm$fid \
+ type box \
+ createMode noninteractive \
+ lineColor green \
+ lineWidth 4 \
+ x [expr $winWidth / 2] \
+ y [expr $winHeight / 2] \
+ width $focusBoxSize \
+ height $focusBoxSize \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ftid [ postTimedCallback fbxDestroy 500]
+ set moving 0
+}
+
+proc fbxDestroy args \
+{
+ global fid ftid moving
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+}
+
+proc setFocusSize { widget cbtype x y } \
+{
+ global focusValue ftid moving
+
+ # Only update once we've stopped the movement.
+ if { $x == $focusValue && $moving == 1 } {
+ set ftid [ postWorkProc setFocusBoxSize $x ]
+ } else {
+ set moving 1
+ }
+ set focusValue $x
+} ; send focusSlider addCallback setFocusSize scroll
+
+
+# Compute a centroid offset for the current position to peak-up on the
+# feature.
+
+proc centroid { x y type args } \
+{
+ global centerBoxSize
+ global cpXscale cpYscale
+
+ # Convert to image coords.
+ set sz [expr "int ($centerBoxSize * $cpXscale)"]
+
+ # Get the centroid position.
+ if {$type != "min"} {
+ if {[send peakupButton get on]} {
+ set center [ send client centroid $x $y $sz ]
+ } else {
+ set center [ send client centroid $x $y $sz max ]
+ }
+ } else {
+ set center [ send client centroid $x $y $sz min ]
+ }
+
+ # Now reposition the cursor.
+ set xoff [lindex $center 0 ]
+ set yoff [lindex $center 1 ]
+ move_cursor $xoff $yoff
+}
+
+
+# Set the auto-register center offset position
+proc offset { x y args } \
+{
+ global frame blinkFrames auto_reg
+ global frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # No-op of auto-register isn't on.
+ if { $auto_reg == 0 } {
+ Wexec client "Auto-Register is not enabled!"
+ return
+ }
+
+ # If we're not in the blink frames list ignore the request.
+ if { [string first $frame $blinkFrames] == -1 } {
+ Wexec client "Frame not in current\nregister list."
+ return
+ }
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set xoff [expr "int ($rx) - $frameCenterX($frame)" ]
+ set yoff [expr "int ($ry) - $frameCenterY($frame)" ]
+
+ set frameOffsetX($frame) $xoff
+ set frameOffsetY($frame) $yoff
+
+ # Adjust the display.
+ send client setOffset $xoff $yoff
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/global.res b/vendor/x11iraf/ximtool/gui/global.res
new file mode 100644
index 00000000..c91dde63
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/global.res
@@ -0,0 +1,161 @@
+
+set Resources(global) { \
+
+ !---------------------------------------------------------
+ ! Define some global widget resources for the main panels.
+ !---------------------------------------------------------
+ *shadowWidth: 1
+ *background: #c4c4c4
+! *foreground: black
+ *Arrow.width: 16
+ *Arrow.height: 25
+ *Text*height: 21
+ *Command.height: 21
+ *Command.highlightThickness: 1
+ *MenuButton.height: 21
+ *MenuButton.highlightThickness: 1
+ *Label.borderWidth: 0
+ *Label.shadowWidth: 0
+ *TextButton.shadowWidth: 0
+ *TextButton.highlightThickness: 1
+ *TextToggle*borderWidth: 0
+ *TextToggle.highlightThickness: 0
+ *Toggle.highlightThickness: 1
+ *Group.shrinkToFit: True
+
+ *Arrow.foreground: gray
+ *Arrow.background: #adadad
+ *Text*background: #adadad
+ *AsciiText*background: #adadad
+ *TextBox.background: #adadad
+ *MultiList*background: #adadad
+ *Slider2d.thumbColor: #c4c4c4
+
+
+ !-------------------------------------------------------------
+ ! Define resources to take advantage of the 3D scrollbar look.
+ !-------------------------------------------------------------
+ *Scrollbar*background: #c4c4c4
+ *Scrollbar*shadowWidth: 1
+ *Scrollbar*width: 15
+ *Scrollbar*height: 15
+ *Scrollbar*cursorName: top_left_arrow
+ *Scrollbar*pushThumb: true
+
+ *HTML.Scrollbar.shadowWidth: 1
+ *HTML*Scrollbar*width: 15
+ *HTML*Scrollbar*height: 15
+
+
+ !----------------------------------------
+ ! Menu resources giving a shadow effect.
+ !----------------------------------------
+ *SmeBSB.leftMargin: 10
+ *SmeBSB.rightMargin: 5
+ *SmeBSB.shadowWidth: 2
+ *SmeBSB.foreground: #e5e5e5
+ *SmeBSB.background: SteelBlue
+ *SimpleMenu.background: #c4c4c4
+ *SimpleMenu.borderWidth: 2
+ *SimpleMenu.borderColor: black
+ *SimpleMenu.line1.foreground: #9c9c9c
+ *SimpleMenu.line2.foreground: #e8e8e8
+ *SimpleMenu.line3.foreground: #9c9c9c
+ *SimpleMenu.line4.foreground: #e8e8e8
+ *SimpleMenu.line5.foreground: #9c9c9c
+ *SimpleMenu.line6.foreground: #e8e8e8
+ *SimpleMenu.line7.foreground: #9c9c9c
+ *SimpleMenu.line8.foreground: #e8e8e8
+ *SimpleMenu.line9.foreground: #9c9c9c
+ *SimpleMenu.line10.foreground: #e8e8e8
+ *SimpleMenu.line11.foreground: #9c9c9c
+ *SimpleMenu.line12.foreground: #e8e8e8
+ *SimpleMenu.line13.foreground: #9c9c9c
+ *SimpleMenu.line14.foreground: #e8e8e8
+ *SimpleMenu.line15.foreground: #9c9c9c
+ *SimpleMenu.line16.foreground: #e8e8e8
+ *SimpleMenu.line17.foreground: #9c9c9c
+ *SimpleMenu.line18.foreground: #e8e8e8
+ *SimpleMenu.line19.foreground: #9c9c9c
+ *SimpleMenu.line20.foreground: #e8e8e8
+ *SimpleMenu.line21.foreground: #9c9c9c
+ *SimpleMenu.line22.foreground: #e8e8e8
+ *SimpleMenu.line23.foreground: #9c9c9c
+ *SimpleMenu.line24.foreground: #e8e8e8
+ *SimpleMenu.line25.foreground: #9c9c9c
+ *SimpleMenu.line26.foreground: #e8e8e8
+ *SimpleMenu.line27.foreground: #9c9c9c
+ *SimpleMenu.line28.foreground: #e8e8e8
+ *SimpleMenu.line29.foreground: #9c9c9c
+ *SimpleMenu.line30.foreground: #e8e8e8
+ *SimpleMenu.line31.foreground: #9c9c9c
+ *SimpleMenu.line32.foreground: #e8e8e8
+ *SimpleMenu.line33.foreground: #9c9c9c
+ *SimpleMenu.line34.foreground: #e8e8e8
+ *SimpleMenu.line35.foreground: #9c9c9c
+ *SimpleMenu.line36.foreground: #e8e8e8
+ *SimpleMenu.line37.foreground: #9c9c9c
+ *SimpleMenu.line38.foreground: #e8e8e8
+ *SimpleMenu.line39.foreground: #9c9c9c
+ *SimpleMenu.line40.foreground: #e8e8e8
+
+
+ !---------------------------------------------
+ ! Fixups for 24-bit displays
+ !---------------------------------------------
+ *hFindEntry.background: #adadad
+ *hdrIGText.background: #adadad
+ *hdrKGText.background: #adadad
+ *hfEntry.background: #adadad
+ *printcmd.background: #adadad
+ *titleString.background: #adadad
+ *fnameText.background: #adadad
+ *imtemplateText.background: #adadad
+ *z1Value.background: #adadad
+ *z2Value.background: #adadad
+ *nsampValue.background: #adadad
+ *saveFile.background: #adadad
+ *infoText.background: #adadad
+ *wtName.background: #adadad
+ *wtTitle.background: #adadad
+ *wtFBCfg.background: #adadad
+ *wtIPixval.background: #adadad
+ *wtSPixval.background: #adadad
+ *wtBPixval.background: #adadad
+ *wtWcs1.background: #adadad
+ *wtWcs2.background: #adadad
+ *wtWcs3.background: #adadad
+ *wtWcs4.background: #adadad
+ *wcsIsmCmd.background: #adadad
+ *tclEntry.background: #adadad
+
+ *hFindEntry.foreground: #000000
+ *hdrIGText.foreground: #000000
+ *hdrKGText.foreground: #000000
+ *hfEntry.foreground: #000000
+ *printcmd.foreground: #000000
+ *titleString.foreground: #000000
+ *fnameText.foreground: #000000
+ *imtemplateText.foreground: #000000
+ *z1Value.foreground: #000000
+ *z2Value.foreground: #000000
+ *nsampValue.foreground: #000000
+ *saveFile.foreground: #000000
+ *infoText.foreground: #000000
+ *wtName.foreground: #000000
+ *wtTitle.foreground: #000000
+ *wtFBCfg.foreground: #000000
+ *wtIPixval.foreground: #000000
+ *wtSPixval.foreground: #000000
+ *wtBPixval.foreground: #000000
+ *wtWcs1.foreground: #000000
+ *wtWcs2.foreground: #000000
+ *wtWcs3.foreground: #000000
+ *wtWcs4.foreground: #000000
+ *wcsIsmCmd.foreground: #000000
+ *tclEntry.foreground: #000000
+}
+
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui/global.tcl b/vendor/x11iraf/ximtool/gui/global.tcl
new file mode 100644
index 00000000..38115f93
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/global.tcl
@@ -0,0 +1,147 @@
+
+
+##############################################################################
+# Utility Procedures.
+##############################################################################
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 2.0BETA"
+
+set winWidth [send imagewin get width ] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set appWidth [send display get width ] ;# application window width
+set appHeight [send display get height] ;# application window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set ruler none ;# selected ruler
+set ruleno 0 ;# used to name new rulers
+set blinkFrames "1 2" ;# list of blink frames
+set auto_reg 0
+
+set panel_up 0 ;# control panel mapped
+set help_up 0 ;# help panel mapped
+set ism_enable 0 ;# ISM is running
+set ism_capable 1 ;# Client is ISM capable
+set frameCache(0) "" ;# ISM frame cache
+
+set ctype "equatorial" ;# default coord type
+set eqtype "fk5" ;# default equatorial type
+
+# Global constants.
+set MAX_FRAMES 16 ;# max frame buffers
+
+# TCL constants
+set tcl_precision 8
+
+
+
+# Window resize callbacks.
+proc winResize {w width height} {
+ global winWidth winHeight
+
+ if {$width <= 1 || $height <= 1} \
+ return
+
+ set winWidth $width
+ set winHeight $height
+} ; send imagewin addCallback winResize resize
+
+proc appResize {w width height} \
+{
+ global doHcut doVcut cutXPos cutYPos
+ global appWidth appHeight
+
+ set appWidth $width
+ set appHeight $height
+
+ catch {
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ }
+} ; #send imagewin addCallback appResize resize
+
+
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { showToolBar }
+ { showPanelBar }
+ { warnings }
+ { centerBoxSize }
+ { peakCentroid }
+ { highlight }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set frameOffsetX($i) 0 ;# X register offset
+ set frameOffsetY($i) 0 ;# Y register offset
+ set enhancement($i) none ;# colortable enhancement
+}
+
+
+#trace variable frameOffsetX w debug_pvar ;# Debug stuff
+#trace variable frameOffsetY w debug_pvar
+#trace variable frameZoomX w debug_pvar
+#trace variable frameZoomY w debug_pvar
+#trace variable frameScaleX w debug_pvar
+#trace variable frameScaleY w debug_pvar
+
+proc debug_pvar { name element op } \
+{
+ if {$element != ""} {
+ set name ${name}($element)
+ }
+ upvar $name x
+ puts "Variable $name set to $x"
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/hdr.obj b/vendor/x11iraf/ximtool/gui/hdr.obj
new file mode 100644
index 00000000..5940a85a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/hdr.obj
@@ -0,0 +1,36 @@
+
+set Objects(hdr_panel) { \
+ toplevel TopLevelShell hdr_panel\
+ hdr_panel Layout hdrLayout\
+\
+ hdrLayout Frame hdrMenuFrame\
+ hdrMenuFrame Layout hdrMenuBar\
+ hdrMenuBar Command hdrClose\
+\
+ hdrLayout Group hdrObjGroup\
+ hdrObjGroup Layout hdrObjLayout\
+ hdrObjLayout Label hdrObjLabel\
+ hdrObjLayout MenuButton hdrObjMenu\
+\
+ hdrLayout Frame hdrTabFrame\
+ hdrTabFrame Tabs hdrTabs\
+ hdrTabs Group hdrHdrGroup\
+ hdrTabs Group hdrWcsGroup\
+\
+ hdrHdrGroup Layout hdrHdrLayout\
+ hdrHdrLayout Frame hFindFrame\
+ hFindFrame AsciiText hFindEntry\
+ hdrHdrLayout Command hdrFilter\
+ hdrHdrLayout Command hdrFind\
+ hdrHdrLayout Command hdrClear\
+ hdrHdrLayout HTML hdrText\
+\
+ hdrWcsGroup Layout hdrWcsLayout\
+ hdrWcsLayout Group hdrInfoGroup\
+ hdrInfoGroup Frame hdrIGFrame\
+ hdrIGFrame AsciiText hdrIGText\
+ hdrWcsLayout Group hdrKeywGroup\
+ hdrKeywGroup Frame hdrKGFrame\
+ hdrKGFrame AsciiText hdrKGText\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/hdr.res b/vendor/x11iraf/ximtool/gui/hdr.res
new file mode 100644
index 00000000..44e7c79a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/hdr.res
@@ -0,0 +1,138 @@
+
+set Resources(hdr_panel) { \
+
+ *hdr_panel.geometry: 550x600
+ *hdr_panel.title: Image Header
+
+ *hdr_panel*SimpleMenu.borderColor: black
+ *hdr_panel*SimpleMenu.borderWidth: 1
+ *hdr_panel*SimpleMenu.foreground: White
+ *hdr_panel*SimpleMenu.background: SteelBlue
+
+ *hdrMenuFrame.frameType: raised
+ *hdrMenuFrame.frameWidth: 2
+ *hdrLayout.layout: vertical { \
+ hdrMenuFrame < +inf -inf * > \
+ hdrObjGroup < +inf -inf * > \
+ hdrTabFrame < +inf -inf * +inf -inf> \
+ }
+
+ *hdrMenuBar*borderWidth: 0
+ *hdrMenuBar*Command.internalHeight: 5
+ *hdrMenuBar*Command.internalWidth: 12
+ *hdrMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> hdrClose 7 } \
+ 5 < -5 > \
+ }
+ *hdrClose.label: Dismiss
+
+ *hdrObjGroup.label:
+ *hdrObjGroup.outerOffset: 7
+ *hdrObjGroup.innerOffset: 4
+ *hdrObjLayout.borderWidth: 0
+ *hdrObjLayout.layout: vertical { \
+ horizontal { hdrObjLabel 2 hdrObjMenu < +inf -inf * > 2 } \
+ }
+ *hdrObjLabel.label: Image Name:
+ *hdrObjMenu.label:
+ *hdrObjMenu.justify: left
+ *hdrObjMenu.font: 7x13
+ *hdrObjMenu.menuName: objMenu
+ *hdrObjMenu.internalWidth: 5
+ *hdrObjMenu.internalHeight: 1
+ *hdrObjMenu.shadowWidth: 1
+
+ *hdrHdrGroup.tabLabel: Image Header
+ *hdrHdrGroup.label:
+ *hdrHdrGroup.outerOffset: 7
+ *hdrHdrGroup.innerOffset: 5
+ *hdrHdrLayout.borderWidth: 0
+ *hdrHdrLayout.layout: vertical { \
+ horizontal { \
+ hdrFilter 2 hFindFrame < +inf -inf * > 2 hdrFind 1 hdrClear \
+ } \
+ 5 \
+ hdrText < +inf -inf * +inf -inf > \
+ }
+ *hFindEntry*editType: edit
+ *hFindEntry*font: 7x13
+ *hFindEntry*displayCaret: True
+ *hFindEntry*width: 150
+ *hFindFrame.frameWidth: 1
+ *hFindFrame*borderWidth: 0
+ *hFindFrame.frameType: sunken
+ *hFindFrame.width: 150
+ *hFindFrame.height: 23
+ *hdrFilter.label: Keyword Filter
+ *hdrFind.label: Search
+ *hdrClear.label: Clear
+
+ ! Resources if the header text widget is AsciiText
+! *hdrText*scrollVertical: Always
+! *hdrText*scrollHorizontal: Always
+! *hdrText*editType: edit
+! *hdrText*font: 7x13
+! *hdrText*background: #c4c4c4
+! *hdrText*displayCaret: False
+! *hdrText*bottomMargin: 10
+! *hdrText*Scrollbar.width: 15
+! *hdrText*Scrollbar.height: 15
+
+ ! Resources if the header text widget is HTML
+ *hdrText.width: 600
+ *hdrText.height: 500
+ *hdrText.anchorUnderlines: 1
+ *hdrText.visitedAnchorUnderlines: 1
+ *hdrText.verticalScrollOnRight: True
+ *hdrText.plainFont: 7x13
+ *hdrText.marginWidth: 5
+ *hdrText.marginHeight: 5
+
+
+ *hdrWcsGroup.tabLabel: Image WCS Info
+ *hdrWcsGroup.label:
+ *hdrWcsGroup.outerOffset: 5
+ *hdrWcsGroup.innerOffset: 5
+ *hdrWcsGroup*Text*scrollVertical: whenNeeded
+ *hdrWcsGroup*Text*scrollHorizontal: whenNeeded
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*displayCaret: False
+ *hdrWcsGroup*Text*borderWidth: 0
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*font: 7x13
+ *hdrWcsGroup*Text*Scrollbar.width: 15
+ *hdrWcsGroup*Text*Scrollbar.height: 15
+ *hdrWcsLayout.borderWidth: 0
+ *hdrWcsLayout.layout: vertical { \
+ 2 < -2 > \
+ hdrInfoGroup < +inf -inf * > \
+ 2 < -2 > \
+ hdrKeywGroup < +inf -inf * +inf -inf > \
+ -4 \
+ }
+ *hdrInfoGroup.label: Basic WCS Information
+ *hdrInfoGroup.outerOffset: 7
+ *hdrInfoGroup.innerOffset: 0
+ *hdrIGFrame.frameType: sunken
+ *hdrIGFrame.frameWidth: 1
+ *hdrIGText.height: 130
+! *hdrIGText*background: black
+! *hdrIGText*foreground: yellow2
+ *hdrIGText*background: #adadad
+ *hdrIGText*foreground: black
+ *hdrWcsGroup*hdrIGText*scrollVertical: never
+ *hdrWcsGroup*hdrIGText*scrollHorizontal: never
+ *hdrWcsGroup*hdrIGText*font: 7x13
+ *hdrKeywGroup.label: WCS Header Keywords
+ *hdrKeywGroup.outerOffset: 7
+ *hdrKeywGroup.innerOffset: 5
+ *hdrKGFrame.frameType: sunken
+ *hdrKGFrame.frameWidth: 1
+ *hdrKGText*background: #c4c4c4
+ *hdrKGText*bottomMargin: 10
+
+ *hdrIGText*background: #c4c4c4
+ *hdrIGFrame.frameWidth: 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/hdr.tcl b/vendor/x11iraf/ximtool/gui/hdr.tcl
new file mode 100644
index 00000000..4dc7489a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/hdr.tcl
@@ -0,0 +1,105 @@
+
+################################################################################
+# Header Display Callbacks.
+################################################################################
+
+set hdrImage ""
+set hdrImageId ""
+set hdrKeywords "*"
+
+
+proc fitsHdrClose args \
+{
+ global hdr_up
+
+ send hdr_panel unmap
+ send imageHeader set on False
+ set hdr_up 0
+} ; send hdrClose addCallback fitsHdrClose
+
+proc ptFitsHeader {widget type state args} \
+{
+ global hdr_up
+
+ set hdr_up $state
+ if {$hdr_up == 1} {
+ send imageHeader set on True
+ send hdr_panel map
+ } else {
+ send imageHeader set on False
+ send hdr_panel unmap
+ }
+}; send imageHeader addCallback ptFitsHeader
+
+proc getHeader { name id } \
+{
+ global hdrImage hdrImageId hdrKeywords
+
+ set hdrImage $name
+ set hdrImageId $id
+ send hdrObjMenu set label $name
+ send hdrText setText ""
+ send hdrIGText set string ""
+ send hdrKGText set string ""
+
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+}
+
+proc hdrKeywFilter args \
+{
+ global hdrImageId hdrKeywords
+
+ set str [ send hFindEntry get string ]
+ if {$str != ""} {
+ set hdrKeywords $str
+ send hdrText setText ""
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+ }
+} ; send hdrFilter addCallback hdrKeywFilter
+
+
+# Set the image menu in the header panel.
+proc setHdrObjMenu { frame args } \
+{
+ global frameCache ism_enable
+
+ if {! $ism_enable} \
+ return
+
+ # Create the menu of images for the header panel.
+ set items { }
+ foreach i [list $frameCache($frame)] {
+ set l [lindex $i 0]
+ set lid [lindex $i 1]
+ regsub -all {[\[]} $l "\\\[" l2
+ catch {
+ lappend items [format "%s f.exec \{getHeader %s %d\}" $l $l2 $lid]
+ }
+ }
+ editMenu objMenu hdrObjMenu $items
+}
+
+
+# Search box for the header.
+proc hdrFind args \
+{
+ set phrase [send hFindEntry get string]
+
+ if { $phrase != "" } {
+ if {[send hdrText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send hdrText gotoId $id
+ send hdrText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }
+
+send hdrClear addCallback { send hFindEntry set string "" }
+
diff --git a/vendor/x11iraf/ximtool/gui/help.obj b/vendor/x11iraf/ximtool/gui/help.obj
new file mode 100644
index 00000000..36759f63
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/help.obj
@@ -0,0 +1,27 @@
+
+set Objects(help_panel) { \
+ toplevel TopLevelShell help_panel\
+ help_panel Layout helpLayout\
+ helpLayout Group helpMenuGroup\
+ helpMenuGroup Layout helpMenubar\
+ helpLayout Layout helpInfoLayout\
+\
+ helpMenubar Command helpClose\
+\
+ helpLayout Command helpBack\
+ helpLayout Command helpForward\
+ helpLayout Command helpHome\
+ helpLayout Frame hfFrame\
+ hfFrame AsciiText hfEntry\
+ helpLayout Command hfFind\
+ helpLayout Command hfClear\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText\
+\
+ helpInfoLayout Label helpIRAFLogo\
+ helpInfoLayout Label helpInfo1\
+ helpInfoLayout Label helpInfo2\
+ helpInfoLayout Label helpInfo3\
+ helpInfoLayout Label helpNOAOLogo\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/help.res b/vendor/x11iraf/ximtool/gui/help.res
new file mode 100644
index 00000000..affdeb2a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/help.res
@@ -0,0 +1,111 @@
+
+set Resources(help_panel) { \
+
+ !----------------------
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 500
+ *help_panel.height: 550
+ *helpLayout*borderWidth: 0
+ *helpLayout*Command.internalHeight: 4
+ *helpLayout*Command.internalWidth: 12
+ *helpLayout*HTML*shadowWidth: 1
+ *helpLayout*helpText*Scrollbar.shadowWidth: 1
+
+ *helpMenuGroup.label:
+ *helpMenuGroup.height: 45
+ *helpMenuGroup.outerOffset: 0
+ *helpMenuGroup.innerOffset: 0
+ *helpMenuGroup.frameType: raised
+ *helpMenubar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 20 < +inf -20 > helpClose 7 } \
+ 5 < -5 > \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Dismiss
+
+
+ *hfEntry*editType: edit
+ *hfEntry*font: 7x13
+ *hfEntry*displayCaret: True
+ *hfFrame.frameWidth: 1
+ *hfFrame.frameType: sunken
+ *hfFrame.width: 250
+ *hfFind.label: Search
+ *hfFind.shadowWidth: 1
+ *hfClear.label: Clear
+ *hfClear.shadowWidth: 1
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { helpMenuGroup < +inf -inf * > } \
+ 5 \
+ horizontal { \
+ 5 \
+ helpBack 2 helpForward 2 helpHome \
+ 20 < +inf -20 > \
+ hfFrame < +inf -inf * > 3 hfFind 1 hfClear \
+ 5 \
+ } \
+ 5 \
+ horizontal { helpTextFrame < +inf -inf * +inf -inf > } \
+ horizontal { helpInfoLayout < +inf -inf * > } \
+ -1 \
+ }
+ *helpTextFrame.frameWidth: 1
+ *helpTextFrame.frameType: sunken
+ *helpText.width: 600
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText*Scrollbar.shadowWidth: 1
+ *helpText.plainFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainboldFont: -adobe-courier-bold-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainitalicFont: -adobe-courier-medium-o-normal-*-12-*-*-*-*-*-*-*
+! *helpText.boldFont: 6x12bold
+
+
+ ! Contact info at the bottom of the panel.
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { 5 helpIRAFLogo 5 } \
+ 1 < +inf > \
+ vertical { \
+ 5 \
+ helpInfo1 < +inf -inf * +inf -inf > \
+ helpInfo2 < +inf -inf * +inf -inf > \
+ helpInfo3 < +inf -inf * +inf -inf > \
+ 5 \
+ } \
+ 1 < +inf > \
+ vertical { 5 helpNOAOLogo 5 } \
+ 5 \
+ }
+ *helpInfo1.label: XIMTOOL_VERSION
+ *helpInfo2.label: For help or questions: http://iraf.net
+ *helpInfo3.label: \
+ NOAO is operated by AURA under cooperative agreement with the NSF
+
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalHeight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: SteelBlue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalHeight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: SteelBlue
+ *helpInfoLayout.helpNOAOLogo.background: white
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/help.tcl b/vendor/x11iraf/ximtool/gui/help.tcl
new file mode 100644
index 00000000..cc55e978
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/help.tcl
@@ -0,0 +1,209 @@
+
+###############################################
+# Define procedure for the help panel
+###############################################
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+send helpInfo1 set label $version
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+proc Help args \
+{
+ global help_up
+ if {$help_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set help_up 0
+ }
+}
+
+proc helpPanel args \
+{
+ global help_up
+ if {$help_up} {
+ send help_panel unmap
+ set help_up 0
+ } else {
+ send help_panel map
+ set help_up 1
+ }
+}
+
+proc panelHelp args \
+{
+ Help
+} ; send panelHelp addCallback panelHelp
+
+proc helpQuit args \
+{
+ global help_up
+ send help_panel unmap
+ set help_up 0
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } \
+{
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} \
+{
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack setSensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward setSensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward setSensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} \
+{
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args \
+{
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ send helpBack setSensitive True
+ } else {
+ send helpBack setSensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args \
+{
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack setSensitive False }
+ if {$linkIndex >= 0} { send helpForward setSensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args \
+{
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward setSensitive False
+ send helpBack setSensitive False
+}; send helpHome addCallback hlpHome
+
+
+proc helpFind args \
+{
+ set phrase [send hfEntry get string]
+
+ if { $phrase != "" } {
+ if {[send helpText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send helpText gotoId $id
+ send helpText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hfEntry hfFind } { send $w addCallback helpFind }
+
+send hfClear addCallback { send hfEntry set string "" }
+
diff --git a/vendor/x11iraf/ximtool/gui/imagewin.tcl b/vendor/x11iraf/ximtool/gui/imagewin.tcl
new file mode 100644
index 00000000..af1208d1
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/imagewin.tcl
@@ -0,0 +1,1155 @@
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } \
+{
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} \
+{
+ global frameMenuDescription nframes frames
+
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+
+ if {$nframes > 0} {
+
+ # Creates the Frames menu on the main image window.
+ set items { }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send client setFrame $i\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ editMenu frameMenu frameButton $items
+
+ # Create the menu for the blink frames list.
+ set items { }
+ for {set i 0} {$i <= $nframes} {incr i} {
+ set j [expr ($i + 1)]
+ if {$i == 0} {
+ set s "\"none\" f.exec \{send brFrameBTN set label \" \"\}"
+ lappend items $s
+ } else {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send brFrameBTN set label $l\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ regsub -all BTN $items $i nmenu
+ editMenu frame${i}Menu brFrame$i $nmenu
+ }
+
+ } else {
+ editMenu frameMenu frameButton $frameMenuDescription
+
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ editMenu frame${i}Menu brFrame$i $frameMenuDescription
+ }
+ }
+ }
+
+ for {set i 1} {$i <= 16} {incr i} {
+ if {$i <= $nframes} {
+ send frame$i map
+ } else {
+ send frame$i unmap
+ }
+ }
+
+ if {$nframes > 2} {
+ setAllTileFrames
+ }
+}; send nframes addCallback setNFrames
+
+
+# Set the default main window frame menu.
+set frameMenuDescription {
+ {" 1" f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ {" 2" f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ {" 3" f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ {" 4" f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+
+
+
+# Initialize the frame lists panels (blink panel and tile tab).
+for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label [format "%2d" $i]
+ send tFrame$i set label [format "%2d" $i]
+ if {$i <= 4} {
+ send brFrame$i setSensitive True
+ send tFrame$i "setSensitive True ; set state 1"
+ } else {
+ send brFrame$i setSensitive False
+ send tFrame$i "setSensitive False ; set state 0"
+ }
+ createMenu frame${i}Menu brFrame$i $frameMenuDescription
+}
+
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} \
+{
+ global frame
+
+ set frame $new
+ send frameButton set label [format "%2d" $frame]
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+ wcsFmtFBConfig
+ drawCompass
+}; send frame addCallback frameChanged
+
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} \
+{
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+
+ wcsFmtFBConfig
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frameOffsetX frameOffsetY
+ global frame auto_reg blinkFrames
+
+ # Update the position.
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+ set frameOffsetX($frame) [lindex $new 6]
+ set frameOffsetY($frame) [lindex $new 7]
+
+ # If auto-registering is enabled, do it now, but only when we're updating
+ # the current display frame, and only if that frame is in the framelist.
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+
+ foreach f $blinkFrames {
+ if {$f != $frame} {
+ set frameZoomX($f) $frameZoomX($frame)
+ set frameZoomY($f) $frameZoomY($frame)
+ set frameCenterX($f) $frameCenterX($frame)
+ set frameCenterY($f) $frameCenterY($frame)
+ set frameScaleX($f) $frameScaleX($frame)
+ set frameScaleY($f) $frameScaleY($frame)
+ }
+ }
+ }
+ deleteAllRulers
+
+}; send frameView addCallback setFrameView
+
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} \
+{
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} \
+{
+ set lab [string trimright $new]
+ send imageTitle set label $lab
+
+ set image [lindex [ split $lab '-'] 0 ]
+ wcsFmtImname $image
+
+ set title [lindex [ split $lab '-'] 1 ]
+ wcsFmtImtitle $title
+ deleteAllRulers
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send xflipButton set state [true $new]
+ } else {
+ send yflipButton set state [true $new]
+ }
+ deleteAllRulers
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+
+proc Quit args \
+{
+ global ism_enable
+
+ if {$ism_enable} {
+ catch { send wcspix quit }
+ }
+ send client Quit
+}
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x ; flipRegister }
+proc yflip args { send client flip y ; flipRegister }
+proc xyflip args { send client flip x y ; flipRegister }
+proc flipRegister args \
+{
+ global auto_reg frame blinkFrames
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+ }
+}
+
+
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00}
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00}
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f}
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00}
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap bar 10 10 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap dot 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+ 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap null 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+catch { send controlButton "set bitmap panel; addCallback panel" }
+catch { send helpButton "set bitmap qmark; addCallback Help" }
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+send blinkPanel "set bitmap panel"
+
+
+
+# WINDOW the current frame.
+set old_cm_x 0
+set old_cm_y 0
+
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ # For efficiency we won't compute the sqrt of the distance but instead
+ # just compare the square. Use a threshold of 6 pixels so when we
+ # narrow in on the ROI we refine the colormap more precisely.
+
+ set diff [expr (($old_cm_x - $x) * ($old_cm_x - $x)) + \
+ (($old_cm_y - $y) * ($old_cm_y - $y))]
+
+ # Keep the old position.
+ set old_cm_x $x
+ set old_cm_y $y
+ if {$diff > 36} {
+ return
+ }
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+proc updateColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ set old_cm_x $x
+ set old_cm_y $y
+ send client updateColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+ global auto_reg frame frameOffsetX frameOffsetY
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs \
+ $xmag $ymag $xcen $ycen \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+# Pan the display frame one width/height in a given direction.
+proc moveFrame { xs ys args } \
+{
+ global winWidth winHeight frame
+ global frameWidth frameHeight
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # Get the step size for the new position.
+ set xstep_size [ expr "$xs * $winWidth / $frameZoomX($frame)" ]
+ set ystep_size [ expr "$ys * $winHeight / $frameZoomY($frame)" ]
+
+ # Set the boundaries so we only move up to the edges.
+ set xl [ expr "($winWidth / $frameZoomX($frame)) / 2 + 1" ]
+ set yl [ expr "($winHeight / $frameZoomY($frame)) / 2 + 1" ]
+ set xu [ expr "$frameWidth - $xl" ]
+ set yu [ expr "$frameHeight - $yl" ]
+
+ # Set the new center position.
+ set nxc [ expr "$frameCenterX($frame) + $xstep_size" ]
+ set nyc [ expr "$frameCenterY($frame) + $ystep_size" ]
+ if {$nxc < $xl} { set nxc $xl }
+ if {$nxc > $xu} { set nxc $xu }
+ if {$nyc < $yl} { set nyc $yl }
+ if {$nyc > $yu} { set nyc $yu }
+
+ # Finally, send the command to move the frame.
+ send client zoomAbs \
+ $frameZoomX($frame) $frameZoomY($frame) $nxc $nyc \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+!Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.dblline }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.dblline }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+
+# WCSBOX -- Real time coordinate display.
+
+set track_enable 0
+set last_x 0
+set last_y 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame pixtab_up tabTop
+ global frameWidth frameHeight redraw_compass
+ global ism_enable wcsLabels last_x last_y
+ global ct_warn plotSpeed doHcut doVcut
+
+
+ # If the cursor was frozen release it now.
+ if {$ct_warn} {
+ curtrack_destroy
+ }
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ scan $text "%g %g %g" nx ny nz
+ } else {
+ set text [format " %7.2f %7.2f %9.1f " $rx $ry $rz]
+ set nx $rx ; set ny $ry ; set nz $rz
+ }
+
+ # Update the coords panel and pixel table.
+ wcsFmtSValue $nz
+ if {$pixtab_up} {
+ updatePixelTable $x $y $nx $ny
+ }
+
+ # If the ISM is running update the coords box with all the selected
+ # options, otherwise just write the one-line frame wcs coords.
+ if {$ism_enable} {
+ updateCoordsBox
+
+ } else {
+ # Update the on-screen marker.
+ if {$track_enable} {
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+
+ # Update the control panel readout (always done).
+ if {$wcsLabels} {
+ set ln [format " X: %12s Y: %12s WCS: Display" $nx $ny]
+ } else {
+ set ln [format " %12s %12s Display" $nx $ny]
+ }
+ send wtWcs1 set string $ln
+
+ if {$redraw_compass} \
+ drawCompass
+ }
+
+
+ # Update the cut-plots if enabled. If we're set for speed the don't
+ # track the really large cursor motions, wait till the differences are
+ # small indicating a finer motion.
+ if {$doHcut || $doVcut} {
+ set dist [ expr "sqrt(pow(($last_x - $x),2) + pow(($last_y - $y),2))" ]
+ if {($plotSpeed && $dist < 30) || ! $plotSpeed} {
+ cutPlots $x $y
+ }
+ }
+
+ # Save the position so we can track differences with last position.
+ set last_x $x
+ set last_y $y
+}
+
+
+proc setTrack {state} \
+{
+ global ism_enable track_enable wcsboxGeom
+ global winWidth winHeight up_todo
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 27ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ # Turn on the option toggles on the control panel.
+ foreach n {1 2 3 4} {
+ if {[send sysWcs$n get label] != "None"} {
+ send wiWcs$n set on True
+ }
+ }
+ if {$ism_enable} {
+ resizeCoordsBox $up_todo
+ }
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+
+ # Turn off the option toggles on the control panel.
+ foreach w {wiWcs1 wiWcs2 wiWcs3 wiWcs4} { send $w set on False }
+ resizeCoordsBox 0
+ }
+ updateCoordsBox
+}
+
+proc wcsboxDestroyCallback args \
+{
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args \
+{
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+ }
+}
+
+proc wcsboxMoved {marker event position} \
+{
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} \
+{
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+
+#---------------------
+# FRAME BLINK.
+#---------------------
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args \
+{
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args \
+{
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args \
+{
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args \
+{
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client updateColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec { panelTabToggle info_panel } }
+ { "Load" f.exec {
+ panelTabToggle load_panel
+ set panel_up 1
+ } }
+ { "Save" f.exec { Save } }
+ { "Save As..." f.exec { panelTabToggle save_panel } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec { panelTabToggle print_panel } }
+ { f.dblline }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Debug Panel" f.exec { tclPanel 1 } }
+ { "Quit" f.exec { Quit } }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.dblline }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.dblline }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.dblline }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Auto-Register" f.exec cpAutoRegister }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.dblline }
+ { "Control Panel" f.exec { panelTabToggle display_panel } }
+ { "Print Panel" f.exec { panelTabToggle print_panel } }
+ { "Load Panel" f.exec { panelTabToggle load_panel } }
+ { "Save Panel" f.exec { panelTabToggle save_panel } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+
+#-------------------------------
+# Frozen Cursor Warning Message
+#-------------------------------
+
+set ct_warn 0
+
+proc curtrack_msg { x y args } \
+{
+ global ct_warn last_x last_y winHeight winWidth
+
+
+ if {! $ct_warn == 0} {
+ return
+ }
+
+ send imagewin createMarker curtrack_warn {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 21
+ lineWidth 0
+ imageText true
+ textBgColor red
+ textColor yellow
+ visible true
+ sensitive true
+ activated true
+ x 5
+ y 5
+ }
+
+ send curtrack_warn "set text \{ CURSOR READOUT FROZEN \}"
+ set ypos [ expr ($winHeight - 25) ]
+ send curtrack_warn "markpos; setAttributes x 5 y $ypos; redraw"
+ send curtrack_warn "redraw noerase"
+ set ct_warn 1
+
+ # Mark the position of the cursor.
+ send imagewin createMarker x_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x 1 \
+ y $last_y \
+ width $winWidth \
+ height 1 \
+ activated True \
+ visible True \
+ sensitive False
+
+ send imagewin createMarker y_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $last_x \
+ y 1 \
+ width 1 \
+ height $winHeight \
+ activated True \
+ visible True \
+ sensitive False
+
+ # Raise the coordinate marker so we can see where we are.
+ send wcsbox raise
+}
+
+
+proc curtrack_destroy args \
+{
+ global ct_warn
+
+ if {$ct_warn} {
+ send curtrack_warn destroy
+ send x_curpos destroy
+ send y_curpos destroy
+ set ct_warn 0
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/info.res b/vendor/x11iraf/ximtool/gui/info.res
new file mode 100644
index 00000000..7fafa106
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/info.res
@@ -0,0 +1,58 @@
+
+set Resources(info_panel) { \
+
+ !--------------------
+ ! Information Panel
+ !--------------------
+ *infoLayout*borderWidth: 0
+ *infoLayout*Frame.frameType: sunken
+ *infoLayout*Frame.frameWidth: 1
+ *infoLayout*Command.internalWidth: 12
+ *infoLayout*Text*editType: read
+ *infoLayout*Text*scrollVertical: whenNeeded
+ *infoLayout*Text*scrollHorizontal: whenNeeded
+ *infoLayout*Text*displayCaret: False
+ *infoLayout*Scrollbar.background: #c4c4c4
+ *infoLayout*Scrollbar.width: 17
+ *infoLayout*Scrollbar.height: 17
+
+ *infoText.height: 240
+ *infoText*font: 6x13
+ *infoLayout.layout: vertical { \
+ infoBox < +inf -inf * > \
+ }
+
+ *infoBox.label:
+ *infoBox.outerOffset: 0
+ *infoBox.innerOffset: 3
+ *infoBoxL*TextToggle.frameType: raised
+ *infoBoxL*TextToggle.frameWidth: 1
+ *infoBoxL*TextToggle*outerOffset: 0
+ *infoBoxL*TextToggle*innerOffset: 1
+ *infoBoxL*TextToggle.location: 0 0 100 25
+ *infoBoxL*TextToggle*onIcon: square1s
+ *infoBoxL*TextToggle*offIcon: square0s
+ *infoBoxL*TextToggle*highlightColor: cyan
+ *infoBoxL.layout: vertical { \
+ infoFrame < +inf -inf * +inf -inf > 1 \
+ 4 \
+ horizontal { \
+ infoOptFr < +inf -inf * > 1 \
+ infoOptSvr < +inf -inf * > 1 \
+ infoOptClients < +inf -inf * > 1 \
+ infoOptWCS < +inf -inf * > 1 \
+ infoOptIsm < +inf -inf * > 1 \
+ infoOptFB < +inf -inf * > \
+ }\
+ 2 \
+ }
+ *infoOptFr.label: Frame
+ *infoOptFr.on: True
+ *infoOptSvr.label: Server
+ *infoOptWCS.label: WCS
+ *infoOptIsm.label: ISM
+ *infoOptClients.label: Clients
+ *infoOptFB.label: Imtoolrc
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/info.tcl b/vendor/x11iraf/ximtool/gui/info.tcl
new file mode 100644
index 00000000..3f0e89fc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/info.tcl
@@ -0,0 +1,86 @@
+
+################################################################################
+# INFO box.
+################################################################################
+
+set infoMode infoOptFr
+
+
+# Current Frame information.
+proc infoFrameUpdate args \
+{
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if { [send infoOptWCS get on] } {
+ send client info wcs
+ return
+ } elseif {! [send infoOptFr get on]} \
+ return
+
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set cntr [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $cntr]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+ set line9 [format "Offset:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXoff $cpYoff]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8 $line9
+ ]
+ }
+}
+set params {frame frameView nframes frameSize frameTitle enhancement}
+foreach p $params { send $p addCallback infoFrameUpdate }
+
+
+# Server Program State information.
+proc infoOptToggle { widget type state args } \
+{
+ global infoMode ismInfoText
+
+ if {$state} { set not False } else { set not True }
+
+ send $infoMode set on $not
+ set infoMode $widget
+
+ switch $widget {
+ infoOptFr { infoFrameUpdate }
+ infoOptSvr { set bp [send imagewin get basePixel]
+ set mc [send imagewin get maxColors]
+ send client info server $bp $mc
+ }
+ infoOptIsm { send infoText set string $ismInfoText }
+ infoOptClients { send client info clients }
+ infoOptWCS { send client info wcs }
+ infoOptFB { send client info imtoolrc }
+ }
+}
+set iopts {infoOptFr infoOptSvr infoOptIsm infoOptClients infoOptWCS infoOptFB }
+foreach w $iopts { send $w addCallback infoOptToggle }
+
+
+proc infoSetText { param old new } \
+{
+ send infoText set string $new
+} ; send info addCallback infoSetText
+
+
diff --git a/vendor/x11iraf/ximtool/gui/ism.tcl b/vendor/x11iraf/ximtool/gui/ism.tcl
new file mode 100644
index 00000000..0882f37b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/ism.tcl
@@ -0,0 +1,423 @@
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+#set Compass(0) { 0.0 1 1 0 X Y }
+set Compass(0) { 0.0 0.0 1.0 -1.0 0.0 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] ; drawCompass }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2] }
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+
+ #set xflip [lindex $argv 2]
+ #set yflip [lindex $argv 3]
+ #set transpose [lindex $argv 4]
+ #set xlab [lindex $argv 5]
+ #set ylab [lindex $argv 6]
+
+ set north_x [lindex $argv 2]
+ set north_y [lindex $argv 3]
+ set east_x [lindex $argv 4]
+ set east_y [lindex $argv 5]
+ set transpose [lindex $argv 6]
+ set xlab [lindex $argv 7]
+ set ylab [lindex $argv 8]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ #set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ set Compass($objid) [list $angle $north_x $north_y $east_x $east_y \
+ $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/ism.tcl.bak b/vendor/x11iraf/ximtool/gui/ism.tcl.bak
new file mode 100644
index 00000000..4dd43305
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/ism.tcl.bak
@@ -0,0 +1,411 @@
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+set Compass(0) { 0.0 1 1 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2]}
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+ set transpose [lindex $argv 4]
+ set xlab [lindex $argv 5]
+ set ylab [lindex $argv 6]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/load.res b/vendor/x11iraf/ximtool/gui/load.res
new file mode 100644
index 00000000..6686f5c4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/load.res
@@ -0,0 +1,173 @@
+
+set Resources(load_panel) { \
+
+ !-------------------------------
+ ! File Load Control Panel.
+ !-------------------------------
+ *filesLayout*borderWidth: 0
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*TextToggle.ledtMargin: 3
+ *filesLayout*SimpleMenu.borderWidth: 1
+ *filesLayout*SimpleMenu.borderColor: black
+ *filesLayout*SimpleMenu.foreground: White
+ *filesLayout*SimpleMenu.background: SteelBlue
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ imlistGroup < +inf -inf * > \
+ 3 \
+ horizontal { -5 imoptsGroup < +inf -inf * > -5 } \
+ -1 \
+ loadCmdGroup < +inf -inf * > \
+ }
+
+ *imlistGroup.label:
+ *imlistGroup.frameWidth: 2
+ *imlistGroup.outerOffset: 2
+ *imlistLayout*Label.shadowWidth: 0
+ *imlistLayout*Label.justify: left
+ *imlistLayout*Command.width: 90
+ *imlistLayout*Command.height: 23
+ *imlistLayout*Command.shadowWidth: 1
+ *imlistLayout*Viewport.allowVert: True
+ *imlistLayout*Viewport.allowHoriz True
+ *imlistLayout*Viewport.useRight: True
+ *imlistLayout*Viewport.useBottom: True
+ *imlistLayout*Viewport.resizeable: True
+ *imlistLayout*Scrollbar.height: 17
+ *imlistLayout*Scrollbar.width: 17
+ *imlistLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ rootButton < +inf -inf * > 1 \
+ homeButton < +inf -inf * > 1 \
+ upButton < +inf -inf * > 1 \
+ rescanButton < +inf -inf * > \
+ 3 \
+ imtemplateLabel 3 imtemplateFrame < +inf -inf * > \
+ 3 \
+ } \
+ 5 \
+ horizontal { 1 imlistLabel < +inf -inf * > 1 } \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 \
+ dirLabel < +inf -inf * > \
+ 3 \
+ horizontal { 5 fnameLabel 5 filnamFrame < +inf -inf * > } \
+ 3 \
+ }
+ *imtemplateLabel.label: Filter:
+ *imtemplateText*editType: edit
+ *imtemplateText*height: 23
+ *imtemplateText*font: 7x13
+ !*imageList.width: 100
+ *imageList*height: 140
+ *imageList.shadeSurplus: False
+ *imageList.defaultColumns: 3
+ *imageList.font: 7x13
+ *imlistView.resizeable: True
+ *imlistLabel.height: 0
+ *imlistLabel.label: xxx
+ *imlistLabel.justify: left
+ *imlistLabel.font: *lucida-bold-r*10*
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *dirLabel.label: \ \ Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 22
+
+ *imoptsGroup.label: Options
+ *imoptsGroup.frameWidth: 2
+ *imoptsGroup.outerOffset: 7
+ *imoptsGroup*offIcon: square0s
+ *imoptsGroup*onIcon: square1s
+ *imoptsGroup*highlightColor: yellow
+ *imoptsLayout*Label.shadowWidth: 0
+ *imoptsLayout*Label.justify: left
+ *imoptsLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ autoload 6 grayscale \
+ 3 < +inf > \
+ browseHdrs \
+ 3 < +inf > \
+ frameLabel 2 frameFrame \
+ 3 \
+ } \
+ 6 \
+ horizontal { \
+ 3 \
+ zscale 6 zrange \
+ 3 \
+ z1Label z1Frame < +inf * > 2 \
+ z2Label z2Frame < +inf * > 2 \
+ nsampLabel nsampFrame < +inf * > \
+ 3 \
+ } \
+ 3 \
+ }
+ *grayscale.label: Auto Grayscale
+ *grayscale.location: 0 0 100 22
+ *autoload.label: Auto Load
+ *autoload.location: 0 0 80 22
+ *autoload.on: True
+ *browseHdrs.label: List Image Headers
+ *browseHdrs.location: 0 0 120 22
+ *browseHdrs.on: False
+ *zscale.label: Zscale
+ *zscale.location: 0 0 60 22
+ *zrange.label: Zrange
+ *zrange.location: 0 0 60 22
+ *z1Label.label: z1
+ *z1Value*width: 60
+ *z1Value*height: 22
+ *z1Value*editType: edit
+ *z2Label.label: z2
+ *z2Value*width: 60
+ *z2Value*height: 22
+ *z2Value*editType: edit
+ *nsampLabel.label: Nsample
+ *nsampValue*width: 60
+ *nsampValue*height: 22
+ *nsampValue*editType: edit
+ *frameLabel.label: Frame:\
+ *frameFrame.width: 50
+ *frameFrame.resize: False
+ *frameFrame.label: Current
+ *frameFrame.font: 6x13
+ *frameFrame.menuName: loadFrames
+
+
+ *loadCmdGroup.label:
+ *loadCmdGroup*frameWidth: 2
+ *loadCmdGroup*outerOffset: 5
+ *loadCmdGroup.outerOffset: 2
+ *loadCmdGroup*innerOffset: 5
+ *loadCmdGroup.frameType: sunken
+ *loadCmdGroup.label:
+ *loadCmdGroup.location: 0 0 400 45
+ *loadCmdLayout*Command.internalWidth: 12
+ *loadCmdLayout.layout: horizontal { \
+ 2 \
+ filesLoadButton \
+ 1 < +inf > \
+ filesStatus \
+ 2 \
+ }
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/load.tcl b/vendor/x11iraf/ximtool/gui/load.tcl
new file mode 100644
index 00000000..425f0226
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/load.tcl
@@ -0,0 +1,247 @@
+
+################################################################################
+# Image and objects list display and section
+################################################################################
+
+proc filesTextHighlight { widget event args } \
+{
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+foreach w {imtemplateText fnameText z1Value z2Value} {
+ send $w addEventHandler filesTextHighlight enterWindowMask
+ send $w addEventHandler filesTextHighlight leaveWindowMask
+}
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+set label \
+ [format "%-35.35s %6s %12s %12s"\
+ " Image" "Bitpix" " Size" " Title"]
+send imlistLabel set label $label
+send imlistLabel "set height 0 ; unmap"
+
+
+# Create the Frames menu on the load panel window.
+set loadItems { "Current f.exec \{send frameFrame set label Current\}"}
+for {set i 1} {$i <= $MAX_FRAMES} {incr i} {
+ lappend loadItems "\"\ \ $i\ \ \" f.exec \{send frameFrame set label $i\}"
+}; createMenu loadFrames frameFrame $loadItems
+
+
+
+
+
+# Filename pattern callback.
+proc setPattern { widget mode pattern args } \
+{
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+
+# Load options parameter callback.
+proc doLoadOptions { param old new } \
+{
+ global warnings panel_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format " Directory: %s" $val ] }
+ newfile { send fnameText set string $val }
+ status { send filesStatus set label $val
+ if { ! $panel_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayscale set on $val }
+ zscale { send zscale set on $val
+ if {$val} {
+ send zrange setSensitive False
+ } else {
+ send zrange setSensitive True
+ }
+ }
+ zrange { send zrange set on $val
+ if {$val} {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive False
+ }
+ } else {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive True
+ }
+ }
+ }
+ z1 { send z1Value set string [format "%s" $val ] }
+ z2 { send z2Value set string [format "%s" $val ] }
+ nsample { send nsampValue set string [format "%s" $val ] }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+# Option utility routines.
+proc toggleGraymap args \
+{
+ send client setLoadOption gray [ send grayscale get on ]
+} ; send grayscale addCallback toggleGraymap
+
+proc toggleHeaders args \
+{
+ if { [send browseHdrs get on] } {
+ send client setLoadOption headers
+ send rootButton setSensitive False
+ send homeButton setSensitive False
+ send upButton setSensitive False
+ send rescanButton setSensitive False
+ send imlistLabel "set height 10 ; map"
+ } else {
+ send client setLoadOption rescan
+ send rootButton setSensitive True
+ send homeButton setSensitive True
+ send upButton setSensitive True
+ send rescanButton setSensitive True
+ send imlistLabel "set height 0 ; unmap"
+ }
+} ; send browseHdrs addCallback toggleHeaders
+
+proc toggleZscale args \
+{
+ send client setLoadOption zscale [send zscale get on]
+} ; send zscale addCallback toggleZscale
+
+proc toggleZrange args \
+{
+ send client setLoadOption zrange [send zrange get on]
+} ; send zrange addCallback toggleZrange
+
+proc setZ1 { widget mode pattern args } \
+{
+ send client setLoadOption z1 $pattern
+} ; send z1Value addCallback setZ1
+
+proc setZ2 { widget mode pattern args } \
+{
+ send client setLoadOption z2 $pattern
+} ; send z2Value addCallback setZ2
+
+proc setNsamp { widget mode pattern args } \
+{
+ send client setLoadOption nsample $pattern
+} ; send nsampValue addCallback setNsamp
+
+proc fileLoad { widget mode fname args } \
+{
+ loadImage $fname
+} ; send fnameText addCallback fileLoad
+
+
+
+# Image list selection routines.
+
+set fileList {}
+
+proc setFileList { param old new } \
+{
+ global fileList
+ set fileList $new
+
+ # Get the max length of the strings so we can set
+ # the list columns appropriately.
+ set max 0
+ foreach n $new {
+ set len [string length $n]
+ if {$len > $max} { set max $len }
+ }
+
+ # Optimize the number of columns for the file list.
+ if {$max > 35} {
+ send imageList set defaultColumns 1
+ } elseif {$max > 21} {
+ send imageList set defaultColumns 2
+ } elseif {$max > 12} {
+ send imageList set defaultColumns 3
+ } elseif {$max > 5} {
+ send imageList set defaultColumns 4
+ } else {
+ send imageList set defaultColumns 5
+ }
+
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flResize args \
+{
+ global fileList
+ send imageList setList $fileList resize
+}; send imageList addEventHandler flResize ResizeRedirectMask
+
+proc flSelectPrint { widget cbtype selections args } \
+{
+ if {! [send autoload get on]} \
+ return
+
+ foreach selection $selections {
+ if { [send zrange get on] } {
+ loadImage [lindex $selection 0]
+ } else {
+ loadImage $selection
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+
+# Load the named image in the display.
+proc loadImage { name } \
+{
+ global frame
+
+ set fr [send frameFrame get label]
+
+ if { $fr == "Current" } { set fr $frame }
+
+ if { [fileSetOptions] >= 0 } {
+ send imagewin setCursorType busy
+ send client load $name $fr
+ send imagewin setCursorType idle
+ send fnameText set string $name
+ }
+}
+
+# Load button callback.
+proc fileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ loadImage $fname
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+
+# Send and selected options to the client before loading the image.
+proc fileSetOptions args \
+{
+ if { ![send zscale get on] && ![send zrange get on] } {
+ set z1 [send z1Value get string]
+ set z2 [send z2Value get string]
+
+ if {$z1 == $z2} {
+ Wexec client "z1/z2 values are not set properly"
+ return -1
+ } else {
+ send client setLoadOption z1 $z1
+ send client setLoadOption z2 $z2
+ }
+ }
+
+ return 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/magnifier.tcl b/vendor/x11iraf/ximtool/gui/magnifier.tcl
new file mode 100644
index 00000000..beb57e2b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/magnifier.tcl
@@ -0,0 +1,577 @@
+
+################################################################################
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+################################################################################
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+proc toggleMagnifier args \
+{
+ global magnifier_enable
+ if {$magnifier_enable} {
+ setMagnifier 0
+ } else {
+ setMagnifier 1
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args \
+{
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} \
+{
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args \
+{
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} \
+{
+ global magnifierGeom displayMagnifier
+
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args \
+{
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+# if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+# # For efficiency we won't compute the sqrt of the distance but instead
+# # just compare the square. Use a threshold of 6 pixels so when we
+# # narrow in on the ROI the magnifier is still (mostly) correct.
+# set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+# (($last_mag_y-$y) * ($last_mag_y-$y))]
+# if {$diff > 36} {
+# set last_mag_x $x
+# set last_mag_y $y
+# return
+# }
+# }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } \
+ return
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/main-old.obj b/vendor/x11iraf/ximtool/gui/main-old.obj
new file mode 100644
index 00000000..a3af5486
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/main-old.obj
@@ -0,0 +1,52 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL.GUI -- Default GUI for the Ximtool image display server.
+#
+# Version 2.0 -- BETA VERSION
+
+
+set Version "NOAO/IRAF XImtool Version 2.0BETA"
+
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display \
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton \
+ menubar MenuButton viewButton \
+ menubar MenuButton optionsButton \
+ menubar Label imageTitle \
+ menubar Toggle controlButton \
+ menubar Toggle xflipButton \
+ menubar Toggle yflipButton \
+ menubar Command prevButton \
+ menubar MenuButton frameButton \
+ menubar Command nextButton \
+ menubar Toggle helpButton \
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+ display Slider2d focusSlider\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/main-old.res b/vendor/x11iraf/ximtool/gui/main-old.res
new file mode 100644
index 00000000..02a9b19e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/main-old.res
@@ -0,0 +1,422 @@
+
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: Black
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: Black
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.foreground: Black
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: Black
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: Black
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: Black
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 0
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ -2 \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ vcutFrame < * +inf -inf > \
+ } \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 plotOpts -4 } \
+ } \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ focusSlider 2 hcut 2 vcut 15 \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+ *focusSlider.location: 0 0 100 15
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 0
+ *hcutFrame.outerOffset: 0
+ *hcutPlot.color0: #c4c4c4
+ *hcutPlot.color1: black
+ *hcutPlot.color0: darkslategray
+ *hcutPlot.color1: #eeeee0
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 6
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ *vcutPlot.color0: #c4c4c4
+ *vcutPlot.color1: black
+ *vcutPlot.color0: darkslategray
+ *vcutPlot.color1: #eeeee0
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 6
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 40
+ *menuGroup.width: 518
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 1 < -1 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ controlButton 1 < -1 > \
+ 1 < -1 > \
+ xflipButton 1 < -1 > yflipButton \
+ 1 < -1 > \
+ prevButton 1 < -1 > frameButton 1 < -1 > nextButton \
+ 1 < -1 > \
+ helpButton \
+ 1 < -1 > \
+ }
+
+ *menubar*SimpleMenu.borderColor: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: white
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *menubar.width: 518
+ *menubar*borderWidth: 0
+ *menubar*Command.label: x
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 518
+ *imageFrame.height: 518
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 518
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Ctrl <Key>a: call(toggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift<Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Up>: call(updateColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+ *colorbar.borderWidth: 0
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.width: 50
+ *colorbar.height: 17
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/main.obj b/vendor/x11iraf/ximtool/gui/main.obj
new file mode 100644
index 00000000..c8481e04
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/main.obj
@@ -0,0 +1,86 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL-ALT.GUI -- Default GUI for the Ximtool-alt image display server.
+#
+# Version 2.0 -- BETA VERSION
+
+set Version "NOAO/IRAF XImtool Version 2.0BETA"
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display\
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton\
+ menubar MenuButton viewButton\
+ menubar MenuButton optionsButton\
+ menubar Label imageTitle\
+ menubar Toggle mXflipButton\
+ menubar Toggle mYflipButton\
+ menubar Command mPrevButton\
+ menubar MenuButton mFrameButton\
+ menubar Command mNextButton\
+ menubar Toggle toolButton\
+ menubar Toggle panelButton\
+\
+ display Layout toolbar\
+ toolbar Command tbZoomIn\
+ toolbar Command tbZoom0\
+ toolbar Command tbZoomOut\
+ toolbar Command tbInvert\
+ toolbar Command tbNormalize\
+ toolbar Command tbMatchLUT\
+ toolbar Toggle tbAutoReg\
+ toolbar Command tbRegister\
+ toolbar Command tbCenter\
+ toolbar Command tbBlinkDec\
+ toolbar Toggle tbBlink\
+ toolbar Command tbBlinkInc\
+ toolbar Toggle xflipButton\
+ toolbar Toggle yflipButton\
+ toolbar Toggle tbTile\
+ toolbar Toggle tbCompass\
+ toolbar Command prevButton\
+ toolbar MenuButton frameButton\
+ toolbar Command nextButton\
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+ display Slider2d focusSlider\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+\
+ display Layout panelbar\
+ panelbar Toggle pbDisplayP\
+ panelbar Toggle pbLoadP\
+ panelbar Toggle pbSaveP\
+ panelbar Toggle pbPrintP\
+ panelbar Toggle pbInfoP\
+ panelbar Toggle pbTileP\
+ panelbar Toggle pbCoordP\
+ panelbar Toggle pbPanM\
+ panelbar Toggle pbMagM\
+ panelbar Toggle pbWcsM\
+ panelbar Toggle pbIsm\
+ panelbar Toggle helpButton\
+ panelbar Command pbQuit\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/main.res b/vendor/x11iraf/ximtool/gui/main.res
new file mode 100644
index 00000000..011b7a6f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/main.res
@@ -0,0 +1,525 @@
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: White
+ *rulerMenu.foreground: White
+ *display.imagewin.markerMenu.foreground: White
+ *display.imagewin.rulerMenu.foreground: White
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: White
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: White
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerColor.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: White
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: White
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 2
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ horizontal { 1 toolbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ horizontal { 1 panelbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ -2 \
+ vcutFrame < * +inf -inf > \
+ } \
+ -3 \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 horizontal { -4 plotOpts} -4 } \
+ } \
+ -3 \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ focusSlider 2 hcut 2 vcut 15 \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+ *focusSlider.location: 0 0 100 15
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 1
+ *hcutFrame.outerOffset: 1
+ //*hcutPlot.color0: #c4c4c4
+ //*hcutPlot.color1: #000000
+ *hcutPlot.color0: #000000
+ *hcutPlot.color1: #ffffff
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 6
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ //*vcutPlot.color0: #c4c4c4
+ //*vcutPlot.color1: black
+ *vcutPlot.color0: #000000
+ *vcutPlot.color1: #ffffff
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 6
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 38
+ *menuGroup.width: 512
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 2 < -2 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ mXflipButton 1 < -1 > mYflipButton \
+ 1 < -1 > \
+ mPrevButton 1 < -1 > mFrameButton 1 < -1 > mNextButton \
+ 1 < -1 > \
+ toolButton 1 < -1 > panelButton \
+ 2 < -2 > \
+ }
+
+ *menubar*SimpleMenu.foreground: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: White
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *menubar.width: 512
+ *menubar*borderWidth: 0
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *toolbar.layout: horizontal { \
+ tbZoomIn < +inf -inf * > 1 < -1 > \
+ tbZoom0 < +inf -inf * > 1 < -1 > \
+ tbZoomOut < +inf -inf * > 1 < -1 > \
+ tbInvert < +inf -inf * > 1 < -1 > \
+ tbNormalize < +inf -inf * > 1 < -1 > \
+ tbMatchLUT < +inf -inf * > 1 < -1 > \
+ tbAutoReg < +inf -inf * > 1 < -1 > \
+ tbRegister < +inf -inf * > 1 < -1 > \
+ tbCenter < +inf -inf * > 1 < -1 > \
+ tbBlinkDec < +inf -inf * > 1 < -1 > \
+ tbBlink < +inf -inf * > 1 < -1 > \
+ tbBlinkInc < +inf -inf * > 1 < -1 > \
+ xflipButton < +inf -inf * > 1 < -1 > \
+ yflipButton < +inf -inf * > 1 < -1 > \
+ tbCompass < +inf -inf * > 1 < -1 > \
+ tbTile < +inf -inf * > 1 < -1 > \
+ prevButton < +inf -inf * > 1 < -1 > \
+ frameButton < +inf -inf * > 1 < -1 > \
+ nextButton < +inf -inf * > 1 < -1 > \
+ }
+ *toolbar.width: 512
+ *toolbar.height: 25
+ *toolbar*borderWidth: 0
+ *toolbar*Command.internalWidth: 3
+ *toolbar*Command.borderWidth: 0
+ *toolbar*Toggle.internalWidth: 2
+ *toolbar*Toggle.borderWidth: 0
+
+ *panelbar.layout: horizontal { \
+ pbDisplayP < +inf -inf * > 1 < -1 > \
+ pbPrintP < +inf -inf * > 1 < -1 > \
+ pbLoadP < +inf -inf * > 1 < -1 > \
+ pbSaveP < +inf -inf * > 1 < -1 > \
+ pbInfoP < +inf -inf * > 1 < -1 > \
+ pbTileP < +inf -inf * > 1 < -1 > \
+ pbCoordP < +inf -inf * > 1 < -1 > \
+ pbPanM < +inf -inf * > 1 < -1 > \
+ pbMagM < +inf -inf * > 1 < -1 > \
+ pbWcsM < +inf -inf * > 1 < -1 > \
+ pbIsm < +inf -inf * > 1 < -1 > \
+ helpButton < +inf -inf * > 1 < -1 > \
+ pbQuit < +inf -inf * > 1 < -1 > \
+ }
+ *panelbar*SimpleMenu.borderColor: Black
+ *panelbar*SimpleMenu.borderWidth: 1
+ *SmeBSB.vertSpace: 10
+
+ *panelbar.width: 12
+ *panelbar.height: 25
+ *panelbar*borderWidth: 0
+ *panelbar*Label.internalWidth: 4
+ *panelbar*Label.borderWidth: 0
+ *panelbar*Command.internalWidth: 4
+ *panelbar*Command.borderWidth: 0
+ *panelbar*Toggle.internalWidth: 3
+ *panelbar*Toggle.borderWidth: 0
+
+ *pbLoadP.label: Load
+ *pbDisplayP.label: Display
+ *pbSaveP.label: Save
+ *pbPrintP.label: Print
+ *pbInfoP.label: Info
+ *pbTileP.label: Tile
+ *pbCoordP.label: Coords
+ *pbPanM.label: Pan
+ *pbPanM.state: 1
+ *pbMagM.label: Mag
+ *pbMagM.state: 0
+ *pbWcsM.label: WCS
+ *pbWcsM.state: 1
+ *pbIsm.label: ISM
+ *pbIsm.state: 0
+ *helpButton.label:
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *toolButton.label:
+ *toolButton.state: 0
+ *panelButton.label:
+ *panelButton.state: 0
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+ *mFrameButton.menuName: mFrameMenu
+ *mFrameButton.label: 1
+ *mFrameButton.width: 20
+ *pbQuit.label: Quit
+ *tbZoom0.label: Mag
+ *tbBlink.label: Blink
+ *tbBlink.internalWidth: 3
+ *tbCenter.label: Cntr
+ *tbAutoReg.label: AReg
+ *tbRegister.label: Reg
+ *tbInvert.label: Inv
+ *tbNormalize.label: Norm
+ *tbMatchLUT.label: Match
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *panelbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *toolbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 512
+ *imageFrame.height: 512
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 512
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.idleCursor: crosshair
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>a: call(tbToggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tbTileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Ctrl Shift <Key>c: call(displayPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !Ctrl Shift <Key>t: call(tclPanel) \n\
+ !Shift<Btn1Down>: call(setDynamicMagnifier,1) \n\
+ !Shift<Btn1Up>: call(setDynamicMagnifier,0) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift <Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Up>: call(updateColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.height: 17
+ *colorbar.width: 50
+ *colorbar.borderWidth: 0
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/mkgui b/vendor/x11iraf/ximtool/gui/mkgui
new file mode 100755
index 00000000..76f9f288
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/mkgui
@@ -0,0 +1,81 @@
+#!/bin/csh -f
+
+set old = 0
+set file = ximtool.gui
+
+old:
+
+echo -n "Building $file ..."
+if ($old == 0) then
+ cat main.obj > $file
+else
+ cat main-old.obj > $file
+endif
+cat panel.obj >> $file
+cat param.obj >> $file
+cat help.obj >> $file
+cat blink.obj >> $file
+cat hdr.obj >> $file
+cat pixtab.obj >> $file
+cat tcl.obj >> $file
+cat warn.obj >> $file
+
+cat global.res >> $file
+if ($old == 0) then
+ cat main.res >> $file
+else
+ cat main-old.res >> $file
+endif
+cat panel.res >> $file
+cat display.res >> $file
+cat print.res >> $file
+cat info.res >> $file
+cat load.res >> $file
+cat save.res >> $file
+cat tile.res >> $file
+cat wcs.res >> $file
+cat blink.res >> $file
+cat hdr.res >> $file
+cat pixtab.res >> $file
+cat help.res >> $file
+cat tcl.res >> $file
+cat warn.res >> $file
+cat resources.res >> $file
+
+cat boot.tcl >> $file
+cat global.tcl >> $file
+cat plots.tcl >> $file
+cat imagewin.tcl >> $file
+cat func.tcl >> $file
+cat panel.tcl >> $file
+cat magnifier.tcl >> $file
+cat panner.tcl >> $file
+cat print.tcl >> $file
+cat info.tcl >> $file
+cat load.tcl >> $file
+cat save.tcl >> $file
+cat tile.tcl >> $file
+cat wcs.tcl >> $file
+cat compass.tcl >> $file
+cat rulers.tcl >> $file
+cat help.tcl >> $file
+cat hdr.tcl >> $file
+cat pixtab.tcl >> $file
+cat warn.tcl >> $file
+cat tcl.tcl >> $file
+cat ism.tcl >> $file
+if ($old == 0) then
+ cat toolbars.tcl >> $file
+endif
+
+echo "Done"
+
+if ($old == 0) then
+ set old = 1
+ set file = ximtool-old.gui
+ goto old
+endif
+
+echo -n "Installing files ..."
+mv *.gui ../
+echo "Done"
diff --git a/vendor/x11iraf/ximtool/gui/panel.obj b/vendor/x11iraf/ximtool/gui/panel.obj
new file mode 100644
index 00000000..26157cef
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/panel.obj
@@ -0,0 +1,412 @@
+
+set Objects(panelShell) { \
+ toplevel TopLevelShell panelShell\
+ panelShell Layout panel\
+\
+ panel Frame panelMenuFrame\
+ panelMenuFrame Layout panelMenuBar\
+ panelMenuBar Command panelHelp\
+ panelMenuBar Command panelClose\
+\
+ panel Frame tabFrame\
+ tabFrame Tabs panelTabs\
+ panelTabs Frame display_panel\
+ panelTabs Frame print_panel\
+ panelTabs Frame load_panel\
+ panelTabs Frame save_panel\
+ panelTabs Frame info_panel\
+ panelTabs Frame tile_panel\
+ panelTabs Frame wcs_panel\
+\
+\
+ display_panel Layout controlPanel\
+ controlPanel Group viewBox\
+ controlPanel Group enhancementBox\
+ controlPanel Group blinkBox\
+ controlPanel Group optionsBox\
+ controlPanel Frame controlBox\
+\
+ viewBox Layout view\
+ view Group frameSelect\
+ frameSelect Layout frameBox\
+ frameBox Box frlistBox\
+ frlistBox Viewport framePort\
+ framePort Layout frameList\
+ frameList TextToggle frame1\
+ frameList TextToggle frame2\
+ frameList TextToggle frame3\
+ frameList TextToggle frame4\
+ frameList TextToggle frame5\
+ frameList TextToggle frame6\
+ frameList TextToggle frame7\
+ frameList TextToggle frame8\
+ frameList TextToggle frame9\
+ frameList TextToggle frame10\
+ frameList TextToggle frame11\
+ frameList TextToggle frame12\
+ frameList TextToggle frame13\
+ frameList TextToggle frame14\
+ frameList TextToggle frame15\
+ frameList TextToggle frame16\
+ frameBox Command prevFrame\
+ frameBox Command nextFrame\
+ view Frame frameDataBox\
+ frameDataBox TextBox frameData\
+ view Group zoomBox\
+ zoomBox Layout zoom\
+ zoom TextButton toggleZoom\
+ zoom TextButton zoomIn\
+ zoom Command x1\
+ zoom Command z2\
+ zoom Command z3\
+ zoom Command z4\
+ zoom Command z5\
+ zoom Command z8\
+ zoom TextButton zoomOut\
+ zoom TextButton centerFrame\
+ zoom Command d2\
+ zoom Command d3\
+ zoom Command d4\
+ zoom Command d5\
+ zoom Command d8\
+ view Layout viewButtons\
+ viewButtons Command aspect\
+ viewButtons Command flipX\
+ viewButtons Command flipY\
+ viewButtons Command flipXY\
+ viewButtons Command clearFrame\
+ viewButtons Command fitFrame\
+\
+ enhancementBox Layout enhance\
+ enhance Frame colorlistFrame\
+ colorlistFrame Viewport colorlistView\
+ colorlistView MultiList colorlist\
+ enhance Frame colordataFrame\
+ colordataFrame TextBox colordata\
+ enhance Label contrastLabel\
+ enhance Slider2d contrastSlider\
+ enhance Label brightnessLabel\
+ enhance Slider2d brightnessSlider\
+ enhance Command invertButton\
+ enhance Command optimizeButton\
+\
+ blinkBox Layout blink\
+ blink Label blinkFramesLabel\
+ blink Command blinkFrame1\
+ blink Command blinkFrame2\
+ blink Command blinkFrame3\
+ blink Command blinkFrame4\
+ blink Toggle blinkPanel\
+ blink Command blinkReset\
+ blink Label blinkRateLabel\
+ blink Frame BRframe\
+ BRframe Layout BRlayout\
+ BRlayout Arrow BRdecrease\
+ BRlayout TextBox BRtext\
+ BRlayout Arrow BRincrease\
+ blink Command registerButton\
+ blink Command matchButton\
+ blink TextToggle blinkButton\
+ blink TextToggle autoregButton\
+\
+ optionsBox TextToggle pannerButton\
+ optionsBox TextToggle magnifierButton\
+ optionsBox TextToggle coordsBoxButton\
+ optionsBox TextToggle autoscaleButton\
+ optionsBox TextToggle antialiasButton\
+ optionsBox TextToggle tileFramesButton\
+ optionsBox TextToggle warningsButton\
+ optionsBox TextToggle peakupButton\
+\
+ controlBox Layout control\
+ control Command initializeButton\
+ control Command normalizeButton\
+\
+\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+ optLayout Group annOptsGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage TextToggle epsSquareButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage TextToggle epsB5Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame\
+ ScaleFrame Layout ScaleLayout\
+ ScaleLayout Arrow SCdecrease\
+ ScaleLayout TextBox SCtext\
+ ScaleLayout Arrow SCincrease\
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle compressButton\
+\
+ annOptsGroup Layout annOpts\
+ annOpts TextToggle annotateButton\
+ annOpts TextToggle colorbarButton\
+ annOpts TextToggle titleButton\
+ annOpts TextToggle bordersButton\
+ annOpts Label titleLabel\
+ annOpts Frame titleFrame\
+ titleFrame AsciiText titleString\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers\
+ printers Frame printlistFrame\
+ printlistFrame Viewport printlistView\
+ printlistView MultiList printlist\
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout Command okayPrint\
+ cmdLayout Label printStatus\
+\
+\
+ load_panel Layout filesLayout\
+ filesLayout Group imlistGroup\
+ imlistGroup Layout imlistLayout\
+ imlistLayout Command rootButton\
+ imlistLayout Command homeButton\
+ imlistLayout Command upButton\
+ imlistLayout Command rescanButton\
+ imlistLayout Label dirLabel\
+ imlistLayout Label fnameLabel\
+ imlistLayout Frame filnamFrame\
+ filnamFrame AsciiText fnameText\
+ imlistLayout Label imtemplateLabel\
+ imlistLayout Frame imtemplateFrame\
+ imtemplateFrame AsciiText imtemplateText\
+ imlistLayout Label imlistLabel\
+ imlistLayout Frame imlistFrame\
+ imlistFrame Viewport imlistView\
+ imlistView MultiList imageList\
+\
+ filesLayout Group imoptsGroup\
+ imoptsGroup Layout imoptsLayout\
+ imoptsLayout TextToggle grayscale\
+ imoptsLayout TextToggle autoload\
+ imoptsLayout TextToggle browseHdrs\
+ imoptsLayout TextToggle zscale\
+ imoptsLayout TextToggle zrange\
+ imoptsLayout Label z1Label\
+ imoptsLayout Frame z1Frame\
+ z1Frame AsciiText z1Value\
+ imoptsLayout Label z2Label\
+ imoptsLayout Frame z2Frame\
+ z2Frame AsciiText z2Value\
+ imoptsLayout Label nsampLabel\
+ imoptsLayout Frame nsampFrame\
+ nsampFrame AsciiText nsampValue\
+ imoptsLayout Label frameLabel\
+ imoptsLayout MenuButton frameFrame\
+\
+ filesLayout Group loadCmdGroup\
+ loadCmdGroup Layout loadCmdLayout\
+ loadCmdLayout Command filesLoadButton\
+ loadCmdLayout Label filesStatus\
+\
+\
+ save_panel Layout saveLayout\
+ saveLayout Group saveNameGroup\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveLayout Group saveOptGroup\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox\
+ saveDataBox TextBox saveData\
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle epsButton\
+ formats TextToggle x11Button\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveLayout Group saveCmdGroup\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout Command okaySave\
+ saveCmdLayout Label saveStatus\
+\
+\
+ info_panel Layout infoLayout\
+ infoLayout Group infoBox\
+ infoBox Layout infoBoxL\
+ infoBoxL Frame infoFrame\
+ infoFrame AsciiText infoText\
+ infoBoxL TextToggle infoOptFr\
+ infoBoxL TextToggle infoOptWCS\
+ infoBoxL TextToggle infoOptSvr\
+ infoBoxL TextToggle infoOptClients\
+ infoBoxL TextToggle infoOptIsm\
+ infoBoxL TextToggle infoOptFB\
+\
+\
+ wcs_panel Layout wcsLayout\
+ wcsLayout Group wcsGroup\
+ wcsGroup Layout wcsBox\
+\
+ wcsBox Frame wcsFrame\
+ wcsFrame Layout wcsText\
+ wcsText AsciiText wtName\
+ wcsText AsciiText wtTitle\
+ wcsText AsciiText wtFBCfg\
+ wcsText AsciiText wtIPixval\
+ wcsText AsciiText wtSPixval\
+ wcsText AsciiText wtBPixval\
+ wcsText AsciiText wtWcs1\
+ wcsText AsciiText wtWcs2\
+ wcsText AsciiText wtWcs3\
+ wcsText AsciiText wtWcs4\
+\
+ wcsBox TextToggle ismToggle\
+ wcsBox TextToggle pixelTable\
+ wcsBox TextToggle imageHeader\
+ wcsBox TextToggle compass\
+ wcsBox TextToggle wcsOptions\
+\
+\
+ wcsLayout Group wcsOptGroup\
+ wcsOptGroup Layout wcsOptLayout\
+\
+ wcsOptLayout Group wcsCoords\
+ wcsCoords Layout wcLayout\
+ wcLayout Label wcTitle\
+ wcLayout Frame wcLine\
+ wcLayout Label wlWcs1\
+ wcLayout Label wlWcs2\
+ wcLayout Label wlWcs3\
+ wcLayout Label wlWcs4\
+ wcLayout MenuButton sysWcs1\
+ wcLayout MenuButton sysWcs2\
+ wcLayout MenuButton sysWcs3\
+ wcLayout MenuButton sysWcs4\
+ wcLayout MenuButton fmtWcs1\
+ wcLayout MenuButton fmtWcs2\
+ wcLayout MenuButton fmtWcs3\
+ wcLayout MenuButton fmtWcs4\
+ wcLayout TextToggle wpWcs1\
+ wcLayout TextToggle wpWcs2\
+ wcLayout TextToggle wpWcs3\
+ wcLayout TextToggle wpWcs4\
+ wcLayout TextToggle wiWcs1\
+ wcLayout TextToggle wiWcs2\
+ wcLayout TextToggle wiWcs3\
+ wcLayout TextToggle wiWcs4\
+\
+ wcsOptLayout Group wcsOpts\
+ wcsOpts Layout woLayout\
+ woLayout TextToggle woptLabels\
+ woLayout TextToggle woptTitles\
+ woLayout TextToggle woptFBinfo\
+ woLayout TextToggle woptBPM\
+\
+ wcsOptLayout Group wcsIsmGroup\
+ wcsIsmGroup Layout wcsIsmLayout\
+ wcsIsmLayout Label wcsIsmLabel\
+ wcsIsmLayout Frame wcsIsmFrame\
+ wcsIsmFrame AsciiText wcsIsmCmd\
+ wcsIsmLayout Command wcsIsmInit\
+\
+\
+ tile_panel Frame tileOpts\
+ tileOpts Layout toptLayout\
+ toptLayout Group tFramesG\
+ toptLayout Group tileMode\
+ tileMode TextToggle tileDisabled\
+ tileMode TextToggle tileManual\
+ tileMode TextToggle tileBest\
+ tileMode TextToggle tileSquare\
+ tileMode TextToggle tileHorizontal\
+ tileMode TextToggle tileVertical\
+ tileMode TextToggle tileRow\
+ tileMode TextToggle tileCol\
+ toptLayout Group userOrientG\
+ toptLayout Group fillStyle\
+ fillStyle TextToggle byCols\
+ fillStyle TextToggle bottomUp\
+ toptLayout Group tileLabel\
+ tileLabel TextToggle labelImname\
+ tileLabel TextToggle labelTitles\
+ tileLabel TextToggle labelFrames\
+ toptLayout Frame geomFrame\
+ geomFrame Label tileGeometry\
+\
+ userOrientG Layout userOrientL\
+ userOrientL Label nrowLab\
+ userOrientL Frame nrFrame\
+ nrFrame Layout nrLayout\
+ nrLayout Arrow nrdecrease\
+ nrLayout Label nrtext\
+ nrLayout Arrow nrincrease\
+ userOrientL Label ncolLab\
+ userOrientL Frame ncFrame\
+ ncFrame Layout ncLayout\
+ ncLayout Arrow ncdecrease\
+ ncLayout Label nctext\
+ ncLayout Arrow ncincrease\
+\
+ tFramesG Layout tFrames\
+ tFrames Command tAll\
+ tFrames Command tNone\
+ tFrames Toggle tFrame1\
+ tFrames Toggle tFrame2\
+ tFrames Toggle tFrame3\
+ tFrames Toggle tFrame4\
+ tFrames Toggle tFrame5\
+ tFrames Toggle tFrame6\
+ tFrames Toggle tFrame7\
+ tFrames Toggle tFrame8\
+ tFrames Toggle tFrame9\
+ tFrames Toggle tFrame10\
+ tFrames Toggle tFrame11\
+ tFrames Toggle tFrame12\
+ tFrames Toggle tFrame13\
+ tFrames Toggle tFrame14\
+ tFrames Toggle tFrame15\
+ tFrames Toggle tFrame16\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/panel.res b/vendor/x11iraf/ximtool/gui/panel.res
new file mode 100644
index 00000000..52e27826
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/panel.res
@@ -0,0 +1,69 @@
+
+set Resources(panelShell) { \
+
+ !================================
+ ! Main Integrated Control Panel
+ !================================
+ *panelShell.title: XImtool Control Panel
+ *panelShell.geometry: 480x630
+ *panelShell.maxWidth: 480
+ *panelShell.minWidth: 480
+ *panelTabs.internalHeight: 3
+ *panelTabs.internalWidth: 10
+
+ *Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *List.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextToggle.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ *display_panel.tabLabel: Display
+ *display_panel.innerOffset: 5
+ *print_panel.tabLabel: Print
+ *print_panel.innerOffset: 5
+ *load_panel.tabLabel: Load
+ *load_panel.innerOffset: 5
+ *save_panel.tabLabel: Save
+ *save_panel.innerOffset: 5
+ *info_panel.tabLabel: Info
+ *info_panel.innerOffset: 5
+ *tile_panel.tabLabel: Tile
+ *tile_panel.innerOffset: 5
+ *wcs_panel.tabLabel: Coords
+ *wcs_panel.innerOffset: 5
+
+ *panelMenuBar*borderWidth: 0
+ *panelMenuBar*Command.internalHeight: 4
+ *panelMenuBar*Command.internalWidth: 15
+ *panelMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 10 < +inf -10> \
+ panelHelp \
+ 3 < -3 > \
+ panelClose \
+ 7 < -7 > \
+ } \
+ 5 < -5 > \
+ }
+
+ *panelHelp.label: Help
+ *panelClose.label: Dismiss
+
+
+ *tabFrame.outerOffset: 3
+ *tabFrame.innerOffset: 0
+ *tabFrame.frameWidth: 0
+ *tabFrame.frameType: chiseled
+ *panelMenuFrame.outerOffset: 0
+ *panelMenuFrame.innerOffset: 1
+ *panelMenuFrame.frameType: raised
+ *panelMenuFrame.frameWidth: 2
+ *panel.layout: vertical { \
+ panelMenuFrame < +inf -inf * > \
+ 3 \
+ horizontal { tabFrame < +inf -inf * +inf -inf> } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/panel.tcl b/vendor/x11iraf/ximtool/gui/panel.tcl
new file mode 100644
index 00000000..257f253c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/panel.tcl
@@ -0,0 +1,835 @@
+
+################################################################################
+# MAIN CONTROL PANEL
+################################################################################
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args \
+{
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+#-----------------------------------------------------------------------------
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+send focusSlider "resizeThumb 0.1 1.0 ; moveThumb 1.0"
+
+
+# panel -- Toggle control panel display.
+proc panel args \
+{
+ global panel_up
+ if {$panel_up} {
+ send panelShell unmap
+ set panel_up 0
+ } else {
+ send panelShell map
+ set panel_up 1
+ }
+}
+
+proc pbTracePanel {name element op} \
+{
+ catch {
+ upvar $name panel_up
+ send controlButton set state $panel_up
+ }
+} ; trace variable panel_up w pbTracePanel
+
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} \
+{
+ global frame nframes frames
+ global displayPanner displayMagnifier displayCoords
+ global blinkFrames warnings peakCentroid
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+
+ # Initialize to hide the extra frames.
+ send frlistBox set width 30
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i {1 2 3 4} {
+ send blinkFrame$button set label $i
+ incr button
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ send peakupButton set on [true $peakCentroid]
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+
+# Control Panel Tabs widget procedures.
+#----------------------------------------
+
+set cpTabs { display_panel print_panel load_panel save_panel \
+ info_panel wcs_panel tile_panel}
+set tabTop "display_panel"
+
+
+# Resize the control panel depending on the Tab selected.
+proc cpResizeCB { widget event a b c d e args } \
+{
+ global tabTop fileList
+
+ # Handle only the first exposure event generated.
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ set tabTop $widget
+
+ switch $widget {
+ display_panel { send panel set height 595 }
+ print_panel { send panel set height 545 }
+ load_panel { send panel set height 485
+ if { [send browseHdrs get on] } {
+ send imageList setList $fileList resize
+ } else {
+ send client setLoadOption rescan
+ }
+ }
+ save_panel { send panel set height 325 }
+ info_panel { send panel set height 380 }
+ tile_panel { send panel set height 405 }
+ wcs_panel { setCoordPanelHeight }
+ }
+ }
+} ; foreach w $cpTabs { send $w addEventHandler cpResizeCB exposureMask }
+
+
+proc panelDismiss args \
+{
+ global panel_up
+ send panelShell unmap
+ set panel_up 0
+} ; send panelClose addCallback panelDismiss
+
+
+proc panelTabToggle { panel args } \
+{
+ global tabTop panel_up TabToWidget
+
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $TabToWidget($panel) set state 0
+ set panel_up 0
+
+ } else {
+ # Special cases for each panel.
+ if {$panel == "load_panel"} {
+ send client setLoadOption rescan
+ }
+
+ send panelTabs setTop $panel
+ set tabTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send panelShell map
+ set panel_up 1
+ }
+
+ }
+}
+
+proc displayPanel args { panelTabToggle display_panel }
+proc infoPanel args { panelTabToggle info_panel }
+proc loadPanel args { panelTabToggle load_panel }
+proc savePanel args { panelTabToggle save_panel }
+proc printPanel args { panelTabToggle print_panel }
+proc tilePanel args { panelTabToggle tile_panel }
+proc wcsPanel args { panelTabToggle wcs_panel }
+
+
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} \
+{
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} \
+{
+ global frameCache
+
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+
+ # Update the header panel object list.
+ catch {
+ # Only update when the header panel is open.
+ if {[info exists frameCache($new)] && [send imageHeader get on]} {
+ setHdrObjMenu $new
+ getHeader [lindex $frameCache($new) 0] [lindex $frameCache($new) 1]
+ }
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+for {set i 1} {$i <= 16} {incr i} {send frame$i addCallback cpSetFrame}
+
+# Initialize to hide the extra frames.
+send frlistBox set width 30
+
+proc blinkPanelCB { widget type state args } \
+{
+ if {$state} {
+ send blink_panel map
+ } else {
+ send blink_panel unmap
+ }
+} ; send blinkPanel addCallback blinkPanelCB
+
+proc blinkPanelClose args \
+{
+ send blink_panel unmap
+ send blinkPanel set state 0
+} ; send brClose addCallback blinkPanelClose
+
+
+
+# Frame buttons.
+proc cpFrameAction {widget args} \
+{
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args \
+{
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args \
+{
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+}
+
+proc initFitFrame { param old new } \
+{
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} \
+{
+ global frameZoomX frameZoomY zoomindex frame
+ global frameOffsetX frameOffsetY frameCenterX frameCenterY
+
+ if {$mode == "fixed"} {
+ #send client zoom $zoom_x $zoom_y
+ send client zoomAbs $zoom_x $zoom_y \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ #send client zoom \
+ # [expr $frameZoomX($frame) * $zoom_x] \
+ # [expr $frameZoomY($frame) * $zoom_y]
+ send client zoomAbs \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y] \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget { toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8 } {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+set cpXoff 0
+set cpYoff 0
+
+proc cpDisplayFrameData {name old new} \
+{
+ global cpFrame cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+ set xoff [lindex $new 6]; set yoff [lindex $new 7]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xoff != $cpXoff || $yoff != $cpYoff ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpXoff $xoff;
+ set cpYmag $ymag; set cpYoff $yoff;
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ set offset [format " Offset: (%0.1f,%0.1f)" $cpXoff $cpYoff]
+
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2 $offset \
+ ]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args \
+{
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args \
+{
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client updateColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} \
+{
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set colorTables {}
+
+proc cpSetColorList {param old new} \
+{
+ set colorTables $new
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc colorlistResize args \
+{
+ global colorTables
+ send colorlist setList $colorTables resize
+}; send colorlist addEventHandler colorlistResize ResizeRedirectMask
+
+proc cpSelectColor {widget cbtype selections indices} \
+{
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+send brBRtext set label $blinkRate
+
+proc cpSetBlinkRate {w args} \
+{
+ global blinkRate
+ if {$w == "BRincrease" || $w == "brBRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+}
+foreach w {BRincrease BRdecrease brBRincrease brBRdecrease} {
+ send $w addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} \
+{
+ global blinkFrames frames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i {1 2 3 4} {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send blinkButton set on False
+ send brBlinkButton set on False
+ blink
+ } elseif {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+} ; foreach w {blinkButton brBlinkButton} {send $w addCallback cpBlink}
+
+
+proc cpAutoRegister {widget type state args} \
+{
+ global auto_reg frame frames blinkFrames
+ global frameZoomX frameZoomY frameOffsetX frameOffsetY
+
+ set auto_reg $state
+ if {$auto_reg == 1} {
+ send autoregButton set on True
+ send brAregButton set on True
+ } else {
+ send autoregButton set on False
+ send brAregButton set on False
+ }
+
+ # Register the frames to zero the offsets.
+ send client registerFrames \{$blinkFrames\}
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+} ; foreach w {autoregButton brAregButton} {send $w addCallback cpAutoRegister}
+
+
+proc toggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ }
+}
+
+proc resetAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} \
+ toggleAutoReg
+}; send initialize addCallback resetAutoReg
+
+
+proc cpResetBlink args \
+{
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i {1 2 3 4} {
+ send blinkFrame$i set label " "
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+ set blinkIndex 0
+}
+send blinkReset addCallback cpResetBlink
+send brReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send blinkButton set on [expr $blinkId != 0]
+ send brBlinkButton set on [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} \
+{
+ global blinkFrames frames
+
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ for {set i 1} {$i <= $new} {incr i} {
+ if {$i <= 4} {
+ send blinkFrame$button set label $i
+ }
+ send brFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args \
+{
+ global frames blinkFrames
+ global frameOffsetX frameOffsetY
+
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+ send client registerFrames \{$blinkFrames\}
+}
+send registerButton addCallback cpRegisterFrames
+send brRegButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args \
+{
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}
+send matchButton addCallback cpMatchFrames
+send brMatchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} \
+{
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} \
+{
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} \
+{
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} \
+{
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args \
+{
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args \
+{
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} \
+{
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args \
+{
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} \
+{
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames { widget type state args } \
+{
+ global tile_frames tileOpt
+
+ set value [send tileFramesButton get on]
+ if {$value} {
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $tile_frames \}
+} ; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/panner.tcl b/vendor/x11iraf/ximtool/gui/panner.tcl
new file mode 100644
index 00000000..fb374fa2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/panner.tcl
@@ -0,0 +1,536 @@
+
+################################################################################
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+################################################################################
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_mag_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args \
+{
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global last_compass
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ autoRedraw true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Redraw the compass if necessary.
+ send compass "setSensitive True ; set on $last_compass"
+ if { $last_compass } \
+ drawCompass
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args \
+{
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+
+ # Disable the compass.
+ send compass "setSensitive False ; set on False"
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args \
+{
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} \
+{
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} \
+{
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+ global frame auto_reg frameOffsetX frameOffsetY
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ if {$auto_reg == 1} {
+ send client zoomAbs $xscale $yscale $x $y \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ send client zoom $xscale $yscale $x $y
+ }
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} \
+{
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} \
+{
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ drawCompass
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global frame
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+ drawCompass
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args \
+{
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global frame
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ eraseCompass
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+
+ drawCompass
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} \
+{
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
diff --git a/vendor/x11iraf/ximtool/gui/param.obj b/vendor/x11iraf/ximtool/gui/param.obj
new file mode 100644
index 00000000..405ec018
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/param.obj
@@ -0,0 +1,33 @@
+
+set Objects(parameters) { \
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter cmfocus\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter tileOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help\
+ ximtool Parameter info\
+ ximtool Parameter ism_msg\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/pixtab.obj b/vendor/x11iraf/ximtool/gui/pixtab.obj
new file mode 100644
index 00000000..1da660a2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/pixtab.obj
@@ -0,0 +1,30 @@
+
+set Objects(pixel_table) { \
+ toplevel TopLevelShell pixel_panel\
+\
+ pixel_panel Layout pixel_table\
+ pixel_table Frame pixtabMenuFrame\
+ pixtabMenuFrame Layout pixtabMenuBar\
+ pixtabMenuBar MenuButton pixtabSize\
+ pixtabMenuBar Command pixtabHelp\
+ pixtabMenuBar Command pixtabClose\
+\
+ pixel_table Frame pixtabFrame\
+ pixtabFrame Porthole ptPort\
+ ptPort Layout ptLayout\
+ ptLayout Frame ptColFrame\
+ ptColFrame MultiList ptColLabs\
+ ptLayout Frame ptRowFrame\
+ ptRowFrame MultiList ptRowLabs\
+ ptLayout Frame ptFrame\
+ ptFrame MultiList pixtab\
+\
+ ptLayout Label meanLabel\
+ ptLayout Frame meanFrame\
+ meanFrame Label meanValue\
+\
+ ptLayout Label sigLabel\
+ ptLayout Frame sigFrame\
+ sigFrame Label sigValue\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/pixtab.res b/vendor/x11iraf/ximtool/gui/pixtab.res
new file mode 100644
index 00000000..74001dd0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/pixtab.res
@@ -0,0 +1,128 @@
+
+set Resources(pixel_table) { \
+
+ *pixel_panel.title: Image Pixel Table
+ *pixel_panel*SimpleMenu.borderWidth: 1
+ *pixel_panel*SimpleMenu.borderColor: black
+ *pixel_panel*SimpleMenu.foreground: White
+ *pixel_panel*SimpleMenu.background: SteelBlue
+
+ *pixtabMenuBar*borderWidth: 0
+ *pixtabMenuBar*Command.internalHeight: 4
+ *pixtabMenuBar*Command.internalWidth: 12
+ *pixtabMenuBar.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ pixtabSize 10 < +inf -10> pixtabHelp 5 pixtabClose \
+ 7 \
+ } \
+ 5 \
+ }
+ *pixtabSize.label: Size
+ *pixtabSize.menuName: pixtabMenu
+ *pixtabHelp.label: Help
+ *pixtabHelp.sensitive: False
+ *pixtabClose.label: Dismiss
+
+ *pixtabMenuFrame.frameType: raised
+ *pixtabMenuFrame.frameWidth: 2
+ *pixel_table.layout: vertical { \
+ 1 \
+ pixtabMenuFrame < +inf -inf * > \
+ 1 \
+ pixtabFrame < +inf -inf * +inf -inf > \
+ 1 \
+ }
+
+
+ *pixtabFrame.frameType: raised
+ *pixtabFrame.frameWidth: 0
+ *pixtabFrame*borderWidth: 0
+ *pixtabFrame*font: 6x10
+ *pixtabFrame*MultiList.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*Label.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*TextToggle.font: -*-helvetica-medium-r-normal-*-10-*
+
+ *pixtabFrame*MultiList.forceColumns: True
+ *pixtabFrame*MultiList.defaultColumns: 5
+ *pixtabFrame*MultiList.shadeSurplus: False
+ *pixtabFrame*MultiList.borderWidth: 0
+ *pixtabFrame*MultiList.rowHeight: 25
+ *pixtabFrame*MultiList.rowSpacing: 7
+ *pixtabFrame*MultiList.internalWidth: 7
+ *pixtabFrame*MultiList.internalHeight: 4
+ *pixtabFrame*MultiList.width: 410
+ *pixtabFrame*MultiList.height: 160
+ *pixtabFrame*MultiList.columnWidth: 50
+ *pixtabFrame*MultiList.columnSpacing: 2
+ *pixtabFrame*MultiList.maxSelectable: 1
+ *pixtabFrame*MultiList.highlightForeground: red
+ *pixtabFrame*MultiList.highlightBackground: #c4c4c4
+ *pixtabFrame*MultiList.background: #c4c4c4
+ *pixtabFrame*TextToggle.background: #c4c4c4
+
+ *pixtabFrame*Label.width: 00
+ !*pixtabFrame*Label.resize: False
+
+ *meanFrame.frameWidth: 2
+ *meanFrame.frameType: chiseled
+ *meanFrame.outerOffset: 0
+ *meanFrame.width: 120
+ *meanLabel.label: Mean:
+ *meanValue.label:
+ *meanValue.resize: False
+
+ *sigFrame.frameWidth: 2
+ *sigFrame.frameType: chiseled
+ *sigFrame.outerOffset: 0
+ *sigFrame.width: 120
+ *sigLabel.label: Stdev:
+ *sigValue.label:
+ *sigValue.resize: False
+
+ *ptColFrame.frameWidth: 0
+ *ptColFrame.outerOffset: 0
+ *ptRowFrame.frameWidth: 0
+ *ptRowFrame.outerOffset: 0
+
+ *pixtabFrame*ptColLabs.width: 410
+ *pixtabFrame*ptColLabs.height: 23
+ *pixtabFrame*ptColLabs.defaultColumns: 5
+ *pixtabFrame*ptColLabs.forceColumns: True
+ *pixtabFrame*ptColLabs.columnWidth: 50
+ *pixtabFrame*ptColLabs.columnSpacing: 2
+ *pixtabFrame*ptRowLabs.width: 60
+ *pixtabFrame*ptRowLabs.height: 110
+ *pixtabFrame*ptRowLabs.defaultColumns: 1
+ *pixtabFrame*ptRowLabs.forceColumns: True
+ *pixtabFrame*ptRowLabs.verticalList: True
+ *pixtabFrame*ptRowLabs.columnWidth: 50
+ *pixtabFrame*ptRowLabs.columnSpacing: 2
+ *pixtabFrame*pixtab.verticalList: True
+
+ *ptFrame.outerOffset: 0
+ *ptFrame.innerOffset: 0
+ *ptFrame.borderWidth: 0
+ *ptFrame.frameWidth: 1
+ *ptFrame.frameType: sunken
+ *ptLayout.layout: vertical { \
+ 3 \
+ horizontal { 65 ptColFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { \
+ vertical { ptRowFrame< * +inf -inf > 5 } \
+ 1 \
+ vertical { ptFrame } \
+ 5 \
+ } \
+ 1 \
+ horizontal { \
+ 2 < +inf > \
+ meanLabel meanFrame < +inf -inf * > 2 \
+ sigLabel sigFrame < +inf -inf * > \
+ 10 \
+ } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/pixtab.tcl b/vendor/x11iraf/ximtool/gui/pixtab.tcl
new file mode 100644
index 00000000..d23827c9
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/pixtab.tcl
@@ -0,0 +1,144 @@
+
+################################################################################
+# Pixel Table Callbacks.
+################################################################################
+
+set psize 5
+set pixtab_up 0
+set hdr_up 0
+
+createMenu pixtabMenu pixtabSize {
+ { "3x3" f.exec { pixtabSetSize 3 } }
+ { "5x5" f.exec { pixtabSetSize 5 } }
+ { "7x7" f.exec { pixtabSetSize 7 } }
+ { "9x9" f.exec { pixtabSetSize 9 } }
+}
+
+
+proc updatePixelTable { cx cy wx wy args } \
+{
+ global psize pixtab_up ism_enable
+
+ if {! $pixtab_up} \
+ return
+ if {$ism_enable} \
+ return
+
+ set delta [expr int($psize / 2) ]
+ set x1 [expr ($wx - $delta) ]
+ set x2 [expr ($wx + $delta) ]
+ set y1 [expr ($wy - $delta) ]
+ set y2 [expr ($wy + $delta) ]
+ set c [ expr int($psize / 2) ]
+
+
+ # Update the table labels.
+ set x $x1 ; set xl {}
+ set y $y2 ; set yl {}
+ for {set i 0} {$i < $psize} {incr i} {
+ lappend xl [format " %10.1f " $x] ; set x [ expr ($x + 1.) ]
+ lappend yl [format " %10.1f " $y] ; set y [ expr ($y - 1.) ]
+ }
+ send ptColLabs setList $xl ; send ptColLabs highlight $c
+ send ptRowLabs setList $yl ; send ptRowLabs highlight $c
+
+ # Update the pixel table itself.
+ #set pix [ send client getPixels $cx $cy $psize True ]
+
+ set x0 [ expr int($cx - $psize / 2. + 0.5)]
+ set y0 [ expr int($cy - $psize / 2. + 0.5)]
+ set pix [ send client getPixels $x0 $y0 $psize $psize ]
+ send pixtab setList [ lrange $pix 4 end ]
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Update the pixtab stats.
+ set sum 0.0
+ set sum2 0.0
+ set npix [ expr ($psize * $psize) ]
+ set nend [ expr ($psize * $psize) + 4 ]
+ for {set i 4} {$i < $nend} {incr i} {
+ set val [lindex $pix $i]
+ catch {
+ set sum [ expr ($sum + $val) ]
+ set sum2 [ expr ($sum2 + $val * $val) ]
+ }
+ }
+
+ set mean [ expr ($sum / ($npix * 1.0)) ]
+ set var [ expr (($sum2 - $sum * $mean) / ($npix - 1)) ]
+ if {$var <= 0.0} {
+ set stdev 0.0
+ } else {
+ set stdev [ expr sqrt ($var) ]
+ }
+ send meanValue set label [ format "%10.2f" $mean ]
+ send sigValue set label [ format "%10.4f" $stdev ]
+}
+
+
+proc pixtabClose args \
+{
+ global pixtab_up
+
+ send pixel_panel unmap
+ send pixelTable set on False
+ set pixtab_up 0
+ catch { send wcspix set psize 0 }
+} ; send pixtabClose addCallback pixtabClose
+
+
+proc pixtabSetSize { size args } \
+{
+ global psize ism_enable
+
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Now reset the window size.
+ switch $size {
+ 3 { send pixel_panel "resize 265 175"
+ send pixtab "set width 180 ; set height 60"
+ }
+ 5 { send pixel_panel "resize 375 215"
+ send pixtab "set width 290 ; set height 105"
+ }
+ 7 { send pixel_panel "resize 495 265"
+ send pixtab "set width 410 ; set height 150"
+ }
+ 9 { send pixel_panel "resize 610 310"
+ send pixtab "set width 525 ; set height 195"
+ }
+ }
+
+ send pixtab set defaultColumns $size
+ send ptColLabs set defaultColumns $size
+ set psize $size
+
+ # Notify the ISM we've changed size.
+ if ($ism_enable) {
+ catch { send wcspix set psize $psize }
+ }
+
+ send imagewin getCursorPos xc yc
+ updatePixelTable $xc $yc $xc $yc
+
+} ; pixtabSetSize $psize
+
+
+proc ptPixelTable {widget type state args} \
+{
+ global pixtab_up psize
+
+ set pixtab_up $state
+ if {$pixtab_up == 1} {
+ send pixelTable set on True
+ send pixel_panel map
+ catch { send wcspix set psize $psize }
+ } else {
+ send pixelTable set on False
+ send pixel_panel unmap
+ catch { send wcspix set psize 0 }
+ }
+}; send pixelTable addCallback ptPixelTable
+
diff --git a/vendor/x11iraf/ximtool/gui/plots.tcl b/vendor/x11iraf/ximtool/gui/plots.tcl
new file mode 100644
index 00000000..9ea56c8b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/plots.tcl
@@ -0,0 +1,667 @@
+
+
+################################################################################
+# Cut-plot handling routines.
+################################################################################
+
+set doHcut 0
+set doVcut 0
+set hstate 0
+set vstate 0
+set plotSpeed 1 ; send plotSpeed set on True
+set curJump 1 ; send curJump set on True
+set curTrack 1 ; send curTrack set on True
+
+set cutXPos [expr "$winWidth / 2"]
+set cutYPos [expr "$winHeight / 2"]
+set cutXScale 1.0
+set cutYScale 1.0
+
+
+
+# Change the cursor to the crosshair when in the plot
+proc cutCursor { widget event args } \
+{
+ global doHcut doVcut curTrack
+
+ if {! $curTrack} \
+ return
+
+ if { $event == "enterNotify" } {
+ send $widget setCursorType ginMode
+
+ # Disable the update of the graph we're in while in the plot window.
+ if {$widget == "hcutPlot"} { set doHcut 0 } else { set doVcut 0 }
+ } elseif { $event == "leaveNotify" } {
+ send $widget setCursorType idle
+
+ # Enable the update of the graph we're leaving.
+ if {$widget == "hcutPlot"} { set doHcut 1 } else { set doVcut 1 }
+ }
+ cutPlotRefresh
+}
+foreach w {hcutPlot vcutPlot} {
+ send $w addEventHandler cutCursor enterWindowMask
+ send $w addEventHandler cutCursor leaveWindowMask
+}
+
+proc cutPlotRefresh args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+} ; send imagewin addEventHandler cutPlotRefresh enterWindowMask
+
+proc cutPlotRedraw args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+}
+
+
+# Disable the options when we first start up.
+#send plotOpts "set height 1 ; set width 1 ; unmap"
+foreach w {plotOpts hcutFrame vcutFrame} { send $w unmap }
+
+
+# Cut-Plot options callback.
+proc doPlotOpts { widget type state args } \
+{
+ global plotSpeed curJump curTrack doHcut doVcut
+ global cutXPos cutYPos
+
+ if {$state} { set not 0 } else { set not 1 }
+
+ switch $widget {
+ plotSpeed { if {$state} {
+ send plotAccurate set on 0 ; send plotImgPix set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotAccurate { if {$state} {
+ send plotImgPix set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotImgPix { if {$state} {
+ send plotAccurate set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ curJump { send curSmooth set on $not ; set curJump $state }
+ curSmooth { send curJump set on $not ; set curJump $not }
+ curTrack { set curTrack $state }
+ }
+
+ # Redraw the plots right away.
+ if {$widget == "plotSpeed" || $widget == "plotAccurate"} {
+ cutPlots $cutXPos $cutYPos
+ }
+}
+foreach w { plotSpeed plotAccurate plotImgPix curJump curSmooth curTrack } {
+ send $w addCallback doPlotOpts
+}
+
+
+# Toggle the display of the horizontal or vertical cut plot windows.
+
+proc cutPlotToggle { widget type state args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+ set debug 0
+
+ set hstate [send hcut get state]
+ set vstate [send vcut get state]
+ set w [send display get width]
+ set h [send display get height]
+
+ if {$debug} { print " " ; print [format "display: %d x %d\n" $w $h] }
+
+ if {$widget == "hcut"} {
+ set hfw [expr [send hcutFrame get width] - 4]
+ set hpw [send hcutPlot get width]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$vstate} {
+ send plotOpts set width 134
+ }
+ send hcutFrame "set width $hpw ; set height 132; map"
+ send hcutPlot "set width $hfw ; set height 128"
+ send display "set height [ expr ($h + 132) ]; set width $w"
+ drawHcutAxes 1
+ setHcutCursor 1
+ if {$vstate} {
+ send plotOpts "set height 134 ; map"
+ vcutInit
+ }
+ hcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setHcutCursor 0
+ drawHcutAxes 0
+ send hcutPlot clearScreen
+ send plotOpts "unmap; set height 4"
+ send hcutFrame "unmap; set width $hfw; set height 4"
+ send plotOpts "set width 4"
+ send display "set height [ expr ($h - 128) ] ; set width $w"
+ if {$vstate} {
+ vcutInit
+ }
+ }
+ set doHcut $state
+ } else {
+ set vfh [expr [send vcutFrame get height] - 4]
+ set vph [send vcutPlot get height]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$hstate} {
+ send plotOpts set height 134
+ }
+ send vcutFrame "set height $vph ; set width 132 ; map"
+ send vcutPlot "set height $vfh ; set width 128"
+ send display "set height $h; set width [ expr ($w + 132) ]"
+ drawVcutAxes 1
+ setVcutCursor 1
+ if {$hstate} {
+ send plotOpts "set height 134 ; set width 134; map"
+ hcutInit
+ }
+ vcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setVcutCursor 0
+ drawVcutAxes 0
+ send vcutPlot clearScreen
+ send plotOpts "unmap; set width 4"
+ send vcutFrame "unmap; set height $vfh; set width 4"
+ send plotOpts "set height 4"
+ send display "set width [ expr ($w - 128) ] ; set height $h"
+ if {$hstate} {
+ hcutInit
+ }
+ }
+ set doVcut $state
+ }
+
+ if {$debug} {
+ print [format " hFrame: %d x %d\n" \
+ [send hcutFrame get width] [send hcutFrame get height] ]
+ print [format " hPlot: %d x %d\n" \
+ [send hcutPlot get width] [send hcutPlot get height] ]
+ print [format " vFrame: %d x %d\n" \
+ [send vcutFrame get width] [send vcutFrame get height] ]
+ print [format " vPlot: %d x %d\n" \
+ [send vcutPlot get width] [send vcutPlot get height] ]
+ print [format "state: %d %d\n" $hstate $vstate]
+ print [format "display: %d x %d\n" $w $h]
+ }
+
+ cutPlots $cutXPos $cutYPos
+} ; foreach w { hcut vcut } { send $w addCallback cutPlotToggle }
+
+
+# Draw the cut plots.
+proc cutPlots { xpos ypos args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+
+ catch {
+ if {$doHcut} {
+ drawHcutIndicator $xpos
+ if {$hstate} { plotHcut $xpos $ypos }
+ }
+ if {$doVcut} {
+ drawVcutIndicator $xpos
+ if {$vstate} { plotVcut $xpos $ypos }
+ }
+ }
+
+ set cutXPos $xpos ; set cutYPos $ypos
+}
+
+
+################################################################################
+# Horizontal Cut-Plot Routines
+################################################################################
+
+set hcutVec {}
+
+# Initiailize the horizontal cut-plot
+proc hcutInit args \
+{
+ global logz cutXScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send hcutPlot getPhysRes xr yr
+ send hcutPlot setLogRes $xr $yr
+
+ set logx [send imagewin get width]
+ set logz [expr ($z2 - $z1)]
+ set cutXScale [expr ($xr * 1.0) / ($logx * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6"
+ drawHcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotHcut { xpos ypos } \
+{
+ global doHcut cutXScale
+ global hcutVec cutXPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doHcut } \
+ return
+
+ # Do the horizontal cut plot.
+ set width [send imagewin get width]
+ if {$plotSpeed} {
+ set pix [send client getPixels 0 $ypos $width 1 2 5 $cutXScale]
+ } else {
+ set pix [send client getPixels 0 $ypos $width 1 2 1 $cutXScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Erase the last plot rather than clear the screen and redraw
+ # the new vector.
+ send hcutPlot setColorIndex background
+ send hcutPlot drawPolyline $hcutVec
+ send hcutPlot setColorIndex foreground
+ send hcutPlot drawPolyline $vec
+ set hcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawHcutIndicator $xpos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$ypos % 3"] == 0} {
+ catch {
+ drawHcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send hcutAxes1 redraw ;# redraw the axes markers
+ send hcutAxes2 redraw
+ }
+}
+
+
+# Create markers to indicate axes on the horizontal cut-plot.
+proc drawHcutAxes { state } \
+{
+ if {$state} {
+ send hcutPlot createMarker hcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 60 \
+ height 30 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ send hcutPlot createMarker hcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ height 60 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send hcutAxes1 destroy ; send hcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setHcutCursor { state } \
+{
+ if {$state} {
+ set pts { {252 10} {260 10} {256 1} }
+
+ send hcutPlot createMarker hcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 256 \
+ y 12 \
+ width 8 \
+ height 10 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send hcutCursor setVertices $pts
+ send hcutCursor set visible True
+
+ } else {
+ send hcutCursor destroy
+ }
+}
+
+# Label the axes on the horizontal cut plot.
+proc drawHcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ send hcutPlot "setColorIndex 6 ; \
+ drawAlphaText 2 10 [format "%.1f" $z2] ; \
+ drawAlphaText 2 34 [format "%.1f" $high] ; \
+ drawAlphaText 2 64 [format "%.1f" $mid] ; \
+ drawAlphaText 2 94 [format "%.1f" $low] ; \
+ drawAlphaText 2 120 [format "%.1f" $z1]"
+}
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawHcutIndicator { xpos } \
+{
+ global cutXScale cutXPos
+
+ send hcutCursor move [expr ($xpos * $cutXScale)] 12
+ set cutXPos $xpos
+}
+
+# Track the cursor while in the cut-graph window.
+proc hcutWCSUpdate { x y args } \
+{
+ global cutYPos curTrack
+ if {$curTrack} {
+ wcsUpdate $x $cutYPos
+ }
+ drawHcutIndicator $x
+}
+
+
+
+
+################################################################################
+# Vertical Cut-Plot Routines
+################################################################################
+
+set vcutVec {}
+
+# Initiailize the vertical cut-plot
+proc vcutInit args \
+{
+ global cutYScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send vcutPlot getPhysRes xr yr
+ send vcutPlot setLogRes $xr $yr
+
+ set logy [send imagewin get height]
+ set logz [expr ($z2 - $z1)]
+ set cutYScale [expr ($yr * 1.0) / ($logy * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6; reset"
+ drawVcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotVcut { xpos ypos } \
+{
+ global doVcut cutYScale
+ global vcutVec cutXPos cutYPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doVcut } \
+ return
+
+ # Do the vertical cut plot.
+ set height [send imagewin get height]
+ if {$plotSpeed} {
+ set pix [send client getPixels $xpos 0 1 $height 3 5 $cutYScale]
+ } else {
+ set pix [send client getPixels $xpos 0 1 $height 3 1 $cutYScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Draw the vector.
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+ send vcutPlot drawPolyline $vec
+ set vcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawVcutIndicator $ypos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$xpos % 3"] == 0} {
+ catch {
+ drawVcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send vcutAxes1 redraw ;# redraw the axes markers
+ send vcutAxes2 redraw
+ }
+}
+
+# Erase the last plot rather than clear the screen and redraw it all. The
+# erase is done by redrawing the last vector in the the background color.
+proc eraseOldVcut args \
+{
+ global cutYPos vcutVec
+
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+}
+
+# Draw the horizontal cut-plot.
+# Create markers to indicate axes on the vertical cut-plot.
+proc drawVcutAxes { state } \
+{
+ if {$state} {
+ send vcutPlot createMarker vcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 60 \
+ y 1 \
+ height 4096 \
+ width 30 \
+ activated True \
+ visible True \
+ sensitive False
+ send vcutPlot createMarker vcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ width 60 \
+ height 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send vcutAxes1 destroy ; send vcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setVcutCursor { state } \
+{
+ if {$state} {
+ set pts { {10 252} {10 260} {1 256} }
+
+ send vcutPlot createMarker vcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 12 \
+ y 256 \
+ width 10 \
+ height 8 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send vcutCursor setVertices $pts
+ send vcutCursor set visible True
+
+ } else {
+ send vcutCursor destroy
+ }
+}
+
+# Label the axes on the vertical cut plot.
+proc drawVcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ # Initialize the label strings and positions.
+ set labels {}
+ foreach i [list $z2 $high $mid $low $z1] {
+ lappend labels [ format "%.1f" $i ]
+ }
+ set xposns { 2 28 58 88 112 }
+
+ send vcutPlot "setColorIndex 6"
+
+ # Draw each label vertically down the position since we can't rotate
+ # the text.
+ set xp 0
+ foreach lab $labels {
+ set chars [split $lab {} ]
+ set yp 12
+ set xpos [lindex $xposns $xp]
+ foreach ch $chars {
+ if {$ch == "."} { incr yp -4 }
+ send vcutPlot drawAlphaText $xpos $yp $ch
+ incr yp 10
+ }
+ incr xp
+ }
+}
+
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawVcutIndicator { ypos } \
+{
+ global cutYScale cutYPos
+
+ send vcutCursor move 12 [expr ($ypos * $cutYScale)]
+ set cutYPos $ypos
+}
+
+
+# Track the cursor while in the cut-graph window.
+proc vcutWCSUpdate { x y args } \
+{
+ global cutXPos curTrack
+ if {$curTrack} {
+ wcsUpdate $cutXPos $y
+ }
+ drawVcutIndicator $y
+}
+
+
+
+################################################################################
+# UTILITY ROUTINES
+################################################################################
+
+
+# TICSTEP -- Utility routine to compute nice ticmark steps in plots.
+# [ NOT CURRENTLY USED. ]
+
+proc ticstep { range nsteps } \
+{
+ set t2 0.301029996
+ set t5 0.698970004
+ set df [ expr "$range / double($nsteps + 1)" ]
+ if {$df > 0.0} {
+ set p1 [ expr "log10(double($df))" ]
+ } else {
+ set p1 [ expr "log10(double(-$df))" ]
+ }
+ set p2 [ expr "int($p1)" ]
+ set p3 [ expr "$p1 - $p2" ]
+
+ if { $p3 < 0.0 } {
+ set p3 [ expr "$p2 + 1.0" ]
+ set p2 [ expr "$p2 - 1.0" ]
+ }
+
+ if { $p3 < 1.0e-10 } {
+ set ticstep [ expr "pow(double(10.0),double($p2))" ]
+ } elseif { $p3 > 0. && $p3 <= $t2 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t2))" ]
+ } elseif { $p3 > $t2 && $p3 <= $t5 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t5))" ]
+ } elseif { $p3 > $t5 && $p3 <= 1.0 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + 1.))" ]
+ } else {
+ set ticstep $df
+ }
+
+ set logtic [ expr "int(log10($ticstep)) - 1" ]
+ set scale [ expr "pow(double(10.0),double($logtic))" ]
+ set ticstep [ expr "int( ($ticstep / $scale) * $scale)" ]
+
+ if {$ticstep < 0.1} { set ticstep 0.10 }
+
+ return $ticstep
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/print.res b/vendor/x11iraf/ximtool/gui/print.res
new file mode 100644
index 00000000..3327cb48
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/print.res
@@ -0,0 +1,304 @@
+
+set Resources(print_panel) { \
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 20
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -3 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 80
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 1
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*Text*height: 22
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout.layout: horizontal { \
+ labelLayout 5 inputLayout < +inf -inf * > \
+ }
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { 5 toLabel 7 printerLabel }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { 5 toPrinter 5 toFile 5 < +inf -inf > } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 330
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 2
+ *optLayout*borderWidth: 0
+ *optLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ vertical { \
+ 5 \
+ epsPageGroup < +inf -inf * > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ vertical { \
+ 5 \
+ printColorGroup < +inf -inf * > \
+ printerGroup < +inf -inf * > \
+ -1 \
+ } \
+ -1 \
+ } \
+ 5 \
+ horizontal { annOptsGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 7
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel 4 < -4 > \
+ horizontal { 25 epsPortButton epsLandButton epsSquareButton -1 } \
+ 4 \
+ epsSizeLabel -1 \
+ horizontal { \
+ 25 epsLetterButton epsLegalButton epsA4Button epsB5Button -1 \
+ } \
+ 10 \
+ horizontal { 5 epsScaleLabel 4 ScaleFrame < +inf -inf * > } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 65
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 85
+ *epsSquareButton.label: Square
+ *epsSquareButton.width: 70
+ *epsSquareButton.sensitive: False
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 60
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 60
+ *epsA4Button.label: A4
+ *epsA4Button.width: 50
+ *epsB5Button.label: B5
+ *epsB5Button.width: 50
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Output Image Scale:
+ *epsScaleLabel.justify: right
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 1
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 35
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease SCtext < +inf -100% * > SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 22
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 7
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 125
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.location: 0 0 250 60
+ *options.frameWidth: 2
+ *options.layout: horizontal { \
+ 5 \
+ vertical { -1 epsscaleButton 2 autorotateButton -1 } \
+ 3 \
+ vertical { -1 aspectButton 2 compressButton -1 } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: RLE Compress
+ *compressButton.sensitive: False
+
+
+ ! Annotation options box resources.
+ ! ------------------------------------
+ *annOptsGroup.outerOffset: 7
+ *annOptsGroup.innerOffset: 5
+ *annOptsGroup*onIcon: square1s
+ *annOptsGroup*offIcon: square0s
+ *annOptsGroup.label: Annotation Options
+ *annOptsGroup*TextToggle.width: 90
+ *annOptsGroup*TextToggle.highlightColor: yellow
+ *annOptsGroup*Frame.frameType: sunken
+ *annOptsGroup*Frame.frameWidth: 1
+ *annOptsGroup*Frame.width: 300
+ *annOptsGroup*Text*editType: edit
+ *annOpts.frameWidth: 2
+ *annOpts.location: 0 0 400 70
+ *annOpts.layout: vertical { \
+ 2 \
+ horizontal { \
+ 5 annotateButton 2 titleButton 2 bordersButton 2 colorbarButton 5 \
+ } \
+ 3 \
+ horizontal { -1 titleLabel 2 titleFrame < +inf -inf * > -1 } \
+ -1 \
+ }
+ *annotateButton.label: \ Annotate
+ *titleButton.label: \ Title
+ *bordersButton.label: \ Borders
+ *colorbarButton.label: \ Colorbar
+ *titleLabel.label: Title String
+ *titleString*string: imtitle
+ *titleString*height: 23
+ *titleString*Text*editType: edit
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 7
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 110
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 1 \
+ vertical { -1 prGrayButton 2 prPseudoButton 2 prRGBButton -1 } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 130
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 7
+
+ *printers*Viewport.allowVert: True
+ *printers*Viewport.allowHoriz: False
+ *printers*Viewport.useRight: True
+ *printers*Viewport.resizeable: True
+ *printers*Scrollbar.width: 17
+ *printers*Scrollbar.minimumThumb: 10
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*frameType: sunken
+ *printers*frameWidth: 1
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 50
+ *cmdLayout.borderWidth: 0
+ *cmdLayout*Command.internalWidth: 12
+ *cmdLayout.layout: horizontal { \
+ 2 \
+ okayPrint 1 < +inf > printStatus < +inf -inf * +inf -inf > \
+ 2 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/print.tcl b/vendor/x11iraf/ximtool/gui/print.tcl
new file mode 100644
index 00000000..983d2a15
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/print.tcl
@@ -0,0 +1,342 @@
+
+################################################################################
+# Print Panel Functions.
+################################################################################
+
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args \
+{
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } \
+{
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ send titleButton setSensitive true
+ send colorbarButton setSensitive true
+ send bordersButton setSensitive true
+ send titleLabel setSensitive true
+ send titleString setSensitive true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ send titleButton setSensitive false
+ send colorbarButton setSensitive false
+ send bordersButton setSensitive false
+ send titleLabel setSensitive false
+ send titleString setSensitive false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ } elseif { $val == "B5" } {
+ send epsB5Button set on true
+ set page_size epsB5Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+ dotitle { if { $val == "True" } {
+ send titleButton set on true
+ } elseif { $val == "False" } {
+ send titleButton set on false
+ }
+ }
+ doborders { if { $val == "True" } {
+ send bordersButton set on true
+ } elseif { $val == "False" } {
+ send bordersButton set on false
+ }
+ }
+ docolorbar { if { $val == "True" } {
+ send colorbarButton set on true
+ } elseif { $val == "False" } {
+ send colorbarButton set on false
+ }
+ }
+ title { send titleString set string $val
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button epsB5Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+ titleButton bordersButton colorbarButton
+}
+
+proc prPrintCommand { widget cbtype args } \
+{
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prTitleString { widget cbtype args } \
+{
+ send client setPrintOption title $args
+}; send titleString addCallback prTitleString
+
+proc prOptionToggle { widget cbtype args } \
+{
+ global imageScale
+
+ # Handle the image scale widgets first.
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+ epsB5Button { send client setPrintOption papersize B5 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } \
+{
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+
+ titleButton { send client setPrintOption dotitle $val }
+ bordersButton { send client setPrintOption doborders $val }
+ colorbarButton { send client setPrintOption docolorbar $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set lprList {}
+
+proc psSetPrintList {param old new} \
+{
+ global lprList
+ set lprList $new
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc lprResize args \
+{
+ global lprList
+ send printlist setList $lprList resize
+ send printlist highlight 0
+}; send printlist addEventHandler lprResize ResizeRedirectMask
+
+proc psSelectPrint {widget cbtype selections indices} \
+{
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc Print args \
+{
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ set val [ send titleString get string ]
+ send client setPrintOption title $val
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } \
+{
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
diff --git a/vendor/x11iraf/ximtool/gui/resources.res b/vendor/x11iraf/ximtool/gui/resources.res
new file mode 100644
index 00000000..201e2e16
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/resources.res
@@ -0,0 +1,26 @@
+
+set Resources(gui) { \
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *showToolBar: False
+ *showPanelBar: False
+ *warnings: True
+ *centerBoxSize: 5
+ *peakCentroid: True
+}
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui/rulers.tcl b/vendor/x11iraf/ximtool/gui/rulers.tcl
new file mode 100644
index 00000000..98f30a0f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/rulers.tcl
@@ -0,0 +1,524 @@
+
+
+################################################################################
+# RULER MARKERS
+################################################################################
+
+set rulerX 0 ;# ruler start in screen coords
+set rulerY 0
+set rulerPts { {0 0} {0 0} {0 0} } ;# ruler vertices
+set rulerList { } ;# ruler list
+
+set rulerSticky { } ;# list of sticky rulers
+set isSticky "Sticky" ;# menu label
+
+set rulerWCS 0 ;# use WCS coords
+set rulerXWCS 0 ;# ruler start in WCS units
+set rulerYWCS 0
+set rulerXWCS2 0 ;# ruler end in WCS units
+set rulerYWCS2 0
+set rulerFmt pixel ;# ruler label format
+
+
+# Translations when pointer is inside marker.
+set rulerTranslations { \
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: call(deleteNamedRuler,NAME,$x,$y)
+ <Key>Delete: call(deleteNamedRuler,NAME,$x,$y)
+ <KeyPress>: m_input()
+ <Btn3Down>: call(setRulerMenu) popup(rulerMenu)
+ <Btn3Up>: popdown(rulerMenu)
+!Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(resizeRuler,$x,$y,0)
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y)
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+
+
+# Popup menu in effect when inside marker.
+set rulerMenuDescription {
+ { "Ruler" f.title }
+ { f.dblline }
+ { "$isSticky" f.exec {
+ toggleSticky $ruler
+ } }
+ { f.line }
+ { "Units" f.menu rulerUnits }
+ { "Color" f.menu rulerColor }
+ { f.line }
+ { "Draw into Frame" f.exec {
+ writeRuler $ruler
+ } sensitive False }
+ { f.line }
+ { "Destroy" f.exec {
+ scan $ruler "ruler%d" num
+ deleteNamedRuler $num x y
+ } }
+} ; createMenu rulerMenu imagewin $rulerMenuDescription
+
+set rulerUnitsDescription {
+ { Units f.title }
+ { f.dblline }
+ { "Pixels" f.exec { setUnits $ruler pixel } }
+ { "Arc Seconds" f.exec { setUnits $ruler arcsec
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Arc Minutes" f.exec { setUnits $ruler arcmin
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Degrees" f.exec { setUnits $ruler degrees
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+} ; createMenu rulerUnits rulerMenu $rulerUnitsDescription
+
+set rulerColorDescription {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "r_setColor $ruler black yellow"
+ bitmap solid foreground black }
+ { "" f.exec "r_setColor $ruler white black"
+ bitmap solid foreground white }
+ { "" f.exec "r_setColor $ruler red yellow"
+ bitmap solid foreground red }
+ { "" f.exec "r_setColor $ruler green black"
+ bitmap solid foreground green }
+ { "" f.exec "r_setColor $ruler blue white"
+ bitmap solid foreground blue }
+ { "" f.exec "r_setColor $ruler magenta black"
+ bitmap solid foreground magenta }
+ { "" f.exec "r_setColor $ruler cyan black"
+ bitmap solid foreground cyan }
+ { "" f.exec "r_setColor $ruler yellow black"
+ bitmap solid foreground yellow }
+} ; createMenu rulerColor rulerMenu $rulerColorDescription
+
+
+proc makeRuler {parent x y} \
+{
+ global rulerTranslations ruleno rulerWCS rulerXWCS rulerYWCS
+ global rulerPts rulerX rulerY rulerList
+ global isSticky rulerMenuDescription rulerUnitsDescription
+ global coord coordLab
+
+
+ incr ruleno ; set ruler ruler$ruleno
+
+ # Substitute so the marker translation will delete the marker
+ # by it's number rather than the default parent widget name.
+ regsub -all NAME $rulerTranslations $ruleno translations
+
+ # Create the polygon for the marker.
+ send $parent createMarker $ruler \
+ type polygon\
+ createMode noninteractive\
+ translations $translations\
+ lineColor yellow\
+ fill False\
+ highlightWidth 1\
+ highlightColor yellow\
+ knotSize 0\
+ activated True\
+ visible False\
+ sensitive True\
+ x $x\
+ y $y
+
+ # Define a callback so we can identify the ruler.
+ send $ruler addCallback selectRuler focusIn focusOut
+
+ # Create the text markers for the labels.
+ send $parent set markerTextFont 6x9
+ makeLabelMarker $parent rulerXlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerYlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerHlab$ruleno 8ch 1ch
+ send $parent set markerTextFont 6x13
+
+ set rulerX $x ;# save the reference point
+ set rulerY $y
+
+ set ref [ list $x $y ] ;# initialize the polygon
+ set rx [ list [expr "$x +1"] $y ]
+ set ry [ list $x [expr "$y +1"] ]
+ set rulerPts [list $ref $rx $ry ]
+
+ send $ruler setVertices $rulerPts ;# set attributes
+ send $ruler set visible True"
+ send $ruler setAttribute autoRedraw True
+
+ # See whether we have a WCS to use.
+ set rulerWCS 0
+ set rulerXWCS 0
+ set rulerYWCS 0
+ for {set num 1} {$num <= 4 && $rulerWCS == 0} {incr num} {
+ if { [info exists coordLab(wcs$num)] } {
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+ if {$xl==" ra" || $xl=="elon" || $xl=="glon" || $xl=="slon"} {
+ set rulerWCS $num
+ set rulerXWCS [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set rulerYWCS [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ }
+ }
+ }
+
+ # Edit the menus.
+ set isSticky "Sticky"
+ editMenu rulerMenu imagewin $rulerMenuDescription
+ editMenu rulerUnits imagewin $rulerUnitsDescription
+
+
+ lappend rulerList $ruleno
+}
+
+proc wcs2log { val label fmt} \
+{
+ set newval $val
+ if {$fmt == "sexigesimal" || $fmt == "default"} {
+ scan $val "%d:%d:%f" h m s
+ set newval [expr "double($h) + double($m) / 60.0 + double($s) / 3600.0"]
+ if {$label == " ra"} {
+ set newval [expr "double($newval * 15.0)"]
+ }
+ }
+ return [expr "double($newval)" ]
+}
+
+
+proc resizeRuler {x y redraw} \
+{
+ global rulerPts rulerX rulerY ruleno coord coordLab
+ global rulerWCS rulerXWCS rulerYWCS rulerFmt
+ global rulerXWCS2 rulerYWCS2
+
+
+ # Track the mouse.
+ set ref [ list $rulerX $rulerY ]
+ set rx [ list $x $rulerY ]
+ set ry [ list $x $y ]
+ set rulerPts [list $ref $rx $ry ]
+
+ # Compute the distances.
+ if {$rulerWCS > 0} {
+ set num $rulerWCS
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+
+ # Save the cursor coords in WCS so we can convert labels.
+ if {$redraw} {
+ set nx $rulerXWCS2
+ set ny $rulerYWCS2
+ } else {
+ set nx [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set ny [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ set rulerXWCS2 $nx
+ set rulerYWCS2 $ny
+ }
+ }
+
+ if {$rulerFmt == "pixel"} {
+ set xdist [ expr "abs($x - $rulerX)" ]
+ set ydist [ expr "abs($y - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ } else {
+ set xdist [ expr "abs($nx - $rulerXWCS)" ]
+ set ydist [ expr "abs($ny - $rulerYWCS)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ }
+
+ # Redraw the polygon.
+ send ruler$ruleno setVertices $rulerPts
+
+ # Label the distances.
+ setXRulerLabel $x $y $xdist
+ setYRulerLabel $x $y $ydist
+ setHRulerLabel $x $y $hdist
+}
+
+# Create a label marker for the ruler.
+proc makeLabelMarker { parent name width height } \
+{
+ send $parent createMarker $name \
+ type text \
+ createMode noninteractive \
+ width $width \
+ height $height \
+ lineWidth 0 \
+ imageText true \
+ textBgColor yellow \
+ textColor black \
+ activated true \
+ visible false
+}
+
+proc setXRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpXscale rulerFmt
+
+ send rulerXlab$ruleno set visible False
+
+ if {[expr "abs($cx - $rulerX)"] > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerXlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY - 14"]
+ } else {
+ set yp [expr "$rulerY + 2"]
+ }
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - 10"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - 10"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerXlab$ruleno "setAttributes x $xp y $yp"
+ send rulerXlab$ruleno "set text \{$text\}; redraw erase"
+
+ send rulerXlab$ruleno set visible True
+ }
+}
+
+proc setYRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale rulerFmt
+
+ send rulerYlab$ruleno set visible False
+
+ if {[expr "abs($cy - $rulerY)"] > 20} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpYscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerYlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$cx + 2"]
+ } else {
+ set xp [expr "$cx - $len * 6 - 5"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerYlab$ruleno "setAttributes x $xp y $yp"
+ send rulerYlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerYlab$ruleno set visible True
+ }
+}
+
+proc setHRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale cpXscale rulerFmt
+
+ send rulerHlab$ruleno set visible False
+
+ set xdist [ expr "abs($cx - $rulerX)" ]
+ set ydist [ expr "abs($cy - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+
+ if {$hdist > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerHlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - $len * 6"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - $len * 3"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerHlab$ruleno "setAttributes x $xp y $yp"
+ send rulerHlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerHlab$ruleno set visible True
+ } else {
+ send rulerHlab$ruleno set visible False
+ }
+}
+
+
+# Callback executed when a marker gets or loses the focus.
+proc selectRuler {active_ruler event event_data} \
+{
+ global ruler
+ switch $event {
+ focusIn { set ruler $active_ruler }
+ focusOut { }
+ }
+}
+
+# Reset the ruler format type.
+proc setUnits { ruler units } \
+{
+ global rulerFmt rulerX rulerY
+
+ send $ruler getVertices pts
+ set rulerX [lindex [lindex [lindex $pts 0] 0] 0]
+ set rulerY [lindex [lindex [lindex $pts 0] 0] 1]
+ set cx [lindex [lindex [lindex $pts 0] 1] 0] ; incr cx -1
+ set cy [lindex [lindex [lindex $pts 0] 2] 1] ; incr cy -1
+
+ set rulerFmt $units
+ resizeRuler $cx $cy 1
+}
+
+# Menu option toggle callbacks.
+proc toggleSticky { ruler } \
+{
+ global isSticky rulerSticky rulerMenuDescription
+
+ set index [ lsearch $rulerSticky $ruler]
+ if { $index >= 0 } {
+ # Remove it from the list.
+ set rulerSticky [lreplace $rulerSticky $index $index]
+ set isSticky "Sticky"
+ } else {
+ # Add it to the list.
+ lappend rulerSticky $ruler
+ set isSticky "UnSticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+proc setRulerMenu args \
+{
+ global ruler isSticky rulerSticky rulerMenuDescription
+
+ if { [lsearch $rulerSticky $ruler] >= 0 } {
+ set isSticky "UnSticky"
+ } else {
+ set isSticky "Sticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+
+# Draw the ruler to the frame buffer as a graphic.
+proc writeRuler { ruler } \
+{
+}
+
+# Change the color of the ruler.
+proc r_setColor {ruler bgcolor fgcolor} {
+
+ # Recolor the polygon.
+ send $ruler \
+ "markpos; set lineColor $bgcolor; set highlightColor $bgcolor; redraw"
+
+ # Recolor the labels.
+ scan $ruler "ruler%d" num
+ send rulerXlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerYlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerHlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+}
+
+
+# Delete the current ruler, called when we have a Btn1Up on the current ruler.
+proc deleteRuler {x y} { global ruleno ; deleteNamedRuler $ruleno $x $y }
+
+# Delete all rulers on the screen, usually called when the view changes.
+# We preserve the rulers marked as 'sticky'.
+proc deleteAllRulers args \
+{
+ global rulerList rulerSticky
+
+ foreach r $rulerList {
+ # Delete the ruler if it's not in the sticky list.
+ if { [lsearch $rulerSticky ruler$r] == -1 } {
+ deleteNamedRuler $r x y
+ }
+ }
+}
+
+# Delete a particular ruler, usually called from the translation table on
+# the marker itself.
+proc deleteNamedRuler {name x y} \
+{
+ global rulerList
+
+ catch {
+ send ruler$name destroy
+ send rulerXlab$name destroy
+ send rulerYlab$name destroy
+ send rulerHlab$name destroy
+ }
+
+ # Remove the ruler from the list.
+ set index [lsearch $rulerList $name]
+ set rulerList [lreplace $rulerList $index $index]
+}
+
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui/save.res b/vendor/x11iraf/ximtool/gui/save.res
new file mode 100644
index 00000000..81c45ace
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/save.res
@@ -0,0 +1,143 @@
+
+set Resources(save_panel) { \
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel*TextToggle.alignment: left
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ saveNameGroup < +inf * > \
+ saveOptGroup < +inf -inf * > -3 \
+ saveCmdGroup < +inf * > \
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 50
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 1
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout.layout: vertical { \
+ 2 \
+ horizontal { 5 saveLabel 5 fnameFrame < +inf -inf * > 5 } \
+ 2 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 140
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { 5 < -5 > fmtGroup < +inf * +inf > -1 } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -inff * +inff -inff > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { 5 < -5 > saveColorGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 140 120
+ *saveColorGroup.outerOffset: 7
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 110
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { 5 svGrayButton 2 svPseudoButton 2 svRGBButton -1 } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svRGBButton.label: RGB
+
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 1
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 7
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { 5 fitsButton 2 gifButton 2 tiffButton 2 rawButton 1 } \
+ 2 < -2 > \
+ vertical { 5 epsButton 2 rasButton 2 x11Button 2 jpegButton 1 } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *epsButton.label: EPS
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: False
+ *x11Button.sensitive: False
+ *rawButton.sensitive: False
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 50
+ *saveCmdLayout*Command.internalWidth: 12
+ *saveCmdLayout.layout: horizontal { \
+ 2 \
+ okaySave 1 < +inf -1 > saveStatus < +inf -inf * > \
+ 2 \
+ }
+ *okaySave.label: Save
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/save.tcl b/vendor/x11iraf/ximtool/gui/save.tcl
new file mode 100644
index 00000000..36706d31
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/save.tcl
@@ -0,0 +1,156 @@
+
+################################################################################
+# Save panel functions.
+################################################################################
+
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button epsButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } \
+{
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ epsButton { send client setSaveOption format eps }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } \
+{
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } \
+{
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ eps { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format epsButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+
+proc Save args \
+{
+ global panel_up
+
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+} ; send okaySave addCallback Save
+
+
diff --git a/vendor/x11iraf/ximtool/gui/tcl.obj b/vendor/x11iraf/ximtool/gui/tcl.obj
new file mode 100644
index 00000000..3bea2d87
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/tcl.obj
@@ -0,0 +1,13 @@
+
+set Objects(tcl_panel) { \
+ toplevel TopLevelShell tcl_panel\
+ tcl_panel Layout tclLayout\
+ tclLayout Group tclCmdGroup\
+ tclCmdGroup Layout tclCmd\
+ tclCmd Command tclClear\
+ tclCmd Command tclExecute\
+ tclCmd Command tclDismiss\
+ tclLayout Frame tclFrame\
+ tclFrame AsciiText tclEntry\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/tcl.res b/vendor/x11iraf/ximtool/gui/tcl.res
new file mode 100644
index 00000000..6c250bc7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/tcl.res
@@ -0,0 +1,44 @@
+set Resources(tcl_panel) { \
+
+ !--------------------------------
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tcl_panel.width: 550
+ *tcl_panel.height: 180
+ *tcl_panel.title: Debug TCL Command Entry
+ *tclLayout*borderWidth: 0
+ *tclLayout*Frame.frameType: sunken
+ *tclLayout*Frame.frameWidth: 2
+ *tclLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ tclCmdGroup < +inf -inf * > \
+ tclFrame < +inf -inf * +inf -inf> \
+ 0 < +0 -0 > \
+ }
+ *tclEntry*foreground: black
+ *tclEntry*editType: edit
+ *tclEntry*type: string
+ *tclEntry*font: 7x13
+ *tclEntry*scrollVertical: Always
+ *tclEntry*scrollHorizontal: whenNeeded
+
+ *tclCmdGroup.label:
+ *tclCmdGroup.outerOffset: 0
+ *tclCmdGroup.innerOffset: 0
+ *tclCmd.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ tclClear 3 \
+ tclExecute \
+ 10 < +inf -10> \
+ tclDismiss \
+ 5 \
+ } \
+ 5 \
+ }
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclDismiss.label: Dismiss
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/tcl.tcl b/vendor/x11iraf/ximtool/gui/tcl.tcl
new file mode 100644
index 00000000..b3fb08d8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/tcl.tcl
@@ -0,0 +1,36 @@
+
+################################################
+# Define some TCL debug procedures.
+################################################
+
+set tcl_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { tclPanel }
+proc tclOpen args \
+{
+ global tcl_up
+ send tcl_panel map
+ set tcl_up 1
+}
+
+proc tclPanel args \
+{
+ global tcl_up
+ if {$tcl_up} {
+ send tcl_panel unmap
+ set tcl_up 0
+ } else {
+ send tcl_panel map
+ set tcl_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclDismiss addCallback tclClose
+
diff --git a/vendor/x11iraf/ximtool/gui/tile.res b/vendor/x11iraf/ximtool/gui/tile.res
new file mode 100644
index 00000000..2c1a9607
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/tile.res
@@ -0,0 +1,149 @@
+
+set Resources(tile_panel) { \
+
+ *tileOpts.frameType: chiseled
+ *tileOpts.frameWidth: 2
+ *tileOpts.outerOffset: 5
+ *tileOpts.innerOffset: 7
+ *tileOpts*shrinkToFit: True
+ *tileOpts*borderWidth: 0
+
+ *toptLayout.layout: vertical { \
+ horizontal { -6 tFramesG < +inf -inf * > -6 } \
+ horizontal { \
+ -1 \
+ horizontal { -6 tileMode < * +inf -inf > -6 } \
+ vertical { \
+ horizontal { -3 userOrientG < +inf -inf * > -3 } \
+ horizontal { -3 fillStyle < +inf -inf * > -3 } \
+ horizontal { -3 tileLabel < +inf -inf * > -3 } \
+ -7 \
+ horizontal { -3 geomFrame < +inf -inf * > -3 } \
+ } \
+ -1 \
+ } \
+ -4 \
+ }
+ *tileMode.label: Tile Mode
+ *tileMode.outerOffset: 7
+ *tileMode.innerOffset: 5
+ *tileMode*location: 0 0 150 20
+ *tileMode*TextToggle.outerOffset: 2
+ *tileMode*TextToggle.innerOffset: 1
+ *tileMode*TextToggle.frameWidth: 0
+ *tileMode*TextToggle.leftMargin: 10
+ *tileMode*TextToggle.rightMargin: 20
+ *tileMode*TextToggle.onIcon: diamond1s
+ *tileMode*TextToggle.offIcon: diamond0s
+ *tileMode*TextToggle.highlightColor: yellow
+
+ *tileDisabled.label: Disabled
+ *tileManual.label: Manual
+ *tileBest.label: Best
+ *tileSquare.label: Square
+ *tileHorizontal.label: Horizontal
+ *tileVertical.label: Vertical
+ *tileRow.label: One Row
+ *tileCol.label: One Column
+
+ *fillStyle.label: Fill Style
+ *fillStyle.location: 0 0 160 30
+ *fillStyle.outerOffset: 7
+ *fillStyle.innerOffset: 5
+ *fillStyle.rows: 1
+ *fillStyle*selectionStyle: multi
+ *fillStyle*outerOffset: 0
+ *fillStyle*innerOffset: 1
+ *fillStyle*leftMargin: 7
+ *fillStyle*onIcon: square1s
+ *fillStyle*offIcon: square0s
+ *fillStyle*highlightColor: yellow
+ *fillStyle.TextToggle.frameWidth: 0
+ *fillStyle.TextToggle.location: 0 0 85 23
+ *byCols.label: Fill by Columns
+ *bottomUp.label: Fill from Bottom
+
+ *tileLabel.label: Tile Labels
+ *tileLabel.location: 0 0 175 30
+ *tileLabel.outerOffset: 7
+ *tileLabel.innerOffset: 5
+ *tileLabel.rows: 1
+ *tileLabel*selection: -1
+ *tileLabel*outerOffset: 0
+ *tileLabel*innerOffset: 1
+ *tileLabel*leftMargin: 7
+ *tileLabel*onIcon: square1s
+ *tileLabel*offIcon: square0s
+ *tileLabel*highlightColor: yellow
+ *tileLabel.TextToggle.frameWidth: 0
+ *tileLabel.TextToggle.location: 0 0 85 23
+ *labelFrames.label: Frameno
+ *labelImname.label: Img Name
+ *labelTitles.label: Img Title
+
+ *geomFrame.frameWidth: 0
+ *geomFrame.frameType: sunken
+ *geomFrame.outerOffset: 7
+ *geomFrame.innerOffset: 4
+ *tileGeometry.width: 220
+ *tileGeometry.height; 37
+ *tileGeometry.background: #c4c4c4
+ *tileGeometry.font: 7x13bold
+ *tileGeometry.label: Tile Geometry: 1 x 2
+
+ *userOrientG.label: Manual Configuration
+ *userOrientG.height: 90
+ *userOrientG.width: 220
+ *userOrientG.outerOffset: 7
+ *userOrientG.innerOffset: 5
+ *userOrientG.shrinkToFit: True
+ *userOrientG*Frame.frameWidth: 1
+ *userOrientG*Frame.frameType: sunken
+ *userOrientG*Text.height: 21
+ *userOrientG*Text*editType: edit
+ *userOrientL.borderWidth: 0
+ *userOrientL.layout: vertical { \
+ 1 \
+ horizontal { 18 nrowLab < +50% -inf * > nrFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { ncolLab < +50% -inf * > ncFrame < +inf -inf * > 5 } \
+ }
+ *nrowLab.justify: right
+ *ncolLab.justify: right
+
+ *nrLayout.layout: horizontal {nrdecrease nrtext < +inf -inf * > nrincrease}
+ *nrdecrease.direction: left
+ *nrincrease.direction: right
+ *nrowLab.label: Tile Rows:
+ *nrtext.background: #adadad
+ *nrtext.justify: center
+ *nrtext.font: 7x13bold
+ *nrtext.label: 1
+
+ *ncLayout.layout: horizontal {ncdecrease nctext < +inf -inf * > ncincrease}
+ *ncdecrease.direction: left
+ *ncincrease.direction: right
+ *ncolLab.label: Tile Columns:
+ *nctext.background: #adadad
+ *nctext.justify: center
+ *nctext.font: 7x13bold
+ *nctext.label: 2
+
+ *tFramesG.label: Tile Frames
+ *tFramesG.outerOffset: 7
+ *tFramesG.innerOffset: 7
+ *tFrames.borderWidth: 0
+ *tFrames*Toggle.height: 17
+ *tFrames.layout: horizontal { \
+ tAll \
+ 2 \
+ tFrame1 tFrame2 tFrame3 tFrame4 tFrame5 \
+ tFrame6 tFrame7 tFrame8 tFrame9 tFrame10 \
+ tFrame11 tFrame12 tFrame13 tFrame14 tFrame15 tFrame16 \
+ 2 \
+ tNone \
+ }
+ *tAll.label: All\
+ *tNone.label: None
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/tile.tcl b/vendor/x11iraf/ximtool/gui/tile.tcl
new file mode 100644
index 00000000..279475ab
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/tile.tcl
@@ -0,0 +1,214 @@
+
+################################################################################
+# TILE GEOMETRY
+################################################################################
+
+set tileSel 2
+set tileOpt 0
+set tileNcols 2
+set tileNrows 1
+set tile_frames {}
+
+proc selectTileOrientation { widget type select args } \
+{
+ global tileSel tileOpt
+
+ set w { nrowLab ncolLab nrdecrease nrincrease ncdecrease ncincrease }
+ if {$select == "Manual"} {
+ foreach p $w { send $p setSensitive True }
+ } elseif {$select != "none"} {
+ foreach p $w { send $p setSensitive False }
+ }
+
+ set w { byCols bottomUp labelFrames labelImname labelTitles }
+ if {$select == "Disabled"} {
+ foreach p $w { send $p setSensitive False }
+ } else {
+ foreach p $w { send $p setSensitive True }
+ }
+
+ switch $select {
+ Disabled { set tileSel 0 }
+ Manual { set tileSel 1
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+ set select [format "%dx%d" $nx $ny]
+ }
+ Best { set tileSel 2 }
+ Square { set tileSel 3 }
+ Horizontal { set tileSel 4 }
+ Vertical { set tileSel 5 }
+ "One Row" { set tileSel 6 }
+ "One Column" { set tileSel 7 }
+ none { send tileMode set selection $tileSel ; return }
+ }
+
+ # Reset the button in case we're called directly from elsewhere.
+ send tileMode set selection $tileSel
+
+ # Send the option to the client.
+ if {$tileSel > 0} {
+ setTileFrames
+ send client setOption tileFrames "True"
+ set tileOpt $tileSel
+ } else {
+ send client setOption tileFrames "False"
+ }
+
+} ; send tileMode addCallback selectTileOrientation
+
+proc tileSelToLabel { selection args } \
+{
+ switch $selection {
+ 0 { return "Disabled" }
+ 1 { return "Manual" }
+ 2 { return "Best" }
+ 3 { return "Square" }
+ 4 { return "Horizontal" }
+ 5 { return "Vertical" }
+ 6 { return "One Row" }
+ 7 { return "One Column" }
+ }
+ return "Best"
+}
+
+# Callback for the fill style options.
+proc selectFillStyle { widget type state args } \
+{
+ if {$state} { set not False } else { set not True }
+
+ switch $widget {
+ byCols { send client setOption tileByRows $not }
+ bottomUp { send client setOption tileTopDown $not }
+ }
+} ; foreach w {byCols bottomUp} { send $w addCallback selectFillStyle }
+
+# Callback for the tile labelling options.
+proc selectTileLabels { widget type state args } \
+{
+ if {$state} {
+ switch $widget {
+ labelFrames { send client setOption tileLabels 1 }
+ labelImname { send client setOption tileLabels 2 }
+ labelTitles { send client setOption tileLabels 3 }
+ }
+ } else {
+ send client setOption tileLabels 0
+ }
+ send $widget set on $state
+}
+foreach w {labelFrames labelImname labelTitles} {
+ send $w addCallback selectTileLabels
+}
+
+# Callback for the Tile Frame selection toggles.
+proc setTileFrames args \
+{
+ global tile_frames tileSel tileNcols tileNrows
+
+ # No-op if tiling isn't enabled.
+ if {$tileSel == 0} \
+ return
+
+ # Get the new tile frames list.
+ set tile_frames {}
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get state]} {
+ lappend tile_frames $i
+ }
+ }
+
+ # Reset the geometry.
+ set geom [format "%dx%d" $tileNcols $tileNrows]
+ switch $tileSel {
+ 1 { send client setOption tileGeom $geom \{ $tile_frames \} }
+ 2 { send client setOption tileGeom Best \{ $tile_frames \} }
+ 3 { send client setOption tileGeom Square \{ $tile_frames \} }
+ 4 { send client setOption tileGeom Horizontal \{ $tile_frames \} }
+ 5 { send client setOption tileGeom Vertical \{ $tile_frames \} }
+ 6 { send client setOption tileGeom Row \{ $tile_frames \} }
+ 7 { send client setOption tileGeom Column \{ $tile_frames \} }
+ }
+}; for {set i 1} {$i <= 16} {incr i} {send tFrame$i addCallback setTileFrames}
+
+proc setAllTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state True
+ }
+ }
+ setTileFrames
+} ; send tAll addCallback setAllTileFrames
+
+proc setNoTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state False
+ }
+ }
+ setTileFrames
+} ; send tNone addCallback setNoTileFrames
+
+proc tileOptions { param old new } \
+{
+ global tileNcols tileNrows
+
+ set tileNcols [lindex $new 0]
+ set tileNrows [lindex $new 1]
+
+ # Set the geometry.
+ send nctext set label $tileNcols
+ send nrtext set label $tileNrows
+ send tileGeometry set label [format \
+ "Tile Geometry: %-2dx%2d" $tileNcols $tileNrows]
+
+} ; send tileOptions addCallback tileOptions
+
+
+proc tileSetRows { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "nrdecrease" && [expr ($ny-1)] > 0} {
+ incr ny -1
+ } elseif {$widget == "nrincrease" && [expr ($ny+1)] <= $nframes} {
+ incr ny 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { nrdecrease nrincrease } { send $w addCallback tileSetRows }
+
+proc tileSetCols { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "ncdecrease" && [expr ($nx-1)] > 0} {
+ incr nx -1
+ } elseif {$widget == "ncincrease" && [expr ($nx+1)] <= $nframes} {
+ incr nx 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { ncdecrease ncincrease } { send $w addCallback tileSetCols }
+
+
+# Initialize the frame tiling.
+setAllTileFrames
+selectTileOrientation junk junk Disabled
+selectFillStyle byRows junk True
+selectFillStyle topDown junk True
+selectTileLabels labelImname junk False
diff --git a/vendor/x11iraf/ximtool/gui/toolbars.tcl b/vendor/x11iraf/ximtool/gui/toolbars.tcl
new file mode 100644
index 00000000..85e6946e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/toolbars.tcl
@@ -0,0 +1,557 @@
+
+
+################################################################################
+#
+# XIMTOOL-ALT -- Procedures and declarations for the ALT GUI.
+#
+################################################################################
+
+# Creat the bitmaps needed for the alternate optional bars.
+
+createBitmap tools 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf,
+ 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap control 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xe3, 0xc7, 0xe3, 0xcf, 0x33, 0xcc,
+ 0x33, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x33, 0xcc, 0xf3, 0xcf,
+ 0xe3, 0xc7, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap tile 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap compass 16 16 {
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0x00, 0x07,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xfc, 0x07,
+ 0xfc, 0x07, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap plus 11 11 {
+ 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00};
+
+createBitmap minus 11 11 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap disk 16 16 {
+ 0xfe,0x1f,0x11,0x25,0x11,0x45,0x11,0x44,0xf1,0x47,0x01,0x40,0x01,0x40,0xf9,
+ 0x4f,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0xff,0x7f,
+ 0x00,0x00};
+
+createBitmap printer 32 16 {
+ 0x00, 0xfe, 0x07, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x12, 0x00,
+ 0x00, 0x02, 0x22, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x02, 0x20, 0x00,
+ 0x00, 0x02, 0x20, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x10, 0x03, 0xe0, 0x06,
+ 0x08, 0xff, 0x7f, 0x09, 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f,
+ 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x08,
+ 0xf8, 0xff, 0xff, 0x0f};
+
+
+send tbBlinkDec "set bitmap larrow" ;# Assign the bitmaps to the buttons.
+send tbBlinkInc "set bitmap rarrow"
+send tbZoomIn "set bitmap plus"
+send tbZoomOut "set bitmap minus"
+send tbTile "set bitmap tile"
+send tbCompass "set bitmap compass; addCallback toggleCompass"
+#send helpButton "set bitmap qmark; addCallback Help"
+send mXflipButton "set bitmap xflip; addCallback xflip"
+send mYflipButton "set bitmap yflip; addCallback yflip"
+send mNextButton "set bitmap rarrow; addCallback nextFrame"
+send mPrevButton "set bitmap larrow; addCallback prevFrame"
+
+
+# toolBox -- Toggle the toolbox and panelbar display.
+
+set toolbox_up [ true $showToolBar ]
+set panelbar_up [ true $showPanelBar ]
+
+proc toolBoxToggle args \
+{
+ global toolbox_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$toolbox_up} {
+ send toolbar set height 0
+ send toolButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w; set height $nh"
+ set toolbox_up 0
+ send mXflipButton map
+ send mYflipButton map
+ send mPrevButton map
+ send mFrameButton map
+ send mNextButton map
+ } else {
+ send toolbar set height 25
+ send toolButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set toolbox_up 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+ }
+}
+
+proc panelBarToggle args \
+{
+ global panelbar_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$panelbar_up} {
+ send panelbar set height 0
+ send panelButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 0
+ } else {
+ send panelbar set height 25
+ send panelButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 1
+ }
+}
+
+
+
+# Initialize the bars to be displayed if the resource was set.
+
+send toolButton "set bitmap tools; addCallback toolBoxToggle"
+if { ! [ true $showToolBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send toolbar set height 0
+ send toolButton set state 0
+} else {
+ send toolButton set state 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+}
+
+send panelButton "deleteCallback panel"
+send panelButton "set bitmap control; addCallback panelBarToggle"
+
+if { ! [ true $showPanelBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send panelbar set height 0
+ send panelButton set state 0
+} else {
+ send panelButton set state 1
+}
+
+
+##############################################
+# Panelbar callbacks.
+##############################################
+
+send pbQuit addCallback Quit
+send helpClose addCallback "send helpButton set state 0"
+
+
+# Control Panel.
+#------------------------------------------------------
+proc pbToggleControl {name element op} \
+{
+ upvar $name panel_up
+ send pbDisplayP set state [expr !($panel_up)]
+} ; #trace variable panel_up w pbToggleControl
+
+proc pbResetPanel {param old new} \
+{
+ global displayPanner displayMagnifier displayCoords
+ switch $new {
+ done { send pbPanM set state [true $displayPanner]
+ send pbMagM set state [true $displayMagnifier]
+ send pbWcsM set state [true $displayCoords]
+ }
+ }
+} ; send initialize addCallback pbResetPanel
+
+set WidgetToTab(pbDisplayP) display_panel
+set WidgetToTab(pbInfoP) info_panel
+set WidgetToTab(pbLoadP) load_panel
+set WidgetToTab(pbPrintP) print_panel
+set WidgetToTab(pbSaveP) save_panel
+set WidgetToTab(pbTileP) tile_panel
+set WidgetToTab(pbCoordP) wcs_panel
+
+set TabToWidget(display_panel) pbDisplayP
+set TabToWidget(print_panel) pbPrintP
+set TabToWidget(load_panel) pbLoadP
+set TabToWidget(save_panel) pbSaveP
+set TabToWidget(info_panel) pbInfoP
+set TabToWidget(tile_panel) pbTileP
+set TabToWidget(wcs_panel) pbCoordP
+
+set pbTabTop "pbDisplayP"
+
+proc pbPanelDismiss args \
+{
+ global tabTop TabToWidget WidgetToTab
+ set panel $TabToWidget($tabTop)
+ send $panel set state 0
+} ; send panelClose addCallback pbPanelDismiss
+
+proc pbResizeCB {widget event a b c d e args} \
+{
+ global pbTabTop TabToWidget WidgetToTab
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ send $pbTabTop set state 0
+ set new $TabToWidget($widget)
+ send $new set state 1
+ set pbTabTop $new
+ }
+} ; foreach w $cpTabs {send $w addEventHandler pbResizeCB exposureMask}
+
+proc pbPanelTabs { widget type state args } \
+{
+ global pbTabTop tabTop panel_up
+ global TabToWidget WidgetToTab
+
+ set panel $WidgetToTab($widget)
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $widget set state 0
+ set panel_up 0
+ return
+ }
+
+ send $TabToWidget($tabTop) set state 0
+ set tabTop $panel
+ set pbTabTop $TabToWidget($panel)
+ send panelTabs setTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send $widget set state 1
+ send panelShell map
+ set panel_up 1
+ }
+}
+foreach w { pbDisplayP pbInfoP pbLoadP pbPrintP pbSaveP pbTileP pbCoordP } {
+ send $w addCallback pbPanelTabs
+}
+
+
+
+# Load Panel. (Really need to clean this up.)
+#------------------------------------------------------
+proc pbDoLoadOptions { param old new } \
+{
+ set val [ join [lrange $new 1 end] " " ]
+ switch [lindex $new 0] {
+ newfile { send fnameText set string $val }
+ }
+} ; send loadOptions addCallback pbDoLoadOptions
+
+proc pbFileLoad { widget mode fname args } \
+{
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ send imagewin setCursorType idle
+} ; send fnameText addCallback pbFileLoad
+
+proc pbflSelectPrint {widget cbtype selections args} \
+{
+ foreach selection $selections {
+ ;
+ }
+}; #send imageList addCallback pbflSelectPrint
+
+proc pbFileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname != ""} {
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ }
+} ; send filesLoadButton addCallback pbFileLoadB
+
+
+# Panner Marker.
+#------------------------------------------------------
+proc pbTracePanner {name element op} \
+{
+ global last_compass
+
+ catch {
+ upvar $name panner_enable
+ send pbPanM set state $panner_enable
+
+ if { $panner_enable } {
+ send tbCompass "setSensitive True ; set state $last_compass"
+ drawCompass
+ } else {
+ send tbCompass "setSensitive False ; set state False"
+ eraseCompass
+ }
+ }
+} ; trace variable panner_enable w pbTracePanner
+
+proc pannerPanel args \
+{
+ global panner_enable displayPanner
+
+ setPanner [expr !$panner_enable]
+ send pannerButton set on [expr $panner_enable]
+}; send pbPanM addCallback pannerPanel
+
+
+# Magnifier Marker.
+#------------------------------------------------------
+proc pbTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send pbMagM set state $magnifier_enable
+} ; trace variable magnifier_enable w pbTraceMagnifier
+
+proc magnifierPanel args \
+{
+ global magnifier_enable displayMagnifier
+ setMagnifier [expr !$magnifier_enable]
+ send magnifierButton set on [expr $magnifier_enable]
+}; send pbMagM addCallback magnifierPanel
+
+
+# CoordsBox Marker.
+#------------------------------------------------------
+proc pbTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send pbWcsM set state $track_enable
+} ; trace variable track_enable w pbTraceCoordsBox
+
+proc wcsPanel args \
+{
+ global track_enable
+ setTrack [expr !$track_enable]
+}; send pbWcsM addCallback wcsPanel
+
+
+
+# WPIX ISM Callbacks.
+#------------------------------------------------------
+
+proc altIsmToggle { widget type state args } \
+{
+ ismToggle pbIsm junk $state
+} ; send pbIsm addCallback altIsmToggle
+
+proc pbTraceIsm {name element op} \
+{
+ upvar $name ism_enable
+ send pbIsm set state $ism_enable
+} ; trace variable ism_enable w pbTraceIsm
+
+
+proc altIsmMsgCB { param old new } \
+{
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ deliver { ${ism}_alt_msg $argc $argv }
+ }
+} ; send ism_msg addCallback altIsmMsgCB
+
+
+proc wcspix_alt_msg { argc argv } \
+{
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+ switch $cmd {
+ startup { }
+ shutdown { }
+ disable { send pbIsm "set state False ; setSensitive False" }
+ capable { send pbIsm "setSensitive True" }
+ }
+}
+
+
+
+##############################################
+# Toolbar callbacks.
+##############################################
+
+send tbNormalize addCallback normalize
+send tbInvert addCallback cpInvert
+send tbRegister addCallback cpRegisterFrames
+send tbMatchLUT addCallback cpMatchFrames
+
+
+# Frame Selection.
+#------------------
+createMenu mFrameMenu mFrameButton $frameMenuDescription
+
+proc altFrameChanged {param old new} \
+{
+ send mFrameButton set label $new
+} ; send frame addCallback altFrameChanged
+
+
+# Image Flipping.
+#------------------------------------------------------
+proc tbSetFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send mXflipButton set state [true $new]
+ } else {
+ send mYflipButton set state [true $new]
+ }
+}; foreach i {xflip yflip} { send $i addCallback tbSetFlip }
+
+
+# Zoom/Pan buttons.
+#------------------------------------------------------
+proc tbZoomAction { widget args } \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ tbZoom0 { cpZoom 1 1 fixed }
+ tbZoomIn { cpZoom 2.0 2.0 relative }
+ tbZoomOut { cpZoom 0.5 0.5 relative }
+ tbCenter { send client pan [expr $frameWidth/2.0] [expr $frameHeight/2.0] }
+ }
+}
+foreach widget { tbCenter tbZoomIn tbZoom0 tbZoomOut } {
+ send $widget addCallback tbZoomAction
+}
+
+
+# Frame Blink.
+#------------------------------------------------------
+proc tbSetBlinkRate {w args} \
+{
+ if {$w == "tbBlinkInc"} {
+ cpSetBlinkRate BRincrease
+ } else {
+ cpSetBlinkRate BRdeccrease
+ }
+}
+foreach w {tbBlinkDec tbBlinkInc} { send $w addCallback tbSetBlinkRate }
+
+proc tbBlink { widget args } \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send tbBlink set state 0
+ } else {
+ if {$widget != "tbBlink"} {
+ if {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+ } else {
+ if {($blinkId != 0) != [send $widget get state]} {
+ toggleBlink
+ }
+ }
+ }
+} ; send tbBlink addCallback tbBlink
+
+proc tbTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send tbBlink set state [expr $blinkId != 0]
+} ; trace variable blinkId w tbTraceBlink
+
+
+# Auto-register.
+#------------------------------------------------------
+proc tbAutoRegister { widget type state args } \
+{
+ send tbAutoReg set state $state
+}
+foreach w {autoregButton brAregButton tbAutoReg} {
+ send $w addCallback cpAutoRegister
+}
+
+proc tbToggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ send tbAutoReg set state 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ send tbAutoReg set state 1
+ }
+}
+
+
+# Frame Tiles.
+#------------------------------------------------------
+proc tbSetTileFrames args \
+{
+ global tileOpt
+
+ # Send the option to the client.
+ if {[send tbTile get state ]} {
+ if {$tileOpt == 0} {
+ # If mode is disabled, turn on the tile selection.
+ selectTileOrientation junk junk Best
+ } else {
+ # Otherwise, turn on in current mode.
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ }
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+}; send tbTile addCallback tbSetTileFrames
+
+proc tbTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+ send tbTile set state $new
+}; send tileFrames addCallback tbTrackTileFrames
+
+proc tbTileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ if {$value} { set not 0 } else { set not 1 }
+
+ send tileFramesButton set on $not
+ send tbTile set state $not
+ cpSetTileFrames tbTile junk $not
+}
+
+
+# Compass Indicator.
+#------------------------------------------------------
+proc tbToggleCompass { widget type state args } \
+{
+ global frame
+
+ if {$state} {
+ send compass set on True
+ send tbCompass set state 1
+ drawCompass
+ } else {
+ send compass set on False
+ send tbCompass set state 0
+ eraseCompass
+ }
+} ; foreach w {compass tbCompass} { send $w addCallback tbToggleCompass }
+
+
diff --git a/vendor/x11iraf/ximtool/gui/warn.obj b/vendor/x11iraf/ximtool/gui/warn.obj
new file mode 100644
index 00000000..51c617e0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/warn.obj
@@ -0,0 +1,12 @@
+
+set Objects(warning) { \
+ toplevel TransientShell warning\
+ warning Layout warn\
+ warn Frame warnFrame\
+ warnFrame Layout WFlayout\
+ WFlayout Icon warnIcon\
+ WFlayout TextBox warnText\
+ warn Command warnOk\
+ warn Command warnCancel\
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/warn.res b/vendor/x11iraf/ximtool/gui/warn.res
new file mode 100644
index 00000000..2be08804
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/warn.res
@@ -0,0 +1,49 @@
+
+set Resources(warning) { \
+
+ ! ---------------------
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 5 warnFrame < +inf * +inf > 5 } \
+ 5 < -5 > \
+ horizontal { \
+ 10 \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 10 \
+ } \
+ 5 < -5 > \
+ }
+ *warnOk.label: Okay
+ *warnCancel.label: Cancel
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { 5 < +inf -5 > warnIcon 5 < +inf -5 > } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnText.background: #c4c4c4
+}
+
+
+
diff --git a/vendor/x11iraf/ximtool/gui/warn.tcl b/vendor/x11iraf/ximtool/gui/warn.tcl
new file mode 100644
index 00000000..e0465bc3
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/warn.tcl
@@ -0,0 +1,49 @@
+
+################################################################################
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+################################################################################
+
+set W_object ""
+set W_ok_cmd ""
+set W_cancel_cmd ""
+
+proc Wexec {object msg args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ set W_object $object
+ set W_ok_cmd [lindex $args 0]
+ set W_cancel_cmd [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ switch $widget {
+ warnOk { if [llength $W_ok_cmd] { send $W_object $W_ok_cmd }
+ }
+ warnCancel { if [llength $W_cancel_cmd] { send $W_object $W_cancel_cmd }
+ }
+ }
+ send warning unmap
+}
+send warnOk addCallback Wbutton
+send warnCancel addCallback Wbutton
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} \
+{
+ Wexec client [lindex $new 0] [lindex $new 1]
+}; send alert addCallback setAlert
+
+
diff --git a/vendor/x11iraf/ximtool/gui/wcs.res b/vendor/x11iraf/ximtool/gui/wcs.res
new file mode 100644
index 00000000..0f9ec8d5
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/wcs.res
@@ -0,0 +1,212 @@
+
+set Resources(wcs_panel) { \
+
+ !--------------------
+ ! WCS Readout Panel
+ !--------------------
+ *wcsGroup*TextToggle.offIcon: square0s
+ *wcsGroup*TextToggle.onIcon: square1s
+
+ !*wcsLayout*TextToggle.location: 0 0 160 23
+ *wcsLayout*TextToggle.height: 23
+ *wcsLayout*TextToggle.outerOffset: 0
+ *wcsLayout*Layout.borderWidth: 0
+ *wcsLayout.borderWidth: 0
+ *wcsLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ wcsGroup < +inf -inf * > \
+ 5 \
+ horizontal { -1 wcsOptGroup < +inf -inf * > -1 } \
+ -2 \
+ }
+
+ *wcsOptGroup.label:
+ *wcsOptGroup.outerOffset: 0
+ *wcsOptGroup.innerOffset: 5
+ *wcsOptGroup.frameType: chiseled
+ *wcsOptGroup.frameWidth: 0
+ *wcsOptLayout.layout: vertical { \
+ horizontal { -9 wcsCoords < +inf -inf * > -9 } \
+ -3 \
+ horizontal { -5 wcsOpts < +inf -inf * > -5 } \
+ horizontal { -5 wcsIsmGroup < +inf -inf * > -5 } \
+ 1 \
+ }
+
+ *wcsOpts.label:
+ *wcsOpts.width: 265
+ *wcsOpts.height: 40
+ *wcsOpts.outerOffset: 3
+ *wcsOpts.innerOffset: 3
+ *woLayout*TextToggle.frameWidth: 0
+ *woLayout*TextToggle.onIcon: square1s
+ *woLayout*TextToggle.offIcon: square0s
+ *woLayout*TextToggle.highlightColor: cyan
+ *woLayout*TextToggle.alignment: left
+ *woLayout*TextToggle.leftMargin: 5
+ *woLayout.layout: horizontal { \
+ 3 \
+ woptLabels < +inf -inf * > 2 \
+ woptTitles < +inf -inf * > 2 \
+ woptFBinfo < +inf -inf * > 2 \
+ woptBPM < +inf -inf * > \
+ 3 \
+ }
+ *woptLabels.label: WCS Labels
+ *woptLabels.on: True
+ *woptTitles.label: Image Titles
+ *woptTitles.on: True
+ *woptFBinfo.label: Frame Buffer Info
+ *woptFBinfo.on: True
+ *woptBPM.label: BPM Data
+ *woptBPM.on: False
+ *woptLabels.location: 0 0 150 21
+ *woptTitles.location: 0 0 150 21
+ *woptFBinfo.location: 0 0 175 21
+ *woptBPM.location: 0 0 120 21
+
+
+ *wcsCoords.label: Readout Values
+ *wcsCoords.width: 265
+ *wcsCoords.height: 135
+ *wcsCoords.outerOffset: 7
+ *wcsCoords.innerOffset: 3
+ *wcLayout*TextToggle.offIcon: diamond0s
+ *wcLayout*TextToggle.onIcon: diamond1s
+ *wcLayout*TextToggle.highlightColor: yellow2
+ *wcLayout*TextToggle.shrinkToFit: True
+ *wcLayout*TextToggle.frameWidth: 0
+ *wcLayout*TextToggle.label:
+ *wcLayout*TextToggle.on: True
+ *wcLayout*Label.justify: right
+ *wcLayout*Label.font: 7x13bold
+ *wcLayout*SimpleMenu.borderColor: black
+ *wcLayout*SimpleMenu.borderWidth: 1
+ *wcLayout*SimpleMenu.foreground: White
+ *wcLayout*SimpleMenu.background: SteelBlue
+ *wcLayout*MenuButton.shadowWidth: 1
+ *wcLayout*MenuButton.resize: False
+ *wcLayout.layout: vertical {\
+ 1 \
+ horizontal { 20 < -20 > wcTitle < +inf -inf * > 20 < -20 > }\
+ 1 \
+ horizontal { 5 wcLine < +inf -inf * > 5 } \
+ 5 \
+ horizontal { \
+ 10 \
+ vertical { 2 wlWcs1 2 wlWcs2 2 wlWcs3 2 wlWcs4 2 } 5 \
+ vertical { 1 sysWcs1 1 sysWcs2 1 sysWcs3 1 sysWcs4 1 } 5 \
+ vertical { 1 fmtWcs1 1 fmtWcs2 1 fmtWcs3 1 fmtWcs4 1 } 20 \
+ vertical { 1 wpWcs1 3 wpWcs2 3 wpWcs3 3 wpWcs4 3 } 20 \
+ vertical { 1 wiWcs1 3 wiWcs2 3 wiWcs3 3 wiWcs4 3 } 15 \
+ } \
+ 3 \
+ }
+ *wcTitle.label: Type\ \ \ \ \ \ \ \ \ \ Format\ \ \ \ \ \ Panel\ ImgWin
+
+ *wcLine.height: 2
+ *wcLine.frameWidth: 2
+ *wcLine.frameType: ledged
+
+ *wlWcs1.label: First WCS
+ *wlWcs2.label: Second WCS
+ *wlWcs3.label: Third WCS
+ *wlWcs4.label: Fourth WCS
+ *sysWcs1.label: \ Image Display\
+ *sysWcs1.menuName: sysMenu1
+ *sysWcs2.label: None
+ *sysWcs2.menuName: sysMenu2
+ *sysWcs3.label: None
+ *sysWcs3.menuName: sysMenu3
+ *sysWcs4.label: None
+ *sysWcs4.menuName: sysMenu4
+ *fmtWcs1.label: \ Sexigesimal\
+ *fmtWcs1.menuName: fmtMenu1
+ *fmtWcs2.label: None
+ *fmtWcs2.menuName: fmtMenu2
+ *fmtWcs3.label: None
+ *fmtWcs3.menuName: fmtMenu3
+ *fmtWcs4.label: None
+ *fmtWcs4.menuName: fmtMenu4
+
+ *editMenu fmtWcsMenu$i fmtWcs$i $items
+
+ *wcsIsmGroup.label:
+ *wcsIsmGroup.width: 395
+ *wcsIsmGroup.height: 50
+ *wcsIsmGroup.outerOffset: 3
+ *wcsIsmGroup.innerOffset: 5
+ *wcsIsmGroup*borderWidth: 0
+ *wcsIsmLayout.layout: horizontal { \
+ wcsIsmLabel 1 wcsIsmFrame < +inf -inf * > 3 wcsIsmInit 1 \
+ }
+ *wcsIsmLabel.label: ISM Command
+ *wcsIsmFrame.frameType: sunken
+ *wcsIsmFrame.frameWidth: 1
+ *wcsIsmFrame.outerOffset: 1
+ *wcsIsmFrame*height: 23
+ *wcsIsmCmd*editType: edit
+ *wcsIsmCmd.displayCaret: True
+ *wcsIsmInit.label: Initialize
+ *wcsIsmInit.internalWidth: 7
+
+ *wcsBox*borderWidth: 0
+ *wcsBox*TextToggle.frameType: raised
+ *wcsBox*TextToggle.frameWidth: 1
+ *wcsBox*TextToggle.leftMargin: 2
+ *wcsBox*borderWidth: 0
+ *wcsBox.layout: vertical { \
+ wcsFrame < +inf -inf * > \
+ 2 \
+ horizontal { \
+ 2 \
+ ismToggle < +inf -inf * > 2 \
+ pixelTable < +inf -inf * > 2 \
+ imageHeader < +inf -inf * > 2 \
+ compass < +inf -inf * > 2 \
+ wcsOptions < +inf -inf * > \
+ 2 \
+ } \
+ }
+ *ismToggle.label: ISM Mod
+ *ismToggle.label: WCS/Pix
+ *pixelTable.label: Pix Table
+ *imageHeader.label: Header
+ *imageHeader.sensitive: False
+ *compass.label: Compass
+ *wcsOptions.label: Options
+
+ *wcsGroup.label:
+ *wcsGroup.outerOffset: 0
+ *wcsGroup.innerOffset: 5
+ *wcsGroup.frameType: chiseled
+ *wcsGroup.frameWidth: 2
+ *wcsGroup*Text*width: 260
+ *wcsGroup*Text*height: 17
+ *wcsGroup*Text*font: 7x13
+ *wcsGroup*Text*displayCaret: False
+ *wcsGroup*Text*editType: read
+ *wcsGroup*Text*background: black
+ *wcsGroup*Text*foreground: yellow2
+ *wcsGroup*TextToggle.highlightColor: cyan
+ *wcsFrame.frameType: sunken
+ *wcsFrame.frameWidth: 1
+ *wcsText*background: yellow4
+ *wcsText.layout: vertical { \
+ wtName < +inf -inf * > -3 \
+ wtTitle < +inf -inf * > -3 \
+ wtFBCfg < +inf -inf * > \
+ 1 < -1 > \
+ wtWcs1 < +inf -inf * > -3 \
+ wtWcs2 < +inf -inf * > -3 \
+ wtWcs3 < +inf -inf * > -3 \
+ wtWcs4 < +inf -inf * > \
+ 1 < -1 > \
+ horizontal { \
+ wtIPixval < +inf -inf * +inf > 1 \
+ wtSPixval < +inf -inf * +inf > 1 \
+ wtBPixval < +inf -inf * +inf > \
+ } \
+ }
+}
+
diff --git a/vendor/x11iraf/ximtool/gui/wcs.tcl b/vendor/x11iraf/ximtool/gui/wcs.tcl
new file mode 100644
index 00000000..8b14db4f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui/wcs.tcl
@@ -0,0 +1,464 @@
+
+################################################################################
+# Coords Panel Callbacks.
+################################################################################
+
+# In case we need to change the values....
+#global wcsPHeight wcsPTxtHeight wcsPGrHeight wcsPOptHeight
+#set wcsPHeight 267
+#set wcsPTxtHeight 132
+#set wcsPGrHeight 175
+#set wcsPOptHeight 233
+#setCoordPanelHeight
+
+set wcsPHeight 267 ;# full panel no options
+set wcsPTxtHeight 132 ;# size of text area box
+set wcsPGrHeight 175 ;# size of text area group
+set wcsPOptHeight 233 ;# extra height for opts boxes
+
+# Set the WCS readout panel sensitivity depending on whether the ISM
+# is currently enabled.
+proc setCoordPanelSensitivity args \
+{
+ set widgets {
+ wpWcs2 wpWcs3 wpWcs4
+ wiWcs2 wiWcs3 wiWcs4
+ wlWcs2 wlWcs3 wlWcs4
+ sysWcs2 sysWcs3 sysWcs4
+ fmtWcs2 fmtWcs3 fmtWcs4
+ }
+
+ send sysWcs1 set label "Display"
+ send fmtWcs1 set label "Default"
+
+ for {set i 2} {$i <= 4} {incr i} {
+ send sysWcs$i set label "None" ; send fmtWcs$i set label "Default"
+ send wpWcs$i set on False ; send wiWcs$i set on False
+ send wtWcs$i set height 4
+ }
+
+ if {[send ismToggle get on]} {
+ send sysWcs2 set label "World" ; send fmtWcs2 set label "Default"
+ send wpWcs2 set on True ; send wiWcs2 set on True
+ send wtWcs2 set height 17
+
+ foreach w $widgets { send $w setSensitive True }
+ } else {
+ foreach w $widgets { send $w setSensitive False }
+ }
+}
+
+
+# Set the Coords Panel height depending on the option settings.
+proc setCoordPanelHeight args \
+{
+ global wcsPHeight wcsPOptHeight wcsPTxtHeight wcsPGrHeight
+ global tabTop
+
+ if {$tabTop != "wcs_panel"} \
+ return
+
+ # Get the height of the text area
+ set panel_h $wcsPHeight
+ set shrinkage 0
+ foreach w { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo } {
+ if {[send $w get on] == 0} {
+ incr shrinkage 13
+ }
+ }
+ if {[send woptTitles get on] == 0} {
+ incr shrinkage 26
+ }
+
+ set ph [expr ($wcsPHeight - $shrinkage)]
+ if {[send wcsOptions get on] == 1} {
+ incr ph $wcsPOptHeight
+ }
+
+ send wcsGroup set height [ expr ($wcsPGrHeight - $shrinkage) ]
+ send wcsFrame set height [ expr ($wcsPTxtHeight - $shrinkage) ]
+ send panel set height $ph
+}
+
+# Toggle the options display for the panel.
+proc wcsOptToggle { widget type state args } \
+{
+ global wcsPOptHeight
+ set h [ send panel get height ]
+ if {$state == 1} {
+ send panel set height [ expr ($h + $wcsPOptHeight) ]
+ } else {
+ send panel set height [ expr ($h - $wcsPOptHeight) ]
+ }
+} ; send wcsOptions addCallback wcsOptToggle
+
+# Handle the panel display toggles.
+proc wcsCoordsCB { widget type state args } \
+{
+
+ set hght [ expr (($state == 1) ? 17 : 4)]
+ switch $widget {
+ wpWcs1 { send wtWcs1 set height $hght }
+ wpWcs2 { send wtWcs2 set height $hght }
+ wpWcs3 { send wtWcs3 set height $hght }
+ wpWcs4 { send wtWcs4 set height $hght }
+ woptFBinfo { send wtFBCfg set height $hght }
+ woptTitles { send wtName set height $hght ; send wtTitle set height $hght }
+ }
+ setCoordPanelHeight
+}
+set wcValues { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo woptTitles }
+foreach w $wcValues { send $w addCallback wcsCoordsCB }
+
+
+# Handle WCS label string options.
+set wcsLabels 1
+proc wcsLabelsCB { widget type state args } \
+{
+ global up_todo wcsLabels
+ set wcsLabels $state
+ #resizeCoordsBox 0
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+} ; send woptLabels addCallback wcsLabelsCB
+
+
+# Toggle the BPM tracking state.
+proc wcsBPMCB { widget type state args } \
+{
+ global ism_enable
+ if ($ism_enable) { catch { send wcspix set bpm $state } }
+} ; send woptBPM addCallback wcsBPMCB
+
+
+# Procedures to format lines in the wcsText box.
+proc wcsFmtImname { name } \
+{
+ send wtName set string [format " Name: %s" [string trimleft $name]]
+}
+
+proc wcsFmtImtitle { title } \
+{
+ send wtTitle set string [format " Title: %s" [string trimleft $title]]
+}
+
+proc wcsFmtFBConfig args \
+{
+ global frameWidth frameHeight frame nframes
+ set buf [ format "%5d x %-5d" $frameWidth $frameHeight ]
+ set line [ format "Frame Buf: %-13s Frame: %d of %d" \
+ [string trimleft $buf] $frame $nframes ]
+ send wtFBCfg set string $line
+}
+
+proc wcsFmtIValue { value } \
+{
+ global coord
+ set line [ format " Pixel: %.11s" $value ]
+ send wtIPixval set string $line
+ if {[info exists coord(ival)]} {
+ set coord(ival) $value
+ updateCoordsBox
+ }
+}
+
+proc wcsFmtSValue { value } \
+{
+ global coord
+ set line [ format " Scaled: %.8s" $value ]
+ send wtSPixval set string $line
+ set coord(sval) [format "%s" $value]
+}
+
+proc wcsFmtBValue { value } \
+{
+ global coord
+
+ if { [send woptBPM get on] } {
+ set line [ format " BPM: %s" $value ]
+ set color [expr { ($value == 0) ? "black" : "red" } ]
+ set msg [format "set string \{%s\}; set background %s" $line $color ]
+ set coord(bval) [format "%s" $value]
+ } else {
+ set line [ format " BPM: (off)" ]
+ set msg [format "set string \{%s\}" $line]
+ }
+ send wtBPixval $msg
+}
+
+proc wcsFmtWcs { num wcsname x y xunit yunit args } \
+{
+ global coord coordLab wcsLabels
+
+ if {$wcsLabels} {
+ set line [ format "%4s: %12s %4s: %12s WCS: %s" \
+ $xunit $x $yunit $y [string trimleft $wcsname] ]
+ } else {
+ set line [ format "%4s %12s %4s %12s %s" \
+ " " $x " " $y [string trimleft $wcsname] ]
+ }
+ send wtWcs$num set string $line
+
+ if {[info exists coord(wcs$num)]} {
+ if {$num == 1} {
+ set coord(wcs1) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(sval) ]
+ } elseif {$num == 2} {
+ set coord(wcs2) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(ival) ]
+ } else {
+ set coord(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" $x $y $wcsname ]
+ }
+
+ set coordLab(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" \
+ $xunit $yunit [string trimleft $wcsname ] ]
+ updateCoordsBox
+ }
+}
+
+
+
+# Handle the wcsbox readout.
+#------------------------------
+set up_todo 2
+set up_done 0
+set coord(ival) 0.
+set coord(sval) 0.
+set coord(bval) 0
+set coord(wcs1) { 0. 0. 0. }
+set coord(wcs2) { 0. 0. 0. }
+set coord(wcs3) { 0. 0. 0. }
+set coord(wcs4) { 0. 0. 0. }
+
+proc wcsCoordB { widget type state args } \
+{
+ global coord up_todo
+
+ switch $widget {
+ wiWcs1 { set line wcs1 ;set coord($line) { 0. 0. "" } }
+ wiWcs2 { set line wcs2 ;set coord($line) { 0. 0. "" } }
+ wiWcs3 { set line wcs3 ;set coord($line) { 0. 0. "" } }
+ wiWcs4 { set line wcs4 ;set coord($line) { 0. 0. "" } }
+ }
+
+ if {$state} {
+ incr up_todo
+ } else {
+ unset coord($line)
+ incr up_todo -1
+ }
+
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+set wiValues { wiWcs1 wiWcs2 wiWcs3 wiWcs4 }
+foreach w $wiValues { send $w addCallback wcsCoordB }
+
+
+# Resize the coords box depending on the panel options.
+proc resizeCoordsBox { nlines } \
+{
+ global track_enable wcsLabels winWidth winHeight wcsboxGeom
+
+ if {! $track_enable} \
+ return
+
+ send wcsbox getAttributes width cur_w height cur_h
+ set defGeom [format "%sx%s-5-5" $cur_w $cur_h]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ set ew [expr (($wcsLabels == 1) ? 125 : 65)]
+
+ # Reset to the default geometry
+ if {$nlines == 0} {
+ set x [expr ($x + $ew)]
+ set y [expr ($y + $height - 17 + 1)]
+ set new_w 166
+ set new_h 17
+
+ } else {
+ if {$width > 166} { ;# not using default wcsbox
+ set new_w $width
+ } else {
+ set new_w [expr ($width + $ew)]
+ set x [expr ($x - $ew)]
+ if {$wcsLabels == 0} {
+ incr x 60
+ }
+ }
+ set new_h [ expr ($nlines * 17) ]
+ set y [expr ($y + $height - $new_h + 1)]
+ }
+
+ # Bounds checking.
+ if {$x < 5} {
+ set x 5
+ } elseif {$x > [expr ($winWidth - $new_w - 5)]} {
+ set x [expr ($winWidth - $new_w - 5)]
+ }
+ if {$y < 5} {
+ set y 5
+ } elseif {$y > [expr ($winHeight - $new_h - 5)]} {
+ set y [expr ($winHeight - $new_h - 5)]
+ }
+
+ # Finally redraw the marker.
+ send wcsbox "\
+ setAttributes \
+ width $new_w \
+ height $new_h \
+ x $x \
+ y $y; \
+ redraw"
+
+ set wcsboxGeom [send imagewin getGeometry $x $y $new_w $new_h]
+ send client encodewcs [expr ($winWidth / 2)] [expr ($winHeight / 2)]
+ updateCoordsBox
+}
+
+
+# Shortcuts for known WCS labels.
+set labels(display) "TV"
+set labels(logical) "Log"
+set labels(physical) "Phys"
+set labels(equatorial) "Eq"
+set labels(ecliptic) "Ecl"
+set labels(galactic) "Gal"
+set labels(supergalactic) "SGal"
+set labels(amplifier) "Amp"
+set labels(ccd) "CCD"
+set labels(detector) "Det"
+
+
+# Format the coords box marker with the selected output options.
+proc updateCoordsBox args \
+{
+ global ism_enable coord coordLab wcsLabels
+ global up_done up_todo labels track_enable
+ global coord
+
+ if {! $ism_enable} \
+ return
+
+ incr up_done
+
+ set text ""
+ foreach l {wcs1 wcs2 wcs3 wcs4} {
+ if {[info exists coord($l)]} {
+ set x [lindex $coord($l) 0]
+ set y [lindex $coord($l) 1]
+ set z [string tolower [string trimleft [lindex $coord($l) 2] ] ]
+ if {[info exists labels($z)]} {
+ set z $labels($z)
+ }
+
+ if {$wcsLabels && [info exists coordLab($l)]} {
+ set lx [lindex $coordLab($l) 0]
+ set ly [lindex $coordLab($l) 1]
+ append text [format " %4s %12.12s %4s %12.12s %9.9s \n" \
+ $lx $x $ly $y $z ]
+ } else {
+ append text [format " %12.12s %12.12s %9.9s \n" $x $y $z ]
+ }
+ }
+ }
+
+ # Now send the string.
+ if {$track_enable} {
+ set color [expr { ($coord(bval) == 0) ? "black" : "red" } ]
+ set txt [format "set text \{%s\}; set textBgColor %s; redraw noerase" \
+ $text $color ]
+ send wcsbox $txt
+ }
+
+ if {$up_done >= $up_todo} {
+ set up_done 0 ;# reset counter
+ }
+}
+
+
+# Create the WCS format menus.
+#------------------------------------
+proc setWcsFmt { format line } \
+{
+ catch { send wcspix set format $format $line }
+}
+
+for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ lappend items "\"Default\" f.exec \{setWcsFmt default $i\}"
+ lappend items "\"Sexigesimal\" f.exec \{setWcsFmt hms $i\}"
+ lappend items "\"Degrees\" f.exec \{setWcsFmt deg $i\}"
+ lappend items "\"Radians\" f.exec \{setWcsFmt rad $i\}"
+ editMenu fmtMenu$i fmtWcs$i $items
+}
+
+
+# Create the default WCS type menus.
+#------------------------------------
+
+set defaultWcsMenu {
+ { "None" f.exec {setWcsSys none WCS_LINE } }
+ { "Display" f.exec {setWcsSys display WCS_LINE } }
+ { "World" f.exec {setWcsSys world WCS_LINE } }
+ { "Logical" f.exec {setWcsSys logical WCS_LINE } }
+ { "Physical" f.exec {setWcsSys physical WCS_LINE } }
+ { f.dblline }
+}
+
+proc setWcsSys { sys line } \
+{
+ if {[string tolower $sys] == "none"} {
+ wcsCoordB wiWcs$line junk 0
+ send sysWcs$line set label "None"; send fmtWcs$line set label "Default"
+ send wpWcs$line set on False ; send wiWcs$line set on False
+ send wtWcs$line set height 4
+ setCoordPanelHeight
+
+ } else {
+ catch { send wcspix set wcs $sys $line }
+ }
+}
+
+proc resetDefaultWcsMenu args \
+{
+ global defaultWcsMenu
+
+ for {set i 1} {$i <= 4} {incr i} {
+ regsub -all WCS_LINE $defaultWcsMenu $i menu_def
+ editMenu sysMenu$i sysWcs$i $menu_def
+ }
+} ; resetDefaultWcsMenu
+
+
+# Initialize the coordinates panel.
+#------------------------------------
+
+proc initCoordsPanel args \
+{
+ #send wcLine set height 2 ;# kludge for label widget
+
+ # Initialize the display strings in the coords box.
+ wcsFmtImname ""
+ wcsFmtImtitle ""
+ wcsFmtFBConfig
+ wcsFmtIValue "0." ; wcsFmtSValue "0." ; wcsFmtBValue "0"
+ wcsFmtWcs 1 "" "" "" " X" " Y"
+ wcsFmtWcs 2 "" "" "" " X" " Y"
+ wcsFmtWcs 3 "" "" "" " X" " Y"
+ wcsFmtWcs 4 "" "" "" " X" " Y"
+
+ send fmtWcs1 set label Default
+ send wpWcs1 set on True ;send wiWcs1 set on True
+ send wpWcs2 set on True ;send wiWcs2 set on True
+ send wpWcs3 set on False ;send wiWcs3 set on False ;send wtWcs3 set height 4
+ send wpWcs4 set on False ;send wiWcs4 set on False ;send wtWcs4 set height 4
+
+ # Set the Coords Panel height.
+ set wcsPTxtHeight [send wcsText get height]
+ setCoordPanelHeight
+
+ # Set the WCS readout panel sensitivity.
+ setCoordPanelSensitivity
+
+} ; initCoordsPanel
+
+
diff --git a/vendor/x11iraf/ximtool/gui2c.sed b/vendor/x11iraf/ximtool/gui2c.sed
new file mode 100644
index 00000000..9a70a93c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/gui2c.sed
@@ -0,0 +1,6 @@
+s/\\/\\\\/g
+s/"/\\"/g
+s/^/"/
+s/$/",/
+p
+d
diff --git a/vendor/x11iraf/ximtool/iis.c b/vendor/x11iraf/ximtool/iis.c
new file mode 100644
index 00000000..8217feca
--- /dev/null
+++ b/vendor/x11iraf/ximtool/iis.c
@@ -0,0 +1,1698 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/errno.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <sys/un.h>
+#include <fcntl.h>
+
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include "ximtool.h"
+#include "iis.h"
+
+/*
+ * IIS.C -- IRAF/IIS "imtool" protocol module. This code is responsible for
+ * accepting connections from remote network clients and communicating with
+ * them via the imtool/iis image display server communications prototcol.
+ *
+ * fd = xim_iisOpen (xim)
+ * xim_iisClose (xim)
+ * xim_iisio (xim, &fd, &id)
+ *
+ * xim_frameLabel (xim)
+ * xim_encodewcs (xim, sx, sy, sz, obuf)
+ * xim_retCursorVal (xim, sx, sy, frame, wcs, key, strval)
+ *
+ * xim_iisiomap (w, iomap, &iomap_len)
+ * xim_iiscolormap (w, r, g, b, &first, &ngray, &rgb_len)
+ *
+ * xim_iisio is a callback procedure called by Xt when there is input to be
+ * processed on the stream used to communicate with the remote client.
+ */
+
+#define MEMORY 01 /* frame buffer i/o */
+#define LUT 02 /* lut i/o */
+#define FEEDBACK 05 /* used for frame clears */
+#define IMCURSOR 020 /* logical image cursor */
+#define WCS 021 /* used to set WCS */
+#define SZ_IOBUF 65536 /* max size data transfer */
+#define IO_TIMEOUT 30 /* i/o not getting anywhere */
+#define MAXCONN 5
+
+
+#define IIS_VERSION 11 /* version 10 => 1.0 */
+ /* v1.1 => fast subraster write */
+#define IIS_DEBUG 0 /* local debug flag */
+
+#define SZ_IMCURVAL 160
+#define PACKED 0040000
+#define COMMAND 0100000
+#define IIS_READ 0100000
+#define IMC_SAMPLE 0040000
+#define IMT_FBCONFIG 077
+#define XYMASK 077777
+#define ALLBITPL 255
+
+struct iism70 {
+ short tid;
+ short thingct;
+ short subunit;
+ short checksum;
+ short x, y, z;
+ short t;
+};
+
+/* Running id for frame mappings. We keep a separate id for each of the
+ * currently allowed MAX_FRAMES since the object id is used in the WCS
+ * code for the image along with the (frame_num * 100).
+ */
+int objid[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
+static int *wcspix_enabled = NULL;
+
+static int iis_debug = -1; /* protocol debug */
+
+static void set_fbconfig(), add_mapping();
+static void xim_connectClient(), xim_disconnectClient();
+static int chan_read(), chan_write(), decode_frameno();
+
+static CtranPtr wcs_update();
+static IoChanPtr open_fifo(), open_inet(), open_unix();
+static IoChanPtr get_iochan();
+static MappingPtr xim_getMapping();
+
+extern int errno;
+
+
+/* XIM_IISOPEN -- Initialize the IIS protocol module and ready the module to
+ * accept client connections and begin processing client requests. Clients
+ * may connect to the server using a fifo connection or an internet or
+ * UNIX domain socket connection. All three types of server ports are
+ * simultaneously ready to receive client connections.
+ */
+xim_iisOpen (xim)
+register XimDataPtr xim;
+{
+ int i, port, last_port = (xim->port + xim->nports - 1);
+ int nopen = 0;
+
+
+ if (open_unix (xim))
+ nopen++;
+ if (open_fifo (xim))
+ nopen++;
+
+ for (port=xim->port; port > 0 && port <= last_port; port++) {
+ if (open_inet (xim, port))
+ nopen++;
+ }
+
+ return (nopen);
+}
+
+
+/* XIM_IISCLOSE -- Close down the IIS protocol module.
+ */
+void
+xim_iisClose (xim)
+register XimDataPtr xim;
+{
+ register IoChanPtr chan;
+ register int i;
+
+ for (i=0, chan=NULL; i < XtNumber(xim->chan); i++) {
+ chan = &xim->chan[i];
+ if (chan->id) {
+ xim_removeInput (xim, chan->id);
+ chan->id = NULL;
+ }
+
+ switch (chan->type) {
+ case IO_FIFO:
+ if (chan->keepalive >= 0)
+ close (chan->keepalive);
+ if (chan->datain >= 0)
+ close (chan->datain);
+ if (chan->dataout >= 0)
+ close (chan->dataout);
+ chan->type = 0;
+ break;
+
+ case IO_INET:
+ close (chan->datain);
+ chan->type = 0;
+ break;
+
+ case IO_UNIX:
+ close (chan->datain);
+ unlink (chan->path);
+ chan->type = 0;
+ break;
+ }
+ }
+}
+
+
+/* OPEN_FIFO -- Open the imtool fifo port and make ready to accept client
+ * connections and begin processing client requests. There is no client
+ * yet at this stage.
+ */
+static IoChanPtr
+open_fifo (xim)
+register XimDataPtr xim;
+{
+ register IoChanPtr chan;
+ int datain, dataout;
+ int keepalive;
+
+
+#if defined (__DARWIN__) || defined(__CYGWIN__)
+ /* On OS X we don't use fifos. */
+ xim->input_fifo = "none";
+ return (NULL);
+#endif
+
+ /* Setting the input fifo to "none" or the null string disables
+ * fifo support.
+ */
+ if (!xim->input_fifo[0] || strcmp(xim->input_fifo,"none")==0)
+ return (NULL);
+
+ datain = dataout = -1;
+
+ if (IIS_DEBUG)
+ printf ("Opening fifo: '%s'\n", xim->input_fifo);
+
+ /* Open the output fifo (which is the client's input fifo). We have
+ * to open it ourselves first as a client to get around the fifo
+ * open-no-client error.
+ */
+ if ((datain = open (xim->input_fifo, O_RDONLY|O_NDELAY)) != -1) {
+ if ((dataout = open (xim->input_fifo, O_WRONLY|O_NDELAY)) != -1)
+ fcntl (dataout, F_SETFL, O_WRONLY);
+ else
+ goto done;
+ close (datain);
+ } else
+ goto done;
+
+ /* Open the input stream, a FIFO pseudodevice file used by
+ * applications to send us commands and data.
+ */
+ if ((datain = open (xim->output_fifo, O_RDONLY|O_NDELAY)) == -1)
+ goto done;
+ else {
+ /* Clear O_NDELAY for reading. */
+ fcntl (datain, F_SETFL, O_RDONLY);
+
+ /* Open the client's output fifo as a pseudo-client to make it
+ * appear that a client is connected.
+ */
+ keepalive = open (xim->output_fifo, O_WRONLY);
+ }
+done:
+ /* Allocate and fill in i/o channel descriptor. */
+ if (datain > 0 && dataout > 0 && (chan = get_iochan(xim))) {
+ chan->xim = (XtPointer) xim;
+ chan->type = IO_FIFO;
+ chan->datain = datain;
+ chan->dataout = dataout;
+ chan->keepalive = keepalive;
+ chan->reference_frame = 1;
+ chan->version = 0;
+ chan->rf_p = &xim->frames[0];
+ } else {
+ fprintf (stderr, "Warning: cannot open %s\n", xim->output_fifo);
+ xim->input_fifo = "none";
+ return (NULL);
+ }
+
+ /* Register input callback. */
+ if (chan) {
+ chan->id = xim_addInput (xim, chan->datain, xim_iisio,
+ (XtPointer)chan);
+ } else {
+ if (datain > 0)
+ close (datain);
+ if (dataout > 0)
+ close (dataout);
+ }
+
+ return (chan);
+}
+
+
+/* OPEN_INET -- Set up a port to be used for incoming client connections
+ * using internet domain sockets.
+ */
+static IoChanPtr
+open_inet (xim, portnum)
+register XimDataPtr xim;
+int portnum;
+{
+ register int s = 0;
+ register IoChanPtr chan;
+ struct sockaddr_in sockaddr;
+ int reuse = 1;
+
+ /* Setting the port to zero disables inet socket support. */
+ if (portnum <= 0)
+ return (NULL);
+
+
+ if (IIS_DEBUG)
+ printf ("Opening inet port: %d\n", portnum);
+
+ if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ memset ((void *)&sockaddr, 0, sizeof(sockaddr));
+ sockaddr.sin_family = AF_INET;
+ sockaddr.sin_port = htons((short)portnum);
+ sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse,
+ sizeof(reuse)) < 0)
+ goto err;
+
+ if (bind (s, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0)
+ goto err;
+
+ if (listen (s, MAXCONN) < 0)
+ goto err;
+
+ /* Allocate and fill in i/o channel descriptor. */
+ if (chan = get_iochan(xim)) {
+ chan->xim = (XtPointer) xim;
+ chan->type = IO_INET;
+ chan->datain = s;
+ chan->dataout = s;
+ chan->reference_frame = 1;
+ chan->version = 0;
+ chan->rf_p = &xim->frames[0];
+
+ /* Register connectClient callback. */
+ chan->id = xim_addInput (xim,s,xim_connectClient,(XtPointer)chan);
+ return (chan);
+ }
+
+
+err:
+ if (errno == EADDRINUSE) {
+ fprintf (stderr,"ximtool: inet port %d already in use - disabled\n",
+ portnum);
+ } else {
+ fprintf (stderr, "ximtool: can't open inet socket %d, errno=%d\n",
+ portnum, errno);
+ }
+ xim->port = 0;
+ if (s)
+ close (s);
+ return (NULL);
+}
+
+
+/* OPEN_UNIX -- Set up a port to be used for incoming client connections
+ * using unix domain sockets.
+ */
+static IoChanPtr
+open_unix (xim)
+register XimDataPtr xim;
+{
+ register int s = 0;
+ register IoChanPtr chan;
+ struct sockaddr_un sockaddr;
+ int addrlen;
+ char path[256];
+
+ /* Setting the addr to "none" or the null string disables unix
+ * socket support.
+ */
+ if (!xim->unixaddr[0] || strcmp(xim->unixaddr,"none")==0)
+ return (NULL);
+
+
+ if (IIS_DEBUG)
+ printf ("Opening unix socket: '%s'\n", xim->unixaddr);
+
+ /* Get path to be used for the unix domain socket. */
+ sprintf (path, xim->unixaddr, getuid());
+ unlink (path);
+
+ if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ memset ((void *)&sockaddr, 0, sizeof(sockaddr));
+ sockaddr.sun_family = AF_UNIX;
+ strcpy (sockaddr.sun_path, path);
+ addrlen = sizeof(sockaddr) - sizeof(sockaddr.sun_path) + strlen(path);
+ if (bind (s, (struct sockaddr *)&sockaddr, addrlen) < 0)
+ goto err;
+
+ if (listen (s, MAXCONN) < 0)
+ goto err;
+
+ /* Allocate and fill in i/o channel descriptor. */
+ if (chan = get_iochan(xim)) {
+ chan->xim = (XtPointer) xim;
+ chan->type = IO_UNIX;
+ chan->datain = s;
+ chan->dataout = s;
+ chan->reference_frame = 1;
+ chan->version = 0;
+ chan->rf_p = &xim->frames[0];
+ strncpy (chan->path, path, SZ_FNAME);
+
+ /* Register connectClient callback. */
+ chan->id = xim_addInput (xim,s,xim_connectClient,(XtPointer)chan);
+ return (chan);
+ }
+err:
+ if (errno == EADDRINUSE) {
+ fprintf (stderr,"ximtool: unix addr %s already in use - disabled\n",
+ path);
+ } else {
+ fprintf (stderr,"ximtool: cannot open unix socket '%s', errno=%d\n",
+ path, errno);
+ }
+ strcpy (xim->unixaddr, "none");
+ if (s)
+ close (s);
+ return (NULL);
+}
+
+
+/* XIM_CONNECTCLIENT -- Called when a client has attempted a connection on
+ * a socket port. Accept the connection and set up a new i/o channel to
+ * communicate with the new client.
+ */
+static void
+xim_connectClient (chan_port, source, id)
+IoChanPtr chan_port;
+int *source;
+XtPointer id;
+{
+ register XimDataPtr xim = (XimDataPtr) chan_port->xim;
+ register IoChanPtr chan;
+ register int s;
+
+ /* Accept connection. */
+ if ((s = accept ((int)*source, (struct sockaddr *)0, (int *)0)) < 0)
+ return;
+/*
+ if (fcntl (s, F_SETFL, O_RDWR|O_NDELAY) < 0) {
+ close (s);
+ return;
+ }
+*/
+
+ /* Allocate and fill in i/o channel descriptor. */
+ if (chan = get_iochan(xim)) {
+ chan->xim = (XtPointer) xim;
+ chan->type = chan_port->type;
+ chan->datain = s;
+ chan->dataout = s;
+ chan->reference_frame = 1;
+ chan->version = 0;
+ chan->rf_p = &xim->frames[0];
+ chan->id = xim_addInput (xim, s, xim_iisio, (XtPointer)chan);
+ }
+}
+
+
+/* XIM_DISCONNECTCLIENT -- Called to close a client connection when EOF is
+ * seen on the input port. Close the connection and free the channel
+ * descriptor.
+ */
+static void
+xim_disconnectClient (chan)
+register IoChanPtr chan;
+{
+ switch (chan->type) {
+ case IO_INET:
+ case IO_UNIX:
+ close (chan->datain);
+ if (chan->id) {
+ xim_removeInput (chan->xim, chan->id);
+ chan->id = NULL;
+ }
+ chan->type = 0;
+ break;
+ default:
+ break;
+ }
+}
+
+
+/* GET_IOCHAN --- Get an i/o channel descriptor.
+ */
+static IoChanPtr
+get_iochan (xim)
+register XimDataPtr xim;
+{
+ register IoChanPtr chan;
+ register int i;
+
+ for (i=0; i < XtNumber(xim->chan); i++)
+ if (!xim->chan[i].type)
+ return (&xim->chan[i]);
+
+ return (NULL);
+}
+
+
+/* XIM_IISIO -- Xt file i/o callback procedure, called when there is input
+ * pending on the data stream to the ximtool client.
+ */
+void
+xim_iisio (chan, fd_addr, id_addr)
+IoChanPtr chan;
+int *fd_addr;
+XtInputId *id_addr;
+{
+ register XimDataPtr xim = (XimDataPtr) chan->xim;
+ register MappingPtr mp = (MappingPtr) NULL;
+ register FrameBufPtr fb;
+ register int sum, i;
+ register short *p;
+ int datain = *fd_addr;
+ int dataout = chan->dataout;
+ int ndatabytes, nbytes, n, newframe, ntrys=0;
+ struct iism70 iis;
+ char buf[SZ_FIFOBUF];
+ static int errmsg=0, bswap=0;
+
+
+ /* Initialize the debug output. */
+ if (iis_debug == -1)
+ iis_debug = (getenv("DEBUG_IIS") != (char *)NULL);
+
+ /* Get the IIS header. */
+ if ((n = chan_read (datain, (char *)&iis, sizeof(iis))) < sizeof(iis)) {
+ if (n != 0)
+ fprintf (stderr,
+ "ximtool: command input read error, n=%d of %d, errno=%d\n",
+ n, sizeof(iis), errno);
+ if (n <= 0)
+ xim_disconnectClient (chan);
+ return;
+ } else if (bswap)
+ bswap2 ((char *)&iis, (char *)&iis, sizeof(iis));
+
+ /* Verify the checksum. If it fails swap the bytes and try again.
+ */
+ for (;;) {
+ for (i=0, sum=0, p=(short *)&iis; i < 8; i++)
+ sum += *p++;
+ if ((sum & 0177777) == 0177777)
+ break;
+
+ if (ntrys++) {
+ if (!errmsg++) {
+ fprintf (stderr, "ximtool: bad data header checksum\n");
+ if (bswap)
+ bswap2 ((char *)&iis, (char *)&iis, sizeof(iis));
+ fprintf (stderr, "noswap:");
+ for (i=0, p=(short *)&iis; i < 8; i++)
+ fprintf (stderr, " %6o", p[i]);
+ fprintf (stderr, "\n");
+
+ bswap2 ((char *)&iis, (char *)&iis, sizeof(iis));
+ fprintf (stderr, " swap:");
+ for (i=0, p=(short *)&iis; i < 8; i++)
+ fprintf (stderr, " %6o", p[i]);
+ fprintf (stderr, "\n");
+ }
+ break;
+
+ } else {
+ bswap2 ((char *)&iis, (char *)&iis, sizeof(iis));
+ bswap = !bswap;
+ }
+ }
+
+ ndatabytes = -iis.thingct;
+ if (!(iis.tid & PACKED))
+ ndatabytes *= 2;
+
+ if (iis_debug) {
+ fprintf (stderr,
+ "subunit=%06o tid=%06o nbytes=%7d x=%06o y=%06o z=%06o t=%06o\n",
+ iis.subunit & 077,
+ iis.tid,
+ ndatabytes,
+ iis.x & 0177777,
+ iis.y & 0177777,
+ iis.z & 0177777,
+ iis.t & 0177777);
+ fflush (stderr);
+ }
+
+
+ switch (iis.subunit & 077) {
+ case FEEDBACK:
+ /* The feedback unit is used only to clear a frame. The
+ * xim_eraseFrame() procedure takes care of uncaching the
+ * mappings associated with this frame.
+ */
+ newframe = decode_frameno (iis.z & 0177777);
+ xim_setReferenceFrame (chan, newframe);
+ if (newframe == chan->reference_frame)
+ xim_eraseFrame (xim, chan->reference_frame);
+
+ /* ISM: Uncache all mappings associated with this frame. */
+ fb = &xim->frames[newframe-1];
+ for (i=0; i < fb->nmaps; i++) {
+ mp = &fb->mapping[i];
+ if (mp->id) {
+ sprintf (buf, "uncache %d", mp->id);
+ ism_message (xim, "wcspix", buf);
+ wcspix_message (xim, buf);
+ mp->id = 0;
+ }
+ }
+
+ /* Reset various counters for the new frame and release the
+ * mappings.
+ */
+ fb->nmaps = 0;
+ fb->ctran.valid = 0;
+ objid[newframe-1] = 0;
+ fb->nmaps = 0;
+
+ if (iis_debug)
+ fprintf (stderr, "erase frame %d - ref = %d\n",
+ newframe, chan->reference_frame);
+ break;
+
+ case LUT:
+ /* Data mode writes to the frame lookup tables are not implemented.
+ * A command mode write to the LUT subunit is used to connect
+ * image memories up to the RGB channels, i.e., to select the frame
+ * to be displayed. We ignore any attempt to assign multiple
+ * frames to multiple color channels, and just do a simple frame
+ * select.
+ */
+ if (iis.subunit & COMMAND) {
+ int frame, z, n;
+ short x[17];
+
+ if (chan_read (datain, (char *)x, ndatabytes) == ndatabytes) {
+ if (bswap)
+ bswap2 ((char *)x, (char *)x, ndatabytes);
+
+ z = x[0];
+ if (!z) z = 1;
+ for (n=0; !(z & 1); z >>= 1)
+ n++;
+
+ frame = max (1, n + 1);
+ if (frame > xim->nframes) {
+ if (frame <= MAX_FRAMES) {
+ set_fbconfig (chan, xim->fb_configno, frame);
+ if (iis_debug)
+ fprintf (stderr, "set_fbconfig (%d, %d)\n",
+ xim->fb_configno, frame);
+ } else {
+ fprintf (stderr, "ximtool warning: ");
+ fprintf (stderr,
+ "attempt to display nonexistent frame %d\n",
+ frame);
+ return;
+ }
+ }
+
+ xim_setDisplayFrame (xim, frame);
+ if (iis_debug)
+ fprintf (stderr, "set_frame (%d)\n", frame);
+ return;
+ }
+ }
+
+ case MEMORY:
+ /* Load data into the frame buffer. Data is assumed to be byte
+ * packed.
+ */
+ if (iis.tid & IIS_READ) {
+ /* Read from the display.
+ */
+ unsigned char *ip, iobuf[SZ_IOBUF];
+ int nbytes, nleft, n, x, y;
+ long starttime;
+
+ /* Get the frame to read from. */
+ xim_setReferenceFrame (chan, decode_frameno (iis.z & 0177777));
+
+ nbytes = ndatabytes;
+ x = iis.x & XYMASK;
+ y = iis.y & XYMASK;
+
+ if (x < 0 || x >= xim->width || y < 0 || y >= xim->height) {
+ fprintf (stderr,
+ "ximtool: attempted read out of bounds on framebuf\n");
+ fprintf (stderr,
+ "read %d bytes at [%d,%d]\n", nbytes, x, y);
+ memset ((void *)iobuf, 0, nbytes);
+ } else {
+ int nx, ny;
+
+ /********** OLD CODE *********
+ GtReadPixels (xim->gt, chan->rf_p->raster, iobuf, 8, x, y,
+ min(xim->width-x,nbytes), max(1,nbytes/xim->width));
+ ********** OLD CODE **********/
+
+ /* If the iis.t element is set, it will contain the width
+ ** of the subraster being read. In the old scheme we
+ ** assumed we were reading the entire width of the FB.
+ */
+ if (iis.t > 0 && iis.t != ALLBITPL) {
+ nx = min (xim->width-x, iis.t);
+ ny = max (1, nbytes/iis.t);
+ } else {
+ nx = min (xim->width-x, nbytes);
+ ny = max (1, nbytes/xim->width);
+ }
+ GtReadPixels (xim->gt, chan->rf_p->raster, iobuf, 8, x, y,
+ nx, ny);
+
+ if (iis_debug)
+ fprintf (stderr,
+ "read %d bytes at [%d,%d]\n", nbytes, x, y);
+ }
+
+ /* Return the data from the frame buffer. */
+ starttime = time(0);
+ for (nleft=nbytes, ip=iobuf; nleft > 0; nleft -= n) {
+ n = (nleft < SZ_FIFOBUF) ? nleft : SZ_FIFOBUF;
+ if ((n = chan_write (dataout, ip, n)) <= 0) {
+ if (n < 0 || (time(0) - starttime > IO_TIMEOUT)) {
+ fprintf (stderr, "XIMTOOL: timeout on write\n");
+ break;
+ }
+ } else
+ ip += n;
+ }
+
+ return;
+
+ } else {
+ /* Write to the display.
+ */
+ unsigned char *op, iobuf[SZ_IOBUF];
+ int nbytes, nleft, n, x, y;
+ long starttime;
+
+ /* Get the frame to be written into (encoded with a bit for
+ * each frame, 01 is frame 1, 02 is frame 2, 04 is frame 3,
+ * and so on).
+ */
+ xim_setReferenceFrame (chan, decode_frameno (iis.z & 0177777));
+
+ nbytes = ndatabytes;
+ x = iis.x & XYMASK;
+ y = iis.y & XYMASK;
+
+ /* Read the data into the frame buffer.
+ */
+ starttime = time(0);
+ for (nleft=nbytes, op=iobuf; nleft > 0; nleft -= n) {
+ n = (nleft < SZ_FIFOBUF) ? nleft : SZ_FIFOBUF;
+ if ((n = chan_read (datain, op, n)) <= 0) {
+ if (n < 0 || (time(0) - starttime > IO_TIMEOUT)) {
+ fprintf (stderr, "XIMTOOL: timeout on read\n");
+ break;
+ }
+ } else
+ op += n;
+ }
+
+ if (x < 0 || x >= xim->width || y < 0 || y >= xim->height) {
+ fprintf (stderr,
+ "ximtool: attempted write out of bounds on framebuf\n");
+ fprintf (stderr,
+ "write %d bytes at [%d,%d]\n", nbytes, x, y);
+ memset ((void *)iobuf, 0, nbytes);
+ } else {
+ int nx, ny;
+
+ /********** OLD CODE *********
+ GtWritePixels (xim->gt, chan->rf_p->raster, iobuf, 8, x, y,
+ min(xim->width-x,nbytes), max(1,nbytes/xim->width));
+ ********** OLD CODE **********/
+
+ /* If the iis.t element is set, it will contain the width
+ ** of the subraster being written. In the old scheme we
+ ** assumed we were writing the entire width of the FB.
+ */
+ if (iis.t > 0 && iis.t != ALLBITPL) {
+ nx = min (xim->width-x, iis.t);
+ ny = max (1, nbytes/iis.t);
+ } else {
+ nx = min (xim->width-x, nbytes);
+ ny = max (1, nbytes/xim->width);
+ }
+ GtWritePixels (xim->gt, chan->rf_p->raster, iobuf, 8,
+ x, y, nx, ny);
+
+ if (iis_debug)
+ fprintf (stderr, "write %d bytes at x=%d, y=%d\n",
+ nbytes, x, y, nx, ny);
+ }
+
+ return;
+ }
+ break;
+
+ case WCS:
+ /* Read or write the WCS for a frame. The frame number to
+ * which the WCS applies is passed in Z and the frame buffer
+ * configuration in T. The client changes the frame buffer
+ * configuration in a WCS set. The WCS text follows the header
+ * as byte packed ASCII data.
+ */
+ if (iis.tid & IIS_READ) {
+ /* Return the WCS for the referenced frame.
+ */
+ char emsg[SZ_WCSBUF];
+ char *text;
+ int frame, wcsnum;
+
+ memset ((char *)emsg, 0, SZ_WCSBUF);
+
+ if ((iis.x & 017777) && (iis.y & 017777)) {
+ /* This is a check by the client on our capabilities.
+ * Return with a version number which can be used by the
+ * client. However we write back using the old WCS
+ * buffer size for compatability.
+ */
+ sprintf (text=emsg, "version=%d", IIS_VERSION);
+ chan->version = IIS_VERSION;
+
+ chan_write (dataout, text, SZ_OLD_WCSBUF);
+ if (iis_debug)
+ fprintf (stderr, "version query wcs: %s\n",text);
+
+ } else if ((iis.x & 017777) && (iis.t & 017777)) {
+ /* Return the buffer for a specified WCS number.
+ */
+ CtranPtr ct = (CtranPtr) NULL;
+ FrameBufPtr fr = (FrameBufPtr) NULL;
+ int wcsnum = (iis.t & 017777);
+ register int i, j;
+
+
+ /* Decode the requested wcs number. */
+ frame = decode_frameno (iis.z & 0177777);
+
+ /* Search for the requested WCS number. */
+ mp = (MappingPtr) NULL;
+ for (j=0; j < xim->nframes; j++) {
+ fr = &xim->frames[j];
+ if (fr->frameno != frame)
+ continue;
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &fr->mapping[i];
+ if (mp->id == wcsnum) {
+ /* found the mapping */
+ ct = &(mp->ctran);
+ goto map_found;
+ }
+ }
+ }
+
+ /* Encode the WCS and mapping information. */
+map_found: if (ct) {
+ char wcs[SZ_WCSBUF], mapping[SZ_WCSBUF];
+
+ sprintf (wcs, "%s\n%f %f %f %f %f %f %f %f %d\n",
+ ct->imtitle, ct->a, ct->b, ct->c, ct->d,
+ ct->tx, ct->ty, ct->z1, ct->z2, ct->zt);
+ sprintf (mapping, "%s %f %f %d %d %d %d %d %d\n%s\n",
+ mp->region, mp->sx, mp->sy, mp->snx, mp->sny,
+ mp->dx, mp->dy, mp->dnx, mp->dny, mp->ref);
+
+ strcpy (text=emsg, wcs);
+ strcat (text, mapping);
+ } else
+ strcpy (text=emsg, "[NOSUCHWCS]\n");
+
+ chan_write (dataout, text, SZ_WCSBUF);
+
+ if (iis_debug) {
+ fprintf (stderr, "query specified wcs=%d frame=%d\n",
+ wcsnum, frame);
+ write (2, text, strlen (text));
+ }
+
+ } else {
+ frame = decode_frameno (iis.z & 0177777);
+ xim_setReferenceFrame (chan, frame);
+
+ if (chan->rf_p->frameno <= 0)
+ strcpy (text=emsg, "[NOSUCHFRAME]\n");
+ else
+ text = chan->rf_p->wcsbuf;
+
+ if ((iis.x & 0777))
+ chan_write (dataout, text, SZ_WCSBUF);
+ else
+ chan_write (dataout, text, SZ_OLD_WCSBUF);
+
+ if (iis_debug) {
+ fprintf (stderr, "query wcs: frame = %d\n", frame);
+ write (2, text, strlen(text));
+ }
+ }
+
+ } else {
+ /* Set the WCS for the referenced frame.
+ */
+ register CtranPtr ct;
+ int fb_config, frame, new_wcs = 0;
+
+ frame = decode_frameno (iis.z & 0177777);
+ fb_config = (iis.t & 0777) + 1;
+ new_wcs = (iis.x & 0777);
+
+ /* See if we need to change the frame buffer configuration,
+ * or allocate a new frame.
+ */
+ if (fb_config != xim->fb_configno)
+ set_fbconfig (chan, fb_config, frame);
+ else if (frame > xim->nframes && frame <= MAX_FRAMES)
+ set_fbconfig (chan, xim->fb_configno, frame);
+
+ /* Read in and set up the WCS. */
+ xim_setReferenceFrame (chan, frame);
+ memset ((char *)buf, 0, SZ_WCSBUF);
+ if (chan_read (datain, buf, ndatabytes) == ndatabytes)
+ strncpy (chan->rf_p->wcsbuf, buf,
+ (new_wcs ? SZ_WCSBUF : SZ_OLD_WCSBUF));
+
+ if (iis_debug) {
+ fprintf (stderr, "set wcs:\n");
+ write (2, buf, ndatabytes);
+ }
+
+ strcpy (chan->rf_p->ctran.format, W_DEFFORMAT);
+ chan->rf_p->ctran.imtitle[0] = '\0';
+ chan->rf_p->ctran.valid = 0;
+ ct = wcs_update (xim, chan->rf_p);
+
+ /* If we're connected to an old-style client, disable the
+ * WCSPIX ISM, otherwise just let the GUI know it capable.
+ */
+ wcspix_message (xim, (new_wcs ? "capable" : "disable"));
+
+ /* Add the mapping information. */
+ add_mapping (xim, ct, chan->rf_p->wcsbuf,
+ &xim->frames[chan->reference_frame-1]);
+
+ xim_message (xim, "frameTitle", ct->imtitle);
+ }
+ return;
+
+ case IMCURSOR:
+ /* Read or write the logical image cursor. This is an extension
+ * added to provide a high level cursor read facility; this is
+ * not the same as a low level access to the IIS cursor subunit.
+ * Cursor reads may be either nonblocking (immediate) or blocking,
+ * using the keyboard or mouse to terminate the read, and
+ * coordinates may be returned in either image (world) or frame
+ * buffer pixel coordinates.
+ */
+ if (iis.tid & IIS_READ) {
+ /* Read the logical image cursor. In the case of a blocking
+ * read all we do is initiate a cursor read; completion occurs
+ * when the user hits a key or button.
+ */
+ if (iis_debug)
+ fprintf (stderr, "read cursor position\n");
+ if (iis.tid & IMC_SAMPLE) {
+ /* Sample the cursor position and return the cursor value
+ * on the output datastream encoded in a fixed size
+ * ascii buffer.
+ */
+ int wcs = iis.z;
+ int raster, frame;
+ float sx, sy;
+ IoChanPtr sv_chan;
+
+ /* Save the cursor channel so that sampled cursor reads
+ * can occur on one channel without affecting any
+ * interactive cursor reads in progress on another
+ * channel.
+ */
+ sv_chan = xim->cursor_chan;
+ xim->cursor_chan = chan;
+ xim_getCursorPos (xim, &sx, &sy, &raster, &frame);
+ xim_retCursorVal (xim, sx, sy, frame, wcs, 0, "");
+ xim->cursor_chan = sv_chan;
+
+ } else {
+ /* Initiate a user triggered cursor read. */
+ if (xim->cursor_chan) {
+ int frame = xim->cursor_chan->reference_frame;
+ xim_retCursorVal (xim, 0., 0., frame, 0, EOF, "");
+ }
+ xim->cursor_chan = chan;
+ xim_cursorMode (xim, 1);
+ }
+
+ } else {
+ /* Write (set) the logical image cursor position. */
+ register CtranPtr ct;
+ int sx = iis.x, sy = iis.y;
+ float wx = sx, wy = sy;
+ int wcs = iis.z;
+
+ if (iis_debug)
+ fprintf(stderr, "write cursor position: [%d,%d]\n", sx, sy);
+ if (wcs) {
+ ct = wcs_update (xim, xim->df_p);
+ if (ct->valid) {
+ if (abs(ct->a) > .001)
+ sx = (wx - ct->tx) / ct->a;
+ if (abs(ct->d) > .001)
+ sy = (wy - ct->ty) / ct->d;
+ }
+ }
+
+ xim_setCursorPos (xim, sx, sy);
+ }
+ return;
+
+ default:
+ /* Ignore unsupported command input.
+ */
+ break;
+ }
+
+ /* Discard any data following the header. */
+ if (!(iis.tid & IIS_READ))
+ for (nbytes = ndatabytes; nbytes > 0; nbytes -= n) {
+ n = (nbytes < SZ_FIFOBUF) ? nbytes : SZ_FIFOBUF;
+ if ((n = chan_read (datain, buf, n)) <= 0) {
+ if (iis_debug)
+ fprintf (stderr,
+ "discarding %d bytes following header:\n", n);
+ break;
+ }
+ }
+}
+
+
+/* XIM_IISIOMAP, XIM_IISCOLORMAP -- Set the iomap and colormap for a Gterm
+ * widget to emulate the color allocation scheme assumed by the imtool
+ * protocol.
+ *
+ * The nominal pixel mappings are as follows.
+ *
+ * Imtool Gterm Description
+ *
+ * 0 0 background
+ * 1 - 200 10-209 image data
+ * 201 210 cursor (white)
+ * 202 0 background (black)
+ * 203 1 white
+ * 204 2 red
+ * 205 3 green
+ * 206 4 blue
+ * 207 6 yellow
+ * 208 5 cyan
+ * 209 7 magenta
+ * 210 211 coral
+ * 211 212 maroon
+ * 212 213 orange
+ * 213 214 khaki
+ * 214 215 orchid
+ * 215 216 turquoise
+ * 216 217 violet
+ * 217 218 wheat
+ *
+ * The Gterm color allocation is the standard 10 static colors, followed by
+ * 200 dynamically allocated colors used to display image data, followed by
+ * a few additional colors. Only the block of 200 colors are subject to
+ * modification when the display is windowed or a new colortable is loaded.
+ *
+ * If the gterm widget is permitted a sufficient number of dynamic colors then
+ * pixels will be allocated as in the figure above. If there are too few
+ * colormap cells available to allocate all the colors then the image data
+ * region of gterm colormap space will be shrunk to make up the difference.
+ * The full set of static colors (imtool:201-217) are always allocated; it
+ * is the range 1-200 which is reduced if there are too few colors. The
+ * iomap always makes it appear to the client that the full range of 200
+ * image levels and 17 static colors are available, even if the actual number
+ * of color cells available is less.
+ *
+ * The input arrays should be dimension of length 256. The number of
+ * iomap entries and number of RGB entries set is returned in the output
+ * variables iomap_len and rgb_len.
+ */
+xim_iisiomap (w, iomap, iomap_len)
+register XtPointer w;
+unsigned short *iomap;
+int *iomap_len;
+{
+ register int i;
+ int first, nelem, maxelem;
+ int delta;
+
+ GtQueryColormap (w, 0, &first, &nelem, &maxelem);
+ delta = min(maxelem,209) - 209;
+
+ /* Set the iomap. */
+ iomap[0] = 0;
+ for (i=1; i < 201; i++)
+ iomap[i] = (200 + delta) * (i-1) / 200 + first;
+ iomap[201] = first + 200 + delta;
+ for (i=0; i < 8; i++)
+ iomap[202+i] = i;
+ iomap[207] = 6;
+ iomap[208] = 5;
+ for (i=0; i < 8; i++)
+ iomap[210+i] = first + 201 + i + delta;
+ *iomap_len = 218;
+}
+
+
+/* xim_iiscolormap -- This is the gterm colormap for the IIS emulation, set
+ * before the IIS iomap is defined. The first colormap cell corresponds to
+ * first = gterm color 10.
+ */
+xim_iiscolormap (w, r, g, b, first, ngray, rgb_len)
+register XtPointer w;
+unsigned short *r, *g, *b;
+int *first, *ngray, *rgb_len;
+{
+ register int i, j;
+ int nelem, maxelem;
+ int delta;
+
+ GtQueryColormap (w, 0, first, &nelem, &maxelem);
+ delta = min(maxelem,209) - 209;
+
+ /* Set the colormap. */
+ for (i=0; i < 256; i++)
+ r[i] = g[i] = b[i] = 0;
+ for (i=0; i < 200 + delta; i++)
+ r[i] = g[i] = b[i] = (i * 255 / (200 + delta));
+
+ r[i] = 255; g[i] = 255; b[i] = 255; i++; /* 210=cursor */
+ r[i] = 255; g[i] = 127; b[i] = 0; i++; /* 211=coral */
+ r[i] = 142; g[i] = 35; b[i] = 107; i++; /* 212=maroon */
+ r[i] = 204; g[i] = 50; b[i] = 50; i++; /* 213=orange */
+ r[i] = 159; g[i] = 159; b[i] = 95; i++; /* 214=khaki */
+ r[i] = 219; g[i] = 112; b[i] = 219; i++; /* 215=orchid */
+ r[i] = 112; g[i] = 219; b[i] = 219; i++; /* 216=turquoise */
+ r[i] = 159; g[i] = 95; b[i] = 159; i++; /* 217=violet */
+ r[i] = 216; g[i] = 216; b[i] = 191; i++; /* 218=wheat */
+
+ /* Scale colormap values to 16 bits. */
+ for (j=0; j < i; j++) {
+ r[j] <<= 8;
+ g[j] <<= 8;
+ b[j] <<= 8;
+ }
+
+ *ngray = 200 + delta;
+ *rgb_len = i;
+}
+
+
+/* SET_FBCONFIG -- Set the frame buffer configuration, or add additional
+ * frames to the current configuration.
+ */
+static void
+set_fbconfig (chan, config, frame)
+IoChanPtr chan;
+int config;
+int frame;
+{
+ register XimDataPtr xim = (XimDataPtr) chan->xim;
+ register FrameBufPtr fb = &xim->frames[frame-1];
+ register int i;
+
+ if (config != xim->fb_configno) {
+ /* Change the frame buffer configuration. */
+ xim_initialize (xim, config,
+ max (xim->fb_config[config-1].nframes, frame), 1);
+
+ /* Reinitialize the tile framing if enabled. */
+ if (xim->tileFrames)
+ xim_tileFrames (xim, xim->tileFramesList);
+
+ /* Initialize the ISM to uncache all images when we change
+ * frame buffer configs.
+ */
+ ism_message (xim, "wcspix", "initialize");
+
+ } else if (frame > xim->nframes) {
+ /* Add additional frames. */
+ for (i=1; i <= frame; i++) {
+ fb = &xim->frames[i-1];
+ if (fb->frameno != i) {
+ xim_initFrame (xim, i, frame,
+ &xim->fb_config[config-1], xim->memModel);
+
+ /* If we're in tile mode, add the frame to the tile list
+ * and if needed resize the tile frames.
+ */
+ if (xim->tileFrames) {
+ xim->tileFramesList |= (1 << (i-1));
+ xim->nTileFrames++;
+ xim_tileFrames (xim, xim->tileFramesList);
+ }
+ }
+ }
+ }
+
+ xim_setReferenceFrame (chan, frame);
+ if (frame != xim->display_frame)
+ xim_setDisplayFrame (xim, frame);
+}
+
+
+/* DECODE_FRAMENO -- Decode encoded IIS register frame number.
+ */
+static
+decode_frameno (z)
+register int z;
+{
+ register int n;
+
+ /* Get the frame number, encoded with a bit for each frame, 01 is
+ * frame 1, 02 is frame 2, 04 is frame 3, and so on.
+ */
+ if (!z) z = 1;
+ for (n=0; !(z & 1); z >>= 1)
+ n++;
+
+ return (max (1, n + 1));
+}
+
+
+/* XIM_RETCURSORVAL -- Return the cursor value on the output datastream to
+ * the client which requested the cursor read.
+ */
+xim_retCursorVal (xim, sx, sy, frame, wcs, key, strval)
+register XimDataPtr xim;
+float sx, sy; /* cursor screen coordinates */
+int frame; /* frame number */
+int wcs; /* nonzero if WCS coords desired */
+int key; /* keystroke used as trigger */
+char *strval; /* optional string value */
+{
+ register CtranPtr ct;
+ register MappingPtr mp = (MappingPtr) NULL;
+ int dataout, wcscode;
+ char curval[SZ_IMCURVAL];
+ char keystr[20];
+ float wx, wy;
+
+ if (xim->cursor_chan)
+ dataout = xim->cursor_chan->dataout;
+ else
+ return;
+
+ /* Compute cursor coordinates. */
+ if (wcs) {
+ ct = wcs_update (xim, xim->df_p);
+ if (ct->valid) {
+ /* The imtool WCS assumes that the center of the first display
+ * pixel is at (0,0) but actually it is at (0.5,0.5).
+ */
+ sx -= 0.5;
+ sy -= 0.5;
+
+ if (abs(ct->a) > .001)
+ wx = ct->a * sx + ct->c * sy + ct->tx;
+ if (abs(ct->d) > .001)
+ wy = ct->b * sx + ct->d * sy + ct->ty;
+ }
+ } else {
+ wx = sx;
+ wy = sy;
+ }
+
+ /* Compute WCS code. */
+ wcscode = frame * 100 + wcs;
+ if (wcspix_enabled != NULL && *wcspix_enabled) {
+ if ((mp = xim_getMapping (xim, sx, sy, frame))) {
+ wcscode = mp->id;
+
+ /* Return the coordinates in terms of the mapping. */
+ ct = &(mp->ctran);
+ wx = ct->a * sx + ct->c * sy + ct->tx;
+ wy = ct->b * sx + ct->d * sy + ct->ty;
+ }
+ }
+
+ /* Encode the cursor value. */
+ if (key == EOF)
+ sprintf (curval, "EOF\n");
+ else {
+ if (isprint (key) && !isspace(key)) {
+ keystr[0] = key;
+ keystr[1] = '\0';
+ } else
+ sprintf (keystr, "\\%03o", key);
+
+ sprintf (curval, "%10.3f %10.3f %d %s %s\n",
+ wx, wy, wcscode, keystr, strval);
+ }
+
+
+ if (iis_debug) fprintf (stderr, "curval: %s", curval);
+
+ /* Send it to the client program and terminate cursor mode. */
+ chan_write (dataout, curval, sizeof(curval));
+ xim_cursorMode (xim, 0);
+ xim->cursor_chan = NULL;
+}
+
+
+/* XIM_ENCODEWCS -- Transform the input screen (raster) coordinates and
+ * pixel value and return a string giving X, Y, and the pixel intensity in
+ * world units.
+ */
+xim_encodewcs (xim, sx, sy, sz, obuf)
+register XimDataPtr xim;
+float sx, sy; /* screen (raster) pixel coordinates */
+int sz; /* screen pixel value */
+char *obuf; /* receives encoded string */
+{
+ register CtranPtr ct;
+ MappingPtr mp = (MappingPtr) NULL;
+ float wx, wy, wz;
+ float y = xim->height - sy;
+ register int j=0, i=0, ch, map_found = 0;
+ char buf[SZ_LINE];
+
+
+ /* The first time we're called get the address of the wcspix
+ * connected flag so we can check whether to get screen pixel
+ * or real-image values.
+ */
+ if (wcspix_enabled == NULL) {
+ register IsmModule ism;
+ extern ismModule ism_modules[];
+ extern int ism_nmodules;
+
+ for (i=0; i < ism_nmodules; i++) {
+ ism = &ism_modules[i];
+ if (strcmp ("wcspix", ism->name) == 0)
+ wcspix_enabled = &(ism->connected);
+ }
+ }
+
+
+ /* Now lookup the coordinate mapping and update the WCS and real
+ * pixel value if the ISM is running.
+ */
+ if (wcspix_enabled != NULL && *wcspix_enabled) {
+ if ((mp = xim_getMapping (xim, sx+1.0, sy, xim->display_frame))) {
+ ct = &(mp->ctran);
+ sx -= 0.5;
+ sy -= 0.5;
+ wx = ct->a * sx + ct->c * sy + ct->tx;
+ wy = ct->b * sx + ct->d * sy + ct->ty;
+
+/*
+printf ("sx: %f sy: %f\n", sx, sy);
+printf ("ct: %s\n%f %f %f %f %f %f %f %f %d\n",
+ ct->imtitle, ct->a, ct->b, ct->c, ct->d,
+ ct->tx, ct->ty, ct->z1, ct->z2, ct->zt);
+printf ("mp: %s %f %f %d %d %d %d %d %d\n%s\n\n",
+ mp->region, mp->sx, mp->sy, mp->snx, mp->sny,
+ mp->dx, mp->dy, mp->dnx, mp->dny, mp->ref);
+printf ("wx: %f wy: %f\n", wx, wy);
+*/
+
+ /* Found the image mapping so request the WCS
+ * and pixel information from the WPIX ISM.
+ */
+ if (mp->ref != NULL) {
+ sprintf (buf, "wcstran %d %g %g\n", mp->id, wx, wy);
+ ism_message (xim, "wcspix", buf);
+ }
+ map_found++;
+ }
+ }
+
+ ct = wcs_update (xim, xim->df_p);
+ if (ct->valid) {
+ /* The imtool WCS assumes that the center of the first display
+ * pixel is at (0,0) but actually it is at (0.5,0.5).
+ */
+
+ wx = ct->a * sx + ct->c * sy + ct->tx;
+ wy = ct->b * sx + ct->d * sy + ct->ty;
+
+ if (sz == 0)
+ wz = 0.0;
+ else {
+ switch (ct->zt) {
+ case W_LINEAR:
+ wz = ((sz - CMS_DATASTART) * (ct->z2 - ct->z1) /
+ (CMS_DATARANGE-1)) + ct->z1;
+ break;
+ default:
+ wz = sz;
+ break;
+ }
+ }
+ } else {
+ wx = sx;
+ wy = sy;
+ wz = sz;
+ }
+
+ ch = ' ';
+ if (sz && ct->valid) {
+ if (ct->z1 < ct->z2) {
+ if (wz < (ct->z1 + 0.01))
+ ch = '-';
+ else if (wz > (ct->z2 - 0.01))
+ ch = '+';
+ } else if (ct->z1 > ct->z2) {
+ if (wz < (ct->z2 + 0.01))
+ ch = '-';
+ else if (wz > (ct->z1 - 0.01))
+ ch = '+';
+ }
+ }
+ sprintf (obuf, ct->format, wx + 0.005, wy + 0.005, wz, ch);
+}
+
+
+/* XIM_GETMAPPING -- Return the mapping struct for the given screen coords.
+ */
+static MappingPtr
+xim_getMapping (xim, sx, sy, frame)
+register XimDataPtr xim;
+float sx, sy; /* screen (raster) pixel coordinates */
+int frame;
+{
+ FrameBufPtr fb = (FrameBufPtr) NULL;
+ MappingPtr mp = (MappingPtr) NULL;
+ register int j=0, i=0;
+ float y = xim->height - sy;
+ char buf[SZ_LINE];
+ register map_debug = 0;
+
+
+ /* Loop through the frame buffers until we find the current one.
+ * The mappings aren't stored in the display fb so we need to
+ * search.
+ */
+ for (j=0; j < xim->nframes; j++) {
+ fb = &xim->frames[j];
+
+ if (frame == fb->frameno) {
+ /* Got the right frame, now search for mappings on this
+ * frame which intersect the screen coords. We assume there
+ * are no overlapping image mappings.
+ */
+ for (i=0; i < fb->nmaps; i++) {
+ mp = &fb->mapping[i];
+ if (map_debug) {
+ printf ("%d: sx=%.2f sy=%.2f / %.2f --> ",i,sx,sy,y);
+ printf ("mp->dx=%d+%d=%d mp->dy=%d+%d=%d",
+ mp->dx, mp->dnx, mp->dx+mp->dnx,
+ mp->dy, mp->dny, mp->dy+mp->dny);
+ }
+ if ((sx >= mp->dx && sx <= (mp->dx + mp->dnx)) &&
+ ( y >= mp->dy && y <= (mp->dy + mp->dny))) {
+ if (map_debug) printf (" YES\n");
+ return (mp);
+ }
+ if (map_debug) printf (" NO\n");
+ }
+ }
+ }
+
+ return ((MappingPtr) NULL);
+}
+
+
+/* XIM_FRAMELABEL -- Return a pointer to the frame label string for the current
+ * frame.
+ */
+char *
+xim_frameLabel (xim)
+register XimDataPtr xim;
+{
+ register FrameBufPtr df_p = xim->df_p;
+
+ sprintf (df_p->label, "[%d] %s", df_p->frameno, df_p->ctran.imtitle);
+ return (df_p->label);
+}
+
+
+/* WCS_UPDATE -- Load the screen WCS, if not yet validated, from the user
+ * wcs file, if any.
+ *
+ * File format (two lines):
+ *
+ * image title (imtool header label string)\n
+ * a b c d tx ty z1 z2 zt
+ *
+ * The WCS text is passed in via the data stream as a write to the subunit
+ * WCS and left in the buffer "wcsbuf". Mapping information is parsed
+ * elsewhere if needed, our only purpose here is to extract the frame WCS.
+ */
+static CtranPtr
+wcs_update (xim, fr)
+register XimDataPtr xim;
+FrameBufPtr fr;
+{
+ register CtranPtr ct = &fr->ctran;
+ char buf[1024], *format;
+
+
+ /* Get the new WCS. */
+ if (!ct->valid) {
+ fr->label[0] = '\0';
+ ct->zt = W_UNITARY;
+
+ /* Attempt to read the WCS and set up a unitary transformation
+ * if the information cannot be read.
+ */
+ if (sscanf (fr->wcsbuf, "%[^\n]\n%f%f%f%f%f%f%f%f%d",
+ buf, &ct->a, &ct->b, &ct->c, &ct->d, &ct->tx, &ct->ty,
+ &ct->z1, &ct->z2, &ct->zt) < 7) {
+
+ if (fr->wcsbuf[0])
+ fprintf (stderr, "ximtool: error decoding WCS\n");
+
+ strncpy (ct->imtitle, "[NO WCS]\n", SZ_IMTITLE);
+ ct->a = ct->d = 1;
+ ct->b = ct->c = 0;
+ ct->tx = ct->ty = 0;
+ ct->zt = W_UNITARY;
+
+ } else
+ strncpy (ct->imtitle, buf, SZ_IMTITLE);
+
+ ct->valid++;
+ }
+
+ /* Determine best format for wcs output. */
+ if (ct->valid && ct->zt == W_LINEAR) {
+ float z1, z2, zrange;
+ z1 = ct->z1;
+ z2 = ct->z2;
+ zrange = (z1 > z2) ? z1 - z2 : z2 - z1;
+ if (zrange < 0.01 || (abs(z1) + abs(z2)) / 2.0 < 0.01)
+ format = " %7.2f %7.2f %9.3g%c";
+ else if (zrange < 100.0 && (abs(z1) + abs(z2)) / 2.0 < 200.0)
+ format = " %7.2f %7.2f %7.3f%c";
+ else if (zrange > 99999.0 || (abs(z1) + abs(z2)) / 2.0 > 99999.0)
+ format = " %7.2f %7.2f %9.3g%c";
+ else
+ format = W_DEFFORMAT;
+ } else
+ format = " %7.2f %7.2f %7.0f%c";
+
+ strcpy (ct->format, format);
+ return (ct);
+}
+
+
+/* ADD_MAPPING -- Add a mapping for the current frame.
+ *
+ * File format (two lines):
+ *
+ * image title (imtool header label string)\n
+ * a b c d tx ty z1 z2 zt \n
+ * region_name sx sy snx sny dx dy dnx dny\n
+ * object_ref
+ *
+ * The WCS text is passed in via the data stream as a write to the subunit
+ * WCS and left in the buffer "wcsbuf". Mapping information is parsed
+ * elsewhere if needed, our only purpose here is to extract the frame WCS.
+ */
+
+static void
+add_mapping (xim, ctran, wcsbuf, fr)
+register XimDataPtr xim;
+CtranPtr ctran;
+char *wcsbuf;
+FrameBufPtr fr;
+{
+ register MappingPtr mp = &fr->mapping[fr->nmaps];
+ register CtranPtr ct = &mp->ctran;
+ register int i, j, frame = fr->frameno;
+ char buf[SZ_WCSBUF], *format;
+
+ /* Attempt to read the WCS and set up a unitary transformation
+ * if the information cannot be read.
+ */
+ if (sscanf (wcsbuf, "%[^\n]\n%f%f%f%f%f%f%f%f%d",
+ buf, &ct->a, &ct->b, &ct->c, &ct->d, &ct->tx, &ct->ty,
+ &ct->z1, &ct->z2, &ct->zt) < 7) {
+
+ if (wcsbuf[0])
+ fprintf (stderr, "ximtool: error decoding WCS\n");
+
+ strncpy (ct->imtitle, "[NO WCS]\n", SZ_IMTITLE);
+ ct->a = ct->d = 1;
+ ct->b = ct->c = 0;
+ ct->tx = ct->ty = 0;
+ ct->zt = W_UNITARY;
+ } else
+ strncpy (ct->imtitle, buf, SZ_IMTITLE);
+
+ ct->valid = 1;
+
+
+ /* Skip over the first two lines of WCS data.
+ */
+ strcpy (buf, wcsbuf);
+ for (i=0, j=0; j < 2 && buf[i]; i++)
+ if (buf[i] == '\n')
+ j++;
+
+ /* Attempt to read the mapping.
+ */
+ mp->regid = (++objid[frame-1]) + (frame * 100);
+ mp->id = mp->regid;
+ mp->ref[0] = '\0';
+ mp->region[0] = '\0';
+
+ if (sscanf (&buf[i], "%s%f%f%d%d%d%d%d%d\n%s\n",
+ mp->region, &mp->sx, &mp->sy, &mp->snx, &mp->sny,
+ &mp->dx, &mp->dy, &mp->dnx, &mp->dny, mp->ref) < 10) {
+
+ if (!wcsbuf[0])
+ fprintf (stderr, "ximtool: error decoding WCS mapping\n");
+ strncpy (mp->region, "none", SZ_IMTITLE);
+ strncpy (mp->ref, "none", SZ_IMTITLE);
+
+ mp->sx = 1.0;
+ mp->sy = 1.0;
+ mp->snx = xim->width;
+ mp->sny = xim->height;
+ mp->dx = 1;
+ mp->dy = 1;
+ mp->dnx = xim->width;
+ mp->dny = xim->height;
+ }
+ memmove (ctran, &mp->ctran, sizeof (Ctran));
+
+
+ /* Tell the ISM to cache this mapping if we have an object ref. */
+ sprintf (buf, "cache %s %d", mp->ref, mp->id);
+ ism_message (xim, "wcspix", buf);
+ sprintf (buf, "wcslist %d", mp->id);
+ ism_message (xim, "wcspix", buf);
+
+ /* Send the object ref to the GUI. */
+ sprintf (buf, "cache %s %d %d", mp->ref, fr->frameno, mp->id);
+ wcspix_message (xim, buf);
+ sprintf (buf, "orient %d %d %d %d",
+ mp->id, fr->frameno, (int)ctran->a, (int)(-1 * ctran->d));
+ wcspix_message (xim, buf);
+
+ fr->nmaps++;
+
+
+ /* Debug the mappings. */
+ if (getenv("DEBUG_MAPPINGS") != NULL) print_mappings (fr);
+}
+
+
+/* PRINT_MAPPINGS -- Debug routine to print all mappings on a frame.
+ */
+print_mappings (fr)
+FrameBufPtr fr;
+{
+ MappingPtr mp;
+ register int i;
+
+ if (fr->nmaps == 0) printf ("No mappings for frame %d\n", fr->frameno);
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &fr->mapping[i];
+ printf ("Mapping %d of %d: id=%d frame=%d:\n",
+ i+1, fr->nmaps, mp->id, fr->frameno);
+ printf ("\t%s %f %f %d %d %d %d %d %d\n\t%s\n",
+ mp->region, mp->sx, mp->sy, mp->snx, mp->sny,
+ mp->dx, mp->dy, mp->dnx, mp->dny, mp->ref);
+ }
+}
+
+
+/* CHAN_READ -- Read exactly "n" bytes from a descriptor.
+ */
+
+static int
+chan_read (fd, vptr, nbytes)
+int fd;
+void *vptr;
+int nbytes;
+{
+ char *ptr = vptr;
+ int nread = 0, nleft = nbytes, nb = 0;
+
+ while (nleft > 0) {
+ if ( (nb = read(fd, ptr, nleft)) < 0) {
+ if (errno == EINTR)
+ nb = 0; /* and call read() again */
+ else
+ return(-1);
+ } else if (nb == 0)
+ break; /* EOF */
+ nleft -= nb;
+ ptr += nb;
+ nread += nb;
+ }
+ return (nread); /* return no. of bytes read */
+}
+
+
+/* CHAN_WRITE -- Write exactly "n" bytes to a descriptor.
+ */
+
+static int
+chan_write (fd, vptr, nbytes)
+int fd;
+void *vptr;
+int nbytes;
+{
+ char *ptr = vptr;
+ int nwritten = 0, nleft = nbytes, nb = 0;
+
+ while (nleft > 0) {
+ if ( (nb = write(fd, ptr, nleft)) <= 0) {
+ if (errno == EINTR)
+ nb = 0; /* and call write() again */
+ else
+ return(-1); /* error */
+ }
+ nleft -= nb;
+ ptr += nb;
+ nwritten += nb;
+ }
+ return (nwritten);
+}
diff --git a/vendor/x11iraf/ximtool/iis.h b/vendor/x11iraf/ximtool/iis.h
new file mode 100644
index 00000000..9689957e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/iis.h
@@ -0,0 +1,18 @@
+/* IIS.H -- Public definitions for the IIS protocol module.
+ */
+
+/* IIS data pixel values. */
+#define CMS_DATASTART 1
+#define CMS_DATAEND 200
+#define CMS_DATARANGE 200
+
+/* IIS color assignments. */
+#define CMS_CURSOR 201
+#define CMS_BACKGROUND 202
+#define CMS_FOREGROUND 203
+#define CMS_RED 204
+#define CMS_GREEN 205
+#define CMS_BLUE 206
+#define CMS_YELLOW 207
+#define CMS_CYAN 208
+#define CMS_MAGENTA 209
diff --git a/vendor/x11iraf/ximtool/irafio.c b/vendor/x11iraf/ximtool/irafio.c
new file mode 100644
index 00000000..e90ec507
--- /dev/null
+++ b/vendor/x11iraf/ximtool/irafio.c
@@ -0,0 +1,585 @@
+/*
+ * IRAF.C -- Routines to load and save simple IRAF files.
+ *
+ * ival = isIRAF (fname)
+ * loadIRAF (fname, pixels, w,h, r,g,b, ncolors, zsc, zr, z1, z2, nsample)
+ *
+ * isIRAF -- returns nonzero if the named file is a IRAF file.
+ * loadIRAF -- reads a IRAF file and returns the decoded pixel array and gray-
+ * scale 8 bit colormap. The caller is responsible for freeing
+ * the pixels buffer.
+ */
+
+
+#include <stdio.h>
+#include <math.h>
+#ifdef ULTRIX
+#include <sys/types.h>
+#endif
+#include <unistd.h>
+
+
+#define VERSION_1 1
+#define VERSION_2 2
+
+/* Image header parmeters. */
+#define SZ_V1PIXFILE 79
+#define SZ_V1HDR 2048
+#define SZ_V1TITLE 79
+
+/* Offsets into header (in sizeof(int) units) for various parameters */
+#define IM_V1PIXTYPE 4 /* datatype of the pixels */
+#define IM_V1NDIM 5 /* number of dimensions */
+#define IM_V1LEN 6 /* image dimensions */
+#define IM_V1PHYSLEN 13 /* physical length (as stored) */
+#define IM_V1PIXOFF 22 /* offset of the pixels */
+#define IM_V1PIXFILE 103 /* name of pixel storage file */
+#define IM_V1TITLE 183 /* image title string */
+
+/* Image header parmeters. */
+#define SZ_V2PIXFILE 255
+#define SZ_V2HDR 2046
+#define SZ_V2TITLE 732
+
+/* Offsets into header (in sizeof(int) units) for various parameters */
+#define IM_V2PIXTYPE 10 /* datatype of the pixels */
+#define IM_V2SWAPPED 14 /* number of dimensions */
+#define IM_V2NDIM 18 /* number of dimensions */
+#define IM_V2LEN 22 /* image dimensions */
+#define IM_V2PHYSLEN 50 /* physical length (as stored) */
+#define IM_V2PIXOFF 86 /* offset of the pixels */
+#define IM_V2PIXFILE 126 /* name of pixel storage file */
+#define IM_V2TITLE 638 /* image title string */
+
+/* IRAF dataype codes */
+#define TY_CHAR 2
+#define TY_SHORT 3
+#define TY_INT 4
+#define TY_LONG 5
+#define TY_REAL 6
+#define TY_DOUBLE 7
+#define TY_USHORT 11
+#define TY_UCHAR 12
+
+#define CONTRAST 0.25 /* zscaling parameters */
+#define NSAMPLE 1000
+
+
+#ifndef AIXV3
+#ifndef OSF1
+typedef unsigned char uchar;
+#endif
+#endif
+
+/* Function prototypes */
+#ifdef __STDC__
+
+#include <stddef.h>
+#include <stdlib.h>
+
+#else
+
+#endif
+
+char *index();
+char *getIRAFHdr();
+
+static char *irafReadPixels();
+static void irafGetPixfile ();
+
+
+/* +------------------+
+ * | Public routines. |
+ * +------------------+
+ */
+
+
+/* loadIRAF - Load a IRAF file.
+ */
+char *
+loadIRAF (fname, image, nx, ny, r,g,b, ncolors, zsc, zr, z1, z2, nsample)
+char *fname; /* input filename */
+uchar **image; /* output pixels */
+int *nx, *ny; /* dimensions */
+uchar *r, *g, *b; /* colormap */
+int *ncolors; /* number of colors */
+int zsc, zr; /* z-scaling flags */
+float *z1, *z2; /* zscale values */
+int nsample; /* nu,ber of sample pts */
+{
+ FILE *hdr;
+ int i, len, px, py, version, swapped;
+ int ptype, offset;
+ char temp[SZ_V1PIXFILE], *ip;
+ char path[SZ_V1PIXFILE];
+
+ /* Get the format version. */
+ version = isIRAF (fname);
+
+ if ((hdr = fopen (fname, "r")) == NULL)
+ return "cannot open image";
+
+ if (version == VERSION_1) {
+ int header_v1[SZ_V1HDR];
+ char pixfile_v1[SZ_V1PIXFILE];
+
+
+ /* Read in the image header. */
+ fread ((char *)header_v1, sizeof (char), SZ_V1HDR, hdr);
+
+ /* Get the interesting stuff. */
+ px = header_v1[IM_V1PHYSLEN];
+ py = header_v1[IM_V1PHYSLEN+1];
+ *nx = header_v1[IM_V1LEN];
+ *ny = header_v1[IM_V1LEN+1];
+ ptype = header_v1[IM_V1PIXTYPE];
+ offset = (header_v1[IM_V1PIXOFF] - 1) * sizeof(short);
+
+ /* Find the pixfile and see if it exists. */
+ strpak ((char *)&header_v1[IM_V1PIXFILE], pixfile_v1, SZ_V1PIXFILE);
+ irafGetPixfile (fname, pixfile_v1);
+ if (access (pixfile_v1, R_OK) != 0) {
+ fclose (hdr);
+ return "Cannot access pixel file";
+ }
+
+ /* Now read the data and return a pointer to the scaled pixels. */
+ irafReadPixels (pixfile_v1, 0, offset, ptype, image,
+ *nx, *ny, px, py, zsc, zr, z1, z2, nsample);
+
+ } else if (version == VERSION_2) {
+ char header_v2[SZ_V2HDR];
+ char pixfile_v2[SZ_V2PIXFILE];
+
+
+ /* Read in the image header. */
+ fread ((char *)header_v2, sizeof (char), SZ_V2HDR, hdr);
+
+ /* Get the interesting stuff. */
+ if (is_swapped())
+ bswap4 (&header_v2[IM_V2SWAPPED], 1, &swapped, 1, sizeof(int));
+ else
+ bcopy ((char *)&header_v2[IM_V2SWAPPED], &swapped, sizeof(int));
+
+ if (is_swapped()) {
+ bswap4 (&header_v2[IM_V2PHYSLEN], 1, &px, 1, sizeof(int));
+ bswap4 (&header_v2[IM_V2PHYSLEN+sizeof(int)], 1, &py, 1,
+ sizeof(int));
+ bswap4 (&header_v2[IM_V2LEN], 1, nx, 1, sizeof(int));
+ bswap4 (&header_v2[IM_V2LEN+sizeof(int)], 1, ny, 1,
+ sizeof(int));
+ bswap4 (&header_v2[IM_V2PIXTYPE], 1, &ptype, 1,
+ sizeof(int));
+ bswap4 (&header_v2[IM_V2PIXOFF], 1, &offset, 1,
+ sizeof(int));
+ } else {
+ bcopy ((char *)&header_v2[IM_V2PHYSLEN], &px, sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2PHYSLEN+sizeof(int)], &py,
+ sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2LEN], nx, sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2LEN+sizeof(int)], ny,
+ sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2PIXTYPE], &ptype, sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2PIXOFF], &offset, sizeof(int));
+ }
+ offset = (offset - 1) * sizeof(short);
+
+ /* Find the pixfile and see if it exists. */
+ bcopy ((char *)&header_v2[IM_V2PIXFILE], pixfile_v2, SZ_V2PIXFILE);
+ irafGetPixfile (fname, pixfile_v2);
+ if (access (pixfile_v2, R_OK) != 0) {
+ fclose (hdr);
+ return "Cannot access pixel file";
+ }
+
+ /* Now read the data and return a pointer to the scaled pixels.
+ */
+ irafReadPixels (pixfile_v2,
+ (swapped != is_swapped()),
+ offset, ptype, image, *nx, *ny, px, py,
+ zsc, zr, z1, z2, nsample);
+ }
+
+ /* Set the (grayscale) colormap. */
+ for (i=0; i<256; i++)
+ r[i] = g[i] = b[i] = i;
+ *ncolors = 256;
+
+ fclose (hdr); /* we're done with the header */
+ return NULL;
+}
+
+
+/* IsIRAF -- Test a file to see if it is a IRAF file.
+ */
+int
+isIRAF (fname)
+char *fname; /* input filename */
+{
+ register FILE *fp;
+ int value = 0;
+ char magic[24];
+
+ if (fp = fopen (fname, "r")) {
+ fread ((char *)magic, sizeof (char), 12, fp);
+ fclose (fp);
+
+ /* See if this is a valid OIF header file. */
+ if (strncmp(magic, "imhv2", 5) == 0)
+ value = 2;
+ else {
+ strpak (magic, magic, 5);
+ if (strncmp(magic, "imhdr", 5) == 0)
+ value = 1;
+ }
+ return value;
+ }
+
+ return value;
+}
+
+
+/* getIRAFHdr -- Get some set of header information for the GUI.
+ */
+
+char *
+getIRAFHdr (fname)
+char *fname;
+{
+ FILE *hdr;
+ char *error, *title, *line;
+ int i, bitpix, len, nx, ny, version, swapped, ptype;
+
+
+ /* Get the format version. */
+ version = isIRAF (fname);
+
+ if ((hdr = fopen (fname, "r")) == NULL)
+ return ((char *)NULL);
+
+ if (version == VERSION_1) {
+ int header_v1[SZ_V1HDR];
+ char pixfile_v1[SZ_V1PIXFILE];
+ char title_v1[SZ_V1TITLE];
+
+
+ /* Read in the image header. */
+ fread ((char *)header_v1, sizeof (char), SZ_V1HDR, hdr);
+
+ /* Get the interesting stuff. */
+ nx = header_v1[IM_V1LEN];
+ ny = header_v1[IM_V1LEN+1];
+ ptype = header_v1[IM_V1PIXTYPE];
+
+ bcopy ((char *)&header_v1[IM_V1TITLE], title_v1, SZ_V1TITLE);
+ strpak ((char *)&header_v1[IM_V1TITLE], title_v1, SZ_V1TITLE);
+
+ title = (char *) malloc (SZ_V1TITLE);
+ strncpy (title, title_v1, SZ_V1TITLE);
+
+ } else if (version == VERSION_2) {
+ char header_v2[SZ_V2HDR];
+ char pixfile_v2[SZ_V2PIXFILE];
+ char title_v2[SZ_V2TITLE];
+
+
+ /* Read in the image header. */
+ fread ((char *)header_v2, sizeof (char), SZ_V2HDR, hdr);
+
+ /* Get the interesting stuff. */
+ if (is_swapped())
+ bswap4 (&header_v2[IM_V2SWAPPED], 1, &swapped, 1, sizeof(int));
+ else
+ bcopy ((char *)&header_v2[IM_V2SWAPPED], &swapped, sizeof(int));
+
+ if (is_swapped()) {
+ bswap4 (&header_v2[IM_V2LEN], 1, &nx, 1, sizeof(int));
+ bswap4 (&header_v2[IM_V2LEN+sizeof(int)], 1, &ny, 1,
+ sizeof(int));
+ bswap4 (&header_v2[IM_V2PIXTYPE], 1, &ptype, 1,
+ sizeof(int));
+ } else {
+ bcopy ((char *)&header_v2[IM_V2LEN], &nx, sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2LEN+sizeof(int)], &ny,
+ sizeof(int));
+ bcopy ((char *)&header_v2[IM_V2PIXTYPE], &ptype, sizeof(int));
+ }
+
+ bcopy ((char *)&header_v2[IM_V2TITLE], title_v2, SZ_V2TITLE);
+ title = (char *) malloc (SZ_V2TITLE);
+ strncpy (title, title_v2, SZ_V2TITLE/2);
+ }
+ fclose (hdr); /* we're done with the header */
+
+
+ /* Convert the pixel type flag to a BITPIX value. */
+ switch (ptype) {
+ case 2: bitpix = 16; break; /* TY_CHAR */
+ case 3: bitpix = 16; break; /* TY_SHORT */
+ case 4: bitpix = 32; break; /* TY_INT */
+ case 5: bitpix = 64; break; /* TY_LONG */
+ case 6: bitpix = -32; break; /* TY_REAL */
+ case 7: bitpix = -64; break; /* TY_REAL */
+ default: bitpix = 0; break; /* Error */
+ }
+
+ /* Format the header string. */
+ line = (char *) malloc (80);
+
+ sprintf (line, "%-16.16s %3d %5dx%-5d %s",
+ fname, bitpix, nx, ny, title);
+
+ free ((char *)title);
+ return (line);
+}
+
+
+
+/* ------------------
+ * Private routines.
+ * ------------------
+ */
+
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+
+
+
+/* IRAFGETPIXFILE -- Get the pixelfile pathname.
+ */
+
+static void
+irafGetPixfile (fname, pfile)
+char *fname;
+char *pfile;
+{
+ char temp[SZ_V1PIXFILE], *ip;
+ int len;
+ char *index();
+
+ if (strncmp (pfile, "HDR$", 4) == 0) {
+ /* Handle the special case of a HDR$ pixfile path, prepend the
+ * current working directory name to the pixfile.
+ */
+ ip = pfile + 4;
+ (void) strncpy (temp, ip, SZ_V1PIXFILE);
+ (void) strncpy (pfile, fname, SZ_V1PIXFILE);
+
+ /* Find the end of the pathname. */
+ len = strlen (pfile);
+ while ( (len > 0) && (pfile[len-1] != '/') )
+ len--;
+
+ /* Add the image name. */
+ pfile[len] = '\0';
+ (void) strncat (pfile, temp, SZ_V1PIXFILE);
+
+ } else if (index (pfile, '!') != NULL) {
+ /* Strip out the leading node! prefix from the pixfile path. */
+ for (ip = pfile; *ip != '!' ; )
+ ip++;
+ (void) strcpy (pfile, ++ip);
+ }
+}
+
+
+/* IRAFREADPIXELS -- Read the pixel file and scale the data.
+ */
+
+static char *
+irafReadPixels (pixfile, swap, pix_offset, pixtype, image, nx,ny, px,py,
+ zsc, zr, z1, z2, nsample)
+char *pixfile; /* pixfile pathname */
+int swap; /* byte-swap pixels */
+int pix_offset; /* offset to pixel data */
+int pixtype; /* pixel types */
+uchar **image; /* output image pixels */
+int nx, ny; /* image dimensions */
+int px, py; /* physical storage dims */
+int zsc, zr; /* z-scaling flags */
+float *z1, *z2;
+int nsample;
+{
+ FILE *fd;
+ register int i, j, npix, stdline;
+ register float scale;
+ uchar *line;
+ unsigned short *uspix, *usline;
+ short *spix, *sline;
+ int *ipix, *iline;
+ float *fpix, *fline;
+ double *dpix, *dline;
+
+
+ /* Open the pixel file and seek to the beginning of the data. */
+ fd = fopen (pixfile, "r");
+ lseek (fileno(fd), (off_t)pix_offset, SEEK_SET);
+
+ /* Allocat the pointer for the pixels. */
+ npix = nx * ny;
+ *image = (uchar *) malloc (npix * sizeof (uchar));
+
+ stdline = (int) ((float)ny / sqrt(((double)npix / (double)nsample)) );
+
+ switch (pixtype) {
+ case TY_USHORT:
+ uspix = (unsigned short *) malloc (npix * sizeof (unsigned short));
+ usline = (unsigned short *) malloc (px * sizeof (unsigned short));
+ for (i=0; i<ny; i++) {
+ fread ((char *)usline, sizeof (unsigned short), px, fd);
+ for (j=0; j<nx; j++)
+ uspix[i*nx+j] = usline[j];
+ }
+ free ((unsigned short *)usline);
+
+ if (swap)
+ bswap2 ((char *)uspix, (char *)uspix, nx * ny * sizeof(short));
+
+ /* Do the zscale of the image. */
+ if (zsc)
+ zscale ((char *)uspix, nx, ny, 16, z1, z2,
+ CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((char *)uspix, npix, 16, z1, z2);
+
+ /* rescale and convert */
+ scale = (*z2 == *z1) ? 0. : 255. / (*z2 -*z1);
+ for (i = 0; i < npix; i++)
+ (*image)[i] = max (0, min (255,
+ (int)(scale * (float)((int)uspix[i] - *z1)) ));
+
+ free ((unsigned short *)uspix);
+ break;
+
+ case TY_SHORT:
+ spix = (short *) malloc (npix * sizeof (short));
+ sline = (short *) malloc (px * sizeof (short));
+ for (i=0; i<ny; i++) {
+ fread ((char *)sline, sizeof (short), px, fd);
+ for (j=0; j<nx; j++)
+ spix[i*nx+j] = sline[j];
+ }
+ free ((short *)sline);
+
+ if (swap)
+ bswap2 ((char *)spix, (char *)spix, nx * ny * sizeof(short));
+
+ /* Do the zscale of the image. */
+ if (zsc)
+ zscale ((char *)spix, nx, ny, 16, z1, z2,
+ CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((char *)spix, npix, 16, z1, z2);
+
+ /* rescale and convert */
+ scale = (*z2 == *z1) ? 0. : 255. / (*z2 -*z1);
+ for (i = 0; i < npix; i++)
+ (*image)[i] = max (0, min (255,
+ (int)(scale * (float)((int)spix[i] - *z1)) ));
+
+ free ((short *)spix);
+ break;
+
+ case TY_INT:
+ case TY_LONG:
+ ipix = (int *) malloc (npix * sizeof (int));
+ iline = (int *) malloc (px * sizeof (int));
+ for (i=0; i<ny; i++) {
+ fread ((char *)iline, sizeof (int), px, fd);
+ for (j=0; j<nx; j++)
+ ipix[i*nx+j] = iline[j];
+ }
+ free ((int *)iline);
+
+ if (swap)
+ bswap4((char *)ipix, 1, (char *)ipix, 1, nx * ny * sizeof(int));
+
+ /* Do the zscale of the image. */
+ if (zsc)
+ zscale ((char *)ipix, nx, ny, 32, z1, z2,
+ CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((char *)ipix, npix, 32, z1, z2);
+
+ /* rescale and convert */
+ scale = (*z2 == *z1) ? 0. : 255. / (*z2 -*z1);
+ for (i = 0; i < npix; i++)
+ (*image)[i] = max (0, min (255,
+ (int)(scale * (float)((int)ipix[i] - *z1)) ));
+
+ free ((int *)ipix);
+ break;
+
+ case TY_REAL:
+ fpix = (float *) malloc (npix * sizeof (float));
+ fline = (float *) malloc (px * sizeof (float));
+ for (i=0; i<ny; i++) {
+ fread ((char *)fline, sizeof (float), px, fd);
+ for (j=0; j<nx; j++)
+ fpix[i*nx+j] = fline[j];
+ }
+ free ((float *)fline);
+
+ if (swap)
+ bswap4((char *)fpix, 1, (char *)fpix, 1,
+ nx * ny * sizeof(float));
+
+ /* Do the zscale of the image. */
+ if (zsc)
+ zscale ((char *)fpix, nx, ny, -32, z1, z2,
+ CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((char *)fpix, npix, -32, z1, z2);
+
+ /* rescale and convert */
+ scale = (*z2 == *z1) ? 0. : 255. / (*z2 -*z1);
+ for (i = 0; i < npix; i++)
+ (*image)[i] = max (0, min (255,
+ (int)(scale * (float)(fpix[i] - *z1)) ));
+
+ free ((float *)fpix);
+ break;
+
+ case TY_DOUBLE:
+ dpix = (double *) malloc (npix * sizeof (double));
+ dline = (double *) malloc (px * sizeof (double));
+ for (i=0; i<ny; i++) {
+ fread ((char *)dline, sizeof (double), px, fd);
+ for (j=0; j<nx; j++)
+ dpix[i*nx+j] = dline[j];
+ }
+ free ((double *)dline);
+
+ if (swap)
+ bswap8((char *)dpix, 1, (char *)dpix, 1,
+ nx * ny * sizeof(double));
+
+ /* Do the zscale of the image. */
+ if (zsc)
+ zscale ((char *)dpix, nx, ny, -64, z1, z2,
+ CONTRAST, nsample, stdline);
+ else if (zr)
+ min_max ((char *)dpix, npix, -64, z1, z2);
+
+ /* rescale and convert */
+ scale = (*z2 == *z1) ? 0. : 255. / (*z2 -*z1);
+ for (i = 0; i < npix; i++)
+ (*image)[i] = max (0, min (255,
+ (int)(scale * (float)(dpix[i] - *z1)) ));
+
+ free ((double *)dpix);
+ break;
+
+ default:
+ fclose (fd);
+ return "invalid pixel type in image";
+ }
+
+ /* Flip the image so it's displayed correctly. */
+ flip (*image, nx, ny);
+
+ fclose (fd);
+ return NULL;
+}
diff --git a/vendor/x11iraf/ximtool/ism.c b/vendor/x11iraf/ximtool/ism.c
new file mode 100644
index 00000000..ec9d6b62
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ism.c
@@ -0,0 +1,706 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/errno.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/tcp.h>
+#include <fcntl.h>
+#include <sys/un.h>
+
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <Tcl/tcl.h>
+#include <Obm.h>
+#include <ObmW/Gterm.h>
+#include "ximtool.h"
+
+/*
+ * ISM.C -- IRAF Image Support Module (ISM) routines.
+ *
+ * xim_ismOpen (xim)
+ * xim_ismClose (xim)
+ *
+ * ism_connectClient (chan_port, source, id)
+ * ism_disconnectClient (chan)
+ * ism_io (chan, fd_addr, id_addr)
+ *
+ * ism_execute (xim, task)
+ * ism_evaluate (object, command)
+ *
+ * ism_openSocket (path)
+ * ism_read (fd, ptr, nbytes)
+ * ism_write (fd, ptr, nbytes)
+ */
+
+
+
+#define CALLBACK 0
+#define QUIT 1
+#define SEND 2
+#define READY 3
+
+
+#define MAXCONN 5
+#define MAX_TRY 5
+
+void xim_ismOpen(), xim_ismClose();
+IsmModule ismNameToPtr();
+
+static void ism_connectClient(), ism_disconnectClient(), ism_io();
+static int ism_read(), ism_write(), ism_type(), ism_parseSend();
+static int ism_openSocket();
+static IsmIoChanPtr ism_getChannel();
+static char *ism_parse();
+
+static int ism_debug = 0;
+extern int errno;
+
+
+/* WCS/Pixel ISM client callbacks.
+ */
+#define WCSPIX_CMD DEF_ISM_CMD
+
+void wcspix_connect(), wcspix_disconnect(), wcspix_command();
+
+
+/* Definitions for the supported ISM Modules. */
+int ism_nmodules = 0;
+
+ismModule ism_modules[] = {
+ {"wcspix", WCSPIX_CMD, wcspix_connect, wcspix_disconnect, wcspix_command, 0},
+};
+
+
+
+/* XIM_ISMOPEN -- Initialize the ISM protocol module and ready the module to
+ * accept client connections and begin processing client requests. This
+ * procedure only opens the ISM connection port, once clients are connected
+ * they negotiate for a separate channel and I/O resumes there. Once,
+ * connected, the client disconnects from this port and it is free to be used
+ * by another client. Unix sockets are used since we only want to connect to
+ * local processes and we want to use the uid for a unique address.
+ */
+void
+xim_ismOpen (xim)
+register XimDataPtr xim;
+{
+ register int s = 0;
+ register IsmIoChanPtr chan = &(xim->ism_chan);
+ char path[SZ_FNAME], *ism_path;
+
+
+ if (getenv("DEBUG_ISM") != NULL)
+ ism_debug = atoi(getenv("DEBUG_ISM"));
+
+ /* Setting the addr to "none" or the null string disables ISM
+ * socket support.
+ */
+ if (!xim->ism_addr[0] || strcmp(xim->ism_addr,"none")==0)
+ return ;
+
+ /* Get path to be used for the unix domain socket. */
+ if ((ism_path = getenv ("ISMDEV")) != NULL) {
+ char *dev = ism_path;
+
+ while (1) {
+ if (*dev == (char)NULL) {
+ dev = ism_path;
+ break;
+ } else if (*dev == ':') {
+ ++dev;
+ break;
+ }
+ dev++;
+ }
+ sprintf (path, dev, getuid());
+ } else
+ sprintf (path, xim->ism_addr, getuid());
+ unlink (path);
+
+ if ((s = ism_openSocket (path))) {
+ /* Fill in i/o channel descriptor. */
+ chan->xim = (XtPointer) xim;
+ chan->datain = s;
+ chan->dataout = s;
+ chan->connected = 0;
+ strncpy (chan->name, "", SZ_FNAME);
+ strncpy (chan->path, path, SZ_FNAME);
+
+ if (ism_debug) printf ("opened connection on '%s' %d\n", path, s);
+
+ /* Register connectClient callback. */
+ chan->id = xim_addInput (xim, s, ism_connectClient,
+ (XtPointer)chan);
+ }
+
+ ism_nmodules = XtNumber (ism_modules);
+
+ /* Set the default ISM path in the GUI. */
+ sprintf (path, "wcspix_cmd {%s}", DEF_ISM_CMD);
+ wcspix_message (xim, path);
+}
+
+
+/* XIM_ISMCLOSE -- Close down the ISM protocol module. Disconnect all connected
+ * clients and close the port.
+ */
+void
+xim_ismClose (xim)
+register XimDataPtr xim;
+{
+ register IsmIoChanPtr chan = &(xim->ism_chan);
+ register int i;
+
+ /* Send a 'quit' message to all connected clients. */
+ for (i=0, chan=NULL; i < XtNumber(xim->ism_client); i++) {
+ chan = &xim->ism_client[i];
+ if (chan->id) {
+ xim_removeInput (xim, chan->id);
+ chan->id = NULL;
+ }
+
+ if (chan->connected)
+ ism_write (chan->dataout, "quit", 4);
+
+ close (chan->datain);
+ }
+
+ /* Close the ISM request socket. */
+ chan = &(xim->ism_chan);
+ if (chan->id) {
+ xim_removeInput (xim, chan->id);
+ chan->id = NULL;
+ }
+ close (chan->datain);
+ unlink (chan->path);
+}
+
+
+/* ISMNAMETOPTR -- Utility procedure to lookup an ISM struct pointer given
+ * the ISM name.
+ */
+IsmModule
+ismNameToPtr (name)
+char *name;
+{
+ IsmModule ism;
+ register int i;
+
+ for (i=0; i < ism_nmodules; i++) {
+ ism = &ism_modules[i];
+ if (strcmp (name, ism->name) == 0)
+ return (ism);
+ }
+ return ((IsmModule)NULL);
+}
+
+
+/*******************************
+ * TRANSPORT LAYER PROCEDURES
+ ******************************/
+
+
+/* ISM_CONNECTCLIENT -- Called when a client has attempted a connection on
+ * a socket port. Accept the connection and set up a new i/o channel to
+ * communicate with the new client.
+ */
+static void
+ism_connectClient (chan, source, id)
+IsmIoChanPtr chan;
+int *source;
+XtPointer id;
+{
+ register XimDataPtr xim = (XimDataPtr) chan->xim;
+ register int s;
+
+ /* Accept connection. */
+ if ((s = accept ((int)*source, (struct sockaddr *)0, (int *)0)) < 0)
+ return;
+ /*if (fcntl (s, F_SETFL, O_RDWR|O_NDELAY) < 0) {*/
+ if (fcntl (s, F_SETFL, O_NDELAY) < 0) {
+ close (s);
+ return;
+ }
+
+ /* Fill in the ISM i/o channel descriptor. */
+ chan->datain = s;
+ chan->dataout = s;
+ chan->connected = 1;
+ chan->id = xim_addInput (xim, s, ism_io, (XtPointer)chan);
+}
+
+
+/* ISM_DISCONNECTCLIENT -- Called to close a client connection when EOF is
+ * seen on the input port. Close the connection and free the channel
+ * descriptor.
+ */
+static void
+ism_disconnectClient (chan)
+register IsmIoChanPtr chan;
+{
+ close (chan->datain);
+ if (chan->id) {
+ xim_removeInput (chan->xim, chan->id);
+ chan->connected = 0;
+ chan->id = NULL;
+ }
+}
+
+
+/* ISM_IO -- Xt file i/o callback procedure, called when there is input
+ * pending on the data stream to the ximtool client.
+ */
+static void
+ism_io (chan, fd_addr, id_addr)
+IsmIoChanPtr chan;
+int *fd_addr;
+XtInputId *id_addr;
+{
+ register XimDataPtr xim = (XimDataPtr) chan->xim;
+ register IsmModule ism;
+ IsmIoChanPtr new_chan;
+ int datain = *fd_addr;
+ int dataout = chan->dataout;
+ int s, n, ip, type, count = 0;
+ char name[SZ_FNAME], path[SZ_FNAME];
+ char message[2*SZ_ISMBUF+1];
+ char buf[SZ_ISMBUF+1];
+ char *text = NULL;
+ static int incomplete_msg = 0;
+ static int null_count = 0;
+ static long pkt=0, nread=0;
+
+
+ /* Read the message. */
+ bzero (buf, SZ_ISMBUF+1);
+ count = read (datain, buf, SZ_ISMBUF);
+ nread += count;
+ if (count > SZ_ISMBUF || count == 0) {
+ if (null_count++ > MAX_TRY) {
+ null_count = 0;
+ ism_disconnectClient (chan);
+ }
+ return;
+ }
+
+ /* Build up a complete message buffer including any incomplete
+ * text from the last read.
+ */
+ bzero (message, 2*SZ_ISMBUF+1);
+ if (chan->msgbuf[0]) {
+ n = strlen(chan->msgbuf);
+
+ memmove (message, chan->msgbuf, n);
+ memmove (&message[n], buf, count);
+ count += n;
+ } else {
+ bcopy (buf, message, count);
+ }
+ bzero (chan->msgbuf, SZ_ISMBUF);
+
+ if (ism_debug >= 2)
+ printf("\nism_io: nread=%d pkt=%d count=%d n=%d\n",nread,pkt++,count,n);
+
+
+ ip = 0;
+ incomplete_msg = 0;
+ while (text = ism_parse (message, &ip, &incomplete_msg, count)) {
+
+ if (incomplete_msg) {
+ /* Save the incomplete message to the buffer for later parsing.
+ */
+ if (ism_debug >= 2)
+ printf ("INCOMPLETE '%s' ip=%d len=%d\n", text,ip,strlen(text));
+ strcpy (chan->msgbuf, text);
+ break;
+ }
+
+
+ /* Messages
+ *
+ * CALLBACK - Negotiate a connection on another socket
+ * QUIT - client is shutting down and disconnecting
+ * SEND - send a message to another object
+ * READY - client is ready to begin processing
+ */
+ switch (ism_type (text)) {
+ case CALLBACK:
+
+ /* Get the requesting client's name. */
+ sscanf (text, "connect %s", name);
+
+ /* Get a new i/o channel. */
+ if (new_chan = ism_getChannel (xim)) {
+
+ /* Get path to be used for the unix domain socket. */
+ sprintf (path, DEF_ISM_TEMPLATE, getuid(), new_chan->id);
+ unlink (path);
+
+ if (ism_debug)
+ printf("ism_io: CONNECT '%s' on socket '%s'\n", name, path);
+
+ if ((s = ism_openSocket (path))) {
+ /* Fill in i/o channel descriptor. */
+ new_chan->xim = (XtPointer) xim;
+ new_chan->datain = s;
+ new_chan->dataout = s;
+ new_chan->connected = 0;
+ strncpy (new_chan->path, path, SZ_FNAME);
+ strncpy (new_chan->name, name, SZ_FNAME);
+
+ /* Register connectClient callback. */
+ new_chan->id = xim_addInput (xim, s, ism_connectClient,
+ (XtPointer)new_chan);
+ }
+ }
+
+ /* Create a new OBM object for the client, save the client name
+ * one the channel descriptor so we'll know who disconnected.
+ */
+ if (ismObjects (name) == 0)
+ obmNewObject (xim->obm, name, "Client", NULL, NULL, 0);
+ strcpy (chan->name, name);
+
+ /* Now tell the client to call us back on the new channel */
+ sprintf (buf, "connect %s", path);
+ if (ism_debug) printf ("ism_io: msg '%s'\n", buf);
+ ism_write (dataout, buf, strlen(buf));
+
+ /* Hang up the current connection. */
+ if (ism_debug) printf ("CALLBACK: disconnecting '%s'\n",chan->path);
+ ism_disconnectClient (chan);
+
+ break;
+
+ case READY:
+ if (ism_debug) printf ("READY: ready '%s'\n", chan->name);
+
+ /* Execute the ISM startup callback to initialize it.
+ */
+ for (n=0; n < XtNumber (ism_modules) ; n++) {
+ ism = &ism_modules[n];
+ if (strcmp (chan->name, ism->name) == 0) {
+ ism->connected = 1;
+ ism->chan = chan;
+ (*ism->startupCB) (xim, ism);
+ }
+ }
+ break;
+
+ case QUIT:
+ if (ism_debug)
+ printf ("QUIT: quit '%s' on '%s'\n", chan->name, chan->path);
+
+ /* Execute the ISM shutdown callback.
+ */
+ for (n=0; n < XtNumber (ism_modules) ; n++) {
+ ism = &ism_modules[n];
+ if (strcmp (chan->name, ism->name) == 0) {
+ (*ism->shutdownCB) (xim, ism);
+ ism->connected = 0;
+ ism->chan = (IsmIoChanPtr) NULL;
+ }
+ }
+ ism_disconnectClient (chan);
+
+ break;
+
+ case SEND:
+ /* Deliver the message to the named object.
+ */
+ ism_parseSend (text, name, buf);
+ if (ism_debug >= 3)
+ printf ("SEND: len=%d '%s'->'%.45s'\n", strlen(buf), name, buf);
+ xim_message (xim, name, buf);
+ break;
+
+ default:
+ fprintf (stderr, "ism_io: Unknown message '%s'\n", text);
+ break;
+ }
+ }
+}
+
+
+/* ISM_PARSE -- Parse the client message, returning the type as the function
+ * value.
+ */
+static char *
+ism_parse (msg, ip, incomplete, maxch)
+char *msg;
+int *ip;
+int *incomplete;
+int maxch;
+{
+ register int j, i = *ip, count=0;
+ char text[SZ_ISMBUF+1];
+
+ if (msg[*ip] == '\0') {
+/* *incomplete = 1;*/
+ return (NULL);
+ }
+
+ /* Zero the retrun buffer and skip any leading NULL input chars. */
+ bzero (text, SZ_ISMBUF+1);
+ while ((msg[i] == '\0') && i < maxch) i++;
+
+ /* Copy the message up to the terminating NULL. */
+ for (j=0; (msg[i] != '\0') && (i < maxch); )
+ text[j++] = msg[i++];
+ text[j] = msg[i];
+
+ /* If we hit the end of the input buffer without seeing a null
+ * then we're parsing a partial message.
+ */
+ *incomplete = (i < maxch ? 0 : 1);
+
+ /* update the position ptr */
+ while ((msg[i] == '\0') && i < maxch) i++;
+ *ip = i;
+
+ if (ism_debug >= 3 && text[0]) {
+ printf ("ism_parse: ip=%d msg=%d i=%d j=%d inc=%d\n",
+ *ip, msg[i], i, j, *incomplete);
+ }
+
+
+ return (text[0] ? text : NULL);
+}
+
+
+/* ISM_TYPE -- Determine the message type.
+ */
+static int
+ism_type (message)
+char *message;
+{
+ register char *ip;
+
+ for (ip=message; isspace(*ip); ip++) ; /* skip whitespace */
+
+ if (strncmp (ip, "connect", 7) == 0)
+ return (CALLBACK);
+ else if (strncmp (ip, "quit", 4) == 0)
+ return (QUIT);
+ else if (strncmp (ip, "ready", 4) == 0)
+ return (READY);
+ else if (strncmp (ip, "send", 4) == 0)
+ return (SEND);
+ else
+ return (ERR);
+}
+
+
+/* ISM_PARSESEND -- Parse the client SEND message.
+ */
+static int
+ism_parseSend (msg, object, text)
+char *msg;
+char *object;
+char *text;
+{
+ register int i=0, ip=4, count=0;
+
+ /* skip leading whitespace */
+ for ( ; isspace(msg[ip]) && msg[ip]; ip++) ;
+
+ /* Get the object name */
+ for (i=0; !isspace(msg[ip]) && msg[ip]; i++, ip++)
+ object[i] = msg[ip];
+ object[i] = '\0';
+
+ for ( ; msg[ip] != '{'; ip++) ; /* skip to open bracket */
+
+ /* Get the message text. Count brackets so we can pass
+ * Tcl code properly.
+ */
+ for (i=0, ip++; msg[ip]; i++, ip++) {
+ text[i] = msg[ip];
+ if (msg[ip] == '{')
+ count++;
+ else if (msg[ip] == '}') {
+ if (count <= 0) { ip++; break; }
+ count--;
+ }
+ }
+ text[i] = '\0';
+}
+
+
+/* ISM_EVALUATE -- Evaluate a command for the named object. Used by the
+ * clientEvaluate() method. Can also be used by the rest of ximtool to
+ * send messages to the ISM, which will be ignored if the client is not
+ * connected.
+ */
+ism_evaluate (xim, object, command)
+register XimDataPtr xim;
+char *object;
+char *command;
+{
+ register IsmIoChanPtr chan;
+ register int i=0;
+ register int len = strlen(command) + 1;
+ char *buf = XtCalloc (len+1, sizeof(char));
+
+ for (i=0; i < XtNumber (xim->ism_client); i++) {
+ chan = &xim->ism_client[i];
+ if (chan->connected && strcmp (chan->name, object) == 0) {
+ sprintf (buf, "%s\0", command);
+ len = strlen (buf) + 1; /* +1 to send the NULL */
+ ism_write (chan->dataout, buf, len);
+ if (ism_debug >= 2) printf("writing %d bytes: '%s'\n", len,buf);
+ break;
+ }
+ }
+
+ XtFree ((char *)buf);
+}
+
+
+/* ISM_MESSAGE -- Convenience wrapper for the evaluate procedure.
+ */
+ism_message (xim, object, command)
+register XimDataPtr xim;
+char *object, *command;
+{
+ ism_evaluate (xim, object, command);
+}
+
+
+/* ISM_OPENSOCKET -- Open a unix socket on the named path.
+ */
+static int
+ism_openSocket (path)
+char *path; /* path to the socket */
+{
+ int addrlen, s = 0, on = 1;
+ struct sockaddr_un sockaddr;
+
+ if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
+ goto err;
+
+ memset ((void *)&sockaddr, 0, sizeof(sockaddr));
+ sockaddr.sun_family = AF_UNIX;
+ strcpy (sockaddr.sun_path, path);
+ addrlen = sizeof(sockaddr) - sizeof(sockaddr.sun_path) + strlen(path);
+ if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&on,sizeof(on)) < 0)
+ goto err;
+/*
+ if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (char *)&on,sizeof(on)) < 0)
+ goto err;
+*/
+ if (bind (s, (struct sockaddr *)&sockaddr, addrlen) < 0)
+ goto err;
+
+ if (listen (s, MAXCONN) < 0) {
+err: fprintf (stderr, "ximtool: can't open ISM socket on %s, errno=%d\n",
+ path, errno);
+ if (s)
+ close (s);
+ return (0);
+ }
+
+ return (s);
+}
+
+
+
+/* ISM_GETCHANNEL --- Get an ISM i/o channel descriptor.
+ */
+static IsmIoChanPtr
+ism_getChannel (xim)
+register XimDataPtr xim;
+{
+ register IsmIoChanPtr chan;
+ register int i;
+
+ for (i=0; i < XtNumber(xim->ism_client); i++) {
+ if (!xim->ism_client[i].connected) {
+ xim->ism_client[i].id = (XtPointer) i;
+ return (&xim->ism_client[i]);
+ }
+ }
+
+ return (NULL);
+}
+
+
+/* ISMOBJECTS -- Add the named client to the list of known objects, or
+ * return zero if this is a new object. We keep a list so we don't keep
+ * creating the same object in the OBM each time a client connects.
+ */
+ismObjects (name)
+char *name;
+{
+ static char objects[SZ_LINE] = "";
+
+ if (strstr (objects, name) == NULL) {
+ strcat (objects, name);
+ strcat (objects, "|\0");
+ return (0);
+ } else
+ return (1);
+}
+
+
+/* ISM_READ -- Read exactly "n" bytes from a descriptor.
+ */
+
+static int
+ism_read (fd, vptr, nbytes)
+int fd;
+void *vptr;
+int nbytes;
+{
+ char *ptr = vptr;
+ int nread = 0, nleft = nbytes, nb = 0;
+
+ while (nleft > 0) {
+ if ( (nb = read(fd, ptr, nleft)) < 0) {
+ if (errno == EINTR)
+ nb = 0; /* and call read() again */
+ else
+ return(-1);
+ } else if (nb == 0)
+ break; /* EOF */
+ nleft -= nb;
+ ptr += nb;
+ nread += nb;
+ }
+
+ return (nread); /* return no. of bytes read */
+}
+
+
+/* ISM_WRITE -- Write exactly "n" bytes to a descriptor.
+ */
+
+static int
+ism_write (fd, vptr, nbytes)
+int fd;
+void *vptr;
+int nbytes;
+{
+ char *ptr = vptr;
+ int nwritten = 0, nleft = nbytes, nb = 0;
+
+ /* Send the bytecount first.
+ if ((nb = write (fd, &nleft, sizeof (int))) <= 0)
+ return (-1);
+ */
+
+ /* Now send the message. */
+ while (nleft > 0) {
+ if ( (nb = write(fd, ptr, nleft)) <= 0) {
+ if (errno == EINTR)
+ nb = 0; /* and call write() again */
+ else
+ return (-1); /* error */
+ }
+ nleft -= nb;
+ ptr += nb;
+ nwritten += nb;
+ }
+
+ return (nwritten);
+}
diff --git a/vendor/x11iraf/ximtool/ism_wcspix.c b/vendor/x11iraf/ximtool/ism_wcspix.c
new file mode 100644
index 00000000..5c8600ea
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ism_wcspix.c
@@ -0,0 +1,140 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/errno.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <Tcl/tcl.h>
+#include "ximtool.h"
+
+/*
+ * ISM_WCSPIX.C -- Client callbacks for the WCS/Pixel value ISM.
+ *
+ * wcspix_connect (xim)
+ * wcspix_disconnect (xim)
+ * wcspix_command (xim, argc, argv)
+ */
+
+
+static int wcspix_debug = 0;
+extern int errno;
+
+
+/* WCS/Pixel ISM client callbacks. */
+void wcspix_connect(), wcspix_disconnect(), wcspix_command(), wcspix_message();
+
+
+
+/* WCSPIX_CONNECT -- Called when the WCSPIX ISM first connects to the server.
+ * Used to update with the current cache of mappings as well as initialize
+ * the GUI that we are alive.
+ */
+void
+wcspix_connect (xim, ism)
+register XimDataPtr xim;
+register IsmModule ism;
+
+{
+ MappingPtr mp;
+ FrameBufPtr fr;
+ register int i, j;
+ char buf[SZ_LINE];
+
+ if (wcspix_debug) printf ("ConnectCB for '%s' ....\n", ism->name);
+
+ wcspix_message (xim, "startup");
+
+ /* Update the ISM with the current set of mappings. */
+ for (j=0; j < xim->nframes; j++) {
+ fr = &xim->frames[j];
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &fr->mapping[i];
+ sprintf (buf, "cache %s %d", mp->ref, mp->id);
+ ism_message (xim, ism->name, buf);
+ sprintf (buf, "wcslist %d", mp->id);
+ ism_message (xim, ism->name, buf);
+
+ /* Send the object ref to the GUI. */
+ sprintf (buf, "cache %s %d %d", mp->ref, fr->frameno, mp->id);
+ wcspix_message (xim, buf);
+
+ if (wcspix_debug) printf ("connectCB: '%s'\n", buf);
+ }
+ }
+}
+
+
+/* WCSPIX_DISCONNECT -- Called to shut down the WCSPIX ISM. Send a "quit"
+ * command to the module and notify the GUI.
+ */
+void
+wcspix_disconnect (xim, ism)
+register XimDataPtr xim;
+register IsmModule ism;
+{
+ MappingPtr mp;
+ FrameBufPtr fr;
+ register int i, j;
+ char buf[SZ_LINE];
+
+ if (wcspix_debug) printf ("DisconnectCB for '%s' ....\n", ism->name);
+
+ /* Uncache all the mapped images in the GUI. */
+ for (j=0; j < xim->nframes; j++) {
+ fr = &xim->frames[j];
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &fr->mapping[i];
+ sprintf (buf, "uncache %d", mp->id);
+ wcspix_message (xim, buf);
+ }
+ }
+
+ /* If we got here from a GUI command send a quit command to the
+ * ISM, if the ISM shut down itself it will already be disconnected
+ * so check to see if we're still alive.
+ */
+ if (ism->connected)
+ ism_message (xim, ism->name, "quit");
+
+ /* Notify the GUI that we're done. */
+ wcspix_message (xim, "shutdown");
+}
+
+
+/* WCSPIX_COMMAND -- Handle all WCSPIX ISM specific commands.
+ *
+ * set wcspix_cmd <path>
+ * pixtab_size <size>
+ *
+ */
+void
+wcspix_command (xim, ism, argc, argv)
+register XimDataPtr xim;
+register IsmModule ism;
+int argc;
+char **argv;
+{
+ register int i;
+ char cmd[SZ_FNAME];
+
+ if (wcspix_debug) printf ("CommandCB....\n");
+
+ for (i=0; i < argc; i = i + 1) {
+ printf ("ism_cmd: %d '%s'\n", i, argv[i]);
+ }
+}
+
+
+/* WCSPIX_MESSAGE -- Send a message to the user interface ism_msg callback,
+ * but format it so it's delivered to the WCSPIX callback procedures.
+ */
+void
+wcspix_message (xim, message)
+register XimDataPtr xim;
+char *message;
+{
+ char msgbuf[SZ_MSGBUF];
+
+ sprintf (msgbuf, "setValue { deliver wcspix { %s } }", message);
+ ObmDeliverMsg (xim->obm, "ism_msg", msgbuf);
+}
+
diff --git a/vendor/x11iraf/ximtool/load.c b/vendor/x11iraf/ximtool/load.c
new file mode 100644
index 00000000..665f6cfb
--- /dev/null
+++ b/vendor/x11iraf/ximtool/load.c
@@ -0,0 +1,925 @@
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+
+#include "ximtool.h"
+
+/* LOAD.C -- Package for browsing directories and loading raster files into
+ * the display.
+ *
+ * xim_initLoad (xim)
+ * xim_loadClose (xim)
+ *
+ * xim_dirRescan (xim)
+ * xim_scanHeaders (xim)
+ * status = xim_loadFile (xim, fname, frame)
+ *
+ * xim_dirRescan scans the current directory and sends the file list to
+ * the GUI "filelist" parameter. xim_loadFile loads the named raster file
+ * into the current display frame.
+ */
+
+#define True 1
+#define False 0
+
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+
+static char **listFiles();
+static int fileCompare(), globExpression(), fileType(), ucharCompare();
+static void amapc(), sortGraymap(), loadstat(), strsort();
+
+extern char *getcwd(), *getenv();
+
+static int debug = False;
+
+
+/* XIM_INITLOAD -- Initialize the file load structure.
+ */
+void
+xim_initLoad (xim)
+register XimDataPtr xim;
+{
+ register fileLoadPtr flp;
+ char buf[SZ_LINE];
+
+ xim->flp = flp = (fileLoadPtr) calloc (1, sizeof (fileLoad));
+ if (!flp)
+ return;
+
+ strcpy (flp->homedir, getenv("HOME"));
+ if (getcwd (flp->curdir, SZ_FNAME) == NULL)
+ strcpy (flp->curdir, flp->homedir);
+ strcpy (flp->pattern, "*.fits,*.imh");
+ flp->gray = 0;
+ flp->zscale = 1;
+ flp->zrange = 1;
+ flp->z1 = 0.0;
+ flp->z2 = 0.0;
+ flp->nsample = 1000;
+
+ /* Update the GUI with the initial state. */
+ sprintf (buf, "curdir %s\0", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "pattern %s\0", flp->pattern);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "gray %d\0", flp->gray);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "zscale %d\0", flp->zscale);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "zrange %d\0", flp->zrange);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "z1 %g\0", flp->z1);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "z2 %g\0", flp->z2);
+ xim_message (xim, "loadOptions", buf);
+ sprintf (buf, "nsample %d\0", flp->nsample);
+ xim_message (xim, "loadOptions", buf);
+}
+
+
+/* XIM_LOADCLOSE -- Close the load struct.
+ */
+void
+xim_loadClose (xim)
+XimDataPtr xim;
+{
+ register fileLoadPtr flp = xim->flp;
+ register int i;
+
+ if (flp->FileList)
+ for (i=0; i < flp->nfiles; i++)
+ free (flp->FileList[i]);
+
+ free ((fileLoadPtr) flp);
+}
+
+
+/* XIM_LOADFILE -- Try loading a disk raster file into a display frame and
+ * colormap.
+ */
+int
+xim_loadFile (xim, fname, frame)
+register XimDataPtr xim;
+char *fname;
+int frame;
+{
+ register int i, new_config=-1;
+ register char *ip;
+ register fileLoadPtr flp = xim->flp;
+ register FrameBufPtr fr;
+ register MappingPtr mp;
+ register FbConfigPtr cf;
+
+ float z1=0.0, z2=0.0;
+ int status = 0, has_private_cmap = 0, pixtype, w, h, ncolors;
+ int zscale = flp->zscale, zrange = flp->zrange, nsamp=flp->nsample;
+ unsigned char *pix=NULL, r[256], g[256], b[256];
+ char *mapname, *err, buf[SZ_LINE];
+
+ extern char *loadSunRas();
+ extern char *loadFITS();
+ extern char *loadGIF();
+ extern char *loadIRAF();
+ extern int objid[];
+
+ /* Make sure the file exists. */
+ if (access(fname, R_OK) != 0) {
+ sprintf (buf, "warning %s\0", "Error: File not found.");
+ xim_message (xim, "loadOptions", buf);
+ return (-1);
+ }
+
+ switch (fileType(fname)) {
+ case XIM_RAS: /* Sun rasterfile. */
+ loadstat (xim, "Reading rasterfile...");
+ if (err = loadSunRas(fname,&pix,&pixtype,&w,&h,r,g,b,&ncolors,
+ flp->gray)) {
+ pix = NULL;
+ xim_alert (xim, err, NULL, NULL);
+ }
+ if (pixtype > 8) {
+ xim_alert (xim, "Error: 24 bit Sun rasterfile.", NULL, NULL);
+ free ((char *) pix);
+ pix = NULL;
+ }
+ has_private_cmap = 1;
+ break;
+
+ case XIM_FITS: /* FITS file. */
+ loadstat (xim, "Reading FITS file...");
+ z1 = flp->z1;
+ z2 = flp->z2;
+ if (err = loadFITS(fname, &pix, &w, &h, r,g,b, &ncolors,
+ zscale, zrange, &z1, &z2, flp->nsample)){
+ pix = NULL;
+ xim_alert (xim, err, NULL, NULL);
+ }
+ has_private_cmap = 0;
+ break;
+
+ case XIM_GIF: /* GIF image */
+ loadstat (xim, "Reading GIF fle...");
+ if (err = loadGIF(fname, &pix, &w,&h, r,g,b, &ncolors, flp->gray)) {
+ pix = NULL;
+ xim_alert (xim, err, NULL, NULL);
+ }
+ has_private_cmap = 1;
+ break;
+
+ case XIM_OIF: /* OIF image */
+ loadstat (xim, "Reading IRAF image...");
+ z1 = flp->z1;
+ z2 = flp->z2;
+ if (err = loadIRAF(fname, &pix, &w, &h, r,g,b, &ncolors,
+ zscale, zrange, &z1, &z2, flp->nsample)){
+ pix = NULL;
+ xim_alert (xim, err, NULL, NULL);
+ }
+ has_private_cmap = 0;
+ break;
+
+ case XIM_TIFF: /* TIFF image */
+ case XIM_JPEG: /* JPEG image */
+ case XIM_X11: /* X11 image */
+ case XIM_RAW: /* RAW binary image */
+ /* fall through */
+
+ default:
+ /* We don't know what this is so give up and notify the GUI. */
+ sprintf (buf, "warning %s\0", "Error: Unknown raster file type.");
+ xim_message (xim, "loadOptions", buf);
+ return (-1);
+ }
+
+ if (debug) {
+ fprintf (stderr,
+ "Load: pix=%d w=%d h=%d xnc=%d nc=%d pcm=%d z1=%g z2=%g\n",
+ pix, w, h, xim->ncolors, ncolors, has_private_cmap, z1, z2);
+ fflush (stderr);
+ }
+
+ /* If the new image has more colors that we're allowed to display,
+ * quantize it to the available number before display.
+ */
+ if (ncolors > xim->ncolors) {
+ if ( has_private_cmap && ! flp->gray) {
+ /* Quantize the colormap to the number of display colors. */
+ loadstat (xim, "Quantizing colors...");
+ ppmquant (pix, r, g, b, w, h, ncolors, xim->ncolors);
+ }
+
+ if (! has_private_cmap || (has_private_cmap && flp->gray)) {
+ /* It's a grayscale map, so sort the colors into something
+ * that can be adjusted when displayed.
+ */
+ loadstat (xim, "Sorting colormap...");
+ sortGraymap (pix, pix, w*h, r, g, b, xim->ncolors);
+
+ /* Force a grayscale colormap. */
+ for (i=0; i<xim->ncolors; i++)
+ r[i] = g[i] = b[i] = (float)i / (float)(xim->ncolors) * 255;
+ }
+ ncolors = xim->ncolors;
+ xim->psim->cmap.ncolors = xim->ncolors;
+ }
+
+ /* Use filename as the colormap name. */
+ for (ip=mapname=fname; *ip; ip++)
+ if (*ip == '/')
+ mapname = ip + 1;
+
+ /* Now check the dimensions against the current frame buffer config-
+ * uration. Change the fbconfig if needed.
+ */
+ if (w > xim->width || h > xim->height) {
+
+ register int width, height, tmin = 100000, edges;
+
+ loadstat (xim, "Initializing frame buffer...");
+
+ /* First look for a frame buffer at least as large as the image. */
+ for (i=0; i < MAX_FBCONFIG; i++) {
+ width = xim->fb_config[i].width;
+ height = xim->fb_config[i].height;
+ if (width == w && height == h) {
+ /* Get an exact match first. */
+ new_config = i + 1;
+ break;
+ } else if (width >= w && height >= h) {
+ /* Look for match with smallest padding. */
+ edges = width - w + height - h;
+ if (edges < tmin) {
+ tmin = edges;
+ new_config = i + 1;
+ }
+ }
+ }
+
+ if (debug) {
+ fprintf (stderr, "Load: new_config=%d w=%d h=%d\n", new_config,
+ xim->fb_config[new_config-1].width,
+ xim->fb_config[new_config-1].height);
+ }
+
+
+ /* We didn't find a large enough buffer, so create a new one with
+ * the right size as one of the last available configs. This will
+ * overwrite anything there but they shouldn't normally be used
+ * and we'll use the frame as an offset for each display frame.
+ */
+ if (new_config < 0) {
+ new_config = MAX_FBCONFIG - frame + 1;
+ cf = &xim->fb_config[new_config-1];
+ cf->nframes = xim->nframes;
+ cf->width = w;
+ cf->height = h;
+ } else {
+ cf = &xim->fb_config[new_config-1];
+ cf->nframes = (cf->nframes < frame ? frame : cf->nframes);
+ cf->nframes = (cf->nframes < xim->nframes ? xim->nframes :
+ cf->nframes);
+ xim->fb_configno = new_config;
+ }
+
+ /* Change the frame buffer configuration. */
+ sprintf (buf, "%d %d %d\0", cf->width, cf->height, 8);
+ xim_message (xim, "frameSize", buf);
+
+ /* Create the frame. */
+ for (i=1; i <= cf->nframes; i++)
+ xim_initFrame (xim, i, cf->nframes, cf, xim->memModel);
+
+ xim->width = cf->width;
+ xim->height = cf->height;
+ GtSetLogRes (xim->gt, cf->width, cf->height);
+
+ /* Fit the frame. */
+ xim_message (xim, "frameFit", "init");
+ }
+
+ /* Take the pixels and colormap and write them to the display. */
+ if ((pix == NULL) || (xim_writeDisplay (xim,
+ frame, mapname, pix, w, h, r, g, b, ncolors) < 0))
+ status = -1;
+
+ /* Reset the image title string. */
+ loadstat (xim, "");
+ xim_message (xim, "frameTitle", mapname);
+ eps_setLabel (xim->psim, mapname);
+
+
+ /* Notify the GUI that we are capable of using the ISM.
+ */
+ wcspix_message (xim, "capable");
+
+
+ /* ISM: Uncache all mappings associated with this frame. */
+ fr = &xim->frames[frame-1];
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &fr->mapping[i];
+ if (mp->id) {
+ sprintf (buf, "uncache %d", mp->id);
+ ism_message (xim, "wcspix", buf);
+ wcspix_message (xim, buf);
+ mp->id = 0;
+ }
+ }
+
+ /* Now save the mapping information */
+ fr->nmaps = 0;
+ mp = &(fr->mapping[fr->nmaps]);
+ objid[fr->frameno-1] = 0;
+
+ mp->id = mp->regid = (++objid[fr->frameno-1]) + (fr->frameno * 100);
+ sprintf (mp->region, "%s", "image");
+ if (fname[0] != '/' && getcwd (buf, (size_t) SZ_LINE))
+ sprintf (mp->ref, "%s/%s", buf, fname);
+ else
+ sprintf (mp->ref, "%s", fname);
+
+ mp->sx = 1.0;
+ mp->sy = 1.0;
+ mp->snx = w;
+ mp->sny = h;
+ mp->dx = (float) (xim->width - w) / 2.0;
+ mp->dy = (float) (xim->height - h) / 2.0;
+ mp->dnx = w;
+ mp->dny = h;
+
+ /* Load a WCS for the frame. */
+ mp->ctran.z1 = fr->ctran.z1 = z1;
+ mp->ctran.z2 = fr->ctran.z2 = z2;
+ mp->ctran.zt = fr->ctran.zt = W_LINEAR;
+ mp->ctran.a = fr->ctran.a = 1.;
+ mp->ctran.b = fr->ctran.b = 0.;
+ mp->ctran.c = fr->ctran.c = 0.;
+ mp->ctran.d = fr->ctran.d = -1.;
+ mp->ctran.tx = fr->ctran.tx = ((float)w/2.)-((float)xim->width/2.) + 1;
+ mp->ctran.ty = fr->ctran.ty = ((float)xim->height/2.)+((float)h / 2.);
+ mp->ctran.valid = fr->ctran.valid = 1;
+ strcpy (fr->ctran.imtitle, mapname);
+ strcpy (mp->ctran.imtitle, mapname);
+
+
+ /* Tell the ISM to cache this mapping if we have an object ref. */
+ sprintf (buf, "cache %s %d", mp->ref, mp->id);
+ ism_message (xim, "wcspix", buf);
+ sprintf (buf, "wcslist %d", mp->id);
+ ism_message (xim, "wcspix", buf);
+
+ /* Send the object ref to the GUI. */
+ sprintf (buf, "cache %s %d %d", mp->ref, fr->frameno, mp->id);
+ wcspix_message (xim, buf);
+ sprintf (buf, "orient %d %d 1 1", mp->id, fr->frameno);
+ wcspix_message (xim, buf);
+
+ fr->nmaps++; /* update number of mappings */
+
+
+ /* DEBUG prints. */
+ if (debug || getenv("DEBUG_MAPPINGS") != NULL) {
+ fprintf (stderr,"%s -\n%g %g %g %g %g %g %g %g %d\n", mapname,
+ fr->ctran.a, fr->ctran.b, fr->ctran.c, fr->ctran.d,
+ fr->ctran.tx, fr->ctran.ty, fr->ctran.z1, fr->ctran.z2,
+ fr->ctran.zt);
+ fprintf (stderr,"%s %d\n%g %g %d %d %d %d %d %d\n",
+ mp->region, mp->regid, mp->sx, mp->sy, mp->snx, mp->sny,
+ mp->dx, mp->dy, mp->dnx, mp->dny);
+
+ print_mappings (fr);
+ }
+
+
+ if (pix != NULL)
+ free ((char *) pix);
+ return (status);
+}
+
+
+/* XIM_DIRRESCAN -- Rescan the current directory and send the resulting file
+ * list to the GUI.
+ */
+void
+xim_dirRescan (xim)
+register XimDataPtr xim;
+{
+ register fileLoadPtr flp = xim->flp;
+ register char *ip, *op, *flist;
+ register int i;
+
+ if (flp->FileList) {
+ for (i=0; i < flp->nfiles; i++)
+ free (flp->FileList[i]);
+ }
+
+ flp->FileList = listFiles (flp->curdir, flp->pattern, &flp->nfiles, 0);
+
+ /* Turn the directory listing into something the GUI wants. */
+ if (!(flist = (char *) malloc (SZ_NAME * flp->nfiles)))
+ return;
+
+ strcpy (flist, "setValue {");
+ for (i=0, op = flist+10; i < flp->nfiles; i++) {
+ *op++ = '"';
+ for (ip = flp->FileList[i]; *op = *ip++; op++)
+ ;
+ *op++ = '"';
+ *op++ = '\n';
+ }
+ *op++ = '}';
+ *op = '\0';
+
+ /* Send the file list to the GUI. */
+ ObmDeliverMsg (xim->obm, "filelist", flist);
+ free ((char *)flist);
+}
+
+
+/* XIM_SCANHEADERS --
+ */
+void
+xim_scanHeaders (xim)
+register XimDataPtr xim;
+{
+ register fileLoadPtr flp = xim->flp;
+ register char *ip, *op;
+ register char *entry = (char *)NULL, *flist = (char *)NULL;
+ register int i;
+ extern char *getFITSHdr(), *getIRAFHdr();
+ extern char *getSunRasHdr(), *getGIFHdr();
+
+ if (flp->FileList) {
+ for (i=0; i < flp->nfiles; i++)
+ free (flp->FileList[i]);
+ }
+
+ flp->FileList = listFiles (flp->curdir, flp->pattern, &flp->nfiles, 1);
+
+ /* Turn the directory listing into something the GUI wants. */
+ if (!(flist = (char *) malloc (SZ_NAME * flp->nfiles)))
+ return;
+
+ strcpy (flist, "setValue {");
+ op = flist+10;
+ for (i=0; i < flp->nfiles; i++) {
+
+ switch (fileType (flp->FileList[i])) {
+ case XIM_FITS: entry = getFITSHdr (flp->FileList[i]); break;
+ case XIM_OIF: entry = getIRAFHdr (flp->FileList[i]); break;
+ case XIM_GIF: entry = getGIFHdr (flp->FileList[i]); break;
+ case XIM_RAS: entry = getSunRasHdr (flp->FileList[i]); break;
+ }
+
+ if (entry) {
+ /* Copy the entry to the list. */
+ *op++ = '"';
+ for (ip = entry; *op = *ip++; op++)
+ ;
+ *op++ = '"';
+ *op++ = '\n';
+
+ free ((char *) entry);
+ entry = NULL;
+ }
+ }
+ *op++ = '}';
+ *op = '\0';
+
+ /* Send the file list to the GUI. */
+ ObmDeliverMsg (xim->obm, "filelist", flist);
+ free ((char *) flist);
+}
+
+
+
+/* ------------------
+ * Internal routines.
+ * ------------------
+ */
+
+/* fileType -- Given a filename return what type of file it is.
+ */
+static int
+fileType (fname)
+char *fname;
+{
+ int format;
+
+ if (isFITS (fname))
+ format = XIM_FITS;
+ else if (isIRAF (fname))
+ format = XIM_OIF;
+ else if (isSunRas (fname))
+ format = XIM_RAS;
+ else if (isGIF (fname))
+ format = XIM_GIF;
+ else {
+ /*
+ * FILL IN WITH REMAINDER OF FORMATS LATER.
+ */
+ format = -1;
+ }
+
+ return (format);
+}
+
+
+/* listFiles -- reads the directory specified and returns a list of
+ * filenames matching the given pattern contained in the directory
+ * sorted in ascending alphabetic order.
+ *
+ * Adapted from the ImageMagick package originally developed by John Christy.
+ */
+static char **
+listFiles (directory, pattern, number_entries, files_only)
+char *directory; /* directory to be listed */
+char *pattern; /* pattern to be matched */
+int *number_entries; /* number of filenames in the list */
+int files_only; /* list only files, not dirs */
+{
+ char **filelist, *ip;
+ char patterns[64][20];
+ DIR *current_directory;
+ struct dirent *entry;
+ struct stat file_info;
+ unsigned int max_entries;
+ register int i=0, npatterns = 0;
+ int status, pattern_matches;
+
+ /* Open directory. */
+ *number_entries = 0;
+ status = chdir (directory);
+ if (status != 0)
+ return((char **) NULL);
+ (void) getcwd (directory, SZ_FNAME);
+ current_directory = opendir (directory);
+ if (current_directory == (DIR * ) NULL)
+ return((char **) NULL);
+
+ /* Allocate filelist. */
+ max_entries = 4096;
+ filelist = (char **) malloc (max_entries * sizeof(char *));
+ if (filelist == (char **) NULL) {
+ (void) closedir (current_directory);
+ return((char **) NULL);
+ }
+
+ /* Split the pattern list. */
+ if (pattern) {
+ for (ip=pattern, i=0; *ip; ip++) {
+ if (*ip == ',') {
+ patterns[npatterns][i] = '\0';
+ npatterns++;
+ i = 0;
+ } else
+ patterns[npatterns][i++] = *ip;
+ }
+ patterns[npatterns][i] = '\0';
+ npatterns++;
+ } else
+ npatterns = 0;
+
+
+ /* Save the current and change to the new directory. */
+ (void) chdir (directory);
+ entry = readdir (current_directory);
+ while (entry != (struct dirent *) NULL) {
+ if (*entry->d_name == '.') {
+ entry = readdir (current_directory);
+ continue;
+ }
+ (void) stat (entry->d_name, &file_info);
+
+ /* Directory always matches. */
+ pattern_matches = 0;
+ if ((S_ISDIR(file_info.st_mode) && !files_only)) {
+ pattern_matches = 1;
+ } else {
+ /* Otherwise, check the filename against the pattern list. */
+ for (i=0; i < npatterns; i++) {
+ if (globExpression(entry->d_name, &patterns[i])) {
+ pattern_matches = 1;
+ break;
+ }
+ }
+ }
+
+ if (pattern_matches) {
+
+ /* Reallocate the list if necessary. */
+ if (*number_entries >= max_entries) {
+ max_entries <<= 1;
+ filelist = (char **)
+ realloc((char *)filelist, max_entries * sizeof(char *));
+ if (filelist == (char **) NULL) {
+ (void) closedir(current_directory);
+ return((char **) NULL);
+ }
+ }
+ filelist[*number_entries] =
+ (char *) malloc (strlen(entry->d_name) + 2);
+ if (filelist[*number_entries] == (char *) NULL)
+ break;
+ (void) strcpy (filelist[*number_entries], entry->d_name);
+ if (S_ISDIR(file_info.st_mode))
+ strcat (filelist[*number_entries],"/");
+ (*number_entries)++;
+ }
+ entry = readdir (current_directory);
+ }
+ (void) closedir (current_directory);
+
+ /* Sort filelist in ascending order. */
+ (void) strsort(filelist, *number_entries);
+
+ return (filelist);
+}
+
+
+/* fileCompare -- Comparison routine needed by quicksort for listFiles.
+ * Adapted from the ImageMagick package originally developed by John Christy.
+ */
+static int
+fileCompare (x, y)
+void *x, *y;
+{
+ register char *p, *q;
+
+ p = (char *) * ((char **) x);
+ q = (char *) * ((char **) y);
+ while ((*p != '\0') && (*q != '\0') && (*p == *q)) {
+ p++;
+ q++;
+ }
+ return (*p - (*q));
+}
+
+
+/* globExpression -- returns True if the expression matches the given pattern.
+ * Adapted from the ImageMagick package originally developed by John Christy.
+ */
+static int
+globExpression (expression, pattern)
+char *expression; /* file name */
+char *pattern; /* matching pattern */
+{
+ register int done, match, status;
+ register char c, *p;
+
+
+ if (pattern == (char *) NULL)
+ return (True);
+ if (strlen (pattern) == 0)
+ return (True);
+ if (strcmp (pattern, "*") == 0)
+ return (True);
+ done = False;
+
+ while ((*pattern != '\0') && !done) {
+ if (*expression == '\0')
+ if ((*pattern != '{') && (*pattern != '*'))
+ break;
+
+ switch (*pattern) {
+ case '\\':
+ pattern++;
+ if (*pattern != '\0')
+ pattern++;
+ break;
+ case '*':
+ pattern++;
+ status = False;
+ while ((*expression != '\0') && !status)
+ status = globExpression((char *) expression++, pattern);
+ if (status) {
+ while (*expression != '\0')
+ expression++;
+ while (*pattern != '\0')
+ pattern++;
+ }
+ break;
+ case '[':
+ pattern++;
+ for ( ; ; ) {
+ if ((*pattern == '\0') || (*pattern == ']')) {
+ done = True;
+ break;
+ }
+ if (*pattern == '\\') {
+ pattern++;
+ if (*pattern == '\0') {
+ done = True;
+ break;
+ }
+ }
+ if (*(pattern + 1) == '-') {
+ c = (*pattern);
+ pattern += 2;
+ if (*pattern == ']') {
+ done = True;
+ break;
+ }
+ if (*pattern == '\\') {
+ pattern++;
+ if (*pattern == '\0') {
+ done = True;
+ break;
+ }
+ }
+ if ((*expression < c) || (*expression > *pattern)) {
+ pattern++;
+ continue;
+ }
+ } else if (*pattern != *expression) {
+ pattern++;
+ continue;
+ }
+ pattern++;
+ while ((*pattern != ']') && (*pattern != '\0')) {
+ if ((*pattern == '\\') && (*(pattern + 1) != '\0'))
+ pattern++;
+ pattern++;
+ }
+ if (*pattern != '\0') {
+ pattern++;
+ expression++;
+ }
+ break;
+ }
+ break;
+ case '?':
+ pattern++;
+ expression++;
+ break;
+ case '{':
+ pattern++;
+ while ((*pattern != '}') && (*pattern != '\0')) {
+ p = expression;
+ match = True;
+ while ((*p != '\0') && (*pattern != '\0') &&
+ (*pattern != ',') && (*pattern != '}') && match) {
+ if (*pattern == '\\')
+ pattern++;
+ match = (*pattern == *p);
+ p++;
+ pattern++;
+ }
+ if (*pattern == '\0') {
+ match = False;
+ done = True;
+ break;
+ } else if (match) {
+ expression = p;
+ while ((*pattern != '}') && (*pattern != '\0')) {
+ pattern++;
+ if (*pattern == '\\') {
+ pattern++;
+ if (*pattern == '}')
+ pattern++;
+ }
+ }
+ } else {
+ while ((*pattern != '}') && (*pattern != ',') &&
+ (*pattern != '\0')) {
+ pattern++;
+ if (*pattern == '\\') {
+ pattern++;
+ if ((*pattern == '}') || (*pattern == ','))
+ pattern++;
+ }
+ }
+ }
+ if (*pattern != '\0')
+ pattern++;
+ }
+ break;
+ default:
+ if (*expression != *pattern)
+ done = True;
+ else {
+ expression++;
+ pattern++;
+ }
+ }
+ }
+
+ while (*pattern == '*')
+ pattern++;
+
+ return ((*expression == '\0') && (*pattern == '\0'));
+}
+
+
+/* AMAPC -- Vector linear transformation. Map the range of pixel values
+ * a1,a2 from a into the range b1,b2 in b. It is assumed that a1 < a2
+ * and b1 < b2.
+ */
+
+static void
+amapc (a, b, npix, a1, a2, b1, b2)
+char *a, *b;
+int npix, a1, a2, b1, b2;
+{
+ register int i, minout, maxout, aoff, boff, pixval;
+ register double scalar;
+
+ scalar = ((double) b2 - (double) b1) / ((double) a2 - (double) a1);
+
+ minout = min (b1, b2);
+ maxout = max (b1, b2);
+ aoff = a1;
+ boff = b1;
+
+ for (i=0; i < npix; i++) {
+ pixval = (a[i] - aoff) * scalar;
+ b[i] = (char) max(minout, min(maxout, pixval + boff));
+ }
+}
+
+
+/* SORTGRAYMAP -- Sort a random grayscale colormap.
+ */
+
+static void
+sortGraymap (a, b, npix, red, green, blue, ncols)
+unsigned char *a, *b;
+unsigned char *red, *green, *blue;
+int npix, ncols;
+{
+ register int i, pmin=0, pmax=255;
+ register float scale;
+
+ /* Reset the pixels so they are the final grayscale values. */
+ scale = 255.0 / (float) (ncols - 1);
+ for (i=0; i<npix; i++)
+ b[i] = (unsigned char) ((float) red[a[i]] / scale);
+
+ /* Sort the input colormap. */
+ qsort (red, ncols, sizeof (unsigned char), ucharCompare);
+
+ /* Set the new colormap. 0-ncols are the scaled colors in the desired
+ * number of cells, everything above that we set to zero.
+ */
+ for (i=0; i<ncols; i++)
+ green[i] = blue[i] = (unsigned char)min(pmax,max(pmin,(int)red[i]));
+ for (i=ncols; i<256; i++)
+ red[i] = green[i] = blue[i] = 0;
+}
+
+static int
+ucharCompare (i, j)
+unsigned char *i, *j;
+{
+ return (*i - *j);
+}
+
+
+/* LOADSTAT -- Internal routine for load status messages.
+ */
+static void
+loadstat (xim, message)
+register XimDataPtr xim;
+char *message;
+{
+ char text[SZ_LINE];
+ sprintf (text, "status {%s}", message);
+ xim_message (xim, "loadOptions", text);
+}
+
+
+/* STRSORT -- Shell sort an array of string pointers via strcmp()
+ */
+static void
+strsort (array, array_size)
+char **array;
+int array_size;
+{
+ int gap, i, j;
+ char **a, **b, *tmp;
+
+ for (gap = 0; ++gap < array_size; )
+ gap *= 2;
+ while (gap /= 2) {
+ for (i = gap; i < array_size; i++) {
+ for (j = i - gap; ;j -= gap) {
+ a = array + j;
+ b = a + gap;
+ if (strcmp(*a, *b) <= 0)
+ break;
+ tmp = *a;
+ *a = *b;
+ *b = tmp;
+ if (j < gap)
+ break;
+ }
+ }
+ }
+}
diff --git a/vendor/x11iraf/ximtool/logo.c b/vendor/x11iraf/ximtool/logo.c
new file mode 100644
index 00000000..92d4bb8e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo.c
@@ -0,0 +1,36 @@
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+
+#include "ximtool.h"
+#include "logo.h"
+
+
+xim_displayLogo (xim)
+register XimDataPtr xim;
+{
+ register int i;
+ unsigned char r[256], g[256], b[256];
+
+
+ if (!xim || !xim->gt)
+ return;
+
+ /* Create the default colormap.
+ */
+ for (i=0; i < 200; i++)
+ r[i] = g[i] = b[i] = (float)i / (float)(LOGO_NCOLORS) * 255;
+
+ /* Set the logical resolution of the display.
+ */
+ GtSetLogRes (xim->gt, LOGO_XDIM, LOGO_YDIM);
+
+ if (xim_writeDisplay (xim, 1, "logo", logo_data,
+ LOGO_XDIM, LOGO_YDIM, r, g, b, LOGO_NCOLORS) < 0)
+ return;
+}
diff --git a/vendor/x11iraf/ximtool/logo.h b/vendor/x11iraf/ximtool/logo.h
new file mode 100644
index 00000000..b821727a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo.h
@@ -0,0 +1,17485 @@
+#define LOGO_XDIM 512
+#define LOGO_YDIM 512
+#define LOGO_NCOLORS 200
+#define LOGO_NBYTES 262144
+
+unsigned char logo_data[] = {
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+ 0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+ 0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x11,0x11,0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x06,0x0c,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0c,0x06,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x10,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x10,0x0f,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x14,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x11,0x11,0x11,0x12,0x12,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x14,0x14,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x14,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0e,0x0e,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0e,0x0e,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x10,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,
+ 0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0e,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,
+ 0x14,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0c,0x06,0x0f,0x0f,0x10,0x12,
+ 0x32,0x57,0x57,0x38,0x2b,0x19,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x06,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x06,0x0f,0x0f,0x0f,0x6a,
+ 0x90,0xa9,0xbc,0xbc,0xbc,0xbc,0xbc,0xaf,0xa3,0x90,0x77,0x4b,0x10,0x10,0x10,
+ 0x10,0x10,0x06,0x10,0x06,0x10,0x06,0x06,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,
+ 0x10,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x77,
+ 0xaf,0xbc,0xc2,0xbc,0xb5,0xaf,0xa3,0xa3,0xa3,0xaf,0xb5,0xbc,0xbc,0xbc,0xaf,
+ 0x96,0x6a,0x2b,0x10,0x10,0x10,0x06,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0e,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x10,0x10,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x4b,
+ 0xa3,0xbc,0xbc,0xbc,0xa3,0x6a,0x2b,0x10,0x10,0x10,0x10,0x10,0x19,0x4b,0x70,
+ 0x90,0xa9,0xbc,0xbc,0xb5,0x96,0x51,0x10,0x10,0x10,0x06,0x06,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0e,0x0e,0x0e,
+ 0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x5e,0xaf,0xbc,0xbc,0xb5,0x6a,0x10,0x10,0x10,0x06,0x10,0x10,0x10,0x06,0x10,
+ 0x10,0x10,0x10,0x10,0x38,0x77,0xa3,0xb5,0xbc,0xa9,0x6a,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0e,
+ 0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x10,0x10,0x06,0x10,0x10,0x10,0x06,0x0c,0x06,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x5e,0xb5,0xbc,0xbc,0xaf,0x4b,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x45,0x83,0xaf,0xbc,0xa9,0x6a,
+ 0x10,0x10,0x06,0x10,0x10,0x0c,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0xc8,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x10,0x10,0x10,0x06,0x10,0x0c,0x06,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x45,0xaf,0xbc,0xbc,0xb5,0x51,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,0x10,0x10,0x10,0x10,0x6a,
+ 0xa9,0xbc,0xa3,0x45,0x10,0x10,0x06,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x06,0x06,0x06,0x10,0x10,0x10,0x10,0x10,
+ 0x57,0x7d,0x96,0x83,0xa3,0xbc,0xbc,0xbc,0x77,0x10,0x06,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0c,0x10,0x06,0x10,
+ 0x10,0x10,0x10,0x6a,0xaf,0xb5,0x7d,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0xc8,0x0e,0x0e,0x0e,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x06,0x06,0x10,0x19,0x4b,0x32,
+ 0x70,0xa9,0xb5,0xbc,0xbc,0xa3,0xbc,0xbc,0xbc,0xa3,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,
+ 0x06,0x10,0x0c,0x10,0x10,0x10,0x19,0x8a,0xb5,0xa3,0x25,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x06,0x10,0x10,0x10,0x10,0x10,0x10,0x45,0x7d,
+ 0x7d,0xa9,0xbc,0xbc,0xbc,0xbc,0xa3,0xaf,0xbc,0xbc,0xbc,0x57,0x10,0x0c,0x06,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x51,0xaf,0xaf,0x4b,0x11,
+ 0x06,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x06,0x10,0x0c,0x0c,0x10,0x10,0x6a,
+ 0x8a,0x90,0xb5,0xbc,0xbc,0xaf,0x7d,0x32,0x77,0xbc,0xbc,0xbc,0xa3,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xa3,
+ 0xb5,0x51,0x11,0x06,0x06,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x0c,0x0c,0x06,0x10,0x10,
+ 0x77,0x9c,0x8a,0xbc,0xbc,0xbc,0x8a,0x1f,0x10,0x10,0xa9,0xbc,0xbc,0xbc,0x6a,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,0x10,
+ 0x10,0x11,0x96,0xb5,0x5e,0x11,0x11,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0c,0x10,
+ 0x10,0x7d,0xa9,0x8a,0xbc,0xbc,0xb5,0x70,0x10,0x10,0x10,0x51,0xb5,0xbc,0xbc,
+ 0xaf,0x1f,0x10,0x0c,0x10,0x10,0x10,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x0c,0x11,0x11,0x11,0x11,0x96,0xb5,0x51,0x11,0x06,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x12,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,
+ 0x10,0x10,0x6a,0xaf,0x8a,0xb5,0xbc,0xbc,0x70,0x10,0x06,0x10,0x10,0x83,0xbc,
+ 0xbc,0xbc,0x96,0x10,0x10,0x10,0x06,0x10,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x06,0x11,0x06,0x06,0x11,0x11,0x9c,0xb5,0x38,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x4b,0xb5,0x96,0xa9,0xbc,0xbc,0x8a,0x10,0x10,0x10,0x10,0x10,
+ 0xa3,0xbc,0xbc,0xbc,0x70,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0x0f,0x0f,0x10,
+ 0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x19,0xa9,0xa9,0x12,0x11,
+ 0x11,0x11,0x11,0x0c,0x11,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x17,0x17,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x12,0xa9,0xaf,0x90,0xbc,0xbc,0xa9,0x06,0x10,0x06,0x10,
+ 0x10,0x38,0xb5,0xbc,0xbc,0xb5,0x4b,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x4b,0xb5,
+ 0x83,0x11,0x06,0x06,0x11,0x11,0x11,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x17,0x17,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x7d,0xbc,0x83,0xb5,0xbc,0xb5,0x51,0x10,0x10,
+ 0x10,0x45,0x6a,0x8a,0xbc,0xbc,0xbc,0xaf,0x25,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x06,0x06,
+ 0x11,0x7d,0xb5,0x32,0x11,0x06,0x06,0x0c,0x11,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x45,0xb5,0xa3,0x96,0xbc,0xbc,0x90,0x10,
+ 0x38,0x57,0x77,0x70,0x4b,0x7d,0xbc,0xbc,0xbc,0xa3,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x06,0x11,0x12,0xa9,0x90,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x96,0xbc,0x7d,0xaf,0xbc,0xb5,
+ 0x5e,0x70,0x70,0x5e,0x25,0x10,0x10,0x90,0xbc,0xbc,0xbc,0x90,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x06,0x11,0x11,0x5e,0xaf,0x2b,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xc8,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x4b,0xb5,0xa9,0x8a,0xbc,
+ 0xbc,0x9c,0x6a,0x38,0x12,0x10,0x10,0x0f,0x0f,0x9c,0xbc,0xbc,0xbc,0x83,0x10,
+ 0x10,0x11,0x11,0x11,0x11,0x11,0x0c,0x11,0x11,0x06,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x0c,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xa3,0x83,0x11,0x0c,0x11,0x11,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0xc8,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,0x10,0x10,0x8a,0xc2,0x9c,
+ 0x96,0x90,0x51,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0xa3,0xbc,0xbc,0xbc,
+ 0x77,0x10,0x11,0x11,0x11,0x11,0x11,0x06,0x0c,0x11,0x06,0x11,0x11,0x11,0x11,
+ 0x11,0x06,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x6a,0xa3,0x19,0x11,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x14,0x13,
+ 0x13,0x13,0x13,0x12,0x12,0x13,0x13,0x13,0x14,0x13,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x25,0xb5,
+ 0xbc,0x77,0x1f,0x10,0x10,0x10,0x10,0x06,0x10,0x10,0x10,0x0f,0x0f,0xa9,0xbc,
+ 0xbc,0xbc,0x6a,0x10,0x10,0x11,0x11,0x11,0x11,0x06,0x11,0x11,0x11,0x06,0x11,
+ 0x11,0x11,0x11,0x11,0x06,0x11,0x11,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0c,0xa3,
+ 0x57,0x11,0x06,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x06,0x10,
+ 0x70,0xbc,0xa9,0x10,0x10,0x10,0x06,0x10,0x0c,0x0c,0x10,0x10,0x10,0x0c,0x57,
+ 0xaf,0xbc,0xbc,0xbc,0x57,0x0f,0x10,0x10,0x10,0x11,0x11,0x11,0x06,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x06,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x83,0x8a,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x18,0x17,0x16,0x16,
+ 0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x9c,0xc2,0x83,0x10,0x06,0x10,0x10,0x10,0x10,0x10,0x12,0x4b,0x5e,
+ 0x77,0x70,0xaf,0xbc,0xbc,0xbc,0x57,0x0f,0x10,0x10,0x10,0x10,0x11,0x11,0x06,
+ 0x77,0x90,0x90,0x90,0x90,0x90,0x90,0x8a,0x3e,0x11,0x11,0x4b,0x5e,0x4b,0x3e,
+ 0x2b,0x0c,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x51,0xa3,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x32,0xaf,0xbc,0x57,0x10,0x10,0x10,0x10,0x25,0x45,0x70,0x77,
+ 0x6a,0x51,0x0c,0x2b,0xaf,0xbc,0xbc,0xbc,0x57,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0xa3,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0x57,0x11,0x11,0x8a,0xbc,
+ 0xbc,0xb5,0xaf,0xa9,0xa3,0x90,0x2b,0x12,0x0c,0x19,0x11,0x11,0x11,0x11,0x11,
+ 0x06,0x0c,0x11,0x11,0x12,0x12,0x9c,0x57,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x0c,0x10,0x57,0xbc,0xaf,0x1f,0x10,0x12,0x57,0x70,0x70,0x70,
+ 0x3e,0x2b,0x10,0x10,0x0f,0x32,0xaf,0xbc,0xbc,0xbc,0x57,0x10,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0xa3,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xb5,0x57,0x11,0x11,
+ 0x8a,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0x4b,0x12,0x38,0xa3,0xa3,0x8a,0x70,
+ 0x3e,0x06,0x11,0x11,0x11,0x12,0x06,0x12,0x83,0x7d,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x18,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x06,0x10,0x83,0xbc,0xa3,0x4b,0x6a,0x77,0x5e,0x51,
+ 0x12,0x10,0x10,0x10,0x06,0x11,0x10,0x32,0xaf,0xbc,0xbc,0xbc,0x57,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0xa3,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0x57,
+ 0x12,0x12,0x90,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xb5,0x4b,0x12,0x32,0xb5,0xbc,
+ 0xbc,0xbc,0xb5,0x6a,0x12,0x25,0x38,0x12,0x12,0x12,0x6a,0x90,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0xc8,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0x0f,
+ 0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x9c,0xbc,0x9c,0x5e,0x45,0x06,
+ 0x10,0x11,0x11,0x11,0x11,0x0c,0x11,0x11,0x10,0x25,0xaf,0xbc,0xbc,0xbc,0x57,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x8a,0xa3,0xa3,0x96,0x96,0x96,0x96,
+ 0x90,0x3e,0x12,0x12,0x6a,0x9c,0xa3,0xaf,0xaf,0xb5,0xbc,0xb5,0x4b,0x12,0x38,
+ 0xb5,0xbc,0xbc,0xbc,0xbc,0x77,0x12,0x57,0xaf,0xa3,0x70,0x2b,0x45,0x90,0x19,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x16,0x16,0x17,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0xc8,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,
+ 0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xaf,0xbc,0x6a,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0c,0x25,0x6a,0xaf,0xbc,0xbc,
+ 0xbc,0x6a,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x0c,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x19,0x1f,0x2b,0x4b,0x57,0x19,
+ 0x12,0x25,0xa3,0xbc,0xbc,0xbc,0xbc,0x77,0x12,0x57,0xbc,0xbc,0xbc,0x7d,0x12,
+ 0x90,0x38,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0xb5,0xbc,
+ 0x45,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x32,0x51,0x5e,0x77,0x70,0x57,0xa9,
+ 0xbc,0xbc,0xbc,0x77,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x1f,0x4b,0x77,0x96,0xaf,0x70,0x12,0x57,0xbc,0xbc,0xbc,
+ 0x77,0x12,0x90,0x4b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x17,
+ 0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x0f,0x0f,0x0f,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x51,
+ 0xb5,0xb5,0x1f,0x11,0x11,0x11,0x2b,0x3e,0x6a,0x70,0x6a,0x6a,0x51,0x12,0x11,
+ 0x11,0xa3,0xbc,0xbc,0xbc,0x7d,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x19,0x12,0x45,0xaf,
+ 0xbc,0xbc,0x70,0x12,0x83,0x57,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x17,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x6a,0xbc,0xa9,0x12,0x3e,0x6a,0x70,0x70,0x70,0x4b,0x32,0x12,0x11,0x11,
+ 0x11,0x06,0x11,0x9c,0xbc,0xbc,0xbc,0x8a,0x12,0x12,0x12,0x12,0x12,0x11,0x11,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x12,0x13,0x13,0x12,0x12,
+ 0x12,0x25,0x70,0x9c,0x51,0x12,0x70,0x5e,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x70,0xbc,0xa9,0x77,0x6a,0x51,0x45,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x06,0x06,0x11,0x90,0xbc,0xbc,0xbc,0x96,0x12,0x12,0x12,0x12,0x12,
+ 0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x06,
+ 0x06,0x06,0x13,0x12,0x12,0x12,0x12,0x12,0x5e,0x70,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xc8,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x7d,0xc2,0x96,0x0c,0x11,0x11,0x11,0x06,0x06,0x11,
+ 0x11,0x11,0x06,0x11,0x06,0x11,0x11,0x77,0xbc,0xbc,0xbc,0xa3,0x12,0x12,0x12,
+ 0x12,0x12,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x0c,0x06,0x13,0x12,0x12,0x12,0x12,0x12,0x57,0x70,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xc8,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,
+ 0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x7d,0xc2,0x7d,0x12,0x12,0x12,0x12,0x0c,
+ 0x06,0x06,0x11,0x11,0x11,0x11,0x11,0x0c,0x2b,0x83,0xbc,0xbc,0xbc,0xaf,0x7d,
+ 0x7d,0x8a,0x96,0x96,0x96,0x96,0xa3,0xa3,0xa3,0xa3,0xa3,0x96,0x90,0x96,0x96,
+ 0x90,0x83,0x83,0x77,0x70,0x5e,0x51,0x38,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x0c,0x13,0x12,0x12,0x12,0x12,0x12,0x57,0x70,0x12,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,
+ 0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x16,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+ 0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7d,0xc2,0x7d,0x12,0x06,0x06,
+ 0x12,0x12,0x12,0x11,0x11,0x2b,0x4b,0x51,0x6a,0x77,0x70,0x51,0x57,0xa3,0xbc,
+ 0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xc2,0xc2,0xbc,0xc2,0xc2,0xc2,0xc2,0xbc,
+ 0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xb5,0xb5,0xaf,0xa3,0x96,0x7d,
+ 0x5e,0x4b,0x2b,0x12,0x13,0x13,0x13,0x13,0x13,0x06,0x06,0x12,0x12,0x12,0x51,
+ 0x5e,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x16,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x7d,0xc2,0x7d,0x12,
+ 0x12,0x12,0x1f,0x32,0x4b,0x70,0x70,0x6a,0x5e,0x5e,0x38,0x0c,0x11,0x11,0x11,
+ 0x8a,0xbc,0xbc,0xbc,0xb5,0xaf,0xaf,0xa3,0xa3,0x96,0x90,0x90,0x83,0x7d,0x7d,
+ 0x83,0x77,0x70,0x70,0x70,0x70,0x70,0x7d,0x83,0x83,0x83,0x90,0x96,0x9c,0xa3,
+ 0xa9,0xaf,0xb5,0xb5,0xa9,0xa3,0x90,0x77,0x51,0x32,0x12,0x12,0x12,0x12,0x06,
+ 0x12,0x51,0x51,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+ 0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x70,0xbc,
+ 0x90,0x45,0x64,0x6a,0x6a,0x70,0x6a,0x3e,0x32,0x19,0x12,0x12,0x12,0x06,0x11,
+ 0x06,0x11,0x4b,0x7d,0x6a,0x51,0x2b,0x25,0x19,0x0c,0x11,0x11,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x19,0x25,0x38,0x57,0x77,0x8a,0x90,0x9c,0x96,0x8a,0x77,0x57,
+ 0x12,0x06,0x12,0x4b,0x2b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x5e,0xbc,0xaf,0x5e,0x4b,0x4b,0x19,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x2b,0x51,
+ 0x5e,0x6a,0x6a,0x2b,0x12,0x19,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x38,0xb5,0xb5,0x2b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x10,0x10,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x06,0x11,0xa9,0xbc,0x70,0x12,0x12,0x12,0x12,0x0c,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x06,0x06,0x12,0x12,0x12,0x06,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x10,0x10,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x83,0xc2,0xa3,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x06,0x0c,0x12,0x0c,0x12,0x13,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x17,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x10,0x10,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x4b,0xb5,0xbc,0x5e,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x06,0x13,0x13,0x06,0x12,0x12,0x06,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,
+ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x06,0x11,0x11,0x96,0xc2,0xa9,
+ 0x12,0x12,0x06,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x19,0x45,0x3e,0x4b,0x5e,0x5e,0x5e,0x5e,0x5e,0x6a,0x77,
+ 0x77,0x77,0x77,0x77,0x77,0x70,0x5e,0x5e,0x5e,0x5e,0x5e,0x4b,0x45,0x45,0x1f,
+ 0x0c,0x0c,0x0c,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x06,0x13,
+ 0x13,0x06,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0xc8,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,
+ 0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x06,0x11,0x45,
+ 0xb5,0xbc,0x83,0x12,0x12,0x12,0x12,0x12,0x2b,0x3e,0x4b,0x57,0x6a,0x7d,0x8a,
+ 0x96,0x9c,0xa9,0xa9,0xaf,0xa9,0xa9,0xa9,0xa9,0xa3,0xa9,0xa3,0x96,0x9c,0x96,
+ 0x8a,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x8a,0x8a,0x8a,0x8a,0x83,0x8a,0x90,
+ 0x90,0x8a,0x9c,0x90,0x8a,0x83,0x7d,0x70,0x6a,0x57,0x57,0x51,0x3e,0x1f,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0xc8,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x06,0x12,0x70,0xbc,0xbc,0x83,0x83,0x96,0xa3,0xa9,0xaf,0xb5,0xb5,0xbc,0xbc,
+ 0xb5,0xaf,0xa3,0x9c,0x8a,0x7d,0x77,0x6a,0x5e,0x45,0x3e,0x06,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x0c,0x25,0x45,0x4b,0x5e,0x5e,0x77,0x70,0x6a,0x6a,
+ 0x6a,0x6a,0x6a,0x5e,0x45,0x1f,0x13,0x13,0x0c,0x0c,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0xc8,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x11,0x06,0x0c,0x0c,0x12,0x96,0xbc,0xbc,0xbc,0xbc,0xbc,0xaf,0xa3,0x96,0x7d,
+ 0x6a,0x45,0x25,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,
+ 0x06,0x12,0x12,0x12,0x12,0x06,0x12,0x12,0x12,0x12,0x0c,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x06,0x06,0x06,0x0c,0x0c,0x06,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x06,0x1f,0x2b,0x2b,0x2b,0x45,0x4b,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x0c,0x06,0x0c,0x12,0x8a,0xbc,0xbc,0x90,0x5e,0x4b,0x2b,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x06,0x06,0x12,0x06,0x06,0x0c,0x12,0x12,0x12,0x12,0x0c,0x12,0x06,
+ 0x06,0x13,0x13,0x06,0x13,0x06,0x13,0x06,0x06,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x06,0x06,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x19,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x90,0xbc,0xb5,0x3e,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x19,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x11,0x11,0x11,
+ 0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x90,0xbc,0xb5,0x4b,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0xc8,0x11,
+ 0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x11,0x11,0x11,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x90,0xbc,
+ 0xb5,0x4b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x13,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,
+ 0x17,0x17,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x90,0xbc,0xb5,0x4b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x90,0xbc,0xb5,0x4b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x15,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x16,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x90,0xbc,0xb5,0x4b,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x0c,0x06,0x06,0x12,0x13,0x06,0x13,0x13,0x06,0x13,0x12,0x12,0x12,0x12,0x13,
+ 0x0c,0x13,0x13,0x13,0x0c,0x0c,0x06,0x13,0x06,0x13,0x06,0x13,0x0c,0x0c,0x06,
+ 0x13,0x0c,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x90,0xbc,0xb5,0x4b,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x06,0x06,0x06,0x12,0x13,0x06,0x06,0x13,0x13,0x13,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x06,0x13,0x06,0x06,0x06,0x0c,
+ 0x13,0x06,0x06,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x16,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x90,0xbc,0xb5,0x4b,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x12,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x16,0x16,0x16,0x15,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x16,0x16,0x16,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x90,0xbc,0xb5,0x4b,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x1f,0x3e,0x51,0x64,0x6a,0x7d,0x7d,0x64,0x8a,0x96,
+ 0x96,0x96,0x96,0x9c,0x9c,0x9c,0x9c,0x9c,0x96,0x96,0x96,0x90,0x90,0x83,0x70,
+ 0x57,0x57,0x38,0x38,0x2b,0x06,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0xc8,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x11,0x90,0xbc,0xb5,
+ 0x4b,0x12,0x12,0x1f,0x51,0x7d,0x83,0x96,0x96,0x9c,0x9c,0x9c,0x9c,0x9c,0x64,
+ 0x9c,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0x96,0x96,0x8a,0x8a,0x6a,0x6a,0x4b,0x3e,0x32,0x1f,0x06,0x06,
+ 0x14,0x14,0x14,0x14,0x14,0x0c,0x06,0x14,0x14,0x0c,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x0c,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0xc8,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x06,0x06,0x0c,0x11,0x90,
+ 0xbc,0xb5,0x4b,0x5e,0x8a,0xa9,0xa9,0xa9,0xa9,0xa9,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x64,0x9c,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa9,0xa9,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0x96,0x96,0x96,0x8a,0x8a,0x8a,0x70,0x70,0x70,0x70,0x4b,
+ 0x32,0x4b,0x4b,0x3e,0x32,0x19,0x19,0x14,0x14,0x14,0x14,0x14,0x14,0x06,0x06,
+ 0x06,0x06,0x14,0x06,0x0c,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x06,0x12,0x06,
+ 0x12,0x90,0xbc,0xb5,0x70,0xb5,0xb5,0xb5,0xa9,0xa9,0xa9,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x64,0x9c,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0x96,0x96,0x96,0x8a,0x8a,0x70,0x70,0x70,
+ 0x70,0x4b,0x3e,0x57,0x57,0x57,0x57,0x3e,0x8a,0x83,0x83,0x77,0x3e,0x3e,0x12,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x06,0x06,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x90,0xbc,0xb5,0x77,0xb5,0xb5,0xb5,0xa9,0xa9,0xa9,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x64,0x9c,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0x9c,0x96,
+ 0x90,0x90,0x90,0x83,0x83,0x83,0x83,0x83,0x70,0x70,0x70,0x70,0x70,0x6a,0x6a,
+ 0x6a,0x4b,0x4b,0x4b,0x3e,0x57,0x57,0x57,0x57,0x3e,0x8a,0x8a,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x83,0x77,0x51,0x12,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x18,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1b,0x1c,0x1a,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1b,0x1a,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x0c,0x12,0x4b,0x7d,0x8a,0xbc,0xb5,0x77,0xb5,0xb5,0xb5,0xa9,0xa9,0xa9,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x64,0x8a,0x8a,0x7d,0x6a,0x57,0x4b,0x2b,
+ 0x1f,0x19,0x12,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x0c,0x0c,0x06,0x19,0x1f,0x32,0x32,0x1f,0x3e,0x77,0x83,
+ 0x83,0x83,0x9c,0x9c,0xa9,0xa9,0x9c,0x77,0x9c,0x83,0x77,0x51,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1c,0x1a,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0c,
+ 0x12,0x12,0x12,0x12,0x64,0xb5,0xaf,0x77,0xbc,0xb5,0x77,0xb5,0xb5,0xb5,0xa9,
+ 0xa9,0xa9,0xa9,0x9c,0x9c,0x96,0x83,0x6a,0x51,0x1f,0x19,0x13,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x1f,0x3e,0x3e,0x51,0x77,0x77,0x77,0xa9,0xa9,0xa9,0xa9,0xa9,
+ 0x9c,0x51,0x51,0x2b,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x06,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1a,0xc8,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x12,0x64,0xbc,0xc2,0xa9,0x77,0xbc,0xb5,0x77,0xb5,0xb5,
+ 0xb5,0xb5,0xa9,0xa9,0x96,0x6a,0x51,0x19,0x14,0x13,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x13,0x13,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x2b,0x51,
+ 0x77,0x77,0x9c,0x51,0x9c,0x9c,0x9c,0x77,0x51,0x3e,0x06,0x15,0x15,0x15,0x06,
+ 0x06,0x0c,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0xc8,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,
+ 0x13,0x14,0x0c,0x06,0x06,0x13,0x4b,0xbc,0xc2,0xc2,0xa9,0x77,0xbc,0xb5,0x77,
+ 0xb5,0xb5,0xb5,0xa9,0x83,0x51,0x12,0x14,0x14,0x14,0x06,0x13,0x13,0x13,0x06,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x06,0x06,0x14,0x14,0x14,0x06,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x2b,0x3e,0x77,0x83,0x9c,0x9c,0x77,0x77,0x51,
+ 0x1f,0x0c,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0xc8,0x12,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x14,0x14,0x14,0x14,0x14,0x19,0xaf,0xc2,0xc2,0xc2,0xa9,0x77,0xbc,
+ 0xb5,0x77,0xb5,0xa9,0x7d,0x32,0x13,0x13,0x13,0x14,0x14,0x0c,0x14,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x06,0x06,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x1f,0x51,
+ 0x51,0x77,0x77,0x77,0x51,0x3e,0x12,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x1a,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1a,0x19,0x19,0x1a,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1c,
+ 0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x13,0x13,0x13,0x14,0x14,0x14,0x06,0x14,0x14,0x8a,0xc2,0xc2,0xc2,0xc2,0xa9,
+ 0x77,0xbc,0xb5,0x70,0x8a,0x2b,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x0c,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x14,0x14,0x15,0x12,0x3e,0x51,0x1f,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1a,0x1a,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1b,0x1b,0x1d,0x1d,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1c,0x1c,0x1b,0x19,0x19,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x2b,0xbc,0xc2,0xc2,0xc2,
+ 0xc2,0xa9,0x7d,0xc2,0xa3,0x32,0x13,0x13,0x12,0x0c,0x13,0x13,0x13,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x17,0x17,
+ 0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1c,0x1b,0x1c,0x1b,0x1a,0x1a,
+ 0x1b,0x1a,0x1a,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x8a,0xc2,0xc2,
+ 0xc2,0xc2,0xc2,0xa9,0x77,0x90,0x19,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0x1c,0x1c,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x0c,0xb5,
+ 0xc2,0xc2,0xc2,0xc2,0xc2,0xaf,0x1f,0x13,0x13,0x0c,0x13,0x13,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x06,0x06,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1c,0x1b,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,
+ 0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x2b,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0x7d,0x13,0x13,0x06,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x13,0x13,0x13,
+ 0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x0c,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x1a,0x1b,0x1c,0x1c,0x1b,0x1b,0x1a,0x19,0x1a,0x1b,0x1c,
+ 0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0xc8,0x12,0x12,0x12,0x12,
+ 0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x64,0xc2,0xc2,0xc2,0xc2,0xc2,0x90,0x13,0x13,0x0c,0x06,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x13,
+ 0x13,0x13,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1a,0x19,0x19,0x1a,
+ 0x1b,0x1c,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,0x12,0x12,
+ 0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x83,0xc2,0xc2,0xc2,0xc2,0xaf,0x19,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,
+ 0x14,0x14,0x14,0x13,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1b,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,
+ 0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x83,0xc2,0xc2,0xc2,0xc2,0x57,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x83,0xc2,0xc2,0xc2,0xa3,0x14,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1b,0x1b,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0xc8,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x83,0xc2,0xc2,0xc2,0x57,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x16,0x17,0x17,0x17,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x19,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x77,0xc2,0xc2,
+ 0xaf,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x18,0x18,0x17,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,0x1d,0x1c,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x51,
+ 0xc2,0xc2,0x90,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x25,0xc2,0xc2,0x6a,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x16,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,
+ 0x1d,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,0x13,0x13,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x12,0xb5,0xc2,0x45,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x16,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1b,0x1b,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1c,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,0x13,
+ 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x9c,0xc2,0x12,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x16,0x15,
+ 0x15,0x15,0x16,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1b,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x70,0xb5,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x16,0x15,0x15,0x16,0x17,0x18,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1b,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x06,0x14,0x19,0xa3,0x0c,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x16,0x15,0x15,0x16,0x17,0x17,0x18,0x18,0x18,0x18,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1c,0x1c,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1d,0x1d,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x45,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x16,0x16,0x17,0x17,0x18,0x18,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1c,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1e,0x1f,0x1e,0x1d,0x1c,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x20,0x1e,0x1d,0x1c,0x1c,0x1c,0x1d,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0xc8,0x13,0x13,0x13,0x13,0x13,0x13,
+ 0x13,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,0x15,0x15,0x15,0x15,
+ 0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x17,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,0xc8,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xc8,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,
+ 0x1b,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,
+ 0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1d,0x1d,0x1c,0x1b,
+ 0x1a,0x1a,0x1b,0x1d,0x1d,0x1e,0x1d,0x1d,0x1c,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,
+ 0x1c,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,
+ 0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0xc8,
+ 0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1d,0x1d,
+ 0x1d,0x1b,0x1b,0x1b,0x1c,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,
+ 0x1d,0x1d,0x1c,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,
+ 0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1e,0x1f,0x1f,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x1f,
+ 0x1e,0xc8,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a,0x1b,0x1c,0x1b,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,0x1f,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0xc8,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x17,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,
+ 0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,
+ 0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1d,0x1e,0x20,
+ 0x20,0x20,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0xc8,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1b,0x1b,0x1c,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1e,0x20,0x20,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,
+ 0x1d,0x1e,0x20,0x20,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0xc8,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,
+ 0x1b,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,
+ 0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1e,0x1d,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,
+ 0x1e,0x1d,0x1d,0x1e,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0xc8,0x14,0x14,0x14,0x14,0x14,
+ 0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,
+ 0x1d,0x1c,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1e,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x1e,
+ 0x1e,0x1f,0x1f,0x1d,0x1d,0x1e,0x1e,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x1e,0x1d,0x1f,0x1f,0x1e,0x1f,
+ 0x20,0x20,0x1e,0x1d,0x1d,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0xc8,0x14,0x14,0x14,
+ 0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1d,0x1d,0x1c,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,
+ 0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1d,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1f,0x20,
+ 0x1f,0x1f,0x20,0x20,0x1f,0x1e,0x1f,0x20,0x21,0x21,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0xc8,0x14,
+ 0x14,0x14,0x14,0x14,0x14,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x16,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,
+ 0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1d,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x20,
+ 0x20,0x1f,0x1e,0x1e,0x1e,0x1f,0x1e,0x1d,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x1f,0x1f,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x21,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1e,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,
+ 0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,
+ 0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1f,
+ 0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1d,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1c,0x1d,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,
+ 0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x21,0x20,
+ 0x20,0x1d,0x1e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1a,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,
+ 0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1d,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,
+ 0x1f,0x1e,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x20,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x19,0x1a,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1e,0x1e,0x1d,0x1e,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x20,0x20,0x20,0x1f,0x1f,0x1e,
+ 0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x20,0x1f,0x1f,0x20,0x21,0x21,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xc8,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x19,0x19,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1d,0x1c,0x1b,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,
+ 0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x20,0x20,0x1e,0x1e,0x1f,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0xc8,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x17,0x17,0x17,0x17,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1b,0x1c,0x1d,0x1c,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x21,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc8,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x16,0x16,0x16,
+ 0x16,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,0x1b,0x1a,0x1b,0x1d,0x1c,0x1a,0x1b,0x1c,0x1c,
+ 0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1e,0x1e,0x1d,0x1c,
+ 0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x1d,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1f,0x20,
+ 0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x21,0x21,0x21,0x20,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1b,0x1a,0x1a,0x1b,0x1d,0x1c,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x20,
+ 0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,
+ 0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x21,0x21,0x21,0x20,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1a,0x1a,0x1b,0x1d,0x1c,
+ 0x1b,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x20,
+ 0x20,0x21,0x20,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x1e,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x21,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1a,0x1a,0x1b,
+ 0x1d,0x1c,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1b,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,
+ 0x1e,0x1f,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x21,0x21,0x21,0x22,0x22,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1e,0x1f,0x20,0x21,0x21,0x20,0x1e,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1c,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1b,0x1b,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1e,0x1f,0x20,0x21,0x21,0x20,0x1d,0x1e,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x21,0x22,0x22,0x21,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xc8,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x21,0x20,0x20,0x20,0x1f,0x1f,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x22,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x20,0x21,0x21,0x20,0x1e,0x1e,
+ 0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x20,0x21,0x21,0x22,0x21,0x21,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xc8,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x20,0x20,0x21,0x20,0x20,0x1f,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x1f,0x1e,0x1f,0x20,0x21,0x21,0x20,
+ 0x1e,0x1e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x22,0x22,0x21,0x21,0x21,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xc8,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x16,0x16,
+ 0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1c,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x20,0x20,0x21,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x1f,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1f,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x21,0x21,0x22,0x22,0x20,0x20,0x22,0x22,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,
+ 0x20,0x1f,0x1e,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1f,0x20,0x20,0x20,
+ 0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1e,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,
+ 0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x21,0x21,0x21,0x21,0x20,0x21,0x21,0x22,0x22,0x22,0x21,0x20,0x22,0x22,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x16,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1c,0x1d,0x1d,0x1e,0x1d,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x20,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,
+ 0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x22,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x22,
+ 0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x22,0x23,0x23,0x22,0x21,0x21,0x22,
+ 0x22,0x21,0x20,0x20,0x21,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x16,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1c,0x1c,0x1d,0x1e,
+ 0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1d,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x21,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x22,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x21,
+ 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x22,0x23,0x23,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x23,0x23,0x22,0x21,
+ 0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1d,0x1d,0x1b,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1f,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x1f,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1d,0x1d,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x20,0x20,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x22,0x22,0x21,0x21,0x20,0x20,0x21,0x23,0x22,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x20,0x20,0x20,0x20,0x20,0x21,0x22,
+ 0x23,0x22,0x21,0x21,0x21,0x22,0x20,0x20,0x20,0x22,0x23,0x23,0x22,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x22,0x21,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x23,
+ 0x23,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0xc8,0x15,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x17,
+ 0x18,0x19,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x17,0x18,0x18,0x18,0x19,0x18,
+ 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1b,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1f,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x21,
+ 0x21,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x21,0x21,0x20,0x20,0x21,0x23,0x23,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x23,0x22,0x22,0x22,0x23,0x23,0x22,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x20,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x22,0x22,0x22,0x23,0x22,0x21,0x21,0x20,0x21,0x22,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0xc8,0x15,0x15,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x15,0x15,
+ 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1c,0x1c,0x1b,0x1b,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,
+ 0x20,0x20,0x1f,0x1f,0x1e,0x1d,0x1e,0x1f,0x1e,0x1e,0x1e,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1e,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x20,0x1e,0x1d,0x1e,0x20,0x20,0x22,0x22,0x21,0x20,0x1e,0x1f,0x20,0x21,0x22,
+ 0x22,0x21,0x20,0x20,0x20,0x20,0x22,0x23,0x23,0x21,0x20,0x1f,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x20,0x20,0x1f,0x20,
+ 0x20,0x20,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x23,
+ 0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x23,0x24,0x23,
+ 0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x21,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0xc8,0x15,0x15,
+ 0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,0x1e,0x1f,0x20,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1e,0x1d,0x1e,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x21,0x21,0x21,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1e,0x20,0x21,0x21,0x21,0x21,0x20,0x1f,0x1f,0x20,
+ 0x21,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x21,0x23,0x24,0x22,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x21,0x20,0x21,0x21,0x20,0x20,0x20,0x22,0x22,0x22,0x21,
+ 0x21,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x24,
+ 0x24,0x23,0x23,0x22,0x23,0x23,0x23,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x22,
+ 0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x22,0x22,0x22,0x22,0x23,0x24,0x24,0xc8,
+ 0x15,0x15,0x15,0x15,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,
+ 0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1b,0x1c,0x1c,0x1b,0x1b,0x1c,
+ 0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,0x1e,
+ 0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x20,0x1f,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x1f,
+ 0x20,0x20,0x21,0x22,0x22,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x24,0x22,0x21,
+ 0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x20,0x21,0x21,0x20,0x20,0x20,0x22,0x22,
+ 0x22,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x22,0x23,0x24,0x23,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x23,0x23,0x24,0x23,
+ 0x23,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x24,0x24,0x23,0x22,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x23,0x23,0x24,
+ 0x24,0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x16,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x19,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1b,0x1d,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1f,0x20,0x20,0x1f,
+ 0x1e,0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x23,
+ 0x22,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x21,0x22,0x22,0x21,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x23,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,
+ 0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,
+ 0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1d,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1d,0x1e,
+ 0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1e,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x22,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x21,0x21,0x21,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x22,0x23,0x24,0x23,
+ 0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0x20,0x20,0x21,0x22,0x22,0x21,0x20,0x20,0x21,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x23,0x23,
+ 0x23,0x23,0x24,0x23,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x18,0x18,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,
+ 0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1b,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1a,0x1b,0x1c,
+ 0x1e,0x20,0x20,0x20,0x1f,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1e,0x1f,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x23,
+ 0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,
+ 0x22,0x21,0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,
+ 0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x22,0x22,0x22,0x21,0x21,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x21,0x21,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x23,0x23,0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,
+ 0x1b,0x1b,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,
+ 0x1c,0x1d,0x1e,0x1f,0x20,0x1f,0x1d,0x1c,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x1f,0x1f,0x1e,0x1e,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,0x1d,0x1d,0x1e,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x20,0x21,0x22,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x23,
+ 0x23,0x22,0x22,0x23,0x24,0x24,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x20,
+ 0x20,0x21,0x22,0x21,0x20,0x20,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x21,0x22,0x22,0x21,0x21,0x22,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0xc8,0x16,0x16,0x16,0x16,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1f,0x20,0x20,0x20,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1f,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x1d,
+ 0x1d,0x1e,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x20,0x20,0x21,0x21,0x20,0x20,0x21,0x21,
+ 0x22,0x22,0x23,0x22,0x22,0x24,0x24,0x24,0x23,0x23,0x22,0x22,0x21,0x21,0x21,
+ 0x20,0x20,0x20,0x22,0x23,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x21,0x20,0x22,0x23,0x22,0x21,0x20,0x21,0x22,0x23,0x23,0x23,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x22,0x22,0x21,0x21,
+ 0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0xc8,0x15,0x15,0x16,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1c,0x1c,0x1b,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1c,0x1d,0x1d,0x1f,0x1f,0x1e,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x21,0x24,0x24,0x24,0x22,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x22,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x22,0x22,0x21,0x21,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0xc8,0x15,
+ 0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x16,0x16,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x17,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1a,0x19,0x19,0x19,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1c,0x1c,0x1b,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1c,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1c,0x1c,0x1d,0x1e,0x1f,0x20,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x1f,0x1f,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,
+ 0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x23,0x23,0x23,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x25,0x25,0x24,0x23,0x21,0x21,0x22,0x22,
+ 0x21,0x21,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x20,0x20,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x22,0x23,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x22,
+ 0x22,0x21,0x20,0x20,0x20,0x20,0x21,0x23,0x24,0x26,0x26,0x24,0x22,0x21,0x22,
+ 0x22,0x22,0x22,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x24,0x24,0x24,0x24,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,
+ 0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0xc8,0x16,0x16,0x16,0x16,0x16,0x16,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1b,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,
+ 0x20,0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1d,
+ 0x1d,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,
+ 0x1f,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x21,
+ 0x22,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,
+ 0x22,0x23,0x24,0x24,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x21,0x20,0x20,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,
+ 0x24,0x23,0x22,0x22,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x21,
+ 0x20,0x22,0x24,0x24,0x24,0x23,0x22,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x26,
+ 0x25,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x23,0x23,0xc8,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x17,0x18,0x18,0x18,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+ 0x17,0x17,0x18,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x1f,0x1e,0x1d,0x1e,0x1e,
+ 0x1f,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,
+ 0x21,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x23,0x22,0x22,0x23,0x24,0x24,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x24,0x23,0x23,0x22,0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x24,0x24,
+ 0x23,0x21,0x21,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x23,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x17,0x18,0x1a,
+ 0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x1f,0x1e,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,
+ 0x21,0x1f,0x1f,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x22,0x23,0x23,0x22,
+ 0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x23,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x22,
+ 0x21,0x21,0x22,0x22,0x23,0x24,0x24,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x23,0x22,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x26,0x25,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x22,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,
+ 0x23,0x22,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x23,0x23,0x23,0x24,0x23,0x23,
+ 0x23,0x22,0x21,0x21,0x22,0x22,0x23,0x23,0x24,0x23,0x23,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,
+ 0x23,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x22,0x23,0x22,
+ 0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0xc8,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x22,0x22,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x22,0x22,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0xc8,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1b,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1b,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,
+ 0x22,0x22,0x23,0x23,0x24,0x23,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x24,0x24,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x24,0x25,0x26,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x25,0x24,0xc8,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1b,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x24,0x23,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x23,0x24,0x24,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x25,
+ 0x26,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,
+ 0x25,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,
+ 0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,0x1f,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x21,
+ 0x21,0x22,0x21,0x21,0x21,0x20,0x20,0x21,0x22,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x23,0x24,0x23,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x24,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x25,0x26,
+ 0x26,0x26,0x26,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,
+ 0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,
+ 0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x21,0x21,0x20,0x21,
+ 0x21,0x22,0x22,0x23,0x22,0x22,0x22,0x21,0x20,0x21,0x22,0x23,0x23,0x23,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x21,
+ 0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x25,0x26,0x26,0x25,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,
+ 0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,
+ 0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,
+ 0x21,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x21,0x22,0x22,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,
+ 0x22,0x21,0x22,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,
+ 0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x21,0x22,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x22,0x21,0x22,0x24,0x25,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x26,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x27,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xc8,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x23,0x23,0x23,
+ 0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x22,0x21,0x22,0x24,0x24,0x24,0x24,0x23,0x23,0x22,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x26,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xc8,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x22,0x21,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x22,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x22,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x24,0x24,0x23,
+ 0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x23,0x24,0x24,0x24,0x23,0x23,0x22,
+ 0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x26,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x27,0x26,0x25,0x25,
+ 0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x26,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0xc8,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x22,0x21,0x20,0x20,0x20,0x22,0x22,0x22,0x21,0x21,0x22,0x21,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x21,0x20,0x21,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x22,0x21,
+ 0x21,0x22,0x23,0x23,0x23,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x23,0x22,0x23,0x24,0x24,0x24,0x24,
+ 0x23,0x22,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x25,0x25,
+ 0x24,0x24,0x25,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x25,0x24,0x24,0x25,0x25,0x25,0x26,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x26,
+ 0x25,0x24,0x25,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x26,0x25,0x25,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x27,0x26,
+ 0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x24,0x25,0x26,0x26,0x26,0x26,0x27,0x26,
+ 0x26,0x25,0x24,0x24,0x24,0x25,0x26,0x27,0x27,0x26,0x25,0x25,0x24,0x24,0x25,
+ 0xc8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1a,0x19,0x1a,0x1a,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1f,
+ 0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,
+ 0x20,0x21,0x22,0x22,0x21,0x20,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x21,0x20,0x21,0x21,0x22,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x21,0x20,0x22,0x23,0x23,0x23,0x23,0x23,0x22,
+ 0x22,0x22,0x22,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x22,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x25,0x24,0x24,0x25,0x25,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,
+ 0x27,0x26,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x26,0x25,0x24,0x24,0x25,0x26,0x27,0x28,0x27,0x27,0x26,0x26,0x25,
+ 0x25,0x25,0xc8,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x17,0x17,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1a,0x1a,0x19,0x1a,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,
+ 0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x22,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x22,0x23,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x24,0x24,0x23,0x22,
+ 0x21,0x21,0x22,0x23,0x23,0x22,0x24,0x25,0x24,0x24,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x22,
+ 0x23,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x27,0x27,
+ 0x26,0x26,0x26,0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x27,0x27,0x26,0x25,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,0x25,
+ 0x25,0x26,0x27,0x27,0x28,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0xc8,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x17,0x17,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x1a,0x1b,
+ 0x1a,0x19,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,
+ 0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x22,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x22,0x23,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,
+ 0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x24,0x24,0x24,
+ 0x23,0x22,0x21,0x21,0x22,0x23,0x23,0x22,0x23,0x25,0x24,0x24,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x27,0x26,0x26,0x26,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,
+ 0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x25,0x26,0x27,0x27,0x27,0x27,
+ 0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0xc8,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,0x1a,0x19,
+ 0x19,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x23,0x22,0x22,0x23,0x23,0x23,0x22,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x26,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,
+ 0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0xc8,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,
+ 0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,
+ 0x1a,0x1c,0x1b,0x1b,0x1b,0x1c,0x1b,0x1c,0x1b,0x1b,0x1a,0x1b,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x21,0x20,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x26,0x25,0x25,0x24,0x25,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x27,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x27,0x26,0x27,0x27,0x28,0x28,0x27,0x27,0x26,0x26,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0xc8,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x19,0x1a,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1a,0x19,0x1a,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,
+ 0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x25,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0xc8,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x19,0x19,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x27,0x27,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0xc8,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x18,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1b,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1d,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0xc8,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,0x18,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1c,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x22,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x25,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x27,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x26,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x27,
+ 0x27,0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0xc8,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x18,
+ 0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1b,
+ 0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x1a,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x21,
+ 0x21,0x21,0x22,0x23,0x23,0x24,0x24,0x23,0x23,0x22,0x23,0x23,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,
+ 0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x27,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0xc8,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x18,0x18,
+ 0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1a,
+ 0x1a,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x23,0x23,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x22,0x22,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,
+ 0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x25,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x27,0x27,0x26,0x25,0x25,0x26,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x26,0x27,0x27,0x27,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xc8,0x18,0x18,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x22,0x23,0x23,0x22,0x22,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,
+ 0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x26,0x25,0x25,0x28,0x28,0x27,0x26,0x26,0x27,0x27,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,
+ 0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xc8,0x18,0x18,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x18,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1c,0x1d,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x22,0x22,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x22,0x23,0x22,
+ 0x22,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x21,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,
+ 0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x24,0x25,0x24,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x25,0x26,0x28,0x28,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x27,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xc8,0x19,0x19,0x19,
+ 0x19,0x1a,0x1a,0x19,0x19,0x19,0x18,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1a,0x19,0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1e,0x1f,0x1e,0x1d,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,
+ 0x22,0x22,0x22,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,
+ 0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x23,0x23,0x24,0x25,
+ 0x24,0x24,0x24,0x24,0x26,0x26,0x26,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x26,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x27,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0xc8,0x19,
+ 0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x19,0x19,
+ 0x18,0x19,0x19,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,
+ 0x1a,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x22,
+ 0x22,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x24,0x24,0x24,
+ 0x24,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x27,
+ 0x27,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x28,0x28,0x27,0x27,0x26,0x27,0x28,0x28,0x26,0x26,0x27,0x28,
+ 0x28,0x28,0x28,0x27,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0xc8,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+ 0x19,0x19,0x18,0x19,0x19,0x1b,0x1c,0x1b,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+ 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,0x1c,
+ 0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1b,0x1b,0x1d,0x1d,0x1d,0x1c,0x19,0x1a,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1d,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x26,0x27,0x27,0x27,0x26,0x25,
+ 0x24,0x25,0x25,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x27,0x27,
+ 0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x28,0x28,0x26,0x26,
+ 0x26,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x2a,0x2a,0x29,0x28,0x28,0x28,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0xc8,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1a,0x19,0x19,0x19,0x1a,0x1c,0x1c,0x1c,0x1a,0x19,0x19,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,0x19,0x1a,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x22,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x28,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x27,
+ 0x28,0x27,0x27,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x25,0x26,0x28,0x27,
+ 0x26,0x26,0x26,0x28,0x28,0x28,0x28,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0xc8,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x1a,0x1c,0x1c,0x1c,0x1b,0x1a,0x19,
+ 0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,
+ 0x1b,0x1a,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1c,0x1d,0x1d,0x1c,0x1a,0x1a,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x21,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x23,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x26,0x26,0x26,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x26,0x27,0x28,0x28,0x27,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x26,
+ 0x28,0x28,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x29,
+ 0x29,0x29,0x29,0x28,0x28,0x29,0xc8,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x1a,
+ 0x1b,0x1c,0x1c,0x1c,0x1b,0x1a,0x19,0x19,0x19,0x19,0x1a,0x1b,0x1c,0x1c,0x1a,
+ 0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1a,0x1b,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x22,0x22,
+ 0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x22,0x21,0x21,0x22,0x22,
+ 0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x23,0x24,
+ 0x24,0x24,0x24,0x23,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x28,0x26,
+ 0x26,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x26,0x27,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0xc8,0x1a,0x1a,0x1a,0x19,0x19,0x19,
+ 0x1a,0x1b,0x1c,0x1d,0x1c,0x1c,0x1c,0x1b,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1b,
+ 0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1b,
+ 0x1c,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x20,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1e,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x20,0x20,0x21,0x21,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x23,0x24,0x24,0x23,0x22,0x21,0x21,0x21,0x22,0x23,0x23,0x22,0x22,0x21,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x27,
+ 0x27,0x26,0x25,0x24,0x24,0x24,0x26,0x27,0x27,0x27,0x26,0x25,0x26,0x27,0x26,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x27,0x26,0x27,0x28,0x28,0x28,0x27,0x28,0x28,0x28,0x29,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0xc8,0x1b,0x1b,0x1b,0x1a,
+ 0x19,0x1a,0x1a,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1b,0x1a,0x1a,0x19,0x1a,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1d,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1d,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x20,0x20,0x21,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x24,0x24,0x24,0x24,0x23,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x26,0x25,0x24,0x24,0x24,0x24,0x26,0x27,0x27,0x26,0x26,0x25,0x26,
+ 0x27,0x27,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,
+ 0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,
+ 0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,
+ 0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0xc8,0x1c,0x1c,
+ 0x1b,0x1a,0x1a,0x1a,0x1b,0x1c,0x1d,0x1d,0x1d,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x1f,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x22,0x22,0x22,0x21,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x25,
+ 0x25,0x25,0x26,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x26,
+ 0x27,0x27,0x26,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x27,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x26,0x27,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x28,0x28,0x29,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2a,0x29,
+ 0x29,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x29,0x28,0x28,0x29,
+ 0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2b,0x2b,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2b,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0xc8,
+ 0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1c,0x1d,0x1c,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x20,0x20,
+ 0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,
+ 0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x22,0x22,0x23,0x23,
+ 0x22,0x22,0x22,0x23,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x26,0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x27,0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x25,0x25,0x25,0x26,0x27,0x27,0x26,0x26,0x26,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x28,0x29,0x2a,0x29,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x28,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x29,0x28,
+ 0x28,0x29,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2b,
+ 0x2b,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x29,0x29,
+ 0x29,0xc8,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1b,0x1c,0x1c,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x22,0x21,0x21,
+ 0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x24,0x24,0x23,0x22,0x22,0x23,0x23,0x23,0x22,0x22,0x23,0x23,
+ 0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x27,0x26,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x27,0x26,0x25,0x26,0x26,0x27,0x27,0x27,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x29,0x29,0x28,0x28,0x28,0x29,0x29,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x29,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,
+ 0x29,0x29,0x29,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x22,0x22,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x23,
+ 0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x22,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,
+ 0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x26,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x27,0x26,0x25,0x24,0x24,0x25,
+ 0x26,0x26,0x26,0x26,0x25,0x26,0x26,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,
+ 0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x28,0x28,0x29,
+ 0x29,0x2a,0x2b,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,
+ 0x21,0x23,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x23,0x23,0x23,
+ 0x23,0x23,0x22,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x27,0x27,0x26,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x28,
+ 0x28,0x29,0x2a,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1e,0x1e,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,
+ 0x22,0x21,0x22,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x22,0x22,0x21,0x21,0x20,0x20,0x21,0x23,0x23,0x22,0x21,0x20,0x22,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,
+ 0x24,0x23,0x23,0x24,0x24,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x27,0x27,0x27,
+ 0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x27,0x27,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x27,0x27,0x27,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x27,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2b,0x2a,
+ 0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,
+ 0x29,0x28,0x28,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x29,0x29,0x2a,0x2a,
+ 0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x22,
+ 0x22,0x22,0x22,0x21,0x22,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x23,0x23,0x22,0x22,
+ 0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x24,0x24,0x24,0x23,0x22,0x23,0x24,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x27,
+ 0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0xc8,0x1a,0x1a,0x1a,
+ 0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1e,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x23,0x22,0x22,0x23,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x22,0x22,0x24,0x24,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x28,0x28,0x27,0x27,0x27,0x26,
+ 0x26,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x29,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0xc8,0x1b,
+ 0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,0x1f,0x1f,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x21,0x21,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x27,0x27,0x27,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x26,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x28,0x28,0x29,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x29,0x28,0x28,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0xc8,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x21,0x21,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x29,
+ 0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x2a,0x2a,0x2a,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1f,0x20,0x1f,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x21,0x21,0x22,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x24,0x24,0x24,0x24,0x24,0x23,
+ 0x23,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x28,0x28,0x27,
+ 0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1b,0x1b,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x21,0x21,
+ 0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x26,0x25,0x26,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x27,0x26,0x26,0x27,0x28,
+ 0x28,0x27,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x26,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1d,0x1d,0x1c,0x1c,0x1c,0x1c,
+ 0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1d,0x1d,0x1d,
+ 0x1e,0x1f,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x22,0x22,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x26,
+ 0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x27,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,
+ 0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x28,0x28,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,
+ 0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0xc8,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,
+ 0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,0x1e,0x1e,
+ 0x1d,0x1d,0x1e,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0xc8,0x1b,0x1b,0x1b,0x1b,
+ 0x1b,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1d,0x1e,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x27,0x27,0x27,
+ 0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0xc8,0x1c,0x1c,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1e,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x23,0x24,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x25,0x25,0x25,0x26,0x28,
+ 0x28,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x29,0x28,0x29,0x2a,0x2a,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x29,0x29,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0xc8,
+ 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1d,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1d,0x1d,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1e,0x1f,0x20,0x20,0x1f,0x1e,
+ 0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x25,
+ 0x25,0x25,0x26,0x26,0x25,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x25,0x25,0x25,0x25,
+ 0x26,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x26,0x26,
+ 0x26,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2a,0x28,0x28,0x28,0x29,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0xc8,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,
+ 0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1e,0x1f,0x1f,0x20,
+ 0x20,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x27,0x25,0x25,
+ 0x25,0x25,0x26,0x27,0x27,0x26,0x26,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x2a,0x2b,0x2b,0x2b,0x2c,0x2b,0x2a,0x2a,0x2a,0x29,0x28,0x29,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2b,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2a,0x2a,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0xc8,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1e,0x1e,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,
+ 0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x21,0x20,0x20,
+ 0x1f,0x1f,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x27,0x28,0x28,0x28,0x27,0x26,0x26,0x26,0x26,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x2a,0x29,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x27,
+ 0x27,0x26,0x26,0x26,0x26,0x25,0x24,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x25,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x28,0x28,0x28,0x28,0x28,0x2a,0x2b,0x2a,0x29,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2b,0x2a,0x2b,0x2b,0x2c,0x2d,0x2e,0x2e,0x2c,0x2b,0x2b,0x2a,0x2a,0x29,0x29,
+ 0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2c,
+ 0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2d,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2b,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0xc8,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1e,0x1e,0x1e,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1e,0x1f,0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x21,
+ 0x20,0x1f,0x1f,0x1f,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x26,0x28,0x28,0x29,0x29,0x2a,0x29,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x29,0x29,0x28,0x28,0x28,
+ 0x28,0x27,0x28,0x28,0x28,0x26,0x25,0x24,0x24,0x24,0x26,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x29,
+ 0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2b,
+ 0x2b,0x2c,0x2b,0x2b,0x2b,0x2d,0x2f,0x2f,0x2f,0x2f,0x2e,0x2c,0x2b,0x2b,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,
+ 0x2f,0x2e,0x2d,0x2d,0x2c,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,
+ 0x31,0x32,0x31,0x30,0x2f,0x2f,0x2f,0x2f,0x2e,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0xc8,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x21,0x20,0x20,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x27,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,
+ 0x2d,0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2b,
+ 0x2a,0x29,0x29,0x28,0x28,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x26,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,
+ 0x2b,0x2c,0x2b,0x2b,0x2b,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,0x29,
+ 0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x30,0x30,0x31,0x31,0x31,0x2f,0x2d,0x2c,
+ 0x2c,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2c,0x2b,0x2b,
+ 0x2b,0x2d,0x2d,0x2e,0x2f,0x2f,0x30,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,
+ 0x31,0x31,0x30,0x30,0x2f,0x2f,0x2e,0x2e,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2d,0x2d,0x2c,0x2e,0x2f,0x2f,0x30,0x31,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x33,0x32,0x32,0x30,0x2f,0x2e,0x2e,0x2c,0x2c,
+ 0x2d,0x2c,0x2c,0x2d,0x2c,0x2c,0x2d,0x2d,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2d,0x2d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0xc8,0x1d,0x1d,0x1d,0x1d,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,
+ 0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x27,0x28,0x2a,0x2a,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x2f,0x30,0x2f,0x2f,0x30,0x30,0x32,0x32,0x33,0x32,0x32,0x31,0x31,0x30,0x30,
+ 0x2f,0x2e,0x2c,0x2b,0x2a,0x29,0x29,0x28,0x28,0x28,0x27,0x26,0x26,0x26,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2b,0x2c,0x2d,0x2d,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2e,0x2d,0x2c,0x2b,0x2b,0x2a,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,
+ 0x2a,0x2b,0x2b,0x2c,0x2d,0x2f,0x30,0x31,0x32,0x33,0x33,0x33,0x33,0x32,0x31,
+ 0x30,0x2f,0x2e,0x2d,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2d,0x2d,0x2e,0x2f,0x2f,0x30,0x31,0x32,0x34,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x36,0x34,0x34,0x33,0x32,0x32,0x31,0x2f,0x2f,0x2e,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2d,0x2e,0x2e,0x2f,0x30,0x32,0x32,0x33,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x34,0x33,0x32,0x30,0x2f,
+ 0x2f,0x2e,0x2d,0x2d,0x2c,0x2d,0x2d,0x2c,0x2d,0x2d,0x2c,0x2c,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,
+ 0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0xc8,0x1e,0x1e,0x1d,
+ 0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1f,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x1f,0x1e,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x21,0x21,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x25,0x25,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2e,0x2f,0x30,0x30,
+ 0x32,0x32,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x33,
+ 0x33,0x33,0x33,0x34,0x33,0x33,0x33,0x35,0x37,0x37,0x38,0x37,0x37,0x36,0x36,
+ 0x34,0x34,0x32,0x31,0x2f,0x2e,0x2c,0x2b,0x2b,0x2a,0x2a,0x29,0x29,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2a,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2b,0x2b,0x2d,0x2f,0x2f,0x2f,0x30,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x30,0x2f,0x2e,0x2c,0x2c,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2d,0x2e,0x30,0x31,0x32,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,
+ 0x36,0x34,0x32,0x31,0x2f,0x2e,0x2d,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2d,0x2d,0x2e,0x2f,0x2f,0x30,0x31,0x32,0x34,0x35,0x36,0x38,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x39,0x38,0x37,0x35,0x34,0x32,0x32,0x30,0x2f,0x2e,0x2c,
+ 0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2e,0x2f,0x2f,0x32,0x33,0x35,
+ 0x36,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x37,0x36,0x34,
+ 0x33,0x31,0x30,0x2f,0x2e,0x2d,0x2d,0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2f,0x2f,0x2e,0x2d,0x2d,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0xc8,0x1e,
+ 0x1e,0x1d,0x1d,0x1d,0x1d,0x1c,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1d,0x1d,0x1d,
+ 0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x25,0x25,0x26,0x27,0x28,0x2a,0x55,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc1,0x38,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x55,0xc7,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xae,0x37,0x37,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x35,0x32,0x31,0x2f,0x2e,0x2c,0x2c,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2e,0x2f,0x30,0x32,0xc4,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x36,0x36,0x33,0x32,0x30,0x2f,0x2e,0x2c,0x2c,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2f,0x30,0x32,0x33,0x36,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc4,0x39,0x36,0x35,0x33,0x31,0x30,0x2f,0x2d,0x2c,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x30,0x31,0x32,0x33,0x42,0x7b,0xa3,0xb7,0xc3,
+ 0xc7,0xc8,0xc8,0xc7,0xc4,0xb6,0x8e,0x45,0x3a,0x39,0x38,0x36,0x34,0x32,0x30,
+ 0x2f,0x2f,0x2d,0x2d,0x2d,0x2b,0x2b,0x2c,0x2c,0x2d,0x2e,0x2f,0x30,0x32,0x34,
+ 0x36,0x38,0x46,0x95,0xb9,0xc5,0xc8,0xc8,0xc8,0xc5,0xba,0x95,0x48,0x3b,0x3a,
+ 0x39,0x36,0x35,0x33,0x32,0x30,0x2f,0x2e,0x2d,0x2c,0x2c,0x2d,0x2d,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,
+ 0xc8,0x1e,0x1e,0x1d,0x1d,0x1d,0x1c,0x1c,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1d,0x1d,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,
+ 0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x27,0x28,0x29,0x2b,0x2d,0x8f,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xa0,0x3a,0x3a,0x39,0x39,0x39,0x39,0x3a,0xbe,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc3,0x42,0x3a,0x3a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x38,0x35,0x33,0x32,0x2f,0x2f,0x2f,0x2f,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2f,0x2f,0x30,0x32,0x33,
+ 0x35,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x3a,0x39,0x37,0x36,0x33,0x32,0x30,0x2f,
+ 0x2e,0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2c,0x2c,
+ 0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x32,0x35,0x36,0x39,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc4,0x3b,0x3a,0x38,0x36,0x33,0x31,0x2f,0x2e,0x2d,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x32,0x32,0x34,0x82,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0x8b,0x3d,0x3b,0x39,0x36,
+ 0x35,0x32,0x30,0x2f,0x2f,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2e,0x2f,0x30,0x32,
+ 0x35,0x37,0x3a,0x8d,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0x8d,0x3e,0x3c,0x3a,0x38,0x36,0x33,0x32,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,
+ 0x2e,0x2e,0xc8,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x22,0x22,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x27,0x28,0x2a,0x2c,0x2f,
+ 0x31,0xb9,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x6a,0x3e,0x3e,0x3d,0x3e,0x3e,0x9d,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x67,0x3e,0x3e,0x3e,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x3b,0x38,0x36,0x35,0x32,0x32,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x32,0x33,
+ 0x36,0x38,0x3a,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x3f,0x3d,0x3c,0x39,0x36,0x35,
+ 0x32,0x31,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x33,0x35,0x36,0x3a,0x3c,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x3f,0x3d,0x3a,0x38,0x35,0x32,0x30,0x2f,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,0x2f,0x2f,
+ 0x2f,0x2f,0x31,0x31,0x31,0x32,0x31,0x31,0x33,0x34,0x35,0x36,0x37,0x93,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x9b,0x3f,
+ 0x3c,0x3a,0x37,0x34,0x32,0x30,0x2f,0x2e,0x2d,0x2d,0x2d,0x2d,0x2f,0x2f,0x31,
+ 0x32,0x35,0x37,0x3b,0x9d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x9d,0x3f,0x3d,0x3a,0x38,0x36,0x33,0x31,0x2f,0x2f,0x2e,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0xc8,0x1e,0x1e,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1e,0x1e,
+ 0x1e,0x1e,0x1f,0x1e,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,
+ 0x20,0x21,0x22,0x23,0x23,0x22,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x26,0x28,0x29,0x2b,
+ 0x2d,0x30,0x33,0x4b,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc3,0x48,0x43,0x43,0x43,
+ 0x6d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x97,0x42,0x41,0x41,0x41,0xc7,0xc7,0xc7,
+ 0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,0xc7,0x3e,0x3b,0x3a,0x37,
+ 0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x35,0x36,0x39,0x3c,0x3d,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x45,0x42,0x40,0x3d,
+ 0x3a,0x38,0x36,0x34,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x32,0x32,0x31,0x31,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,0x31,0x32,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x37,0x3a,
+ 0x3c,0x40,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x42,0x40,0x3d,0x3a,0x37,0x34,0x31,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,0x32,0x32,0x32,0x33,0x33,0x33,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x35,0x36,0x37,0x37,0x3a,
+ 0x93,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x6d,0x40,0x3d,0x3a,0x36,0x33,0x32,0x2f,0x2f,0x2e,0x2d,0x2d,0x2f,0x2f,
+ 0x30,0x32,0x35,0x37,0x3a,0x74,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x78,0x41,0x3d,0x3b,0x38,0x36,0x33,0x31,0x2f,
+ 0x2f,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,
+ 0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0xc8,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1e,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1f,0x20,0x21,0x22,0x23,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x20,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x23,0x23,0x23,
+ 0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x28,
+ 0x29,0x2b,0x2e,0x32,0x35,0x38,0x7e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa8,0x49,
+ 0x49,0x4e,0xc3,0xc8,0xc8,0xc8,0xc8,0xc8,0xb9,0x46,0x45,0x45,0x44,0x44,0x45,
+ 0x47,0x48,0x4b,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x4e,0x4c,0x48,0x45,0x41,0x3e,
+ 0x3c,0x3a,0x39,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x37,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x39,0x3a,0x3c,0x3f,0x42,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x4b,0x48,
+ 0x45,0x42,0x3f,0x3c,0x3a,0x39,0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x39,
+ 0x39,0x38,0x37,0x36,0x36,0x36,0x35,0x34,0x33,0x32,0x32,0x32,0x32,0x33,0x34,
+ 0x35,0x36,0x36,0x38,0x39,0x39,0x3a,0x3a,0x38,0x38,0x37,0x37,0x37,0x38,0x39,
+ 0x3a,0x3d,0x3f,0x42,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x45,0x42,0x3f,0x3c,0x39,
+ 0x36,0x33,0x32,0x30,0x2f,0x2f,0x2f,0x31,0x32,0x33,0x34,0x36,0x35,0x36,0x36,
+ 0x36,0x36,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x38,0x38,0x37,0x38,0x39,0x3a,
+ 0x3a,0x3c,0x95,0xc8,0xc8,0xc2,0x98,0x65,0x4b,0x4d,0x5e,0xa1,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xb3,0x44,0x40,0x3c,0x38,0x35,0x32,0x30,0x2f,0x2f,0x2e,0x2f,
+ 0x2f,0x30,0x32,0x35,0x36,0x3a,0x3d,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0xb7,0x68,
+ 0x53,0x69,0xb9,0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0x45,0x41,0x3d,0x3b,0x37,0x35,
+ 0x32,0x30,0x2f,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xc8,0x1d,0x1d,0x1e,0x1e,0x1e,0x1e,
+ 0x1f,0x20,0x20,0x20,0x1f,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1e,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,
+ 0x27,0x28,0x2a,0x2c,0x2f,0x32,0x37,0x3a,0x3e,0xae,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x7a,0x50,0xad,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0x5a,0x48,0x48,0x45,0x45,
+ 0x45,0x46,0x49,0x4c,0x4e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x52,0x4f,0x4c,0x48,
+ 0x44,0x41,0x3e,0x3d,0x3c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x3e,0x4c,0x9c,0xc0,
+ 0xc7,0xc8,0xc5,0xb4,0x6d,0x3d,0x3d,0x3c,0x3c,0x7e,0xb5,0xc6,0xc8,0xc7,0xbb,
+ 0x7e,0x3b,0x3b,0x3c,0x3c,0x3e,0x41,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x41,0x3f,0x3d,0x3c,0x3b,0x3a,0x47,0x92,0xb9,0xc4,
+ 0xc8,0xc8,0xc8,0xc4,0xb9,0x93,0x48,0x3a,0x3a,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x45,0x91,0xb9,0xc4,0xc8,0xc8,0xc8,0xc4,0xb9,0x94,0x49,0x3c,0x3c,
+ 0x3c,0x3c,0x3e,0x40,0x43,0x46,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x49,0x46,0x42,
+ 0x3d,0x3a,0x37,0x34,0x32,0x31,0x30,0x30,0x32,0x32,0x88,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xb0,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xb8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0x60,0x3c,0x3c,0x3d,0x95,0xc4,0x80,0x45,0x48,0x4a,0x4c,0x4f,0x51,0x53,0x93,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x46,0x43,0x3e,0x3b,0x37,0x35,0x32,0x30,0x30,
+ 0x2f,0x2f,0x30,0x31,0x33,0x36,0x39,0x3c,0x6d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc2,
+ 0x57,0x57,0x57,0x57,0x59,0xc3,0xc8,0xc8,0xc8,0xc8,0xc8,0x6e,0x43,0x40,0x3c,
+ 0x39,0x36,0x33,0x31,0x2f,0x2e,0x2e,0x2d,0x2d,0x2e,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2d,0x2c,0x2d,0x2d,0x2d,0x2c,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xc8,0x1e,0x1e,0x1e,0x1e,
+ 0x1e,0x1f,0x1f,0x20,0x20,0x20,0x20,0x1f,0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1e,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x26,0x27,0x28,0x2a,0x2c,0x2f,0x33,0x37,0x3b,0x40,0x4c,0xc4,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc4,0x89,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x80,0x4d,0x4b,0x48,
+ 0x48,0x45,0x45,0x48,0x4b,0x4c,0x50,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x54,0x51,
+ 0x4d,0x49,0x46,0x42,0x41,0x3f,0x3e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x9b,0xc7,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x98,0x42,0x70,0xc0,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xa5,0x40,0x40,0x41,0x42,0x45,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x45,0x42,0x41,0x40,0x3f,0x94,0xc7,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0x95,0x3d,0x3d,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x93,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0x95,0x3f,0x40,0x41,0x42,0x45,0x47,0x49,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x4c,
+ 0x48,0x44,0x40,0x3c,0x38,0x35,0x33,0x32,0x31,0x32,0x32,0x35,0x3f,0xc7,0xc8,
+ 0xc8,0xc8,0xc8,0xc6,0x40,0x3d,0x3d,0x3d,0x3d,0x3d,0x48,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc0,0x3d,0x3d,0x3f,0x40,0x4a,0x46,0x44,0x46,0x48,0x4b,0x4d,0x50,0x53,
+ 0x54,0x57,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0x49,0x45,0x41,0x3c,0x39,0x36,0x33,
+ 0x31,0x30,0x30,0x30,0x31,0x32,0x35,0x37,0x3b,0x3f,0xa3,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x9a,0x59,0x59,0x5a,0x5a,0x5b,0x9e,0xc8,0xc8,0xc8,0xc8,0xc8,0xa3,0x46,
+ 0x42,0x3e,0x3b,0x37,0x35,0x32,0x30,0x2f,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0xc8,0x20,0x20,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,
+ 0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x22,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x26,0x27,0x28,0x2a,0x2d,0x30,0x34,0x38,0x3b,0x40,0x45,0x73,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa9,0x51,0x4e,
+ 0x4c,0x49,0x48,0x46,0x46,0x48,0x4c,0x4e,0x51,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,
+ 0x57,0x52,0x4f,0x4a,0x47,0x45,0x42,0x41,0x41,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xb3,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x7e,0x45,0x45,0x47,0x48,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x48,0x47,0x45,0x45,0xae,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xae,0x41,0x41,
+ 0x40,0x3f,0x3f,0x40,0xae,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xaf,0x45,0x45,0x47,0x48,0x4b,0x4d,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc4,0x4f,0x4a,0x45,0x41,0x3d,0x39,0x36,0x33,0x32,0x32,0x32,0x35,0x36,0x38,
+ 0xb1,0xc8,0xc8,0xc8,0xc8,0xc8,0x7b,0x42,0x42,0x41,0x42,0x42,0x89,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x95,0x41,0x41,0x41,0x41,0x41,0x42,0x44,0x46,0x48,0x4c,0x4e,
+ 0x50,0x53,0x55,0x57,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x4c,0x47,0x42,0x3e,0x3b,
+ 0x37,0x34,0x32,0x30,0x30,0x30,0x32,0x33,0x36,0x39,0x3d,0x41,0xbb,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x74,0x5b,0x5b,0x5b,0x5c,0x5b,0x77,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xba,0x4a,0x45,0x41,0x3d,0x39,0x36,0x33,0x31,0x30,0x2f,0x2f,0x2e,0x2f,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0xc8,
+ 0x20,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x1e,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x23,0x23,0x22,0x23,0x23,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x28,0x2a,0x2d,0x2f,0x33,0x38,0x3b,0x40,
+ 0x45,0x4b,0xa3,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0x58,
+ 0x53,0x50,0x4c,0x48,0x48,0x47,0x46,0x48,0x4c,0x4e,0x51,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc4,0x57,0x53,0x4f,0x4c,0x48,0x46,0x44,0x44,0x45,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xbd,0x49,0x49,0x4c,0x4d,0xc7,0xc7,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,0xc7,0xc7,0x4c,0x4a,0x48,0x9e,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0x9c,0x45,0x45,0x45,0x45,0x9c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x9d,0x4b,0x4c,0x4c,0x4f,0x50,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc4,0x50,0x4c,0x46,0x42,0x3d,0x3a,0x36,0x34,0x33,0x32,0x33,0x36,
+ 0x38,0x3a,0x74,0xc8,0xc8,0xc8,0xc8,0xc8,0xb0,0x46,0x46,0x46,0x46,0x47,0xb7,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x52,0x43,0x42,0x41,0x41,0x41,0x42,0x43,0x46,0x49,
+ 0x4c,0x4e,0x50,0x53,0x56,0x5e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x4e,0x48,0x44,
+ 0x40,0x3c,0x38,0x36,0x33,0x32,0x31,0x31,0x32,0x35,0x36,0x3a,0x3e,0x43,0xc4,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x5d,0x5c,0x5c,0x5c,0x5d,0x5c,0x5e,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc4,0x4d,0x48,0x44,0x3f,0x3b,0x38,0x35,0x32,0x31,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x30,0x30,0x2f,0x2f,
+ 0x30,0xc8,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x21,0x22,0x21,0x21,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x20,0x21,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x21,0x21,0x22,
+ 0x23,0x23,0x23,0x23,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x27,0x28,0x2a,0x2b,0x2f,0x32,0x36,
+ 0x3a,0x40,0x45,0x4b,0x52,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0x72,0x57,0x53,0x50,0x4c,0x48,0x46,0x45,0x45,0x48,0x4b,0x4e,0x51,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc4,0x57,0x53,0x4f,0x4b,0x48,0x47,0x45,0x45,0x47,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc4,0x9c,0x7d,0x8a,0xbf,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc6,0xa4,0x7d,0x83,0xb6,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x50,0x4f,0x4f,0x51,
+ 0x53,0x55,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x5e,0x5b,0x58,0x55,0x52,0x50,0x4e,
+ 0x5f,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa7,0x5c,0x50,0x5e,0xa8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x5d,0x4a,0x49,0x5d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa7,0x5c,
+ 0x51,0x5e,0xa8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x61,0x4f,0x50,0x52,0x53,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc4,0x52,0x4d,0x48,0x43,0x3e,0x3a,0x37,0x35,0x33,0x33,
+ 0x34,0x36,0x39,0x3c,0x3f,0xc4,0xc8,0xc8,0xc8,0xc8,0xc6,0x4c,0x4c,0x4c,0x4c,
+ 0x52,0xc7,0xc8,0xc8,0xc8,0xc8,0xb7,0x48,0x46,0x45,0x44,0x42,0x41,0x42,0x44,
+ 0x45,0x48,0x4a,0x4d,0x50,0x53,0x56,0x99,0xc8,0xc8,0xc8,0xc8,0xc8,0xb5,0x4f,
+ 0x49,0x45,0x41,0x3d,0x39,0x36,0x33,0x32,0x32,0x32,0x33,0x36,0x38,0x3c,0x41,
+ 0x45,0xc7,0xc8,0xc8,0xc8,0xc8,0xc6,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0xc7,
+ 0xc8,0xc8,0xc8,0xc8,0xc7,0x50,0x4b,0x46,0x41,0x3c,0x3a,0x37,0x34,0x32,0x31,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,0x31,0x30,0x30,
+ 0x30,0x30,0x30,0xc8,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x1e,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x23,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x23,0x23,0x23,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x27,0x27,0x28,0x29,0x2b,0x2f,
+ 0x31,0x35,0x3a,0x3f,0x45,0x4b,0x50,0x6d,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x96,0x5d,0x58,0x54,0x50,0x4c,0x48,0x45,0x45,0x45,0x46,0x48,0x4c,0x50,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,0x53,0x50,0x4c,0x49,0x48,0x46,0x46,0x48,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x5b,0x58,0x57,0x58,0x65,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0x63,0x58,0x57,0x57,0x58,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x69,0x51,
+ 0x52,0x53,0x55,0x58,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x61,0x5e,0x5a,0x57,0x54,
+ 0x53,0x51,0xa3,0xc8,0xc8,0xc8,0xc8,0xc8,0xb2,0x54,0x54,0x55,0x55,0x55,0xb2,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xa3,0x50,0x4f,0xa3,0xc8,0xc8,0xc8,0xc8,0xc8,0xb2,
+ 0x54,0x55,0x56,0x56,0x56,0xb2,0xc8,0xc8,0xc8,0xc8,0xc8,0xa3,0x53,0x54,0x54,
+ 0x57,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x53,0x4e,0x49,0x45,0x3f,0x3a,0x37,0x35,
+ 0x34,0x34,0x35,0x36,0x3a,0x3d,0x41,0xa4,0xc8,0xc8,0xc8,0xc8,0xc8,0x80,0x50,
+ 0x51,0x50,0x8b,0xc8,0xc8,0xc8,0xc8,0xc8,0x84,0x4a,0x48,0x46,0x44,0x42,0x41,
+ 0x41,0x43,0x44,0x46,0x48,0x4c,0x4f,0x52,0x60,0xc6,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0x81,0x50,0x4b,0x46,0x41,0x3d,0x3a,0x36,0x34,0x33,0x33,0x33,0x35,0x37,0x3a,
+ 0x3e,0x42,0x47,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x5e,0x5e,0x5e,0x5e,0x5d,0x5e,
+ 0x5e,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x53,0x4d,0x48,0x43,0x3e,0x3a,0x37,0x34,
+ 0x32,0x31,0x30,0x30,0x30,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x30,0x30,0x30,0x30,0x31,0x30,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,
+ 0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0xc8,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x20,0x1f,0x1e,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x22,0x23,0x23,0x21,0x20,0x20,0x20,0x20,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x26,0x26,0x26,0x27,0x28,0x29,
+ 0x2b,0x2f,0x31,0x34,0x39,0x3e,0x44,0x4a,0x50,0x57,0xb2,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x75,0x5e,0x5a,0x54,0x50,0x4c,0x48,0x45,0x43,0x43,0x45,0x47,
+ 0x4b,0x4f,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,0x54,0x50,0x4c,0x4a,0x48,0x47,
+ 0x48,0x49,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5b,0x5b,0x5b,0x5b,0x5c,0xc5,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x5c,0x5b,0x5b,0x5a,0x5a,0xbd,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0x77,0x54,0x54,0x55,0x57,0x59,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x62,0x5f,0x5c,
+ 0x59,0x57,0x54,0x53,0xbf,0xc8,0xc8,0xc8,0xc8,0xc8,0x75,0x57,0x57,0x58,0x58,
+ 0x59,0x79,0xc8,0xc8,0xc8,0xc8,0xc8,0xbf,0x54,0x54,0xc0,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x77,0x58,0x59,0x59,0x59,0x59,0x79,0xc8,0xc8,0xc8,0xc8,0xc8,0xbf,0x55,
+ 0x57,0x58,0x59,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x53,0x50,0x4b,0x45,0x40,0x3a,
+ 0x37,0x35,0x34,0x34,0x35,0x37,0x3b,0x3e,0x42,0x62,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xb1,0x55,0x56,0x54,0xb6,0xc8,0xc8,0xc8,0xc8,0xc6,0x50,0x4c,0x49,0x46,0x44,
+ 0x42,0x41,0x41,0x41,0x43,0x45,0x48,0x4c,0x4f,0x53,0xba,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xbd,0x55,0x50,0x4c,0x46,0x41,0x3d,0x3a,0x37,0x35,0x33,0x33,0x34,0x36,
+ 0x38,0x3b,0x3f,0x44,0x49,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5f,0x5f,0x5e,0x5e,
+ 0x5d,0x5e,0x5e,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x53,0x4f,0x49,0x45,0x3f,0x3b,
+ 0x37,0x34,0x32,0x32,0x31,0x30,0x30,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0xc8,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x22,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x24,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x27,0x27,0x27,0x28,
+ 0x28,0x2a,0x2b,0x2e,0x30,0x34,0x38,0x3e,0x44,0x49,0x51,0x7b,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0x61,0x5a,0x55,0x50,0x4b,0x47,0x45,0x42,0x43,
+ 0x44,0x46,0x49,0x4e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,0x53,0x50,0x4d,0x4a,
+ 0x48,0x48,0x48,0x4c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5e,0x5e,0x5e,0x5f,0x5f,
+ 0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x5e,0x5e,0x5e,0x5e,0x5d,0xbb,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0x7b,0x57,0x57,0x57,0x58,0x5a,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x61,
+ 0x5e,0x5c,0x58,0x57,0x55,0x54,0xc7,0xc8,0xc8,0xc8,0xc8,0xc7,0x5a,0x5a,0x5a,
+ 0x5b,0x5b,0x5c,0x5c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0x5a,0x5a,0xc7,0xc8,0xc8,
+ 0xc8,0xc8,0xc7,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc7,0x58,0x5a,0x5a,0x5a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x54,0x4f,0x4a,0x45,
+ 0x40,0x3b,0x38,0x36,0x35,0x35,0x36,0x38,0x3b,0x3f,0x44,0x48,0xbf,0xc8,0xc8,
+ 0xc8,0xc8,0xc6,0x59,0x59,0x5b,0xc7,0xc8,0xc8,0xc8,0xc8,0xab,0x50,0x4d,0x49,
+ 0x46,0x44,0x41,0x41,0x41,0x41,0x43,0x45,0x48,0x4c,0x50,0xb0,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc7,0x70,0x55,0x51,0x4c,0x47,0x41,0x3e,0x3a,0x38,0x36,0x36,0x35,
+ 0x36,0x37,0x3a,0x3d,0x41,0x45,0x4a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x60,0x5f,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x53,0x4f,0x4a,0x45,
+ 0x40,0x3c,0x37,0x35,0x32,0x32,0x31,0x31,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0xc8,0x20,0x20,0x20,0x1f,0x1f,
+ 0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,
+ 0x21,0x20,0x21,0x22,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x26,0x27,0x27,
+ 0x27,0x28,0x28,0x29,0x2b,0x2e,0x30,0x35,0x39,0x3d,0x44,0x4a,0x58,0xc4,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa6,0x5a,0x55,0x4f,0x4a,0x47,0x43,
+ 0x42,0x42,0x43,0x45,0x48,0x4d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,0x53,0x50,
+ 0x4d,0x4a,0x48,0x48,0x4a,0x4c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5f,0x5f,0x60,
+ 0x61,0x61,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x61,0x60,0x60,0x5e,0x5e,0xbc,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x7c,0x59,0x57,0x58,0x59,0x5a,0xc4,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x62,0x5f,0x5d,0x59,0x57,0x57,0x56,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x5d,
+ 0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x5d,0x5d,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc5,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5d,0xc5,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x5b,0x5b,0x5c,0x5d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x54,0x4f,
+ 0x49,0x45,0x40,0x3b,0x38,0x36,0x35,0x35,0x36,0x38,0x3b,0x3f,0x44,0x49,0x96,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x86,0x5e,0x8d,0xc8,0xc8,0xc8,0xc8,0xc8,0x71,0x51,
+ 0x4e,0x4b,0x47,0x44,0x41,0x41,0x41,0x41,0x43,0x45,0x48,0x4c,0xae,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x8d,0x59,0x54,0x50,0x4c,0x47,0x41,0x3e,0x3b,0x39,0x37,
+ 0x36,0x37,0x37,0x3a,0x3d,0x3f,0x43,0x47,0x4c,0xc7,0xc8,0xc8,0xc8,0xc8,0xc6,
+ 0x60,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0xc7,0xc8,0xc8,0xc8,0xc8,0xc7,0x54,0x4f,
+ 0x49,0x45,0x41,0x3c,0x38,0x35,0x34,0x32,0x31,0x31,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,
+ 0x31,0x30,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x31,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0xc8,0x20,0x20,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x23,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x22,0x22,0x21,0x21,0x21,0x22,0x23,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x28,0x28,0x29,0x2b,0x2e,0x31,0x36,0x39,0x3e,0x44,0x4b,0xb2,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x7a,0x55,0x4f,0x4a,
+ 0x47,0x43,0x42,0x42,0x43,0x45,0x49,0x4e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,
+ 0x53,0x50,0x4d,0x4a,0x48,0x49,0x4c,0x4d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5f,
+ 0x60,0x61,0x61,0x62,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x62,0x61,0x60,0x60,0x5f,
+ 0xbc,0xc8,0xc8,0xc8,0xc8,0xc8,0x7d,0x5a,0x59,0x59,0x5a,0x5a,0xc4,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x62,0x5f,0x5d,0x5a,0x58,0x57,0x57,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc5,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0x60,
+ 0x60,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x61,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0xc5,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x5d,0x5d,0x5d,0x5d,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,
+ 0x54,0x4f,0x4a,0x45,0x41,0x3c,0x39,0x36,0x35,0x35,0x36,0x39,0x3b,0x40,0x45,
+ 0x49,0x58,0xc8,0xc8,0xc8,0xc8,0xc8,0xb2,0x61,0xb6,0xc8,0xc8,0xc8,0xc8,0xc1,
+ 0x56,0x52,0x4e,0x4b,0x47,0x44,0x41,0x41,0x41,0x41,0x44,0x46,0x4c,0xb4,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x99,0x5a,0x57,0x53,0x50,0x4b,0x47,0x41,0x3f,0x3c,
+ 0x3a,0x38,0x38,0x38,0x3a,0x3b,0x3d,0x41,0x45,0x48,0x4c,0xc4,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0x61,0x5e,0x5e,0x5d,0x5d,0x5d,0x5f,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,
+ 0x54,0x4f,0x4a,0x45,0x41,0x3d,0x38,0x36,0x34,0x32,0x31,0x31,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x30,0x31,0x31,
+ 0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0xc8,0x1f,
+ 0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x1f,0x1f,
+ 0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x22,0x21,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x22,0x22,0x21,0x20,0x20,0x20,
+ 0x20,0x21,0x22,0x23,0x22,0x22,0x22,0x22,0x23,0x23,0x22,0x22,0x22,0x22,0x22,
+ 0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x26,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x28,0x28,0x29,0x2b,0x2e,0x32,0x36,0x3a,0x3f,0x45,
+ 0x88,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0xc3,0x5a,
+ 0x50,0x4b,0x46,0x43,0x41,0x41,0x42,0x46,0x4a,0x4e,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc4,0x57,0x54,0x50,0x4d,0x4c,0x4a,0x4b,0x4c,0x4f,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc4,0x5f,0x61,0x61,0x62,0x62,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x62,0x62,0x61,
+ 0x61,0x60,0xbc,0xc8,0xc8,0xc8,0xc8,0xc8,0x7e,0x5a,0x59,0x59,0x5a,0x5a,0xc4,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x61,0x5e,0x5d,0x5a,0x58,0x57,0x57,0xc7,0xc8,0xc8,
+ 0xc8,0xc8,0xc7,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0xc7,0xc8,0xc8,0xc8,0xc8,
+ 0xc7,0x62,0x63,0xc7,0xc8,0xc8,0xc8,0xc8,0xc7,0x62,0x60,0x5f,0x5f,0x5e,0x5e,
+ 0x5f,0xc7,0xc8,0xc8,0xc8,0xc8,0xc7,0x5f,0x5e,0x5e,0x5e,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc4,0x55,0x50,0x4a,0x45,0x41,0x3d,0x39,0x36,0x36,0x36,0x36,0x39,0x3c,
+ 0x3f,0x44,0x49,0x4e,0xb6,0xc8,0xc8,0xc8,0xc8,0xc6,0x65,0xc7,0xc8,0xc8,0xc8,
+ 0xc8,0x9e,0x57,0x52,0x4e,0x4b,0x47,0x45,0x42,0x41,0x41,0x44,0x45,0x53,0xbd,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x98,0x5c,0x5a,0x57,0x53,0x4f,0x4b,0x47,0x43,
+ 0x40,0x3d,0x3c,0x3a,0x3a,0x3a,0x3b,0x3d,0x3f,0x41,0x45,0x49,0x4d,0xbc,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x78,0x5e,0x5d,0x5d,0x5c,0x5c,0x79,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xbb,0x54,0x50,0x4a,0x45,0x41,0x3d,0x39,0x36,0x34,0x32,0x30,0x30,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x2f,0x30,0x30,
+ 0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x32,0x32,
+ 0xc8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x1f,0x1f,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x21,
+ 0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x20,0x20,0x20,0x21,0x22,0x21,0x21,
+ 0x20,0x20,0x21,0x22,0x23,0x23,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,
+ 0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x26,0x25,0x25,0x25,0x25,0x24,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x28,0x28,0x2a,0x2b,0x2e,0x32,0x36,0x3a,
+ 0x3f,0x5a,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xa4,0x8c,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xae,0x50,0x4c,0x47,0x44,0x42,0x42,0x44,0x47,0x4a,0x4f,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc4,0x58,0x55,0x51,0x4e,0x4c,0x4b,0x4b,0x4c,0x4f,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc4,0x5f,0x60,0x61,0x61,0x61,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x62,
+ 0x61,0x60,0x5f,0x5f,0xbc,0xc8,0xc8,0xc8,0xc8,0xc8,0x7e,0x5a,0x59,0x58,0x59,
+ 0x5a,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x60,0x5e,0x5b,0x5a,0x58,0x57,0x57,0xc0,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x78,0x5e,0x5e,0x5e,0x5e,0x5f,0x75,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc0,0x65,0x65,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0x7b,0x61,0x5f,0x5f,
+ 0x5f,0x5f,0x76,0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0x5f,0x5f,0x5f,0x5e,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc4,0x54,0x50,0x4b,0x45,0x41,0x3d,0x39,0x36,0x36,0x35,0x36,
+ 0x37,0x3b,0x3e,0x43,0x48,0x4d,0x83,0xc8,0xc8,0xc8,0xc8,0xc8,0xa7,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x65,0x57,0x52,0x4e,0x4a,0x46,0x44,0x43,0x42,0x43,0x45,0x67,
+ 0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0x8c,0x5e,0x5c,0x59,0x57,0x53,0x4f,0x4b,
+ 0x47,0x44,0x41,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3f,0x41,0x43,0x46,0x4a,0x4f,
+ 0xa7,0xc8,0xc8,0xc8,0xc8,0xc8,0xa0,0x5e,0x5e,0x5d,0x5d,0x5c,0xa1,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xa6,0x53,0x50,0x4b,0x45,0x41,0x3d,0x38,0x36,0x33,0x32,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x2f,
+ 0x2f,0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x31,0x31,
+ 0x32,0x32,0xc8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x21,0x22,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x23,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x28,0x29,0x2b,0x2c,0x2f,0x32,
+ 0x36,0x3b,0x40,0xbd,0xc8,0xc8,0xc8,0xc8,0xc8,0xc0,0x68,0x69,0xb2,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x82,0x4c,0x48,0x45,0x45,0x45,0x45,0x48,0x4c,0x50,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc4,0x58,0x55,0x52,0x4f,0x4c,0x4c,0x4c,0x4e,0x50,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc4,0x5e,0x5e,0x5f,0x5f,0x60,0xc4,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x61,0x60,0x5f,0x5e,0x5e,0xbb,0xc8,0xc8,0xc8,0xc8,0xc8,0x7e,0x5a,0x59,
+ 0x58,0x58,0x5a,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x76,0x5d,0x5c,0x5a,0x59,0x57,
+ 0x58,0xa6,0xc8,0xc8,0xc8,0xc8,0xc8,0xb2,0x5f,0x5f,0x5f,0x5f,0x5f,0xb3,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xa9,0x65,0x65,0xaa,0xc8,0xc8,0xc8,0xc8,0xc8,0xb2,0x61,
+ 0x5f,0x5f,0x5f,0x5f,0xb3,0xc8,0xc8,0xc8,0xc8,0xc8,0xa8,0x60,0x5f,0x5e,0x5f,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x54,0x50,0x4b,0x46,0x41,0x3c,0x39,0x36,0x35,
+ 0x34,0x36,0x36,0x3a,0x3d,0x41,0x46,0x4c,0x52,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xb9,0x5b,0x57,0x52,0x4d,0x49,0x46,0x44,0x44,0x44,0x45,
+ 0x85,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x79,0x5f,0x5e,0x5c,0x5a,0x57,0x53,
+ 0x4f,0x4b,0x48,0x45,0x42,0x40,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x42,0x45,0x47,
+ 0x4b,0x4f,0x79,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x62,0x5e,0x5e,0x5e,0x61,0xc4,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x7a,0x54,0x50,0x4a,0x45,0x41,0x3c,0x38,0x36,0x34,
+ 0x32,0x31,0x30,0x30,0x30,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x31,
+ 0x31,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x30,0x31,0x32,0x31,0x31,0x31,0x31,
+ 0x30,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x31,0x31,0x31,0x30,
+ 0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0xc8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x20,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x22,0x23,0x22,0x22,0x22,0x21,0x21,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x23,0x23,0x23,0x22,0x22,0x21,0x22,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x23,0x24,0x24,
+ 0x24,0x24,0x25,0x24,0x24,0x24,0x23,0x22,0x24,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x29,0x2b,0x2c,0x2e,
+ 0x2f,0x32,0x37,0x3c,0x9a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0x77,0x65,0x67,0x6c,
+ 0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0xc5,0x59,0x4a,0x48,0x45,0x45,0x47,0x48,0x4d,
+ 0x51,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x58,0x55,0x52,0x4f,0x4d,0x4c,0x4c,0x4e,
+ 0x50,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5e,0x5e,0x5d,0x5d,0x5e,0xc4,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x5f,0x5e,0x5d,0x5c,0x5d,0xbb,0xc8,0xc8,0xc8,0xc8,0xc8,0x7d,
+ 0x59,0x57,0x57,0x57,0x58,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0xbd,0x6a,0x5c,0x6d,
+ 0x9d,0x59,0x59,0x6a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xac,0x6c,0x5f,0x6a,0xaa,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x72,0x63,0x63,0x72,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xac,0x6d,0x5f,0x6a,0xaa,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x6e,0x5e,0x5e,
+ 0x5e,0x5e,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x53,0x4f,0x4a,0x45,0x41,0x3c,0x39,
+ 0x36,0x34,0x33,0x34,0x36,0x39,0x3c,0x41,0x45,0x4b,0x50,0xaa,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x8c,0x5a,0x56,0x51,0x4c,0x49,0x46,0x45,0x44,
+ 0x48,0xa8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xba,0x68,0x61,0x61,0x5e,0x5e,0x5a,
+ 0x56,0x53,0x4f,0x4c,0x48,0x45,0x43,0x41,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x45,
+ 0x46,0x48,0x4c,0x4f,0x53,0xc2,0xc8,0xc8,0xc8,0xc8,0xc8,0xbb,0x73,0x5f,0x73,
+ 0xbc,0xc8,0xc8,0xc8,0xc8,0xc8,0xc2,0x58,0x53,0x4f,0x49,0x45,0x40,0x3b,0x38,
+ 0x36,0x34,0x32,0x31,0x30,0x30,0x30,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x2f,0x31,0x32,0x31,0x31,
+ 0x31,0x30,0x30,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x31,
+ 0x32,0x31,0x31,0x32,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x32,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x31,0x31,0x31,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x31,0x31,0xc8,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x20,0x1f,0x1f,0x1f,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x20,0x1f,0x21,0x22,0x23,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x24,0x24,0x23,0x23,0x23,0x22,0x22,0x22,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x23,0x23,0x24,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x29,0x29,0x2b,
+ 0x2c,0x2f,0x31,0x35,0x39,0x67,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x9c,0x60,0x62,
+ 0x64,0x64,0x89,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xb5,0x4c,0x48,0x48,0x47,0xc7,
+ 0xc7,0xc7,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,0xc7,0x4e,0x4c,
+ 0x4c,0x4f,0x50,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x5a,0x5b,0x5b,0x5b,0x5a,0xc4,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x5d,0x5d,0x5c,0x5a,0x5a,0xbb,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x7c,0x57,0x57,0x56,0x56,0x57,0xae,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x58,0x59,0x59,0xa4,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa5,0x62,0x62,0x61,0x61,0xa7,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa4,0x5e,
+ 0x5d,0x5d,0x5c,0x5c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x53,0x4e,0x4a,0x45,0x3f,
+ 0x3b,0x38,0x36,0x33,0x33,0x33,0x36,0x37,0x3b,0x3e,0x44,0x49,0x4e,0x6e,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc6,0x5e,0x59,0x55,0x50,0x4c,0x48,0x46,
+ 0x45,0x45,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0xc7,0xc7,0xc7,0xc7,
+ 0xc7,0xc7,0xc7,0xc7,0xc7,0x4c,0x48,0x47,0x45,0x44,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc4,0x46,0x47,0x49,0x4c,0x4f,0x52,0x84,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x89,0x57,0x53,0x4d,0x48,0x43,0x3f,
+ 0x3a,0x38,0x36,0x34,0x32,0x32,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x31,0x32,
+ 0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x32,0x31,0x30,0x30,0x30,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,
+ 0x32,0x32,0x31,0x30,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0xc8,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x1f,0x20,0x20,0x20,0x20,0x20,
+ 0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x22,0x22,0x22,0x20,0x20,0x22,0x23,0x24,0x23,0x22,0x21,0x21,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,
+ 0x24,0x24,0x24,0x24,0x26,0x26,0x26,0x25,0x25,0x24,0x25,0x26,0x26,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x2a,0x2b,0x2c,0x2f,0x32,0x36,0x42,0xc3,0xc8,0xc8,0xc8,0xc8,0xc8,0xbd,0x5a,
+ 0x5c,0x5e,0x5f,0x5f,0x5f,0xb1,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x8d,0x4a,0x48,
+ 0x48,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0x4e,0x4c,0x4d,0x4e,0x4f,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x59,0x59,0x58,0x58,
+ 0x58,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x5b,0x5a,0x5a,0x59,0x59,0xbb,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0x7b,0x55,0x55,0x54,0x54,0x55,0x73,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x56,0x56,0x57,0x58,0xb4,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xb4,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,
+ 0xb5,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xb3,
+ 0x5c,0x5b,0x5b,0x5b,0x5a,0x5a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x51,0x4d,0x48,
+ 0x44,0x3e,0x3b,0x38,0x36,0x34,0x34,0x34,0x35,0x36,0x3a,0x3d,0x41,0x46,0x4c,
+ 0x51,0xc0,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xae,0x5b,0x58,0x53,0x4f,0x4b,
+ 0x48,0x46,0x45,0x46,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x4c,0x49,0x47,0x45,0x45,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc4,0x48,0x48,0x49,0x4c,0x4e,0x50,0x53,0xa5,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xa9,0x57,0x53,0x50,0x4b,0x46,
+ 0x42,0x3d,0x3a,0x37,0x35,0x33,0x32,0x32,0x32,0x32,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,
+ 0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x30,
+ 0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x33,0xc8,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x22,0x22,0x23,0x21,0x21,0x23,0x24,0x24,0x23,0x22,0x21,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x25,0x24,0x25,0x26,0x26,
+ 0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x2a,0x2b,0x2d,0x2f,0x32,0x36,0xac,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0x68,0x57,0x59,0x59,0x5b,0x5b,0x5b,0x61,0xc5,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0x61,0x48,0x48,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0x4e,0x4c,0x4c,0x4d,0x4f,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x57,0x56,
+ 0x56,0x56,0x55,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x58,0x57,0x57,0x56,0x57,0xba,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0x79,0x53,0x53,0x51,0x51,0x52,0x54,0x9b,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x54,0x54,0x54,0x56,0x57,0xa0,0xc7,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0xa0,0x5c,0x5b,0x5b,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0xa0,0xc7,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,
+ 0xa0,0x5a,0x59,0x59,0x59,0x58,0x57,0x57,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x50,
+ 0x4c,0x47,0x43,0x3e,0x3a,0x37,0x35,0x34,0x32,0x32,0x34,0x36,0x38,0x3c,0x40,
+ 0x45,0x49,0x4e,0x9b,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x76,0x59,0x56,0x51,
+ 0x4c,0x49,0x47,0x45,0x45,0x45,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x4c,0x49,0x48,0x47,0x46,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc4,0x48,0x48,0x49,0x4b,0x4c,0x4f,0x51,0x54,0x98,0xc7,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc7,0x9b,0x58,0x55,0x51,0x4d,
+ 0x48,0x45,0x40,0x3d,0x39,0x36,0x34,0x33,0x32,0x32,0x32,0x32,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0xc8,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x20,0x20,
+ 0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x21,0x20,0x20,0x21,0x22,0x22,0x22,0x22,
+ 0x21,0x20,0x20,0x20,0x21,0x22,0x23,0x24,0x22,0x22,0x24,0x24,0x24,0x24,0x22,
+ 0x22,0x22,0x23,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x25,0x26,0x25,0x24,0x24,0x24,0x25,0x26,0x27,0x27,0x26,0x25,0x24,0x25,
+ 0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x2b,0x2b,0x2d,0x2f,0x32,0x7a,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0x92,0x52,0x53,0x54,0x55,0x57,0x57,0x57,0x57,0x82,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xbd,0x4a,0x4a,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0x4d,0x4c,0x4b,0x4c,0x4c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,
+ 0x53,0x53,0x52,0x52,0x52,0xc4,0xc8,0xc8,0xc8,0xc8,0xc8,0x56,0x54,0x54,0x53,
+ 0x53,0xba,0xc8,0xc8,0xc8,0xc8,0xc8,0x77,0x50,0x50,0x4e,0x4e,0x4f,0x50,0x51,
+ 0x75,0xb2,0xc4,0xc7,0xc8,0xc8,0xc7,0xc3,0xb5,0x52,0x52,0x53,0x53,0x54,0x56,
+ 0x62,0x9e,0xbd,0xc5,0xc8,0xc8,0xc8,0xc5,0xbc,0x9e,0x63,0x59,0x58,0x57,0x57,
+ 0x56,0x56,0x56,0x56,0x57,0x58,0x64,0x9f,0xbd,0xc5,0xc8,0xc8,0xc8,0xc5,0xbc,
+ 0x9f,0x62,0x59,0x57,0x57,0x56,0x56,0x54,0x53,0x53,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc4,0x4d,0x49,0x45,0x41,0x3d,0x3a,0x37,0x34,0x32,0x32,0x32,0x33,0x35,0x37,
+ 0x3a,0x3d,0x41,0x46,0x4c,0x5c,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc1,0x59,0x56,
+ 0x53,0x4e,0x4a,0x47,0x45,0x44,0x44,0x45,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0x4c,0x4a,0x48,0x47,
+ 0x47,0xc8,0xc8,0xc8,0xc8,0xc8,0xc4,0x48,0x48,0x49,0x4a,0x4c,0x4e,0x50,0x52,
+ 0x55,0x62,0xa0,0xbd,0xc5,0xc8,0xc8,0xc8,0xc6,0xbd,0xa2,0x65,0x58,0x56,0x53,
+ 0x4f,0x4a,0x46,0x43,0x3f,0x3c,0x3a,0x36,0x33,0x32,0x32,0x32,0x32,0x32,0x30,
+ 0x2f,0x2f,0x2f,0x30,0x31,0x31,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0xc8,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x21,
+ 0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x20,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x21,0x21,0x21,0x22,0x22,0x22,0x23,0x22,0x22,0x23,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x25,
+ 0x25,0x26,0x28,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x2a,0x29,0x2b,0x2b,0x2d,0x2f,0x32,0x36,0x39,0x3d,0x41,
+ 0x45,0x48,0x4a,0x4c,0x4e,0x4f,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x51,0x50,
+ 0x50,0x4f,0x4c,0x4b,0x4a,0x49,0x49,0x4a,0x4c,0x4f,0x51,0x54,0x55,0x57,0x57,
+ 0x57,0x57,0x54,0x53,0x50,0x4d,0x4c,0x49,0x48,0x49,0x4a,0x4c,0x4c,0x4e,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x51,0x51,0x51,0x51,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x4e,0x4d,0x4c,0x4b,0x4b,0x4c,
+ 0x4c,0x4e,0x50,0x51,0x52,0x53,0x53,0x53,0x53,0x51,0x50,0x50,0x4f,0x50,0x50,
+ 0x50,0x52,0x53,0x54,0x54,0x55,0x56,0x57,0x57,0x57,0x56,0x55,0x56,0x55,0x54,
+ 0x53,0x51,0x51,0x50,0x51,0x52,0x52,0x53,0x54,0x56,0x57,0x57,0x57,0x58,0x58,
+ 0x57,0x57,0x57,0x57,0x55,0x54,0x53,0x53,0x51,0x50,0x50,0x50,0x50,0x51,0x51,
+ 0x51,0x50,0x4d,0x4b,0x47,0x43,0x3f,0x3c,0x38,0x36,0x34,0x32,0x32,0x32,0x32,
+ 0x35,0x36,0x39,0x3c,0x40,0x44,0x49,0x4d,0x52,0x55,0x58,0x5a,0x5a,0x59,0x58,
+ 0x55,0x52,0x4f,0x4b,0x47,0x45,0x42,0x41,0x43,0x45,0x47,0x49,0x4e,0x51,0x56,
+ 0x58,0x5b,0x5e,0x5e,0x5e,0x5e,0x5d,0x5b,0x58,0x56,0x53,0x50,0x4e,0x4b,0x49,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4b,
+ 0x4e,0x4f,0x52,0x53,0x56,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x58,0x56,
+ 0x53,0x4f,0x4c,0x48,0x45,0x41,0x3d,0x3a,0x39,0x36,0x33,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x33,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0xc8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,
+ 0x22,0x22,0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x25,0x25,0x26,0x27,0x27,0x26,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x27,0x28,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2b,0x2c,0x2e,0x30,0x32,0x36,0x39,
+ 0x3c,0x3f,0x42,0x45,0x48,0x49,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4a,0x48,0x48,0x48,0x48,0x48,0x4b,0x4c,0x4f,0x51,0x53,
+ 0x53,0x54,0x54,0x53,0x51,0x4f,0x4c,0x4a,0x48,0x48,0x46,0x46,0x47,0x48,0x49,
+ 0x4b,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x49,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x4a,0x4c,0x4d,0x4e,0x4f,0x50,0x50,0x4f,0x4e,0x4d,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4e,0x50,0x51,0x51,0x53,0x53,0x53,0x53,0x53,0x52,0x51,
+ 0x50,0x4f,0x4e,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x51,0x51,0x50,0x4f,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4c,0x4c,0x49,0x47,0x44,0x41,0x3e,0x3a,0x37,0x36,0x33,0x32,0x32,
+ 0x32,0x32,0x33,0x35,0x37,0x3a,0x3e,0x41,0x45,0x4a,0x4e,0x51,0x53,0x56,0x55,
+ 0x55,0x53,0x51,0x4e,0x4a,0x47,0x45,0x42,0x41,0x41,0x41,0x43,0x45,0x48,0x4c,
+ 0x4f,0x53,0x56,0x58,0x5a,0x5b,0x5b,0x5a,0x59,0x58,0x56,0x53,0x50,0x4e,0x4b,
+ 0x49,0x47,0x47,0x46,0x46,0x46,0x47,0x48,0x48,0x47,0x46,0x46,0x47,0x46,0x46,
+ 0x47,0x48,0x4a,0x4c,0x4f,0x50,0x52,0x54,0x56,0x56,0x56,0x56,0x57,0x56,0x56,
+ 0x54,0x52,0x4f,0x4c,0x48,0x45,0x41,0x3e,0x3b,0x3a,0x37,0x35,0x35,0x33,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x34,0x33,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x35,0x35,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x34,0x33,0x33,0xc8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x25,0x24,0x24,0x24,0x25,
+ 0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x26,0x26,0x26,0x26,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x27,0x28,0x28,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2d,0x30,0x32,
+ 0x34,0x37,0x3a,0x3d,0x3f,0x42,0x44,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x47,
+ 0x47,0x48,0x48,0x48,0x48,0x48,0x47,0x45,0x45,0x45,0x45,0x45,0x48,0x49,0x4c,
+ 0x4c,0x4e,0x4f,0x50,0x50,0x4f,0x4d,0x4b,0x48,0x46,0x45,0x45,0x44,0x43,0x44,
+ 0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x47,0x46,0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x45,
+ 0x43,0x43,0x43,0x44,0x45,0x47,0x48,0x48,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,0x49,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x4b,0x4c,0x4c,0x4d,0x4f,0x4f,0x4f,0x4f,0x4e,
+ 0x4e,0x4c,0x4c,0x4b,0x49,0x48,0x47,0x48,0x48,0x48,0x49,0x4b,0x4c,0x4d,0x4e,
+ 0x4f,0x4f,0x50,0x50,0x50,0x4f,0x4e,0x4e,0x4c,0x4c,0x4a,0x48,0x47,0x46,0x46,
+ 0x48,0x48,0x48,0x49,0x48,0x48,0x47,0x44,0x41,0x3f,0x3d,0x3a,0x37,0x35,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x34,0x36,0x39,0x3c,0x3e,0x41,0x46,0x49,0x4d,0x4f,
+ 0x50,0x51,0x50,0x4f,0x4c,0x49,0x47,0x45,0x42,0x40,0x3f,0x3f,0x40,0x41,0x43,
+ 0x47,0x49,0x4c,0x50,0x52,0x54,0x56,0x57,0x57,0x57,0x56,0x54,0x53,0x50,0x4e,
+ 0x4c,0x49,0x48,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,
+ 0x44,0x45,0x44,0x45,0x47,0x48,0x4a,0x4c,0x4d,0x50,0x51,0x53,0x53,0x52,0x53,
+ 0x51,0x51,0x50,0x4e,0x4b,0x48,0x45,0x42,0x3f,0x3c,0x3a,0x38,0x36,0x35,0x34,
+ 0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x33,0x33,0x33,
+ 0x34,0x34,0x34,0x34,0x33,0x34,0x34,0x34,0x34,0x34,0x33,0x32,0x32,0x32,0x33,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x34,
+ 0x34,0x33,0x33,0x33,0x33,0xc8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x26,0x25,0x24,0x24,0x24,
+ 0x24,0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x26,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x25,0x25,0x25,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2b,0x2d,
+ 0x2f,0x31,0x33,0x36,0x38,0x3a,0x3d,0x3e,0x3f,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x45,
+ 0x45,0x48,0x48,0x49,0x4a,0x4b,0x4b,0x4a,0x48,0x46,0x45,0x42,0x41,0x41,0x40,
+ 0x40,0x40,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x44,0x45,0x45,0x45,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+ 0x41,0x40,0x3f,0x3f,0x3f,0x40,0x41,0x43,0x44,0x45,0x46,0x46,0x47,0x47,0x47,
+ 0x46,0x45,0x45,0x44,0x44,0x44,0x44,0x45,0x46,0x46,0x48,0x49,0x49,0x4a,0x4b,
+ 0x4a,0x49,0x48,0x48,0x47,0x45,0x44,0x44,0x43,0x42,0x42,0x44,0x45,0x45,0x47,
+ 0x48,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4a,0x4a,0x49,0x48,0x47,0x45,0x44,0x43,
+ 0x42,0x43,0x44,0x44,0x44,0x45,0x44,0x44,0x42,0x41,0x3e,0x3c,0x3a,0x37,0x36,
+ 0x33,0x32,0x32,0x31,0x31,0x32,0x32,0x33,0x35,0x37,0x3a,0x3c,0x3f,0x41,0x45,
+ 0x48,0x49,0x4b,0x4c,0x4b,0x49,0x48,0x45,0x43,0x41,0x3f,0x3d,0x3d,0x3d,0x3d,
+ 0x3f,0x41,0x44,0x47,0x49,0x4c,0x4e,0x50,0x51,0x52,0x52,0x52,0x51,0x50,0x4f,
+ 0x4c,0x4a,0x48,0x47,0x45,0x44,0x43,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+ 0x42,0x41,0x41,0x41,0x41,0x41,0x43,0x45,0x45,0x48,0x49,0x4c,0x4c,0x4e,0x4e,
+ 0x4d,0x4e,0x4e,0x4c,0x4c,0x4a,0x47,0x45,0x41,0x3f,0x3c,0x3a,0x39,0x36,0x35,
+ 0x35,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x32,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x34,0x34,0x33,0x33,0x33,0x33,0x33,0xc8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x24,0x24,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,
+ 0x2b,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3e,
+ 0x3f,0x40,0x41,0x42,0x44,0x45,0x45,0x45,0x45,0x45,0x43,0x42,0x40,0x3e,0x3d,
+ 0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3d,0x3d,0x3d,0x3c,0x3a,0x3a,0x3c,0x3d,0x3e,0x40,0x41,0x41,0x43,0x43,
+ 0x43,0x44,0x42,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x42,0x44,0x44,0x45,0x46,
+ 0x46,0x46,0x46,0x45,0x45,0x44,0x42,0x41,0x41,0x3f,0x3e,0x3e,0x3f,0x3f,0x40,
+ 0x41,0x41,0x44,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x45,0x44,0x43,0x41,0x41,
+ 0x3f,0x3e,0x3f,0x3f,0x40,0x41,0x41,0x41,0x40,0x40,0x3f,0x3d,0x3c,0x3a,0x37,
+ 0x36,0x36,0x32,0x32,0x31,0x30,0x30,0x31,0x32,0x33,0x34,0x36,0x37,0x3a,0x3c,
+ 0x3f,0x41,0x43,0x45,0x45,0x46,0x45,0x45,0x43,0x41,0x40,0x3d,0x3c,0x3a,0x3a,
+ 0x3a,0x3b,0x3d,0x3e,0x41,0x43,0x45,0x47,0x49,0x4b,0x4c,0x4c,0x4d,0x4c,0x4c,
+ 0x4b,0x4a,0x48,0x48,0x45,0x44,0x43,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x40,0x40,0x40,0x3f,0x3e,0x3f,0x3e,0x3e,0x40,0x41,0x42,0x44,0x45,0x48,0x49,
+ 0x49,0x49,0x49,0x4a,0x49,0x48,0x47,0x45,0x43,0x41,0x3f,0x3d,0x3a,0x39,0x37,
+ 0x35,0x35,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x33,
+ 0x33,0x33,0x33,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0xc8,0x20,0x20,0x20,0x20,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x25,0x25,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x27,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x2a,0x2a,0x2b,0x2c,0x2d,0x2f,0x31,0x33,0x34,0x36,0x37,0x39,0x3a,0x39,0x3a,
+ 0x3a,0x39,0x39,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3a,0x3c,0x3c,0x3d,0x3d,0x40,0x40,0x41,0x41,0x40,0x40,0x3f,0x3d,0x3c,
+ 0x3b,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x38,0x37,0x37,0x38,0x39,0x3b,0x3b,0x3d,0x3d,
+ 0x3e,0x3e,0x3f,0x3f,0x3e,0x3e,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3e,0x3f,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,
+ 0x3d,0x3d,0x3c,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3a,0x39,
+ 0x37,0x36,0x36,0x34,0x33,0x31,0x30,0x30,0x31,0x31,0x32,0x32,0x33,0x34,0x35,
+ 0x37,0x3a,0x3c,0x3d,0x3f,0x40,0x41,0x41,0x41,0x41,0x3f,0x3d,0x3c,0x3a,0x3a,
+ 0x38,0x38,0x38,0x39,0x3a,0x3c,0x3d,0x40,0x41,0x43,0x45,0x46,0x48,0x48,0x48,
+ 0x48,0x48,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3e,0x3e,0x40,0x41,
+ 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x43,0x42,0x41,0x40,0x3f,0x3d,0x3b,0x3a,
+ 0x38,0x36,0x35,0x34,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,
+ 0x32,0x32,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x33,0x33,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x34,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,
+ 0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0xc8,0x20,0x20,0x20,
+ 0x20,0x20,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x21,0x21,0x21,0x21,
+ 0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x27,0x27,0x26,0x25,0x25,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x28,0x27,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x2b,0x2b,0x2c,0x2d,0x2e,0x30,0x31,0x32,0x34,0x34,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x35,0x36,0x36,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x37,0x37,0x38,0x3a,0x3a,0x3b,0x3b,0x3c,0x3d,0x3d,0x3c,0x3b,
+ 0x3a,0x38,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,
+ 0x36,0x37,0x37,0x37,0x37,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x37,0x37,0x37,
+ 0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x38,0x39,
+ 0x39,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x39,0x39,0x39,0x39,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3b,0x3a,0x39,0x39,0x37,0x38,
+ 0x37,0x37,0x38,0x38,0x3a,0x3a,0x3b,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,
+ 0x3c,0x3b,0x3a,0x3a,0x38,0x37,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x38,
+ 0x37,0x37,0x36,0x36,0x35,0x34,0x32,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x33,0x33,0x36,0x37,0x38,0x3a,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3b,0x3a,
+ 0x39,0x38,0x37,0x37,0x37,0x38,0x39,0x3a,0x3b,0x3d,0x3e,0x40,0x41,0x42,0x42,
+ 0x42,0x43,0x42,0x42,0x42,0x41,0x40,0x40,0x3e,0x3d,0x3d,0x3c,0x3c,0x3b,0x3b,
+ 0x3b,0x3b,0x3c,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,
+ 0x3c,0x3d,0x40,0x41,0x40,0x40,0x40,0x40,0x3f,0x40,0x3e,0x3d,0x3d,0x3b,0x3a,
+ 0x39,0x37,0x36,0x36,0x34,0x33,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x32,0x33,0x33,0x34,0x34,0x33,0x32,0x32,0x32,0x32,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x33,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x35,0x35,
+ 0x34,0x34,0x34,0x35,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0xc8,0x20,
+ 0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,0x23,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x27,0x26,0x26,0x25,
+ 0x25,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2d,0x2e,0x2f,0x30,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x33,0x34,0x36,0x36,0x36,0x37,0x38,0x38,0x39,0x38,
+ 0x37,0x37,0x36,0x36,0x34,0x35,0x34,0x34,0x33,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x36,0x36,0x37,0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x38,0x37,0x36,0x37,0x36,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x37,0x37,0x37,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x39,0x38,0x37,0x37,0x36,0x36,0x35,0x35,0x36,0x37,0x37,0x39,0x39,0x38,
+ 0x37,0x36,0x36,0x36,0x36,0x34,0x34,0x33,0x31,0x31,0x31,0x30,0x30,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x36,0x37,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x38,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3b,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x38,0x39,0x38,0x37,0x37,0x37,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3d,0x3d,0x3d,0x3c,0x3b,0x3c,0x3d,0x3d,0x3c,0x3b,0x3a,
+ 0x3a,0x38,0x37,0x36,0x36,0x35,0x34,0x33,0x33,0x34,0x34,0x33,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x32,0x32,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x35,0x34,0x34,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x34,0x34,0x35,0x36,0x36,0x35,0x34,0x34,0x34,0x35,0x35,0x36,
+ 0xc8,0x20,0x20,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x23,
+ 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x26,0x26,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x27,0x27,0x27,0x26,
+ 0x26,0x25,0x25,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2d,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x32,0x32,0x32,0x33,0x34,0x35,0x35,
+ 0x35,0x35,0x34,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,
+ 0x31,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x33,
+ 0x34,0x34,0x33,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x34,0x33,
+ 0x34,0x34,0x33,0x32,0x32,0x32,0x32,0x33,0x35,0x35,0x35,0x36,0x36,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x35,0x35,0x34,0x34,0x33,0x33,0x32,0x34,0x35,0x36,0x36,
+ 0x36,0x36,0x35,0x34,0x33,0x34,0x34,0x34,0x32,0x32,0x31,0x31,0x30,0x30,0x30,
+ 0x31,0x32,0x32,0x32,0x31,0x32,0x33,0x33,0x35,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x37,0x36,0x36,0x36,0x36,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x37,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x38,0x39,
+ 0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x37,0x37,0x37,0x37,0x37,0x3a,0x3a,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x38,0x38,0x37,0x36,0x36,0x36,0x34,0x34,0x33,0x33,0x33,0x34,0x33,0x33,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x33,0x32,0x33,0x33,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x34,0x34,0x33,0x33,
+ 0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x33,0x33,0x33,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x35,0x34,0x34,0x35,0x36,0x36,0x35,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0xc8,0x21,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,0x23,
+ 0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x25,0x25,0x25,
+ 0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x27,
+ 0x27,0x26,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2c,0x2d,
+ 0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x30,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x2f,0x2f,0x2f,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x34,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x32,0x31,0x30,0x30,
+ 0x31,0x31,0x32,0x32,0x32,0x31,0x32,0x31,0x32,0x33,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,
+ 0x37,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x36,0x37,0x38,0x38,0x37,0x37,0x37,0x38,
+ 0x39,0x38,0x37,0x36,0x36,0x36,0x35,0x34,0x33,0x33,0x34,0x34,0x34,0x35,0x34,
+ 0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x34,
+ 0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0xc8,0x21,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,0x22,
+ 0x23,0x23,0x23,0x23,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,
+ 0x25,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x25,0x25,
+ 0x25,0x25,0x24,0x25,0x25,0x25,0x26,0x27,0x27,0x26,0x26,0x25,0x25,0x25,0x26,
+ 0x26,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x2a,0x29,0x29,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x2f,0x30,0x2f,0x30,0x30,
+ 0x30,0x2f,0x2f,0x30,0x30,0x2f,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x31,0x30,0x30,0x2f,0x2f,0x30,0x30,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x33,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,
+ 0x31,0x30,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x34,0x33,0x33,0x34,0x34,0x33,0x32,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x35,
+ 0x34,0x33,0x33,0x33,0x33,0x34,0x35,0x34,0x34,0x35,0x36,0x36,0x36,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x34,0x34,0x33,0x33,0x34,0x34,0x34,0x33,
+ 0x34,0x34,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x35,0x36,
+ 0x36,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,
+ 0x35,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0xc8,0x21,0x21,0x21,0x21,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,
+ 0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x35,0x35,0x35,0x34,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x33,0x32,0x32,0x33,0x34,0x33,0x33,0x33,0x35,0x36,0x36,
+ 0x35,0x34,0x36,0x36,0x36,0x35,0x35,0x35,0x34,0x33,0x33,0x33,0x34,0x34,0x34,
+ 0x33,0x33,0x35,0x35,0x34,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xc8,0x22,0x22,0x22,0x22,0x22,0x22,
+ 0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x26,0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x26,0x26,0x26,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x27,
+ 0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x26,0x27,0x28,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x31,0x31,0x32,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x33,0x33,0x34,0x34,0x34,0x33,0x32,0x33,0x33,0x32,0x32,0x32,0x34,
+ 0x35,0x35,0x35,0x35,0x36,0x35,0x35,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x34,
+ 0x33,0x33,0x33,0x34,0x36,0x36,0x35,0x34,0x33,0x33,0x32,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x35,0x36,0x36,0x35,0x35,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x34,0x34,0x34,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xc8,0x23,0x23,0x23,0x23,
+ 0x22,0x22,0x22,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x26,0x26,0x25,0x24,0x24,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x25,0x25,0x26,0x26,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x26,
+ 0x26,0x28,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,
+ 0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x33,0x34,0x34,0x34,0x33,0x33,0x34,0x34,0x32,0x32,
+ 0x33,0x34,0x35,0x35,0x34,0x35,0x36,0x36,0x35,0x35,0x34,0x34,0x34,0x33,0x33,
+ 0x34,0x33,0x33,0x33,0x34,0x35,0x36,0x36,0x35,0x35,0x34,0x34,0x33,0x34,0x34,
+ 0x33,0x33,0x34,0x34,0x35,0x35,0x34,0x35,0x34,0x34,0x34,0x35,0x35,0x36,0x35,
+ 0x35,0x34,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xc8,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x28,0x26,0x26,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x27,0x28,0x28,0x28,0x27,0x27,0x26,0x26,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x2a,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x37,0x37,0x36,0x35,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x37,
+ 0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0xc8,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x26,
+ 0x26,0x26,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x27,0x27,0x27,0x27,0x26,0x26,
+ 0x26,0x27,0x26,0x26,0x26,0x26,0x27,0x28,0x28,0x27,0x26,0x26,0x25,0x25,0x25,
+ 0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x27,0x27,0x28,0x28,
+ 0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x2a,0x2a,0x29,0x29,0x29,0x28,0x29,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,
+ 0x2e,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x34,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x35,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x37,
+ 0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x38,
+ 0x38,0xc8,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x23,0x23,
+ 0x23,0x22,0x22,0x22,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x24,0x25,0x27,0x27,0x27,0x27,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x26,0x26,0x27,0x27,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x38,0x38,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0xc8,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,
+ 0x23,0x23,0x23,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x26,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x38,0x38,0xc8,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x23,0x23,0x23,0x23,0x23,0x22,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x25,0x25,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,
+ 0x27,0x27,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x29,0x29,0x28,0x29,0x29,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x33,0x33,0x33,0x33,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x35,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x38,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x39,0x38,0x38,0xc8,0x23,0x23,0x23,0x23,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x23,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x26,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2e,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2c,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x33,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x34,0x35,0x35,0x35,0x35,
+ 0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc8,0x23,0x23,0x23,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x23,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,
+ 0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2c,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2d,0x2e,
+ 0x2e,0x2d,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,
+ 0x2c,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x31,0x31,
+ 0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,
+ 0x34,0x33,0x34,0x34,0x34,0x34,0x35,0x34,0x35,0x34,0x34,0x33,0x34,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x37,0x36,0x36,0x36,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x38,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x38,0x38,0x37,0x37,0x38,
+ 0x39,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc8,0x23,0x23,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x23,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0xc8,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,
+ 0x27,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x33,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x37,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0xc8,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x28,
+ 0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x28,0x28,
+ 0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2d,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,
+ 0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x34,0x34,0x34,0x33,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,
+ 0x37,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0xc8,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x28,0x28,0x28,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x29,0x29,
+ 0x29,0x28,0x28,0x28,0x29,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2d,0x2d,0x2c,0x2c,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,
+ 0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,
+ 0x3a,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,
+ 0x39,0x3a,0x3a,0x3a,0xc8,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x28,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,
+ 0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2a,0x2b,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x34,0x34,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x37,0x38,0x38,0x38,0x38,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0xc8,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,0x30,0x30,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0xc8,0x24,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2b,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,
+ 0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x30,0x2f,0x2f,
+ 0x30,0x30,0x31,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x34,0x33,0x33,0x32,0x32,0x33,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0x35,0x35,0x34,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,
+ 0x36,0x37,0x38,0x38,0x37,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x38,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x38,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0xc8,0x24,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,
+ 0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x35,0x35,0x34,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x38,0x38,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x37,0x36,0x36,0x37,0x38,0x39,0x38,0x37,0x36,0x37,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x38,0x38,0x38,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0xc8,0x24,0x24,
+ 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x24,0x24,0x24,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x27,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x29,0x29,0x29,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x35,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,
+ 0x38,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x37,0x37,
+ 0x37,0x38,0x38,0x38,0x37,0x37,0x38,0x38,0x39,0x38,0x37,0x38,0x38,0x36,0x37,
+ 0x38,0x37,0x37,0x3a,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0xc8,
+ 0x25,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x25,0x25,0x25,0x24,0x24,0x25,0x25,0x26,0x25,0x26,0x26,0x26,0x27,0x26,
+ 0x26,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2b,0x2b,0x2c,
+ 0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2d,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x31,0x31,0x31,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x33,0x34,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x33,0x33,0x33,0x34,0x35,0x36,0x35,0x35,0x34,0x34,0x35,0x35,
+ 0x36,0x35,0x35,0x35,0x35,0x36,0x35,0x35,0x34,0x34,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x38,0x38,0x38,0x38,0x37,0x37,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x37,0x38,0x38,0x39,0x38,0x37,0x37,0x38,0x3a,0x38,0x36,0x37,0x38,
+ 0x37,0x38,0x39,0x37,0x37,0x38,0x38,0x37,0x39,0x3a,0x38,0x38,0x38,0x38,0x39,
+ 0x39,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3a,0x3b,0x3b,0x3b,0x3b,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3a,0x3b,0x3b,
+ 0x3a,0x3a,0x3b,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0xc8,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x25,0x26,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,0x26,0x26,0x26,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,
+ 0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x32,0x33,0x34,0x36,
+ 0x36,0x36,0x36,0x35,0x33,0x33,0x33,0x33,0x33,0x35,0x36,0x36,0x36,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x36,0x36,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x38,0x3a,0x39,0x36,
+ 0x37,0x38,0x38,0x39,0x3a,0x38,0x36,0x37,0x37,0x37,0x3a,0x3a,0x38,0x38,0x38,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0xc8,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2e,0x2d,0x2d,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x33,0x33,
+ 0x35,0x36,0x36,0x36,0x36,0x35,0x34,0x33,0x34,0x33,0x34,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x39,0x38,0x37,0x39,0x3a,0x39,0x37,0x36,0x38,0x39,0x3a,0x39,0x39,0x38,
+ 0x39,0x3a,0x38,0x36,0x36,0x36,0x37,0x39,0x3a,0x3a,0x39,0x38,0x37,0x37,0x38,
+ 0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0xc8,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2e,0x2d,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x34,0x35,0x34,0x34,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x37,0x38,0x39,0x39,0x38,0x38,0x39,0x3a,0x39,0x37,0x37,0x38,0x39,0x3a,0x3a,
+ 0x39,0x38,0x39,0x3a,0x38,0x36,0x36,0x36,0x36,0x3a,0x3b,0x3a,0x39,0x39,0x37,
+ 0x37,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,
+ 0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0xc8,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2e,0x2d,0x2c,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,
+ 0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x36,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x39,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x39,0x3a,0x3a,0x38,0x37,0x3a,0x3a,0x37,0x3a,0x3b,0x37,0x37,
+ 0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0xc8,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x26,0x26,0x26,0x26,0x26,0x26,
+ 0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2e,0x2e,0x2d,0x2d,0x2c,
+ 0x2c,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,
+ 0x32,0x33,0x33,0x33,0x32,0x33,0x34,0x34,0x34,0x33,0x34,0x35,0x35,0x35,0x35,
+ 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,
+ 0x37,0x37,0x37,0x36,0x37,0x36,0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x38,0x37,0x37,0x38,0x38,0x39,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x3a,0x3a,0x38,0x37,0x38,0x3a,0x3a,
+ 0x3b,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x39,0x38,0x3a,0x3d,0x3c,0x38,0x3a,0x3a,
+ 0x36,0x36,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,
+ 0x3a,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0xc8,0x26,0x26,0x26,
+ 0x26,0x26,0x26,0x26,0x26,0x26,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x27,0x27,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2e,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x30,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x37,
+ 0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,
+ 0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x38,0x38,0x38,
+ 0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x3a,0x3b,0x3c,0x37,0x36,0x38,
+ 0x3a,0x3c,0x3b,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,0x38,0x39,0x3b,0x3e,0x3d,0x39,
+ 0x3a,0x3a,0x36,0x37,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0xc8,0x27,
+ 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x34,0x34,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,
+ 0x37,0x38,0x38,0x38,0x38,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x39,0x39,0x39,0x38,
+ 0x38,0x38,0x37,0x36,0x36,0x36,0x36,0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x39,0x39,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3b,0x3c,0x38,
+ 0x37,0x39,0x3b,0x3c,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,
+ 0x39,0x38,0x3a,0x3b,0x3b,0x3b,0x3a,0x36,0x36,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0xc8,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x2f,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x32,0x32,0x31,0x31,0x30,0x31,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x38,0x38,0x39,0x39,
+ 0x39,0x39,0x38,0x38,0x37,0x37,0x36,0x37,0x37,0x38,0x38,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x38,0x39,0x3b,0x3c,0x3a,0x37,0x38,0x3b,0x3e,0x3d,0x38,0x37,0x3b,0x3d,
+ 0x3e,0x3c,0x3a,0x3a,0x39,0x3a,0x3d,0x3d,0x3a,0x36,0x37,0x3b,0x3c,0x3b,0x3b,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0xc8,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x28,0x28,0x28,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x30,0x2f,0x2f,0x30,0x30,
+ 0x30,0x2f,0x2f,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x38,0x39,0x39,0x39,0x38,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x38,0x3a,0x3d,0x3c,0x39,0x34,0x36,0x3d,0x41,0x40,0x36,0x34,
+ 0x38,0x3e,0x42,0x40,0x40,0x3e,0x37,0x35,0x3a,0x3a,0x39,0x3a,0x3b,0x3c,0x3c,
+ 0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,
+ 0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x27,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x29,0x29,0x2a,0x29,0x29,0x29,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2c,0x2c,
+ 0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x38,0x39,0x39,0x38,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x39,0x38,
+ 0x38,0x38,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x38,0x38,0x37,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x39,0x38,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x39,0x3a,0x3d,0x3f,0x3d,
+ 0x35,0x39,0x41,0x36,0x2f,0x30,0x38,0x41,0x41,0x3e,0x3a,0x39,0x3a,0x3c,0x3d,
+ 0x3d,0x3d,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3e,0x3e,0x3f,
+ 0x3f,0x40,0x3f,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x3e,0x3e,
+ 0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x39,
+ 0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x37,0x38,0x38,0x38,0x38,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3d,0x3a,0x36,0x3a,0x3d,0x3d,0x3d,0x3b,
+ 0x3b,0x3a,0x37,0x3d,0x42,0x28,0x18,0x1e,0x2c,0x3c,0x42,0x42,0x3b,0x3a,0x3a,
+ 0x3c,0x3e,0x3f,0x3e,0x3c,0x3a,0x3a,0x3c,0x3d,0x3d,0x3d,0x3c,0x3b,0x3b,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3f,0x3f,0x40,0x40,0x40,0x3f,0x3f,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,
+ 0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,
+ 0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x31,0x32,0x31,0x30,0x30,0x30,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3a,0x39,0x38,0x3a,0x3c,0x3a,
+ 0x3a,0x3b,0x36,0x36,0x40,0x3a,0x2b,0x18,0x10,0x19,0x21,0x26,0x26,0x2e,0x40,
+ 0x40,0x39,0x3a,0x3d,0x3e,0x3e,0x3d,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3f,0x3f,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x40,0x41,0x40,0x40,0x40,0x3f,0x3f,0xc8,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x31,0x32,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3b,0x39,0x39,0x3b,0x3c,
+ 0x3c,0x3a,0x3b,0x3d,0x36,0x36,0x47,0x3a,0x1d,0x0e,0x09,0x12,0x15,0x14,0x12,
+ 0x20,0x45,0x47,0x3a,0x3a,0x3b,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3f,0x3f,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0xc8,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x28,0x29,0x29,0x29,0x2a,0x2a,
+ 0x29,0x29,0x29,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x33,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3b,0x39,0x3a,
+ 0x3d,0x3d,0x3c,0x3c,0x3d,0x3e,0x39,0x3a,0x4b,0x3a,0x1a,0x09,0x03,0x0a,0x0a,
+ 0x07,0x08,0x1c,0x47,0x4c,0x3e,0x3b,0x3a,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3e,0x3e,0x3d,0x3d,0x3e,0x3f,
+ 0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,
+ 0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc8,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x29,0x2a,0x29,
+ 0x2a,0x2a,0x2a,0x29,0x2a,0x2a,0x2b,0x2b,0x2a,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x2f,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x34,0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x34,0x33,0x33,0x34,0x33,0x33,0x34,0x34,0x34,0x35,0x34,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x37,
+ 0x38,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3b,0x3c,0x3e,0x3b,0x3a,0x3e,0x3d,0x3b,0x3b,0x3d,0x42,0x30,0x13,0x05,0x00,
+ 0x04,0x04,0x03,0x04,0x13,0x34,0x41,0x40,0x3c,0x3a,0x3d,0x3e,0x3e,0x3d,0x3d,
+ 0x3d,0x3c,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3f,0x3e,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,
+ 0x3f,0x3f,0x40,0x40,0x3f,0x3e,0x3e,0x3f,0x3e,0x3f,0x40,0x3f,0x3e,0x3e,0x3e,
+ 0x3f,0x40,0x40,0x40,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x3f,0x40,0x3f,0x3f,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x3f,
+ 0x3f,0x3e,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x42,0x41,0x41,0x41,0x41,
+ 0x41,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x28,0x28,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,
+ 0x32,0x33,0x34,0x34,0x34,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x37,0x38,0x38,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3a,0x39,0x3f,0x3d,0x38,0x3d,0x3f,0x36,0x23,0x0c,
+ 0x03,0x00,0x02,0x03,0x03,0x03,0x0b,0x1d,0x32,0x41,0x3e,0x3b,0x3d,0x3e,0x3e,
+ 0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3e,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x40,0x40,0x40,0x3f,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x3f,
+ 0x3e,0x3e,0x3f,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x40,0x40,0x40,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x42,0x41,0x41,
+ 0x41,0x41,0x41,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,
+ 0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x35,0x34,0x33,
+ 0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x35,0x35,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,
+ 0x38,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,
+ 0x37,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3a,0x3a,0x3f,0x3d,0x39,0x42,0x43,0x30,
+ 0x19,0x05,0x02,0x03,0x06,0x07,0x07,0x05,0x07,0x0b,0x28,0x47,0x44,0x3e,0x3d,
+ 0x3d,0x3e,0x3f,0x3e,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,0x3f,0x3e,0x3d,0x3d,0x3e,
+ 0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x41,
+ 0x40,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+ 0x29,0x29,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x35,
+ 0x34,0x33,0x32,0x33,0x33,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x37,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3d,0x3c,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3c,0x46,
+ 0x45,0x2f,0x16,0x03,0x02,0x04,0x06,0x07,0x07,0x05,0x03,0x03,0x20,0x45,0x45,
+ 0x40,0x3d,0x3d,0x3e,0x3f,0x3f,0x3e,0x3d,0x3d,0x3e,0x3f,0x40,0x40,0x40,0x3e,
+ 0x3d,0x3e,0x3f,0x3f,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x41,0x40,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,
+ 0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,
+ 0x2a,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,0x2d,
+ 0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x35,0x35,0x34,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3b,0x3a,0x3b,0x3e,0x3f,0x3c,0x3c,
+ 0x40,0x48,0x46,0x30,0x19,0x03,0x01,0x02,0x02,0x03,0x03,0x03,0x02,0x03,0x1c,
+ 0x3b,0x41,0x41,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0x40,0x41,
+ 0x41,0x3e,0x3d,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x3f,0x3f,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc8,0x28,0x28,0x28,0x28,0x28,
+ 0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,0x2a,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2b,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x31,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x32,0x31,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x36,
+ 0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3c,
+ 0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x40,0x40,0x3d,0x3b,0x3c,0x3f,0x40,
+ 0x3a,0x3a,0x3f,0x45,0x42,0x2e,0x18,0x05,0x02,0x02,0x02,0x03,0x04,0x02,0x01,
+ 0x03,0x15,0x2c,0x3f,0x45,0x3d,0x3d,0x3e,0x3f,0x3f,0x40,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x41,0x41,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,
+ 0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x40,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc8,0x28,0x28,0x28,
+ 0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x29,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2a,
+ 0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x33,0x32,0x32,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,
+ 0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x40,0x41,0x3e,0x3d,0x3d,
+ 0x3f,0x3f,0x3a,0x3a,0x3d,0x44,0x40,0x2b,0x18,0x07,0x03,0x03,0x03,0x03,0x03,
+ 0x03,0x02,0x04,0x0d,0x1d,0x3b,0x48,0x3e,0x3c,0x3d,0x3e,0x3f,0x40,0x40,0x3f,
+ 0x3f,0x3f,0x40,0x41,0x41,0x3f,0x3e,0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x41,0x41,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xc8,0x28,
+ 0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x30,0x30,0x30,0x30,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x35,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3b,0x3b,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3e,0x3f,0x40,
+ 0x40,0x3f,0x3e,0x3d,0x3d,0x3d,0x3f,0x47,0x44,0x2e,0x19,0x07,0x03,0x03,0x03,
+ 0x02,0x00,0x02,0x03,0x04,0x07,0x10,0x35,0x48,0x3e,0x3d,0x3d,0x3e,0x40,0x41,
+ 0x41,0x40,0x3f,0x3e,0x40,0x41,0x42,0x40,0x3f,0x40,0x40,0x41,0x40,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x42,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,0x42,
+ 0xc8,0x28,0x28,0x28,0x28,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2c,
+ 0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x34,0x35,0x34,0x33,0x33,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x38,0x39,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x41,0x41,0x3e,0x3e,0x3e,0x3f,0x3d,0x3d,0x48,0x47,0x2d,0x17,0x07,0x03,
+ 0x03,0x03,0x02,0x00,0x02,0x03,0x04,0x03,0x09,0x30,0x45,0x3e,0x3d,0x3f,0x3f,
+ 0x40,0x41,0x41,0x40,0x3e,0x3e,0x40,0x41,0x42,0x41,0x40,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x41,0x41,0x41,0x42,0x43,0x43,
+ 0x43,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x42,
+ 0x42,0x42,0xc8,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,
+ 0x2e,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x35,0x34,
+ 0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x38,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x37,0x37,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3c,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x41,
+ 0x41,0x41,0x41,0x42,0x41,0x3d,0x3f,0x41,0x3d,0x3a,0x39,0x49,0x4a,0x2b,0x14,
+ 0x06,0x03,0x03,0x02,0x02,0x02,0x01,0x02,0x04,0x03,0x07,0x2c,0x42,0x3e,0x40,
+ 0x42,0x41,0x40,0x40,0x40,0x40,0x3d,0x3e,0x41,0x42,0x43,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x43,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x41,0x41,0x42,0x43,
+ 0x43,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x42,0x42,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0xc8,0x2a,0x2a,0x2a,0x2a,0x29,0x29,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2c,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x2f,0x30,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,
+ 0x32,0x33,0x33,0x34,0x34,0x34,0x33,0x33,0x33,0x34,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0x35,0x34,0x34,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3c,
+ 0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,
+ 0x3c,0x3c,0x3c,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3d,0x3e,0x3f,0x3f,0x3f,0x40,0x3f,0x3f,
+ 0x40,0x41,0x41,0x42,0x42,0x43,0x41,0x3d,0x3f,0x40,0x3e,0x3b,0x3a,0x48,0x47,
+ 0x28,0x12,0x05,0x03,0x03,0x02,0x02,0x03,0x02,0x02,0x05,0x03,0x07,0x28,0x3e,
+ 0x42,0x43,0x42,0x41,0x40,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x42,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,0x42,0x43,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x43,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x41,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x42,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x44,
+ 0x44,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x43,0xc8,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+ 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,
+ 0x2c,0x2d,0x2e,0x2e,0x2e,0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3f,0x3f,0x3e,0x3f,0x3f,0x40,0x40,0x40,
+ 0x3f,0x3f,0x40,0x41,0x41,0x42,0x43,0x44,0x41,0x3d,0x3f,0x40,0x3f,0x3d,0x3d,
+ 0x47,0x44,0x2a,0x14,0x05,0x03,0x03,0x02,0x02,0x03,0x02,0x03,0x04,0x03,0x06,
+ 0x21,0x3a,0x46,0x46,0x40,0x41,0x41,0x3e,0x3e,0x3f,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x41,0x42,0x42,0x43,0x43,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x44,0xc8,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x35,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,
+ 0x3c,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x40,0x41,
+ 0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x43,0x44,0x44,0x41,0x3f,0x3f,0x40,0x41,
+ 0x3f,0x3f,0x46,0x44,0x31,0x19,0x04,0x02,0x03,0x01,0x02,0x02,0x02,0x02,0x03,
+ 0x02,0x05,0x1a,0x32,0x49,0x48,0x3d,0x41,0x43,0x40,0x3e,0x3f,0x41,0x42,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x43,0x43,0x44,0x44,0x45,
+ 0x45,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0xc8,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,
+ 0x35,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x34,0x34,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x40,0x40,0x3f,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,0x43,0x44,0x43,0x42,0x41,0x40,
+ 0x40,0x41,0x41,0x41,0x45,0x45,0x3a,0x21,0x04,0x01,0x02,0x01,0x01,0x02,0x02,
+ 0x02,0x02,0x01,0x03,0x13,0x2b,0x4b,0x48,0x3b,0x41,0x45,0x41,0x40,0x40,0x41,
+ 0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,
+ 0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,
+ 0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x43,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0xc8,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,
+ 0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x31,0x31,0x30,0x30,0x30,0x31,0x31,0x30,0x2f,0x2f,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x36,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x41,0x41,
+ 0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x42,0x42,
+ 0x42,0x41,0x41,0x40,0x40,0x41,0x43,0x45,0x45,0x2b,0x06,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x02,0x01,0x00,0x03,0x0d,0x25,0x4b,0x48,0x39,0x41,0x45,0x43,0x42,
+ 0x41,0x42,0x41,0x41,0x42,0x44,0x43,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x42,
+ 0x42,0x43,0x43,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x44,
+ 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0xc8,
+ 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,0x2b,0x2b,0x2b,
+ 0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x30,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x30,0x30,
+ 0x30,0x31,0x32,0x31,0x31,0x31,0x31,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x33,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x37,0x38,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x3a,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3b,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3e,0x3e,0x3f,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x43,0x43,
+ 0x42,0x42,0x43,0x42,0x41,0x40,0x40,0x41,0x40,0x43,0x4c,0x32,0x0a,0x03,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x03,0x09,0x21,0x4c,0x49,0x39,0x41,0x45,
+ 0x45,0x44,0x43,0x43,0x42,0x40,0x42,0x45,0x43,0x42,0x42,0x42,0x43,0x43,0x44,
+ 0x44,0x43,0x42,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x45,0x45,0x45,0x46,0x46,0x46,0x45,0x46,0x46,0x47,0x47,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0xc8,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x30,0x30,0x30,0x31,0x32,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x40,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,
+ 0x43,0x44,0x42,0x42,0x43,0x42,0x41,0x41,0x41,0x41,0x3e,0x41,0x50,0x39,0x12,
+ 0x05,0x02,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x03,0x07,0x1e,0x4c,0x4c,0x3b,
+ 0x40,0x45,0x45,0x45,0x44,0x45,0x43,0x40,0x42,0x45,0x43,0x42,0x42,0x43,0x43,
+ 0x44,0x44,0x44,0x44,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,
+ 0x46,0x46,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x47,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0xc8,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x31,
+ 0x31,0x31,0x30,0x30,0x31,0x31,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x34,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x41,0x41,
+ 0x41,0x42,0x44,0x45,0x43,0x42,0x42,0x42,0x43,0x43,0x44,0x44,0x3e,0x40,0x50,
+ 0x3d,0x19,0x08,0x01,0x03,0x03,0x00,0x01,0x01,0x00,0x01,0x03,0x04,0x1c,0x4c,
+ 0x4e,0x40,0x40,0x42,0x44,0x45,0x45,0x45,0x44,0x41,0x42,0x45,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x45,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x47,0x47,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x47,0x47,0x47,0x47,0xc8,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x30,0x30,0x31,0x31,
+ 0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,0x3a,0x39,0x39,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3c,0x3b,0x3c,0x3b,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x42,
+ 0x41,0x41,0x42,0x42,0x44,0x44,0x44,0x43,0x42,0x43,0x43,0x44,0x45,0x47,0x40,
+ 0x40,0x50,0x41,0x21,0x0b,0x01,0x04,0x03,0x00,0x00,0x01,0x00,0x01,0x03,0x03,
+ 0x18,0x46,0x4e,0x45,0x41,0x41,0x44,0x45,0x45,0x46,0x45,0x42,0x42,0x44,0x43,
+ 0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,
+ 0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x47,0xc8,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+ 0x2b,0x2b,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2e,0x2e,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x30,0x30,
+ 0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x44,0x44,
+ 0x43,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x43,0x43,0x43,0x43,0x46,
+ 0x49,0x41,0x40,0x4f,0x45,0x29,0x0f,0x01,0x04,0x03,0x00,0x00,0x01,0x01,0x01,
+ 0x02,0x01,0x14,0x3e,0x4b,0x48,0x42,0x40,0x44,0x45,0x45,0x46,0x45,0x44,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x49,0x49,0x49,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xc8,0x2c,0x2c,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2f,0x2f,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x38,0x37,0x36,0x36,0x37,
+ 0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,
+ 0x3c,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3d,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,
+ 0x40,0x41,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,
+ 0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x44,0x42,0x43,0x45,0x45,0x44,0x43,0x41,
+ 0x41,0x45,0x49,0x41,0x3f,0x4d,0x46,0x30,0x12,0x01,0x04,0x03,0x00,0x00,0x02,
+ 0x02,0x02,0x02,0x01,0x11,0x35,0x47,0x4b,0x44,0x41,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x46,0x47,0x46,0x45,0x45,0x45,0x45,
+ 0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x47,0x47,0x48,0x48,0x47,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x49,0x4a,0x4a,0x4a,
+ 0x4a,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xc8,0x2c,0x2c,0x2c,
+ 0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2f,0x2f,0x2e,0x2e,0x2e,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,
+ 0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x37,0x37,
+ 0x37,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x42,0x42,0x41,0x41,0x41,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,
+ 0x43,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x44,0x43,0x43,0x46,0x46,0x45,
+ 0x43,0x41,0x40,0x43,0x47,0x41,0x40,0x4c,0x47,0x33,0x15,0x02,0x05,0x03,0x00,
+ 0x01,0x02,0x03,0x02,0x02,0x01,0x0e,0x2d,0x42,0x4d,0x45,0x42,0x46,0x45,0x45,
+ 0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x46,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x47,0x47,0x46,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
+ 0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xc8,0x2d,
+ 0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,0x2d,0x2e,
+ 0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x30,0x2f,0x2f,0x30,0x32,0x32,0x32,0x32,0x30,0x30,0x30,0x32,
+ 0x32,0x32,0x30,0x2f,0x30,0x31,0x32,0x32,0x33,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x31,0x31,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3b,0x3a,
+ 0x3a,0x3b,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3e,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x40,0x40,0x3f,0x3f,0x3f,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x43,
+ 0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x44,0x45,0x45,0x44,
+ 0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x42,0x44,0x4f,0x47,0x31,0x15,0x04,0x04,
+ 0x02,0x00,0x00,0x02,0x02,0x02,0x02,0x01,0x0b,0x25,0x3f,0x50,0x48,0x42,0x46,
+ 0x45,0x43,0x46,0x48,0x48,0x47,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x46,0x46,0x47,0x47,0x48,0x48,
+ 0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x48,
+ 0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x4a,0x4a,0x4a,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0xc8,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2d,
+ 0x2d,0x2e,0x2f,0x2f,0x2f,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,0x31,0x31,0x30,0x30,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x2f,0x30,0x31,0x32,0x32,0x32,0x31,0x30,
+ 0x31,0x32,0x32,0x32,0x30,0x2f,0x30,0x31,0x32,0x33,0x33,0x32,0x32,0x32,0x31,
+ 0x31,0x31,0x31,0x31,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x39,0x39,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,
+ 0x3c,0x3b,0x3a,0x3b,0x3c,0x3d,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x43,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x44,0x45,0x45,
+ 0x45,0x42,0x42,0x44,0x45,0x45,0x46,0x45,0x43,0x41,0x45,0x4f,0x46,0x2f,0x15,
+ 0x03,0x03,0x02,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x0a,0x20,0x3d,0x52,0x48,
+ 0x42,0x46,0x45,0x44,0x47,0x48,0x48,0x47,0x46,0x46,0x46,0x46,0x45,0x45,0x45,
+ 0x45,0x45,0x46,0x47,0x47,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x46,0x46,0x47,0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x48,
+ 0x48,0x48,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x49,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x48,0x48,0xc8,0x2d,0x2d,0x2d,0x2d,0x2c,0x2c,0x2c,0x2c,0x2c,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x31,0x31,0x31,
+ 0x31,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x33,0x33,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x33,0x33,
+ 0x33,0x33,0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x36,
+ 0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,0x39,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3b,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x40,0x3e,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x41,0x41,0x41,0x41,0x42,0x43,0x42,0x42,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x45,
+ 0x45,0x45,0x45,0x43,0x43,0x44,0x43,0x43,0x44,0x43,0x42,0x41,0x44,0x4c,0x45,
+ 0x31,0x14,0x02,0x03,0x02,0x00,0x00,0x01,0x02,0x02,0x03,0x02,0x0a,0x1e,0x3b,
+ 0x53,0x48,0x41,0x47,0x47,0x45,0x48,0x48,0x47,0x46,0x45,0x46,0x47,0x47,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x48,0x47,0x47,0x47,0x47,0x47,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4a,
+ 0x49,0x49,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,
+ 0x4a,0x4a,0x49,0x49,0xc8,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2c,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x30,0x2f,0x2f,0x30,0x30,
+ 0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x33,0x33,0x33,0x32,0x31,0x31,0x31,0x32,0x32,0x31,0x32,0x32,0x33,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x37,0x36,0x37,0x37,
+ 0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,
+ 0x3c,0x3c,0x3c,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3e,0x3e,0x40,0x40,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,0x40,0x40,0x40,
+ 0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x43,0x42,0x41,0x41,0x41,0x41,
+ 0x42,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x43,0x44,0x43,0x42,0x42,0x42,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x44,0x43,0x45,
+ 0x4c,0x48,0x36,0x16,0x02,0x03,0x02,0x02,0x01,0x02,0x02,0x02,0x03,0x02,0x09,
+ 0x1c,0x3b,0x54,0x48,0x41,0x48,0x48,0x46,0x48,0x48,0x47,0x46,0x45,0x46,0x47,
+ 0x47,0x47,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x47,0x47,0x47,
+ 0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4a,
+ 0x4a,0x49,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,
+ 0x4a,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4c,0x4c,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4b,0x4a,0x49,0xc8,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x32,0x32,0x32,0x31,0x31,0x31,
+ 0x31,0x31,0x32,0x33,0x34,0x34,0x33,0x32,0x31,0x31,0x32,0x33,0x32,0x32,0x32,
+ 0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x38,0x38,0x38,0x38,0x37,
+ 0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3c,0x3d,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,
+ 0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3e,0x3f,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,
+ 0x42,0x42,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x44,0x44,0x44,0x43,0x42,
+ 0x42,0x43,0x44,0x44,0x43,0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x47,0x48,0x48,0x48,0x48,0x46,0x45,0x45,0x45,0x45,
+ 0x46,0x48,0x4c,0x4a,0x3d,0x19,0x02,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x03,
+ 0x01,0x07,0x19,0x3b,0x57,0x49,0x41,0x48,0x48,0x47,0x48,0x48,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x48,0x49,0x49,
+ 0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4b,0x4a,0x4a,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4c,0x4c,0x4b,0x4a,0x4a,0xc8,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x33,0x33,0x34,
+ 0x34,0x34,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x39,0x39,0x39,
+ 0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3d,
+ 0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x40,0x3f,0x40,0x40,0x40,0x41,0x41,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+ 0x42,0x43,0x43,0x42,0x41,0x41,0x42,0x42,0x43,0x43,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,
+ 0x43,0x42,0x42,0x43,0x44,0x45,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x48,0x47,0x45,0x45,0x45,
+ 0x46,0x47,0x47,0x48,0x4a,0x4b,0x44,0x1d,0x03,0x04,0x04,0x05,0x03,0x02,0x02,
+ 0x02,0x02,0x00,0x07,0x18,0x3c,0x5a,0x4b,0x42,0x48,0x49,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,
+ 0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0xc8,0x2d,0x2d,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x33,0x34,0x34,0x35,0x34,0x33,
+ 0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x38,0x39,
+ 0x39,0x39,0x39,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x40,0x40,0x40,0x41,0x41,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x42,0x42,0x43,0x43,0x42,0x42,0x41,0x42,0x42,0x43,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x44,0x43,0x43,0x43,0x44,0x45,0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x46,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x46,0x45,0x46,0x47,0x46,0x45,
+ 0x45,0x45,0x46,0x48,0x48,0x48,0x48,0x4b,0x48,0x20,0x03,0x03,0x04,0x05,0x03,
+ 0x02,0x02,0x02,0x02,0x01,0x07,0x15,0x3a,0x5a,0x4c,0x42,0x48,0x49,0x48,0x48,
+ 0x48,0x49,0x4a,0x4a,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x48,0x48,
+ 0x49,0x4a,0x49,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4c,
+ 0x4c,0x4a,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4b,0x4b,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0xc8,0x2d,0x2d,
+ 0x2d,0x2d,0x2d,0x2d,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,
+ 0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x33,0x32,0x31,0x31,0x32,0x33,0x34,
+ 0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x33,0x34,0x35,0x35,
+ 0x35,0x34,0x33,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x34,0x34,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x39,0x39,0x3a,0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,
+ 0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x3f,0x40,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x40,0x3f,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,
+ 0x43,0x43,0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,0x42,0x43,0x44,0x45,0x45,
+ 0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,
+ 0x45,0x46,0x46,0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x46,0x47,0x48,0x46,0x45,0x46,0x46,
+ 0x45,0x45,0x45,0x45,0x47,0x48,0x48,0x48,0x45,0x4a,0x4a,0x20,0x01,0x02,0x03,
+ 0x03,0x02,0x01,0x03,0x03,0x02,0x01,0x06,0x12,0x36,0x59,0x4c,0x43,0x48,0x48,
+ 0x48,0x48,0x48,0x4a,0x4b,0x4b,0x49,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x49,0x49,
+ 0x49,0x4a,0x4a,0x4b,0x49,0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4b,0x4c,0x4c,0x4b,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0xc8,
+ 0x2d,0x2d,0x2d,0x2e,0x2d,0x2e,0x2f,0x2f,0x2f,0x2f,0x2e,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x31,0x31,0x31,0x31,0x31,0x32,
+ 0x32,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x34,0x35,0x35,0x34,0x32,0x31,0x31,0x32,
+ 0x34,0x35,0x34,0x32,0x32,0x32,0x33,0x34,0x34,0x33,0x33,0x33,0x33,0x34,0x35,
+ 0x35,0x35,0x35,0x34,0x34,0x34,0x35,0x35,0x35,0x36,0x35,0x35,0x35,0x35,0x34,
+ 0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x39,0x38,0x38,0x39,0x39,0x39,0x39,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3a,0x3b,0x3b,
+ 0x3c,0x3b,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,
+ 0x40,0x41,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x41,0x41,0x41,0x40,0x3f,0x40,
+ 0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x43,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x43,0x43,0x43,0x44,0x44,0x43,0x43,0x43,
+ 0x44,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x45,0x45,
+ 0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x46,0x47,
+ 0x47,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x47,0x48,0x48,0x47,
+ 0x48,0x47,0x47,0x46,0x46,0x47,0x48,0x49,0x4a,0x48,0x44,0x4a,0x4d,0x21,0x02,
+ 0x01,0x02,0x03,0x02,0x01,0x03,0x02,0x01,0x02,0x05,0x0c,0x31,0x56,0x4c,0x45,
+ 0x48,0x49,0x49,0x49,0x49,0x4a,0x4c,0x4c,0x49,0x48,0x49,0x4a,0x4a,0x4a,0x4a,
+ 0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4a,0x48,0x48,0x49,0x4a,0x4a,0x49,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,0x4a,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,
+ 0x4c,0x4b,0x4b,0x4c,0x4c,0x4e,0x4e,0x4e,0x4e,0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4d,0x4d,0x4d,
+ 0x4d,0xc8,0x2d,0x2d,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x34,0x35,0x35,0x35,0x33,0x32,
+ 0x31,0x32,0x34,0x35,0x35,0x33,0x32,0x33,0x34,0x34,0x34,0x34,0x33,0x33,0x34,
+ 0x35,0x35,0x36,0x36,0x35,0x34,0x34,0x35,0x35,0x35,0x36,0x36,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x3a,0x3a,0x3a,0x39,0x39,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x42,0x42,0x41,
+ 0x40,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x43,0x43,
+ 0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x43,0x43,0x43,0x44,0x44,0x43,
+ 0x43,0x43,0x44,0x44,0x45,0x46,0x46,0x46,0x45,0x45,0x46,0x46,0x47,0x47,0x46,
+ 0x46,0x46,0x46,0x46,0x47,0x47,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x48,0x48,0x48,0x48,0x47,0x48,0x48,0x47,0x47,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4b,0x48,0x43,0x4b,0x50,
+ 0x24,0x03,0x02,0x02,0x03,0x02,0x01,0x03,0x02,0x00,0x02,0x03,0x07,0x2b,0x52,
+ 0x4c,0x46,0x48,0x49,0x4a,0x49,0x4a,0x4b,0x4c,0x4c,0x49,0x48,0x49,0x4a,0x4a,
+ 0x4a,0x4a,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4a,0x49,0x49,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4d,0x4c,0x4c,0x4c,0x4c,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4d,0x4c,0x4c,
+ 0x4d,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,0x4d,0x4d,0x4e,
+ 0x4e,0x4e,0x4e,0xc8,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x31,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x35,0x35,
+ 0x34,0x33,0x33,0x33,0x34,0x35,0x35,0x34,0x33,0x34,0x35,0x35,0x35,0x35,0x34,
+ 0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3c,0x3c,
+ 0x3b,0x3b,0x3c,0x3c,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3e,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x43,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x45,0x45,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x48,0x42,
+ 0x4c,0x53,0x27,0x05,0x04,0x03,0x02,0x02,0x02,0x03,0x02,0x00,0x02,0x03,0x04,
+ 0x28,0x4e,0x4d,0x49,0x49,0x4a,0x4c,0x4a,0x4a,0x4c,0x4c,0x4c,0x49,0x48,0x4a,
+ 0x4a,0x4b,0x4b,0x4a,0x4a,0x49,0x49,0x49,0x4b,0x4c,0x4b,0x4a,0x4a,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,0x4c,0x4d,0x4e,0x4e,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,
+ 0x4d,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,
+ 0x4f,0x50,0x50,0x4f,0x4f,0xc8,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,
+ 0x30,0x30,0x31,0x31,0x32,0x31,0x31,0x31,0x30,0x30,0x30,0x30,0x31,0x31,0x31,
+ 0x31,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x33,0x33,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x33,0x34,
+ 0x35,0x35,0x36,0x35,0x34,0x34,0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x39,0x38,0x38,0x38,0x38,0x38,0x38,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3e,0x3d,
+ 0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3e,0x3d,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x42,
+ 0x42,0x43,0x43,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x46,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x46,
+ 0x46,0x47,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x47,0x46,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x49,0x48,0x48,0x49,0x49,0x48,0x49,0x49,0x48,0x48,0x48,0x4b,
+ 0x49,0x43,0x4d,0x56,0x28,0x07,0x05,0x03,0x01,0x01,0x03,0x04,0x02,0x00,0x02,
+ 0x03,0x03,0x25,0x4c,0x4f,0x4c,0x4a,0x4b,0x4c,0x4b,0x4a,0x4c,0x4c,0x4c,0x49,
+ 0x49,0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,
+ 0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,
+ 0x4e,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+ 0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,
+ 0x4f,0x50,0x50,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0xc8,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,
+ 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x30,0x31,0x31,
+ 0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x33,0x33,
+ 0x33,0x33,0x33,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x33,0x33,0x34,0x36,0x36,0x36,0x36,0x35,0x33,0x33,0x34,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,
+ 0x3f,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x40,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,
+ 0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,
+ 0x45,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x47,0x46,0x46,
+ 0x47,0x47,0x48,0x48,0x48,0x48,0x47,0x46,0x46,0x46,0x48,0x47,0x46,0x46,0x46,
+ 0x46,0x46,0x47,0x47,0x47,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x4b,0x4b,0x4a,0x4b,0x4c,0x49,0x48,
+ 0x48,0x4c,0x4c,0x45,0x4f,0x57,0x2a,0x07,0x05,0x02,0x01,0x01,0x03,0x04,0x02,
+ 0x00,0x02,0x03,0x03,0x25,0x4c,0x50,0x4e,0x4a,0x4b,0x4c,0x4b,0x4a,0x4c,0x4c,
+ 0x4c,0x4b,0x4a,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4c,0x4c,0x4d,0x4e,
+ 0x4f,0x50,0x50,0x4f,0x4e,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,
+ 0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x4f,0x4e,
+ 0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x50,0x50,0xc8,0x2f,0x2f,0x2f,0x2f,0x2f,
+ 0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x30,0x30,0x2f,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,
+ 0x32,0x32,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x34,0x35,0x34,0x34,
+ 0x34,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x34,0x34,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x37,0x38,
+ 0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,
+ 0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3f,
+ 0x3f,0x3e,0x3e,0x3f,0x40,0x40,0x40,0x40,0x3f,0x40,0x40,0x41,0x41,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x46,0x47,
+ 0x47,0x47,0x45,0x45,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x46,0x46,
+ 0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x48,0x48,0x48,0x48,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x4b,0x4b,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4a,0x4a,0x4b,0x4c,0x4b,0x47,0x4f,0x54,0x2b,0x0b,0x05,0x03,0x03,0x03,0x03,
+ 0x03,0x01,0x00,0x01,0x02,0x03,0x24,0x4b,0x52,0x50,0x48,0x49,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,0x4d,0x4d,0x4d,
+ 0x4e,0x4f,0x4f,0x50,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4e,0x4f,
+ 0x4f,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,0x4f,
+ 0x4f,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0xc8,0x2f,0x2f,0x2f,
+ 0x2f,0x2f,0x30,0x30,0x30,0x30,0x2f,0x2f,0x2f,0x2f,0x2f,0x30,0x30,0x30,0x31,
+ 0x31,0x31,0x31,0x30,0x2f,0x2f,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x31,
+ 0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,
+ 0x35,0x34,0x33,0x33,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x36,0x37,0x36,0x36,
+ 0x37,0x39,0x39,0x39,0x38,0x37,0x37,0x38,0x39,0x39,0x39,0x38,0x38,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,
+ 0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x3e,0x40,0x40,0x3f,0x3e,0x3e,0x3f,0x40,0x41,0x40,0x3f,0x40,0x41,0x41,0x41,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x43,0x43,0x43,
+ 0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x46,
+ 0x46,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x46,
+ 0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x48,
+ 0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x4a,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,
+ 0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4a,0x48,0x4f,0x53,0x2d,0x0e,0x05,0x03,0x04,
+ 0x04,0x03,0x01,0x01,0x01,0x01,0x01,0x02,0x23,0x4a,0x53,0x50,0x47,0x48,0x4c,
+ 0x4e,0x4e,0x4e,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4e,0x4d,
+ 0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x52,0x52,0x51,0x50,0x50,
+ 0x50,0x50,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0xc8,0x30,
+ 0x30,0x2f,0x2f,0x30,0x30,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,
+ 0x34,0x35,0x35,0x34,0x33,0x34,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x38,0x37,0x37,0x37,0x37,0x38,
+ 0x38,0x37,0x38,0x39,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,
+ 0x40,0x3f,0x3f,0x40,0x41,0x40,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x45,
+ 0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x48,0x48,
+ 0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x48,
+ 0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4d,0x4c,0x4b,0x48,0x50,0x53,0x2f,0x0f,0x06,
+ 0x03,0x04,0x03,0x03,0x01,0x01,0x01,0x02,0x01,0x01,0x23,0x4a,0x52,0x50,0x48,
+ 0x49,0x4d,0x4e,0x4f,0x4f,0x4e,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4e,0x4d,0x4d,0x4e,0x4f,0x4f,0x4e,0x4e,
+ 0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4f,
+ 0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x50,0x4f,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x52,0x51,0x51,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x51,0x50,0x51,0x51,0x50,
+ 0x50,0x51,0x52,0x52,0x52,0x52,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x51,0x50,
+ 0xc8,0x30,0x30,0x30,0x2f,0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x31,0x31,0x31,
+ 0x30,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x30,0x31,0x31,0x31,0x31,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x33,0x33,0x33,0x33,
+ 0x34,0x34,0x35,0x35,0x35,0x35,0x34,0x34,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x38,0x38,0x38,0x37,0x37,
+ 0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3b,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3b,
+ 0x3b,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,0x3b,
+ 0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x41,0x41,0x40,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x48,
+ 0x47,0x46,0x45,0x45,0x45,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4b,0x49,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4c,0x4c,0x4d,0x4c,0x4c,0x49,0x51,0x55,0x30,
+ 0x11,0x07,0x03,0x04,0x03,0x02,0x01,0x01,0x01,0x03,0x03,0x02,0x22,0x49,0x53,
+ 0x52,0x4a,0x4b,0x4e,0x4e,0x4f,0x50,0x50,0x4e,0x4d,0x4c,0x4c,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4f,0x50,0x4f,0x4e,0x4d,0x4e,0x4f,0x4f,
+ 0x4f,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4e,0x4e,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x50,0x50,0x50,0x50,0x51,0x51,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x53,0x52,0x51,
+ 0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x52,0x51,0x52,
+ 0x52,0x52,0x52,0x52,0x53,0x52,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x51,0xc8,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x32,0x32,0x31,0x31,0x31,
+ 0x32,0x32,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x34,0x34,
+ 0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x39,0x39,
+ 0x38,0x38,0x38,0x39,0x3a,0x3a,0x39,0x39,0x38,0x38,0x38,0x39,0x3a,0x3b,0x3b,
+ 0x3b,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,
+ 0x3a,0x3c,0x3b,0x3a,0x3a,0x3a,0x3c,0x3c,0x3c,0x3b,0x3a,0x3a,0x3b,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,
+ 0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,
+ 0x48,0x48,0x48,0x47,0x46,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
+ 0x4c,0x4c,0x4c,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4d,0x4c,0x49,0x52,
+ 0x57,0x32,0x13,0x07,0x03,0x03,0x03,0x02,0x01,0x01,0x02,0x03,0x03,0x03,0x21,
+ 0x47,0x53,0x54,0x4c,0x4c,0x4f,0x4d,0x4e,0x51,0x50,0x4f,0x4d,0x4d,0x4d,0x4d,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x50,0x50,0x50,0x4e,0x4e,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x50,0x50,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x51,0x51,0x51,0x51,
+ 0x51,0x52,0x51,0x50,0x50,0x50,0x51,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x50,0x50,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x52,
+ 0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x52,0x52,0xc8,0x30,0x30,0x2f,0x2f,0x30,0x31,0x31,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x37,0x37,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x39,
+ 0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x39,0x38,0x37,0x37,0x38,0x39,0x3a,
+ 0x3a,0x3b,0x3a,0x3a,0x3a,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3b,0x3c,0x3c,0x3c,0x3b,0x3a,0x3a,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x40,0x40,0x41,0x41,0x42,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,
+ 0x45,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x46,
+ 0x46,0x47,0x48,0x48,0x48,0x48,0x47,0x46,0x46,0x47,0x47,0x48,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4e,0x4f,0x4e,0x4c,
+ 0x4a,0x52,0x57,0x34,0x15,0x07,0x03,0x03,0x02,0x01,0x01,0x01,0x02,0x03,0x03,
+ 0x02,0x1d,0x40,0x53,0x57,0x4c,0x4c,0x50,0x4e,0x4e,0x50,0x50,0x4f,0x4e,0x4d,
+ 0x4e,0x4f,0x4f,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x51,0x50,0x50,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x51,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x52,0x53,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x52,0xc8,0x30,0x30,0x2f,0x2f,0x30,0x31,0x31,0x31,
+ 0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x38,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x39,0x37,0x38,0x38,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3b,
+ 0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3e,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x41,0x41,
+ 0x41,0x41,0x40,0x40,0x41,0x41,0x42,0x42,0x41,0x41,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x44,0x45,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4b,0x4b,
+ 0x4b,0x4a,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,
+ 0x4e,0x4c,0x4b,0x52,0x57,0x35,0x15,0x07,0x02,0x03,0x02,0x01,0x01,0x01,0x02,
+ 0x03,0x03,0x01,0x16,0x36,0x52,0x5a,0x4b,0x4c,0x51,0x50,0x4f,0x50,0x50,0x50,
+ 0x4f,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x51,0x51,
+ 0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x51,0x51,0x52,0x53,0x53,
+ 0x53,0x52,0x50,0x50,0x51,0x51,0x52,0x53,0x52,0x52,0x52,0x53,0x53,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x54,0x53,0x53,0x54,0x54,0x54,0x53,0x53,0xc8,0x30,0x30,0x30,0x30,0x30,0x30,
+ 0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x34,0x34,0x35,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x37,
+ 0x37,0x38,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,
+ 0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x42,0x42,0x41,0x41,0x41,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x44,0x45,0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x48,
+ 0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4b,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4a,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,
+ 0x4e,0x4f,0x4e,0x4c,0x4b,0x52,0x56,0x36,0x17,0x07,0x01,0x03,0x02,0x01,0x02,
+ 0x02,0x02,0x03,0x02,0x00,0x0e,0x29,0x50,0x5c,0x4a,0x4c,0x52,0x50,0x50,0x50,
+ 0x51,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x51,0x51,0x51,0x52,0x52,0x52,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x51,0x51,0x51,0x51,0x51,
+ 0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x51,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x52,0x52,0x53,0x52,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,
+ 0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x54,0x54,0x54,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x54,0x54,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x52,0xc8,0x30,0x30,0x30,0x30,
+ 0x30,0x31,0x31,0x31,0x31,0x30,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x37,0x38,0x38,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x41,0x41,0x41,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x42,0x41,0x42,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x48,0x48,0x48,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4a,
+ 0x49,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4f,0x50,0x4e,0x4d,0x4d,0x4d,0x4d,0x4c,
+ 0x4c,0x4d,0x4e,0x4f,0x4e,0x4d,0x4b,0x51,0x55,0x36,0x18,0x07,0x01,0x03,0x01,
+ 0x01,0x02,0x02,0x02,0x03,0x02,0x00,0x09,0x1f,0x4d,0x5f,0x4b,0x4c,0x53,0x51,
+ 0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x52,
+ 0x52,0x52,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x51,0x51,
+ 0x51,0x51,0x50,0x50,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x52,0x50,0x50,0x51,
+ 0x51,0x52,0x53,0x53,0x54,0x53,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x54,0x54,
+ 0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x56,0x55,0x55,0x54,0x54,
+ 0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x53,0x53,0xc8,0x31,0x31,
+ 0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x35,0x35,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x39,0x39,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3d,0x3c,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,
+ 0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x40,0x40,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x42,
+ 0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x49,
+ 0x4a,0x4a,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,
+ 0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4f,0x50,0x4f,0x4e,0x4e,0x4e,
+ 0x4e,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4d,0x4b,0x51,0x55,0x37,0x19,0x06,0x01,
+ 0x03,0x01,0x00,0x02,0x02,0x01,0x02,0x03,0x02,0x06,0x16,0x4c,0x62,0x4e,0x4e,
+ 0x53,0x52,0x50,0x4f,0x50,0x51,0x50,0x50,0x51,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x52,0x52,0x52,0x51,0x50,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,
+ 0x52,0x50,0x50,0x51,0x51,0x51,0x53,0x53,0x54,0x55,0x55,0x55,0x54,0x53,0x52,
+ 0x51,0x51,0x51,0x52,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,
+ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x56,0x55,0x55,0x55,0x54,
+ 0x54,0x54,0x53,0x53,0x54,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x55,0x54,0xc8,
+ 0x32,0x32,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x31,0x32,0x33,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x37,0x37,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x36,0x37,0x37,0x38,
+ 0x38,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x38,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3b,0x3a,0x3a,0x3a,0x3a,0x3c,0x3c,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x44,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x44,0x44,
+ 0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,
+ 0x47,0x47,0x47,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x48,0x47,0x47,0x48,
+ 0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4a,0x49,
+ 0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4c,0x4c,
+ 0x4c,0x4c,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4d,0x4d,0x4e,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x4f,
+ 0x4f,0x4f,0x4f,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x4e,0x4b,0x51,0x56,0x39,0x1b,
+ 0x07,0x01,0x03,0x01,0x00,0x02,0x02,0x02,0x02,0x03,0x04,0x05,0x12,0x49,0x62,
+ 0x51,0x50,0x53,0x53,0x51,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x52,0x52,0x52,0x51,0x51,0x50,0x51,0x51,0x51,0x51,0x52,0x52,0x52,
+ 0x53,0x53,0x52,0x50,0x51,0x53,0x53,0x53,0x53,0x54,0x55,0x56,0x56,0x56,0x55,
+ 0x54,0x53,0x53,0x52,0x52,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x53,0x53,
+ 0x53,0x54,0x54,0x54,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x55,
+ 0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x56,0x55,
+ 0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x56,
+ 0x55,0xc8,0x32,0x32,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x33,0x33,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x37,0x37,0x36,0x36,0x37,
+ 0x38,0x38,0x38,0x38,0x38,0x37,0x37,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3c,0x3b,0x3a,0x3a,0x3a,
+ 0x3b,0x3c,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x45,0x44,0x44,
+ 0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4c,
+ 0x4b,0x4b,0x4a,0x4b,0x4b,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4f,0x4e,0x4e,0x4e,0x4f,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x4f,0x4f,0x4e,0x50,0x50,0x50,0x50,0x4e,0x4c,0x52,0x57,
+ 0x3a,0x1d,0x07,0x01,0x03,0x01,0x00,0x03,0x03,0x02,0x03,0x03,0x05,0x04,0x0e,
+ 0x46,0x61,0x54,0x51,0x51,0x53,0x53,0x51,0x51,0x51,0x51,0x52,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x51,0x51,0x52,0x52,0x53,0x52,0x52,0x52,
+ 0x52,0x53,0x53,0x53,0x53,0x52,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,
+ 0x56,0x55,0x55,0x56,0x55,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,
+ 0x55,0x54,0x53,0x55,0x55,0x55,0x56,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+ 0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x56,0x56,0x57,0x57,0x56,0x56,0x56,0x56,0x55,0x56,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x56,0xc8,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,0x32,0x32,0x32,
+ 0x32,0x32,0x33,0x34,0x34,0x33,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x36,0x35,
+ 0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x38,0x38,0x37,0x37,
+ 0x37,0x37,0x37,0x38,0x39,0x39,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3c,0x3d,0x3d,0x3d,0x3c,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3c,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x40,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x42,0x43,0x43,
+ 0x43,0x43,0x44,0x45,0x45,0x44,0x43,0x43,0x44,0x45,0x43,0x43,0x44,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x46,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4e,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4d,0x4d,0x4f,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x50,0x4f,0x4c,
+ 0x53,0x57,0x3b,0x1d,0x08,0x02,0x03,0x01,0x00,0x03,0x03,0x02,0x03,0x03,0x03,
+ 0x01,0x0b,0x42,0x5e,0x56,0x52,0x50,0x53,0x54,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x54,0x55,0x55,0x54,0x54,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x54,
+ 0x53,0x53,0x53,0x53,0x55,0x55,0x54,0x53,0x54,0x55,0x54,0x54,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x55,0x57,0x57,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x56,
+ 0x56,0x56,0x56,0x55,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x58,0x58,0x57,0x57,0x58,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x56,0x55,0xc8,0x31,0x31,0x31,0x31,0x31,0x31,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x33,0x34,0x33,0x33,0x33,0x32,0x32,0x33,0x33,0x34,0x34,
+ 0x34,0x34,0x34,0x33,0x33,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x35,0x36,
+ 0x36,0x36,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x36,0x36,0x37,0x38,0x38,
+ 0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3d,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x40,0x3f,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x44,0x43,0x44,
+ 0x45,0x45,0x46,0x45,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4d,0x4e,0x4e,0x4e,0x4f,
+ 0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,
+ 0x4f,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x51,0x51,0x50,0x51,0x51,0x51,0x50,
+ 0x4f,0x4c,0x53,0x59,0x3c,0x1e,0x08,0x01,0x02,0x01,0x01,0x03,0x03,0x02,0x03,
+ 0x03,0x03,0x00,0x08,0x3d,0x5b,0x57,0x53,0x51,0x53,0x55,0x54,0x53,0x53,0x53,
+ 0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x53,0x53,0x53,0x53,0x54,0x55,0x55,
+ 0x55,0x55,0x54,0x54,0x55,0x55,0x56,0x56,0x55,0x55,0x55,0x55,0x54,0x54,0x54,
+ 0x54,0x54,0x53,0x53,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x56,0x55,0x55,
+ 0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x57,0x57,0x57,0x58,0x58,0x58,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x58,0x58,0x57,
+ 0x58,0x58,0x58,0x57,0x57,0x56,0x55,0xc8,0x32,0x32,0x31,0x31,0x30,0x30,0x31,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+ 0x33,0x33,0x33,0x33,0x33,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3b,
+ 0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3a,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,0x40,
+ 0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x43,
+ 0x43,0x42,0x42,0x43,0x44,0x44,0x44,0x43,0x43,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x44,0x43,0x44,0x45,0x46,0x45,0x45,0x44,0x45,0x46,0x46,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x48,0x48,0x49,
+ 0x49,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4d,0x4e,0x4e,
+ 0x4f,0x4f,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x4f,0x4f,0x50,0x50,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x53,0x53,
+ 0x52,0x51,0x50,0x4d,0x55,0x5a,0x3d,0x1e,0x08,0x00,0x00,0x01,0x03,0x04,0x03,
+ 0x02,0x02,0x03,0x05,0x00,0x06,0x39,0x57,0x58,0x57,0x53,0x55,0x56,0x53,0x53,
+ 0x53,0x54,0x55,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x54,0x53,0x53,0x54,0x56,
+ 0x57,0x56,0x56,0x55,0x55,0x56,0x57,0x57,0x57,0x56,0x56,0x55,0x55,0x54,0x55,
+ 0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x56,0x55,0x56,0x59,0x5a,0x58,0x57,
+ 0x56,0x55,0x55,0x55,0x55,0x55,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,
+ 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,
+ 0x59,0x59,0x5a,0x5a,0x59,0x58,0x57,0x57,0x57,0xc8,0x32,0x32,0x32,0x31,0x31,
+ 0x31,0x32,0x32,0x32,0x33,0x32,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x33,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x36,0x37,0x37,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x42,0x41,0x41,0x42,0x42,0x43,0x44,0x44,0x44,0x43,0x43,0x43,0x44,
+ 0x44,0x44,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x44,0x45,0x46,0x46,0x45,0x45,0x45,0x46,0x46,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x46,0x45,0x45,0x45,0x46,0x46,0x46,0x46,
+ 0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x48,0x48,
+ 0x48,0x49,0x49,0x49,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4b,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,
+ 0x4c,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x53,0x53,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x52,0x50,0x4f,0x56,0x5a,0x3d,0x1e,0x08,0x00,0x00,0x01,0x03,
+ 0x03,0x03,0x02,0x02,0x03,0x04,0x00,0x05,0x36,0x55,0x59,0x56,0x51,0x53,0x54,
+ 0x53,0x52,0x52,0x54,0x54,0x53,0x53,0x54,0x55,0x55,0x56,0x55,0x54,0x54,0x54,
+ 0x55,0x56,0x56,0x56,0x55,0x54,0x55,0x56,0x56,0x57,0x56,0x56,0x56,0x55,0x55,
+ 0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x57,0x57,0x58,0x59,
+ 0x58,0x58,0x57,0x56,0x56,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,
+ 0x59,0x58,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x59,
+ 0x59,0x58,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,
+ 0x58,0x59,0x59,0x59,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x58,0x58,0xc8,0x32,0x32,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x32,0x32,0x33,0x34,0x34,0x34,0x34,
+ 0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x43,0x44,0x44,0x45,0x45,0x44,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x47,0x47,0x45,0x45,0x45,0x47,0x47,
+ 0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x45,0x46,0x47,0x47,
+ 0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x48,0x48,
+ 0x48,0x48,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4a,0x4b,0x4c,0x4c,0x4c,0x4b,
+ 0x4b,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,
+ 0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x52,0x51,
+ 0x50,0x50,0x50,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x52,0x50,0x57,0x5a,0x3d,0x1e,0x07,0x00,0x01,
+ 0x01,0x02,0x03,0x03,0x02,0x02,0x03,0x03,0x00,0x05,0x32,0x53,0x5b,0x57,0x50,
+ 0x53,0x55,0x53,0x53,0x52,0x53,0x54,0x53,0x54,0x54,0x55,0x56,0x56,0x56,0x55,
+ 0x55,0x56,0x57,0x56,0x55,0x55,0x55,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x56,
+ 0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x59,0x58,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,0x58,0x59,
+ 0x59,0x59,0x59,0x58,0x58,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x58,0x58,0x59,
+ 0x59,0x59,0x59,0x59,0x58,0x59,0x58,0x59,0x59,0x5a,0x59,0x59,0x59,0x59,0x59,
+ 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0xc8,0x32,
+ 0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x33,0x35,0x35,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,
+ 0x39,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,
+ 0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x44,0x44,0x44,0x44,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x48,0x47,0x46,0x45,0x45,
+ 0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x47,0x47,
+ 0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,
+ 0x49,0x48,0x48,0x49,0x49,0x4a,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4e,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,
+ 0x50,0x50,0x4f,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,
+ 0x52,0x51,0x50,0x50,0x50,0x51,0x53,0x53,0x54,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x54,0x53,0x50,0x57,0x5b,0x3e,0x1f,0x08,
+ 0x01,0x03,0x02,0x01,0x02,0x02,0x02,0x02,0x03,0x05,0x01,0x06,0x2e,0x4f,0x5f,
+ 0x5c,0x53,0x57,0x5a,0x57,0x55,0x53,0x54,0x55,0x55,0x54,0x55,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x58,0x57,0x56,0x56,0x55,0x55,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x58,
+ 0x58,0x57,0x57,0x57,0x59,0x5a,0x59,0x59,0x58,0x57,0x58,0x59,0x59,0x58,0x58,
+ 0x58,0x59,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5b,0x5c,0x5b,0x5b,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,
+ 0xc8,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x33,0x33,0x32,0x33,
+ 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x37,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x37,0x37,
+ 0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x38,0x38,0x38,0x38,0x39,
+ 0x3a,0x3a,0x3a,0x38,0x38,0x38,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x44,0x44,0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x45,0x46,0x46,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x48,0x48,0x46,
+ 0x46,0x46,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,
+ 0x4a,0x4a,0x4a,0x49,0x48,0x49,0x4a,0x4a,0x4a,0x49,0x49,0x49,0x4a,0x4b,0x4c,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4d,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4f,0x50,0x4f,0x4f,0x4e,0x4d,0x4d,0x4e,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x50,0x51,
+ 0x51,0x51,0x51,0x50,0x50,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x52,
+ 0x52,0x53,0x53,0x52,0x51,0x51,0x51,0x52,0x53,0x54,0x54,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x55,0x54,0x53,0x51,0x58,0x5d,0x41,
+ 0x20,0x07,0x01,0x04,0x02,0x01,0x02,0x02,0x02,0x02,0x02,0x03,0x00,0x04,0x28,
+ 0x4a,0x63,0x5e,0x53,0x58,0x5a,0x58,0x56,0x54,0x55,0x56,0x56,0x56,0x56,0x57,
+ 0x58,0x58,0x57,0x57,0x58,0x58,0x59,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x59,
+ 0x59,0x58,0x58,0x58,0x57,0x58,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x59,
+ 0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5b,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5a,0x5a,0x5b,0x5c,0x5c,0x5c,
+ 0x5c,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x5b,0x5b,0x5a,
+ 0x5a,0x5a,0xc8,0x32,0x32,0x32,0x32,0x33,0x33,0x33,0x34,0x34,0x33,0x33,0x33,
+ 0x32,0x33,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x37,0x37,0x37,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3a,0x3a,0x3b,0x3c,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,
+ 0x40,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x45,0x45,0x46,
+ 0x46,0x47,0x46,0x46,0x46,0x46,0x47,0x46,0x46,0x46,0x46,0x45,0x45,0x46,0x48,
+ 0x48,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4b,0x4b,0x4a,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,0x4e,
+ 0x4d,0x4d,0x4c,0x4c,0x4d,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4e,0x4e,
+ 0x4f,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,
+ 0x51,0x51,0x52,0x52,0x52,0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x54,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x54,0x53,0x51,0x59,
+ 0x5e,0x43,0x24,0x07,0x00,0x04,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,
+ 0x03,0x22,0x45,0x65,0x61,0x51,0x57,0x59,0x57,0x56,0x55,0x57,0x57,0x57,0x57,
+ 0x57,0x59,0x59,0x59,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x59,
+ 0x59,0x5a,0x5a,0x59,0x59,0x59,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,
+ 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5a,0x5a,
+ 0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,
+ 0x5c,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x5d,
+ 0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,0x5e,0x5d,
+ 0x5c,0x5c,0x5c,0x5c,0xc8,0x32,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x34,0x34,
+ 0x33,0x33,0x33,0x34,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x39,0x39,
+ 0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3b,0x3b,
+ 0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x42,
+ 0x42,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x47,0x48,0x48,0x47,0x47,0x47,0x48,0x48,0x47,0x46,0x46,0x46,0x46,0x45,
+ 0x46,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x49,0x49,0x49,0x49,0x4a,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4b,0x4b,0x4a,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4d,0x4e,0x4f,
+ 0x4f,0x4f,0x4e,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,
+ 0x4f,0x4f,0x50,0x50,0x51,0x51,0x52,0x51,0x51,0x50,0x50,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x50,0x51,0x51,0x52,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x52,0x52,0x53,0x53,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x54,0x54,0x54,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,
+ 0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x55,0x53,
+ 0x52,0x5a,0x60,0x46,0x27,0x09,0x00,0x05,0x03,0x02,0x02,0x02,0x03,0x03,0x03,
+ 0x03,0x02,0x07,0x20,0x43,0x6a,0x64,0x51,0x56,0x59,0x59,0x59,0x59,0x59,0x58,
+ 0x58,0x58,0x59,0x59,0x5a,0x5a,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5b,0x5b,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x59,
+ 0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,
+ 0x5c,0x5a,0x59,0x59,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5b,0x5b,0x5b,0x5c,0x5b,0x5b,0x5b,0x5c,
+ 0x5c,0x5c,0x5c,0x5c,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,0x5c,
+ 0x5c,0x5d,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,
+ 0x5e,0x5d,0x5c,0x5c,0x5c,0x5c,0xc8,0x32,0x32,0x33,0x34,0x34,0x34,0x34,0x35,
+ 0x35,0x34,0x34,0x34,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,
+ 0x37,0x37,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x38,
+ 0x38,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,
+ 0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3d,0x3d,0x3c,
+ 0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x43,0x43,0x42,0x42,0x42,0x42,0x43,0x43,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x45,0x45,0x45,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x47,0x48,0x48,0x48,0x47,0x46,0x47,0x47,
+ 0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x49,0x49,0x49,0x4a,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x51,0x51,0x50,0x51,0x51,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x55,0x55,
+ 0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x56,0x55,0x53,0x5a,0x61,0x49,0x2b,0x0a,0x01,0x05,0x03,0x03,0x02,0x02,0x03,
+ 0x03,0x03,0x04,0x03,0x08,0x1a,0x3d,0x6b,0x65,0x51,0x55,0x59,0x5a,0x5b,0x5b,
+ 0x5a,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x5a,0x5a,0x5b,
+ 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5b,0x5c,0x5d,0x5b,0x5a,0x5a,0x5b,
+ 0x5d,0x5e,0x5d,0x5b,0x5a,0x5a,0x5b,0x5d,0x5d,0x5d,0x5d,0x5e,0x5d,0x5d,0x5c,
+ 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5c,0x5c,0x5b,0x5c,0x5c,0x5c,0x5d,
+ 0x5d,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5d,0x5d,
+ 0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5d,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0xc8,0x33,0x33,0x33,0x34,0x35,0x35,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x39,0x39,0x38,
+ 0x38,0x38,0x39,0x3a,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3d,
+ 0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x43,0x43,0x43,0x43,0x42,0x41,0x41,0x41,0x41,0x42,0x43,
+ 0x43,0x43,0x42,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,
+ 0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x47,
+ 0x47,0x48,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x47,0x47,0x48,0x49,0x49,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4e,0x4f,0x50,0x50,0x50,0x50,
+ 0x50,0x51,0x51,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x55,
+ 0x54,0x53,0x53,0x54,0x55,0x56,0x57,0x56,0x56,0x54,0x54,0x56,0x56,0x57,0x57,
+ 0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,
+ 0x58,0x58,0x57,0x57,0x54,0x5b,0x62,0x4d,0x2f,0x0a,0x00,0x04,0x03,0x03,0x02,
+ 0x02,0x02,0x03,0x03,0x03,0x02,0x04,0x0f,0x30,0x65,0x63,0x50,0x55,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5c,0x5c,
+ 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5c,0x5a,
+ 0x5a,0x5b,0x5d,0x5e,0x5e,0x5c,0x5b,0x5b,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,
+ 0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5c,0x5c,0x5d,0xc8,0x33,0x34,0x34,0x35,
+ 0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+ 0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x39,0x39,0x38,0x38,0x39,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3b,0x3c,0x3c,0x3c,0x3d,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x43,0x43,0x42,0x42,0x43,
+ 0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x47,0x46,0x47,0x46,0x45,0x45,0x45,0x46,0x47,0x47,0x48,0x47,0x47,0x46,0x47,
+ 0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x4a,0x49,0x49,0x4a,0x4b,0x4a,
+ 0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,
+ 0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x51,0x52,
+ 0x51,0x51,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x56,
+ 0x57,0x56,0x55,0x54,0x54,0x55,0x56,0x57,0x57,0x57,0x56,0x55,0x55,0x56,0x57,
+ 0x57,0x57,0x57,0x56,0x56,0x56,0x57,0x57,0x58,0x58,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x58,0x59,0x59,0x59,0x57,0x56,0x5d,0x62,0x50,0x32,0x0c,0x00,0x03,0x03,
+ 0x03,0x03,0x02,0x02,0x02,0x03,0x04,0x03,0x03,0x07,0x28,0x62,0x64,0x53,0x58,
+ 0x5c,0x5c,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5d,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,
+ 0x5d,0x5c,0x5c,0x5c,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,
+ 0x5d,0x5b,0x5b,0x5c,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,
+ 0x60,0x60,0x60,0x5f,0x5f,0x60,0x61,0x61,0x60,0x5f,0x5f,0x5e,0xc8,0x34,0x34,
+ 0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,
+ 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x44,0x45,0x45,0x45,
+ 0x45,0x44,0x44,0x44,0x45,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x46,0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x47,
+ 0x47,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x48,
+ 0x48,0x49,0x48,0x48,0x4a,0x4a,0x49,0x48,0x48,0x4a,0x4b,0x4b,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4e,0x4e,0x4d,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x51,0x51,0x51,
+ 0x53,0x53,0x53,0x52,0x51,0x51,0x51,0x52,0x53,0x53,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x55,
+ 0x56,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x55,
+ 0x55,0x56,0x57,0x57,0x57,0x56,0x56,0x56,0x57,0x57,0x58,0x57,0x57,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,
+ 0x57,0x57,0x57,0x59,0x5a,0x5a,0x5a,0x58,0x57,0x5e,0x63,0x53,0x35,0x0d,0x00,
+ 0x03,0x03,0x03,0x03,0x02,0x01,0x02,0x03,0x06,0x04,0x03,0x03,0x23,0x62,0x66,
+ 0x57,0x5b,0x5e,0x5e,0x5d,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,
+ 0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,0x5f,0x5f,0x5f,0x5e,0x5f,0x60,0x60,
+ 0x60,0x5f,0x5f,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x60,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x60,0x61,0x61,0x61,0x61,0x60,0x60,0x62,0x62,0x63,0x63,0x63,0x62,0x62,0xc8,
+ 0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x36,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x37,0x37,0x38,0x38,0x38,0x39,0x39,0x39,0x39,0x39,0x39,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,
+ 0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x44,0x45,0x45,0x43,0x43,
+ 0x44,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x43,0x44,0x45,
+ 0x45,0x46,0x45,0x45,0x44,0x44,0x45,0x45,0x46,0x46,0x45,0x45,0x46,0x46,0x46,
+ 0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x47,0x47,0x46,0x47,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,
+ 0x48,0x48,0x49,0x4a,0x49,0x4a,0x4b,0x4a,0x4a,0x49,0x49,0x4a,0x4b,0x4c,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4e,0x4f,0x4f,0x4e,0x4e,0x4d,0x4c,0x4d,0x4e,0x4f,0x4e,0x4e,0x4f,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x50,0x50,0x50,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x53,0x53,0x53,0x52,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x52,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x56,0x56,0x56,0x56,0x56,0x55,0x55,0x55,0x56,0x56,
+ 0x56,0x56,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x58,0x57,
+ 0x57,0x58,0x59,0x59,0x59,0x59,0x58,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x58,
+ 0x59,0x58,0x58,0x57,0x58,0x59,0x59,0x5a,0x5a,0x58,0x57,0x5e,0x63,0x54,0x36,
+ 0x0e,0x00,0x02,0x03,0x03,0x03,0x02,0x01,0x02,0x03,0x03,0x03,0x05,0x04,0x24,
+ 0x65,0x69,0x57,0x58,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,
+ 0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x5f,0x5e,0x5d,0x5d,0x5e,0x60,0x61,0x61,0x5e,
+ 0x5c,0x5e,0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x61,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x5f,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x60,0x60,
+ 0x60,0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x60,0x61,0x62,0x63,0x64,0x64,
+ 0x63,0xc8,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x36,0x35,0x35,0x35,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x39,
+ 0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,
+ 0x3b,0x3b,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3e,0x3f,0x3f,0x40,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x40,
+ 0x40,0x40,0x3f,0x3f,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x44,0x45,0x45,
+ 0x44,0x43,0x44,0x45,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x44,0x44,
+ 0x44,0x45,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x45,0x46,0x46,
+ 0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x47,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4f,0x4e,0x4e,
+ 0x4e,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4d,0x4d,0x4e,0x4f,0x4f,
+ 0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x50,0x50,0x51,0x52,
+ 0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x52,0x52,0x53,0x53,0x54,0x54,0x54,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x56,0x57,0x58,0x58,0x58,0x57,0x57,0x58,0x59,0x5a,0x59,
+ 0x58,0x57,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x58,0x58,0x58,0x58,0x59,0x59,
+ 0x5a,0x5a,0x59,0x59,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x59,0x57,0x5d,0x62,
+ 0x57,0x3c,0x0e,0x00,0x01,0x02,0x03,0x03,0x02,0x01,0x03,0x03,0x01,0x02,0x04,
+ 0x04,0x24,0x66,0x6a,0x58,0x58,0x59,0x59,0x5a,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x61,0x5f,0x5e,0x5e,0x5f,0x61,0x62,
+ 0x62,0x5f,0x5d,0x5e,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x60,0x5f,0x61,0x62,
+ 0x64,0x64,0x63,0xc8,0x34,0x34,0x35,0x35,0x36,0x36,0x36,0x35,0x35,0x34,0x35,
+ 0x36,0x36,0x37,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,
+ 0x44,0x44,0x45,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x46,0x46,0x43,0x44,0x47,0x47,0x46,0x45,0x45,0x46,0x46,0x46,0x47,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4a,0x4a,0x4a,
+ 0x4a,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4b,0x4b,0x4c,0x4c,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4e,0x4d,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,
+ 0x50,0x4f,0x4f,0x4e,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x50,0x50,
+ 0x51,0x52,0x52,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,
+ 0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x54,0x54,0x56,0x57,0x57,0x56,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x55,0x56,0x57,0x57,0x58,0x59,0x58,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x58,0x58,0x58,0x58,0x59,0x5a,
+ 0x5a,0x59,0x57,0x57,0x59,0x5a,0x59,0x59,0x58,0x58,0x58,0x59,0x59,0x59,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x59,0x58,
+ 0x5b,0x5e,0x5d,0x45,0x11,0x00,0x00,0x01,0x02,0x01,0x02,0x03,0x03,0x03,0x04,
+ 0x02,0x01,0x02,0x23,0x64,0x6b,0x5e,0x5e,0x5d,0x58,0x5a,0x5d,0x5c,0x5b,0x5c,
+ 0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5e,0x5e,0x5f,
+ 0x5f,0x5f,0x60,0x60,0x60,0x60,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x60,0x61,0x62,
+ 0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x61,0x60,0x5f,0x5f,0x5f,0x60,0x61,
+ 0x61,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x61,0x61,0x61,0x61,0x61,
+ 0x60,0x5f,0x5e,0x5e,0x5f,0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x61,
+ 0x62,0x62,0x62,0x62,0x62,0xc8,0x34,0x34,0x35,0x36,0x36,0x36,0x36,0x36,0x35,
+ 0x34,0x35,0x36,0x37,0x38,0x37,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,0x38,
+ 0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,0x3e,0x3e,
+ 0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x42,0x42,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x47,0x46,0x42,0x44,0x47,0x47,0x46,0x45,0x46,0x48,0x47,0x46,0x47,
+ 0x47,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x49,
+ 0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x49,0x4a,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,
+ 0x4d,0x4d,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x51,0x52,0x52,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x54,0x54,0x55,
+ 0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x55,0x55,0x56,0x57,0x57,0x57,
+ 0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x56,0x57,0x57,0x58,0x59,
+ 0x59,0x59,0x59,0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x59,0x58,0x58,0x58,0x58,
+ 0x59,0x5a,0x5a,0x5a,0x58,0x58,0x5a,0x5a,0x59,0x59,0x58,0x59,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5c,0x5c,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,
+ 0x5a,0x5a,0x5b,0x5e,0x62,0x4c,0x13,0x00,0x01,0x02,0x03,0x01,0x02,0x03,0x03,
+ 0x03,0x03,0x02,0x01,0x00,0x20,0x63,0x6a,0x5c,0x5e,0x5e,0x5b,0x5c,0x5e,0x5c,
+ 0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x61,0x61,0x60,0x61,0x62,0x61,0x61,0x61,
+ 0x61,0x62,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x60,0x61,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x61,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x63,
+ 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x62,0xc8,0x35,0x35,0x36,0x36,0x36,0x36,0x36,
+ 0x36,0x36,0x35,0x36,0x36,0x38,0x38,0x37,0x36,0x36,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3c,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x44,0x45,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x45,0x43,0x45,0x47,0x47,0x46,0x45,0x46,0x48,0x47,
+ 0x46,0x48,0x47,0x46,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x49,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4d,0x4c,0x4c,0x4d,0x4e,
+ 0x4f,0x4f,0x4e,0x4e,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x4f,
+ 0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,
+ 0x50,0x50,0x50,0x50,0x51,0x50,0x50,0x51,0x52,0x52,0x51,0x51,0x51,0x51,0x50,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,
+ 0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x56,0x57,0x57,
+ 0x57,0x57,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,
+ 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x58,0x58,0x59,0x59,0x59,
+ 0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5c,0x5b,0x5a,0x59,0x59,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5c,0x5b,0x5a,0x5b,0x5b,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5b,0x5c,0x5e,0x65,0x52,0x16,0x01,0x03,0x03,0x03,0x00,0x02,
+ 0x04,0x03,0x01,0x00,0x02,0x04,0x00,0x1c,0x63,0x69,0x5a,0x5c,0x5e,0x60,0x60,
+ 0x5f,0x5e,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x62,0x62,
+ 0x61,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x63,0x63,0x63,0x64,0x65,0x65,0x63,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x63,0x63,0x63,0x62,0x63,0x64,0x63,0x62,0x60,0x60,0x61,0x62,
+ 0x64,0x65,0x65,0x65,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x63,0x62,0x62,0x62,
+ 0x62,0x63,0x64,0x64,0x63,0x63,0x64,0x64,0x64,0x63,0x62,0x62,0x63,0x63,0x63,
+ 0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0xc8,0x36,0x36,0x36,0x36,0x37,
+ 0x37,0x37,0x36,0x36,0x36,0x36,0x37,0x38,0x38,0x37,0x36,0x36,0x36,0x37,0x38,
+ 0x38,0x39,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3c,0x3c,0x3c,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3c,0x3d,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x43,0x43,0x43,0x43,0x43,0x44,
+ 0x44,0x44,0x44,0x44,0x45,0x44,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x45,0x45,0x46,0x46,0x45,0x45,0x47,
+ 0x47,0x45,0x45,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x49,0x4a,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4e,0x4c,0x4d,
+ 0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,
+ 0x50,0x4f,0x4e,0x4e,0x4f,0x50,0x50,0x51,0x52,0x51,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x53,0x52,0x52,0x52,
+ 0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+ 0x55,0x55,0x55,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x56,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,
+ 0x57,0x57,0x58,0x57,0x57,0x57,0x58,0x57,0x58,0x58,0x59,0x59,0x58,0x59,0x5a,
+ 0x5a,0x5a,0x59,0x59,0x59,0x59,0x5a,0x5b,0x5b,0x5b,0x5d,0x5c,0x5a,0x59,0x59,
+ 0x59,0x5a,0x5c,0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x5c,
+ 0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x6a,0x58,0x1b,0x03,0x03,0x04,0x04,
+ 0x00,0x03,0x06,0x03,0x00,0x01,0x03,0x07,0x00,0x1c,0x64,0x6d,0x5e,0x5c,0x5e,
+ 0x61,0x62,0x62,0x5f,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x60,0x60,0x60,0x60,0x61,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x64,0x64,0x64,0x64,0x63,0x63,0x63,0x64,0x65,0x63,0x62,0x62,0x62,
+ 0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x63,0x62,0x62,0x62,
+ 0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x65,0x63,0x64,0x65,0x65,0x65,0x65,0x65,
+ 0x64,0x63,0x63,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x64,0x64,0x65,
+ 0x65,0x65,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0xc8,0x37,0x36,0x36,
+ 0x36,0x37,0x37,0x37,0x36,0x36,0x36,0x36,0x38,0x39,0x39,0x37,0x36,0x36,0x36,
+ 0x37,0x38,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x43,0x43,0x44,0x44,0x44,0x43,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x43,0x43,0x43,
+ 0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x46,0x46,0x46,0x45,0x45,
+ 0x46,0x47,0x47,0x45,0x45,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x49,0x49,0x49,0x4a,0x4a,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4a,0x4a,
+ 0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4f,0x50,
+ 0x50,0x50,0x50,0x4f,0x4f,0x4e,0x4f,0x50,0x50,0x51,0x52,0x51,0x51,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x52,0x52,0x53,0x53,0x53,0x53,0x52,0x52,0x53,0x53,0x53,0x53,0x53,
+ 0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x56,0x56,0x56,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x57,
+ 0x57,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x58,0x59,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x5a,0x59,
+ 0x5a,0x5b,0x5b,0x5b,0x5a,0x5a,0x59,0x5a,0x5a,0x5b,0x5c,0x5c,0x5d,0x5c,0x5a,
+ 0x5a,0x59,0x5a,0x5b,0x5d,0x5e,0x5e,0x5e,0x5d,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
+ 0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x6d,0x5e,0x20,0x06,0x03,
+ 0x04,0x04,0x01,0x03,0x06,0x02,0x00,0x02,0x04,0x07,0x00,0x1c,0x5f,0x6d,0x65,
+ 0x5e,0x5c,0x5f,0x62,0x64,0x61,0x5f,0x5f,0x60,0x60,0x60,0x60,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x60,0x62,0x61,0x62,0x62,0x62,0x61,0x61,0x61,0x60,0x60,0x60,
+ 0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x65,0x65,0x65,0x65,0x64,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x64,0x65,0x65,0x65,0x64,0x63,0x63,0x63,0x64,0x65,0x64,0x63,
+ 0x62,0x63,0x63,0x64,0x65,0x65,0x65,0x64,0x64,0x64,0x65,0x64,0x63,0x63,0x63,
+ 0x64,0x63,0x63,0x62,0x62,0x63,0x64,0x65,0x66,0x65,0x64,0x64,0x65,0x65,0x66,
+ 0x66,0x66,0x65,0x65,0x64,0x65,0x64,0x65,0x65,0x66,0x67,0x67,0x66,0x66,0x65,
+ 0x65,0x65,0x66,0x66,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0xc8,0x38,
+ 0x38,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x38,0x3a,0x39,0x38,0x37,
+ 0x36,0x36,0x37,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x39,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,
+ 0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x43,0x44,0x44,0x45,
+ 0x44,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x47,
+ 0x45,0x45,0x47,0x47,0x46,0x45,0x45,0x47,0x48,0x49,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,
+ 0x4f,0x4f,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4e,0x4e,
+ 0x50,0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x51,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x52,0x51,0x51,0x51,0x51,0x52,0x53,0x54,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x56,0x57,0x57,0x56,0x56,
+ 0x56,0x57,0x57,0x57,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,
+ 0x58,0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,
+ 0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5c,0x5a,0x5a,0x5a,0x5a,0x5c,0x5c,0x5d,0x5d,
+ 0x5c,0x5b,0x5a,0x5a,0x5a,0x5c,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,
+ 0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5d,0x5b,0x6f,0x62,0x24,
+ 0x07,0x02,0x03,0x04,0x02,0x03,0x04,0x02,0x00,0x02,0x03,0x03,0x00,0x19,0x53,
+ 0x69,0x6b,0x62,0x5b,0x5a,0x5e,0x62,0x61,0x60,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x60,0x60,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x61,0x61,
+ 0x61,0x62,0x62,0x62,0x64,0x63,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x64,0x64,
+ 0x63,0x63,0x63,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x63,0x63,0x63,0x63,0x63,
+ 0x64,0x64,0x64,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x64,0x64,0x65,0x63,0x62,
+ 0x63,0x64,0x65,0x65,0x65,0x64,0x64,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x66,0x66,0x66,0x66,0x66,0x65,0x65,0x65,0x66,0x66,0x67,0x68,0x68,0x68,
+ 0x68,0x67,0x67,0x67,0x67,0x67,0x67,0x66,0x66,0x65,0x66,0x66,0x66,0x65,0x65,
+ 0xc8,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x36,0x36,0x36,0x37,0x38,0x3a,0x3a,
+ 0x38,0x37,0x36,0x36,0x37,0x38,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,
+ 0x3b,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x44,
+ 0x44,0x45,0x45,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x45,0x46,0x47,0x47,0x47,0x47,0x46,0x46,0x47,
+ 0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x48,0x49,0x4b,
+ 0x49,0x47,0x46,0x46,0x48,0x48,0x47,0x45,0x46,0x48,0x49,0x4a,0x49,0x49,0x48,
+ 0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,
+ 0x4f,0x4f,0x50,0x50,0x51,0x52,0x52,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x54,0x55,
+ 0x54,0x54,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x54,0x53,0x54,0x54,
+ 0x54,0x54,0x54,0x55,0x56,0x55,0x55,0x55,0x56,0x55,0x54,0x55,0x56,0x57,0x57,
+ 0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x57,0x58,
+ 0x58,0x59,0x58,0x58,0x57,0x57,0x58,0x58,0x58,0x58,0x57,0x58,0x58,0x59,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,
+ 0x5d,0x5d,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0x5d,0x5d,
+ 0x5d,0x5e,0x5d,0x5c,0x5b,0x5b,0x5c,0x5e,0x5e,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x5e,0x5b,0x70,
+ 0x65,0x28,0x0a,0x01,0x02,0x03,0x03,0x03,0x03,0x01,0x01,0x03,0x03,0x01,0x00,
+ 0x15,0x48,0x64,0x6e,0x65,0x5e,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x63,0x63,0x63,0x63,0x62,
+ 0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x64,0x63,0x63,0x64,0x65,0x65,0x65,
+ 0x65,0x65,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x64,0x64,
+ 0x64,0x64,0x65,0x65,0x65,0x64,0x64,0x65,0x65,0x66,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x66,0x66,0x65,0x64,0x66,0x69,
+ 0x69,0x67,0x66,0x66,0x65,0x66,0x66,0x67,0x68,0x68,0x69,0x69,0x68,0x68,0x69,
+ 0x69,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x67,
+ 0x67,0x66,0xc8,0x38,0x38,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x38,
+ 0x3a,0x3a,0x38,0x37,0x37,0x37,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,0x3f,0x3f,
+ 0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x42,0x42,0x42,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,
+ 0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x4b,0x4c,0x4a,0x48,0x47,0x48,0x49,0x48,0x48,0x48,0x48,0x4b,0x4b,0x4a,0x4a,
+ 0x4a,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x50,0x4f,0x4f,0x4f,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x54,
+ 0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x56,0x55,0x54,
+ 0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x55,0x56,0x57,
+ 0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x59,
+ 0x58,0x58,0x59,0x59,0x59,0x59,0x59,0x58,0x59,0x59,0x59,0x59,0x58,0x59,0x59,
+ 0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x5f,0x5f,0x5f,0x60,0x61,0x62,0x5e,
+ 0x5c,0x70,0x67,0x2b,0x0b,0x00,0x00,0x03,0x04,0x03,0x01,0x01,0x03,0x04,0x03,
+ 0x00,0x00,0x12,0x41,0x60,0x70,0x66,0x60,0x62,0x5f,0x5e,0x61,0x62,0x62,0x63,
+ 0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,
+ 0x64,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x65,0x65,0x63,0x63,0x63,0x64,
+ 0x64,0x65,0x65,0x65,0x65,0x65,0x67,0x66,0x65,0x65,0x65,0x65,0x66,0x66,0x65,
+ 0x65,0x65,0x65,0x65,0x67,0x67,0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x66,0x66,
+ 0x66,0x67,0x68,0x68,0x67,0x66,0x65,0x66,0x68,0x69,0x6b,0x6a,0x69,0x66,0x63,
+ 0x66,0x6d,0x6c,0x69,0x67,0x65,0x65,0x65,0x67,0x69,0x69,0x6a,0x6b,0x6a,0x68,
+ 0x68,0x69,0x69,0x69,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0xc8,0x38,0x38,0x37,0x37,0x37,0x37,0x38,0x38,0x38,0x38,
+ 0x38,0x39,0x3a,0x3a,0x39,0x38,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,
+ 0x40,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3f,0x3e,0x3e,0x3d,0x3e,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x48,
+ 0x48,0x49,0x4b,0x4c,0x4a,0x48,0x48,0x48,0x49,0x49,0x48,0x49,0x4a,0x4c,0x4c,
+ 0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4d,0x4d,0x4d,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x50,
+ 0x50,0x51,0x51,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,
+ 0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x54,0x54,0x54,
+ 0x54,0x54,0x55,0x56,0x56,0x55,0x55,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x57,
+ 0x56,0x55,0x55,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,
+ 0x5a,0x5a,0x59,0x59,0x59,0x59,0x5a,0x5a,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x59,
+ 0x59,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5b,0x5b,0x5c,0x5c,
+ 0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5e,0x5e,0x5e,0x5f,0x60,0x60,
+ 0x60,0x60,0x5f,0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,
+ 0x63,0x60,0x5e,0x72,0x69,0x2e,0x0e,0x00,0x00,0x03,0x05,0x03,0x00,0x01,0x03,
+ 0x04,0x03,0x01,0x00,0x15,0x44,0x63,0x71,0x64,0x5e,0x65,0x64,0x61,0x62,0x63,
+ 0x63,0x64,0x64,0x65,0x65,0x65,0x64,0x64,0x64,0x64,0x65,0x64,0x63,0x64,0x65,
+ 0x65,0x65,0x65,0x64,0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x66,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x68,0x67,0x66,0x65,0x65,0x65,0x66,
+ 0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x67,0x67,0x67,0x67,0x67,0x68,0x68,
+ 0x69,0x69,0x69,0x68,0x69,0x69,0x69,0x67,0x67,0x67,0x69,0x6a,0x6b,0x6b,0x6a,
+ 0x68,0x65,0x68,0x6c,0x6b,0x69,0x68,0x67,0x67,0x67,0x69,0x69,0x6a,0x6a,0x6a,
+ 0x6a,0x69,0x69,0x69,0x69,0x69,0x69,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x6a,0x69,0x69,0x69,0x69,0xc8,0x38,0x38,0x37,0x37,0x37,0x38,0x38,0x38,
+ 0x38,0x38,0x39,0x39,0x3a,0x3a,0x39,0x39,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3f,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x4a,0x4a,0x4b,0x49,0x48,0x48,0x49,0x4a,0x49,0x48,0x4b,0x4c,
+ 0x4c,0x4c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,
+ 0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,0x50,0x4f,0x4f,
+ 0x4f,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x54,0x55,0x55,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x54,
+ 0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x55,0x55,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x58,0x59,0x58,0x58,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x5a,0x5b,0x5b,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+ 0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,
+ 0x61,0x62,0x62,0x61,0x60,0x60,0x60,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x5f,
+ 0x5f,0x5e,0x5e,0x5e,0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x64,0x61,0x5f,0x74,0x6a,0x2f,0x0e,0x01,0x00,0x03,0x04,0x03,0x00,
+ 0x02,0x03,0x03,0x02,0x01,0x00,0x15,0x42,0x64,0x74,0x62,0x5c,0x66,0x66,0x64,
+ 0x64,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x65,0x65,0x65,0x65,0x66,0x65,0x65,
+ 0x66,0x66,0x66,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,
+ 0x67,0x68,0x68,0x68,0x68,0x67,0x67,0x66,0x66,0x67,0x68,0x68,0x66,0x66,0x66,
+ 0x66,0x67,0x68,0x68,0x68,0x69,0x69,0x69,0x68,0x68,0x69,0x69,0x69,0x68,0x67,
+ 0x68,0x69,0x6a,0x6a,0x69,0x69,0x69,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,
+ 0x6a,0x6a,0x69,0x69,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,
+ 0x6a,0x69,0x69,0x69,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,
+ 0x6a,0x69,0x69,0x6a,0x6a,0x69,0x69,0x69,0xc8,0x38,0x38,0x37,0x37,0x37,0x37,
+ 0x38,0x39,0x39,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3b,
+ 0x3b,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x44,0x44,0x44,
+ 0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x48,0x48,0x48,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x49,0x48,0x4a,0x4c,0x4b,0x4a,0x49,
+ 0x4c,0x4c,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4e,0x4e,0x4d,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x54,0x55,0x54,
+ 0x54,0x54,0x54,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,
+ 0x55,0x54,0x54,0x54,0x54,0x55,0x56,0x57,0x57,0x56,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,
+ 0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5a,0x5a,0x5a,0x5b,
+ 0x5d,0x5c,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x5f,0x5f,0x5e,
+ 0x5f,0x61,0x62,0x62,0x62,0x62,0x61,0x61,0x61,0x60,0x5f,0x5f,0x5f,0x60,0x61,
+ 0x61,0x61,0x60,0x5f,0x5f,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x63,0x64,0x62,0x60,0x75,0x6b,0x2e,0x0e,0x01,0x01,0x03,0x03,
+ 0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x12,0x38,0x5e,0x77,0x63,0x5a,0x63,
+ 0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x66,0x66,0x66,0x66,0x67,
+ 0x67,0x67,0x67,0x67,0x67,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x67,0x68,
+ 0x69,0x69,0x69,0x69,0x6b,0x6b,0x6a,0x69,0x69,0x68,0x67,0x68,0x69,0x69,0x67,
+ 0x67,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x69,0x69,0x6a,0x6a,0x69,
+ 0x68,0x68,0x69,0x69,0x6b,0x6b,0x6a,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6a,
+ 0x69,0x69,0x69,0x69,0x6a,0x6b,0x6a,0x68,0x69,0x69,0x6a,0x6b,0x6c,0x6d,0x6c,
+ 0x6b,0x6a,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6a,0x6a,0x6a,0x6a,0x6a,0x6b,
+ 0x6c,0x6c,0x6c,0x6a,0x6a,0x6a,0x6a,0x6b,0x6a,0x6a,0xc8,0x38,0x38,0x37,0x37,
+ 0x37,0x38,0x39,0x39,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3a,0x3a,0x3b,0x3c,0x3c,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,
+ 0x3e,0x3e,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,
+ 0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,
+ 0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x49,0x4c,0x4d,0x4c,
+ 0x4a,0x4a,0x4d,0x4e,0x4b,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4e,0x4e,0x4e,0x4e,0x4d,0x4d,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x55,
+ 0x56,0x56,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x54,0x55,0x55,0x55,0x55,0x55,
+ 0x56,0x57,0x56,0x56,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x56,0x57,0x57,
+ 0x57,0x58,0x58,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,
+ 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x59,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5a,
+ 0x5a,0x5c,0x5e,0x5e,0x5d,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x60,0x60,0x60,0x60,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x61,
+ 0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x60,0x5f,0x5f,0x60,
+ 0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x63,0x63,0x64,0x65,0x62,0x60,0x75,0x6a,0x2b,0x0c,0x01,0x01,
+ 0x03,0x01,0x01,0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x0c,0x24,0x53,0x79,0x6a,
+ 0x60,0x64,0x65,0x65,0x65,0x66,0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x66,0x66,
+ 0x67,0x67,0x67,0x66,0x66,0x66,0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x68,0x69,
+ 0x69,0x6a,0x6a,0x69,0x69,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x69,0x6a,0x6d,
+ 0x6d,0x6c,0x69,0x68,0x69,0x6a,0x6c,0x6c,0x6a,0x69,0x69,0x69,0x6a,0x6b,0x6c,
+ 0x6c,0x6b,0x6a,0x6a,0x6a,0x6a,0x6b,0x6c,0x6b,0x69,0x69,0x6b,0x6c,0x6d,0x6d,
+ 0x6d,0x6c,0x6b,0x6b,0x6a,0x6a,0x6b,0x6d,0x6d,0x6d,0x6d,0x6c,0x6b,0x6b,0x6b,
+ 0x6b,0x6c,0x6d,0x6d,0x6d,0x6c,0x6b,0x6c,0x6c,0x6d,0x6c,0x6c,0xc8,0x38,0x38,
+ 0x37,0x37,0x38,0x39,0x39,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3a,0x3a,0x3a,
+ 0x3b,0x3b,0x3b,0x3b,0x3b,0x3a,0x3a,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,0x40,
+ 0x40,0x40,0x3f,0x3e,0x3e,0x3d,0x3e,0x40,0x40,0x40,0x3f,0x3f,0x3f,0x40,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x42,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,
+ 0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4e,
+ 0x4f,0x4d,0x4c,0x4b,0x4e,0x4e,0x4c,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4e,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x51,0x51,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x55,0x56,0x57,0x57,0x56,0x55,0x54,0x55,0x55,0x56,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x59,0x59,0x59,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,
+ 0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,
+ 0x5d,0x5c,0x5b,0x5e,0x5f,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x60,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5f,0x60,
+ 0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x61,0x60,
+ 0x60,0x60,0x61,0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x64,0x64,0x63,0x63,0x63,
+ 0x63,0x63,0x63,0x64,0x64,0x64,0x65,0x65,0x65,0x62,0x5f,0x75,0x6a,0x2a,0x0a,
+ 0x02,0x02,0x02,0x00,0x01,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x06,0x0f,0x46,
+ 0x7b,0x72,0x68,0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x67,
+ 0x67,0x67,0x67,0x67,0x67,0x66,0x65,0x65,0x65,0x66,0x66,0x68,0x69,0x69,0x69,
+ 0x69,0x6a,0x6b,0x6d,0x6c,0x6b,0x69,0x69,0x69,0x68,0x68,0x69,0x69,0x6a,0x6c,
+ 0x6d,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6a,0x69,0x69,0x69,0x6a,0x6b,0x6b,
+ 0x6c,0x6e,0x6e,0x6d,0x6a,0x69,0x69,0x6b,0x6d,0x6d,0x6b,0x69,0x69,0x6a,0x6b,
+ 0x6b,0x6b,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6c,0x6c,0x6c,0x6b,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6c,0x6b,0x6b,0x6c,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6d,0x6c,
+ 0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0xc8,
+ 0x38,0x38,0x38,0x39,0x39,0x3a,0x3a,0x39,0x3a,0x3a,0x3a,0x3a,0x3b,0x3c,0x3b,
+ 0x3a,0x3a,0x3a,0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x47,
+ 0x47,0x47,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x49,0x4a,0x49,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x4a,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4e,0x4e,0x4e,0x4d,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4d,0x4d,
+ 0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x4f,0x4f,0x4e,0x4f,0x4f,
+ 0x4f,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x53,
+ 0x53,0x52,0x52,0x51,0x52,0x52,0x51,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x56,0x55,0x54,0x53,
+ 0x53,0x54,0x54,0x54,0x56,0x57,0x55,0x55,0x55,0x56,0x57,0x55,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x59,
+ 0x58,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,
+ 0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,0x5b,0x5a,0x5a,0x5c,0x5c,0x5c,0x5b,
+ 0x5b,0x5b,0x5c,0x5d,0x5d,0x5d,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x60,0x60,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5e,0x5e,0x5f,0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x60,0x5f,
+ 0x60,0x61,0x62,0x62,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x64,0x65,0x64,0x64,0x65,0x64,0x64,
+ 0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x67,0x63,0x62,0x78,0x6d,
+ 0x2c,0x0d,0x04,0x02,0x01,0x00,0x02,0x05,0x03,0x01,0x03,0x03,0x03,0x02,0x01,
+ 0x03,0x3f,0x7d,0x72,0x68,0x66,0x65,0x64,0x66,0x68,0x68,0x69,0x69,0x69,0x69,
+ 0x69,0x68,0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x68,0x68,0x69,0x69,0x69,
+ 0x69,0x6a,0x6a,0x69,0x6a,0x6c,0x6d,0x6c,0x6c,0x6b,0x6a,0x69,0x69,0x6a,0x6c,
+ 0x6d,0x6e,0x6e,0x6d,0x6c,0x6c,0x6b,0x6b,0x6b,0x6b,0x6b,0x6a,0x6a,0x6b,0x6b,
+ 0x6c,0x6c,0x6d,0x6d,0x6e,0x6e,0x6c,0x6b,0x6b,0x6b,0x6c,0x6d,0x6c,0x6b,0x6c,
+ 0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x70,0x70,0x6f,0x6f,0x6f,0x6e,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6e,0x6e,0x6e,0x6e,
+ 0x6e,0xc8,0x38,0x38,0x39,0x3a,0x3a,0x3a,0x3a,0x39,0x39,0x3a,0x3a,0x3a,0x3c,
+ 0x3d,0x3c,0x3b,0x3a,0x3a,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,0x41,0x41,0x41,0x41,
+ 0x42,0x43,0x43,0x44,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x49,
+ 0x4a,0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,
+ 0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x54,0x53,0x54,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x55,0x55,0x56,0x54,0x53,0x56,0x57,0x55,0x55,0x56,0x57,0x57,0x55,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5c,0x5b,0x5c,0x5e,0x5e,
+ 0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x60,0x60,0x60,0x60,0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x62,
+ 0x62,0x61,0x62,0x62,0x63,0x62,0x61,0x61,0x62,0x62,0x63,0x64,0x64,0x64,0x64,
+ 0x65,0x65,0x63,0x62,0x64,0x64,0x64,0x63,0x63,0x63,0x64,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x68,0x69,0x65,0x63,
+ 0x7a,0x70,0x32,0x12,0x06,0x02,0x01,0x00,0x03,0x05,0x03,0x01,0x02,0x02,0x02,
+ 0x02,0x00,0x00,0x3a,0x7b,0x71,0x68,0x67,0x65,0x65,0x67,0x68,0x69,0x69,0x69,
+ 0x69,0x69,0x6a,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,0x6a,0x69,
+ 0x69,0x6a,0x6a,0x6b,0x6a,0x69,0x6a,0x6c,0x6d,0x6d,0x6d,0x6d,0x6c,0x6b,0x6b,
+ 0x6c,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6c,0x6b,0x6c,0x6c,0x6c,0x6c,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x6e,0x6e,
+ 0x6e,0x6e,0x6e,0x6f,0x6f,0x6e,0x6e,0x6f,0x70,0x70,0x6f,0x70,0x70,0x6f,0x6f,
+ 0x6f,0x6f,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,
+ 0x6e,0x6e,0x6f,0xc8,0x39,0x39,0x3a,0x3a,0x39,0x39,0x39,0x38,0x38,0x3a,0x3a,
+ 0x3b,0x3d,0x3d,0x3c,0x3b,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x40,
+ 0x40,0x40,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x47,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x47,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x50,0x51,0x51,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x54,0x54,0x54,0x54,0x55,0x56,0x55,0x54,0x54,0x54,0x55,0x55,0x55,0x56,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,
+ 0x57,0x57,0x58,0x59,0x58,0x58,0x58,0x59,0x59,0x58,0x58,0x59,0x59,0x59,0x59,
+ 0x5a,0x5b,0x5b,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5d,0x5d,0x5c,0x5b,0x5b,0x5c,0x5d,
+ 0x5e,0x5f,0x5f,0x5e,0x5f,0x5f,0x60,0x60,0x5f,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,
+ 0x5f,0x5f,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x63,0x64,0x64,0x64,0x64,0x64,
+ 0x65,0x65,0x64,0x64,0x64,0x65,0x65,0x64,0x62,0x62,0x63,0x64,0x65,0x65,0x65,
+ 0x65,0x65,0x66,0x66,0x64,0x63,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x68,0x69,
+ 0x65,0x63,0x7a,0x73,0x3c,0x18,0x05,0x02,0x02,0x00,0x01,0x03,0x02,0x01,0x00,
+ 0x01,0x01,0x03,0x01,0x00,0x38,0x75,0x71,0x6b,0x6a,0x69,0x69,0x67,0x67,0x69,
+ 0x69,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6b,0x6b,0x6b,0x6b,0x6b,
+ 0x6a,0x6a,0x6a,0x6a,0x6c,0x6c,0x6b,0x6b,0x6b,0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,
+ 0x6d,0x6d,0x6d,0x6c,0x6b,0x6a,0x6b,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x70,0x6f,0x6f,0x6e,0x6e,0x6e,0x6d,0x6d,
+ 0x6e,0x6e,0x6e,0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0xc8,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+ 0x3a,0x3b,0x3d,0x3e,0x3e,0x3d,0x3c,0x3b,0x3b,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x40,0x41,0x41,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,
+ 0x42,0x42,0x43,0x43,0x42,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x47,
+ 0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x51,
+ 0x51,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,
+ 0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x57,0x57,0x58,0x59,0x57,0x58,0x58,
+ 0x59,0x59,0x57,0x58,0x59,0x5a,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5c,0x5c,0x5c,0x5b,0x5b,0x5b,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5d,0x5c,0x5b,0x5b,
+ 0x5c,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x61,0x61,0x60,0x60,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x64,
+ 0x64,0x65,0x65,0x65,0x64,0x64,0x64,0x65,0x65,0x65,0x64,0x64,0x64,0x65,0x65,
+ 0x66,0x66,0x66,0x65,0x67,0x67,0x65,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x66,0x66,0x66,0x66,0x67,0x68,0x68,0x68,0x68,0x68,0x67,0x67,0x68,0x68,0x69,
+ 0x69,0x69,0x65,0x63,0x79,0x76,0x46,0x20,0x04,0x01,0x03,0x01,0x01,0x02,0x02,
+ 0x01,0x00,0x00,0x01,0x04,0x03,0x00,0x33,0x6e,0x72,0x6f,0x6b,0x6a,0x69,0x69,
+ 0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6c,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6c,0x6c,
+ 0x6c,0x6c,0x6b,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6e,0x6f,0x6f,0x6e,0x6e,0x6e,
+ 0x6e,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,0x6f,0x6f,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x70,0x70,0x6f,0x6e,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x72,0x71,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x71,0x71,0x70,0x70,0x70,0x71,0x72,0x72,0x71,0x70,0x71,0x71,0x71,0x70,0x70,
+ 0x71,0x71,0x71,0x71,0x71,0x71,0x71,0xc8,0x3a,0x3a,0x3b,0x3b,0x3b,0x3b,0x3b,
+ 0x3b,0x3b,0x3c,0x3d,0x3d,0x3f,0x3e,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x43,0x43,0x43,0x43,0x43,0x42,0x41,0x41,0x41,0x42,0x42,0x43,0x43,
+ 0x44,0x44,0x43,0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x51,0x52,0x52,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,
+ 0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,
+ 0x54,0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x58,0x5a,0x5a,0x59,
+ 0x59,0x59,0x5a,0x59,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,
+ 0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5c,0x5c,0x5c,0x5b,0x5b,0x5c,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,
+ 0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x61,0x61,0x61,0x60,0x5f,0x5e,
+ 0x60,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x64,0x64,0x64,0x63,0x62,0x62,0x63,
+ 0x63,0x63,0x63,0x65,0x65,0x64,0x63,0x63,0x64,0x65,0x66,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x66,0x66,0x66,0x66,0x67,0x67,0x66,0x65,0x66,0x67,0x67,0x66,0x66,
+ 0x66,0x67,0x67,0x67,0x67,0x67,0x68,0x69,0x68,0x68,0x68,0x68,0x68,0x68,0x68,
+ 0x69,0x69,0x69,0x6a,0x65,0x62,0x79,0x78,0x4f,0x25,0x03,0x01,0x03,0x02,0x01,
+ 0x01,0x02,0x02,0x00,0x00,0x00,0x04,0x03,0x00,0x2f,0x67,0x74,0x74,0x6b,0x69,
+ 0x69,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6c,0x6b,0x6b,0x6c,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6e,0x6e,
+ 0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6e,0x6f,0x6f,0x6f,0x6f,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x6e,
+ 0x6e,0x70,0x70,0x71,0x71,0x71,0x70,0x70,0x6f,0x70,0x70,0x71,0x71,0x71,0x72,
+ 0x72,0x72,0x72,0x72,0x71,0x71,0x71,0x70,0x70,0x73,0x73,0x71,0x70,0x70,0x71,
+ 0x71,0x70,0x72,0x73,0x70,0x71,0x72,0x74,0x74,0x73,0x73,0x72,0x72,0x72,0x72,
+ 0x72,0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0xc8,0x39,0x39,0x3a,0x3a,0x3a,
+ 0x3b,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,0x42,0x43,
+ 0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x51,0x51,0x52,0x53,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x52,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,
+ 0x55,0x55,0x55,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,0x58,
+ 0x58,0x59,0x59,0x59,0x59,0x58,0x58,0x58,0x58,0x58,0x58,0x5a,0x59,0x59,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,
+ 0x5b,0x5c,0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,
+ 0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x60,0x60,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x61,
+ 0x60,0x60,0x61,0x62,0x62,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x64,
+ 0x65,0x66,0x65,0x65,0x65,0x66,0x67,0x66,0x65,0x65,0x67,0x68,0x67,0x66,0x65,
+ 0x65,0x65,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x66,0x67,0x67,0x68,0x68,
+ 0x68,0x67,0x67,0x67,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x68,0x69,0x68,0x69,
+ 0x69,0x69,0x69,0x6a,0x6b,0x6c,0x66,0x62,0x79,0x7a,0x52,0x27,0x03,0x01,0x03,
+ 0x02,0x02,0x02,0x03,0x03,0x01,0x00,0x01,0x04,0x03,0x00,0x2b,0x62,0x79,0x7b,
+ 0x6a,0x67,0x69,0x6b,0x6d,0x6d,0x6e,0x6f,0x6e,0x6d,0x6d,0x6b,0x6b,0x6b,0x6c,
+ 0x6d,0x6d,0x6f,0x6f,0x6e,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x6e,0x6e,
+ 0x6f,0x6f,0x6f,0x6e,0x6d,0x6d,0x6d,0x6f,0x70,0x70,0x71,0x72,0x71,0x6f,0x6f,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x6f,0x6e,0x6f,0x70,0x70,0x71,0x72,0x72,0x71,0x70,0x70,0x70,0x71,0x72,0x72,
+ 0x72,0x73,0x73,0x73,0x74,0x73,0x73,0x72,0x72,0x71,0x71,0x73,0x73,0x72,0x71,
+ 0x71,0x73,0x72,0x71,0x72,0x73,0x73,0x73,0x74,0x74,0x74,0x73,0x73,0x72,0x72,
+ 0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0xc8,0x38,0x38,0x39,
+ 0x3a,0x3a,0x3b,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3c,0x3c,
+ 0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x42,0x42,0x42,0x42,
+ 0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x46,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x47,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x4a,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x51,
+ 0x51,0x51,0x51,0x51,0x52,0x53,0x53,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x52,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x54,0x55,0x56,
+ 0x57,0x56,0x55,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,
+ 0x57,0x57,0x58,0x59,0x5a,0x5a,0x59,0x59,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,
+ 0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5c,0x5c,0x5c,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x60,0x60,0x60,0x60,0x60,0x5f,0x5f,
+ 0x5f,0x5f,0x60,0x61,0x62,0x62,0x60,0x60,0x60,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,
+ 0x61,0x62,0x62,0x62,0x62,0x63,0x63,0x64,0x64,0x64,0x63,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x63,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,
+ 0x65,0x65,0x66,0x67,0x66,0x66,0x66,0x67,0x68,0x67,0x66,0x66,0x68,0x69,0x67,
+ 0x67,0x66,0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x68,
+ 0x69,0x69,0x69,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6c,0x6d,0x67,0x62,0x7a,0x7b,0x50,0x25,0x03,
+ 0x00,0x03,0x02,0x02,0x02,0x03,0x03,0x01,0x01,0x02,0x03,0x01,0x00,0x27,0x5b,
+ 0x7c,0x81,0x6a,0x67,0x6b,0x6d,0x6d,0x6e,0x70,0x70,0x70,0x6f,0x6d,0x6c,0x6c,
+ 0x6c,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6e,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,
+ 0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x6f,0x70,0x70,0x71,0x72,0x72,0x73,0x72,
+ 0x70,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,
+ 0x71,0x71,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x71,0x71,0x70,0x71,0x72,
+ 0x72,0x72,0x72,0x73,0x73,0x74,0x74,0x74,0x73,0x73,0x73,0x72,0x72,0x74,0x74,
+ 0x73,0x73,0x73,0x74,0x74,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x73,0x72,
+ 0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x74,0xc8,0x39,
+ 0x3a,0x3a,0x3a,0x3c,0x3c,0x3d,0x3d,0x3d,0x3c,0x3c,0x3c,0x3b,0x3c,0x3d,0x3d,
+ 0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,
+ 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+ 0x42,0x43,0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x47,
+ 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x4a,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x51,0x50,0x50,0x51,0x52,0x52,0x53,
+ 0x53,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,
+ 0x53,0x53,0x53,0x53,0x54,0x55,0x56,0x56,0x55,0x55,0x54,0x54,0x55,0x55,0x56,
+ 0x57,0x57,0x58,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,
+ 0x59,0x57,0x55,0x55,0x57,0x57,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x61,0x61,0x61,
+ 0x61,0x61,0x61,0x61,0x62,0x62,0x63,0x63,0x62,0x62,0x62,0x61,0x61,0x61,0x60,
+ 0x61,0x61,0x62,0x63,0x63,0x64,0x63,0x63,0x64,0x65,0x65,0x64,0x63,0x63,0x63,
+ 0x63,0x63,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x66,0x66,0x65,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x65,0x65,0x66,
+ 0x67,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x68,0x68,0x68,
+ 0x69,0x69,0x69,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x69,0x69,0x6a,0x6b,0x6b,
+ 0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6e,0x68,0x63,0x7c,0x7b,0x4a,
+ 0x21,0x03,0x00,0x02,0x02,0x02,0x03,0x03,0x03,0x00,0x01,0x03,0x02,0x00,0x00,
+ 0x22,0x53,0x7e,0x86,0x6a,0x69,0x6e,0x6d,0x6d,0x6f,0x70,0x70,0x70,0x6f,0x6e,
+ 0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,0x70,0x70,0x70,
+ 0x70,0x6f,0x6f,0x6f,0x70,0x71,0x72,0x73,0x73,0x72,0x72,0x71,0x71,0x71,0x71,
+ 0x71,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x72,0x72,0x72,0x72,
+ 0x72,0x73,0x73,0x74,0x73,0x72,0x71,0x71,0x71,0x71,0x72,0x72,0x72,0x72,0x72,
+ 0x72,0x72,0x72,0x72,0x72,0x72,0x73,0x74,0x74,0x74,0x73,0x73,0x74,0x73,0x73,
+ 0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x74,
+ 0x74,0x73,0x72,0x72,0x73,0x74,0x75,0x75,0x74,0x74,0x75,0x75,0x76,0x75,0x74,
+ 0xc8,0x3b,0x3b,0x3b,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,
+ 0x3d,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3f,0x40,0x3f,0x3f,
+ 0x3f,0x40,0x41,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x41,0x41,
+ 0x41,0x42,0x43,0x42,0x42,0x42,0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,
+ 0x47,0x47,0x47,0x48,0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,
+ 0x49,0x48,0x48,0x49,0x48,0x48,0x48,0x49,0x4a,0x4a,0x49,0x49,0x4a,0x4a,0x4a,
+ 0x4a,0x4a,0x4a,0x49,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4d,
+ 0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x51,0x52,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,
+ 0x55,0x55,0x54,0x54,0x54,0x55,0x56,0x57,0x57,0x57,0x56,0x56,0x55,0x55,0x55,
+ 0x56,0x57,0x57,0x58,0x58,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,
+ 0x59,0x5a,0x5a,0x58,0x56,0x56,0x57,0x57,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5b,
+ 0x5c,0x5c,0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,
+ 0x5e,0x5e,0x5d,0x5c,0x5c,0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x61,0x61,0x61,0x60,0x60,0x61,0x61,
+ 0x61,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x64,0x65,0x64,0x64,0x64,0x65,0x65,0x65,0x64,
+ 0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x66,0x66,0x66,0x66,0x67,0x68,0x67,0x67,0x66,0x67,0x68,0x68,0x67,
+ 0x67,0x68,0x69,0x68,0x69,0x69,0x69,0x69,0x68,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x6a,0x6a,0x6b,0x6b,0x6a,0x6a,0x69,0x69,0x6a,0x6b,0x6b,0x6a,0x6b,
+ 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x68,0x64,0x7f,
+ 0x7b,0x44,0x1c,0x03,0x00,0x01,0x01,0x02,0x03,0x03,0x02,0x00,0x02,0x03,0x03,
+ 0x00,0x00,0x1c,0x46,0x7b,0x86,0x6a,0x6a,0x71,0x6f,0x6e,0x70,0x70,0x71,0x71,
+ 0x70,0x6f,0x6f,0x6f,0x70,0x70,0x71,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x71,0x72,0x71,0x70,0x70,0x70,0x71,0x72,0x74,0x74,0x74,0x74,0x73,0x72,0x71,
+ 0x71,0x71,0x71,0x70,0x71,0x71,0x71,0x72,0x72,0x72,0x73,0x73,0x73,0x73,0x73,
+ 0x73,0x73,0x74,0x74,0x74,0x75,0x75,0x74,0x73,0x73,0x73,0x73,0x74,0x74,0x74,
+ 0x74,0x74,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,
+ 0x74,0x74,0x75,0x75,0x74,0x75,0x76,0x77,0x76,0x74,0x74,0x74,0x74,0x74,0x75,
+ 0x76,0x76,0x75,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,0x76,0x77,
+ 0x77,0x76,0xc8,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3d,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,
+ 0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,
+ 0x42,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,
+ 0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,
+ 0x4f,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,
+ 0x53,0x53,0x54,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x53,0x54,
+ 0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x56,
+ 0x56,0x56,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x59,0x59,
+ 0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,
+ 0x5b,0x5c,0x5d,0x5d,0x5b,0x5c,0x5d,0x5c,0x5d,0x5e,0x5e,0x5e,0x5d,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x60,
+ 0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x63,0x63,0x63,
+ 0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x64,0x64,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,
+ 0x66,0x66,0x66,0x67,0x67,0x67,0x68,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x6a,
+ 0x69,0x69,0x69,0x6a,0x6b,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,
+ 0x6a,0x69,0x69,0x6b,0x6c,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,
+ 0x6c,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x69,
+ 0x65,0x81,0x7b,0x3d,0x17,0x03,0x00,0x01,0x01,0x02,0x03,0x02,0x01,0x00,0x02,
+ 0x04,0x03,0x00,0x00,0x14,0x38,0x74,0x86,0x6a,0x6c,0x73,0x70,0x6f,0x70,0x71,
+ 0x72,0x72,0x72,0x70,0x70,0x70,0x71,0x71,0x72,0x72,0x72,0x73,0x73,0x73,0x73,
+ 0x73,0x73,0x74,0x74,0x74,0x73,0x71,0x71,0x72,0x74,0x74,0x75,0x74,0x74,0x73,
+ 0x72,0x72,0x72,0x72,0x72,0x72,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x77,0x77,0x76,0x75,0x74,0x75,0x75,0x76,
+ 0x76,0x76,0x76,0x75,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,0x76,0x75,
+ 0x76,0x77,0x76,0x75,0x77,0x77,0x76,0x77,0x78,0x78,0x78,0x75,0x76,0x76,0x74,
+ 0x74,0x75,0x77,0x77,0x76,0x76,0x75,0x74,0x74,0x75,0x75,0x74,0x76,0x77,0x77,
+ 0x78,0x78,0x78,0x78,0xc8,0x3c,0x3c,0x3c,0x3c,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x43,
+ 0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,
+ 0x4b,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,0x54,0x55,0x55,0x55,0x55,0x55,0x55,
+ 0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5c,0x5d,0x5d,0x5d,0x5c,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5e,0x5f,0x60,0x60,0x5f,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,0x5f,
+ 0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x61,0x61,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x62,0x61,0x60,0x61,0x63,
+ 0x63,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x66,0x66,0x66,0x66,0x66,0x65,0x65,0x66,0x66,0x66,0x67,0x67,
+ 0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x68,0x68,0x69,0x69,0x6a,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x69,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,
+ 0x6b,0x6c,0x6c,0x6b,0x6a,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,
+ 0x6f,0x6a,0x67,0x83,0x7c,0x3a,0x15,0x03,0x00,0x01,0x01,0x03,0x03,0x02,0x01,
+ 0x01,0x02,0x03,0x03,0x01,0x01,0x0c,0x29,0x6d,0x86,0x6d,0x6d,0x72,0x71,0x71,
+ 0x72,0x73,0x74,0x74,0x73,0x71,0x71,0x71,0x72,0x72,0x72,0x73,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x74,0x74,0x74,0x74,0x75,0x74,0x74,
+ 0x74,0x73,0x72,0x73,0x74,0x74,0x75,0x75,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x76,0x76,0x77,
+ 0x77,0x78,0x78,0x78,0x78,0x77,0x77,0x76,0x76,0x76,0x76,0x76,0x77,0x78,0x78,
+ 0x78,0x77,0x77,0x78,0x78,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x76,0x77,
+ 0x77,0x75,0x75,0x77,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x77,0x76,0x76,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0xc8,0x3b,0x3b,0x3b,0x3b,0x3c,0x3c,0x3c,0x3d,
+ 0x3d,0x3d,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x40,0x41,0x42,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x43,0x43,0x43,0x42,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+ 0x44,0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+ 0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4d,
+ 0x4d,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4f,0x4f,0x4f,0x4e,0x4e,0x4f,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x4f,0x4f,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x58,0x59,0x59,0x59,0x58,0x57,0x58,0x58,0x59,0x5a,0x59,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5c,0x5c,0x5b,
+ 0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5e,0x5f,0x5e,0x5d,0x5e,0x5f,
+ 0x5f,0x5e,0x5e,0x60,0x5f,0x5e,0x5f,0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x60,
+ 0x60,0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,
+ 0x63,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x64,0x64,0x64,0x63,0x62,0x62,
+ 0x62,0x64,0x64,0x63,0x64,0x65,0x65,0x66,0x66,0x65,0x65,0x65,0x65,0x66,0x66,
+ 0x66,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x66,0x66,0x66,0x67,0x68,0x67,
+ 0x68,0x69,0x69,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6a,
+ 0x69,0x69,0x69,0x6a,0x6a,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6c,
+ 0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6c,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6d,0x6d,
+ 0x6d,0x6e,0x6e,0x6f,0x6f,0x6e,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,
+ 0x70,0x70,0x70,0x6b,0x68,0x84,0x7c,0x38,0x13,0x03,0x00,0x01,0x02,0x03,0x03,
+ 0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x07,0x1d,0x69,0x87,0x70,0x6d,0x71,
+ 0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x73,0x72,0x72,0x72,0x72,0x72,0x73,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,0x76,0x76,0x75,0x75,0x75,0x75,0x75,
+ 0x75,0x74,0x74,0x74,0x74,0x75,0x76,0x77,0x77,0x77,0x76,0x76,0x76,0x76,0x76,
+ 0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,0x76,0x75,0x76,0x77,0x77,0x77,0x77,
+ 0x77,0x78,0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,
+ 0x7a,0x7a,0x79,0x78,0x78,0x78,0x78,0x78,0x7b,0x7a,0x79,0x78,0x78,0x78,0x78,
+ 0x77,0x78,0x78,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x79,0x79,0x79,0x79,0x79,0x79,0xc8,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,
+ 0x3f,0x40,0x40,0x40,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,
+ 0x3f,0x3f,0x40,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x43,
+ 0x43,0x43,0x43,0x44,0x43,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4a,0x4a,0x4a,
+ 0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,
+ 0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x4f,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x54,0x54,0x54,0x55,
+ 0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x57,0x57,0x57,
+ 0x58,0x59,0x58,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x56,0x56,0x56,0x57,0x57,
+ 0x56,0x57,0x58,0x5a,0x5a,0x5b,0x5a,0x5a,0x59,0x59,0x59,0x5a,0x5b,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5f,0x5e,0x5d,
+ 0x5f,0x5f,0x5f,0x5d,0x5e,0x60,0x5e,0x5e,0x5f,0x60,0x60,0x60,0x61,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,
+ 0x64,0x64,0x64,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x65,0x65,0x66,0x66,
+ 0x67,0x68,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x68,0x67,0x66,0x66,0x67,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,0x6b,0x6c,0x6d,
+ 0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,
+ 0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x6f,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,
+ 0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,
+ 0x71,0x71,0x71,0x71,0x71,0x6c,0x68,0x84,0x7d,0x38,0x12,0x03,0x00,0x02,0x03,
+ 0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x01,0x03,0x04,0x04,0x17,0x68,0x8a,0x75,
+ 0x70,0x70,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x73,0x73,0x73,0x73,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x75,0x75,0x75,
+ 0x75,0x76,0x77,0x77,0x77,0x77,0x77,0x78,0x77,0x77,0x75,0x75,0x77,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x77,
+ 0x77,0x77,0x77,0x77,0x77,0x76,0x75,0x74,0x76,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x79,0x7b,0x7b,0x7b,0x7b,0x79,0x78,0x78,0x78,0x79,0x7b,0x7b,0x7a,0x78,0x78,
+ 0x78,0x78,0x77,0x78,0x79,0x79,0x7a,0x7a,0x7a,0x79,0x78,0x78,0x79,0x79,0x7a,
+ 0x7a,0x7b,0x7a,0x79,0x78,0x78,0x78,0x79,0x79,0x79,0xc8,0x3d,0x3d,0x3d,0x3d,
+ 0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x42,0x42,0x42,0x42,0x43,0x43,0x42,
+ 0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,
+ 0x4a,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x50,0x50,0x51,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,
+ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x56,0x57,
+ 0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x58,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,
+ 0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5f,
+ 0x5e,0x5e,0x5f,0x60,0x5f,0x5e,0x5f,0x60,0x5f,0x5f,0x61,0x62,0x61,0x62,0x62,
+ 0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x64,0x64,
+ 0x64,0x65,0x64,0x65,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x66,0x65,0x65,0x66,
+ 0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x6a,0x69,0x6a,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6e,0x6e,0x6f,0x6e,0x6e,0x6e,0x6e,0x6f,0x6f,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,
+ 0x70,0x70,0x70,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,0x70,0x70,
+ 0x70,0x71,0x71,0x71,0x71,0x71,0x72,0x6d,0x6a,0x86,0x7d,0x38,0x13,0x03,0x01,
+ 0x02,0x03,0x04,0x04,0x02,0x00,0x02,0x02,0x02,0x02,0x03,0x03,0x01,0x12,0x64,
+ 0x8a,0x78,0x73,0x70,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x76,0x76,0x76,0x76,0x76,0x76,
+ 0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x77,0x77,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x76,0x78,0x79,0x79,0x79,0x79,
+ 0x79,0x79,0x7a,0x7b,0x7b,0x7b,0x7a,0x79,0x79,0x78,0x79,0x7a,0x7b,0x7b,0x7a,
+ 0x79,0x79,0x79,0x78,0x78,0x79,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7a,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0xc8,0x3c,0x3c,
+ 0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3d,0x3d,0x3d,0x3e,0x3e,0x3e,0x3e,0x3e,
+ 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x40,0x41,0x41,0x42,0x42,0x42,0x43,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x47,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x48,0x49,0x49,
+ 0x4a,0x4b,0x4b,0x49,0x48,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x54,0x54,0x54,0x55,
+ 0x55,0x55,0x55,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x59,
+ 0x59,0x59,0x59,0x59,0x5a,0x5a,0x58,0x57,0x57,0x58,0x5a,0x5b,0x5b,0x5b,0x5a,
+ 0x59,0x57,0x5a,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5d,0x5c,0x5c,0x5d,0x5e,0x5e,0x5f,0x61,0x62,0x62,0x61,0x60,0x60,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x62,
+ 0x62,0x62,0x63,0x63,0x64,0x64,0x64,0x63,0x63,0x62,0x63,0x64,0x64,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x66,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x67,0x69,0x69,0x67,0x65,
+ 0x65,0x67,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6c,0x6b,0x6b,0x6b,0x6c,0x6c,0x6d,0x6d,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,
+ 0x6c,0x6d,0x6d,0x6f,0x6f,0x6f,0x6f,0x6e,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x70,0x71,0x71,0x70,0x6f,0x6f,0x70,0x70,0x70,0x71,0x72,0x70,0x6f,
+ 0x6f,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x72,0x6f,0x6d,0x86,0x7d,0x3c,0x15,
+ 0x03,0x01,0x02,0x02,0x03,0x05,0x01,0x00,0x02,0x03,0x04,0x03,0x03,0x03,0x00,
+ 0x0f,0x5f,0x87,0x7b,0x74,0x71,0x74,0x77,0x76,0x76,0x76,0x76,0x76,0x76,0x76,
+ 0x76,0x76,0x76,0x75,0x76,0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x77,0x77,
+ 0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,0x79,0x79,0x78,0x78,0x78,0x79,
+ 0x7a,0x7b,0x7b,0x7b,0x7a,0x7a,0x79,0x7a,0x7a,0x7b,0x7b,0x7a,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x79,0x79,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7f,0x7f,0x7e,0x7e,0x7d,0x7d,0x7d,0xc8,
+ 0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3f,
+ 0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x43,
+ 0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x45,0x44,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,
+ 0x49,0x49,0x4a,0x4b,0x4b,0x4a,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x4f,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,0x51,0x51,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x55,0x55,
+ 0x55,0x55,0x56,0x56,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x58,0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x59,0x5a,0x5b,0x5a,0x5a,0x59,0x5a,0x5a,0x5b,0x5c,0x5c,
+ 0x5c,0x5b,0x5a,0x5a,0x5c,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5e,0x5e,0x5e,0x5f,
+ 0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x60,0x5f,0x5f,
+ 0x5f,0x60,0x60,0x60,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x67,0x68,0x68,0x68,0x67,0x66,0x66,0x66,0x66,0x67,0x67,0x66,0x69,0x69,0x6a,
+ 0x69,0x67,0x69,0x69,0x6b,0x6b,0x6a,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6b,
+ 0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x6e,
+ 0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x72,0x72,0x72,0x72,0x72,0x72,0x71,0x71,0x71,0x71,0x71,0x72,0x72,
+ 0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x73,0x73,0x74,0x6f,0x6c,0x84,0x7f,
+ 0x48,0x1f,0x03,0x01,0x03,0x00,0x01,0x03,0x01,0x00,0x01,0x03,0x04,0x02,0x01,
+ 0x04,0x00,0x0c,0x5a,0x82,0x7c,0x77,0x72,0x76,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x77,0x77,0x76,0x75,0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,
+ 0x79,0x79,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7a,0x7a,0x7a,
+ 0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7c,0x7d,0x7d,0x7d,
+ 0x7d,0x7d,0x7c,0x7b,0x7b,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,
+ 0x7d,0xc8,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,
+ 0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x42,
+ 0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x45,0x45,0x45,0x44,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,
+ 0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x56,0x56,
+ 0x55,0x55,0x56,0x56,0x57,0x56,0x56,0x57,0x56,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x58,0x59,0x59,0x58,0x58,0x58,0x58,0x59,0x58,0x58,0x58,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,
+ 0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x5f,0x5f,0x5f,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,
+ 0x63,0x62,0x63,0x63,0x64,0x65,0x65,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x66,0x66,0x67,0x67,0x67,0x66,0x65,0x65,0x65,0x65,0x66,0x66,0x66,
+ 0x67,0x67,0x68,0x69,0x69,0x69,0x69,0x68,0x68,0x68,0x68,0x69,0x69,0x67,0x69,
+ 0x69,0x6a,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6b,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,
+ 0x6b,0x6b,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6d,
+ 0x6d,0x6e,0x6d,0x6e,0x6e,0x6e,0x6f,0x6e,0x6e,0x6e,0x6d,0x6e,0x6f,0x70,0x70,
+ 0x70,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x72,0x72,
+ 0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x72,0x72,0x72,0x72,
+ 0x72,0x72,0x71,0x70,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x75,0x70,0x6d,
+ 0x83,0x82,0x57,0x28,0x02,0x01,0x04,0x00,0x00,0x01,0x02,0x02,0x00,0x02,0x04,
+ 0x01,0x01,0x04,0x00,0x0a,0x52,0x7c,0x7f,0x79,0x72,0x77,0x79,0x78,0x78,0x78,
+ 0x79,0x79,0x79,0x78,0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x79,0x79,0x79,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x7a,0x7a,0x7a,
+ 0x7a,0x7b,0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,
+ 0x7b,0x7c,0x7d,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,
+ 0x7e,0x7d,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,0x7d,0x7d,
+ 0x7d,0x7d,0x7d,0x7d,0x7d,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,
+ 0x7d,0x7d,0x7d,0xc8,0x3e,0x3e,0x3e,0x3e,0x3f,0x3f,0x3f,0x3e,0x3e,0x3e,0x3e,
+ 0x3e,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x40,0x41,0x41,0x41,0x42,
+ 0x43,0x43,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x46,0x46,0x46,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x54,0x54,0x53,0x53,0x53,0x54,0x55,0x55,0x54,0x54,0x54,0x54,0x54,0x56,0x57,
+ 0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,
+ 0x57,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x59,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,
+ 0x5e,0x5e,0x5e,0x5d,0x5d,0x5d,0x5d,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+ 0x62,0x62,0x62,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,
+ 0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x64,0x64,0x65,0x65,
+ 0x66,0x65,0x65,0x66,0x66,0x67,0x67,0x68,0x68,0x67,0x67,0x67,0x67,0x67,0x67,
+ 0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x69,
+ 0x68,0x68,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6b,0x6a,0x6a,0x6b,0x6c,0x6c,
+ 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x70,0x70,
+ 0x70,0x71,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x72,
+ 0x72,0x73,0x73,0x73,0x74,0x74,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x72,
+ 0x71,0x71,0x73,0x74,0x73,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x77,
+ 0x72,0x6f,0x85,0x86,0x64,0x32,0x03,0x02,0x06,0x03,0x01,0x00,0x03,0x03,0x00,
+ 0x01,0x03,0x02,0x02,0x03,0x00,0x09,0x49,0x75,0x82,0x7c,0x72,0x76,0x78,0x78,
+ 0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x79,0x79,0x78,0x79,0x79,0x79,0x79,0x79,
+ 0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7c,0x7c,0x7c,0x7d,
+ 0x7c,0x7b,0x7b,0x7c,0x7e,0x7e,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7e,0x7e,0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x7e,0x7e,0x7d,0x7d,
+ 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,
+ 0x7f,0x7e,0x7e,0x7e,0x7e,0xc8,0x3f,0x3f,0x3e,0x3f,0x3f,0x40,0x3f,0x3f,0x3f,
+ 0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x3f,0x40,0x41,0x41,
+ 0x41,0x42,0x43,0x43,0x43,0x43,0x44,0x45,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x45,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x47,0x47,0x47,
+ 0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x54,0x54,0x54,0x54,0x53,0x53,0x54,0x55,0x56,0x56,0x55,0x55,0x55,0x55,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,
+ 0x59,0x58,0x58,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,
+ 0x5b,0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x61,0x61,0x62,0x61,0x61,0x61,0x61,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,
+ 0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x66,0x65,0x65,0x65,
+ 0x65,0x66,0x67,0x67,0x66,0x67,0x67,0x68,0x68,0x69,0x69,0x68,0x68,0x68,0x68,
+ 0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,
+ 0x6c,0x6a,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x6f,
+ 0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x71,0x72,0x72,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x72,0x72,0x72,0x73,0x73,0x73,0x74,0x74,0x73,0x73,0x73,0x73,0x73,0x73,0x73,
+ 0x73,0x72,0x72,0x71,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x75,0x74,0x75,
+ 0x76,0x78,0x73,0x70,0x85,0x88,0x68,0x34,0x02,0x00,0x03,0x04,0x02,0x00,0x02,
+ 0x03,0x02,0x01,0x01,0x03,0x03,0x03,0x00,0x09,0x43,0x70,0x86,0x7f,0x71,0x77,
+ 0x7a,0x79,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7a,0x7a,0x7b,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,
+ 0x7c,0x7c,0x7b,0x7b,0x7c,0x7d,0x7d,0x7c,0x7c,0x7d,0x7e,0x7e,0x7f,0x7e,0x7d,
+ 0x7d,0x7e,0x7d,0x7c,0x7c,0x7d,0x7f,0x7f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0xc8,0x3f,0x3f,0x3f,0x3f,0x40,0x40,0x40,
+ 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+ 0x41,0x41,0x41,0x42,0x43,0x44,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,
+ 0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,
+ 0x52,0x52,0x52,0x52,0x52,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x54,
+ 0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x59,0x59,0x59,
+ 0x59,0x5a,0x5a,0x59,0x58,0x58,0x58,0x59,0x5a,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,
+ 0x5c,0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,
+ 0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x63,0x62,0x62,0x62,0x62,0x62,0x63,
+ 0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x66,
+ 0x66,0x66,0x67,0x68,0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6a,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,
+ 0x6c,0x6d,0x6d,0x6d,0x6b,0x6a,0x6a,0x6b,0x6c,0x6d,0x6e,0x6e,0x6e,0x6e,0x6d,
+ 0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x70,0x70,
+ 0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x70,0x70,0x71,0x72,0x72,0x72,0x71,
+ 0x71,0x71,0x71,0x72,0x72,0x73,0x73,0x73,0x72,0x72,0x72,0x72,0x72,0x72,0x72,
+ 0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x73,0x73,0x73,
+ 0x73,0x73,0x73,0x73,0x73,0x73,0x75,0x76,0x75,0x75,0x75,0x76,0x77,0x77,0x76,
+ 0x75,0x76,0x77,0x78,0x74,0x70,0x86,0x88,0x68,0x34,0x01,0x00,0x02,0x04,0x03,
+ 0x00,0x01,0x02,0x03,0x01,0x00,0x04,0x06,0x02,0x00,0x09,0x3f,0x6d,0x89,0x81,
+ 0x71,0x78,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7c,0x7b,0x7c,
+ 0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,
+ 0x7e,0x7e,0x7e,0x7d,0x7c,0x7c,0x7d,0x7e,0x7f,0x7f,0x7e,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7e,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x80,0x80,0x80,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,
+ 0x80,0x80,0x82,0x82,0x81,0x81,0x80,0x80,0x80,0xc8,0x3f,0x3f,0x3f,0x40,0x41,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x43,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x50,0x50,0x51,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x54,0x54,0x54,
+ 0x54,0x54,0x55,0x55,0x55,0x56,0x56,0x57,0x57,0x57,0x56,0x56,0x56,0x56,0x57,
+ 0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5c,0x5d,0x5d,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0x5d,0x5e,0x5d,0x5d,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x63,0x63,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x62,0x63,0x64,0x65,0x64,0x64,0x64,0x64,0x64,
+ 0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x68,0x69,0x69,0x68,0x68,0x68,
+ 0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6d,0x6d,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0x6b,
+ 0x6c,0x6d,0x6d,0x6d,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x70,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,
+ 0x71,0x71,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x72,0x72,0x72,0x72,0x73,
+ 0x72,0x72,0x72,0x72,0x72,0x73,0x73,0x74,0x74,0x74,0x73,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x75,0x76,0x76,0x75,0x75,0x74,0x74,0x75,0x75,0x76,0x75,0x75,
+ 0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x78,0x78,0x77,0x76,0x76,0x78,0x78,
+ 0x78,0x78,0x77,0x77,0x78,0x78,0x74,0x71,0x86,0x89,0x69,0x35,0x02,0x00,0x02,
+ 0x03,0x02,0x00,0x00,0x01,0x04,0x02,0x00,0x04,0x06,0x03,0x00,0x09,0x40,0x6e,
+ 0x8a,0x82,0x72,0x7a,0x7f,0x7d,0x7d,0x7d,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,
+ 0x7c,0x7d,0x7d,0x7c,0x7c,0x7b,0x7c,0x7d,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7d,
+ 0x7b,0x7c,0x7d,0x7c,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,0x7e,0x7e,
+ 0x7f,0x7f,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x80,0x81,0x80,0x7f,0x7f,0x80,
+ 0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0xc8,0x3f,0x3f,0x40,
+ 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x40,0x41,0x41,0x41,
+ 0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,0x4a,0x49,0x49,0x49,0x49,
+ 0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,
+ 0x4e,0x4e,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,
+ 0x55,0x56,0x56,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x59,0x58,0x57,0x57,0x56,
+ 0x57,0x57,0x58,0x59,0x5a,0x5a,0x59,0x58,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x60,0x61,0x61,0x60,0x5f,0x5f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+ 0x61,0x62,0x63,0x63,0x63,0x63,0x63,0x63,0x62,0x62,0x63,0x63,0x64,0x65,0x64,
+ 0x64,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x66,0x67,0x67,0x68,0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x68,
+ 0x68,0x68,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x69,0x69,
+ 0x69,0x69,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6f,0x6e,0x6d,0x6d,0x6e,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x70,0x70,0x70,0x70,0x70,0x71,
+ 0x71,0x72,0x72,0x73,0x73,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,
+ 0x76,0x76,0x76,0x76,0x77,0x77,0x78,0x78,0x78,0x77,0x76,0x76,0x76,0x77,0x78,
+ 0x78,0x78,0x78,0x78,0x77,0x77,0x77,0x78,0x78,0x79,0x79,0x78,0x78,0x77,0x78,
+ 0x78,0x79,0x79,0x79,0x78,0x78,0x78,0x79,0x75,0x73,0x88,0x8a,0x6d,0x38,0x03,
+ 0x00,0x03,0x02,0x02,0x03,0x01,0x01,0x04,0x02,0x00,0x03,0x05,0x05,0x00,0x09,
+ 0x42,0x71,0x8a,0x82,0x74,0x7b,0x7f,0x7e,0x7e,0x7e,0x7d,0x7c,0x7b,0x7b,0x7c,
+ 0x7c,0x7d,0x7e,0x7e,0x7f,0x7e,0x7d,0x7d,0x7d,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7e,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x80,0x81,0x82,0x82,0x82,0x82,0x81,0x80,0x80,0x81,0x82,0x81,0x81,
+ 0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x82,0x7f,0x80,0x80,
+ 0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x84,
+ 0x84,0x84,0x83,0x83,0x83,0x83,0x84,0x83,0x82,0x82,0x82,0x82,0x82,0x83,0x83,
+ 0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x83,0x83,0x83,0x82,0x82,0xc8,0x40,
+ 0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x46,0x46,0x47,0x47,0x48,0x47,0x47,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,
+ 0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,
+ 0x4d,0x4e,0x4f,0x4f,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,
+ 0x50,0x51,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x52,0x52,0x52,
+ 0x51,0x51,0x51,0x52,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x56,0x56,
+ 0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x5a,0x59,0x58,
+ 0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5c,0x5b,0x5b,0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+ 0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5e,0x5f,0x5f,0x5f,
+ 0x5f,0x60,0x61,0x61,0x62,0x62,0x62,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x67,0x67,
+ 0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x68,0x68,
+ 0x68,0x68,0x68,0x68,0x69,0x6a,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,
+ 0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x6f,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x73,0x73,0x73,0x73,0x73,0x72,0x72,0x72,
+ 0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x74,0x74,0x74,
+ 0x74,0x75,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,
+ 0x76,0x76,0x76,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x79,0x79,0x7a,0x79,0x78,0x78,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x79,0x78,
+ 0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7b,0x7a,0x7a,0x7b,0x78,0x76,0x88,0x8c,0x76,
+ 0x40,0x05,0x03,0x07,0x01,0x03,0x06,0x03,0x01,0x03,0x02,0x00,0x00,0x03,0x07,
+ 0x00,0x07,0x46,0x76,0x8b,0x84,0x76,0x7b,0x7f,0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,
+ 0x7d,0x7d,0x7e,0x7f,0x7f,0x7f,0x80,0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x82,0x82,0x81,0x81,
+ 0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x82,0x81,0x81,0x81,0x81,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x82,0x82,0x82,0x83,0x83,0x84,0x82,0x81,
+ 0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x84,0x83,0x83,0x83,0x82,0x82,0x82,0x83,
+ 0x85,0x85,0x85,0x84,0x84,0x84,0x84,0x84,0x85,0x85,0x84,0x84,0x84,0x84,0x84,
+ 0x85,0x85,0x85,0x85,0x86,0x86,0x85,0x85,0x85,0x85,0x84,0x84,0x84,0x83,0x83,
+ 0xc8,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x41,
+ 0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x44,0x44,0x44,0x44,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x47,0x48,0x48,0x48,0x47,0x47,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
+ 0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4d,0x4d,0x4d,
+ 0x4d,0x4d,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x51,0x52,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x53,
+ 0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x55,0x55,0x55,0x56,0x56,0x56,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x5a,
+ 0x5a,0x59,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5b,0x5a,0x5a,0x5b,0x5b,0x5a,
+ 0x5a,0x5b,0x5c,0x5c,0x5d,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,
+ 0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x62,0x62,0x62,0x62,0x62,0x63,0x63,
+ 0x63,0x63,0x62,0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x68,0x68,0x68,
+ 0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x68,0x68,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6b,0x6c,0x6c,0x6c,0x6c,
+ 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6e,0x6f,0x6e,0x6e,0x6e,0x6e,
+ 0x6f,0x70,0x70,0x71,0x71,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x70,
+ 0x70,0x71,0x73,0x73,0x72,0x71,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x75,
+ 0x75,0x75,0x75,0x76,0x76,0x75,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x77,
+ 0x77,0x78,0x77,0x76,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,
+ 0x79,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x7a,0x7b,0x7b,0x7c,0x7b,
+ 0x7b,0x7a,0x79,0x79,0x7a,0x7b,0x7c,0x7d,0x7c,0x7b,0x7b,0x7b,0x79,0x77,0x85,
+ 0x8a,0x7e,0x45,0x04,0x03,0x06,0x00,0x01,0x05,0x02,0x00,0x02,0x02,0x02,0x00,
+ 0x02,0x07,0x00,0x07,0x46,0x77,0x8c,0x86,0x78,0x7b,0x7e,0x7e,0x7e,0x7f,0x7e,
+ 0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x7f,0x7f,0x7f,
+ 0x7f,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,
+ 0x83,0x83,0x83,0x83,0x83,0x82,0x82,0x82,0x83,0x83,0x83,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x83,0x84,0x83,0x83,0x83,0x84,0x84,0x83,0x82,0x82,0x82,0x83,0x84,
+ 0x83,0x83,0x83,0x83,0x84,0x84,0x84,0x84,0x85,0x86,0x85,0x85,0x85,0x84,0x83,
+ 0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x84,0x85,0x85,0x85,0x86,0x85,
+ 0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x85,0x85,0x85,
+ 0x84,0x85,0xc8,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x42,0x42,
+ 0x42,0x41,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x44,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,
+ 0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x52,0x53,0x51,0x50,0x51,0x51,0x51,0x52,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x56,0x56,0x56,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x5a,
+ 0x5a,0x5a,0x5a,0x59,0x59,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,
+ 0x5c,0x5b,0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x61,0x61,0x61,0x61,0x61,
+ 0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x62,0x62,0x62,0x63,
+ 0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x64,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x67,0x68,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x6e,
+ 0x6e,0x6e,0x6f,0x70,0x70,0x71,0x71,0x71,0x71,0x70,0x71,0x72,0x72,0x73,0x74,
+ 0x73,0x72,0x71,0x73,0x74,0x74,0x74,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,
+ 0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,
+ 0x78,0x78,0x78,0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,
+ 0x79,0x7a,0x7a,0x79,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7d,0x7d,0x7b,0x7b,0x7a,0x7b,0x7d,0x7e,0x7e,0x7e,0x7d,0x7c,0x7c,0x7a,
+ 0x78,0x82,0x88,0x85,0x4b,0x03,0x00,0x03,0x00,0x01,0x03,0x00,0x00,0x01,0x03,
+ 0x03,0x01,0x02,0x06,0x00,0x07,0x45,0x76,0x8d,0x87,0x79,0x7c,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x81,
+ 0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,0x83,0x83,0x83,0x83,0x84,0x84,0x85,
+ 0x85,0x85,0x85,0x85,0x85,0x85,0x84,0x84,0x83,0x83,0x83,0x83,0x83,0x83,0x82,
+ 0x82,0x83,0x84,0x84,0x85,0x85,0x84,0x84,0x84,0x85,0x85,0x84,0x84,0x83,0x82,
+ 0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x85,0x84,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x85,0x85,0x85,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x87,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0xc8,0x42,0x42,0x43,0x43,0x43,0x43,0x42,0x41,0x41,0x41,
+ 0x41,0x42,0x42,0x42,0x41,0x41,0x42,0x42,0x42,0x43,0x43,0x43,0x44,0x44,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x4f,0x4f,0x50,0x50,0x51,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x53,0x52,0x51,0x52,0x53,0x52,0x52,0x53,
+ 0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x55,0x56,0x56,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x5a,0x5a,0x5b,0x5c,
+ 0x5d,0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x60,0x61,0x62,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x63,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,
+ 0x66,0x66,0x66,0x66,0x67,0x67,0x67,0x68,0x68,0x68,0x67,0x66,0x65,0x66,0x67,
+ 0x67,0x67,0x67,0x66,0x65,0x66,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,
+ 0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6d,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x6f,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x71,0x71,0x72,0x74,0x74,0x72,
+ 0x73,0x74,0x72,0x70,0x70,0x73,0x74,0x74,0x74,0x72,0x73,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x75,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x76,0x76,0x76,0x76,
+ 0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x79,
+ 0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,
+ 0x7c,0x7c,0x7d,0x7e,0x7f,0x7d,0x7b,0x7b,0x7c,0x7e,0x7f,0x7f,0x7f,0x7e,0x7d,
+ 0x7d,0x7b,0x7a,0x81,0x87,0x8a,0x4e,0x01,0x00,0x02,0x03,0x03,0x00,0x00,0x00,
+ 0x01,0x03,0x05,0x03,0x01,0x02,0x00,0x0a,0x44,0x74,0x8e,0x88,0x79,0x7e,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x83,0x84,0x84,0x85,0x85,0x85,0x84,0x84,
+ 0x85,0x85,0x85,0x85,0x85,0x85,0x84,0x85,0x86,0x86,0x85,0x85,0x84,0x84,0x85,
+ 0x85,0x85,0x85,0x86,0x86,0x87,0x86,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,
+ 0x85,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x88,0x88,0x87,0x86,
+ 0x86,0x88,0x88,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x88,0x87,0x87,0x87,0x88,
+ 0x88,0x87,0x87,0x87,0x87,0x87,0xc8,0x44,0x44,0x43,0x42,0x42,0x42,0x42,0x42,
+ 0x42,0x42,0x42,0x42,0x41,0x41,0x41,0x42,0x42,0x42,0x43,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x48,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x4b,
+ 0x4b,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x4f,0x50,0x50,
+ 0x51,0x51,0x51,0x50,0x50,0x50,0x50,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x55,0x55,0x56,0x55,0x56,0x56,0x56,0x56,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x58,0x59,0x59,
+ 0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5a,0x5a,0x5a,0x5a,0x5b,
+ 0x5c,0x5d,0x5e,0x5d,0x5d,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5e,0x5e,0x5f,0x61,0x62,0x62,0x62,0x62,0x61,0x62,0x62,0x62,0x63,0x63,
+ 0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,
+ 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x64,0x65,0x66,0x67,0x67,0x67,0x67,0x67,
+ 0x68,0x68,0x68,0x67,0x67,0x67,0x68,0x68,0x68,0x69,0x69,0x69,0x68,0x67,0x67,
+ 0x67,0x68,0x68,0x68,0x68,0x67,0x67,0x67,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,
+ 0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6d,0x6d,
+ 0x6e,0x6e,0x6f,0x70,0x6f,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x6f,0x6f,0x6f,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x74,0x74,
+ 0x74,0x73,0x74,0x74,0x73,0x71,0x71,0x73,0x74,0x74,0x74,0x73,0x74,0x74,0x74,
+ 0x74,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,0x76,0x76,0x77,0x77,
+ 0x77,0x77,0x77,0x77,0x78,0x78,0x77,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,
+ 0x79,0x79,0x79,0x79,0x79,0x79,0x7a,0x79,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7c,0x7b,0x7c,0x7c,0x7b,0x7b,0x7c,0x7d,
+ 0x7d,0x7d,0x7d,0x7d,0x7d,0x7f,0x80,0x7f,0x7d,0x7c,0x7d,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7e,0x7d,0x7c,0x7c,0x81,0x87,0x8d,0x50,0x01,0x00,0x02,0x05,0x03,0x00,
+ 0x00,0x01,0x01,0x03,0x06,0x03,0x01,0x02,0x00,0x09,0x3e,0x6f,0x90,0x8a,0x7a,
+ 0x80,0x84,0x84,0x85,0x85,0x84,0x84,0x83,0x82,0x82,0x82,0x82,0x83,0x83,0x82,
+ 0x83,0x83,0x83,0x82,0x82,0x82,0x82,0x83,0x84,0x85,0x85,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x85,0x85,0x85,0x85,0x85,0x85,0x84,0x85,0x87,0x87,0x86,0x85,0x85,
+ 0x85,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x86,0x85,0x85,0x86,0x86,0x87,0x88,
+ 0x88,0x87,0x86,0x86,0x86,0x87,0x87,0x88,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
+ 0x88,0x88,0x89,0x89,0x89,0x88,0x88,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x89,0x89,
+ 0x88,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x88,
+ 0x88,0x89,0x8a,0x89,0x88,0x88,0x88,0x88,0xc8,0x45,0x45,0x42,0x41,0x3f,0x41,
+ 0x42,0x45,0x45,0x45,0x44,0x41,0x40,0x41,0x43,0x43,0x43,0x43,0x44,0x45,0x45,
+ 0x46,0x45,0x45,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
+ 0x49,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4b,0x4b,0x4a,0x4a,0x4a,
+ 0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4e,0x4d,0x4c,0x4c,0x4d,0x4e,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x51,0x52,0x52,0x52,0x51,0x51,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x56,0x57,0x56,0x56,0x56,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5c,0x5c,0x5d,
+ 0x5d,0x5e,0x5e,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,
+ 0x60,0x61,0x61,0x5f,0x5e,0x5f,0x60,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x64,0x64,0x65,0x65,0x64,0x64,
+ 0x65,0x66,0x65,0x65,0x63,0x62,0x62,0x61,0x62,0x62,0x65,0x66,0x68,0x68,0x68,
+ 0x69,0x69,0x69,0x69,0x69,0x68,0x68,0x68,0x68,0x68,0x69,0x69,0x6a,0x6a,0x6a,
+ 0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6b,0x6a,0x6b,0x6b,0x6b,
+ 0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6e,0x6e,0x6f,0x6f,0x70,0x71,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x71,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x73,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x75,0x75,0x75,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x76,
+ 0x76,0x76,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7c,
+ 0x7c,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,
+ 0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7d,0x7f,0x81,0x80,0x7f,0x7f,0x7e,0x7f,0x7f,
+ 0x7f,0x7f,0x7e,0x7d,0x7c,0x7c,0x7f,0x82,0x88,0x8e,0x51,0x01,0x00,0x04,0x03,
+ 0x01,0x00,0x00,0x01,0x01,0x03,0x04,0x01,0x01,0x06,0x00,0x06,0x35,0x67,0x91,
+ 0x8c,0x7b,0x82,0x86,0x86,0x86,0x86,0x86,0x85,0x84,0x83,0x82,0x82,0x83,0x85,
+ 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x86,0x86,0x86,0x86,
+ 0x86,0x87,0x87,0x86,0x86,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x87,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x87,0x87,0x87,0x87,0x88,
+ 0x88,0x89,0x8a,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,
+ 0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x89,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x89,0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8b,0x8a,0x8a,0x89,0x89,0x89,0x89,0xc8,0x44,0x44,0x42,0x41,
+ 0x41,0x42,0x44,0x45,0x45,0x45,0x43,0x42,0x41,0x42,0x43,0x44,0x44,0x44,0x45,
+ 0x46,0x46,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x49,
+ 0x4a,0x4a,0x4a,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,
+ 0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4d,0x4d,0x4e,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,
+ 0x51,0x50,0x50,0x52,0x52,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x53,0x53,
+ 0x54,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x57,
+ 0x56,0x57,0x57,0x57,0x58,0x58,0x57,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5c,
+ 0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,
+ 0x60,0x61,0x61,0x62,0x62,0x61,0x60,0x61,0x62,0x62,0x62,0x61,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x64,0x64,0x65,0x66,0x68,0x69,
+ 0x68,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,
+ 0x6a,0x6a,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6e,0x6e,0x6d,0x6d,
+ 0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x72,0x71,0x71,0x72,0x72,0x72,0x72,0x72,
+ 0x72,0x72,0x72,0x72,0x71,0x71,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x75,0x75,0x75,0x75,0x75,0x76,0x76,
+ 0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x79,0x79,0x79,0x79,0x79,0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7e,
+ 0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x82,0x82,0x81,0x80,0x80,
+ 0x80,0x81,0x81,0x80,0x80,0x80,0x7f,0x7e,0x7e,0x82,0x89,0x94,0x57,0x03,0x00,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x04,0x00,0x01,0x07,0x01,0x05,0x32,
+ 0x64,0x92,0x8e,0x7d,0x82,0x86,0x86,0x86,0x86,0x86,0x86,0x85,0x84,0x83,0x84,
+ 0x85,0x86,0x86,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x87,0x87,0x88,0x88,0x89,0x88,0x87,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x89,
+ 0x88,0x87,0x86,0x87,0x87,0x87,0x87,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x88,
+ 0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8b,0x8a,0x8a,0x8a,0x8a,0xc8,0x42,0x42,
+ 0x42,0x43,0x44,0x45,0x45,0x44,0x43,0x42,0x42,0x43,0x44,0x44,0x44,0x44,0x44,
+ 0x45,0x45,0x46,0x46,0x46,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x49,0x49,
+ 0x4a,0x4a,0x4a,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,0x4b,0x4a,0x4a,0x4a,0x4b,0x4b,
+ 0x4b,0x4b,0x4b,0x4c,0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,
+ 0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+ 0x52,0x52,0x52,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+ 0x53,0x54,0x55,0x54,0x54,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x59,0x59,
+ 0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x5e,0x5e,0x5f,0x60,0x60,0x60,
+ 0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x66,0x66,0x65,0x64,0x65,0x65,0x66,0x67,0x68,0x68,0x68,0x68,0x68,0x69,
+ 0x69,0x69,0x68,0x66,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,
+ 0x6a,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,
+ 0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x72,0x72,0x73,
+ 0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x75,0x75,
+ 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,
+ 0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,
+ 0x79,0x79,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,
+ 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,
+ 0x7f,0x80,0x80,0x7f,0x7f,0x80,0x81,0x81,0x81,0x81,0x80,0x81,0x82,0x82,0x82,
+ 0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x80,0x7e,0x80,0x89,0x9a,0x5e,
+ 0x07,0x00,0x00,0x00,0x02,0x03,0x03,0x02,0x01,0x03,0x04,0x00,0x01,0x07,0x02,
+ 0x06,0x2f,0x62,0x94,0x91,0x7f,0x83,0x86,0x86,0x86,0x86,0x86,0x86,0x85,0x85,
+ 0x85,0x86,0x86,0x87,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x88,
+ 0x88,0x88,0x89,0x89,0x89,0x89,0x8a,0x8a,0x89,0x89,0x88,0x88,0x89,0x89,0x8a,
+ 0x8a,0x8a,0x8a,0x89,0x88,0x88,0x89,0x89,0x88,0x87,0x87,0x87,0x88,0x89,0x89,
+ 0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8d,0x8d,0x8c,0x8c,0x8b,0x8b,0x8b,0xc8,
+ 0x42,0x42,0x43,0x44,0x45,0x46,0x45,0x45,0x43,0x42,0x42,0x44,0x45,0x45,0x45,
+ 0x44,0x45,0x45,0x45,0x47,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,
+ 0x4b,0x4c,0x4b,0x4b,0x4c,0x4c,0x4c,0x4e,0x4e,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,
+ 0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x51,0x51,
+ 0x51,0x51,0x52,0x53,0x53,0x52,0x52,0x52,0x52,0x53,0x53,0x54,0x55,0x55,0x55,
+ 0x54,0x53,0x53,0x54,0x55,0x54,0x54,0x54,0x55,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,0x5d,0x5d,0x5e,0x5d,0x5d,0x5d,
+ 0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x5e,0x5e,0x5e,0x5f,0x60,0x61,
+ 0x61,0x61,0x61,0x5f,0x5f,0x60,0x61,0x62,0x63,0x62,0x62,0x63,0x63,0x63,0x63,
+ 0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x66,0x67,0x66,0x66,0x65,0x66,0x67,0x68,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x6a,0x69,0x68,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x69,0x69,0x69,
+ 0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x73,
+ 0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,
+ 0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,0x77,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,
+ 0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7c,0x7d,0x7d,
+ 0x7d,0x7e,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x7f,0x7f,
+ 0x7f,0x7f,0x80,0x80,0x81,0x80,0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x81,0x81,
+ 0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x82,0x82,0x81,0x7f,0x88,
+ 0x9d,0x63,0x0e,0x00,0x00,0x02,0x03,0x04,0x02,0x00,0x01,0x03,0x03,0x00,0x02,
+ 0x07,0x03,0x06,0x2b,0x5e,0x95,0x94,0x81,0x83,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x88,
+ 0x88,0x89,0x8a,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,0x8c,0x8c,0x8c,0x8c,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8d,0x8d,
+ 0x8c,0x8c,0x8c,0x8c,0x8b,0x8c,0x8c,0x8d,0x8d,0x8e,0x8d,0x8c,0x8b,0x8c,0x8c,
+ 0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8c,0xc8,0x43,0x43,0x44,0x45,0x45,0x46,0x46,0x45,0x44,0x43,0x44,0x45,0x46,
+ 0x46,0x45,0x45,0x45,0x45,0x46,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x49,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4f,0x4e,0x4e,0x4e,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,
+ 0x52,0x51,0x51,0x51,0x52,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x54,0x55,0x56,
+ 0x57,0x56,0x55,0x53,0x53,0x54,0x55,0x55,0x54,0x54,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5b,0x5b,0x5a,0x5a,0x5b,0x5a,0x5b,0x5b,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x5f,0x5e,0x5e,0x5f,0x61,
+ 0x61,0x61,0x61,0x61,0x60,0x5f,0x5f,0x60,0x61,0x62,0x63,0x63,0x62,0x63,0x63,
+ 0x63,0x63,0x63,0x63,0x64,0x65,0x65,0x66,0x66,0x66,0x65,0x65,0x66,0x66,0x65,
+ 0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x6a,0x69,0x69,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6a,
+ 0x69,0x6a,0x6a,0x6a,0x6b,0x6c,0x6b,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,
+ 0x6e,0x6e,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,
+ 0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,
+ 0x75,0x75,0x76,0x76,0x77,0x78,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x78,0x78,
+ 0x78,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x7a,0x7a,0x7a,0x79,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7d,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7e,0x7e,
+ 0x7e,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,
+ 0x81,0x80,0x7f,0x7f,0x80,0x81,0x81,0x80,0x80,0x80,0x80,0x81,0x82,0x82,0x82,
+ 0x82,0x81,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x84,0x84,0x83,0x83,0x83,0x83,
+ 0x80,0x87,0xa0,0x69,0x15,0x01,0x00,0x04,0x05,0x03,0x01,0x00,0x01,0x02,0x03,
+ 0x01,0x02,0x07,0x03,0x04,0x24,0x58,0x97,0x96,0x82,0x85,0x86,0x86,0x86,0x87,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x89,0x88,0x88,0x89,0x89,0x88,0x89,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8c,0x8d,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8c,0x8c,
+ 0x8d,0x8c,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8c,0x8d,0x8e,0x8f,0x8e,0x8e,
+ 0x8e,0x8d,0x8d,0xc8,0x45,0x45,0x44,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x48,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,0x4b,
+ 0x4b,0x4c,0x4c,0x4d,0x4d,0x4e,0x4f,0x4e,0x4e,0x4d,0x4d,0x4e,0x4f,0x50,0x4f,
+ 0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,
+ 0x53,0x53,0x52,0x51,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,
+ 0x56,0x57,0x57,0x57,0x56,0x55,0x54,0x56,0x57,0x56,0x56,0x56,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x58,0x59,0x59,0x59,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5c,0x5c,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x61,0x61,0x60,0x5f,0x5e,
+ 0x60,0x62,0x62,0x62,0x61,0x60,0x60,0x5f,0x5f,0x61,0x62,0x62,0x64,0x63,0x62,
+ 0x62,0x63,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x66,0x67,0x67,0x66,0x66,0x67,
+ 0x67,0x66,0x66,0x66,0x66,0x67,0x67,0x68,0x68,0x68,0x69,0x6a,0x69,0x69,0x69,
+ 0x69,0x68,0x68,0x68,0x68,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6c,0x6c,0x6c,
+ 0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x71,0x71,
+ 0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x76,
+ 0x76,0x76,0x76,0x76,0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7c,0x7c,0x7c,0x7c,
+ 0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x7f,
+ 0x7f,0x7f,0x7f,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x81,0x81,
+ 0x81,0x82,0x82,0x82,0x80,0x80,0x82,0x82,0x82,0x81,0x80,0x80,0x80,0x81,0x82,
+ 0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x84,
+ 0x85,0x86,0x80,0x87,0xa1,0x6e,0x1d,0x05,0x00,0x07,0x05,0x01,0x00,0x00,0x01,
+ 0x02,0x03,0x01,0x03,0x07,0x02,0x03,0x1d,0x52,0x98,0x98,0x82,0x86,0x89,0x89,
+ 0x89,0x89,0x89,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x89,0x89,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8c,0x8b,0x8b,0x8b,
+ 0x8b,0x8c,0x8c,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8b,0x8b,0x8c,0x8c,0x8c,
+ 0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,
+ 0x8f,0x8e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x90,
+ 0x90,0x8f,0x8f,0x8f,0x8e,0xc8,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x46,
+ 0x46,0x46,0x45,0x45,0x45,0x47,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x50,0x4f,0x4f,0x4e,0x4e,0x4e,0x4f,
+ 0x50,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x55,
+ 0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x58,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x59,0x59,0x59,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5f,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x62,0x63,0x63,0x62,
+ 0x61,0x60,0x62,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x63,0x64,0x64,
+ 0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,
+ 0x68,0x68,0x68,0x68,0x68,0x67,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x6a,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6c,0x6c,
+ 0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,
+ 0x71,0x71,0x71,0x71,0x71,0x72,0x72,0x71,0x72,0x73,0x74,0x75,0x75,0x75,0x75,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x77,0x77,
+ 0x77,0x78,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x79,0x79,
+ 0x78,0x78,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7a,0x7a,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7d,
+ 0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,
+ 0x81,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x7f,0x7f,0x80,0x80,0x81,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x82,0x82,0x81,0x82,
+ 0x82,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x85,0x85,0x86,0x86,0x86,
+ 0x85,0x85,0x85,0x86,0x81,0x8a,0xa6,0x74,0x23,0x07,0x00,0x05,0x03,0x00,0x01,
+ 0x02,0x01,0x02,0x02,0x01,0x03,0x07,0x02,0x02,0x16,0x4c,0x9a,0x99,0x83,0x88,
+ 0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8d,0x8d,0x8e,0x8e,0x8f,0x8f,
+ 0x8e,0x8d,0x8d,0x8d,0x8e,0x8d,0x8d,0x8d,0x8e,0x8d,0x8e,0x8f,0x8e,0x8f,0x90,
+ 0x90,0x90,0x91,0x90,0x8e,0x8e,0x8e,0x8e,0x8f,0x90,0x90,0x90,0x90,0x8f,0x8e,
+ 0x8d,0x8d,0x8f,0x90,0x90,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,
+ 0x91,0x91,0x91,0x91,0x90,0x90,0x90,0xc8,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+ 0x45,0x46,0x47,0x47,0x46,0x45,0x46,0x48,0x48,0x47,0x48,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x4f,0x4e,0x4e,
+ 0x4f,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x52,0x53,0x53,0x54,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,
+ 0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x57,0x57,
+ 0x57,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5f,0x5f,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x62,0x62,0x63,0x64,
+ 0x64,0x64,0x63,0x62,0x63,0x63,0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x65,
+ 0x65,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,0x69,
+ 0x68,0x69,0x6a,0x6a,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6b,0x6b,0x6c,0x6c,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6f,0x70,0x70,0x6f,0x6e,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x73,0x72,0x72,0x72,0x72,
+ 0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x73,0x73,0x72,0x73,0x74,0x75,0x76,0x76,
+ 0x76,0x76,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7b,
+ 0x7a,0x7a,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,0x81,0x81,
+ 0x82,0x82,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x82,0x81,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x84,0x84,0x85,0x85,0x86,0x85,0x84,0x83,
+ 0x82,0x83,0x84,0x85,0x86,0x86,0x86,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x85,0x85,0x85,0x81,0x8b,0xaa,0x79,0x27,0x08,0x00,0x03,0x02,
+ 0x00,0x02,0x03,0x01,0x01,0x02,0x01,0x02,0x06,0x01,0x02,0x10,0x46,0x9c,0x9c,
+ 0x83,0x89,0x8d,0x8b,0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,
+ 0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,
+ 0x8e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8f,0x8f,0x8e,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x8f,0x8e,0x8e,0x8f,0x8f,0x8f,0x8e,0x8f,0x8f,0x8f,0x90,0x90,0x90,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x90,0x90,0x90,0x90,0x90,0x90,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0xc8,0x44,0x44,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x46,0x46,0x47,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4f,0x4e,0x4e,
+ 0x4e,0x4e,0x50,0x50,0x4f,0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x51,
+ 0x52,0x53,0x53,0x53,0x54,0x55,0x55,0x54,0x53,0x53,0x53,0x53,0x54,0x54,0x55,
+ 0x55,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x59,0x59,
+ 0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5c,0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x60,0x60,0x61,0x60,0x60,0x60,0x60,0x60,0x61,0x61,0x61,0x61,0x62,
+ 0x62,0x63,0x64,0x64,0x64,0x64,0x63,0x63,0x63,0x63,0x63,0x64,0x65,0x66,0x67,
+ 0x66,0x65,0x65,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x66,0x66,0x67,0x67,
+ 0x68,0x67,0x67,0x69,0x69,0x69,0x6a,0x6a,0x69,0x69,0x6a,0x6a,0x6b,0x6b,0x6c,
+ 0x6b,0x6a,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x71,0x70,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x72,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x74,0x74,0x74,0x75,
+ 0x76,0x77,0x77,0x76,0x74,0x74,0x74,0x76,0x78,0x77,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x79,0x79,0x7a,0x79,0x79,0x79,0x79,0x79,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7c,
+ 0x7c,0x7c,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,
+ 0x82,0x82,0x82,0x83,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x84,0x84,
+ 0x85,0x85,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x85,0x84,0x84,0x85,0x86,0x86,0x87,0x86,0x85,0x85,0x85,0x85,0x85,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x82,0x8c,0xae,0x7c,0x28,0x09,0x00,
+ 0x02,0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x05,0x02,0x03,0x0c,0x42,
+ 0xa0,0xa0,0x84,0x89,0x8c,0x8b,0x8a,0x8a,0x8a,0x8b,0x8b,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x8e,
+ 0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x91,0x91,
+ 0x90,0x90,0x90,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x8f,0x8f,0x90,0x90,0x8f,0x8f,
+ 0x90,0x90,0x90,0x90,0x90,0x8f,0x8f,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x91,0x91,0x91,0x91,0x91,0x90,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x91,0x91,0xc8,0x44,0x44,0x45,
+ 0x46,0x46,0x46,0x46,0x45,0x45,0x46,0x47,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,
+ 0x4e,0x4e,0x4e,0x4f,0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,
+ 0x51,0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x54,0x54,0x53,0x53,0x54,0x54,
+ 0x55,0x55,0x55,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+ 0x59,0x5a,0x59,0x58,0x58,0x58,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5e,0x5f,
+ 0x5f,0x5f,0x60,0x60,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x61,0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x63,0x63,0x63,0x64,0x64,0x65,0x66,
+ 0x67,0x67,0x67,0x66,0x65,0x64,0x65,0x66,0x67,0x68,0x68,0x68,0x67,0x68,0x68,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6b,0x6b,0x6b,0x6a,0x6b,0x6b,0x6c,
+ 0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6e,0x6f,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x71,0x71,
+ 0x70,0x71,0x71,0x71,0x71,0x72,0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x77,0x77,0x76,0x76,
+ 0x76,0x76,0x77,0x78,0x77,0x76,0x75,0x74,0x74,0x77,0x78,0x78,0x78,0x78,0x79,
+ 0x79,0x79,0x79,0x7a,0x7a,0x7a,0x79,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7d,0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80,
+ 0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x83,0x83,0x83,0x83,0x84,0x84,0x83,0x83,0x84,0x84,0x84,0x84,0x84,0x85,
+ 0x85,0x85,0x86,0x86,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x87,0x88,
+ 0x88,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x8a,0x82,0x8b,0xae,0x7f,0x2e,
+ 0x0c,0x00,0x02,0x03,0x04,0x02,0x00,0x01,0x01,0x01,0x01,0x02,0x04,0x02,0x03,
+ 0x08,0x40,0xa3,0xa2,0x84,0x89,0x8d,0x8c,0x8b,0x8a,0x8b,0x8c,0x8c,0x8b,0x8a,
+ 0x8a,0x8b,0x8b,0x8d,0x8e,0x8d,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x8e,0x8e,0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x92,0x94,0x95,0x95,0x93,0x92,0x91,0x92,0x91,0x91,0x91,
+ 0x91,0x91,0x92,0x91,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x93,0xc8,0x44,
+ 0x44,0x45,0x46,0x47,0x47,0x46,0x45,0x45,0x46,0x47,0x48,0x48,0x48,0x49,0x48,
+ 0x48,0x49,0x49,0x49,0x4a,0x4a,0x49,0x49,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,
+ 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,
+ 0x51,0x51,0x52,0x53,0x53,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,
+ 0x55,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x57,
+ 0x57,0x57,0x59,0x5a,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x60,
+ 0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,
+ 0x63,0x63,0x62,0x62,0x63,0x63,0x64,0x65,0x64,0x64,0x64,0x64,0x64,0x64,0x65,
+ 0x65,0x65,0x66,0x67,0x67,0x66,0x66,0x65,0x65,0x66,0x67,0x68,0x68,0x68,0x68,
+ 0x69,0x69,0x6a,0x6b,0x6c,0x6d,0x6b,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6c,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6f,0x70,0x6f,0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,0x6d,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x72,0x72,0x72,0x72,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x76,0x76,0x77,0x77,0x78,0x78,0x78,
+ 0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x78,0x78,0x79,0x79,
+ 0x79,0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x83,
+ 0x83,0x83,0x83,0x84,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,
+ 0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x87,
+ 0x88,0x89,0x88,0x88,0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8a,0x8c,0x8d,0x82,0x89,0xab,
+ 0x83,0x39,0x10,0x00,0x03,0x05,0x04,0x02,0x00,0x00,0x01,0x01,0x01,0x02,0x03,
+ 0x02,0x03,0x05,0x3d,0xa7,0xa4,0x84,0x8a,0x8d,0x8d,0x8c,0x8c,0x8c,0x8d,0x8d,
+ 0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8f,0x8f,0x90,0x90,0x90,0x90,
+ 0x90,0x90,0x90,0x8f,0x8f,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,
+ 0x92,0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x92,0x92,0x93,0x94,0x94,0x93,0x93,
+ 0x92,0x92,0x91,0x91,0x91,0x92,0x92,0x92,0x91,0x91,0x91,0x91,0x92,0x92,0x92,
+ 0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,
+ 0x93,0x92,0x92,0x92,0x92,0x93,0x93,0x94,0x95,0x95,0x93,0x93,0x93,0x93,0x93,
+ 0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x94,0x94,0x95,0x94,0x94,
+ 0xc8,0x45,0x45,0x46,0x46,0x47,0x46,0x45,0x46,0x46,0x47,0x48,0x48,0x48,0x48,
+ 0x49,0x48,0x48,0x49,0x49,0x49,0x4a,0x4b,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,
+ 0x50,0x50,0x51,0x51,0x51,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x52,0x51,0x52,
+ 0x52,0x52,0x51,0x51,0x52,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x56,0x56,
+ 0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,
+ 0x5a,0x58,0x57,0x57,0x5a,0x5c,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5c,0x5d,0x5d,0x5c,0x5c,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x61,
+ 0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x63,0x64,0x64,0x65,0x65,0x65,0x66,0x66,0x66,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x68,
+ 0x68,0x67,0x67,0x68,0x69,0x6b,0x6c,0x6d,0x6c,0x69,0x69,0x6b,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,0x6e,0x6d,0x6d,0x6d,0x6e,
+ 0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x70,
+ 0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,
+ 0x76,0x76,0x76,0x76,0x76,0x75,0x75,0x76,0x76,0x76,0x76,0x77,0x77,0x78,0x78,
+ 0x78,0x77,0x78,0x78,0x79,0x79,0x79,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,
+ 0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x80,
+ 0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x83,0x82,0x83,0x83,0x82,0x83,0x84,0x84,0x85,0x85,0x85,
+ 0x85,0x85,0x84,0x84,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x87,0x87,0x86,0x86,0x86,0x87,0x88,0x89,0x88,0x88,0x87,0x86,0x87,0x87,0x88,
+ 0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x89,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x89,0x88,
+ 0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8d,0x8e,0x82,
+ 0x87,0xaa,0x88,0x45,0x15,0x00,0x03,0x03,0x02,0x03,0x02,0x00,0x00,0x01,0x00,
+ 0x01,0x03,0x01,0x02,0x03,0x3d,0xa8,0xa4,0x82,0x8b,0x90,0x8e,0x8d,0x8d,0x8d,
+ 0x8e,0x8e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x90,0x90,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x91,0x91,0x92,0x92,0x93,0x92,0x92,0x91,
+ 0x92,0x92,0x93,0x93,0x92,0x92,0x94,0x94,0x93,0x93,0x92,0x93,0x94,0x94,0x94,
+ 0x93,0x92,0x93,0x92,0x92,0x91,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x93,
+ 0x93,0x92,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+ 0x94,0x94,0x95,0x94,0x94,0x94,0x93,0x93,0x94,0x94,0x95,0x95,0x95,0x94,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x96,0x96,
+ 0x96,0x95,0xc8,0x45,0x45,0x46,0x46,0x46,0x45,0x45,0x47,0x48,0x48,0x48,0x48,
+ 0x48,0x48,0x49,0x49,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4d,
+ 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,
+ 0x50,0x50,0x51,0x52,0x53,0x53,0x53,0x52,0x51,0x51,0x51,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x53,0x52,0x52,0x52,0x53,0x53,0x55,0x55,0x56,0x56,0x56,0x56,0x56,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x59,0x59,0x58,0x58,0x58,0x5a,0x5a,
+ 0x5b,0x5b,0x5b,0x5a,0x57,0x57,0x5a,0x5d,0x5c,0x5b,0x5a,0x5a,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x60,0x60,
+ 0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x68,0x68,0x68,0x67,0x67,
+ 0x67,0x66,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x67,0x69,0x69,0x69,0x68,0x68,
+ 0x68,0x68,0x68,0x67,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6b,0x69,0x6a,0x6c,0x6d,
+ 0x6d,0x6e,0x6e,0x6d,0x6e,0x6e,0x6f,0x6f,0x6f,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x6f,0x70,0x70,0x71,0x71,0x71,0x71,
+ 0x72,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x76,
+ 0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x77,0x77,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x79,0x79,0x78,0x79,0x7a,0x7b,
+ 0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7b,
+ 0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,
+ 0x80,0x80,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x83,0x83,0x83,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x87,0x87,
+ 0x87,0x88,0x88,0x88,0x88,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x89,0x89,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,
+ 0x8a,0x8a,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8d,
+ 0x8d,0x82,0x88,0xa7,0x8d,0x53,0x19,0x00,0x02,0x02,0x00,0x03,0x04,0x01,0x00,
+ 0x00,0x00,0x00,0x02,0x01,0x03,0x01,0x3a,0xa8,0xa5,0x82,0x8d,0x92,0x91,0x90,
+ 0x90,0x8f,0x8f,0x8f,0x8f,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x90,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x94,0x94,0x94,0x94,
+ 0x93,0x92,0x93,0x93,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x93,0x93,0x93,0x94,
+ 0x94,0x94,0x93,0x92,0x93,0x93,0x92,0x92,0x92,0x93,0x93,0x93,0x93,0x93,0x93,
+ 0x94,0x94,0x94,0x93,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x95,0x95,0x95,0x95,0x97,0x97,0x97,
+ 0x98,0x98,0x98,0x97,0xc8,0x46,0x46,0x45,0x45,0x46,0x46,0x46,0x48,0x48,0x49,
+ 0x48,0x48,0x48,0x48,0x4a,0x4a,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,0x50,0x4f,
+ 0x4e,0x4e,0x4f,0x4f,0x4f,0x50,0x50,0x51,0x51,0x50,0x51,0x51,0x51,0x52,0x53,
+ 0x53,0x53,0x53,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x56,0x56,
+ 0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x59,0x58,0x57,0x58,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x61,0x62,0x62,
+ 0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,
+ 0x66,0x66,0x66,0x66,0x66,0x67,0x68,0x69,0x69,0x69,0x69,0x68,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,0x6c,0x6b,0x6b,
+ 0x6b,0x6c,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6d,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,
+ 0x70,0x71,0x71,0x71,0x70,0x70,0x70,0x70,0x71,0x71,0x72,0x72,0x73,0x74,0x74,
+ 0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x74,0x74,0x75,
+ 0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,0x79,0x78,
+ 0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x79,0x79,0x7a,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,
+ 0x7c,0x7d,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7d,0x7d,0x7e,
+ 0x7d,0x7d,0x7e,0x7f,0x7f,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x83,0x83,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x85,0x85,0x86,0x86,0x86,
+ 0x87,0x87,0x87,0x88,0x87,0x87,0x87,0x89,0x89,0x88,0x88,0x87,0x87,0x87,0x87,
+ 0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x89,0x89,0x8a,0x8a,0x8a,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8c,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8c,
+ 0x8c,0x8c,0x8d,0x8d,0x8d,0x8c,0x8c,0x8c,0x8c,0x8b,0x8a,0x8b,0x8d,0x8d,0x8d,
+ 0x8d,0x8c,0x8a,0x86,0x8d,0xa3,0x91,0x61,0x20,0x00,0x02,0x02,0x01,0x03,0x04,
+ 0x03,0x01,0x00,0x01,0x01,0x00,0x01,0x05,0x00,0x36,0xa5,0xa6,0x87,0x8f,0x93,
+ 0x91,0x91,0x92,0x91,0x91,0x90,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x92,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x93,0x94,0x94,0x94,
+ 0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x95,0x95,0x96,0x96,
+ 0x96,0x96,0x96,0x96,0x96,0x96,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,
+ 0x97,0x97,0x96,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x95,0x95,
+ 0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x97,
+ 0x98,0x98,0x98,0x98,0x97,0x96,0xc8,0x47,0x47,0x46,0x46,0x46,0x47,0x48,0x48,
+ 0x49,0x4a,0x49,0x48,0x48,0x48,0x4a,0x4a,0x4a,0x4b,0x4b,0x4b,0x4a,0x4b,0x4b,
+ 0x4c,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,
+ 0x50,0x50,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x51,0x50,0x50,0x51,0x52,0x53,
+ 0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x56,
+ 0x56,0x56,0x55,0x56,0x56,0x57,0x57,0x58,0x58,0x57,0x57,0x58,0x59,0x59,0x57,
+ 0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5b,0x5b,0x5c,0x5d,0x5d,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x60,0x61,0x61,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x64,0x64,0x64,
+ 0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x67,0x67,0x68,0x68,0x67,
+ 0x68,0x67,0x66,0x67,0x67,0x67,0x67,0x69,0x6a,0x6b,0x6c,0x6b,0x6a,0x69,0x69,
+ 0x6a,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6c,0x6d,0x6d,0x6f,0x70,0x70,0x6f,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,
+ 0x70,0x71,0x72,0x73,0x73,0x72,0x71,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,
+ 0x75,0x75,0x75,0x75,0x74,0x74,0x74,0x75,0x75,0x76,0x76,0x77,0x77,0x76,0x75,
+ 0x74,0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7b,
+ 0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,0x7b,0x7b,0x7b,0x7c,0x7e,0x7e,0x7e,
+ 0x7d,0x7d,0x7e,0x7f,0x7d,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7e,0x7e,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x80,0x81,0x82,0x82,0x82,0x81,0x81,0x80,0x80,0x80,0x80,
+ 0x81,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x84,
+ 0x84,0x84,0x85,0x85,0x86,0x86,0x86,0x87,0x87,0x87,0x87,0x87,0x86,0x86,0x86,
+ 0x87,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x89,0x89,0x88,
+ 0x88,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8a,0x8a,0x8b,0x8a,0x8b,0x8b,0x8a,0x8a,0x8c,0x8c,0x8a,
+ 0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x8f,0x8d,0x8d,0x8d,0x8d,0x8d,0x8c,0x8d,0x8e,
+ 0x8f,0x8f,0x8d,0x8d,0x8d,0x88,0x8e,0xa3,0x93,0x67,0x23,0x00,0x03,0x03,0x01,
+ 0x03,0x03,0x03,0x01,0x00,0x02,0x02,0x00,0x01,0x03,0x00,0x32,0xa2,0xa7,0x8d,
+ 0x91,0x94,0x92,0x94,0x95,0x94,0x92,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,
+ 0x92,0x92,0x92,0x93,0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,
+ 0x94,0x94,0x94,0x95,0x95,0x96,0x96,0x97,0x97,0x97,0x97,0x96,0x96,0x96,0x96,
+ 0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x97,0x95,0x95,0x95,0x95,0x95,0x96,0x97,
+ 0x98,0x98,0x98,0x98,0x98,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x96,0x96,0x96,0x96,0x97,0x97,0x98,0x98,0x98,0x98,
+ 0x97,0x96,0x96,0x96,0x97,0x97,0x97,0x97,0x96,0x96,0x96,0x97,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x96,0xc8,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x4a,0x4a,0x4b,0x4a,0x4a,0x49,0x49,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x4f,0x4e,0x4e,0x4e,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x53,0x53,0x53,0x53,0x53,0x52,0x52,0x53,
+ 0x53,0x54,0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x56,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x59,0x59,0x59,0x5a,
+ 0x59,0x59,0x5a,0x5b,0x5c,0x5b,0x5a,0x5a,0x5b,0x5d,0x5d,0x5d,0x5c,0x5b,0x5c,
+ 0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x62,0x61,0x60,0x60,0x61,0x61,
+ 0x61,0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x63,0x62,0x62,0x63,0x64,0x64,0x65,
+ 0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x68,0x68,0x68,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6a,
+ 0x6a,0x6b,0x6c,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,
+ 0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x72,0x72,0x72,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,
+ 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x78,0x78,
+ 0x77,0x76,0x76,0x78,0x78,0x7a,0x7a,0x79,0x79,0x79,0x79,0x79,0x79,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7f,0x7f,0x7e,0x7d,0x7d,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x7f,0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x80,0x81,
+ 0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x83,0x84,0x83,0x83,0x82,0x82,0x82,0x82,
+ 0x82,0x81,0x82,0x84,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x89,0x87,
+ 0x87,0x88,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8d,0x8c,0x8b,0x8d,
+ 0x8e,0x8d,0x8c,0x8d,0x8e,0x8d,0x8b,0x8b,0x8d,0x8d,0x8d,0x8a,0x8a,0x8b,0x8e,
+ 0x8d,0x87,0x88,0x8a,0x8d,0x8f,0x90,0x90,0x90,0x8f,0x8f,0x8f,0x8f,0x8e,0x8e,
+ 0x8e,0x90,0x91,0x90,0x8f,0x91,0x92,0x8a,0x8d,0xa7,0x95,0x65,0x21,0x00,0x06,
+ 0x05,0x02,0x03,0x03,0x01,0x01,0x02,0x03,0x03,0x03,0x01,0x00,0x00,0x2d,0x9f,
+ 0xa9,0x92,0x93,0x94,0x94,0x95,0x95,0x95,0x94,0x93,0x93,0x94,0x94,0x94,0x94,
+ 0x94,0x95,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x97,0x98,0x98,0x98,0x97,0x97,0x97,
+ 0x97,0x97,0x98,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,
+ 0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,
+ 0x99,0x99,0x99,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,
+ 0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x97,0xc8,0x49,0x49,0x48,0x48,
+ 0x48,0x49,0x4a,0x4a,0x4b,0x4c,0x4b,0x4a,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x4f,
+ 0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x53,0x53,0x54,0x54,0x54,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x54,0x53,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x5a,0x5a,0x59,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5c,0x5d,0x5c,0x5a,0x5b,0x5b,0x5d,0x5e,0x5e,0x5d,
+ 0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x62,0x62,0x62,0x61,0x62,
+ 0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x63,0x64,0x64,0x63,0x63,0x64,0x65,
+ 0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6b,
+ 0x6a,0x6a,0x6b,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x70,0x71,0x72,0x73,0x73,0x73,0x71,0x70,0x70,
+ 0x70,0x70,0x72,0x73,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x77,
+ 0x76,0x76,0x76,0x76,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x78,0x78,0x78,0x77,
+ 0x78,0x79,0x78,0x77,0x77,0x78,0x7a,0x7b,0x7a,0x79,0x7a,0x7a,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7e,0x80,0x81,0x7f,0x7f,0x7e,
+ 0x7f,0x7f,0x80,0x7f,0x7f,0x7f,0x7f,0x81,0x80,0x7f,0x7f,0x80,0x80,0x81,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x83,
+ 0x83,0x83,0x84,0x83,0x84,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x89,0x89,0x88,0x88,0x88,0x89,0x89,
+ 0x8a,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,
+ 0x8c,0x8b,0x8b,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8c,0x8c,
+ 0x8d,0x90,0x8e,0x8a,0x8b,0x8e,0x91,0x91,0x8f,0x90,0x91,0x90,0x90,0x91,0x91,
+ 0x90,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x93,0x8a,0x90,0xac,0x91,0x57,0x1b,
+ 0x00,0x06,0x05,0x01,0x03,0x03,0x02,0x01,0x02,0x02,0x03,0x03,0x02,0x00,0x00,
+ 0x2a,0x98,0xa9,0x98,0x95,0x93,0x95,0x95,0x95,0x95,0x95,0x94,0x94,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x97,
+ 0x97,0x97,0x96,0x97,0x97,0x96,0x96,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x97,
+ 0x97,0x98,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x97,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,
+ 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x99,
+ 0x99,0x9a,0x9a,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x99,0x99,0x99,0x98,0x98,0x98,0x99,0x99,0x98,0x98,0x98,0xc8,0x4a,0x4a,
+ 0x49,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4c,0x4c,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x53,0x54,0x55,0x54,0x54,
+ 0x53,0x53,0x53,0x53,0x55,0x56,0x55,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x59,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5d,0x5c,0x5b,0x5b,0x5c,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x62,0x62,
+ 0x62,0x62,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,0x63,0x65,0x65,0x64,0x65,
+ 0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6c,
+ 0x6c,0x6b,0x6b,0x6b,0x6c,0x6d,0x6f,0x6f,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x71,0x71,0x71,0x71,0x72,0x72,0x71,0x72,0x72,0x73,0x73,0x73,0x72,
+ 0x71,0x70,0x70,0x71,0x73,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x76,0x76,0x77,
+ 0x78,0x78,0x77,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x78,0x79,0x79,
+ 0x78,0x77,0x79,0x7a,0x78,0x78,0x78,0x7a,0x7b,0x7b,0x7a,0x79,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7e,0x7f,0x81,0x82,0x80,
+ 0x7f,0x7f,0x7f,0x80,0x80,0x80,0x7f,0x7f,0x80,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
+ 0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x87,0x87,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x88,0x88,0x88,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8c,0x8c,0x8c,0x8c,0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8e,0x90,0x8d,0x8d,0x8f,0x8f,0x8f,0x8d,0x8d,0x90,0x8e,0x8d,0x8d,0x8e,
+ 0x8e,0x8e,0x8e,0x8f,0x8f,0x8e,0x90,0x92,0x95,0x93,0x8d,0x8f,0x91,0x91,0x91,
+ 0x91,0x92,0x91,0x90,0x91,0x91,0x93,0x93,0x92,0x91,0x91,0x8a,0x92,0xb1,0x8d,
+ 0x48,0x15,0x00,0x05,0x04,0x01,0x02,0x03,0x02,0x02,0x01,0x00,0x01,0x03,0x03,
+ 0x03,0x00,0x28,0x91,0xa8,0x9f,0x95,0x91,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x95,0x95,0x95,0x95,0x95,0x96,0x97,
+ 0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x98,0x98,0x98,0x99,0x99,0x99,
+ 0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x98,0x98,0x98,0x99,
+ 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+ 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x98,0xc8,
+ 0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x50,0x50,
+ 0x51,0x52,0x52,0x51,0x51,0x51,0x52,0x53,0x53,0x53,0x52,0x52,0x53,0x53,0x54,
+ 0x54,0x54,0x53,0x53,0x53,0x54,0x55,0x56,0x55,0x55,0x55,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5a,0x5a,0x5b,0x5d,0x5d,0x5c,0x5c,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x60,0x60,0x61,0x61,0x61,0x61,0x61,0x60,0x60,0x60,0x61,
+ 0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x63,0x63,0x63,0x63,0x64,0x65,0x65,
+ 0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,0x6e,0x6f,0x70,0x70,
+ 0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x71,0x71,0x72,0x72,0x72,0x73,0x73,
+ 0x73,0x72,0x71,0x71,0x71,0x72,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,
+ 0x76,0x77,0x78,0x78,0x77,0x76,0x76,0x77,0x77,0x78,0x78,0x78,0x78,0x79,0x7a,
+ 0x7b,0x7b,0x79,0x78,0x7a,0x7b,0x7a,0x78,0x78,0x7b,0x7c,0x7c,0x7b,0x7a,0x7b,
+ 0x7c,0x7d,0x7d,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x81,
+ 0x81,0x80,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x7f,0x7f,0x80,0x81,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
+ 0x84,0x85,0x86,0x86,0x86,0x86,0x87,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x87,0x86,0x87,0x87,0x88,0x89,0x89,0x89,0x8a,0x8a,0x89,0x88,
+ 0x89,0x89,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8c,0x8d,0x8d,0x8d,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8e,0x8f,0x8d,0x8d,0x8f,0x90,0x8d,0x8d,0x8e,0x91,0x90,0x8d,0x8f,0x91,
+ 0x90,0x90,0x91,0x91,0x90,0x8d,0x8d,0x8f,0x91,0x91,0x93,0x91,0x8e,0x90,0x92,
+ 0x91,0x92,0x93,0x93,0x93,0x91,0x91,0x92,0x93,0x94,0x93,0x92,0x91,0x8c,0x95,
+ 0xb5,0x8e,0x45,0x15,0x00,0x05,0x04,0x03,0x03,0x04,0x03,0x02,0x00,0x00,0x00,
+ 0x02,0x05,0x07,0x00,0x26,0x89,0xa6,0xa3,0x96,0x91,0x94,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x97,0x97,0x97,0x96,0x96,0x96,0x96,0x97,
+ 0x97,0x98,0x98,0x98,0x98,0x99,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x99,0x99,0x99,0x99,
+ 0x9a,0x9a,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x99,0x99,0x99,
+ 0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,
+ 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9b,
+ 0x9b,0xc8,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x50,
+ 0x50,0x51,0x52,0x52,0x52,0x52,0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x52,0x53,
+ 0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x56,0x55,0x56,0x57,0x57,
+ 0x57,0x57,0x58,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5c,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x5e,0x5e,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x61,
+ 0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x68,0x68,0x68,0x68,0x68,0x68,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6b,0x6b,0x6b,0x6b,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,
+ 0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x72,0x72,0x72,0x72,0x73,0x73,0x73,
+ 0x74,0x74,0x74,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x75,0x75,
+ 0x75,0x76,0x77,0x78,0x78,0x79,0x78,0x77,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7c,0x7b,0x79,0x7b,0x7c,0x7b,0x7a,0x7a,0x7c,0x7e,0x7d,0x7b,
+ 0x7b,0x7c,0x7d,0x7f,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x80,0x81,0x81,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82,
+ 0x83,0x83,0x83,0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,
+ 0x85,0x85,0x85,0x86,0x86,0x87,0x88,0x88,0x87,0x87,0x87,0x86,0x86,0x86,0x86,
+ 0x86,0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,
+ 0x8e,0x8e,0x8e,0x8e,0x8d,0x8d,0x8e,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8f,
+ 0x8f,0x8f,0x8f,0x8f,0x91,0x8f,0x8e,0x90,0x91,0x8f,0x8f,0x90,0x91,0x91,0x90,
+ 0x91,0x92,0x90,0x90,0x92,0x92,0x91,0x90,0x90,0x91,0x91,0x90,0x92,0x92,0x91,
+ 0x91,0x93,0x93,0x93,0x95,0x95,0x94,0x92,0x92,0x93,0x94,0x95,0x94,0x94,0x94,
+ 0x8d,0x96,0xb5,0x94,0x51,0x1a,0x00,0x05,0x04,0x02,0x03,0x03,0x03,0x01,0x01,
+ 0x00,0x00,0x02,0x05,0x07,0x00,0x24,0x86,0xa5,0xa5,0x96,0x90,0x95,0x96,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x96,0x97,0x97,0x97,0x98,0x98,0x97,0x97,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x99,0x99,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,
+ 0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9c,0x9c,0xc8,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x50,0x50,
+ 0x50,0x50,0x51,0x52,0x53,0x53,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x57,0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x5e,0x5c,0x5c,0x5d,0x5e,
+ 0x5e,0x5f,0x60,0x61,0x61,0x60,0x5e,0x5e,0x5f,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x63,0x64,0x63,0x63,0x63,0x63,0x64,0x64,0x65,0x65,0x65,0x66,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x68,0x68,0x69,0x69,0x69,0x6a,
+ 0x6a,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,
+ 0x71,0x72,0x73,0x73,0x73,0x72,0x72,0x71,0x71,0x71,0x72,0x72,0x74,0x74,0x74,
+ 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,0x76,0x74,0x74,0x76,0x76,0x77,
+ 0x77,0x77,0x77,0x77,0x77,0x78,0x7a,0x7b,0x79,0x78,0x79,0x7b,0x7b,0x7b,0x7c,
+ 0x7d,0x7c,0x7c,0x7c,0x7c,0x7c,0x7b,0x7b,0x7c,0x7d,0x7c,0x7b,0x7c,0x7e,0x7f,
+ 0x7e,0x7d,0x7c,0x7d,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x80,0x80,0x81,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x83,
+ 0x83,0x83,0x83,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x89,0x88,0x88,0x87,0x87,0x89,0x89,
+ 0x89,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,
+ 0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8e,0x8f,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+ 0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,0x90,0x90,0x8f,0x8e,0x8e,0x8e,0x8f,0x8f,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x90,0x90,0x92,0x93,0x92,0x90,
+ 0x91,0x95,0x94,0x91,0x8f,0x90,0x94,0x92,0x91,0x96,0x96,0x92,0x90,0x90,0x93,
+ 0x94,0x95,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x93,0x93,0x95,0x95,0x95,0x94,
+ 0x95,0x96,0x8d,0x94,0xb1,0x9c,0x67,0x21,0x00,0x04,0x03,0x00,0x02,0x03,0x00,
+ 0x01,0x03,0x02,0x02,0x03,0x05,0x05,0x00,0x22,0x86,0xa6,0xa5,0x96,0x91,0x97,
+ 0x98,0x97,0x97,0x97,0x97,0x96,0x95,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x99,
+ 0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x99,
+ 0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9d,0x9d,0xc8,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4b,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,0x4f,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x52,0x53,0x53,0x52,0x52,0x53,0x53,0x53,0x54,0x54,
+ 0x55,0x55,0x55,0x54,0x54,0x53,0x54,0x55,0x56,0x57,0x57,0x57,0x56,0x56,0x57,
+ 0x57,0x57,0x58,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5c,0x5b,0x5b,
+ 0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x60,0x5f,0x5d,0x5d,
+ 0x5e,0x5f,0x60,0x60,0x62,0x62,0x62,0x61,0x5f,0x5f,0x60,0x61,0x62,0x62,0x62,
+ 0x63,0x63,0x63,0x63,0x63,0x64,0x64,0x64,0x65,0x64,0x64,0x64,0x65,0x65,0x65,
+ 0x66,0x67,0x67,0x67,0x67,0x66,0x66,0x66,0x66,0x67,0x67,0x68,0x69,0x69,0x69,
+ 0x6a,0x6b,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,
+ 0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,0x6e,0x6e,0x6f,0x70,0x70,0x71,0x71,0x71,0x70,
+ 0x71,0x72,0x72,0x73,0x74,0x74,0x74,0x73,0x72,0x71,0x72,0x72,0x73,0x74,0x74,
+ 0x75,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,0x76,0x76,0x77,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7b,0x7b,0x7b,0x7a,0x7b,0x7b,0x7c,
+ 0x7d,0x7e,0x7e,0x7d,0x7d,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,
+ 0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x80,0x80,0x7f,0x7f,0x7f,0x80,0x80,0x81,
+ 0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x85,0x85,0x85,0x85,
+ 0x85,0x85,0x85,0x83,0x83,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x8a,0x8a,0x89,0x88,0x89,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x90,0x90,0x90,0x90,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x93,
+ 0x93,0x93,0x93,0x93,0x93,0x93,0x94,0x93,0x8f,0x8b,0x8a,0x8f,0x8e,0x8a,0x91,
+ 0x97,0x96,0x95,0x94,0x94,0x94,0x94,0x95,0x96,0x96,0x95,0x94,0x94,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x8d,0x93,0xaf,0xa0,0x6f,0x24,0x00,0x03,0x03,0x00,0x01,
+ 0x02,0x00,0x02,0x03,0x01,0x02,0x05,0x05,0x03,0x00,0x23,0x87,0xa7,0xa6,0x97,
+ 0x91,0x99,0x99,0x98,0x98,0x98,0x98,0x97,0x96,0x98,0x98,0x99,0x98,0x98,0x99,
+ 0x99,0x9a,0x9a,0x99,0x9a,0x9b,0x9c,0x9c,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,
+ 0x9b,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,0x9e,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9d,0x9d,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0x9f,0x9f,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0x9e,0x9e,0xc8,0x49,0x49,0x4a,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4c,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,
+ 0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x53,0x53,0x52,0x52,0x53,0x53,0x54,
+ 0x55,0x55,0x55,0x56,0x56,0x55,0x55,0x54,0x55,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x58,0x5a,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,
+ 0x5b,0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x61,0x60,
+ 0x5e,0x5e,0x5e,0x60,0x61,0x61,0x62,0x62,0x62,0x62,0x60,0x61,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x65,0x66,0x67,0x68,0x68,0x68,0x68,0x67,0x67,0x67,0x68,0x69,0x69,0x69,
+ 0x69,0x6a,0x6b,0x6c,0x6d,0x6d,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6e,0x6e,0x6e,0x70,0x70,0x70,0x6f,0x6e,0x6e,0x6e,0x70,0x71,0x72,0x72,
+ 0x72,0x71,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x73,0x73,0x72,0x73,0x73,0x74,
+ 0x74,0x75,0x76,0x76,0x77,0x77,0x76,0x76,0x76,0x76,0x76,0x77,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x79,0x79,0x79,0x78,0x79,0x7a,0x7b,0x7b,0x7c,0x7b,0x7b,0x7b,
+ 0x7c,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7c,0x7c,0x7c,0x7d,0x7e,0x7d,0x7d,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x81,0x81,0x80,0x80,0x80,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x84,0x85,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x84,0x83,0x85,0x86,0x86,0x87,0x87,0x86,0x86,0x86,
+ 0x87,0x88,0x89,0x89,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,
+ 0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,
+ 0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x92,0x92,0x91,0x90,0x94,0x95,
+ 0x93,0x93,0x93,0x96,0x95,0x91,0x91,0x94,0x97,0x96,0x91,0x8d,0x8d,0x90,0x8e,
+ 0x8a,0x93,0x9b,0x98,0x95,0x92,0x94,0x95,0x95,0x95,0x96,0x96,0x96,0x95,0x95,
+ 0x95,0x96,0x96,0x95,0x95,0x94,0x8d,0x95,0xaf,0xa0,0x70,0x24,0x00,0x02,0x02,
+ 0x00,0x01,0x02,0x00,0x03,0x04,0x00,0x00,0x05,0x04,0x01,0x00,0x23,0x83,0xa6,
+ 0xa8,0x98,0x93,0x9c,0x9c,0x99,0x98,0x99,0x99,0x98,0x97,0x98,0x9a,0x9a,0x99,
+ 0x98,0x9a,0x9b,0x9b,0x9b,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x9a,0x9b,
+ 0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9e,0x9e,0x9e,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0x9f,0xc8,0x4a,0x4b,0x4b,0x4c,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4f,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x52,0x53,0x53,0x52,0x52,0x53,
+ 0x53,0x54,0x56,0x56,0x56,0x56,0x56,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x58,
+ 0x58,0x57,0x57,0x59,0x5b,0x5a,0x5a,0x5b,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x61,0x60,0x5e,0x5e,0x5f,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x61,0x62,0x63,
+ 0x63,0x62,0x62,0x63,0x63,0x64,0x64,0x65,0x65,0x65,0x64,0x65,0x67,0x67,0x66,
+ 0x65,0x65,0x65,0x65,0x66,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x70,0x71,
+ 0x73,0x73,0x73,0x72,0x71,0x71,0x72,0x73,0x74,0x74,0x74,0x74,0x73,0x73,0x74,
+ 0x74,0x74,0x75,0x76,0x77,0x78,0x78,0x78,0x77,0x76,0x76,0x77,0x78,0x78,0x78,
+ 0x78,0x79,0x79,0x78,0x79,0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,
+ 0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,0x7e,
+ 0x7d,0x7f,0x81,0x82,0x80,0x7f,0x7f,0x80,0x81,0x80,0x80,0x82,0x82,0x81,0x81,
+ 0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x84,0x84,0x85,0x86,0x86,
+ 0x86,0x87,0x88,0x88,0x87,0x86,0x86,0x85,0x84,0x85,0x86,0x86,0x87,0x87,0x87,
+ 0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x8a,0x8b,0x8c,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8f,0x90,0x90,0x90,0x90,0x91,0x91,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x92,
+ 0x92,0x91,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x93,0x93,0x92,0x91,0x92,0x93,
+ 0x92,0x93,0x94,0x94,0x95,0x94,0x94,0x94,0x94,0x93,0x8e,0x98,0xab,0xb1,0xb2,
+ 0xb5,0xb0,0xa4,0x95,0x8d,0x97,0x98,0x94,0x95,0x96,0x96,0x96,0x97,0x97,0x96,
+ 0x95,0x95,0x96,0x96,0x96,0x95,0x94,0x93,0x90,0x98,0xb3,0x9e,0x69,0x24,0x00,
+ 0x03,0x03,0x02,0x04,0x04,0x02,0x03,0x03,0x00,0x00,0x03,0x04,0x03,0x00,0x1f,
+ 0x70,0x9e,0xae,0x9a,0x93,0x9c,0x9c,0x9a,0x99,0x9a,0x9b,0x99,0x98,0x99,0x9b,
+ 0x9b,0x9b,0x9a,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9c,0x9d,0x9d,0x9d,0x9c,0x9c,
+ 0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0x9f,0xa0,0x9f,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0x9e,
+ 0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9e,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,0xa0,0xa0,0xc8,0x4b,0x4b,0x4c,
+ 0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x4f,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x51,0x51,0x52,0x53,0x53,0x52,
+ 0x52,0x53,0x53,0x55,0x56,0x57,0x57,0x56,0x55,0x55,0x56,0x56,0x56,0x57,0x57,
+ 0x58,0x58,0x59,0x59,0x59,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5a,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x61,0x60,0x5e,0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x63,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x66,0x66,0x65,0x66,0x67,
+ 0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x69,0x69,0x6a,0x6b,0x6b,0x6b,
+ 0x6a,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x72,0x73,0x74,0x73,0x72,0x72,0x72,0x73,0x74,0x74,0x75,0x75,0x74,0x74,
+ 0x74,0x74,0x75,0x75,0x76,0x76,0x78,0x78,0x79,0x79,0x78,0x77,0x77,0x78,0x78,
+ 0x79,0x79,0x7a,0x7b,0x7b,0x7a,0x79,0x79,0x7a,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,
+ 0x7c,0x7d,0x7f,0x7f,0x7f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,0x7f,0x80,0x80,0x81,
+ 0x81,0x7f,0x7e,0x80,0x82,0x83,0x81,0x7f,0x7f,0x82,0x82,0x81,0x81,0x83,0x82,
+ 0x82,0x82,0x82,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x87,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8b,
+ 0x8b,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+ 0x8e,0x8e,0x8f,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x90,0x91,0x91,0x91,
+ 0x93,0x94,0x93,0x92,0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x94,0x94,0x93,0x92,
+ 0x93,0x94,0x92,0x92,0x93,0x94,0x95,0x94,0x95,0x97,0x96,0x96,0x98,0x9b,0x9e,
+ 0x9b,0x95,0x90,0x98,0xa7,0x9c,0x8f,0x95,0x96,0x95,0x96,0x98,0x97,0x97,0x98,
+ 0x98,0x97,0x96,0x96,0x97,0x98,0x97,0x95,0x95,0x95,0x91,0x99,0xb4,0x9e,0x69,
+ 0x24,0x00,0x04,0x03,0x01,0x04,0x05,0x02,0x02,0x03,0x02,0x01,0x02,0x03,0x03,
+ 0x00,0x17,0x58,0x94,0xb6,0x9d,0x93,0x9e,0x9e,0x9b,0x9b,0x9b,0x9c,0x9a,0x98,
+ 0x9a,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9c,0x9b,0x9c,0x9c,0x9e,0x9f,0x9f,
+ 0x9d,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,
+ 0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,
+ 0xa0,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa2,0xa1,0xa1,0xa1,0xa1,
+ 0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa1,0xa1,0xa1,0xc8,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,0x4d,0x50,0x50,
+ 0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x51,0x51,0x52,0x53,
+ 0x53,0x52,0x52,0x53,0x53,0x54,0x56,0x57,0x57,0x56,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5d,0x5d,0x5e,0x5e,0x5f,0x60,0x60,0x60,0x5f,
+ 0x5f,0x60,0x60,0x60,0x61,0x60,0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x63,
+ 0x63,0x63,0x62,0x62,0x62,0x61,0x61,0x61,0x62,0x63,0x65,0x66,0x67,0x68,0x68,
+ 0x67,0x66,0x67,0x68,0x69,0x69,0x69,0x68,0x68,0x68,0x68,0x69,0x69,0x6a,0x6d,
+ 0x6d,0x6c,0x6b,0x6b,0x6a,0x6a,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x70,0x70,0x71,0x71,0x72,
+ 0x72,0x72,0x73,0x73,0x74,0x74,0x73,0x72,0x73,0x74,0x75,0x76,0x78,0x77,0x77,
+ 0x76,0x75,0x75,0x75,0x76,0x76,0x77,0x78,0x78,0x7a,0x7b,0x7a,0x79,0x79,0x79,
+ 0x79,0x7a,0x7b,0x7b,0x7c,0x7c,0x7b,0x7b,0x7a,0x7a,0x7b,0x7b,0x7d,0x7e,0x7e,
+ 0x7d,0x7c,0x7c,0x7f,0x80,0x7f,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x80,0x81,0x82,
+ 0x83,0x83,0x83,0x7f,0x7f,0x82,0x84,0x86,0x82,0x7f,0x80,0x82,0x85,0x83,0x82,
+ 0x84,0x84,0x83,0x83,0x83,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x87,0x87,0x88,0x88,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x88,0x87,0x87,0x86,0x89,0x8c,0x8b,0x8b,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+ 0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,
+ 0x91,0x90,0x90,0x90,0x91,0x91,0x92,0x92,0x93,0x92,0x92,0x91,0x91,0x91,0x91,
+ 0x92,0x93,0x94,0x95,0x94,0x94,0x93,0x93,0x94,0x94,0x94,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x94,0x94,0x93,0x93,0x94,0x95,0x96,0x97,0x98,0x98,0x9c,0xae,
+ 0x9b,0x69,0x51,0x41,0x2e,0x4c,0x8f,0xa2,0xa0,0x92,0x8f,0x95,0x98,0x99,0x98,
+ 0x98,0x98,0x98,0x98,0x97,0x97,0x98,0x98,0x98,0x96,0x97,0x98,0x91,0x97,0xb2,
+ 0xa0,0x6d,0x24,0x00,0x04,0x03,0x00,0x02,0x03,0x01,0x02,0x03,0x04,0x03,0x01,
+ 0x03,0x04,0x00,0x0e,0x3d,0x88,0xbe,0xa0,0x93,0x9f,0x9f,0x9c,0x9c,0x9c,0x9d,
+ 0x9b,0x99,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9d,0x9c,0x9c,0x9d,0x9f,
+ 0xa0,0xa0,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0x9f,0x9f,0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,
+ 0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,
+ 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa1,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xc8,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x50,0x50,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x51,0x51,
+ 0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x56,0x57,0x57,0x56,0x55,0x56,0x57,
+ 0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,
+ 0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5d,0x5e,0x5e,0x5e,0x5f,0x60,0x60,
+ 0x5f,0x5e,0x5f,0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x62,
+ 0x62,0x62,0x62,0x63,0x63,0x64,0x64,0x64,0x64,0x64,0x65,0x65,0x66,0x66,0x67,
+ 0x68,0x68,0x67,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,
+ 0x6b,0x6c,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0x6c,0x6c,0x6d,0x6d,0x6e,0x6e,0x6d,
+ 0x6d,0x6e,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x71,0x70,0x71,
+ 0x72,0x73,0x74,0x74,0x74,0x74,0x73,0x74,0x74,0x74,0x74,0x75,0x76,0x77,0x78,
+ 0x78,0x78,0x77,0x77,0x77,0x77,0x78,0x78,0x79,0x78,0x79,0x7a,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x7b,0x7b,0x7b,0x7c,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,
+ 0x7d,0x7e,0x7d,0x7d,0x7d,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,
+ 0x81,0x82,0x82,0x82,0x82,0x81,0x81,0x83,0x85,0x86,0x84,0x82,0x82,0x83,0x85,
+ 0x85,0x85,0x84,0x84,0x83,0x83,0x84,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x87,0x88,0x89,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x89,0x88,0x88,0x89,0x8a,0x8a,0x8b,0x8d,0x8d,0x8d,
+ 0x8d,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,
+ 0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x8f,0x90,0x90,0x90,0x90,0x90,0x91,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x94,0x94,0x93,0x93,0x93,0x92,
+ 0x92,0x93,0x93,0x94,0x95,0x95,0x95,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x96,
+ 0x96,0x96,0x95,0x95,0x95,0x96,0x95,0x95,0x95,0x97,0x99,0x98,0x96,0x93,0x99,
+ 0xa0,0xa0,0x78,0x2e,0x1a,0x16,0x09,0x19,0x46,0x84,0xab,0x98,0x91,0x96,0x98,
+ 0x99,0x98,0x97,0x97,0x99,0x9a,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x91,
+ 0x97,0xb3,0xa3,0x72,0x24,0x00,0x05,0x05,0x02,0x01,0x01,0x03,0x03,0x03,0x02,
+ 0x03,0x05,0x07,0x06,0x00,0x0a,0x35,0x85,0xc0,0xa2,0x93,0x9d,0x9e,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9d,0x9e,0x9f,0x9e,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9e,0x9f,0x9f,0x9e,0x9f,0x9f,0x9f,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0x9f,
+ 0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa1,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa3,
+ 0xa3,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa2,0xa2,0xa2,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xc8,0x4c,0x4c,0x4c,0x4c,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4f,0x4f,
+ 0x4f,0x50,0x50,0x50,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,
+ 0x51,0x51,0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x57,0x57,0x56,0x55,
+ 0x57,0x57,0x58,0x59,0x59,0x58,0x58,0x58,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,0x5e,0x5e,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x60,0x60,0x5f,0x5e,0x5f,0x62,0x64,0x64,0x62,0x62,0x65,0x65,0x65,0x64,0x64,
+ 0x64,0x63,0x62,0x62,0x62,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,
+ 0x66,0x67,0x67,0x67,0x68,0x68,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6a,0x6a,0x6b,
+ 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,
+ 0x6f,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x72,
+ 0x72,0x72,0x73,0x74,0x75,0x75,0x74,0x74,0x73,0x73,0x74,0x76,0x76,0x75,0x76,
+ 0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7b,0x7b,0x79,0x79,0x79,0x79,
+ 0x79,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x83,0x85,0x86,0x86,0x86,0x85,0x83,
+ 0x84,0x85,0x86,0x86,0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x85,0x86,0x86,0x86,
+ 0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x88,0x88,0x88,
+ 0x89,0x8a,0x8a,0x8b,0x8c,0x8c,0x8b,0x8a,0x89,0x89,0x8a,0x8c,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,
+ 0x8e,0x8e,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x90,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x93,0x94,0x94,0x95,0x95,0x95,0x94,
+ 0x94,0x94,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x97,
+ 0x97,0x97,0x97,0x97,0x97,0x95,0x97,0x98,0x96,0x96,0x98,0x9a,0x9b,0x99,0x95,
+ 0x91,0x9e,0xa0,0x7b,0x44,0x03,0x00,0x02,0x00,0x00,0x08,0x68,0xb3,0x9f,0x95,
+ 0x99,0x99,0x99,0x99,0x98,0x96,0x98,0x9b,0x9a,0x98,0x97,0x98,0x9a,0x99,0x99,
+ 0x98,0x91,0x98,0xb5,0xa4,0x73,0x24,0x00,0x05,0x06,0x03,0x01,0x01,0x05,0x05,
+ 0x03,0x00,0x01,0x07,0x08,0x06,0x00,0x0a,0x33,0x83,0xc1,0xa5,0x95,0x9b,0x9d,
+ 0x9d,0x9d,0x9c,0x9b,0x9c,0x9d,0x9f,0x9f,0x9d,0x9f,0xa0,0x9e,0x9d,0x9c,0x9d,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0x9f,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xc8,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4f,
+ 0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,
+ 0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x58,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,
+ 0x5c,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x60,
+ 0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x65,0x66,0x65,0x62,0x62,0x64,0x65,0x65,
+ 0x64,0x64,0x65,0x64,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x68,0x68,0x68,
+ 0x67,0x67,0x67,0x67,0x68,0x68,0x69,0x69,0x69,0x6a,0x6a,0x6a,0x6b,0x6b,0x6c,
+ 0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x73,
+ 0x73,0x73,0x74,0x74,0x74,0x75,0x76,0x76,0x75,0x74,0x74,0x74,0x75,0x77,0x77,
+ 0x76,0x77,0x78,0x79,0x79,0x78,0x78,0x78,0x78,0x78,0x79,0x7b,0x7b,0x7a,0x7a,
+ 0x7a,0x7a,0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7e,
+ 0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x82,0x81,
+ 0x81,0x81,0x80,0x80,0x80,0x81,0x81,0x82,0x83,0x84,0x85,0x86,0x86,0x86,0x86,
+ 0x85,0x83,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,
+ 0x87,0x88,0x88,0x88,0x88,0x89,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x89,
+ 0x89,0x89,0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,0x8c,0x8c,0x8c,0x8c,0x8d,0x8e,0x8f,
+ 0x8e,0x8e,0x8e,0x8f,0x8f,0x8f,0x8e,0x8e,0x8f,0x8f,0x90,0x90,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,
+ 0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x95,0x95,0x95,0x95,0x96,
+ 0x96,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x95,0x95,0x95,0x95,0x95,0x96,0x97,
+ 0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x97,0x98,0x98,0x94,0x96,0x9d,0x9a,0x95,
+ 0x95,0x99,0xa0,0xab,0x9a,0x3b,0x0a,0x09,0x03,0x00,0x06,0x05,0x0a,0x69,0xb5,
+ 0x9f,0x96,0x9d,0x9c,0x9c,0xa0,0x9c,0x95,0x98,0x99,0x98,0x97,0x97,0x9a,0x9c,
+ 0x9c,0x9b,0x99,0x93,0x9a,0xb5,0xa0,0x6a,0x24,0x00,0x03,0x02,0x00,0x03,0x04,
+ 0x03,0x03,0x03,0x03,0x02,0x02,0x03,0x04,0x00,0x0c,0x2f,0x80,0xc2,0xa8,0x98,
+ 0x9c,0x9e,0xa0,0x9f,0x9e,0x9d,0x9b,0x9a,0x9d,0xa0,0xa0,0xa0,0xa0,0xa0,0x9f,
+ 0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa1,0xa1,0xa0,0xa0,0xa1,0xa0,0xa0,0xa0,0xa1,
+ 0xa2,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa2,
+ 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xc8,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,
+ 0x4e,0x4f,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x58,0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5b,0x5c,0x5c,0x5d,0x5c,0x5b,
+ 0x5c,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x60,
+ 0x61,0x61,0x5f,0x60,0x62,0x63,0x63,0x62,0x63,0x65,0x65,0x65,0x62,0x62,0x64,
+ 0x65,0x65,0x64,0x64,0x65,0x65,0x65,0x64,0x65,0x67,0x67,0x67,0x67,0x68,0x68,
+ 0x68,0x68,0x68,0x67,0x68,0x68,0x69,0x69,0x6a,0x6b,0x6b,0x6a,0x6a,0x6a,0x6b,
+ 0x6c,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x72,0x72,0x71,0x71,0x71,0x72,0x72,0x73,
+ 0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x75,0x76,0x76,0x75,0x75,0x74,0x75,0x77,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x78,0x78,0x78,0x79,0x79,0x79,0x7b,0x7b,
+ 0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80,0x81,0x80,0x80,0x81,0x82,0x82,
+ 0x83,0x83,0x82,0x82,0x81,0x81,0x81,0x82,0x82,0x83,0x85,0x85,0x86,0x86,0x86,
+ 0x86,0x85,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x87,0x87,0x87,0x87,0x88,0x88,
+ 0x88,0x88,0x89,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,
+ 0x8e,0x8f,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x93,0x93,0x93,0x93,
+ 0x93,0x93,0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x96,0x96,0x96,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x95,0x95,0x95,0x96,
+ 0x96,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x97,0x98,0x9d,
+ 0x99,0x94,0x95,0x9c,0xa8,0xaf,0x92,0x20,0x00,0x09,0x07,0x03,0x07,0x05,0x08,
+ 0x62,0xae,0xa0,0x9a,0x9d,0x9c,0x9c,0x9e,0x9c,0x98,0x99,0x9a,0x99,0x9a,0x9c,
+ 0x9b,0x9a,0x98,0x98,0x98,0x94,0x9b,0xb3,0x9d,0x69,0x24,0x00,0x01,0x01,0x00,
+ 0x03,0x03,0x02,0x02,0x03,0x03,0x03,0x00,0x01,0x03,0x00,0x0a,0x28,0x7b,0xc2,
+ 0xaa,0x99,0x9b,0xa0,0xa3,0xa1,0x9f,0x9d,0x9d,0x9e,0x9e,0xa0,0xa1,0xa1,0xa0,
+ 0xa1,0xa0,0xa0,0x9f,0x9e,0x9f,0xa0,0xa2,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa5,0xa6,0xa6,0xa5,
+ 0xa5,0xa4,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xc8,0x4d,0x4d,0x4c,0x4c,0x4c,0x4c,
+ 0x4d,0x4e,0x4e,0x4f,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x58,0x58,0x59,0x59,0x59,0x58,0x58,0x59,0x5a,0x5b,0x5d,0x5e,0x5e,0x5d,
+ 0x5d,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x61,
+ 0x61,0x61,0x61,0x61,0x5f,0x60,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x62,
+ 0x62,0x64,0x64,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x67,0x68,0x68,0x68,
+ 0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6b,0x6b,0x6a,
+ 0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6e,0x6e,0x6f,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x73,
+ 0x73,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x75,0x75,0x75,
+ 0x77,0x78,0x7a,0x79,0x78,0x78,0x78,0x79,0x79,0x79,0x79,0x79,0x7a,0x7a,0x7a,
+ 0x7b,0x7b,0x7a,0x7a,0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7d,0x7d,0x7e,0x7d,0x7d,
+ 0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x82,0x84,0x85,0x85,0x84,0x82,0x82,0x82,0x82,0x82,0x83,0x85,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x85,0x85,0x85,0x85,0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x88,
+ 0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8c,0x8c,0x8c,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8e,0x8e,
+ 0x8e,0x8e,0x8e,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8e,0x8e,0x8f,0x91,0x91,
+ 0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x94,0x94,
+ 0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x96,0x96,0x96,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x96,
+ 0x96,0x96,0x96,0x97,0x98,0x98,0x99,0x99,0x9a,0x9a,0x99,0x98,0x98,0x98,0x9d,
+ 0x9d,0x99,0x98,0x98,0x97,0x9e,0xab,0xa6,0x82,0x24,0x00,0x02,0x05,0x07,0x03,
+ 0x00,0x01,0x51,0x9a,0xa4,0xa1,0x98,0x9b,0x9c,0x95,0x96,0x9d,0x9d,0x9c,0x9c,
+ 0xa0,0xa3,0x9c,0x95,0x91,0x92,0x95,0x93,0x9a,0xb1,0x9e,0x6d,0x24,0x00,0x02,
+ 0x03,0x03,0x02,0x00,0x00,0x00,0x00,0x03,0x04,0x02,0x02,0x02,0x00,0x06,0x1f,
+ 0x77,0xc3,0xaa,0x98,0x98,0xa0,0xa7,0xa3,0x9e,0x9c,0xa1,0xa6,0xa0,0x9f,0xa0,
+ 0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa1,0xa1,0xa2,
+ 0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,
+ 0xa6,0xa6,0xa6,0xa5,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xc8,0x4d,0x4d,0x4d,0x4c,
+ 0x4c,0x4c,0x4d,0x4d,0x4e,0x4f,0x50,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x55,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x59,0x59,0x58,0x59,0x5a,0x5b,0x5d,0x5e,
+ 0x5e,0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x60,0x62,0x62,0x63,0x62,0x61,0x61,0x62,0x63,0x63,0x62,0x63,0x64,0x63,
+ 0x63,0x62,0x63,0x64,0x64,0x64,0x64,0x65,0x65,0x66,0x65,0x65,0x65,0x66,0x68,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6d,0x6c,
+ 0x6c,0x6b,0x6b,0x6b,0x6c,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6e,0x6f,0x70,0x70,
+ 0x70,0x70,0x70,0x71,0x70,0x71,0x71,0x71,0x71,0x71,0x72,0x71,0x71,0x72,0x72,
+ 0x73,0x74,0x74,0x74,0x75,0x75,0x75,0x76,0x76,0x76,0x76,0x77,0x76,0x76,0x75,
+ 0x75,0x76,0x78,0x78,0x7a,0x79,0x78,0x78,0x78,0x79,0x79,0x7a,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,
+ 0x7e,0x7e,0x7f,0x80,0x80,0x80,0x81,0x81,0x82,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x81,0x82,0x83,0x85,0x86,0x86,0x85,0x84,0x82,0x82,0x83,0x84,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x89,
+ 0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,
+ 0x90,0x90,0x90,0x8f,0x8f,0x8e,0x8e,0x8e,0x8f,0x8f,0x8f,0x8e,0x8e,0x8f,0x90,
+ 0x91,0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x92,0x93,0x94,0x94,0x94,0x94,0x94,
+ 0x95,0x95,0x95,0x95,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,
+ 0x96,0x96,0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x97,0x97,
+ 0x96,0x96,0x96,0x96,0x97,0x98,0x98,0x99,0x99,0x9a,0x9b,0x9a,0x9a,0x9b,0x9b,
+ 0x9c,0x9c,0x9b,0x98,0x9a,0x9c,0x98,0xa0,0xae,0x7d,0x3c,0x0f,0x00,0x07,0x06,
+ 0x04,0x04,0x00,0x00,0x36,0x78,0xa9,0xae,0x92,0x9a,0xa0,0x93,0x97,0xa5,0x9c,
+ 0x95,0x9a,0xa3,0xae,0xb3,0xb5,0xb4,0xa9,0x9a,0x93,0x9a,0xb2,0xa2,0x74,0x26,
+ 0x00,0x05,0x05,0x02,0x00,0x00,0x02,0x01,0x01,0x03,0x05,0x07,0x06,0x03,0x00,
+ 0x04,0x19,0x74,0xc4,0xaa,0x9b,0xa1,0xa1,0xa0,0x9f,0xa0,0xa1,0xa3,0xa3,0xa0,
+ 0xa0,0xa1,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,
+ 0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa4,0xa4,0xa4,
+ 0xa4,0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,0xa6,0xa5,0xa5,0xa5,0xa5,0xa5,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa5,0xa5,0xa4,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa4,0xa4,0xa4,0xa5,0xa5,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa4,0xa4,0xa5,0xa6,0xa6,0xa6,0xc8,0x4e,0x4e,
+ 0x4e,0x4d,0x4d,0x4d,0x4d,0x4e,0x4f,0x50,0x50,0x51,0x52,0x52,0x52,0x52,0x52,
+ 0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x56,0x57,0x57,
+ 0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x5a,0x5b,
+ 0x5d,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x60,0x62,0x63,0x64,0x64,0x62,0x62,0x63,0x64,0x64,0x63,0x64,
+ 0x65,0x64,0x63,0x63,0x64,0x65,0x65,0x64,0x64,0x65,0x66,0x66,0x66,0x65,0x65,
+ 0x66,0x69,0x6a,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,
+ 0x6d,0x6d,0x6d,0x6d,0x6c,0x6c,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,
+ 0x70,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x71,0x72,0x73,0x74,0x74,0x75,0x76,0x76,0x76,0x76,0x76,0x76,0x77,0x77,0x77,
+ 0x76,0x76,0x77,0x77,0x78,0x79,0x7a,0x79,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7b,
+ 0x7b,0x7c,0x7c,0x7c,0x7d,0x7d,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x84,0x85,0x86,0x86,0x86,0x84,0x84,0x83,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x89,0x89,0x89,
+ 0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,
+ 0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x90,0x90,0x90,0x8f,0x8f,
+ 0x90,0x90,0x91,0x91,0x91,0x91,0x90,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x8f,0x8f,
+ 0x90,0x91,0x91,0x92,0x92,0x92,0x93,0x93,0x93,0x93,0x93,0x93,0x94,0x94,0x94,
+ 0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x96,0x97,0x97,0x97,0x96,0x96,0x97,0x97,0x97,0x97,0x97,0x97,0x98,0x97,0x98,
+ 0x98,0x98,0x97,0x97,0x97,0x97,0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,
+ 0x9c,0x9e,0x9f,0x9a,0x98,0x98,0x9c,0x9d,0x97,0xa2,0xb4,0x5e,0x03,0x00,0x03,
+ 0x0b,0x06,0x01,0x07,0x04,0x00,0x1e,0x56,0xac,0xb9,0x90,0x99,0xa3,0x96,0x99,
+ 0xa5,0x9e,0x98,0x9f,0x9c,0x95,0x9f,0xaa,0xb5,0xb1,0xa4,0x98,0x9a,0xb3,0xa7,
+ 0x7c,0x2a,0x00,0x07,0x05,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x05,0x0a,0x08,
+ 0x04,0x00,0x03,0x14,0x70,0xc3,0xa8,0x9c,0xa5,0xa0,0x9b,0x9e,0xa2,0xa6,0xa3,
+ 0x9f,0xa0,0xa1,0xa2,0xa3,0xa3,0xa2,0xa1,0xa2,0xa3,0xa4,0xa4,0xa3,0xa1,0xa0,
+ 0xa0,0xa2,0xa3,0xa3,0xa3,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa5,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa5,0xa5,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa5,
+ 0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,
+ 0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xc8,
+ 0x50,0x50,0x4f,0x4f,0x4f,0x4f,0x4f,0x50,0x50,0x50,0x52,0x53,0x53,0x53,0x51,
+ 0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x57,0x57,0x57,
+ 0x57,0x58,0x58,0x59,0x58,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5d,0x5e,0x5e,0x5e,0x5d,0x5d,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x61,0x61,0x60,0x61,0x61,0x60,0x60,0x61,0x62,0x62,
+ 0x61,0x62,0x64,0x63,0x63,0x65,0x66,0x66,0x66,0x65,0x65,0x66,0x67,0x68,0x67,
+ 0x66,0x67,0x68,0x69,0x6b,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,
+ 0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6e,0x6d,0x6d,0x6e,0x6e,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x72,0x72,0x73,0x72,0x73,0x73,0x72,0x71,
+ 0x71,0x71,0x72,0x72,0x73,0x74,0x75,0x76,0x77,0x77,0x76,0x76,0x76,0x76,0x77,
+ 0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x79,0x7a,0x79,0x79,0x78,0x79,0x79,0x7a,
+ 0x7b,0x7b,0x7c,0x7d,0x7e,0x7e,0x7f,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x80,
+ 0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,
+ 0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,
+ 0x87,0x87,0x87,0x87,0x86,0x86,0x86,0x87,0x88,0x89,0x89,0x89,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,
+ 0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x90,0x91,0x91,0x91,0x91,0x90,0x91,0x91,0x92,0x92,0x92,
+ 0x91,0x91,0x91,0x92,0x94,0x95,0x95,0x95,0x95,0x94,0x94,0x94,0x94,0x94,0x94,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x97,0x97,0x97,0x97,
+ 0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x9a,
+ 0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9f,0xa0,0x9b,0x9a,0x9e,0x9a,0x96,0x95,0xa9,0xc4,0x6a,0x09,
+ 0x00,0x03,0x08,0x04,0x00,0x04,0x03,0x00,0x14,0x46,0xaa,0xbf,0x98,0x97,0x9c,
+ 0x9f,0x99,0x92,0xaa,0xbd,0xb9,0x7f,0x2c,0x1f,0x2f,0x51,0x89,0xbd,0xa6,0x99,
+ 0xb2,0xad,0x89,0x2e,0x00,0x02,0x04,0x03,0x01,0x00,0x00,0x01,0x02,0x00,0x01,
+ 0x03,0x02,0x00,0x00,0x02,0x0a,0x69,0xbf,0xa4,0x93,0x98,0x9c,0xa2,0xa6,0xa5,
+ 0xa1,0xa2,0xa3,0xa4,0xa5,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,
+ 0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa4,0xa5,0xa5,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,
+ 0xa6,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa6,0xa6,0xa6,
+ 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa5,0xa5,0xa5,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa4,0xa5,0xa6,0xa7,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xc8,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x53,0x53,0x53,
+ 0x53,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x57,0x57,
+ 0x58,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5a,0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x5f,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x60,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x62,0x63,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x66,0x66,0x67,0x69,
+ 0x69,0x69,0x68,0x69,0x69,0x6b,0x6c,0x6b,0x6a,0x6a,0x6a,0x6b,0x6b,0x6c,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x6f,0x6f,0x6f,0x6f,0x70,0x71,
+ 0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x73,0x74,0x74,0x74,0x74,
+ 0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x75,0x76,0x77,0x77,0x77,0x76,0x76,0x77,
+ 0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x81,0x81,
+ 0x82,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x84,
+ 0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x85,0x85,0x85,0x85,0x86,
+ 0x86,0x87,0x88,0x88,0x88,0x88,0x87,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x90,0x90,0x91,0x91,0x91,0x91,0x90,0x90,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x90,0x90,0x91,0x91,0x91,0x91,0x92,0x93,0x94,
+ 0x94,0x94,0x94,0x93,0x94,0x95,0x95,0x95,0x96,0x96,0x96,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x97,0x97,0x97,0x97,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,
+ 0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9c,0x9d,0xa0,0x9b,0x96,0x98,0xac,0xc6,
+ 0x71,0x12,0x05,0x02,0x03,0x03,0x03,0x06,0x03,0x00,0x06,0x2f,0x9a,0xbb,0xa0,
+ 0x98,0x98,0xa0,0x9e,0x96,0xaa,0xac,0x89,0x46,0x00,0x00,0x00,0x14,0x53,0x98,
+ 0xa0,0xa4,0xb5,0xaf,0x8e,0x2f,0x00,0x00,0x03,0x04,0x03,0x01,0x00,0x01,0x03,
+ 0x01,0x00,0x00,0x00,0x01,0x03,0x01,0x03,0x61,0xbd,0xb3,0xa8,0xa7,0xa1,0x9e,
+ 0xa4,0xa5,0xa1,0xa3,0xa7,0xa6,0xa5,0xa4,0xa3,0xa3,0xa5,0xa5,0xa5,0xa4,0xa3,
+ 0xa3,0xa4,0xa5,0xa5,0xa5,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa6,0xa7,0xa7,0xa7,
+ 0xa6,0xa6,0xa6,0xa7,0xa7,0xa6,0xa6,0xa6,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,
+ 0xa6,0xa6,0xa6,0xa6,0xa5,0xa5,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa8,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,
+ 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xc8,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x56,0x57,0x57,0x57,
+ 0x58,0x59,0x59,0x59,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,
+ 0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x60,0x60,
+ 0x60,0x60,0x60,0x61,0x60,0x60,0x60,0x60,0x61,0x62,0x62,0x64,0x65,0x66,0x65,
+ 0x65,0x65,0x65,0x65,0x65,0x66,0x68,0x67,0x67,0x67,0x67,0x68,0x67,0x67,0x67,
+ 0x68,0x69,0x69,0x69,0x69,0x69,0x6a,0x6c,0x6d,0x6c,0x6b,0x6b,0x6b,0x6b,0x6d,
+ 0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x74,
+ 0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x77,0x77,
+ 0x77,0x78,0x78,0x78,0x79,0x79,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7c,0x7c,0x7d,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x84,
+ 0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x87,0x88,0x89,0x89,0x89,0x89,0x8a,0x89,0x89,0x8a,0x8a,0x8b,0x8c,0x8c,
+ 0x8c,0x8b,0x8b,0x8b,0x8b,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x94,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x97,0x97,0x97,0x97,
+ 0x97,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9d,0x9d,0x9e,0x9e,0x9f,0xa1,0x9c,0x98,0x9e,0xa0,0x9d,0x9c,0x9d,0x9e,
+ 0xac,0xbe,0x70,0x1a,0x07,0x00,0x00,0x03,0x08,0x09,0x06,0x01,0x00,0x13,0x7d,
+ 0xad,0xa9,0x9f,0x97,0x9e,0xa6,0xaa,0x98,0x6d,0x20,0x01,0x03,0x02,0x02,0x00,
+ 0x18,0x45,0x8b,0xb9,0xb8,0xae,0x8d,0x2f,0x00,0x00,0x01,0x03,0x04,0x03,0x01,
+ 0x03,0x04,0x03,0x02,0x02,0x03,0x04,0x07,0x03,0x00,0x57,0xb5,0xc8,0xc8,0xc3,
+ 0xaa,0x96,0x9c,0xa1,0xa4,0xa7,0xa7,0xa3,0xa3,0xa3,0xa3,0xa3,0xa6,0xa7,0xa7,
+ 0xa4,0xa3,0xa3,0xa4,0xa7,0xa7,0xa7,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa6,0xa6,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa6,0xa7,0xa7,0xa8,0xa9,0xa9,0xa9,0xa8,0xa8,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,
+ 0xa8,0xa8,0xa9,0xa9,0xa9,0xa9,0xa9,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,
+ 0xa8,0xa8,0xa8,0xa8,0xa8,0xc8,0x4f,0x4f,0x4f,0x50,0x50,0x51,0x52,0x52,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x57,0x57,
+ 0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,0x5c,0x5c,
+ 0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,0x60,0x61,0x61,
+ 0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x61,0x62,0x62,0x63,0x64,0x65,0x66,
+ 0x66,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x68,0x67,0x66,0x67,0x68,0x69,0x69,
+ 0x68,0x67,0x69,0x6a,0x6a,0x6a,0x6a,0x6a,0x6b,0x6d,0x6d,0x6d,0x6c,0x6c,0x6c,
+ 0x6c,0x6d,0x6e,0x6e,0x6e,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x71,0x71,
+ 0x71,0x71,0x71,0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x75,0x74,0x75,0x76,0x77,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,0x7c,0x7b,
+ 0x7c,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x80,0x81,
+ 0x81,0x82,0x82,0x83,0x83,0x83,0x83,0x82,0x82,0x83,0x83,0x84,0x84,0x85,0x85,
+ 0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x89,0x88,0x88,0x88,
+ 0x87,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8a,0x8a,0x8b,0x8c,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,
+ 0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x92,
+ 0x91,0x91,0x91,0x92,0x93,0x93,0x94,0x94,0x94,0x94,0x93,0x94,0x94,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x98,0x97,0x97,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+ 0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9c,0x9c,0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9e,0x9f,0x9e,0xa0,0xa2,0x9d,0x99,0xa0,0xa1,0x9d,0x9c,
+ 0x9c,0x99,0xa8,0xc0,0x73,0x19,0x04,0x00,0x04,0x06,0x06,0x06,0x04,0x03,0x00,
+ 0x0a,0x5c,0x98,0xb8,0xa3,0x92,0xa7,0xaf,0xa4,0x64,0x25,0x01,0x00,0x07,0x04,
+ 0x00,0x00,0x03,0x20,0x82,0xc0,0xb3,0xa6,0x8a,0x31,0x00,0x00,0x00,0x02,0x04,
+ 0x04,0x01,0x01,0x02,0x03,0x03,0x03,0x03,0x04,0x06,0x01,0x00,0x42,0x8c,0x8d,
+ 0x8a,0x8b,0xa5,0xb9,0xa4,0x9d,0xa6,0xa7,0xa5,0xa3,0xa5,0xa8,0xa6,0xa4,0xa7,
+ 0xa7,0xa7,0xa5,0xa4,0xa3,0xa5,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,
+ 0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xaa,0xaa,0xaa,
+ 0xa9,0xa9,0xa8,0xa8,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xaa,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8,0xc8,0x4e,0x4e,0x4f,0x50,0x50,0x51,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5b,
+ 0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x62,
+ 0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x65,
+ 0x65,0x65,0x66,0x64,0x64,0x64,0x65,0x65,0x65,0x67,0x68,0x66,0x65,0x68,0x69,
+ 0x69,0x69,0x69,0x68,0x69,0x6a,0x6a,0x6a,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x71,
+ 0x71,0x72,0x72,0x72,0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+ 0x74,0x75,0x75,0x75,0x75,0x75,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,
+ 0x7d,0x7c,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x81,
+ 0x81,0x81,0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x84,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x88,0x88,0x8a,0x8a,0x8a,
+ 0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8c,0x8d,
+ 0x8d,0x8d,0x8e,0x8e,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,
+ 0x8f,0x8f,0x90,0x91,0x90,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,
+ 0x92,0x92,0x92,0x92,0x92,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,
+ 0x97,0x97,0x97,0x96,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x97,0x98,0x98,
+ 0x97,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+ 0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,
+ 0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,
+ 0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,0xa0,0xa1,0x9f,0x9d,0xa0,0xa1,
+ 0x9e,0x9d,0x9c,0x95,0xa5,0xc4,0x7c,0x24,0x06,0x00,0x08,0x06,0x02,0x02,0x03,
+ 0x04,0x00,0x07,0x39,0x7f,0xc2,0xa9,0x91,0xb3,0xae,0x84,0x2e,0x00,0x00,0x05,
+ 0x08,0x04,0x00,0x00,0x00,0x0d,0x7b,0xc1,0xb2,0xa1,0x82,0x30,0x00,0x00,0x00,
+ 0x02,0x03,0x03,0x01,0x00,0x00,0x02,0x03,0x03,0x03,0x03,0x04,0x01,0x00,0x28,
+ 0x53,0x45,0x3b,0x42,0x88,0xc4,0xae,0xa2,0xa5,0xa5,0xa5,0xa4,0xa7,0xac,0xa9,
+ 0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa8,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xa9,0xa8,0xa8,
+ 0xa8,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa8,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa8,0xa8,0xc8,0x4e,0x4e,0x4f,0x50,0x51,
+ 0x52,0x53,0x53,0x53,0x54,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x55,0x56,0x56,
+ 0x56,0x56,0x57,0x57,0x58,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,
+ 0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x60,0x61,0x62,
+ 0x62,0x62,0x62,0x62,0x61,0x61,0x61,0x62,0x62,0x63,0x63,0x63,0x63,0x63,0x64,
+ 0x65,0x65,0x65,0x65,0x65,0x63,0x63,0x64,0x65,0x66,0x67,0x69,0x6a,0x69,0x67,
+ 0x69,0x69,0x6a,0x6a,0x69,0x69,0x6a,0x6b,0x6b,0x6b,0x6a,0x6c,0x6d,0x6e,0x6e,
+ 0x6d,0x6d,0x6d,0x6d,0x6d,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,
+ 0x76,0x76,0x76,0x77,0x76,0x76,0x75,0x76,0x77,0x78,0x79,0x79,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x79,0x79,0x79,0x79,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,
+ 0x7e,0x7f,0x7e,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,
+ 0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x89,0x88,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x91,0x91,0x91,0x92,0x92,
+ 0x92,0x92,0x93,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x97,0x97,0x98,0x98,
+ 0x99,0x99,0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9f,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+ 0x9f,0x9e,0x9e,0x9d,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0x9d,0x9d,0xa0,0xa2,0xa1,0x97,0xa6,0xc5,0x93,0x49,0x12,0x00,0x03,0x02,0x00,
+ 0x02,0x05,0x07,0x00,0x02,0x15,0x5f,0xc0,0xaf,0x9a,0xc1,0x99,0x3d,0x0f,0x00,
+ 0x04,0x05,0x02,0x02,0x02,0x00,0x00,0x04,0x70,0xbc,0xbe,0xa6,0x75,0x28,0x00,
+ 0x02,0x03,0x02,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x05,0x04,
+ 0x00,0x09,0x12,0x10,0x0b,0x0b,0x45,0x8a,0xb3,0xb8,0x9f,0xa3,0xaa,0xa6,0xa4,
+ 0xa7,0xa9,0xa9,0xa6,0xa5,0xa6,0xaa,0xae,0xad,0xa9,0xa3,0xa3,0xa4,0xa8,0xa9,
+ 0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xaa,
+ 0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,
+ 0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xa9,0xaa,0xab,0xab,0xaa,0xaa,0xab,0xab,0xab,0xab,0xac,
+ 0xac,0xab,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xa9,0xa8,0xa8,0xc8,0x4f,0x4f,0x50,
+ 0x50,0x51,0x52,0x53,0x53,0x53,0x54,0x54,0x53,0x53,0x53,0x53,0x53,0x54,0x55,
+ 0x55,0x56,0x56,0x56,0x57,0x57,0x57,0x59,0x5a,0x59,0x5a,0x5a,0x5b,0x5b,0x5a,
+ 0x5a,0x5b,0x5b,0x5c,0x5d,0x5c,0x5b,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x61,0x62,0x62,0x63,0x63,0x63,0x63,0x63,
+ 0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x68,0x69,0x6a,
+ 0x69,0x69,0x69,0x6a,0x6c,0x6c,0x6b,0x6b,0x6b,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,
+ 0x6e,0x6e,0x6e,0x6e,0x6e,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x70,0x71,0x72,0x73,0x74,0x74,0x74,0x75,0x75,0x74,0x74,0x74,0x74,0x75,
+ 0x75,0x76,0x77,0x78,0x78,0x78,0x77,0x77,0x77,0x77,0x78,0x79,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7b,0x7b,
+ 0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x84,0x84,0x85,0x86,0x85,0x85,0x85,0x86,
+ 0x86,0x87,0x87,0x88,0x89,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x93,0x94,0x94,0x93,0x92,0x93,0x93,
+ 0x93,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x99,0x99,0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0x9f,0x9f,0x9e,0x9e,0x9f,0xa0,0xa1,0xa1,0xa1,0xa1,0xa0,0x9f,
+ 0xa0,0xa2,0x9f,0x9f,0xa2,0xa3,0xa1,0x98,0xa3,0xbe,0xa8,0x74,0x1e,0x00,0x00,
+ 0x03,0x04,0x03,0x04,0x07,0x03,0x00,0x00,0x49,0xbb,0xb2,0xa2,0xc8,0x8d,0x19,
+ 0x00,0x01,0x06,0x03,0x00,0x01,0x03,0x03,0x00,0x02,0x5a,0xa5,0xc2,0xad,0x73,
+ 0x26,0x00,0x02,0x03,0x02,0x01,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x16,0x50,0xab,0xc4,0xa1,0xa4,0xab,
+ 0xa7,0xa4,0xa6,0xa9,0xaa,0xa7,0xa7,0xa8,0xaa,0xaa,0xaa,0xaa,0xa8,0xa6,0xa6,
+ 0xa8,0xa9,0xa8,0xa9,0xa9,0xa8,0xa9,0xaa,0xab,0xab,0xaa,0xab,0xab,0xab,0xab,
+ 0xab,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,0xab,
+ 0xab,0xac,0xab,0xab,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xab,0xaa,0xab,0xab,
+ 0xab,0xab,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xac,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xad,0xad,0xac,0xac,0xac,0xac,0xab,
+ 0xab,0xac,0xac,0xab,0xab,0xab,0xab,0xab,0xaa,0xaa,0xa9,0xa8,0xa8,0xc8,0x51,
+ 0x51,0x52,0x52,0x52,0x51,0x51,0x52,0x53,0x53,0x54,0x54,0x53,0x53,0x55,0x56,
+ 0x57,0x56,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x59,0x5a,0x57,0x59,0x5b,0x5c,
+ 0x5c,0x5a,0x5a,0x5a,0x5d,0x5e,0x5e,0x5c,0x5a,0x5c,0x5e,0x5f,0x60,0x60,0x5f,
+ 0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x64,
+ 0x64,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x68,0x68,0x68,0x68,0x68,0x68,
+ 0x68,0x69,0x69,0x69,0x6a,0x6b,0x6d,0x6d,0x6d,0x6b,0x6b,0x6c,0x6d,0x6d,0x6e,
+ 0x6e,0x6d,0x6e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x71,0x71,0x71,0x71,
+ 0x72,0x73,0x73,0x73,0x73,0x73,0x74,0x74,0x74,0x75,0x76,0x76,0x76,0x76,0x75,
+ 0x74,0x74,0x74,0x75,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x7a,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,
+ 0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,0x7f,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+ 0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x84,0x85,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x86,0x86,0x86,0x88,0x89,0x88,0x87,0x87,0x87,0x88,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8d,0x8d,0x8e,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x91,0x91,
+ 0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x94,0x95,0x95,0x94,0x93,0x93,
+ 0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x96,
+ 0x96,0x96,0x96,0x97,0x98,0x99,0x9a,0x9a,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,
+ 0x9a,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9b,0x9c,0x9e,0x9f,0x9f,
+ 0x9f,0x9f,0x9f,0xa0,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f,0xa0,0xa0,0xa2,0xa2,0xa2,0xa1,
+ 0xa0,0x9f,0xa0,0xa2,0xa3,0xa3,0xa3,0xa3,0xa0,0x99,0xa0,0xb1,0xb9,0x9d,0x29,
+ 0x00,0x00,0x07,0x0b,0x03,0x02,0x05,0x04,0x02,0x00,0x3d,0xb2,0xb4,0xa9,0xc8,
+ 0x88,0x15,0x00,0x01,0x03,0x01,0x00,0x00,0x03,0x05,0x00,0x03,0x3f,0x82,0xbe,
+ 0xb4,0x7a,0x2a,0x00,0x00,0x00,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x09,0x07,0x00,0x00,0x20,0x99,0xc7,0xaa,
+ 0xa7,0xa8,0xa7,0xa7,0xa9,0xa9,0xa9,0xaa,0xab,0xab,0xa7,0xa2,0xa3,0xa9,0xb0,
+ 0xad,0xa9,0xa7,0xa8,0xa9,0xac,0xad,0xaa,0xaa,0xac,0xac,0xab,0xaa,0xab,0xad,
+ 0xab,0xaa,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xac,
+ 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xad,0xad,0xad,0xae,0xae,0xae,0xac,0xab,
+ 0xac,0xac,0xac,0xab,0xab,0xaa,0xaa,0xab,0xac,0xac,0xac,0xac,0xab,0xab,0xac,
+ 0xad,0xad,0xac,0xab,0xab,0xab,0xab,0xac,0xac,0xad,0xaf,0xae,0xae,0xad,0xad,
+ 0xac,0xac,0xac,0xab,0xab,0xaa,0xaa,0xaa,0xab,0xab,0xaa,0xaa,0xa9,0xa8,0xa8,
+ 0xc8,0x50,0x50,0x52,0x53,0x53,0x53,0x52,0x51,0x51,0x52,0x53,0x54,0x54,0x55,
+ 0x56,0x57,0x57,0x57,0x56,0x56,0x57,0x57,0x57,0x57,0x57,0x59,0x5a,0x58,0x59,
+ 0x5b,0x5c,0x5c,0x5a,0x5a,0x5b,0x5e,0x5e,0x5e,0x5d,0x5b,0x5d,0x5e,0x60,0x61,
+ 0x62,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,
+ 0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,0x67,0x67,0x67,0x67,
+ 0x67,0x68,0x68,0x69,0x69,0x69,0x69,0x6b,0x6c,0x6c,0x6b,0x6a,0x6a,0x6a,0x6c,
+ 0x6d,0x6d,0x6d,0x6d,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,
+ 0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,0x76,0x76,0x76,0x76,
+ 0x76,0x77,0x76,0x75,0x75,0x76,0x77,0x78,0x79,0x79,0x79,0x79,0x79,0x7a,0x7b,
+ 0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7e,0x7f,0x7e,
+ 0x7e,0x7f,0x7f,0x7f,0x7f,0x7e,0x7d,0x7d,0x7e,0x7f,0x81,0x82,0x82,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x83,0x84,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,0x86,
+ 0x86,0x87,0x87,0x87,0x86,0x87,0x87,0x89,0x89,0x88,0x88,0x88,0x88,0x89,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x90,0x8f,0x90,0x91,
+ 0x91,0x91,0x90,0x91,0x91,0x92,0x91,0x91,0x91,0x92,0x93,0x94,0x95,0x95,0x94,
+ 0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x97,
+ 0x97,0x97,0x97,0x97,0x97,0x98,0x99,0x9a,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,
+ 0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9c,0x9c,0x9c,0x9e,0x9f,
+ 0xa0,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa3,
+ 0xa3,0xa2,0xa2,0xa3,0xa3,0xa3,0xa0,0xa0,0xa2,0xa5,0xa6,0x9e,0x9e,0xa7,0xbe,
+ 0xae,0x2f,0x00,0x00,0x03,0x07,0x03,0x03,0x05,0x06,0x03,0x00,0x36,0xa9,0xb3,
+ 0xac,0xc2,0x87,0x1d,0x03,0x00,0x05,0x05,0x01,0x01,0x03,0x05,0x00,0x00,0x36,
+ 0x7a,0xbf,0xb5,0x79,0x28,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x02,0x01,0x02,0x03,0x03,0x03,0x06,0x05,0x01,0x00,0x11,0x8d,
+ 0xc0,0xac,0xa7,0xa5,0xa6,0xa8,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xaa,0xab,0xa8,
+ 0xa6,0xa5,0xa6,0xa6,0xa3,0xa1,0xa1,0xa9,0xae,0xab,0xaa,0xaa,0xa9,0xaa,0xac,
+ 0xab,0xa9,0xaa,0xac,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,0xac,0xac,
+ 0xac,0xac,0xac,0xac,0xac,0xac,0xad,0xac,0xad,0xad,0xad,0xad,0xad,0xae,0xae,
+ 0xad,0xac,0xad,0xad,0xad,0xad,0xac,0xac,0xac,0xad,0xad,0xad,0xad,0xad,0xad,
+ 0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xad,0xad,0xae,0xae,0xae,0xae,0xae,
+ 0xad,0xac,0xab,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xa9,0xaa,0xaa,0xa9,0xa8,0xa7,
+ 0xa7,0xa7,0xc8,0x4f,0x4f,0x52,0x53,0x54,0x53,0x53,0x51,0x50,0x51,0x53,0x53,
+ 0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x58,0x57,0x57,0x57,0x5a,0x5a,
+ 0x58,0x59,0x5b,0x5c,0x5c,0x5b,0x5b,0x5c,0x5e,0x5e,0x5e,0x5e,0x5c,0x5e,0x5f,
+ 0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x63,0x63,0x62,0x62,0x62,0x62,0x62,
+ 0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x68,0x67,0x66,0x66,0x66,
+ 0x66,0x67,0x68,0x68,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6b,0x6a,0x69,
+ 0x69,0x6b,0x6d,0x6d,0x6d,0x6d,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x77,0x77,0x77,0x77,
+ 0x76,0x76,0x77,0x78,0x78,0x77,0x77,0x78,0x78,0x78,0x79,0x79,0x7a,0x7a,0x7a,
+ 0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,
+ 0x80,0x7f,0x7f,0x7f,0x80,0x80,0x7f,0x7f,0x7e,0x7e,0x7f,0x7f,0x81,0x82,0x82,
+ 0x82,0x82,0x82,0x82,0x83,0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,
+ 0x86,0x86,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x89,0x89,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8f,0x8f,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x90,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x91,0x92,0x92,0x94,0x95,0x95,
+ 0x95,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,
+ 0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9b,0x9b,0x9a,0x9a,0x9a,
+ 0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9d,0x9e,0x9f,
+ 0x9f,0xa0,0xa0,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa1,0xa1,0xa0,0xa1,0xa2,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa6,0xa6,0xa3,0x9f,0x9e,0xa1,0xa7,0xa9,0xa2,0x9f,
+ 0xa2,0xbd,0xb5,0x3a,0x00,0x00,0x00,0x02,0x03,0x03,0x04,0x07,0x05,0x00,0x2f,
+ 0x95,0xaf,0xb4,0xbd,0x81,0x20,0x03,0x00,0x07,0x07,0x02,0x02,0x03,0x03,0x00,
+ 0x00,0x2f,0x70,0xbe,0xb9,0x7c,0x28,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x03,0x04,0x04,0x03,0x03,0x03,0x00,
+ 0x0c,0x76,0xae,0xb1,0xaa,0xa3,0xa7,0xaa,0xac,0xab,0xaa,0xa7,0xa6,0xa4,0xaa,
+ 0xae,0xab,0xa7,0xa5,0xa8,0xab,0xaa,0xa5,0xa0,0xa7,0xad,0xad,0xab,0xaa,0xa9,
+ 0xaa,0xae,0xab,0xa7,0xab,0xad,0xab,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xac,
+ 0xad,0xad,0xad,0xad,0xac,0xac,0xac,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+ 0xad,0xad,0xad,0xad,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xad,0xad,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8,
+ 0xa7,0xa7,0xa7,0xa7,0xc8,0x50,0x50,0x52,0x53,0x53,0x53,0x52,0x52,0x52,0x53,
+ 0x53,0x54,0x54,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x58,0x58,0x59,
+ 0x5a,0x5a,0x59,0x59,0x5a,0x5b,0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x61,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x63,0x63,0x63,
+ 0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x66,0x68,0x6a,0x6a,0x69,
+ 0x69,0x69,0x69,0x69,0x69,0x6b,0x6c,0x6c,0x6c,0x6c,0x6c,0x6d,0x6d,0x6e,0x6d,
+ 0x6c,0x6c,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x72,0x72,0x73,0x72,0x72,
+ 0x71,0x71,0x72,0x73,0x74,0x74,0x74,0x73,0x74,0x75,0x76,0x76,0x77,0x77,0x77,
+ 0x77,0x77,0x77,0x76,0x78,0x79,0x79,0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7e,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7f,0x80,0x81,
+ 0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x84,0x85,0x85,0x86,0x86,0x86,0x86,0x87,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,
+ 0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x93,0x94,0x94,0x93,0x93,0x93,0x94,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x97,0x97,0x96,0x96,0x96,0x97,0x97,
+ 0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0x9f,0x9f,0x9f,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa2,
+ 0xa2,0xa3,0xa3,0xa4,0xa5,0xa4,0xa4,0xa6,0xa4,0xa3,0xa3,0xa4,0xa5,0xa4,0xa3,
+ 0xa4,0xa3,0xa3,0xbf,0xb9,0x4b,0x0b,0x02,0x00,0x03,0x03,0x02,0x02,0x06,0x07,
+ 0x00,0x21,0x6f,0xa9,0xc5,0xb8,0x6d,0x07,0x00,0x01,0x04,0x04,0x02,0x02,0x02,
+ 0x03,0x00,0x03,0x1e,0x59,0xba,0xc2,0x8b,0x2f,0x00,0x05,0x06,0x03,0x03,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x05,0x05,
+ 0x04,0x00,0x07,0x48,0x8a,0xbf,0xb6,0xa3,0xaa,0xac,0xa9,0xaa,0xab,0xaa,0xad,
+ 0xaf,0xa3,0x9b,0xa1,0xb2,0xc8,0xc8,0xc8,0xc8,0xc4,0xb5,0xac,0xa8,0xab,0xaa,
+ 0xaa,0xaf,0xb2,0xac,0xad,0xaf,0xae,0xad,0xac,0xac,0xab,0xab,0xab,0xac,0xac,
+ 0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xad,0xae,0xae,
+ 0xae,0xad,0xae,0xaf,0xaf,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xad,0xac,
+ 0xac,0xab,0xab,0xab,0xaa,0xa9,0xa9,0xa9,0xa9,0xa9,0xa8,0xa8,0xa7,0xa7,0xa8,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xc8,0x51,0x51,0x51,0x51,0x51,0x51,0x52,0x53,
+ 0x53,0x54,0x54,0x54,0x53,0x54,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x59,
+ 0x59,0x59,0x5a,0x5b,0x5a,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5e,0x5f,0x60,0x61,0x61,0x61,0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x63,
+ 0x63,0x63,0x63,0x64,0x64,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x69,0x6b,
+ 0x6b,0x6a,0x69,0x69,0x69,0x69,0x6a,0x6c,0x6d,0x6d,0x6d,0x6d,0x6c,0x6d,0x6e,
+ 0x6e,0x6e,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x73,0x73,
+ 0x73,0x72,0x71,0x71,0x72,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x77,
+ 0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x7a,0x7a,0x79,0x79,0x79,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7e,0x7e,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x81,0x81,0x81,0x81,0x82,
+ 0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x84,0x85,0x85,0x86,0x86,0x86,0x86,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8b,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8f,
+ 0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x92,0x93,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x96,0x97,0x96,0x96,0x96,0x96,0x96,0x97,0x97,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x99,0x99,0x9a,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,
+ 0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0x9f,
+ 0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa2,0xa3,0xa3,0xa2,0xa2,
+ 0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa4,0xa3,0xa7,0xa8,0xa7,
+ 0xa3,0xa2,0xa6,0xa4,0xa0,0xbb,0xbe,0x6a,0x29,0x04,0x00,0x04,0x04,0x03,0x01,
+ 0x03,0x05,0x00,0x16,0x4c,0x9c,0xc8,0xc1,0x73,0x07,0x00,0x01,0x02,0x02,0x01,
+ 0x01,0x02,0x01,0x00,0x03,0x0a,0x3e,0xb2,0xc7,0x97,0x33,0x00,0x04,0x05,0x03,
+ 0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x02,
+ 0x04,0x06,0x07,0x00,0x03,0x20,0x65,0xbe,0xbc,0xa7,0xaa,0xab,0xaa,0xaa,0xab,
+ 0xae,0xaf,0xaf,0xa7,0xa6,0xb5,0xb1,0xa0,0x95,0x90,0x92,0xa3,0xb9,0xb4,0xac,
+ 0xaa,0xaa,0xab,0xaf,0xb1,0xae,0xae,0xaf,0xae,0xae,0xae,0xae,0xad,0xad,0xad,
+ 0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xaf,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xae,
+ 0xae,0xae,0xae,0xad,0xae,0xae,0xae,0xad,0xad,0xac,0xac,0xac,0xac,0xac,0xab,
+ 0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xc8,0x51,0x51,0x50,0x50,0x50,0x51,
+ 0x52,0x53,0x54,0x55,0x55,0x55,0x53,0x53,0x55,0x56,0x57,0x57,0x57,0x57,0x58,
+ 0x59,0x59,0x59,0x59,0x5b,0x5c,0x5a,0x5a,0x5a,0x5a,0x5b,0x5d,0x5d,0x5e,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x60,0x5f,0x60,0x60,0x62,0x62,0x63,0x64,
+ 0x64,0x64,0x63,0x63,0x64,0x64,0x65,0x65,0x66,0x67,0x67,0x66,0x66,0x67,0x68,
+ 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6b,0x6b,0x6c,0x6d,0x6d,0x6a,
+ 0x6b,0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x6f,0x6f,0x70,0x71,0x73,
+ 0x74,0x74,0x73,0x73,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x75,0x75,0x76,
+ 0x76,0x76,0x76,0x76,0x77,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7a,0x7a,0x7a,0x7b,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7c,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7e,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x81,0x81,0x82,0x82,0x82,
+ 0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,
+ 0x8f,0x8f,0x90,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x92,0x92,0x92,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x96,0x97,0x97,0x98,0x98,0x98,0x97,0x97,0x97,0x97,0x98,0x98,0x98,
+ 0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9a,0x99,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x9a,
+ 0x9b,0x9c,0x9c,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa2,0xa3,0xa4,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa3,0xa4,
+ 0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa5,0xa6,0xa6,0xa6,0xa5,0xa3,0xa3,0xa6,0xa8,
+ 0xa7,0xa5,0xa5,0xa6,0xa7,0xa3,0x9a,0xb4,0xc0,0x91,0x4e,0x06,0x00,0x05,0x06,
+ 0x04,0x01,0x00,0x01,0x02,0x0e,0x2f,0x8b,0xc8,0xc8,0x87,0x19,0x00,0x00,0x01,
+ 0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x24,0xa7,0xc8,0xa0,0x36,0x00,0x00,
+ 0x02,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x04,0x0a,0x05,0x02,0x03,0x43,0xb0,0xbc,0xab,0xa8,0xaa,0xae,
+ 0xac,0xab,0xaf,0xad,0xa7,0xb3,0xc3,0xc8,0x9c,0x41,0x26,0x1e,0x1b,0x53,0xa3,
+ 0xb8,0xb7,0xac,0xaa,0xae,0xaa,0xab,0xb0,0xae,0xa9,0xac,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xac,0xab,0xaa,0xaa,0xaa,0xab,0xab,
+ 0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa8,0xa8,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa5,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xc8,0x50,0x50,0x50,0x50,
+ 0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x55,0x55,0x54,0x56,0x57,0x57,0x57,
+ 0x57,0x58,0x59,0x59,0x58,0x58,0x5a,0x5b,0x5b,0x5b,0x5a,0x5b,0x5c,0x5d,0x5e,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x60,0x5f,0x60,0x61,0x62,0x62,
+ 0x63,0x64,0x65,0x65,0x64,0x64,0x64,0x65,0x65,0x66,0x67,0x66,0x66,0x65,0x66,
+ 0x67,0x69,0x69,0x68,0x68,0x68,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6d,
+ 0x6d,0x6b,0x6b,0x6d,0x6e,0x6f,0x6e,0x6f,0x70,0x70,0x70,0x70,0x6f,0x6f,0x71,
+ 0x73,0x74,0x74,0x74,0x74,0x73,0x73,0x74,0x74,0x75,0x75,0x75,0x75,0x75,0x76,
+ 0x76,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x7a,0x7b,0x7b,0x7b,0x7a,0x7a,0x7a,
+ 0x7b,0x7b,0x7c,0x7c,0x7c,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82,0x82,0x82,
+ 0x83,0x83,0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x87,0x87,0x87,0x87,0x88,0x89,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x89,
+ 0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,
+ 0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x90,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x96,0x97,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x99,0x99,0x9a,0x9a,0x9b,0x9c,0x9c,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9b,
+ 0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9c,0x9c,0x9c,0x9d,0x9e,0x9d,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa0,0xa1,0xa2,0xa3,0xa3,0xa3,0xa4,
+ 0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa5,0xa4,
+ 0xa4,0xa4,0xa5,0xa5,0xa4,0xa4,0xa3,0xa4,0xa5,0xa6,0xa7,0xa7,0xa6,0xa3,0xa3,
+ 0xa5,0xa7,0xa7,0xa4,0xa5,0xa7,0xa8,0xa3,0x9c,0xae,0xba,0xa0,0x5f,0x05,0x00,
+ 0x07,0x05,0x03,0x00,0x01,0x03,0x04,0x03,0x0e,0x7a,0xc8,0xb7,0x6f,0x11,0x00,
+ 0x00,0x00,0x00,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x1f,0xa4,0xc8,0xa6,0x39,
+ 0x00,0x00,0x02,0x00,0x01,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x07,0x06,0x03,0x00,0x32,0xa0,0xb8,0xb2,0xa7,
+ 0xa7,0xae,0xae,0xac,0xa9,0xaa,0xb0,0xb8,0xb3,0x98,0x5d,0x14,0x03,0x01,0x00,
+ 0x18,0x4b,0x97,0xc4,0xb5,0xaf,0xaf,0xac,0xab,0xb0,0xae,0xab,0xad,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,
+ 0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xaf,0xae,0xae,0xaf,0xaf,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xac,0xab,0xaa,0xaa,0xaa,
+ 0xab,0xac,0xac,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa8,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa5,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xc8,0x4e,0x4e,
+ 0x50,0x51,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x54,0x57,0x56,0x54,0x56,0x57,
+ 0x57,0x57,0x57,0x58,0x59,0x58,0x58,0x58,0x59,0x5a,0x5c,0x5c,0x5b,0x5c,0x5c,
+ 0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x61,0x62,0x61,0x61,0x60,0x61,0x62,
+ 0x62,0x63,0x64,0x65,0x65,0x65,0x65,0x64,0x65,0x65,0x66,0x67,0x67,0x65,0x65,
+ 0x65,0x65,0x66,0x68,0x69,0x67,0x68,0x68,0x69,0x69,0x69,0x6a,0x6b,0x6a,0x6b,
+ 0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x72,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x75,0x76,
+ 0x76,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7b,0x7a,
+ 0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7f,
+ 0x7f,0x7f,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x83,0x82,0x82,0x82,0x82,
+ 0x82,0x83,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x87,
+ 0x87,0x87,0x87,0x87,0x88,0x88,0x88,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,
+ 0x8e,0x8e,0x8f,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x93,0x93,0x94,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x95,0x95,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9b,0x9a,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa1,0xa1,0xa2,0xa3,0xa3,0xa4,
+ 0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa5,
+ 0xa5,0xa5,0xa4,0xa5,0xa5,0xa5,0xa5,0xa4,0xa4,0xa5,0xa6,0xa7,0xa7,0xa7,0xa6,
+ 0xa5,0xa4,0xa4,0xa6,0xa7,0xa4,0xa5,0xa7,0xa7,0xa5,0xa1,0xaa,0xb2,0xab,0x6e,
+ 0x09,0x00,0x05,0x03,0x02,0x00,0x02,0x05,0x05,0x00,0x00,0x6d,0xc0,0x99,0x53,
+ 0x05,0x00,0x02,0x00,0x01,0x04,0x03,0x02,0x02,0x02,0x02,0x00,0x1f,0x9f,0xc8,
+ 0xae,0x3c,0x00,0x00,0x02,0x01,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x05,0x06,0x00,0x2a,0x95,0xb5,
+ 0xb8,0xa9,0xa6,0xad,0xaf,0xae,0xa4,0xad,0xbd,0xa5,0x7e,0x4c,0x22,0x02,0x00,
+ 0x00,0x00,0x00,0x02,0x6d,0xbd,0xbb,0xb5,0xae,0xad,0xae,0xae,0xaf,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xaf,0xb0,0xb0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb0,0xaf,0xae,0xaf,
+ 0xaf,0xae,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xae,0xae,0xac,0xac,
+ 0xab,0xab,0xac,0xac,0xac,0xac,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa8,
+ 0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xc8,
+ 0x4f,0x4f,0x50,0x50,0x51,0x53,0x53,0x53,0x54,0x53,0x54,0x55,0x56,0x56,0x55,
+ 0x57,0x57,0x57,0x58,0x58,0x59,0x5a,0x58,0x57,0x57,0x59,0x5a,0x5c,0x5c,0x5c,
+ 0x5c,0x5c,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x61,0x61,0x61,0x61,0x62,
+ 0x62,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,0x66,0x66,
+ 0x65,0x65,0x65,0x65,0x66,0x68,0x69,0x68,0x69,0x6a,0x6b,0x6c,0x6c,0x6d,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x72,
+ 0x72,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x77,0x77,
+ 0x76,0x76,0x77,0x77,0x78,0x78,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7e,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x80,0x80,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,0x84,0x84,
+ 0x84,0x83,0x83,0x84,0x84,0x85,0x85,0x84,0x84,0x86,0x87,0x87,0x87,0x87,0x87,
+ 0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8a,0x8a,0x8b,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x90,0x90,
+ 0x90,0x90,0x8f,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,
+ 0x92,0x92,0x93,0x93,0x93,0x93,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x96,0x95,0x95,0x95,0x95,0x96,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x98,
+ 0x99,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9d,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x9d,0x9d,0x9e,0x9e,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa2,0xa1,0xa1,0xa1,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa2,0xa3,
+ 0xa3,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,
+ 0xa5,0xa6,0xa6,0xa5,0xa5,0xa5,0xa6,0xa6,0xa5,0xa5,0xa5,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa3,0xa2,0xa7,0xa9,0xa7,0xa5,0xa3,0xa5,0xa7,0xaa,0xa9,0xaa,
+ 0xbb,0x86,0x15,0x00,0x00,0x03,0x03,0x02,0x03,0x03,0x03,0x00,0x00,0x6c,0xb8,
+ 0x8c,0x48,0x02,0x00,0x0a,0x06,0x02,0x00,0x00,0x01,0x00,0x01,0x03,0x00,0x1d,
+ 0x93,0xc7,0xb8,0x40,0x00,0x00,0x01,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x02,0x02,0x01,0x01,0x01,0x04,0x03,0x00,0x03,0x05,0x00,0x2a,
+ 0x95,0xba,0xbe,0xac,0xa5,0xa9,0xad,0xae,0xaa,0xba,0xc8,0x68,0x12,0x0b,0x0a,
+ 0x0a,0x03,0x02,0x0b,0x03,0x00,0x48,0x91,0xb9,0xbb,0xa7,0xac,0xb0,0xac,0xad,
+ 0xaf,0xac,0xab,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb0,
+ 0xb1,0xb1,0xb1,0xb0,0xb0,0xb0,0xb1,0xb2,0xb2,0xb2,0xb1,0xb0,0xb0,0xb1,0xb0,
+ 0xaf,0xae,0xad,0xad,0xac,0xac,0xac,0xab,0xaa,0xa9,0xa9,0xa8,0xa9,0xa9,0xa9,
+ 0xa9,0xa8,0xa8,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa5,0xa5,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xc8,0x50,0x50,0x50,0x50,0x50,0x51,0x53,0x54,0x55,0x55,0x55,0x55,0x55,
+ 0x56,0x56,0x57,0x58,0x58,0x58,0x58,0x5a,0x5a,0x59,0x58,0x57,0x59,0x5a,0x5b,
+ 0x5c,0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x61,
+ 0x61,0x62,0x63,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x66,0x65,0x65,0x65,0x66,0x67,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6d,
+ 0x6d,0x6d,0x6d,0x6e,0x6e,0x6d,0x6e,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+ 0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x76,
+ 0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x79,
+ 0x79,0x79,0x7b,0x7b,0x7b,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,0x81,
+ 0x80,0x7f,0x80,0x80,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x83,0x84,
+ 0x84,0x84,0x84,0x83,0x83,0x84,0x85,0x86,0x86,0x85,0x85,0x86,0x87,0x88,0x87,
+ 0x87,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8b,
+ 0x8b,0x8b,0x8c,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,
+ 0x90,0x91,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,
+ 0x92,0x92,0x93,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x95,0x96,0x96,0x96,0x95,0x95,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x99,
+ 0x99,0x9a,0x9a,0x9a,0x9b,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x9f,0x9e,0x9e,0x9e,0x9e,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa1,
+ 0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,
+ 0xa2,0xa3,0xa3,0xa4,0xa4,0xa4,0xa3,0xa3,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,
+ 0xa6,0xa6,0xa6,0xa7,0xa7,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa5,0xa3,0xa7,0xa9,0xa8,0xa7,0xa6,0xa4,0xa6,0xaa,
+ 0xa7,0xa9,0xc4,0x95,0x27,0x04,0x00,0x03,0x04,0x02,0x03,0x03,0x02,0x00,0x00,
+ 0x65,0xa6,0x6e,0x32,0x00,0x01,0x09,0x06,0x03,0x01,0x01,0x01,0x00,0x02,0x04,
+ 0x00,0x19,0x80,0xbd,0xc0,0x44,0x00,0x00,0x01,0x03,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x02,0x03,0x02,0x02,0x01,0x00,0x01,0x03,0x03,0x01,0x03,0x05,
+ 0x00,0x28,0x8a,0xb8,0xc4,0xae,0xa5,0xaa,0xae,0xae,0xaa,0xbb,0xc8,0x80,0x30,
+ 0x04,0x00,0x0a,0x07,0x05,0x0c,0x04,0x00,0x2c,0x6d,0xb8,0xc0,0xa4,0xab,0xb1,
+ 0xae,0xae,0xae,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xb0,0xb0,0xb0,
+ 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+ 0xb1,0xb2,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb2,0xb2,0xb1,0xb1,
+ 0xb2,0xb1,0xaf,0xae,0xad,0xac,0xac,0xab,0xaa,0xaa,0xa9,0xa7,0xa7,0xa8,0xa8,
+ 0xa9,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa5,0xa4,0xa5,0xa6,
+ 0xa7,0xa7,0xa7,0xc8,0x52,0x52,0x50,0x4f,0x4f,0x50,0x52,0x54,0x56,0x56,0x56,
+ 0x55,0x54,0x55,0x57,0x57,0x58,0x59,0x59,0x59,0x5a,0x5a,0x59,0x58,0x58,0x5a,
+ 0x5a,0x5b,0x5b,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x60,0x61,0x62,0x63,0x65,0x65,0x65,0x65,0x64,0x64,0x64,0x65,0x66,0x65,
+ 0x65,0x65,0x66,0x66,0x66,0x66,0x67,0x67,0x68,0x69,0x69,0x6a,0x6a,0x6a,0x6a,
+ 0x6b,0x6c,0x6d,0x6d,0x6e,0x6e,0x6d,0x6d,0x6d,0x6f,0x70,0x70,0x70,0x70,0x70,
+ 0x70,0x71,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x74,0x74,0x75,
+ 0x76,0x77,0x78,0x78,0x78,0x77,0x77,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,
+ 0x7a,0x7a,0x79,0x7a,0x7b,0x7c,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x80,
+ 0x81,0x82,0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x83,
+ 0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x88,
+ 0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x89,0x89,0x89,0x8a,0x8b,0x8b,
+ 0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8f,0x8f,0x8f,0x8f,0x8f,
+ 0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,
+ 0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,
+ 0x95,0x95,0x95,0x96,0x96,0x97,0x96,0x96,0x96,0x98,0x99,0x99,0x99,0x99,0x99,
+ 0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0x9f,0x9f,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa5,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,
+ 0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa8,0xa8,0xa8,0xa7,0xa7,0xa7,0xa7,0xa8,0xa7,0xa7,0xa9,0xab,0xab,0xa6,
+ 0xa3,0xa4,0xa5,0xac,0xc6,0x9c,0x38,0x0e,0x00,0x03,0x03,0x00,0x03,0x04,0x01,
+ 0x00,0x00,0x5c,0x92,0x4c,0x1a,0x01,0x00,0x03,0x03,0x03,0x04,0x03,0x03,0x02,
+ 0x03,0x04,0x00,0x13,0x68,0xae,0xc6,0x47,0x00,0x00,0x02,0x03,0x03,0x02,0x01,
+ 0x00,0x00,0x00,0x00,0x02,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x02,0x05,
+ 0x07,0x06,0x00,0x25,0x78,0xb0,0xc8,0xad,0xa5,0xaf,0xb0,0xae,0xa9,0xb3,0xc5,
+ 0xc8,0x9c,0x22,0x00,0x04,0x07,0x07,0x05,0x00,0x00,0x18,0x52,0xb5,0xc4,0xa6,
+ 0xaa,0xb1,0xb2,0xb0,0xae,0xb4,0xb5,0xb1,0xaf,0xb0,0xb1,0xb1,0xb1,0xb1,0xb1,
+ 0xb1,0xb1,0xb1,0xb1,0xb1,0xb2,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb4,0xb4,0xb3,
+ 0xb3,0xb3,0xb3,0xb4,0xb4,0xb4,0xb4,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+ 0xb1,0xb0,0xae,0xae,0xad,0xac,0xab,0xaa,0xaa,0xaa,0xa9,0xa8,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa8,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa5,0xa4,
+ 0xa5,0xa6,0xa7,0xa7,0xa7,0xc8,0x51,0x51,0x50,0x50,0x50,0x52,0x53,0x54,0x54,
+ 0x54,0x54,0x54,0x55,0x56,0x56,0x57,0x58,0x58,0x59,0x5a,0x5a,0x5b,0x5a,0x59,
+ 0x58,0x5a,0x5b,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,
+ 0x5e,0x60,0x61,0x60,0x60,0x61,0x62,0x64,0x65,0x64,0x64,0x64,0x64,0x64,0x66,
+ 0x67,0x66,0x65,0x65,0x65,0x66,0x67,0x68,0x68,0x69,0x69,0x69,0x6b,0x6c,0x6c,
+ 0x6b,0x6a,0x6b,0x6c,0x6d,0x6f,0x70,0x6f,0x6d,0x6d,0x6d,0x6e,0x6e,0x6e,0x6f,
+ 0x70,0x70,0x72,0x73,0x73,0x73,0x74,0x74,0x75,0x74,0x74,0x75,0x76,0x77,0x76,
+ 0x76,0x76,0x77,0x78,0x78,0x79,0x79,0x78,0x78,0x78,0x78,0x79,0x79,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,
+ 0x7f,0x80,0x81,0x82,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x84,0x84,0x84,0x84,
+ 0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x85,0x85,0x86,0x86,0x87,0x87,0x86,0x86,
+ 0x87,0x8a,0x8a,0x89,0x89,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,
+ 0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8e,0x8f,0x90,0x90,
+ 0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,
+ 0x92,0x92,0x92,0x92,0x93,0x93,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x96,0x97,
+ 0x97,0x96,0x95,0x95,0x95,0x96,0x97,0x98,0x98,0x97,0x98,0x98,0x9a,0x9b,0x9a,
+ 0x9a,0x99,0x99,0x9a,0x9b,0x9b,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa3,0xa3,
+ 0xa4,0xa5,0xa5,0xa4,0xa4,0xa4,0xa5,0xa6,0xa7,0xa7,0xa6,0xa6,0xa6,0xa6,0xa6,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa8,0xa9,0xa9,0xa9,0xa8,0xa8,0xa8,0xa9,0xaa,0xa9,0xa9,0xa9,0xaa,
+ 0xaa,0xa9,0xa9,0xa9,0xa3,0xa5,0xc8,0xa2,0x3d,0x10,0x00,0x04,0x06,0x02,0x01,
+ 0x01,0x01,0x00,0x00,0x63,0xa0,0x5a,0x24,0x00,0x01,0x07,0x02,0x00,0x02,0x03,
+ 0x03,0x00,0x01,0x03,0x00,0x11,0x53,0x9e,0xc3,0x46,0x00,0x01,0x03,0x01,0x03,
+ 0x03,0x01,0x00,0x00,0x00,0x00,0x02,0x03,0x03,0x03,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x04,0x07,0x07,0x00,0x1b,0x61,0xa3,0xc8,0xaf,0xa7,0xb0,0xb0,0xae,0xaf,
+ 0xb4,0xb5,0x8d,0x53,0x11,0x00,0x04,0x03,0x03,0x04,0x02,0x00,0x00,0x31,0xaf,
+ 0xc8,0xb2,0xae,0xae,0xb2,0xb2,0xaf,0xb2,0xb3,0xb2,0xb1,0xb1,0xb2,0xb2,0xb2,
+ 0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+ 0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb0,0xaf,0xae,0xae,0xae,0xae,0xad,
+ 0xac,0xaa,0xa9,0xa8,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,
+ 0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xaa,0xa9,0xa9,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,
+ 0xa7,0xa7,0xa7,0xa8,0xaa,0xaa,0xaa,0xc8,0x50,0x50,0x50,0x51,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x57,0x57,0x56,0x57,0x57,0x57,0x58,0x5a,0x5a,0x5b,
+ 0x5a,0x5a,0x59,0x5a,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,0x5d,0x5e,0x5f,0x60,
+ 0x60,0x60,0x5f,0x60,0x61,0x60,0x60,0x61,0x62,0x64,0x64,0x63,0x63,0x63,0x64,
+ 0x65,0x66,0x68,0x66,0x65,0x65,0x65,0x65,0x67,0x69,0x69,0x69,0x6a,0x69,0x6b,
+ 0x6d,0x6d,0x6c,0x6b,0x6c,0x6d,0x6e,0x70,0x70,0x70,0x6e,0x6d,0x6d,0x6d,0x6e,
+ 0x6e,0x70,0x70,0x72,0x73,0x74,0x74,0x74,0x74,0x75,0x76,0x75,0x74,0x75,0x77,
+ 0x78,0x77,0x77,0x77,0x77,0x78,0x78,0x79,0x7a,0x7a,0x79,0x78,0x78,0x79,0x7a,
+ 0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7d,0x7e,0x7e,0x7e,
+ 0x7e,0x7f,0x7f,0x80,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x84,0x84,0x84,0x85,
+ 0x85,0x85,0x85,0x85,0x86,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,
+ 0x87,0x86,0x88,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,0x8d,0x8d,0x8e,0x8e,0x90,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x91,0x91,0x91,
+ 0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,
+ 0x96,0x97,0x97,0x97,0x97,0x96,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x99,0x9b,
+ 0x9b,0x9b,0x9a,0x9a,0x9a,0x9b,0x9c,0x9b,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9d,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa1,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,
+ 0xa4,0xa4,0xa6,0xa6,0xa6,0xa5,0xa5,0xa5,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa8,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa8,0xa9,0xaa,0xaa,0xa9,0xa8,0xa8,0xa9,0xaa,0xaa,0xaa,0xaa,
+ 0xa9,0xa8,0xa8,0xac,0xae,0xac,0xa2,0xa0,0xc7,0xa7,0x4a,0x16,0x00,0x04,0x07,
+ 0x03,0x00,0x00,0x01,0x00,0x00,0x59,0x92,0x62,0x2d,0x00,0x03,0x0a,0x02,0x00,
+ 0x00,0x02,0x03,0x00,0x00,0x01,0x00,0x0e,0x40,0x8d,0xbe,0x45,0x00,0x02,0x03,
+ 0x01,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x03,0x03,0x02,0x01,0x00,
+ 0x00,0x00,0x00,0x03,0x07,0x08,0x00,0x12,0x4c,0x98,0xc8,0xb1,0xa7,0xb0,0xb0,
+ 0xb0,0xb1,0xb6,0xb0,0x54,0x07,0x00,0x00,0x05,0x01,0x00,0x04,0x04,0x02,0x00,
+ 0x19,0x9a,0xc7,0xbd,0xb2,0xac,0xb2,0xb2,0xb0,0xb0,0xb1,0xb2,0xb2,0xb2,0xb2,
+ 0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb0,0xb0,0xaf,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xad,0xad,0xac,0xad,0xad,0xad,0xad,0xad,0xad,0xac,0xab,0xaa,0xaa,0xa9,0xa9,
+ 0xa9,0xa8,0xa7,0xa6,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa8,0xa9,0xa9,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xab,0xab,0xaa,0xaa,0xac,0xad,0xae,0xae,0xad,0xc8,0x4f,0x4f,0x50,0x51,0x53,
+ 0x53,0x53,0x53,0x53,0x53,0x53,0x55,0x56,0x57,0x56,0x57,0x57,0x57,0x57,0x58,
+ 0x5a,0x5b,0x5b,0x5a,0x5a,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x61,0x61,0x60,0x60,0x5f,0x5f,0x60,0x62,0x63,0x64,0x65,0x64,0x63,0x62,
+ 0x63,0x63,0x64,0x66,0x68,0x68,0x67,0x67,0x66,0x66,0x67,0x68,0x69,0x69,0x69,
+ 0x68,0x69,0x6d,0x6d,0x6d,0x6c,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x6f,0x6f,
+ 0x6f,0x70,0x70,0x72,0x73,0x74,0x74,0x73,0x73,0x73,0x74,0x74,0x75,0x74,0x74,
+ 0x74,0x74,0x75,0x75,0x75,0x76,0x77,0x77,0x77,0x77,0x77,0x79,0x7b,0x79,0x78,
+ 0x78,0x7b,0x7c,0x7d,0x7c,0x7b,0x7b,0x7b,0x7d,0x7e,0x7d,0x7e,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x80,0x81,0x82,0x82,0x83,0x83,0x83,0x83,0x83,0x84,0x85,0x85,
+ 0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x87,0x87,0x87,0x89,
+ 0x8a,0x8a,0x89,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8a,0x8a,0x8a,0x8c,0x8c,0x8c,0x8c,0x8d,0x8c,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,
+ 0x8e,0x8f,0x91,0x91,0x91,0x92,0x92,0x91,0x91,0x91,0x91,0x91,0x92,0x94,0x94,
+ 0x94,0x93,0x93,0x93,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+ 0x96,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x98,0x98,0x98,0x98,
+ 0x99,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa5,0xa4,0xa3,0xa4,0xa4,0xa5,0xa5,0xa4,0xa4,0xa4,0xa5,
+ 0xa4,0xa3,0xa5,0xa7,0xa8,0xa7,0xa5,0xa3,0xa3,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa8,0xa7,0xa8,0xa8,0xa8,0xa9,0xa9,0xaa,0xa9,0xa9,0xa8,0xa8,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xaa,0xab,
+ 0xa9,0xa7,0xa9,0xaa,0xaa,0xac,0xab,0xa7,0xa3,0xa7,0xc3,0xae,0x68,0x28,0x00,
+ 0x02,0x03,0x02,0x02,0x02,0x02,0x00,0x01,0x26,0x43,0x41,0x27,0x01,0x05,0x0a,
+ 0x02,0x00,0x00,0x03,0x05,0x02,0x00,0x00,0x00,0x0a,0x2a,0x7b,0xbc,0x47,0x00,
+ 0x00,0x03,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x01,
+ 0x01,0x00,0x00,0x02,0x02,0x02,0x06,0x07,0x00,0x0e,0x3d,0x91,0xc8,0xaf,0xa7,
+ 0xb4,0xb4,0xaf,0xa7,0xb6,0xc4,0x62,0x0a,0x01,0x01,0x05,0x03,0x01,0x04,0x06,
+ 0x06,0x00,0x12,0x69,0xa3,0xc1,0xb7,0xae,0xb3,0xb3,0xb1,0xb2,0xb2,0xb4,0xb4,
+ 0xb2,0xb1,0xaf,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xac,0xab,0xaa,0xaa,0xaa,
+ 0xa9,0xa9,0xa9,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xa9,0xa8,0xa7,
+ 0xa7,0xa7,0xa7,0xa9,0xa9,0xaa,0xaa,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xab,0xab,0xac,0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xaf,0xb0,0xaf,0xb0,0xb2,0xb3,0xb2,0xb0,0xae,0xc8,0x4f,0x50,0x50,
+ 0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x56,0x57,0x58,0x57,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x59,0x5a,0x5b,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x60,0x61,0x61,0x61,0x61,0x60,0x60,0x61,0x62,0x63,0x64,0x65,0x64,
+ 0x63,0x63,0x63,0x64,0x65,0x66,0x68,0x68,0x68,0x67,0x67,0x67,0x68,0x69,0x69,
+ 0x69,0x69,0x69,0x69,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x6f,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x72,0x73,0x74,0x74,0x73,0x73,0x73,0x73,0x74,0x74,0x75,
+ 0x75,0x75,0x75,0x75,0x75,0x75,0x76,0x76,0x77,0x78,0x78,0x78,0x77,0x78,0x7a,
+ 0x7a,0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7d,0x7e,0x7f,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x84,0x85,
+ 0x85,0x85,0x86,0x86,0x86,0x86,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+ 0x88,0x89,0x8a,0x8a,0x8a,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8b,0x8b,0x8a,0x8b,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8f,
+ 0x8f,0x8e,0x8f,0x90,0x91,0x91,0x92,0x93,0x93,0x92,0x91,0x91,0x91,0x92,0x93,
+ 0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,
+ 0x96,0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9a,0x98,0x98,
+ 0x98,0x99,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,
+ 0xa1,0xa1,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa4,0xa6,0xa6,0xa5,0xa5,
+ 0xa5,0xa6,0xa5,0xa5,0xa7,0xa7,0xa7,0xa5,0xa4,0xa7,0xa7,0xa6,0xa7,0xa8,0xa7,
+ 0xa7,0xa7,0xa9,0xaa,0xa9,0xa9,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xa9,0xa9,
+ 0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,
+ 0xaa,0xaa,0xa9,0xaa,0xab,0xab,0xab,0xac,0xab,0xa8,0xa6,0xaa,0xbe,0xb8,0x91,
+ 0x3d,0x00,0x00,0x03,0x03,0x03,0x02,0x03,0x03,0x03,0x0a,0x13,0x20,0x16,0x02,
+ 0x03,0x07,0x01,0x00,0x03,0x03,0x03,0x03,0x02,0x00,0x00,0x07,0x1f,0x77,0xc1,
+ 0x49,0x00,0x00,0x03,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x00,0x00,0x01,0x02,0x03,0x04,0x04,0x00,0x09,0x2a,0x86,0xc8,
+ 0xb3,0xaa,0xb2,0xb2,0xaf,0xa7,0xb9,0xc8,0x67,0x0c,0x03,0x01,0x03,0x03,0x03,
+ 0x04,0x07,0x07,0x00,0x0d,0x46,0x8b,0xc5,0xba,0xad,0xb2,0xb2,0xb1,0xb1,0xb2,
+ 0xb2,0xb1,0xb0,0xae,0xad,0xac,0xac,0xac,0xac,0xac,0xab,0xab,0xaa,0xaa,0xaa,
+ 0xaa,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xac,
+ 0xac,0xac,0xad,0xad,0xad,0xae,0xae,0xae,0xaf,0xb1,0xb2,0xb2,0xb1,0xaf,0xaf,
+ 0xaf,0xae,0xae,0xaf,0xaf,0xaf,0xb0,0xb0,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,
+ 0xb1,0xb1,0xb1,0xb1,0xb2,0xb2,0xb2,0xb2,0xb3,0xb3,0xb2,0xaf,0xad,0xc8,0x50,
+ 0x50,0x51,0x53,0x54,0x55,0x56,0x57,0x57,0x57,0x58,0x59,0x5a,0x59,0x56,0x56,
+ 0x57,0x57,0x57,0x57,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5c,0x5d,
+ 0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x63,
+ 0x64,0x64,0x64,0x64,0x65,0x65,0x66,0x67,0x68,0x68,0x68,0x67,0x67,0x68,0x69,
+ 0x69,0x6b,0x6c,0x6c,0x6b,0x6b,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,
+ 0x70,0x70,0x71,0x71,0x71,0x71,0x72,0x72,0x72,0x72,0x72,0x73,0x74,0x74,0x74,
+ 0x74,0x75,0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x78,0x78,0x78,0x79,0x79,0x79,
+ 0x79,0x79,0x7b,0x7c,0x7d,0x7c,0x7b,0x7b,0x7d,0x7f,0x7f,0x7f,0x7e,0x7d,0x7d,
+ 0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x81,0x81,0x81,0x81,0x82,0x83,0x84,0x84,
+ 0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x87,0x87,0x88,0x88,0x88,0x88,0x88,0x88,
+ 0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,
+ 0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,
+ 0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x92,0x93,0x93,0x93,0x93,0x92,0x92,0x92,
+ 0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,
+ 0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,
+ 0x98,0x98,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa1,0xa1,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,
+ 0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa5,
+ 0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa6,0xa5,0xa3,0xa4,0xae,0xae,0xa5,0xa7,
+ 0xa9,0xa7,0xa7,0xa9,0xaa,0xaa,0xaa,0xaa,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xab,0xae,0xab,0xa8,0xac,0xae,0xae,0xad,0xac,0xab,0xac,0xaf,0xab,0xaa,0xb7,
+ 0xc1,0xbb,0x54,0x00,0x00,0x03,0x07,0x03,0x00,0x04,0x06,0x04,0x02,0x00,0x02,
+ 0x03,0x03,0x01,0x00,0x00,0x03,0x07,0x02,0x00,0x03,0x03,0x01,0x00,0x04,0x1a,
+ 0x77,0xc8,0x4a,0x00,0x01,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x03,0x00,0x01,0x04,0x15,
+ 0x7b,0xc8,0xba,0xae,0xae,0xaf,0xb0,0xad,0xbd,0xc8,0x65,0x0c,0x03,0x00,0x01,
+ 0x03,0x03,0x04,0x07,0x09,0x00,0x07,0x30,0x7c,0xc8,0xbb,0xaa,0xae,0xaf,0xaf,
+ 0xaf,0xae,0xac,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,
+ 0xab,0xab,0xab,0xab,0xab,0xac,0xad,0xae,0xae,0xae,0xaf,0xb0,0xb1,0xb0,0xb0,
+ 0xb1,0xb2,0xb3,0xb4,0xb5,0xb5,0xb5,0xb5,0xb4,0xb3,0xb2,0xb4,0xb6,0xb6,0xb5,
+ 0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+ 0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb2,0xb2,0xb1,0xb0,0xaf,0xae,0xae,0xac,0xab,
+ 0xc8,0x50,0x50,0x51,0x52,0x53,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5c,
+ 0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x61,0x62,0x62,0x63,0x63,0x62,0x62,0x62,0x62,
+ 0x62,0x63,0x64,0x64,0x65,0x65,0x65,0x66,0x67,0x67,0x67,0x68,0x68,0x68,0x68,
+ 0x69,0x69,0x6a,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x70,
+ 0x70,0x71,0x71,0x71,0x71,0x72,0x73,0x73,0x73,0x72,0x72,0x73,0x74,0x74,0x74,
+ 0x75,0x75,0x75,0x76,0x77,0x78,0x78,0x78,0x79,0x79,0x79,0x79,0x79,0x79,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x7f,0x7f,0x7f,0x80,0x81,0x82,0x81,0x82,0x82,0x82,0x83,0x83,0x83,0x83,0x84,
+ 0x84,0x84,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x88,
+ 0x89,0x88,0x88,0x89,0x8a,0x8a,0x8b,0x8b,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,
+ 0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x90,0x90,0x8f,0x8f,0x8f,0x8f,
+ 0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x93,0x93,0x94,0x94,0x93,0x93,
+ 0x92,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x97,
+ 0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x9b,0x9b,0x9c,0x9c,
+ 0x9c,0x9c,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,
+ 0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,0xa0,
+ 0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa6,
+ 0xa6,0xa6,0xa7,0xa6,0xa6,0xa6,0xa7,0xa7,0xa5,0xa7,0xaa,0xa9,0xa7,0xa9,0xa9,
+ 0xa8,0xa7,0xa7,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,
+ 0xab,0xab,0xac,0xad,0xab,0xaa,0xad,0xae,0xab,0xac,0xac,0xaa,0xaa,0xad,0xab,
+ 0xaa,0xaa,0xb9,0xc8,0x6f,0x12,0x02,0x01,0x07,0x07,0x05,0x03,0x03,0x03,0x01,
+ 0x00,0x00,0x03,0x07,0x03,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x04,0x03,0x00,
+ 0x00,0x0a,0x5e,0xae,0x46,0x00,0x00,0x01,0x01,0x02,0x02,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x03,0x03,
+ 0x00,0x07,0x6d,0xc8,0xba,0xb0,0xae,0xae,0xb0,0xae,0xbe,0xc8,0x62,0x08,0x00,
+ 0x00,0x03,0x03,0x03,0x03,0x07,0x0a,0x00,0x04,0x21,0x71,0xc8,0xb9,0xa5,0xa7,
+ 0xa9,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xaa,0xaa,0xab,0xab,0xac,
+ 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,
+ 0xb0,0xb1,0xb1,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb0,0xb0,0xb0,0xb2,
+ 0xb2,0xb1,0xaf,0xae,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xae,
+ 0xae,0xaf,0xaf,0xaf,0xae,0xae,0xac,0xab,0xac,0xac,0xaa,0xa9,0xaa,0xaa,0xab,
+ 0xad,0xad,0xc8,0x50,0x50,0x50,0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x54,0x53,
+ 0x53,0x54,0x56,0x57,0x57,0x57,0x57,0x57,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+ 0x5b,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x60,0x61,0x62,0x63,0x64,0x64,0x62,0x62,
+ 0x62,0x62,0x62,0x63,0x65,0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x67,0x68,0x69,
+ 0x69,0x69,0x69,0x69,0x6a,0x6c,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,
+ 0x70,0x70,0x70,0x71,0x71,0x71,0x72,0x72,0x74,0x74,0x73,0x73,0x73,0x74,0x74,
+ 0x75,0x76,0x76,0x76,0x76,0x76,0x77,0x78,0x78,0x79,0x7a,0x7a,0x7a,0x7a,0x7a,
+ 0x7a,0x7b,0x7c,0x7c,0x7d,0x7d,0x7c,0x7c,0x7d,0x7f,0x80,0x80,0x7f,0x7f,0x7f,
+ 0x7f,0x81,0x81,0x7f,0x80,0x81,0x82,0x82,0x82,0x83,0x84,0x84,0x85,0x85,0x85,
+ 0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x88,0x88,0x88,0x88,
+ 0x88,0x89,0x89,0x89,0x89,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8c,
+ 0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8e,0x8f,0x91,0x91,0x90,0x90,
+ 0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x91,0x92,0x93,0x94,0x94,0x94,
+ 0x94,0x93,0x93,0x93,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x97,
+ 0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9b,
+ 0x9b,0x9c,0x9c,0x9c,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9e,
+ 0x9f,0x9f,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,
+ 0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa7,0xa8,0xa9,0xa9,
+ 0xa8,0xa7,0xa6,0xa7,0xa7,0xa7,0xa6,0xa5,0xa7,0xa7,0xa5,0xa7,0xac,0xac,0xa9,
+ 0xa4,0xa5,0xaa,0xaa,0xa9,0xaa,0xaa,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,
+ 0xab,0xab,0xab,0xac,0xac,0xab,0xac,0xad,0xae,0xac,0xaa,0xaa,0xac,0xaa,0xaa,
+ 0xaa,0xab,0xaa,0xa3,0xb2,0xc8,0x8b,0x3b,0x0d,0x00,0x07,0x09,0x07,0x03,0x01,
+ 0x02,0x03,0x03,0x03,0x06,0x08,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x03,0x03,
+ 0x03,0x00,0x00,0x00,0x3d,0x82,0x3a,0x01,0x00,0x00,0x00,0x02,0x02,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x00,0x02,
+ 0x05,0x03,0x00,0x00,0x60,0xba,0xb8,0xb2,0xae,0xae,0xaf,0xaf,0xbe,0xc5,0x5d,
+ 0x03,0x00,0x00,0x04,0x03,0x01,0x03,0x07,0x0a,0x00,0x04,0x22,0x71,0xc8,0xb8,
+ 0xa3,0xa6,0xa7,0xa8,0xa9,0xaa,0xaa,0xa9,0xa9,0xaa,0xaa,0xaa,0xab,0xab,0xac,
+ 0xad,0xae,0xae,0xae,0xae,0xad,0xad,0xac,0xac,0xad,0xad,0xad,0xad,0xad,0xac,
+ 0xad,0xad,0xae,0xae,0xae,0xae,0xad,0xad,0xad,0xad,0xad,0xac,0xac,0xab,0xaa,
+ 0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,0xab,0xaa,0xab,0xaa,0xa9,
+ 0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xa9,0xa7,0xa6,0xa5,0xa5,0xa5,0xa3,0xa2,0xa3,
+ 0xa4,0xa6,0xa8,0xa9,0xc8,0x50,0x51,0x51,0x52,0x53,0x53,0x53,0x54,0x54,0x54,
+ 0x53,0x53,0x53,0x53,0x57,0x57,0x58,0x58,0x58,0x59,0x5a,0x5b,0x5b,0x5a,0x5a,
+ 0x5a,0x5b,0x5a,0x5b,0x5c,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x62,0x62,
+ 0x62,0x61,0x61,0x62,0x62,0x64,0x65,0x66,0x66,0x66,0x65,0x65,0x65,0x66,0x67,
+ 0x68,0x69,0x6a,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6c,0x6c,0x6c,0x6d,0x6e,
+ 0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x73,0x73,0x73,0x73,0x74,
+ 0x74,0x76,0x77,0x78,0x78,0x77,0x76,0x76,0x76,0x77,0x78,0x79,0x79,0x7a,0x7a,
+ 0x7b,0x7b,0x7b,0x7b,0x7c,0x7e,0x7f,0x7f,0x7d,0x7c,0x7c,0x7f,0x81,0x81,0x7f,
+ 0x7e,0x7e,0x7f,0x82,0x82,0x80,0x80,0x81,0x82,0x82,0x82,0x83,0x84,0x85,0x85,
+ 0x85,0x84,0x84,0x84,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x88,0x88,
+ 0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8c,0x8c,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x90,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x92,0x93,0x94,
+ 0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x96,0x95,0x95,0x96,0x96,0x96,0x97,
+ 0x97,0x97,0x97,0x98,0x98,0x98,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,
+ 0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,
+ 0xa7,0xa8,0xa8,0xa7,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xa9,0xa5,0xa0,
+ 0xa3,0xa6,0xa7,0xa8,0xaa,0xae,0xaf,0xaa,0xa8,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,
+ 0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xab,0xab,0xac,0xac,0xac,
+ 0xab,0xab,0xab,0xab,0xac,0xad,0xac,0xa9,0xab,0xae,0xac,0xaa,0xab,0xac,0xad,
+ 0xae,0xad,0xaa,0xae,0xb0,0xa7,0xb0,0xc4,0xa7,0x6e,0x19,0x00,0x06,0x04,0x03,
+ 0x06,0x05,0x02,0x00,0x00,0x03,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x02,0x03,
+ 0x01,0x01,0x02,0x00,0x00,0x00,0x1e,0x42,0x20,0x04,0x03,0x03,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x02,0x00,0x00,0x00,0x52,0xa4,0xb4,0xb5,0xb0,0xae,0xae,0xb1,0xbd,
+ 0xbf,0x57,0x00,0x00,0x00,0x05,0x03,0x02,0x03,0x06,0x0a,0x00,0x08,0x38,0x82,
+ 0xc8,0xb9,0xa7,0xac,0xae,0xae,0xb1,0xb2,0xb2,0xb1,0xb1,0xb0,0xb0,0xb0,0xb0,
+ 0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xaf,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xac,
+ 0xab,0xab,0xab,0xab,0xaa,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa8,0xa7,0xa6,
+ 0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa6,0xa6,0xa6,0xa6,
+ 0xa6,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa5,0xa3,0xa2,0xa1,0xa0,0xa0,0xa0,0x9d,
+ 0x9c,0x9b,0x9a,0x99,0x98,0x98,0xc8,0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x54,
+ 0x55,0x55,0x54,0x54,0x53,0x54,0x57,0x58,0x58,0x58,0x58,0x59,0x5a,0x5b,0x5b,
+ 0x5b,0x5a,0x5b,0x5b,0x5a,0x5b,0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,
+ 0x61,0x61,0x61,0x61,0x61,0x62,0x62,0x64,0x65,0x66,0x66,0x66,0x65,0x65,0x65,
+ 0x66,0x67,0x68,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6b,0x6c,
+ 0x6d,0x6d,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x72,0x72,0x73,
+ 0x73,0x74,0x74,0x76,0x77,0x78,0x78,0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x79,
+ 0x7a,0x7a,0x7b,0x7b,0x7c,0x7c,0x7d,0x7e,0x7e,0x7e,0x7d,0x7d,0x7e,0x7f,0x80,
+ 0x7f,0x7f,0x7f,0x7f,0x80,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x82,0x83,0x84,
+ 0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x88,0x88,
+ 0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x90,0x91,0x91,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x93,0x94,0x94,0x93,0x93,
+ 0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x96,0x96,0x95,0x96,0x96,
+ 0x96,0x97,0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x99,0x99,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,
+ 0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa3,0xa3,0xa3,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,
+ 0xa6,0xa6,0xa7,0xa8,0xa7,0xa7,0xa6,0xa7,0xa7,0xa8,0xa9,0xa9,0xaa,0xaa,0xa4,
+ 0xa8,0xb2,0xb3,0xb0,0xa8,0xa7,0xab,0xad,0xad,0xaa,0xa9,0xa9,0xaa,0xaa,0xaa,
+ 0xab,0xac,0xac,0xac,0xab,0xab,0xab,0xab,0xac,0xad,0xac,0xab,0xab,0xac,0xac,
+ 0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xad,0xac,0xaa,0xab,0xae,0xab,0xab,0xae,
+ 0xae,0xac,0xaf,0xaf,0xad,0xaf,0xb1,0xaa,0xae,0xb9,0xbc,0x9a,0x2a,0x00,0x03,
+ 0x02,0x01,0x04,0x05,0x03,0x02,0x01,0x04,0x03,0x00,0x02,0x03,0x00,0x00,0x01,
+ 0x03,0x03,0x00,0x00,0x03,0x03,0x00,0x00,0x0c,0x1d,0x12,0x07,0x03,0x03,0x03,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x03,0x04,0x04,0x02,0x00,0x00,0x4c,0x9c,0xb4,0xb9,0xb3,0xae,0xae,
+ 0xb5,0xbe,0xb9,0x52,0x00,0x00,0x01,0x03,0x04,0x03,0x02,0x05,0x0a,0x00,0x0d,
+ 0x4c,0x91,0xc8,0xb9,0xaa,0xb1,0xb2,0xb2,0xb5,0xb6,0xb5,0xb4,0xb3,0xb2,0xb2,
+ 0xb1,0xb0,0xaf,0xaf,0xae,0xae,0xae,0xae,0xab,0xaa,0xaa,0xa9,0xa9,0xa9,0xa9,
+ 0xa8,0xa7,0xa7,0xa7,0xa6,0xa6,0xa5,0xa4,0xa3,0xa3,0xa2,0xa3,0xa3,0xa3,0xa3,
+ 0xa2,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f,0x9e,0x9c,0x9a,0x98,0x97,0x95,0x95,
+ 0x95,0x94,0x92,0x90,0x8d,0x8b,0x8a,0x89,0xc8,0x52,0x52,0x51,0x51,0x52,0x52,
+ 0x53,0x54,0x56,0x56,0x56,0x56,0x55,0x55,0x57,0x57,0x58,0x58,0x58,0x59,0x5a,
+ 0x5b,0x5b,0x5b,0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x61,0x61,0x61,0x62,0x62,0x62,0x62,0x62,0x64,0x65,0x66,0x66,0x66,0x65,
+ 0x65,0x65,0x66,0x67,0x68,0x69,0x6a,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,0x6a,
+ 0x6b,0x6c,0x6d,0x6d,0x6f,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x72,0x72,0x71,
+ 0x71,0x72,0x73,0x74,0x74,0x75,0x76,0x77,0x77,0x77,0x77,0x78,0x78,0x78,0x78,
+ 0x78,0x79,0x7a,0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7c,0x7b,0x7e,0x7f,0x80,
+ 0x7f,0x7f,0x7e,0x7f,0x81,0x82,0x82,0x81,0x81,0x82,0x83,0x83,0x83,0x83,0x83,
+ 0x83,0x84,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x89,0x89,0x8a,
+ 0x8a,0x8a,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8e,0x8d,0x8d,0x8d,0x8e,0x8e,0x8e,0x8f,0x8f,0x90,0x90,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x93,0x94,0x95,0x95,
+ 0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x96,0x96,
+ 0x96,0x96,0x97,0x97,0x97,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x99,0x99,0x99,
+ 0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,
+ 0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xaa,0xaa,
+ 0xa9,0xa0,0xab,0xc8,0xc5,0xb9,0xa9,0xa7,0xad,0xa9,0xa6,0xaa,0xaa,0xa9,0xaa,
+ 0xab,0xac,0xac,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xae,0xad,0xac,0xad,
+ 0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xae,0xad,0xac,0xac,
+ 0xae,0xb2,0xae,0xab,0xae,0xb0,0xb0,0xaf,0xae,0xad,0xac,0xac,0xc7,0xb9,0x3f,
+ 0x03,0x03,0x01,0x02,0x01,0x03,0x05,0x05,0x04,0x03,0x03,0x03,0x05,0x05,0x00,
+ 0x01,0x04,0x02,0x00,0x00,0x01,0x04,0x05,0x03,0x00,0x05,0x0e,0x0c,0x07,0x00,
+ 0x01,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x03,0x04,0x07,0x0a,0x05,0x00,0x00,0x4b,0x9c,0xb7,0xbe,0xb6,
+ 0xb0,0xaf,0xb9,0xc1,0xb6,0x50,0x00,0x00,0x01,0x02,0x04,0x06,0x02,0x04,0x08,
+ 0x00,0x11,0x5b,0x9c,0xc8,0xb9,0xab,0xb2,0xb5,0xb4,0xb5,0xb5,0xb4,0xb2,0xb2,
+ 0xb1,0xaf,0xae,0xad,0xab,0xaa,0xaa,0xa9,0xa9,0xa8,0xa4,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa2,0xa1,0xa1,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa0,0x9f,0x9d,0x9c,0x9c,
+ 0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0x9e,0x9d,0x9c,0x9c,0x9b,0x99,0x98,0x98,0x96,0x95,0x92,0x90,0x8d,0x8b,
+ 0x8a,0x8a,0x8a,0x8a,0x89,0x87,0x85,0x82,0x80,0x7f,0xc8,0x51,0x51,0x51,0x51,
+ 0x51,0x52,0x52,0x53,0x54,0x55,0x56,0x56,0x55,0x55,0x56,0x57,0x57,0x57,0x57,
+ 0x58,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x65,
+ 0x65,0x65,0x66,0x67,0x66,0x66,0x68,0x69,0x6a,0x6a,0x69,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x6b,0x6c,0x6d,0x6e,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x72,
+ 0x72,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x75,0x76,0x77,0x78,0x78,0x79,0x7a,
+ 0x7a,0x79,0x79,0x7a,0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7d,0x7c,0x7c,0x7e,
+ 0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x81,0x82,0x82,0x82,0x83,0x85,0x85,0x85,0x85,
+ 0x85,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x88,0x89,0x8a,
+ 0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8f,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x90,0x91,
+ 0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x92,0x93,0x94,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x98,0x98,
+ 0x98,0x97,0x97,0x97,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa9,0xa9,0xa9,0xa9,0xa8,0xa7,0xa7,0xa8,0xa9,
+ 0xaa,0xa7,0xa9,0xb8,0xaa,0x86,0x7f,0x8b,0xaf,0xb7,0xa8,0xaa,0xad,0xac,0xaa,
+ 0xaa,0xaa,0xac,0xad,0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xae,0xaf,0xae,
+ 0xac,0xae,0xaf,0xaf,0xae,0xad,0xad,0xae,0xaf,0xae,0xad,0xb2,0xaf,0xa8,0xc0,
+ 0xb9,0x55,0x16,0x02,0x02,0x08,0x07,0x05,0x03,0x03,0x03,0x01,0x01,0x02,0x03,
+ 0x02,0x00,0x00,0x02,0x02,0x01,0x03,0x03,0x02,0x03,0x04,0x06,0x06,0x04,0x03,
+ 0x03,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x04,0x05,0x00,0x00,0x41,0x8e,0xb9,
+ 0xc1,0xae,0xae,0xb3,0xba,0xc1,0xb9,0x52,0x00,0x00,0x02,0x04,0x03,0x03,0x04,
+ 0x06,0x06,0x00,0x12,0x5e,0x9c,0xc7,0xb8,0xaa,0xb0,0xb3,0xb3,0xb2,0xb0,0xb0,
+ 0xb0,0xaf,0xae,0xad,0xab,0xa9,0xa7,0xa7,0xa6,0xa5,0xa5,0xa5,0xa4,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa2,0xa2,0xa1,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,0x9e,0x9c,0x9b,
+ 0x9a,0x99,0x99,0x9a,0x9b,0x9b,0x9c,0x9c,0x9b,0x99,0x99,0x9a,0x9a,0x9a,0x9a,
+ 0x99,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x93,0x93,0x92,0x92,0x91,0x91,0x91,
+ 0x90,0x90,0x90,0x91,0x91,0x8e,0x8d,0x8e,0x90,0x91,0x91,0x91,0xc8,0x51,0x51,
+ 0x51,0x51,0x51,0x52,0x52,0x53,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x56,0x57,
+ 0x57,0x57,0x57,0x59,0x5a,0x5a,0x59,0x59,0x5a,0x5b,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x61,0x62,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x64,0x65,
+ 0x65,0x65,0x65,0x65,0x67,0x68,0x67,0x66,0x68,0x69,0x6a,0x69,0x69,0x69,0x69,
+ 0x69,0x6a,0x6a,0x6a,0x6b,0x6d,0x6d,0x6e,0x6f,0x70,0x70,0x70,0x70,0x71,0x71,
+ 0x71,0x72,0x72,0x73,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x75,0x77,0x78,0x79,
+ 0x7a,0x7b,0x7b,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,
+ 0x7e,0x7e,0x7e,0x7e,0x7f,0x80,0x80,0x81,0x81,0x82,0x82,0x84,0x85,0x86,0x86,
+ 0x86,0x86,0x86,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x87,0x87,0x87,0x88,
+ 0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8e,0x8e,0x8e,0x8e,0x8e,0x8f,0x90,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x94,
+ 0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x97,0x97,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9e,
+ 0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,
+ 0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xaa,0xa9,0xa8,0xaa,0xaa,0xaa,0xa8,0xa7,
+ 0xa9,0xaa,0xaa,0xa6,0xa9,0xc8,0xa1,0x41,0x33,0x57,0xb1,0xc6,0xa5,0xaa,0xb0,
+ 0xac,0xab,0xab,0xac,0xac,0xad,0xad,0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xaf,0xae,0xac,0xae,0xb0,0xae,0xad,0xae,0xae,0xae,0xb4,0xb1,
+ 0xa7,0xb9,0xb7,0x73,0x32,0x02,0x02,0x0c,0x0a,0x05,0x00,0x00,0x01,0x00,0x00,
+ 0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x03,0x00,0x00,0x03,0x08,0x06,
+ 0x00,0x00,0x02,0x05,0x03,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x01,0x05,0x00,0x00,0x36,
+ 0x7f,0xb9,0xc3,0xa8,0xac,0xb5,0xb8,0xc0,0xbb,0x52,0x00,0x00,0x03,0x07,0x02,
+ 0x00,0x06,0x07,0x03,0x00,0x12,0x62,0xa0,0xc5,0xb7,0xa9,0xae,0xb2,0xb3,0xaf,
+ 0xae,0xae,0xae,0xae,0xad,0xac,0xaa,0xa9,0xa7,0xa7,0xa6,0xa5,0xa5,0xa5,0xa7,
+ 0xa7,0xa7,0xa7,0xa6,0xa5,0xa5,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa1,
+ 0xa0,0xa0,0x9f,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9c,0x99,0x99,0x9a,0x9a,
+ 0x9a,0x9a,0x99,0x98,0x98,0x97,0x96,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,
+ 0x97,0x98,0x98,0x98,0x99,0x9a,0x99,0x96,0x95,0x99,0x9c,0x9e,0xa0,0xa0,0xc8,
+ 0x52,0x52,0x52,0x52,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x55,0x54,0x54,0x54,
+ 0x55,0x56,0x56,0x56,0x57,0x58,0x59,0x5a,0x5a,0x59,0x5a,0x5a,0x5b,0x5c,0x5d,
+ 0x5d,0x5d,0x5d,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x61,0x62,0x63,0x63,0x63,0x64,
+ 0x65,0x65,0x64,0x64,0x63,0x65,0x66,0x69,0x68,0x67,0x68,0x69,0x69,0x69,0x69,
+ 0x69,0x69,0x6a,0x6a,0x6b,0x6b,0x6c,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x70,
+ 0x71,0x71,0x71,0x71,0x72,0x74,0x74,0x74,0x75,0x76,0x75,0x76,0x76,0x76,0x77,
+ 0x78,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,0x7c,0x7d,0x7d,
+ 0x7e,0x7f,0x7f,0x7d,0x7c,0x7d,0x7f,0x82,0x82,0x82,0x80,0x81,0x82,0x85,0x86,
+ 0x84,0x84,0x85,0x85,0x85,0x84,0x84,0x84,0x84,0x85,0x85,0x85,0x85,0x86,0x87,
+ 0x87,0x87,0x88,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8c,0x8d,0x8d,0x8d,0x8c,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,
+ 0x8f,0x90,0x90,0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,
+ 0x94,0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x97,0x96,0x96,0x97,0x97,0x97,0x97,
+ 0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,
+ 0xa0,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,
+ 0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa8,
+ 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xa8,0xa7,0xa6,0xa8,0xaa,0xaa,
+ 0xa9,0xa7,0xaa,0xac,0xad,0xa9,0xa9,0xc2,0x8a,0x18,0x07,0x34,0xa7,0xc8,0xa9,
+ 0xa7,0xa9,0xaa,0xad,0xb0,0xae,0xac,0xac,0xac,0xac,0xad,0xad,0xae,0xae,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xb0,0xb0,0xaf,0xae,
+ 0xae,0xad,0xac,0xae,0xaf,0xaf,0xae,0xab,0xaf,0xb4,0xb2,0xb0,0xb0,0xb2,0xb3,
+ 0xb1,0xaa,0xa5,0xbb,0xc4,0x9e,0x57,0x03,0x00,0x0a,0x03,0x01,0x02,0x01,0x01,
+ 0x03,0x03,0x03,0x03,0x03,0x04,0x02,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x00,0x00,0x03,0x05,0x01,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,0x00,0x02,0x05,0x05,0x00,
+ 0x00,0x2f,0x71,0xb5,0xc4,0xa7,0xac,0xb4,0xb4,0xba,0xb6,0x4e,0x00,0x00,0x03,
+ 0x08,0x03,0x00,0x07,0x06,0x02,0x00,0x15,0x70,0xaa,0xc5,0xb7,0xab,0xb1,0xb4,
+ 0xb5,0xb3,0xb1,0xb1,0xb1,0xb2,0xb1,0xb0,0xaf,0xae,0xad,0xac,0xab,0xab,0xaa,
+ 0xaa,0xac,0xac,0xab,0xaa,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xaa,
+ 0xac,0xad,0xae,0xae,0xaf,0xaf,0xaf,0xae,0xac,0xaa,0xaa,0xa8,0xa7,0xa8,0xa8,
+ 0xa8,0xa8,0xa8,0xa7,0xa7,0xa7,0xa6,0xa6,0xa5,0xa4,0xa5,0xa7,0xa7,0xa5,0xa4,
+ 0xa3,0xa3,0xa3,0xa3,0xa2,0xa0,0xa0,0x9f,0x9f,0x9f,0xa0,0xa1,0xa2,0xa1,0xa0,
+ 0x9c,0xc8,0x50,0x50,0x50,0x51,0x52,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,
+ 0x54,0x54,0x56,0x56,0x56,0x56,0x57,0x58,0x59,0x5a,0x5a,0x59,0x5a,0x5b,0x5b,
+ 0x5b,0x5c,0x5d,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x61,0x62,0x62,
+ 0x63,0x65,0x65,0x65,0x64,0x63,0x63,0x65,0x66,0x68,0x68,0x68,0x69,0x69,0x68,
+ 0x68,0x68,0x68,0x69,0x6a,0x6b,0x6c,0x6c,0x6d,0x6e,0x6e,0x6e,0x6e,0x6f,0x6f,
+ 0x70,0x70,0x71,0x71,0x71,0x71,0x72,0x73,0x74,0x74,0x75,0x77,0x77,0x78,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x79,0x7a,0x7a,0x7b,0x7b,0x7b,0x7b,0x7b,0x7c,0x7c,
+ 0x7d,0x7e,0x7e,0x7f,0x80,0x7f,0x7e,0x7e,0x7f,0x81,0x82,0x82,0x81,0x82,0x82,
+ 0x84,0x84,0x82,0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x86,0x86,
+ 0x86,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8b,0x8a,0x8a,
+ 0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,0x8c,0x8b,0x8d,0x8d,0x8f,0x8f,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x8f,0x90,0x90,0x91,0x91,0x91,0x92,0x92,0x92,0x92,0x93,0x93,0x93,
+ 0x93,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x97,0x97,0x97,0x96,0x96,0x97,0x97,
+ 0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,
+ 0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,
+ 0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,
+ 0xa2,0xa1,0xa1,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,0xa7,0xa5,0xa8,
+ 0xaa,0xab,0xa9,0xa7,0xaa,0xac,0xae,0xa8,0xa8,0xc4,0x8c,0x17,0x00,0x1c,0x9b,
+ 0xc8,0xad,0xa8,0xa7,0xaa,0xae,0xb1,0xae,0xac,0xac,0xac,0xac,0xad,0xad,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xb0,0xb0,0xb0,
+ 0xaf,0xae,0xad,0xad,0xae,0xaf,0xaf,0xaf,0xae,0xad,0xaf,0xb1,0xb1,0xb0,0xb0,
+ 0xb2,0xb3,0xb0,0xab,0xa8,0xb9,0xc2,0xb3,0x6d,0x04,0x00,0x06,0x01,0x00,0x03,
+ 0x02,0x02,0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x00,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x03,0x06,
+ 0x04,0x00,0x00,0x29,0x67,0xb3,0xc5,0xa8,0xaa,0xb0,0xb2,0xb5,0xab,0x48,0x00,
+ 0x00,0x03,0x05,0x04,0x03,0x05,0x03,0x00,0x00,0x19,0x84,0xb7,0xc1,0xb4,0xa9,
+ 0xae,0xb0,0xb2,0xb0,0xaf,0xaf,0xaf,0xb0,0xb0,0xb0,0xb0,0xaf,0xae,0xad,0xac,
+ 0xac,0xab,0xaa,0xab,0xaa,0xaa,0xa9,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xaa,
+ 0xaa,0xae,0xaf,0xb0,0xb0,0xb0,0xaf,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xad,0xac,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa7,0xa6,0xa5,0xa6,0xa7,0xa7,
+ 0xa5,0xa4,0xa3,0xa3,0xa2,0xa0,0x9e,0x9b,0x98,0x97,0x96,0x96,0x95,0x95,0x94,
+ 0x94,0x94,0x93,0xc8,0x4d,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x56,0x57,0x56,0x56,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,
+ 0x5b,0x5b,0x5c,0x5d,0x5e,0x5e,0x5d,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,
+ 0x60,0x61,0x63,0x65,0x65,0x65,0x64,0x63,0x63,0x64,0x65,0x67,0x68,0x68,0x69,
+ 0x69,0x68,0x67,0x67,0x68,0x69,0x69,0x6b,0x6c,0x6d,0x6d,0x6e,0x6e,0x6e,0x6e,
+ 0x6e,0x6f,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x72,0x73,0x74,0x75,0x77,0x78,
+ 0x78,0x78,0x78,0x78,0x77,0x76,0x76,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x7b,0x7b,
+ 0x7b,0x7c,0x7d,0x7e,0x7f,0x7f,0x7f,0x80,0x80,0x80,0x7f,0x7f,0x80,0x82,0x82,
+ 0x83,0x83,0x82,0x82,0x82,0x83,0x84,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x88,0x89,0x8a,0x8a,0x8b,0x8c,0x8c,
+ 0x8b,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8b,0x8b,0x8c,0x8d,0x8f,0x8f,0x8f,
+ 0x8f,0x8f,0x8f,0x8f,0x90,0x90,0x90,0x91,0x91,0x91,0x92,0x92,0x93,0x93,0x93,
+ 0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x97,0x97,0x97,0x96,0x96,
+ 0x96,0x96,0x97,0x98,0x98,0x98,0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,
+ 0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0xa0,0xa0,0xa0,0xa0,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xaa,0xac,0xaa,
+ 0xa7,0xa9,0xab,0xac,0xa9,0xa7,0xa9,0xab,0xac,0xa5,0xa7,0xc8,0x9e,0x32,0x00,
+ 0x0f,0x8d,0xc0,0xb1,0xac,0xa9,0xac,0xae,0xaf,0xae,0xad,0xad,0xad,0xad,0xad,
+ 0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,
+ 0xb0,0xb0,0xaf,0xae,0xac,0xad,0xb1,0xb2,0xb0,0xaf,0xb0,0xb2,0xae,0xab,0xae,
+ 0xaf,0xaf,0xaf,0xaf,0xb0,0xaf,0xae,0xb4,0xb8,0xb9,0x78,0x0a,0x00,0x00,0x03,
+ 0x03,0x03,0x02,0x02,0x02,0x01,0x00,0x00,0x01,0x01,0x02,0x03,0x00,0x00,0x01,
+ 0x01,0x01,0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x02,0x04,0x05,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,
+ 0x03,0x04,0x04,0x00,0x00,0x24,0x60,0xb2,0xc7,0xaa,0xa7,0xaa,0xb3,0xb2,0x9d,
+ 0x41,0x00,0x02,0x03,0x00,0x07,0x09,0x03,0x01,0x01,0x00,0x1c,0x98,0xc4,0xbc,
+ 0xae,0xa5,0xa8,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xad,0xad,0xad,0xac,0xab,
+ 0xaa,0xaa,0xa9,0xa9,0xa8,0xa7,0xa7,0xa6,0xa6,0xa6,0xa7,0xa7,0xa8,0xa9,0xaa,
+ 0xab,0xad,0xae,0xae,0xae,0xac,0xaa,0xa8,0xa7,0xa5,0xa6,0xa7,0xa9,0xab,0xae,
+ 0xb1,0xaf,0xab,0xaa,0xaa,0xa8,0xa7,0xa5,0xa3,0xa2,0xa1,0xa0,0x9f,0x9e,0x9e,
+ 0x9f,0x9e,0x9c,0x9c,0x9b,0x99,0x98,0x96,0x93,0x90,0x8d,0x8b,0x8a,0x87,0x84,
+ 0x81,0x80,0x81,0x86,0x8a,0xc8,0x4e,0x4e,0x4e,0x4e,0x4f,0x50,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x58,0x58,0x58,
+ 0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5e,
+ 0x5e,0x5f,0x60,0x61,0x62,0x63,0x65,0x65,0x64,0x63,0x62,0x63,0x65,0x66,0x65,
+ 0x65,0x66,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6d,
+ 0x6e,0x6e,0x6f,0x70,0x70,0x70,0x71,0x71,0x71,0x70,0x70,0x72,0x73,0x73,0x74,
+ 0x75,0x77,0x77,0x77,0x78,0x77,0x77,0x77,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,
+ 0x7d,0x7c,0x7b,0x7b,0x7d,0x7e,0x7e,0x7e,0x7e,0x7c,0x7c,0x7f,0x81,0x82,0x82,
+ 0x82,0x7f,0x82,0x86,0x85,0x83,0x83,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x86,
+ 0x86,0x87,0x87,0x87,0x87,0x88,0x89,0x89,0x8a,0x89,0x89,0x89,0x89,0x8a,0x8a,
+ 0x8a,0x8a,0x8c,0x8d,0x8c,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8e,0x92,0x91,0x8d,0x8e,0x91,0x92,0x91,0x91,0x91,0x91,0x92,0x92,0x93,
+ 0x92,0x92,0x94,0x95,0x94,0x95,0x96,0x94,0x94,0x96,0x96,0x96,0x95,0x97,0x98,
+ 0x96,0x94,0x95,0x96,0x95,0x97,0x98,0x98,0x98,0x98,0x98,0x99,0x98,0x98,0x98,
+ 0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9e,0x9f,0x9f,0x9f,0x9f,
+ 0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xaa,
+ 0xab,0xaa,0xa7,0xa8,0xaa,0xac,0xaa,0xa7,0xaa,0xac,0xaa,0xa3,0xa6,0xc8,0xa5,
+ 0x46,0x09,0x0b,0x82,0xb9,0xb5,0xac,0xa6,0xae,0xb0,0xae,0xad,0xac,0xac,0xac,
+ 0xac,0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xae,0xae,0xae,0xad,
+ 0xac,0xad,0xae,0xb1,0xb0,0xae,0xad,0xad,0xae,0xb2,0xb3,0xb0,0xb0,0xb4,0xb1,
+ 0xad,0xab,0xad,0xb2,0xb2,0xb0,0xb0,0xb0,0xb0,0xae,0xb1,0xc4,0x91,0x2c,0x07,
+ 0x00,0x03,0x05,0x02,0x00,0x00,0x02,0x01,0x00,0x00,0x02,0x02,0x02,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x00,0x01,0x02,0x02,0x02,0x00,0x00,0x02,0x03,0x03,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x02,0x03,0x03,0x00,0x00,0x20,0x5a,0xae,0xc5,0xa8,0xa3,0xa7,0xb6,
+ 0xb2,0x96,0x3c,0x00,0x03,0x05,0x01,0x03,0x06,0x05,0x04,0x03,0x00,0x1b,0x9a,
+ 0xc5,0xb9,0xad,0xa6,0xaa,0xaa,0xa9,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xaa,0xab,
+ 0xac,0xae,0xae,0xae,0xae,0xad,0xab,0xa9,0xa7,0xa7,0xa7,0xa7,0xa8,0xa7,0xa7,
+ 0xa7,0xa7,0xa9,0xa7,0xa4,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa2,0xa2,0xa2,0xa2,0xa0,0x9d,0x9c,0x9c,0x9c,0x9c,0x9b,0x9a,0x99,0x98,
+ 0x98,0x98,0x95,0x92,0x90,0x91,0x93,0xc8,0x4f,0x4f,0x4e,0x4e,0x4f,0x50,0x52,
+ 0x53,0x53,0x53,0x53,0x53,0x55,0x56,0x56,0x55,0x55,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5a,0x5b,0x5d,0x5e,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x5f,0x60,0x60,0x61,0x62,0x62,0x63,0x64,0x63,0x62,0x62,0x62,0x64,
+ 0x65,0x65,0x64,0x65,0x67,0x69,0x6a,0x6a,0x69,0x69,0x68,0x68,0x69,0x69,0x69,
+ 0x6a,0x6c,0x6d,0x6e,0x6f,0x6f,0x6f,0x70,0x70,0x71,0x71,0x70,0x70,0x72,0x72,
+ 0x73,0x74,0x74,0x74,0x75,0x76,0x76,0x77,0x77,0x77,0x77,0x77,0x78,0x78,0x79,
+ 0x7a,0x7c,0x7e,0x7e,0x7b,0x79,0x7c,0x7e,0x7c,0x7d,0x7e,0x7d,0x7e,0x7f,0x81,
+ 0x82,0x82,0x81,0x7e,0x82,0x87,0x86,0x84,0x83,0x84,0x85,0x86,0x86,0x86,0x85,
+ 0x85,0x86,0x86,0x87,0x87,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x89,0x89,
+ 0x89,0x89,0x89,0x89,0x8c,0x8d,0x8d,0x8d,0x8d,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8b,0x8c,0x8f,0x93,0x92,0x8c,0x8e,0x92,0x93,0x92,0x90,0x90,0x91,0x91,
+ 0x92,0x93,0x93,0x93,0x94,0x95,0x94,0x95,0x96,0x94,0x94,0x95,0x96,0x96,0x95,
+ 0x97,0x98,0x95,0x94,0x96,0x96,0x95,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x98,
+ 0x98,0x98,0x99,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xa7,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa9,0xa9,
+ 0xa9,0xaa,0xaa,0xaa,0xa8,0xa8,0xaa,0xac,0xaa,0xa8,0xac,0xad,0xaa,0xa3,0xa7,
+ 0xc7,0xaa,0x58,0x14,0x0b,0x78,0xb2,0xb9,0xae,0xa5,0xae,0xb1,0xae,0xad,0xac,
+ 0xac,0xac,0xac,0xad,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xae,0xaf,
+ 0xae,0xad,0xac,0xac,0xae,0xb0,0xb0,0xae,0xad,0xac,0xab,0xaf,0xb2,0xb0,0xb0,
+ 0xb3,0xb2,0xaf,0xac,0xae,0xb3,0xb2,0xb0,0xb0,0xb1,0xb2,0xab,0xac,0xc8,0xa8,
+ 0x57,0x1d,0x00,0x03,0x05,0x02,0x01,0x01,0x02,0x02,0x00,0x02,0x03,0x02,0x01,
+ 0x00,0x02,0x03,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x01,0x02,0x03,0x00,0x00,0x1d,0x56,0xad,0xc5,0xa9,0xa3,
+ 0xa8,0xbb,0xb4,0x90,0x38,0x00,0x03,0x06,0x02,0x01,0x02,0x06,0x07,0x06,0x00,
+ 0x1a,0x98,0xc4,0xb9,0xaf,0xaa,0xae,0xae,0xaa,0xaa,0xaa,0xa8,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,0xab,0xad,0xad,0xad,0xac,
+ 0xad,0xae,0xb0,0xb1,0xb0,0xaf,0xad,0xac,0xab,0xa8,0xa7,0xa7,0xaa,0xab,0xab,
+ 0xaa,0xa7,0xa5,0xa4,0xa5,0xa5,0xa4,0xa3,0xa4,0xa4,0xa5,0xa7,0xa7,0xa9,0xaa,
+ 0xaa,0xaa,0xaa,0xa9,0xa8,0xa9,0xaa,0xa7,0xa5,0xa5,0xa6,0xa7,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa9,0xa9,0xaa,0xa7,0xa3,0xa0,0x9f,0xc8,0x4f,0x4f,0x4e,0x4e,0x4f,
+ 0x50,0x53,0x53,0x53,0x53,0x53,0x53,0x55,0x56,0x55,0x55,0x55,0x56,0x57,0x57,
+ 0x58,0x58,0x58,0x58,0x59,0x5a,0x5a,0x5c,0x5c,0x5a,0x5a,0x5b,0x5e,0x5f,0x5f,
+ 0x5e,0x5c,0x5d,0x5e,0x61,0x60,0x5f,0x60,0x61,0x62,0x63,0x63,0x63,0x62,0x62,
+ 0x62,0x64,0x65,0x65,0x64,0x65,0x66,0x68,0x69,0x69,0x68,0x68,0x69,0x69,0x69,
+ 0x6a,0x6b,0x6b,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,0x71,0x72,
+ 0x71,0x71,0x72,0x73,0x74,0x74,0x74,0x75,0x76,0x76,0x77,0x77,0x77,0x78,0x78,
+ 0x76,0x76,0x78,0x7b,0x7d,0x7d,0x7b,0x7a,0x7b,0x7c,0x7b,0x7c,0x7f,0x88,0x89,
+ 0x81,0x7f,0x7f,0x7c,0x7e,0x81,0x85,0x87,0x83,0x82,0x82,0x83,0x84,0x85,0x85,
+ 0x85,0x85,0x85,0x86,0x86,0x86,0x87,0x87,0x88,0x88,0x89,0x89,0x89,0x89,0x89,
+ 0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8e,0x91,0x90,0x90,0x90,0x91,0x91,0x92,0x91,0x90,0x91,
+ 0x93,0x91,0x92,0x95,0x96,0x95,0x94,0x93,0x95,0x95,0x95,0x98,0x97,0x95,0x95,
+ 0x95,0x97,0x97,0x95,0x96,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9b,0x9b,
+ 0x9b,0x9a,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,
+ 0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,
+ 0xa9,0xa9,0xa9,0xaa,0xab,0xaa,0xa8,0xaa,0xaa,0xab,0xaa,0xaa,0xab,0xad,0xac,
+ 0xa5,0xa7,0xc6,0xae,0x65,0x1c,0x0a,0x70,0xad,0xc0,0xb5,0xa8,0xad,0xaf,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xae,0xae,0xae,0xae,0xaf,
+ 0xaf,0xaf,0xaf,0xaf,0xb0,0xae,0xae,0xae,0xb0,0xb1,0xab,0xa8,0xa8,0xa9,0xaa,
+ 0xae,0xb0,0xae,0xae,0xb0,0xb3,0xb3,0xae,0xae,0xae,0xb2,0xb3,0xb2,0xaa,0xaa,
+ 0xc1,0xb5,0x86,0x34,0x00,0x02,0x05,0x03,0x05,0x06,0x02,0x01,0x03,0x03,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x06,0x02,0x00,0x1b,0x53,0xad,0xc8,
+ 0xad,0xa7,0xac,0xc0,0xb5,0x89,0x35,0x00,0x03,0x05,0x02,0x01,0x02,0x04,0x07,
+ 0x09,0x00,0x1a,0x98,0xc3,0xba,0xb5,0xb2,0xb5,0xb4,0xb0,0xae,0xae,0xaf,0xaf,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xb0,0xb0,0xb1,0xb0,0xaf,0xb0,0xb2,0xb2,
+ 0xb2,0xb1,0xb1,0xb1,0xb2,0xb2,0xaf,0xad,0xaa,0xac,0xae,0xac,0xaa,0xa9,0xaa,
+ 0xab,0xab,0xab,0xaa,0xaa,0xaa,0xab,0xae,0xb1,0xb1,0xb1,0xb0,0xb0,0xb1,0xb1,
+ 0xb2,0xb2,0xb2,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb2,0xb2,0xb1,0xb1,0xb1,0xb0,
+ 0xae,0xaa,0xad,0xaf,0xaa,0xaa,0xae,0xb2,0xb4,0xaf,0xa8,0xc8,0x4e,0x4e,0x4d,
+ 0x4d,0x4e,0x50,0x51,0x52,0x52,0x52,0x52,0x53,0x53,0x54,0x54,0x54,0x54,0x55,
+ 0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x58,0x59,0x5c,0x5c,0x5a,0x59,0x5a,0x5e,
+ 0x5f,0x5e,0x5d,0x5b,0x5c,0x5e,0x61,0x60,0x5f,0x60,0x61,0x62,0x62,0x63,0x63,
+ 0x62,0x62,0x62,0x64,0x65,0x64,0x64,0x65,0x66,0x67,0x67,0x67,0x67,0x68,0x69,
+ 0x69,0x6a,0x6b,0x6b,0x6b,0x6c,0x6d,0x6e,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,
+ 0x71,0x72,0x71,0x71,0x72,0x72,0x73,0x74,0x74,0x75,0x75,0x76,0x77,0x77,0x77,
+ 0x78,0x78,0x74,0x76,0x79,0x7b,0x7b,0x7a,0x7b,0x7c,0x7e,0x7d,0x7a,0x7e,0x83,
+ 0x86,0x84,0x7f,0x7e,0x7f,0x7c,0x7e,0x82,0x84,0x83,0x82,0x82,0x82,0x83,0x84,
+ 0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x87,0x88,0x88,0x89,0x89,0x89,
+ 0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,0x8b,0x8b,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x90,0x91,0x90,0x90,0x91,0x91,0x91,0x92,0x91,
+ 0x91,0x92,0x93,0x92,0x93,0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x98,0x96,
+ 0x94,0x95,0x96,0x97,0x96,0x95,0x98,0x99,0x98,0x98,0x98,0x98,0x98,0x98,0x99,
+ 0x9a,0x9a,0x9b,0x9a,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x9e,0x9f,0x9f,0xa0,0x9f,0xa0,0x9f,0x9f,0x9f,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+ 0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,0xab,0xa9,0xa7,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xac,0xad,0xa7,0xa7,0xc3,0xb2,0x78,0x27,0x07,0x62,0xa3,0xc4,0xb8,0xa7,0xad,
+ 0xaf,0xae,0xaf,0xb0,0xaf,0xae,0xae,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xae,0xae,
+ 0xaf,0xaf,0xb0,0xaf,0xae,0xaf,0xb1,0xb1,0xb1,0xaf,0xae,0xae,0xab,0xaf,0xbb,
+ 0xbb,0xb6,0xb2,0xaf,0xaf,0xae,0xaf,0xb3,0xb4,0xb0,0xae,0xae,0xb1,0xb2,0xb2,
+ 0xac,0xaa,0xb7,0xbc,0xad,0x48,0x00,0x00,0x04,0x01,0x03,0x05,0x03,0x03,0x03,
+ 0x03,0x02,0x02,0x01,0x00,0x00,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x06,0x03,0x00,0x1b,0x51,
+ 0xae,0xc8,0xae,0xaa,0xaf,0xc5,0xb4,0x80,0x31,0x00,0x03,0x05,0x02,0x02,0x02,
+ 0x03,0x05,0x06,0x00,0x1d,0x9e,0xc8,0xba,0xb5,0xb3,0xb6,0xb5,0xb4,0xb3,0xb3,
+ 0xb5,0xb5,0xb4,0xb3,0xb3,0xb3,0xb3,0xb4,0xb5,0xb5,0xb5,0xb5,0xb5,0xb4,0xb4,
+ 0xb5,0xb6,0xb6,0xb5,0xb5,0xb6,0xb7,0xb7,0xb5,0xb3,0xb1,0xb4,0xb6,0xb5,0xb3,
+ 0xb2,0xb3,0xb4,0xb5,0xb5,0xb5,0xb5,0xb5,0xb6,0xb8,0xb9,0xb9,0xb8,0xb8,0xb7,
+ 0xb6,0xb5,0xb5,0xb5,0xb4,0xb3,0xb2,0xb2,0xb1,0xaf,0xae,0xb0,0xb0,0xaf,0xae,
+ 0xac,0xac,0xaa,0xa8,0xa8,0xa7,0xa3,0xa3,0xa7,0xa7,0xa4,0x9d,0x97,0xc8,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4e,0x4f,0x50,0x50,0x50,0x50,0x51,0x53,0x53,0x53,0x53,
+ 0x53,0x53,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x5a,0x5a,0x59,0x59,
+ 0x5a,0x5c,0x5e,0x5e,0x5c,0x5b,0x5c,0x5e,0x60,0x5f,0x5f,0x60,0x61,0x62,0x62,
+ 0x63,0x63,0x62,0x62,0x63,0x63,0x64,0x64,0x65,0x65,0x65,0x66,0x66,0x66,0x67,
+ 0x68,0x69,0x69,0x6a,0x6c,0x6b,0x6a,0x6c,0x6d,0x6f,0x6f,0x6f,0x6f,0x6f,0x70,
+ 0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x72,0x74,0x74,0x74,0x75,0x76,0x77,
+ 0x77,0x78,0x79,0x78,0x74,0x76,0x7b,0x7b,0x7a,0x76,0x79,0x7e,0x7f,0x7e,0x7c,
+ 0x80,0x82,0x74,0x71,0x7d,0x81,0x81,0x7f,0x80,0x83,0x81,0x7f,0x82,0x83,0x82,
+ 0x83,0x84,0x85,0x85,0x85,0x85,0x85,0x86,0x86,0x86,0x86,0x86,0x88,0x88,0x89,
+ 0x89,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8d,0x8c,0x8c,0x8d,0x8e,0x8f,
+ 0x8e,0x8e,0x8e,0x8e,0x8f,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x91,0x91,
+ 0x91,0x92,0x93,0x92,0x91,0x93,0x94,0x92,0x92,0x93,0x95,0x96,0x96,0x97,0x97,
+ 0x95,0x95,0x95,0x96,0x97,0x96,0x96,0x97,0x98,0x98,0x99,0x98,0x98,0x98,0x98,
+ 0x99,0x98,0x96,0x98,0x9a,0x99,0x98,0x98,0x99,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9d,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,
+ 0xa8,0xa8,0xa8,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xa8,0xa7,0xaa,0xaa,0xa9,0xaa,
+ 0xaa,0xaa,0xaa,0xac,0xa7,0xa7,0xbd,0xb7,0x90,0x33,0x03,0x4e,0x95,0xc6,0xb8,
+ 0xa3,0xae,0xb0,0xad,0xae,0xb0,0xaf,0xaf,0xae,0xae,0xae,0xae,0xae,0xaf,0xaf,
+ 0xaf,0xae,0xae,0xae,0xaf,0xb0,0xae,0xae,0xae,0xb2,0xb4,0xb2,0xac,0xa8,0xae,
+ 0xb9,0xc6,0xc6,0xbf,0xb5,0xb0,0xb2,0xb1,0xae,0xaf,0xb2,0xb5,0xb2,0xae,0xae,
+ 0xb0,0xb1,0xae,0xad,0xac,0xbb,0xc8,0x5d,0x00,0x00,0x03,0x00,0x00,0x00,0x03,
+ 0x03,0x02,0x01,0x02,0x05,0x03,0x00,0x02,0x03,0x03,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x03,0x02,0x01,
+ 0x1a,0x4f,0xad,0xc8,0xae,0xaa,0xb2,0xc7,0xb2,0x77,0x2b,0x00,0x04,0x07,0x03,
+ 0x02,0x02,0x04,0x03,0x00,0x00,0x23,0xa8,0xc8,0xba,0xb3,0xb1,0xb3,0xb5,0xb5,
+ 0xb6,0xb7,0xb8,0xb8,0xb7,0xb6,0xb6,0xb5,0xb5,0xb6,0xb7,0xb7,0xb7,0xb7,0xb7,
+ 0xb6,0xb6,0xb8,0xb8,0xb8,0xb8,0xb9,0xba,0xbc,0xbd,0xbd,0xbc,0xbb,0xbc,0xbd,
+ 0xbd,0xbd,0xbc,0xbd,0xbd,0xbf,0xc0,0xc0,0xc0,0xbf,0xc0,0xbd,0xb9,0xb9,0xb8,
+ 0xb7,0xb5,0xb4,0xb2,0xb2,0xb1,0xaf,0xae,0xae,0xac,0xa7,0xa5,0xa4,0xa3,0xa3,
+ 0xa4,0xa2,0x9f,0x9f,0xa0,0xa1,0x9c,0x98,0x97,0x97,0x97,0x90,0x86,0x7c,0x7a,
+ 0xc8,0x4c,0x4c,0x4c,0x4c,0x4c,0x4e,0x50,0x50,0x50,0x51,0x51,0x52,0x53,0x53,
+ 0x53,0x53,0x53,0x53,0x54,0x55,0x56,0x56,0x56,0x56,0x56,0x56,0x57,0x58,0x59,
+ 0x58,0x59,0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5f,0x5f,0x60,
+ 0x61,0x62,0x62,0x63,0x62,0x62,0x62,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x67,0x68,0x69,0x69,0x6a,0x6a,0x6a,0x6b,0x6d,0x6e,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x72,0x72,0x73,0x74,0x74,0x75,
+ 0x76,0x76,0x77,0x78,0x78,0x78,0x76,0x76,0x78,0x78,0x7a,0x7d,0x7c,0x7a,0x74,
+ 0x79,0x8a,0x80,0x69,0x46,0x52,0x8d,0x8f,0x7f,0x7d,0x7e,0x81,0x81,0x80,0x80,
+ 0x80,0x82,0x82,0x83,0x84,0x84,0x84,0x84,0x85,0x85,0x86,0x86,0x86,0x86,0x87,
+ 0x88,0x88,0x88,0x89,0x8a,0x8a,0x8a,0x8b,0x8b,0x8c,0x8c,0x8d,0x8c,0x8c,0x8d,
+ 0x8e,0x8f,0x8f,0x8e,0x8e,0x8f,0x8f,0x90,0x91,0x91,0x8f,0x8e,0x92,0x92,0x8f,
+ 0x8f,0x8f,0x8f,0x91,0x94,0x91,0x8e,0x93,0x95,0x93,0x91,0x90,0x90,0x92,0x97,
+ 0x98,0x96,0x94,0x95,0x97,0x96,0x96,0x99,0x99,0x97,0x92,0x91,0x99,0x9b,0x98,
+ 0x98,0x98,0x96,0x98,0x99,0x9a,0x99,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,
+ 0xa0,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa6,
+ 0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xaa,0xaa,0xaa,0xa8,0xa7,0xa9,0xaa,
+ 0xa9,0xaa,0xaa,0xaa,0xaa,0xac,0xa7,0xa7,0xb7,0xb9,0xa5,0x41,0x00,0x35,0x7d,
+ 0xc2,0xb6,0xa3,0xaf,0xb2,0xac,0xad,0xae,0xae,0xae,0xad,0xad,0xae,0xae,0xae,
+ 0xae,0xaf,0xaf,0xae,0xae,0xac,0xac,0xae,0xb3,0xb0,0xac,0xae,0xb1,0xb4,0xae,
+ 0xa9,0xc0,0xae,0x6a,0x63,0x7d,0xaa,0xbd,0xb1,0xaf,0xb0,0xac,0xae,0xb5,0xb4,
+ 0xb0,0xae,0xad,0xad,0xb0,0xb2,0xac,0xb7,0xc6,0x7f,0x31,0x0a,0x00,0x04,0x03,
+ 0x03,0x04,0x03,0x00,0x00,0x01,0x04,0x03,0x00,0x01,0x01,0x01,0x01,0x02,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x03,
+ 0x01,0x00,0x12,0x43,0xa8,0xc8,0xb1,0xac,0xb2,0xc7,0xaf,0x71,0x29,0x00,0x05,
+ 0x08,0x03,0x02,0x02,0x06,0x03,0x00,0x00,0x2b,0xad,0xc8,0xb7,0xb2,0xb2,0xb4,
+ 0xb5,0xb5,0xb5,0xb5,0xb6,0xb6,0xb5,0xb5,0xb4,0xb3,0xb2,0xb2,0xb2,0xb2,0xb1,
+ 0xb1,0xb0,0xb0,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xae,0xaf,0xb1,0xb1,0xb1,0xb0,
+ 0xb0,0xaf,0xb0,0xaf,0xae,0xae,0xad,0xac,0xac,0xab,0xaa,0xa9,0xa7,0xa3,0xa0,
+ 0x9f,0x9e,0x9d,0x9c,0x9b,0x99,0x98,0x97,0x96,0x95,0x95,0x94,0x94,0x91,0x8f,
+ 0x8e,0x8f,0x91,0x92,0x91,0x91,0x91,0x91,0x91,0x8e,0x8f,0x8e,0x8c,0x87,0x82,
+ 0x7f,0x7f,0xc8,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x50,0x50,0x50,0x51,0x51,0x52,
+ 0x52,0x53,0x53,0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x56,0x56,0x56,0x56,0x56,
+ 0x56,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5c,0x5e,0x5e,0x5d,0x5c,0x5e,0x5e,
+ 0x5f,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x64,0x65,0x65,0x65,
+ 0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x68,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,
+ 0x6f,0x6f,0x6f,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x71,0x72,0x73,0x74,
+ 0x74,0x74,0x75,0x75,0x76,0x76,0x78,0x78,0x78,0x77,0x75,0x76,0x79,0x7f,0x7d,
+ 0x77,0x6d,0x78,0x95,0x7c,0x4f,0x26,0x3f,0x97,0x97,0x7d,0x7b,0x7c,0x7f,0x81,
+ 0x82,0x7f,0x7f,0x80,0x82,0x82,0x82,0x83,0x83,0x83,0x84,0x85,0x85,0x86,0x86,
+ 0x86,0x86,0x87,0x86,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8b,
+ 0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8f,0x8f,0x8f,0x8d,0x8d,0x93,
+ 0x94,0x8d,0x8d,0x90,0x8e,0x90,0x95,0x91,0x8d,0x93,0x95,0x93,0x90,0x8d,0x8c,
+ 0x90,0x97,0x98,0x95,0x91,0x93,0x99,0x96,0x94,0x9a,0x99,0x91,0x8d,0x8d,0x98,
+ 0x9b,0x98,0x98,0x98,0x95,0x97,0x9c,0x9a,0x99,0x98,0x98,0x98,0x99,0x99,0x9a,
+ 0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0x9f,0x9f,0x9f,
+ 0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,
+ 0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xaa,0xaa,0xaa,0xa9,0xa8,
+ 0xa9,0xaa,0xa9,0xaa,0xaa,0xaa,0xab,0xab,0xa8,0xa8,0xb2,0xbb,0xb6,0x4e,0x00,
+ 0x1b,0x65,0xbe,0xb9,0xa5,0xb0,0xb1,0xab,0xac,0xae,0xad,0xac,0xac,0xac,0xad,
+ 0xae,0xae,0xae,0xaf,0xaf,0xae,0xae,0xac,0xac,0xae,0xb4,0xb2,0xac,0xac,0xae,
+ 0xb2,0xb1,0xb1,0xc0,0x91,0x1d,0x0e,0x3d,0x9e,0xc8,0xaf,0xae,0xb0,0xac,0xae,
+ 0xb3,0xb4,0xb2,0xaf,0xad,0xac,0xb1,0xb4,0xac,0xb4,0xc2,0x9c,0x5e,0x12,0x00,
+ 0x0a,0x07,0x04,0x04,0x03,0x02,0x01,0x01,0x03,0x03,0x02,0x01,0x00,0x00,0x00,
+ 0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x02,0x03,0x00,0x00,0x0a,0x36,0xa2,0xc8,0xb4,0xae,0xb0,0xc6,0xae,0x70,0x28,
+ 0x00,0x06,0x09,0x04,0x02,0x02,0x07,0x04,0x00,0x02,0x34,0xae,0xc8,0xb4,0xb3,
+ 0xb4,0xb5,0xb5,0xb5,0xb4,0xb5,0xb5,0xb5,0xb5,0xb4,0xb3,0xb2,0xb2,0xb0,0xaf,
+ 0xae,0xae,0xae,0xad,0xac,0xaa,0xaa,0xaa,0xa9,0xa8,0xa7,0xa7,0xa8,0xa9,0xaa,
+ 0xaa,0xa9,0xa8,0xa7,0xa7,0xa7,0xa6,0xa4,0xa2,0xa0,0xa0,0xa0,0x9f,0x9c,0x9a,
+ 0x98,0x95,0x95,0x95,0x94,0x93,0x92,0x91,0x91,0x90,0x8f,0x8f,0x8e,0x8f,0x91,
+ 0x8f,0x8c,0x8d,0x8d,0x90,0x92,0x93,0x93,0x91,0x90,0x91,0x94,0x94,0x93,0x91,
+ 0x90,0x91,0x92,0x93,0xc8,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x50,0x50,
+ 0x50,0x51,0x51,0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x54,0x54,0x54,0x54,
+ 0x55,0x55,0x55,0x56,0x58,0x5a,0x5a,0x59,0x59,0x5a,0x5c,0x5e,0x5e,0x5d,0x5b,
+ 0x5c,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x62,0x62,0x62,0x62,0x61,0x62,0x63,
+ 0x63,0x63,0x64,0x65,0x65,0x66,0x66,0x66,0x66,0x66,0x65,0x67,0x6b,0x6b,0x6a,
+ 0x6a,0x6a,0x6b,0x6c,0x6c,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x71,
+ 0x72,0x73,0x73,0x74,0x74,0x74,0x74,0x74,0x75,0x76,0x76,0x78,0x78,0x78,0x77,
+ 0x78,0x78,0x78,0x73,0x7c,0x94,0x70,0x3d,0x28,0x45,0x8f,0x91,0x7b,0x7a,0x7b,
+ 0x7f,0x7f,0x80,0x7f,0x80,0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x84,0x85,
+ 0x85,0x85,0x84,0x85,0x85,0x85,0x86,0x86,0x87,0x88,0x88,0x88,0x88,0x89,0x89,
+ 0x89,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+ 0x8d,0x95,0x95,0x8d,0x8f,0x94,0x91,0x91,0x94,0x93,0x92,0x95,0x95,0x92,0x8d,
+ 0x8b,0x8d,0x91,0x94,0x96,0x95,0x8a,0x8e,0x9d,0x97,0x91,0x98,0x91,0x84,0x8a,
+ 0x92,0x97,0x98,0x97,0x99,0x9a,0x95,0x95,0x98,0x99,0x99,0x99,0x99,0x99,0x9a,
+ 0x9a,0x9a,0x9a,0x99,0x99,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,
+ 0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,
+ 0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,
+ 0xa5,0xa5,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,0xaa,0xaa,
+ 0xaa,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xac,0xac,0xab,0xaa,0xaa,0xaf,0xbc,0xc1,
+ 0x57,0x00,0x03,0x4f,0xbe,0xc0,0xac,0xae,0xae,0xad,0xad,0xad,0xac,0xac,0xac,
+ 0xac,0xac,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xae,0xae,0xb1,0xb1,0xad,0xaf,0xb3,
+ 0xb2,0xad,0xa7,0xb5,0xc0,0xa2,0x64,0x0d,0x00,0x21,0x97,0xc8,0xaf,0xab,0xae,
+ 0xb2,0xb2,0xaf,0xaf,0xb1,0xaf,0xb0,0xb2,0xb2,0xaf,0xaa,0xb5,0xc6,0xa9,0x6e,
+ 0x13,0x00,0x0e,0x07,0x00,0x01,0x06,0x0b,0x09,0x04,0x00,0x02,0x07,0x04,0x02,
+ 0x01,0x01,0x02,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x03,0x04,0x02,0x00,0x00,0x03,0x2a,0x9b,0xc8,0xb7,0xae,0xaf,0xc7,0xb0,
+ 0x73,0x29,0x00,0x06,0x08,0x03,0x01,0x02,0x08,0x06,0x03,0x0d,0x40,0xac,0xc8,
+ 0xb3,0xb6,0xb9,0xb6,0xb5,0xb5,0xb5,0xb6,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,
+ 0xb5,0xb5,0xb4,0xb3,0xb3,0xb2,0xaf,0xae,0xae,0xaf,0xaf,0xaf,0xaf,0xb0,0xb0,
+ 0xb0,0xb0,0xaf,0xaf,0xae,0xae,0xae,0xae,0xad,0xab,0xaa,0xaa,0xab,0xad,0xae,
+ 0xad,0xac,0xad,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xad,0xaa,0xaa,0xae,0xaf,0xab,0xaa,0xab,0xaf,0xae,0xa7,0xa9,0xac,0xac,
+ 0xac,0xad,0xae,0xb1,0xb1,0xb1,0xc8,0x4b,0x4b,0x4b,0x4b,0x4c,0x4c,0x4c,0x4d,
+ 0x4e,0x4f,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x52,0x53,0x53,0x54,0x53,
+ 0x53,0x54,0x54,0x55,0x55,0x57,0x58,0x59,0x59,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,
+ 0x5c,0x5b,0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5f,0x60,0x61,0x62,0x62,0x62,0x60,
+ 0x62,0x63,0x63,0x63,0x64,0x65,0x66,0x66,0x67,0x66,0x66,0x66,0x65,0x67,0x6a,
+ 0x6a,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,0x6e,0x6f,0x70,
+ 0x70,0x70,0x71,0x72,0x73,0x73,0x73,0x73,0x73,0x73,0x74,0x75,0x75,0x76,0x78,
+ 0x78,0x78,0x78,0x78,0x78,0x73,0x7d,0x94,0x74,0x45,0x2b,0x46,0x8f,0x8d,0x77,
+ 0x7a,0x7c,0x7e,0x7f,0x7f,0x80,0x81,0x80,0x80,0x81,0x82,0x82,0x82,0x82,0x83,
+ 0x84,0x84,0x85,0x84,0x84,0x85,0x85,0x85,0x85,0x86,0x87,0x88,0x88,0x88,0x88,
+ 0x87,0x87,0x88,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8b,0x8d,0x8d,0x8d,0x8d,
+ 0x8c,0x8c,0x8d,0x91,0x90,0x8b,0x8e,0x93,0x91,0x90,0x8f,0x91,0x94,0x92,0x90,
+ 0x8e,0x8d,0x8d,0x90,0x92,0x95,0x95,0x93,0x88,0x8d,0x9c,0x92,0x8a,0x94,0x92,
+ 0x89,0x87,0x8c,0x97,0x98,0x92,0x97,0x99,0x95,0x96,0x9a,0x99,0x98,0x98,0x98,
+ 0x99,0x99,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9d,0x9d,0x9e,0x9e,0x9e,0x9e,0x9d,0x9e,0x9f,0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,
+ 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa4,0xa4,0xa5,0xa4,0xa4,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xaa,
+ 0xaa,0xaa,0xaa,0xaa,0xa9,0xaa,0xac,0xaa,0xaa,0xac,0xad,0xab,0xaa,0xab,0xae,
+ 0xbd,0xc8,0x5b,0x00,0x00,0x43,0xc0,0xc5,0xaf,0xaa,0xab,0xaf,0xae,0xad,0xad,
+ 0xad,0xac,0xac,0xad,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xaf,0xb0,0xb1,0xb0,0xac,
+ 0xae,0xb2,0xb4,0xaf,0xa5,0xbb,0xc5,0x7f,0x39,0x06,0x00,0x10,0x7f,0xbc,0xb5,
+ 0xb1,0xad,0xb3,0xb3,0xad,0xae,0xb0,0xae,0xaf,0xb2,0xb1,0xae,0xac,0xb2,0xbb,
+ 0xb9,0x93,0x2f,0x02,0x05,0x03,0x03,0x03,0x05,0x08,0x07,0x05,0x02,0x03,0x04,
+ 0x03,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x03,0x05,0x01,0x00,0x01,0x00,0x21,0x95,0xc5,0xb9,0xb0,0xaf,
+ 0xc8,0xb0,0x70,0x28,0x00,0x05,0x07,0x03,0x01,0x03,0x08,0x05,0x02,0x1b,0x53,
+ 0xb1,0xc6,0xb3,0xb7,0xb9,0xb6,0xb5,0xb5,0xb8,0xb9,0xb6,0xb5,0xb6,0xb6,0xb6,
+ 0xb7,0xb8,0xb9,0xb9,0xb9,0xb8,0xb8,0xb8,0xb6,0xb5,0xb6,0xb6,0xb6,0xb6,0xb6,
+ 0xb6,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb5,0xb5,0xb5,0xb4,0xb2,0xb2,0xb2,0xb3,
+ 0xb5,0xb5,0xb5,0xb5,0xb5,0xb7,0xb7,0xb7,0xb8,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,
+ 0xb9,0xba,0xba,0xb9,0xb9,0xb9,0xb9,0xb9,0xb5,0xb6,0xb8,0xba,0xb9,0xb4,0xb5,
+ 0xb9,0xb6,0xb6,0xb9,0xb9,0xb9,0xb9,0xba,0xc8,0x49,0x49,0x4a,0x4a,0x4b,0x4c,
+ 0x4c,0x4c,0x4d,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,0x51,0x52,0x53,
+ 0x53,0x53,0x53,0x54,0x55,0x55,0x57,0x57,0x57,0x57,0x59,0x5a,0x5b,0x5b,0x5b,
+ 0x5b,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x60,0x61,0x62,0x62,
+ 0x61,0x60,0x61,0x62,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x66,
+ 0x67,0x69,0x69,0x69,0x69,0x69,0x6a,0x6b,0x6b,0x6c,0x6c,0x6c,0x6c,0x6d,0x6e,
+ 0x6e,0x6f,0x70,0x70,0x71,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x74,0x76,0x74,
+ 0x74,0x74,0x77,0x79,0x7a,0x79,0x77,0x70,0x7b,0x94,0x7e,0x57,0x2f,0x44,0x92,
+ 0x8d,0x72,0x7a,0x7e,0x7c,0x7d,0x7f,0x80,0x81,0x80,0x80,0x81,0x82,0x82,0x82,
+ 0x82,0x83,0x84,0x84,0x85,0x84,0x84,0x86,0x86,0x85,0x85,0x86,0x87,0x89,0x89,
+ 0x89,0x88,0x87,0x87,0x88,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8c,0x8d,0x8d,
+ 0x8d,0x8d,0x8d,0x8d,0x8c,0x8b,0x8a,0x8a,0x8d,0x8f,0x91,0x8e,0x8a,0x8f,0x94,
+ 0x8d,0x8a,0x8a,0x8c,0x8f,0x8f,0x92,0x97,0x95,0x91,0x8a,0x8d,0x97,0x8a,0x82,
+ 0x91,0x97,0x94,0x86,0x82,0x97,0x98,0x8d,0x92,0x97,0x96,0x98,0x9c,0x99,0x97,
+ 0x97,0x98,0x98,0x99,0x99,0x9a,0x9a,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9f,0xa0,0xa0,0xa0,0xa0,
+ 0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa4,0xa4,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,
+ 0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa9,0xa9,
+ 0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xa8,0xa9,0xac,0xaa,0xa9,0xac,0xac,0xaa,0xab,
+ 0xac,0xac,0xbd,0xc8,0x5d,0x00,0x00,0x3e,0xc1,0xc7,0xb0,0xa7,0xa9,0xb1,0xaf,
+ 0xae,0xae,0xae,0xad,0xad,0xad,0xae,0xaf,0xaf,0xaf,0xaf,0xaf,0xb0,0xb1,0xae,
+ 0xae,0xb0,0xae,0xae,0xb3,0xb2,0xaa,0xbe,0xc3,0x62,0x1a,0x05,0x00,0x08,0x62,
+ 0xa4,0xbd,0xb9,0xac,0xb1,0xb2,0xad,0xae,0xb0,0xae,0xae,0xaf,0xaf,0xaf,0xb0,
+ 0xae,0xaa,0xc4,0xbc,0x60,0x20,0x02,0x03,0x0a,0x08,0x03,0x00,0x01,0x04,0x06,
+ 0x03,0x00,0x00,0x00,0x03,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x02,0x01,0x00,0x02,0x04,0x00,0x00,0x03,0x00,0x1b,0x8e,0xc3,0xba,
+ 0xb2,0xb1,0xc8,0xac,0x64,0x24,0x00,0x04,0x05,0x02,0x01,0x03,0x07,0x02,0x00,
+ 0x2b,0x6c,0xb8,0xc7,0xb3,0xb5,0xb7,0xb5,0xb5,0xb6,0xb9,0xb9,0xb7,0xb6,0xb7,
+ 0xb7,0xb7,0xb9,0xb9,0xb9,0xba,0xba,0xba,0xba,0xba,0xbc,0xbd,0xbc,0xbc,0xbb,
+ 0xba,0xb9,0xb9,0xb8,0xb8,0xb7,0xb7,0xb7,0xb8,0xb9,0xb9,0xb9,0xb9,0xb8,0xb7,
+ 0xb7,0xb8,0xb9,0xb9,0xb9,0xb7,0xb7,0xb6,0xb6,0xb6,0xb7,0xb7,0xb8,0xb8,0xb8,
+ 0xb8,0xb8,0xb8,0xb8,0xb8,0xba,0xbb,0xbc,0xb8,0xb5,0xb5,0xb8,0xba,0xba,0xb9,
+ 0xb8,0xb9,0xba,0xb7,0xb7,0xb9,0xb6,0xb3,0xb2,0xb6,0xc8,0x4a,0x4a,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x50,0x51,0x51,0x50,0x51,0x52,
+ 0x53,0x53,0x54,0x54,0x55,0x55,0x56,0x57,0x57,0x57,0x57,0x57,0x58,0x59,0x5a,
+ 0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5c,0x5d,0x5c,0x5d,0x5d,0x5d,0x5d,0x5f,0x60,
+ 0x62,0x62,0x61,0x5f,0x61,0x62,0x62,0x63,0x64,0x65,0x65,0x65,0x66,0x66,0x67,
+ 0x67,0x66,0x67,0x68,0x68,0x69,0x69,0x6a,0x6c,0x6d,0x6d,0x6c,0x6b,0x6b,0x6c,
+ 0x6c,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,0x71,0x71,0x71,0x71,0x71,0x71,0x74,
+ 0x74,0x73,0x74,0x75,0x78,0x78,0x75,0x76,0x78,0x75,0x7e,0x90,0x77,0x4e,0x2d,
+ 0x45,0x94,0x8d,0x72,0x79,0x7d,0x7d,0x7c,0x7d,0x7f,0x7f,0x80,0x80,0x81,0x81,
+ 0x81,0x82,0x82,0x82,0x83,0x84,0x84,0x84,0x84,0x86,0x86,0x85,0x85,0x86,0x87,
+ 0x88,0x89,0x89,0x88,0x88,0x88,0x89,0x89,0x8a,0x8a,0x8a,0x8a,0x8a,0x8b,0x8c,
+ 0x8d,0x8d,0x8d,0x8d,0x8d,0x8e,0x8f,0x8c,0x8b,0x8c,0x8c,0x8d,0x92,0x91,0x8a,
+ 0x8e,0x93,0x90,0x8c,0x88,0x8e,0x91,0x86,0x8a,0x9a,0x94,0x8d,0x93,0x92,0x8c,
+ 0x80,0x80,0x9a,0x97,0x80,0x84,0x8f,0x9c,0x9c,0x92,0x94,0x97,0x98,0x97,0x96,
+ 0x95,0x95,0x95,0x96,0x98,0x98,0x98,0x99,0x99,0x99,0x9a,0x9b,0x9c,0x9c,0x9b,
+ 0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9f,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa2,
+ 0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,
+ 0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa8,0xa9,0xa9,0xa9,0xa9,0xaa,0xa8,0xa9,0xaa,0xaa,0xa9,0xaa,0xaa,
+ 0xaa,0xaa,0xab,0xaa,0xbb,0xc8,0x65,0x03,0x00,0x3a,0xb4,0xc0,0xb0,0xa6,0xa7,
+ 0xb0,0xaf,0xae,0xae,0xad,0xad,0xad,0xad,0xae,0xae,0xae,0xaf,0xaf,0xaf,0xae,
+ 0xad,0xae,0xb1,0xb2,0xae,0xaa,0xb1,0xb1,0xa9,0xbe,0xc4,0x6b,0x24,0x05,0x00,
+ 0x07,0x5a,0x9e,0xc0,0xbb,0xaa,0xae,0xb1,0xaf,0xae,0xaf,0xb2,0xb0,0xac,0xae,
+ 0xb0,0xb1,0xaf,0xad,0xb6,0xb9,0xa8,0x78,0x33,0x0c,0x00,0x03,0x06,0x04,0x03,
+ 0x03,0x06,0x04,0x00,0x03,0x05,0x03,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x02,0x00,0x02,0x00,0x14,0x87,
+ 0xc0,0xc0,0xb6,0xb2,0xc8,0xa0,0x49,0x18,0x00,0x05,0x04,0x00,0x01,0x03,0x07,
+ 0x00,0x00,0x3d,0x82,0xbc,0xc3,0xaf,0xb2,0xb5,0xb5,0xb6,0xb6,0xb5,0xb5,0xb5,
+ 0xb5,0xb5,0xb5,0xb4,0xb3,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+ 0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb4,0xb5,0xb5,0xb5,0xb5,0xb5,0xb6,0xb7,
+ 0xb8,0xb8,0xb8,0xb9,0xb9,0xb9,0xb8,0xb7,0xb7,0xb6,0xb6,0xb6,0xb7,0xb7,0xb7,
+ 0xb6,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb3,0xb5,0xb7,0xb9,0xb9,0xb7,0xb3,0xb1,
+ 0xb6,0xbd,0xc4,0xbe,0xb5,0xb8,0xb8,0xb4,0xb1,0xae,0xad,0xab,0xc8,0x4b,0x4b,
+ 0x4b,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x50,0x50,0x50,0x50,0x50,0x52,0x51,0x51,
+ 0x51,0x52,0x53,0x53,0x54,0x54,0x54,0x54,0x56,0x56,0x55,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x59,0x5a,0x5a,0x5a,0x59,0x5b,0x5c,0x5c,0x5b,0x5b,0x5b,0x5c,
+ 0x5e,0x5f,0x61,0x61,0x60,0x5f,0x60,0x62,0x62,0x62,0x62,0x63,0x63,0x64,0x64,
+ 0x65,0x65,0x65,0x66,0x66,0x67,0x67,0x68,0x69,0x6b,0x6d,0x6d,0x6c,0x6a,0x6a,
+ 0x6b,0x6c,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x6f,0x70,0x70,0x70,0x71,0x71,0x71,
+ 0x71,0x72,0x73,0x72,0x73,0x74,0x77,0x77,0x73,0x74,0x77,0x75,0x7e,0x90,0x71,
+ 0x46,0x2b,0x47,0x93,0x8d,0x72,0x78,0x7c,0x7d,0x7c,0x7b,0x7c,0x7e,0x7f,0x7f,
+ 0x7f,0x7f,0x80,0x80,0x81,0x82,0x82,0x83,0x82,0x82,0x83,0x85,0x85,0x83,0x83,
+ 0x84,0x86,0x87,0x87,0x87,0x87,0x88,0x88,0x89,0x89,0x89,0x8a,0x8a,0x8a,0x8a,
+ 0x8b,0x8b,0x8c,0x8d,0x8d,0x8d,0x8d,0x8f,0x90,0x8e,0x8d,0x8c,0x89,0x89,0x91,
+ 0x92,0x8b,0x8b,0x8e,0x91,0x8e,0x88,0x8e,0x91,0x82,0x86,0x98,0x91,0x89,0x95,
+ 0x91,0x82,0x7c,0x83,0x9e,0x96,0x7a,0x85,0x93,0x95,0x94,0x92,0x95,0x97,0x98,
+ 0x95,0x91,0x93,0x96,0x95,0x96,0x97,0x97,0x98,0x98,0x98,0x98,0x99,0x9a,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9e,
+ 0x9e,0x9f,0x9f,0x9f,0xa0,0xa0,0x9f,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa1,0xa1,
+ 0xa0,0xa1,0xa1,0xa2,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa4,0xa4,0xa3,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xa9,0xa8,0xa8,0xa8,0xa9,0xa9,
+ 0xa9,0xa9,0xaa,0xaa,0xab,0xa8,0xb8,0xc8,0x72,0x19,0x00,0x31,0x9e,0xb7,0xb4,
+ 0xa7,0xa7,0xae,0xae,0xad,0xad,0xac,0xad,0xad,0xad,0xae,0xae,0xae,0xae,0xae,
+ 0xae,0xac,0xaa,0xae,0xb2,0xb2,0xae,0xaa,0xaf,0xb0,0xa9,0xbc,0xc2,0x7b,0x38,
+ 0x07,0x00,0x07,0x56,0x99,0xc0,0xbb,0xaa,0xad,0xb0,0xb0,0xaf,0xaf,0xb2,0xb1,
+ 0xab,0xad,0xb0,0xb1,0xb1,0xb0,0xab,0xb0,0xc8,0xb5,0x74,0x32,0x04,0x00,0x03,
+ 0x09,0x05,0x02,0x04,0x04,0x03,0x06,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,0x03,0x01,0x01,0x00,
+ 0x10,0x82,0xbf,0xc4,0xba,0xb3,0xc8,0x92,0x2b,0x0a,0x02,0x06,0x04,0x00,0x01,
+ 0x05,0x07,0x00,0x00,0x4b,0x95,0xbe,0xc0,0xac,0xaf,0xb3,0xb5,0xb5,0xb5,0xb2,
+ 0xb2,0xb5,0xb5,0xb4,0xb2,0xb2,0xb0,0xae,0xae,0xae,0xad,0xad,0xad,0xac,0xac,
+ 0xab,0xab,0xab,0xab,0xac,0xac,0xad,0xad,0xae,0xb0,0xb2,0xb2,0xb1,0xb0,0xb1,
+ 0xb2,0xb3,0xb4,0xb5,0xb5,0xb5,0xb5,0xb5,0xb4,0xb4,0xb3,0xb3,0xb3,0xb3,0xb4,
+ 0xb4,0xb3,0xb2,0xb1,0xb0,0xaf,0xae,0xaf,0xae,0xab,0xac,0xaf,0xb4,0xb5,0xb1,
+ 0xae,0xad,0xad,0xab,0xa9,0xac,0xb0,0xb1,0xaf,0xab,0xaa,0xaa,0xa7,0xa2,0xc8,
+ 0x48,0x49,0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4c,0x4e,0x4e,0x4f,0x4e,0x50,0x51,
+ 0x50,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x53,0x53,0x53,0x53,0x54,0x57,
+ 0x57,0x57,0x54,0x54,0x55,0x58,0x5a,0x5a,0x59,0x57,0x5a,0x5b,0x5a,0x5a,0x5a,
+ 0x5a,0x5a,0x5c,0x5e,0x5f,0x5f,0x5e,0x5e,0x5f,0x60,0x61,0x61,0x61,0x61,0x61,
+ 0x62,0x62,0x62,0x63,0x64,0x65,0x65,0x66,0x67,0x68,0x69,0x69,0x6a,0x69,0x69,
+ 0x68,0x68,0x69,0x6c,0x6d,0x6d,0x6d,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x70,0x70,
+ 0x70,0x70,0x70,0x70,0x70,0x74,0x71,0x6f,0x73,0x76,0x76,0x74,0x71,0x6e,0x7a,
+ 0x95,0x75,0x45,0x2b,0x45,0x91,0x8b,0x70,0x75,0x7a,0x7c,0x7c,0x7b,0x7b,0x7c,
+ 0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x7f,0x80,0x81,0x82,0x81,0x81,0x81,0x83,0x83,
+ 0x82,0x81,0x82,0x83,0x85,0x86,0x86,0x86,0x86,0x87,0x89,0x87,0x86,0x88,0x8a,
+ 0x8a,0x8a,0x89,0x8a,0x8a,0x8a,0x8b,0x8c,0x8c,0x8c,0x8d,0x8f,0x8d,0x86,0x80,
+ 0x7f,0x8c,0x90,0x8a,0x85,0x84,0x8e,0x90,0x87,0x8b,0x8f,0x89,0x8a,0x91,0x8c,
+ 0x86,0x8a,0x85,0x7c,0x82,0x8c,0x95,0x97,0x91,0x89,0x80,0x78,0x7b,0x88,0x92,
+ 0x98,0x95,0x92,0x91,0x95,0x98,0x97,0x97,0x96,0x97,0x97,0x97,0x97,0x97,0x97,
+ 0x98,0x99,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9d,0x9e,0x9d,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9d,0x9e,0x9e,0xa0,
+ 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+ 0xa5,0xa5,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa8,0xa8,0xa7,0xa9,0xa8,0xa7,
+ 0xa9,0xaa,0xa8,0xa8,0xaa,0xaa,0xaa,0xa7,0xb4,0xc5,0x84,0x36,0x03,0x24,0x81,
+ 0xae,0xbd,0xaa,0xa6,0xab,0xac,0xab,0xaa,0xaa,0xaa,0xab,0xac,0xad,0xae,0xae,
+ 0xae,0xad,0xad,0xac,0xac,0xae,0xae,0xae,0xae,0xad,0xb0,0xb0,0xac,0xb9,0xbb,
+ 0x8a,0x4b,0x0a,0x00,0x05,0x4e,0x91,0xbe,0xba,0xa9,0xad,0xb0,0xb0,0xb1,0xb0,
+ 0xae,0xad,0xae,0xae,0xaf,0xb0,0xb0,0xaf,0xae,0xae,0xb1,0xb8,0xb7,0x7b,0x37,
+ 0x04,0x00,0x09,0x05,0x00,0x01,0x02,0x04,0x03,0x03,0x02,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x03,0x00,0x12,0x82,0xbd,0xc4,0xbb,0xb4,0xc5,0x82,0x0c,0x00,0x03,0x07,0x05,
+ 0x00,0x02,0x06,0x07,0x00,0x00,0x53,0x9f,0xbf,0xbd,0xac,0xae,0xb2,0xb2,0xb2,
+ 0xb2,0xb1,0xb2,0xb5,0xb5,0xb4,0xb2,0xb1,0xb1,0xb0,0xb0,0xb0,0xb0,0xb1,0xb1,
+ 0xb2,0xb1,0xb0,0xb0,0xaf,0xaf,0xb0,0xb1,0xb0,0xaf,0xae,0xae,0xaf,0xaf,0xae,
+ 0xae,0xae,0xae,0xad,0xad,0xad,0xad,0xad,0xac,0xac,0xac,0xad,0xad,0xac,0xac,
+ 0xad,0xad,0xad,0xad,0xab,0xaa,0xaa,0xa9,0xa8,0xa8,0xa7,0xa3,0xa4,0xa8,0xa9,
+ 0xa6,0x9f,0xab,0xb6,0x9b,0x77,0x53,0x78,0xab,0xa0,0x99,0xa2,0xa4,0xa4,0xa0,
+ 0x9d,0xc8,0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4b,0x4c,0x4c,0x4d,0x4d,
+ 0x4e,0x4f,0x4f,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x51,0x51,0x51,0x51,0x51,
+ 0x53,0x55,0x56,0x55,0x53,0x53,0x53,0x57,0x59,0x5a,0x59,0x57,0x58,0x5a,0x5a,
+ 0x5b,0x5a,0x59,0x59,0x5b,0x5c,0x5e,0x65,0x66,0x5e,0x5e,0x60,0x5f,0x5e,0x5e,
+ 0x5f,0x60,0x5f,0x60,0x62,0x62,0x62,0x63,0x65,0x66,0x66,0x66,0x67,0x68,0x68,
+ 0x68,0x68,0x67,0x68,0x69,0x6b,0x6c,0x6b,0x6b,0x6b,0x6c,0x6d,0x6d,0x6d,0x6d,
+ 0x6e,0x6f,0x70,0x70,0x70,0x70,0x70,0x72,0x70,0x6e,0x71,0x74,0x76,0x74,0x70,
+ 0x6c,0x78,0x94,0x75,0x45,0x2b,0x45,0x8e,0x8a,0x70,0x76,0x7a,0x7b,0x7b,0x7b,
+ 0x7b,0x7b,0x7b,0x7c,0x7c,0x7d,0x7d,0x7d,0x7e,0x7e,0x7f,0x7f,0x81,0x7f,0x7e,
+ 0x81,0x81,0x80,0x80,0x80,0x82,0x83,0x85,0x84,0x84,0x86,0x86,0x86,0x86,0x87,
+ 0x88,0x88,0x87,0x8a,0x89,0x86,0x86,0x88,0x89,0x89,0x8a,0x8a,0x89,0x8e,0x8e,
+ 0x88,0x80,0x7d,0x8c,0x90,0x86,0x7e,0x7c,0x8f,0x91,0x82,0x88,0x8d,0x82,0x80,
+ 0x87,0x8d,0x8d,0x7e,0x77,0x79,0x84,0x8e,0x91,0x94,0x96,0x8f,0x81,0x6b,0x6f,
+ 0x83,0x8d,0x93,0x91,0x92,0x95,0x95,0x95,0x94,0x97,0x9a,0x98,0x97,0x96,0x95,
+ 0x95,0x99,0x9b,0x98,0x98,0x9a,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9e,
+ 0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa2,0xa3,0xa3,0xa3,0xa4,0xa4,0xa3,
+ 0xa4,0xa4,0xa4,0xa5,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa6,0xa7,0xa7,0xa7,0xa7,
+ 0xa7,0xa7,0xa9,0xaa,0xa7,0xa7,0xa8,0xaa,0xaa,0xa3,0xb1,0xc4,0x8d,0x45,0x07,
+ 0x19,0x68,0xa3,0xc2,0xad,0xa6,0xa9,0xaa,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xac,
+ 0xad,0xae,0xad,0xad,0xad,0xad,0xac,0xac,0xad,0xae,0xae,0xae,0xae,0xae,0xad,
+ 0xb8,0xb9,0x91,0x55,0x0b,0x00,0x05,0x40,0x82,0xbf,0xbc,0xa7,0xac,0xae,0xae,
+ 0xb0,0xb2,0xad,0xac,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaa,0xb3,0xc0,
+ 0xaa,0x7d,0x3c,0x13,0x00,0x00,0x02,0x05,0x05,0x03,0x02,0x02,0x03,0x02,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x02,0x00,0x10,0x78,0xb5,0xc4,0xc0,0xb8,0xbc,0x74,0x03,0x00,0x01,
+ 0x06,0x06,0x03,0x03,0x03,0x04,0x00,0x03,0x62,0xaf,0xbe,0xba,0xae,0xb0,0xb2,
+ 0xb1,0xb1,0xb2,0xb2,0xb2,0xb4,0xb4,0xb3,0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb1,
+ 0xb1,0xb2,0xb2,0xb1,0xb0,0xb2,0xb3,0xb3,0xb2,0xb1,0xb2,0xb2,0xb1,0xae,0xae,
+ 0xae,0xae,0xad,0xad,0xad,0xab,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xa9,0xaa,0xa9,
+ 0xa9,0xaa,0xaa,0xab,0xab,0xab,0xaa,0xa9,0xa6,0xa7,0xaa,0xa9,0xa7,0xa5,0xa7,
+ 0xaa,0xa7,0xa2,0x98,0x95,0x90,0x7f,0x62,0x41,0x63,0x95,0x90,0x90,0x9b,0x9c,
+ 0x99,0x95,0x94,0xc8,0x48,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x4e,0x4f,0x50,0x50,0x50,0x50,0x50,0x50,
+ 0x50,0x50,0x50,0x53,0x53,0x53,0x53,0x53,0x53,0x56,0x57,0x57,0x57,0x57,0x57,
+ 0x57,0x5a,0x5c,0x5c,0x57,0x57,0x5a,0x5b,0x5d,0x68,0x69,0x5e,0x5e,0x60,0x5e,
+ 0x5d,0x5c,0x5e,0x61,0x5f,0x5f,0x62,0x62,0x62,0x62,0x63,0x65,0x65,0x65,0x65,
+ 0x65,0x66,0x67,0x68,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6a,0x6a,0x6b,
+ 0x6b,0x6c,0x6d,0x6d,0x6e,0x6e,0x6f,0x70,0x71,0x70,0x70,0x70,0x72,0x74,0x74,
+ 0x73,0x72,0x6d,0x77,0x90,0x72,0x45,0x2b,0x45,0x8d,0x89,0x71,0x78,0x7b,0x78,
+ 0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7b,0x7d,0x7d,0x7c,0x7c,0x7c,0x7c,0x7e,0x81,
+ 0x7e,0x7b,0x7e,0x7f,0x7f,0x7f,0x80,0x81,0x82,0x85,0x83,0x83,0x86,0x85,0x83,
+ 0x86,0x88,0x88,0x86,0x84,0x89,0x8a,0x84,0x85,0x87,0x86,0x86,0x8a,0x87,0x86,
+ 0x8d,0x8f,0x8b,0x82,0x7d,0x8e,0x91,0x81,0x78,0x78,0x91,0x92,0x7b,0x84,0x8c,
+ 0x78,0x72,0x7e,0x92,0x98,0x74,0x69,0x78,0x85,0x8e,0x8d,0x8e,0x91,0x93,0x8a,
+ 0x6d,0x6d,0x81,0x87,0x8a,0x8c,0x93,0x9b,0x96,0x91,0x90,0x95,0x9d,0x99,0x95,
+ 0x95,0x95,0x95,0x9c,0x9e,0x96,0x96,0x99,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,
+ 0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9b,0x9c,0x9c,0x9c,0x9d,0x9d,0x9d,0x9d,
+ 0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0x9f,0x9f,0x9f,0x9f,0xa0,0xa0,0xa1,0xa1,0xa0,
+ 0xa0,0xa2,0xa3,0xa1,0xa1,0xa1,0xa2,0xa3,0xa3,0xa2,0xa1,0xa1,0xa2,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa4,0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa6,0xa7,0xa7,
+ 0xa7,0xa6,0xa6,0xa7,0xa8,0xa8,0xa6,0xa5,0xa6,0xa8,0xa9,0xa0,0xae,0xc5,0x8f,
+ 0x46,0x09,0x12,0x55,0x9b,0xc4,0xae,0xa5,0xa8,0xaa,0xac,0xac,0xab,0xaa,0xa8,
+ 0xa8,0xaa,0xac,0xae,0xad,0xad,0xae,0xad,0xac,0xaa,0xab,0xaf,0xb0,0xaf,0xac,
+ 0xab,0xad,0xb9,0xbb,0x95,0x58,0x0c,0x00,0x05,0x2d,0x6f,0xbf,0xbf,0xa6,0xab,
+ 0xae,0xab,0xae,0xb2,0xaf,0xae,0xae,0xae,0xae,0xad,0xad,0xae,0xae,0xae,0xae,
+ 0xaa,0xa9,0xbe,0xbd,0x8d,0x48,0x02,0x00,0x03,0x0b,0x09,0x02,0x03,0x03,0x04,
+ 0x03,0x00,0x01,0x02,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
+ 0x01,0x02,0x01,0x01,0x00,0x00,0x0d,0x6d,0xaa,0xc3,0xc7,0xba,0xa3,0x5f,0x05,
+ 0x00,0x00,0x03,0x05,0x07,0x03,0x00,0x00,0x00,0x0d,0x76,0xc1,0xbd,0xb6,0xb1,
+ 0xb3,0xb4,0xb1,0xb2,0xb4,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb3,0xb4,0xb3,0xb2,
+ 0xb1,0xb0,0xaf,0xb0,0xb1,0xaf,0xaf,0xb2,0xb5,0xb5,0xb2,0xb1,0xb3,0xb4,0xb3,
+ 0xae,0xae,0xb0,0xaf,0xae,0xae,0xae,0xad,0xab,0xaa,0xab,0xab,0xaa,0xaa,0xaa,
+ 0xaa,0xaa,0xa9,0xaa,0xac,0xae,0xad,0xac,0xad,0xab,0xa6,0xa9,0xb0,0xae,0xaa,
+ 0xaa,0xad,0xae,0xa6,0x9d,0x96,0x74,0x53,0x63,0x68,0x5a,0x68,0x7f,0x88,0x90,
+ 0x96,0x94,0x8e,0x8d,0x8b,0xc8,0x46,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,
+ 0x49,0x49,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4e,0x4e,0x4f,0x50,0x50,
+ 0x4f,0x4f,0x4f,0x4f,0x50,0x52,0x53,0x53,0x53,0x52,0x53,0x54,0x56,0x56,0x56,
+ 0x56,0x57,0x57,0x57,0x58,0x58,0x55,0x55,0x57,0x60,0x62,0x45,0x3e,0x56,0x5d,
+ 0x5e,0x5c,0x5d,0x60,0x60,0x60,0x62,0x61,0x5e,0x60,0x62,0x62,0x62,0x64,0x64,
+ 0x64,0x64,0x64,0x65,0x65,0x66,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x68,0x69,
+ 0x69,0x69,0x6a,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6f,0x70,0x6d,0x70,0x72,0x74,
+ 0x73,0x70,0x70,0x70,0x69,0x74,0x8e,0x70,0x42,0x28,0x44,0x90,0x8b,0x71,0x78,
+ 0x7b,0x77,0x75,0x75,0x78,0x79,0x7b,0x7a,0x7a,0x7c,0x7c,0x7b,0x7b,0x7c,0x7d,
+ 0x7e,0x7e,0x7e,0x7e,0x7e,0x7c,0x7b,0x80,0x84,0x82,0x7f,0x7e,0x82,0x84,0x7d,
+ 0x81,0x8a,0x87,0x85,0x86,0x86,0x86,0x83,0x85,0x8b,0x8b,0x89,0x88,0x88,0x8a,
+ 0x8a,0x88,0x8d,0x8b,0x82,0x7b,0x7a,0x90,0x90,0x79,0x78,0x82,0x93,0x90,0x7a,
+ 0x7f,0x86,0x79,0x76,0x7f,0x91,0x96,0x70,0x66,0x76,0x8d,0x99,0x89,0x85,0x8a,
+ 0x8a,0x87,0x80,0x7e,0x80,0x82,0x85,0x89,0x8e,0x94,0x94,0x94,0x95,0x95,0x93,
+ 0x91,0x91,0x98,0x9b,0x9a,0x99,0x95,0x8f,0x92,0x98,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9b,0x9b,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9e,0x9f,0xa0,0xa0,0x9f,0x9f,0x9f,0x9e,0x9f,0xa0,0xa0,
+ 0xa0,0xa0,0x9f,0xa0,0xa2,0xa1,0xa0,0xa0,0xa1,0xa2,0xa2,0xa2,0xa1,0xa2,0xa2,
+ 0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa4,0xa4,0xa5,0xa5,0xa5,0xa6,0xa5,
+ 0xa4,0xa3,0xa3,0xa7,0xa9,0xa7,0xa3,0xa2,0xa4,0xa7,0xa7,0xa8,0xa7,0x9e,0xad,
+ 0xc4,0x8a,0x40,0x07,0x0e,0x4c,0x9a,0xc8,0xaa,0xa1,0xa7,0xaa,0xaa,0xab,0xaa,
+ 0xaa,0xa9,0xaa,0xab,0xac,0xad,0xac,0xac,0xac,0xab,0xaa,0xab,0xac,0xad,0xad,
+ 0xad,0xb0,0xb0,0xac,0xb7,0xbd,0x9c,0x5f,0x0e,0x00,0x03,0x1f,0x5e,0xb9,0xbf,
+ 0xaa,0xad,0xb0,0xb1,0xb0,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xb0,0xb0,
+ 0xb0,0xaf,0xad,0xaa,0xb1,0xb6,0xb9,0x8b,0x40,0x0e,0x00,0x00,0x04,0x05,0x08,
+ 0x08,0x02,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x01,0x04,0x06,0x05,0x02,0x00,0x0e,0x6b,0xa7,0xc0,0xc8,0xb5,0x65,
+ 0x28,0x02,0x00,0x04,0x02,0x03,0x06,0x03,0x00,0x00,0x03,0x1a,0x83,0xc8,0xb8,
+ 0xb2,0xb2,0xb3,0xb4,0xb3,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,0xb2,0xb2,0xb3,0xb3,
+ 0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb2,0xb1,0xb1,0xb2,0xb3,0xb5,0xb5,0xb5,
+ 0xb2,0xae,0xb0,0xb1,0xb2,0xb2,0xb2,0xb2,0xb2,0xb0,0xaf,0xae,0xb0,0xb1,0xb1,
+ 0xb0,0xb0,0xae,0xae,0xad,0xaf,0xb1,0xae,0xac,0xab,0xae,0xaf,0xaa,0xae,0xb1,
+ 0xa8,0x9e,0x98,0xa2,0xaa,0x8a,0x7c,0x8f,0x62,0x32,0x69,0x86,0x73,0x81,0x96,
+ 0x97,0x95,0x95,0x92,0x90,0x91,0x94,0xc8,0x44,0x44,0x45,0x46,0x47,0x48,0x47,
+ 0x46,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4b,0x4c,0x4b,0x4b,0x4c,0x4c,0x4d,0x4e,
+ 0x4e,0x4e,0x4d,0x4d,0x4e,0x4e,0x50,0x51,0x52,0x53,0x52,0x51,0x51,0x53,0x54,
+ 0x54,0x54,0x54,0x56,0x57,0x55,0x54,0x55,0x55,0x54,0x55,0x65,0x67,0x27,0x1b,
+ 0x51,0x5f,0x5e,0x5c,0x5d,0x61,0x60,0x5e,0x62,0x60,0x5d,0x5f,0x62,0x61,0x62,
+ 0x62,0x63,0x62,0x62,0x63,0x63,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x65,0x66,
+ 0x66,0x67,0x68,0x68,0x69,0x69,0x69,0x6a,0x6b,0x6c,0x6d,0x6d,0x6d,0x6c,0x6f,
+ 0x73,0x72,0x70,0x6e,0x70,0x70,0x68,0x71,0x8d,0x6d,0x3d,0x26,0x44,0x91,0x8a,
+ 0x6f,0x78,0x7a,0x75,0x74,0x74,0x77,0x78,0x7a,0x78,0x78,0x7a,0x7b,0x7a,0x7b,
+ 0x7b,0x7f,0x7e,0x7b,0x7d,0x7f,0x7e,0x7b,0x79,0x7f,0x82,0x80,0x7e,0x7c,0x80,
+ 0x82,0x7a,0x7f,0x8a,0x8a,0x88,0x85,0x84,0x84,0x80,0x82,0x8b,0x8b,0x86,0x87,
+ 0x89,0x8a,0x89,0x8a,0x8c,0x86,0x78,0x73,0x78,0x8d,0x8c,0x72,0x79,0x88,0x90,
+ 0x89,0x76,0x7f,0x88,0x7a,0x77,0x81,0x8c,0x8b,0x70,0x68,0x74,0x8d,0x9b,0x86,
+ 0x80,0x88,0x86,0x83,0x86,0x7f,0x75,0x7f,0x89,0x88,0x8a,0x8c,0x92,0x98,0x98,
+ 0x91,0x88,0x8a,0x90,0x99,0x9c,0x9a,0x95,0x91,0x8d,0x91,0x98,0x97,0x96,0x97,
+ 0x97,0x98,0x98,0x98,0x99,0x99,0x99,0x98,0x98,0x99,0x99,0x9a,0x9b,0x9b,0x9b,
+ 0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,0x9e,0x9f,0x9e,0x9e,0x9e,0x9e,
+ 0x9e,0x9f,0x9f,0x9e,0x9e,0xa0,0xa1,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,
+ 0xa1,0xa2,0xa2,0xa2,0xa2,0xa1,0xa2,0xa2,0xa3,0xa3,0xa3,0xa4,0xa5,0xa5,0xa5,
+ 0xa5,0xa4,0xa3,0xa1,0xa1,0xa7,0xa9,0xa6,0xa2,0xa0,0xa4,0xa7,0xa8,0xa7,0xa4,
+ 0x9d,0xad,0xc4,0x87,0x3c,0x07,0x0b,0x41,0x95,0xc8,0xa9,0xa0,0xa9,0xa9,0xa9,
+ 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xab,0xac,
+ 0xab,0xaa,0xaa,0xb1,0xb1,0xa9,0xb5,0xbd,0x9e,0x62,0x10,0x00,0x00,0x0f,0x4d,
+ 0xb4,0xc0,0xac,0xac,0xaf,0xb3,0xaf,0xaa,0xac,0xad,0xad,0xad,0xae,0xaf,0xb0,
+ 0xb1,0xb1,0xb0,0xaf,0xae,0xac,0xa7,0xaa,0xc4,0xb5,0x84,0x45,0x13,0x03,0x00,
+ 0x03,0x08,0x09,0x02,0x01,0x04,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x04,0x06,0x07,0x05,0x00,0x0f,0x70,0xad,0xc0,0xc7,
+ 0xa2,0x33,0x00,0x01,0x04,0x07,0x01,0x01,0x03,0x04,0x03,0x00,0x0a,0x29,0x8d,
+ 0xc8,0xb3,0xae,0xb3,0xb2,0xb2,0xb4,0xb3,0xb1,0xb2,0xb3,0xb4,0xb4,0xb3,0xb2,
+ 0xb2,0xb2,0xb2,0xb3,0xb4,0xb5,0xb5,0xb5,0xb5,0xb3,0xb2,0xb2,0xb0,0xb0,0xb5,
+ 0xb6,0xb3,0xaf,0xad,0xb1,0xb2,0xb2,0xb3,0xb5,0xb3,0xb2,0xb2,0xb0,0xb0,0xb2,
+ 0xb3,0xb3,0xb3,0xb3,0xb1,0xb1,0xb1,0xb2,0xb2,0xaf,0xad,0xab,0xae,0xb0,0xae,
+ 0xaf,0xb0,0xa7,0x9c,0x91,0x9e,0xa9,0x7b,0x66,0x80,0x63,0x41,0x66,0x84,0x8c,
+ 0x9e,0xae,0xa7,0xa1,0x9c,0x9a,0x9b,0x9d,0xa1,0xc8,0x42,0x43,0x44,0x45,0x45,
+ 0x46,0x45,0x45,0x45,0x45,0x46,0x48,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4c,
+ 0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4e,0x4f,0x50,0x51,0x51,0x50,0x50,0x50,
+ 0x51,0x52,0x53,0x53,0x53,0x53,0x53,0x55,0x53,0x52,0x56,0x57,0x53,0x65,0x69,
+ 0x1c,0x11,0x56,0x65,0x61,0x5e,0x5c,0x5c,0x5c,0x5d,0x5d,0x5e,0x5e,0x5f,0x60,
+ 0x5e,0x5f,0x62,0x62,0x61,0x61,0x62,0x62,0x62,0x63,0x63,0x63,0x63,0x62,0x63,
+ 0x65,0x65,0x65,0x65,0x66,0x66,0x67,0x68,0x69,0x69,0x6a,0x6b,0x6b,0x6a,0x69,
+ 0x69,0x6d,0x6f,0x6b,0x6b,0x70,0x72,0x70,0x69,0x72,0x8c,0x69,0x38,0x25,0x43,
+ 0x8c,0x84,0x6a,0x74,0x78,0x74,0x76,0x7a,0x79,0x78,0x77,0x77,0x76,0x74,0x77,
+ 0x7c,0x7b,0x7a,0x7d,0x7d,0x7b,0x7c,0x7d,0x7d,0x7d,0x7c,0x79,0x78,0x7a,0x7f,
+ 0x85,0x7c,0x79,0x83,0x83,0x81,0x91,0x97,0x86,0x7f,0x7f,0x82,0x84,0x80,0x7e,
+ 0x7e,0x82,0x85,0x84,0x85,0x86,0x8a,0x82,0x6f,0x6d,0x76,0x86,0x82,0x6d,0x78,
+ 0x87,0x86,0x7c,0x6d,0x85,0x95,0x74,0x6f,0x82,0x80,0x78,0x73,0x70,0x70,0x7f,
+ 0x8a,0x86,0x86,0x8a,0x8a,0x84,0x74,0x65,0x5d,0x81,0x99,0x8b,0x85,0x86,0x93,
+ 0x9a,0x97,0x8b,0x80,0x8a,0x92,0x93,0x92,0x91,0x94,0x95,0x95,0x95,0x96,0x96,
+ 0x95,0x95,0x96,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,
+ 0x9a,0x9a,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9c,
+ 0x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9d,0x9f,0xa0,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+ 0xa0,0xa0,0xa0,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0xa1,0xa2,0xa2,0xa3,0xa4,0xa4,
+ 0xa3,0xa3,0xa3,0xa3,0xa5,0xa6,0xa5,0xa4,0xa3,0xa3,0xa4,0xa5,0xa5,0xa6,0xa6,
+ 0xa6,0xa3,0x9e,0xae,0xc5,0x8a,0x3f,0x0c,0x07,0x2e,0x89,0xc6,0xa9,0xa3,0xae,
+ 0xab,0xa7,0xa8,0xa9,0xa8,0xa8,0xa8,0xa8,0xa9,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xab,0xac,0xac,0xaa,0xa7,0xab,0xaa,0xa1,0xb1,0xbc,0x99,0x5d,0x0e,0x00,0x00,
+ 0x00,0x3a,0xb2,0xc0,0xaa,0xa7,0xa9,0xae,0xab,0xa7,0xa9,0xaa,0xaa,0xaa,0xaa,
+ 0xac,0xae,0xae,0xae,0xae,0xad,0xab,0xaa,0xae,0xb1,0xae,0xb3,0xba,0xa7,0x76,
+ 0x20,0x00,0x00,0x00,0x03,0x05,0x06,0x06,0x04,0x02,0x00,0x00,0x00,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x03,0x0a,0x00,0x0e,0x7e,0xbd,
+ 0xc4,0xb0,0x7b,0x1e,0x00,0x03,0x03,0x02,0x00,0x00,0x03,0x06,0x05,0x00,0x0e,
+ 0x38,0x95,0xc8,0xaf,0xac,0xb5,0xb2,0xaf,0xb1,0xaf,0xad,0xb0,0xb3,0xb3,0xb3,
+ 0xb2,0xb2,0xb2,0xb0,0xb0,0xb1,0xb2,0xb2,0xb3,0xb3,0xb3,0xb2,0xb3,0xb5,0xb1,
+ 0xad,0xb0,0xb1,0xae,0xb0,0xb2,0xb1,0xaf,0xae,0xb0,0xb1,0xae,0xae,0xae,0xad,
+ 0xad,0xaf,0xb0,0xae,0xb0,0xb0,0xae,0xb0,0xb2,0xae,0xad,0xb0,0xb0,0xad,0xad,
+ 0xad,0xad,0xad,0xae,0xb1,0xaf,0xa7,0xab,0xad,0x86,0x6a,0x68,0x7e,0x8b,0x4b,
+ 0x4a,0xa0,0xb9,0xb5,0xb5,0xb2,0xaf,0xae,0xaf,0xaf,0xaf,0xc8,0x41,0x41,0x43,
+ 0x44,0x45,0x45,0x45,0x44,0x43,0x44,0x45,0x46,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x4a,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4d,0x4e,0x4f,0x50,0x50,0x4f,
+ 0x4f,0x4f,0x50,0x50,0x51,0x51,0x51,0x50,0x52,0x55,0x53,0x50,0x55,0x57,0x54,
+ 0x62,0x62,0x1a,0x12,0x57,0x65,0x61,0x5e,0x5a,0x57,0x59,0x5a,0x5a,0x5b,0x5e,
+ 0x5e,0x5e,0x5c,0x5e,0x61,0x61,0x60,0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x62,
+ 0x62,0x62,0x64,0x64,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x69,0x69,0x6a,0x6a,
+ 0x68,0x68,0x6d,0x6d,0x6b,0x69,0x6b,0x70,0x71,0x70,0x67,0x70,0x8d,0x68,0x33,
+ 0x22,0x41,0x8a,0x82,0x67,0x71,0x76,0x74,0x75,0x78,0x79,0x78,0x77,0x76,0x75,
+ 0x76,0x78,0x7a,0x79,0x78,0x78,0x7a,0x7d,0x7c,0x7b,0x7d,0x7d,0x7c,0x78,0x78,
+ 0x7b,0x7f,0x81,0x79,0x7a,0x8b,0x82,0x6c,0x64,0x6d,0x8a,0x87,0x78,0x7b,0x84,
+ 0x8d,0x91,0x8f,0x87,0x82,0x82,0x83,0x84,0x82,0x82,0x80,0x74,0x6c,0x7b,0x7f,
+ 0x73,0x78,0x7f,0x75,0x6e,0x6e,0x82,0x8f,0x7a,0x70,0x76,0x76,0x77,0x7c,0x79,
+ 0x70,0x75,0x79,0x74,0x7f,0x91,0x8c,0x7b,0x60,0x5e,0x70,0x8b,0x99,0x8a,0x86,
+ 0x8a,0x92,0x97,0x94,0x88,0x7e,0x8d,0x96,0x8d,0x87,0x86,0x91,0x98,0x95,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x97,0x97,0x97,0x97,0x97,0x98,0x98,
+ 0x98,0x99,0x99,0x99,0x99,0x99,0x9a,0x9a,0x9a,0x9b,0x9b,0x99,0x99,0x9a,0x9b,
+ 0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,0x9d,0x9d,0x9d,0x9e,0x9e,0x9e,0x9d,
+ 0x9d,0x9d,0x9e,0x9f,0xa0,0xa0,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa1,0xa2,
+ 0xa3,0xa3,0xa2,0xa2,0xa1,0xa1,0xa3,0xa3,0xa3,0xa2,0xa2,0xa3,0xa4,0xa4,0xa3,
+ 0xa4,0xa6,0xa6,0xa3,0x9c,0xab,0xc5,0x95,0x51,0x13,0x01,0x1d,0x7c,0xc1,0xad,
+ 0xa5,0xaa,0xa8,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xaa,0xaa,0xaa,
+ 0xa9,0xa9,0xaa,0xaa,0xac,0xaa,0xa6,0xa9,0xa7,0x9e,0xaf,0xbd,0x9d,0x60,0x0e,
+ 0x00,0x01,0x00,0x30,0xb2,0xc1,0xaa,0xa5,0xa6,0xab,0xaa,0xa7,0xa8,0xa8,0xa7,
+ 0xa7,0xa8,0xaa,0xab,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xae,0xae,0xa5,0xaa,0xb9,
+ 0xbe,0xaa,0x70,0x46,0x28,0x0a,0x00,0x02,0x06,0x07,0x04,0x02,0x00,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x05,0x00,0x03,0x0a,0x00,0x0f,
+ 0x81,0xc2,0xc8,0x93,0x4b,0x0e,0x00,0x06,0x04,0x02,0x01,0x02,0x04,0x06,0x04,
+ 0x00,0x1d,0x5b,0xa4,0xc8,0xaf,0xab,0xb2,0xb1,0xaf,0xaf,0xae,0xad,0xb0,0xb2,
+ 0xb2,0xb2,0xb2,0xb2,0xb2,0xb1,0xb0,0xaf,0xaf,0xb0,0xb1,0xb2,0xb2,0xb2,0xb2,
+ 0xb3,0xb1,0xae,0xad,0xae,0xae,0xb0,0xb0,0xae,0xae,0xb1,0xb1,0xaf,0xad,0xad,
+ 0xae,0xae,0xad,0xae,0xae,0xac,0xae,0xaf,0xae,0xae,0xb0,0xae,0xad,0xaf,0xaf,
+ 0xae,0xad,0xac,0xad,0xae,0xb0,0xb2,0xb2,0xae,0xaf,0xaf,0xa2,0x8e,0x7a,0x8a,
+ 0x99,0x55,0x52,0xa9,0xbf,0xb8,0xb5,0xb0,0xad,0xb0,0xb4,0xb3,0xb2,0xc8,0x41,
+ 0x41,0x42,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x44,0x45,0x46,0x47,0x47,0x48,
+ 0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4a,0x4a,0x4a,0x4a,0x4c,0x4d,0x4e,0x4f,
+ 0x4f,0x4e,0x4e,0x4e,0x4f,0x4f,0x50,0x50,0x50,0x50,0x52,0x55,0x53,0x50,0x53,
+ 0x56,0x57,0x5e,0x57,0x1d,0x1a,0x55,0x62,0x5e,0x5b,0x57,0x53,0x56,0x59,0x57,
+ 0x59,0x5e,0x5e,0x5c,0x5a,0x5c,0x5f,0x5f,0x5f,0x5f,0x5f,0x60,0x61,0x61,0x61,
+ 0x61,0x62,0x62,0x62,0x63,0x63,0x64,0x65,0x65,0x65,0x65,0x65,0x66,0x67,0x69,
+ 0x69,0x69,0x66,0x68,0x70,0x6d,0x67,0x69,0x6d,0x6d,0x6f,0x6e,0x64,0x6f,0x8f,
+ 0x66,0x2e,0x1d,0x3f,0x8b,0x83,0x67,0x6e,0x73,0x74,0x73,0x72,0x76,0x78,0x78,
+ 0x75,0x75,0x7a,0x7a,0x75,0x75,0x76,0x74,0x77,0x7e,0x7b,0x79,0x7b,0x7c,0x7b,
+ 0x7b,0x7b,0x7f,0x7c,0x78,0x78,0x7e,0x8f,0x7e,0x57,0x2a,0x34,0x8f,0x95,0x74,
+ 0x76,0x85,0x9c,0xa1,0x9b,0x8c,0x82,0x82,0x83,0x84,0x7b,0x82,0x97,0x7e,0x60,
+ 0x70,0x7c,0x7e,0x79,0x70,0x63,0x65,0x77,0x7d,0x7f,0x82,0x78,0x64,0x6f,0x7f,
+ 0x83,0x7e,0x72,0x71,0x6f,0x61,0x72,0x95,0x86,0x6c,0x53,0x66,0x93,0x98,0x91,
+ 0x87,0x89,0x90,0x8f,0x8e,0x91,0x87,0x7e,0x92,0x99,0x88,0x7f,0x7e,0x8f,0x98,
+ 0x91,0x91,0x94,0x94,0x94,0x94,0x94,0x94,0x95,0x95,0x95,0x95,0x95,0x96,0x96,
+ 0x96,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x98,0x98,
+ 0x99,0x9a,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9d,0x9d,0x9d,0x9c,0x9c,0x9d,0x9d,
+ 0x9d,0x9c,0x9c,0x9c,0x9c,0x9e,0x9f,0x9f,0x9d,0x9e,0xa0,0xa0,0xa0,0xa0,0xa0,
+ 0xa0,0xa1,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0x9f,0x9f,0xa0,0xa0,0xa2,0xa3,0xa3,
+ 0xa1,0xa0,0xa3,0xa6,0xa6,0xa2,0x98,0xa7,0xc3,0xa3,0x69,0x1a,0x00,0x0f,0x70,
+ 0xbc,0xb2,0xa8,0xa2,0xa3,0xa6,0xa5,0xa5,0xa6,0xa6,0xa6,0xa6,0xa7,0xa8,0xa9,
+ 0xa9,0xa7,0xa7,0xa8,0xa7,0xa8,0xab,0xaa,0xa7,0xa8,0xa6,0x9f,0xb0,0xbe,0xa6,
+ 0x69,0x0e,0x00,0x03,0x00,0x2c,0xad,0xc1,0xad,0xa7,0xa6,0xab,0xaa,0xa8,0xa9,
+ 0xa8,0xa7,0xa7,0xa7,0xa8,0xa9,0xa9,0xa8,0xa8,0xa8,0xa9,0xaa,0xaa,0xa8,0xa7,
+ 0xa1,0x9d,0xab,0xba,0xc5,0xaa,0x72,0x2b,0x00,0x00,0x03,0x07,0x04,0x01,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x08,0x03,0x02,0x07,
+ 0x00,0x12,0x81,0xc2,0xc8,0x72,0x1b,0x04,0x00,0x07,0x05,0x03,0x04,0x05,0x06,
+ 0x04,0x02,0x00,0x31,0x86,0xb5,0xc4,0xb1,0xab,0xae,0xb0,0xb1,0xae,0xae,0xae,
+ 0xaf,0xb0,0xb1,0xb1,0xb2,0xb2,0xb2,0xb2,0xb1,0xaf,0xae,0xad,0xae,0xb0,0xb2,
+ 0xb0,0xaf,0xb0,0xb1,0xb0,0xab,0xac,0xb2,0xae,0xaa,0xaa,0xae,0xb4,0xb2,0xaf,
+ 0xad,0xae,0xb1,0xaf,0xae,0xae,0xae,0xab,0xae,0xaf,0xae,0xae,0xac,0xae,0xb0,
+ 0xae,0xae,0xaf,0xae,0xae,0xaf,0xb1,0xb2,0xae,0xad,0xaf,0xaf,0xb0,0xbe,0xbb,
+ 0x9e,0x8b,0x7e,0x70,0x7f,0xab,0xb9,0xb5,0xa7,0x9f,0x9e,0xa7,0xb1,0xae,0xaf,
+ 0xc8,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x42,0x42,0x42,0x43,0x44,0x45,0x46,
+ 0x46,0x46,0x46,0x47,0x47,0x48,0x48,0x48,0x49,0x49,0x49,0x49,0x4a,0x4b,0x4c,
+ 0x4c,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4e,0x4e,0x4e,0x4e,0x51,0x52,0x50,0x50,
+ 0x50,0x4e,0x53,0x5e,0x5e,0x4f,0x19,0x18,0x53,0x5e,0x56,0x54,0x54,0x56,0x57,
+ 0x57,0x5a,0x5a,0x5a,0x5c,0x5c,0x59,0x5a,0x5d,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,
+ 0x5f,0x5f,0x60,0x60,0x60,0x60,0x62,0x62,0x62,0x63,0x64,0x64,0x64,0x65,0x65,
+ 0x66,0x67,0x68,0x68,0x66,0x67,0x6d,0x6c,0x69,0x6a,0x6a,0x69,0x69,0x69,0x61,
+ 0x6d,0x8c,0x5e,0x23,0x1a,0x3f,0x88,0x83,0x6b,0x6f,0x71,0x70,0x6f,0x6f,0x71,
+ 0x74,0x74,0x71,0x70,0x76,0x75,0x71,0x73,0x76,0x79,0x7a,0x78,0x75,0x74,0x77,
+ 0x78,0x78,0x78,0x79,0x7a,0x7b,0x7b,0x79,0x7c,0x88,0x7e,0x65,0x39,0x3f,0x90,
+ 0x98,0x7f,0x91,0x8f,0x6c,0x50,0x48,0x70,0x88,0x82,0x82,0x82,0x7d,0x7f,0x86,
+ 0x78,0x65,0x66,0x72,0x85,0x72,0x5b,0x5f,0x71,0x8b,0x89,0x81,0x85,0x78,0x5e,
+ 0x6e,0x7f,0x73,0x6d,0x6f,0x7a,0x80,0x7a,0x7e,0x86,0x6c,0x5b,0x6b,0x7c,0x8d,
+ 0x95,0x93,0x80,0x82,0x8e,0x86,0x86,0x95,0x8b,0x7b,0x8d,0x95,0x84,0x7f,0x83,
+ 0x91,0x97,0x8d,0x8e,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x94,0x94,0x95,
+ 0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x97,0x97,0x98,0x98,0x98,0x98,0x98,
+ 0x98,0x98,0x99,0x9a,0x9b,0x9b,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,0x9b,0x9c,
+ 0x9c,0x9d,0x9c,0x9c,0x9b,0x9b,0x9c,0x9d,0x9e,0x9d,0x9c,0x9d,0xa0,0x9f,0x9f,
+ 0x9f,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,0x9f,0xa3,0xa4,
+ 0xa2,0xa0,0xa0,0xa3,0xa5,0xa3,0xa2,0xa1,0x9e,0xaa,0xbd,0xa8,0x75,0x1d,0x00,
+ 0x04,0x69,0xba,0xb4,0xae,0xaa,0xa7,0xa4,0xa4,0xa4,0xa5,0xa6,0xa7,0xa7,0xa7,
+ 0xa8,0xa8,0xa7,0xa4,0xa5,0xa7,0xa7,0xa7,0xa8,0xa8,0xa8,0xac,0xaa,0xa3,0xad,
+ 0xb9,0xb2,0x79,0x0f,0x00,0x03,0x00,0x2b,0x9e,0xbb,0xb4,0xaa,0xa9,0xaf,0xac,
+ 0xa8,0xaa,0xaa,0xa9,0xa8,0xa9,0xaa,0xaa,0xaa,0xaa,0xa9,0xa9,0xaa,0xaa,0xaa,
+ 0xaa,0xae,0xaa,0xa3,0xa7,0xae,0xb1,0xb5,0xae,0x78,0x3c,0x0a,0x00,0x05,0x03,
+ 0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x04,0x05,0x01,
+ 0x01,0x03,0x00,0x12,0x8d,0xc8,0xbe,0x58,0x00,0x03,0x05,0x04,0x02,0x01,0x03,
+ 0x03,0x02,0x03,0x00,0x00,0x3b,0xa8,0xbd,0xb9,0xb0,0xac,0xac,0xaf,0xb0,0xae,
+ 0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xaf,0xb0,0xaf,0xae,0xac,0xac,0xad,
+ 0xaf,0xb1,0xad,0xae,0xb3,0xb0,0xad,0xae,0xb0,0xb1,0xab,0xa7,0xa8,0xac,0xb1,
+ 0xb2,0xb0,0xae,0xaf,0xb1,0xb0,0xae,0xaf,0xae,0xac,0xae,0xaf,0xaf,0xae,0xae,
+ 0xad,0xad,0xaf,0xae,0xad,0xac,0xae,0xb3,0xb2,0xae,0xaa,0xab,0xb2,0xb0,0xaa,
+ 0xb5,0xb5,0xa7,0x76,0x4c,0x7a,0xa2,0xb2,0xb8,0xae,0x8a,0x7f,0x95,0xa7,0xb3,
+ 0xae,0xad,0xc8,0x41,0x41,0x40,0x40,0x40,0x41,0x41,0x41,0x42,0x41,0x42,0x43,
+ 0x44,0x45,0x45,0x45,0x45,0x45,0x46,0x46,0x47,0x48,0x48,0x48,0x49,0x49,0x49,
+ 0x49,0x4a,0x4b,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4d,0x51,0x51,
+ 0x4c,0x4d,0x50,0x4c,0x51,0x61,0x5e,0x49,0x14,0x15,0x54,0x5b,0x50,0x50,0x52,
+ 0x57,0x57,0x57,0x5a,0x5b,0x59,0x5a,0x5b,0x57,0x57,0x5a,0x5a,0x5a,0x5b,0x5b,
+ 0x5c,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x62,0x62,0x62,0x63,
+ 0x63,0x64,0x64,0x65,0x65,0x66,0x65,0x65,0x67,0x69,0x6b,0x69,0x66,0x65,0x68,
+ 0x6a,0x63,0x6d,0x87,0x57,0x1b,0x1a,0x41,0x83,0x7f,0x69,0x6c,0x6f,0x6f,0x6d,
+ 0x6c,0x6d,0x6f,0x6f,0x70,0x70,0x70,0x70,0x70,0x71,0x74,0x78,0x78,0x74,0x71,
+ 0x70,0x74,0x76,0x78,0x78,0x78,0x75,0x78,0x7b,0x78,0x79,0x84,0x7b,0x69,0x57,
+ 0x5f,0x89,0x8d,0x82,0x97,0x86,0x3d,0x1b,0x1e,0x62,0x8a,0x82,0x82,0x82,0x80,
+ 0x7c,0x78,0x70,0x69,0x5e,0x6b,0x8b,0x70,0x50,0x62,0x78,0x8c,0x7f,0x70,0x7f,
+ 0x78,0x5e,0x72,0x82,0x6d,0x63,0x67,0x78,0x89,0x8e,0x82,0x69,0x57,0x5a,0x85,
+ 0x8d,0x7f,0x8d,0x91,0x7f,0x82,0x8e,0x80,0x7e,0x98,0x8f,0x78,0x88,0x8f,0x80,
+ 0x80,0x89,0x91,0x92,0x8c,0x8d,0x91,0x91,0x91,0x91,0x91,0x92,0x91,0x92,0x92,
+ 0x93,0x94,0x94,0x94,0x93,0x94,0x94,0x95,0x95,0x95,0x95,0x96,0x96,0x97,0x97,
+ 0x97,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x99,0x99,0x99,0x9a,0x9a,0x99,0x99,
+ 0x9a,0x9b,0x9c,0x9c,0x9c,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9f,
+ 0x9e,0x9e,0x9e,0x9d,0x9e,0x9e,0x9f,0x9f,0xa0,0xa0,0xa0,0xa0,0xa1,0xa0,0xa0,
+ 0xa3,0xa3,0xa0,0xa0,0xa1,0xa3,0xa3,0xa0,0xa0,0xa1,0xa1,0xa9,0xb5,0xaa,0x80,
+ 0x1e,0x00,0x00,0x60,0xb1,0xab,0xa8,0xa9,0xa7,0xa5,0xa3,0xa3,0xa3,0xa5,0xa6,
+ 0xa6,0xa7,0xa8,0xa8,0xa7,0xa3,0xa4,0xa7,0xa6,0xa5,0xa7,0xa8,0xaa,0xae,0xad,
+ 0xa5,0xaa,0xb3,0xba,0x86,0x12,0x00,0x03,0x00,0x29,0x8d,0xb3,0xb9,0xae,0xaa,
+ 0xb0,0xad,0xa8,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,
+ 0xab,0xaa,0xaa,0xae,0xae,0xaa,0xa8,0xa3,0x9c,0xad,0xc4,0xb1,0x77,0x15,0x00,
+ 0x03,0x03,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x02,
+ 0x02,0x01,0x00,0x01,0x00,0x15,0x9b,0xc4,0x94,0x3a,0x00,0x03,0x07,0x03,0x00,
+ 0x00,0x06,0x06,0x03,0x01,0x00,0x00,0x4b,0xbb,0xbd,0xae,0xae,0xad,0xab,0xae,
+ 0xae,0xac,0xac,0xad,0xac,0xab,0xae,0xad,0xab,0xaa,0xab,0xad,0xae,0xad,0xab,
+ 0xab,0xac,0xae,0xaf,0xad,0xad,0xb2,0xae,0xab,0xaf,0xb0,0xad,0xae,0xaf,0xb0,
+ 0xaf,0xac,0xae,0xaf,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xad,0xad,0xae,0xae,
+ 0xae,0xb0,0xac,0xaa,0xae,0xae,0xac,0xab,0xad,0xb1,0xaf,0xab,0xaa,0xac,0xb2,
+ 0xae,0xa7,0xac,0xac,0xa3,0x70,0x44,0x78,0xa4,0xb6,0xb2,0xa0,0x7b,0x76,0x94,
+ 0xa7,0xb2,0xad,0xaa,0xc8,0x3f,0x3f,0x3d,0x3d,0x3d,0x3e,0x40,0x41,0x41,0x41,
+ 0x41,0x41,0x41,0x42,0x43,0x43,0x44,0x44,0x45,0x45,0x45,0x46,0x46,0x47,0x48,
+ 0x48,0x48,0x48,0x48,0x48,0x49,0x4a,0x4b,0x4b,0x4b,0x4b,0x4b,0x4c,0x4b,0x4c,
+ 0x4f,0x4e,0x48,0x4c,0x51,0x4d,0x52,0x60,0x5a,0x45,0x12,0x17,0x59,0x5e,0x50,
+ 0x50,0x51,0x55,0x56,0x57,0x58,0x59,0x58,0x59,0x59,0x56,0x56,0x58,0x59,0x59,
+ 0x59,0x5a,0x5a,0x5a,0x5b,0x5c,0x5d,0x5d,0x5d,0x5e,0x5e,0x5e,0x5e,0x5f,0x5f,
+ 0x60,0x60,0x61,0x62,0x62,0x62,0x62,0x63,0x64,0x63,0x60,0x65,0x6a,0x64,0x60,
+ 0x63,0x6d,0x74,0x6d,0x71,0x84,0x53,0x19,0x1e,0x45,0x80,0x77,0x5c,0x62,0x6a,
+ 0x70,0x6d,0x69,0x6b,0x6d,0x6d,0x71,0x74,0x6e,0x6d,0x70,0x71,0x70,0x6d,0x6f,
+ 0x74,0x72,0x70,0x75,0x78,0x7a,0x7b,0x7a,0x74,0x71,0x73,0x72,0x77,0x86,0x74,
+ 0x59,0x77,0x88,0x77,0x71,0x72,0x76,0x5e,0x21,0x26,0x4d,0x74,0x86,0x7f,0x81,
+ 0x84,0x81,0x7c,0x75,0x6d,0x65,0x5a,0x6a,0x91,0x77,0x56,0x67,0x72,0x6e,0x51,
+ 0x42,0x6d,0x78,0x65,0x7b,0x8d,0x7e,0x69,0x58,0x66,0x7b,0x8c,0x73,0x43,0x50,
+ 0x70,0x97,0x91,0x73,0x7e,0x8a,0x86,0x8d,0x93,0x7d,0x79,0x99,0x90,0x76,0x84,
+ 0x8a,0x7a,0x7f,0x8b,0x8b,0x8b,0x8e,0x8f,0x90,0x90,0x91,0x90,0x91,0x91,0x91,
+ 0x91,0x91,0x92,0x93,0x93,0x93,0x92,0x92,0x93,0x93,0x94,0x94,0x95,0x95,0x95,
+ 0x96,0x96,0x96,0x96,0x96,0x97,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x99,0x99,
+ 0x99,0x98,0x99,0x9b,0x9b,0x9c,0x9c,0x9c,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,
+ 0x9c,0x9d,0x9d,0x9c,0x9c,0x9c,0x9c,0x9d,0x9e,0x9e,0x9f,0x9f,0xa0,0x9f,0x9c,
+ 0x9f,0xa2,0x9e,0x9d,0xa0,0xa3,0xa4,0x9d,0x9a,0x9a,0xa0,0xa3,0xa0,0xa4,0xac,
+ 0xad,0x8a,0x21,0x00,0x01,0x57,0x9c,0x95,0x94,0x98,0xa3,0xa8,0xa4,0xa3,0xa3,
+ 0xa3,0xa3,0xa3,0xa4,0xa7,0xa7,0xa6,0xa2,0xa4,0xa7,0xa5,0xa4,0xa7,0xa9,0xa9,
+ 0xaa,0xaa,0xa6,0xa9,0xae,0xbd,0x8b,0x13,0x00,0x00,0x00,0x22,0x7c,0xaa,0xba,
+ 0xac,0xa5,0xaa,0xab,0xaa,0xa9,0xa8,0xa9,0xa9,0xaa,0xaa,0xaa,0xaa,0xa9,0xa8,
+ 0xa8,0xa9,0xaa,0xaa,0xa7,0xa0,0xa5,0xb0,0xae,0xa8,0xa3,0xa3,0xa9,0xbf,0x9c,
+ 0x1a,0x00,0x03,0x03,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x02,0x01,0x00,0x02,0x03,0x02,0x00,0x1e,0xa6,0xab,0x43,0x15,0x00,0x03,0x05,
+ 0x05,0x03,0x04,0x0b,0x0e,0x0d,0x02,0x03,0x1a,0x65,0xbd,0xb3,0xa3,0xab,0xae,
+ 0xad,0xac,0xab,0xaa,0xaa,0xaa,0xa9,0xaa,0xae,0xac,0xaa,0xa8,0xa8,0xaa,0xab,
+ 0xab,0xab,0xab,0xab,0xac,0xae,0xaf,0xad,0xa6,0xaa,0xaf,0xaa,0xa7,0xa8,0xb9,
+ 0xc8,0xc4,0xb8,0xa7,0xa8,0xac,0xab,0xaa,0xaa,0xaa,0xaa,0xad,0xad,0xac,0xaa,
+ 0xaa,0xaa,0xac,0xad,0xac,0xab,0xaa,0xac,0xae,0xae,0xaa,0xa7,0xa8,0xae,0xb0,
+ 0xaf,0xaa,0xa8,0xa8,0xb0,0xaa,0x91,0x83,0x7a,0x69,0x7b,0xb5,0xa7,0x85,0x89,
+ 0x92,0x9d,0xa6,0xaa,0xa8,0xa7,0xc8,0x3d,0x3c,0x3b,0x3a,0x3b,0x3d,0x3e,0x3f,
+ 0x3f,0x3e,0x3e,0x3f,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x43,0x44,0x44,0x45,
+ 0x45,0x45,0x46,0x46,0x45,0x45,0x46,0x47,0x48,0x48,0x48,0x48,0x48,0x48,0x49,
+ 0x49,0x49,0x4c,0x4c,0x48,0x4c,0x50,0x4d,0x50,0x5a,0x51,0x3a,0x11,0x1a,0x5a,
+ 0x5e,0x50,0x50,0x51,0x51,0x53,0x55,0x53,0x55,0x57,0x57,0x55,0x53,0x53,0x57,
+ 0x57,0x57,0x57,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,0x5b,0x5c,
+ 0x5c,0x5d,0x5e,0x5e,0x5e,0x5e,0x5f,0x60,0x60,0x61,0x62,0x62,0x5f,0x62,0x65,
+ 0x61,0x60,0x65,0x6c,0x71,0x67,0x6d,0x86,0x55,0x1a,0x1f,0x44,0x7e,0x6e,0x50,
+ 0x5a,0x67,0x6f,0x65,0x5c,0x68,0x6d,0x6b,0x6d,0x70,0x71,0x72,0x72,0x6f,0x67,
+ 0x57,0x5e,0x78,0x78,0x73,0x70,0x72,0x75,0x76,0x75,0x73,0x70,0x6f,0x76,0x7a,
+ 0x78,0x63,0x50,0x81,0x93,0x64,0x48,0x40,0x5a,0x62,0x45,0x57,0x7a,0x81,0x80,
+ 0x7b,0x7b,0x7e,0x81,0x7f,0x76,0x65,0x59,0x64,0x75,0x88,0x6f,0x53,0x61,0x66,
+ 0x5d,0x42,0x3a,0x6d,0x79,0x61,0x70,0x83,0x84,0x6c,0x47,0x61,0x7e,0x80,0x5f,
+ 0x32,0x56,0x82,0x94,0x8b,0x74,0x79,0x82,0x8a,0x91,0x92,0x7b,0x76,0x93,0x8c,
+ 0x77,0x82,0x86,0x75,0x7a,0x86,0x80,0x7f,0x8b,0x8e,0x8e,0x8e,0x8f,0x8f,0x8f,
+ 0x90,0x90,0x90,0x90,0x91,0x91,0x92,0x92,0x91,0x91,0x91,0x92,0x92,0x93,0x94,
+ 0x94,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x96,0x96,0x96,0x96,0x97,0x98,
+ 0x98,0x98,0x98,0x98,0x98,0x99,0x99,0x9a,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+ 0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9d,0x9d,0x9e,0xa0,
+ 0x9f,0x9e,0x9e,0x9e,0x9c,0x9d,0xa0,0xa0,0x9e,0xa0,0xa5,0xaa,0xa1,0x98,0x9d,
+ 0xa5,0xad,0xa7,0x80,0x1e,0x00,0x00,0x57,0x9d,0x97,0x91,0x90,0x9f,0xa8,0xa3,
+ 0xa1,0xa0,0xa1,0xa1,0xa0,0xa1,0xa4,0xa6,0xa6,0xa3,0xa3,0xa7,0xa3,0xa3,0xa7,
+ 0xa8,0xa7,0xa7,0xa7,0xa6,0xa9,0xad,0xbe,0x8d,0x15,0x00,0x01,0x00,0x1d,0x6f,
+ 0xa3,0xbc,0xaa,0xa1,0xa6,0xaa,0xaa,0xa7,0xa5,0xa7,0xa7,0xa8,0xa8,0xa8,0xa7,
+ 0xa7,0xa7,0xa7,0xa7,0xa7,0xa8,0xa7,0xa2,0xa5,0xad,0xac,0xa8,0xa5,0xa3,0xa5,
+ 0xc1,0xa9,0x35,0x05,0x03,0x01,0x03,0x03,0x02,0x01,0x00,0x00,0x01,0x01,0x01,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x00,0x01,0x02,0x05,0x03,0x00,0x08,0x2f,0x98,0x88,0x18,0x00,0x01,
+ 0x05,0x06,0x05,0x07,0x08,0x08,0x0a,0x0c,0x00,0x07,0x33,0x7a,0xc0,0xb3,0xa3,
+ 0xaa,0xac,0xab,0xaa,0xaa,0xac,0xab,0xaa,0xa9,0xaa,0xae,0xad,0xaa,0xa9,0xa9,
+ 0xa9,0xaa,0xab,0xac,0xac,0xac,0xab,0xab,0xac,0xaa,0xa7,0xaa,0xad,0xa7,0xaa,
+ 0xb2,0xa4,0x97,0x9d,0xa7,0xb1,0xad,0xa8,0xaa,0xa9,0xa7,0xa8,0xaa,0xac,0xad,
+ 0xac,0xa9,0xa8,0xaa,0xab,0xaa,0xaa,0xab,0xab,0xac,0xad,0xad,0xaa,0xa6,0xa8,
+ 0xac,0xac,0xaa,0xaa,0xab,0xad,0xac,0xa6,0x99,0x9e,0x9f,0x6f,0x70,0xb1,0x9c,
+ 0x77,0x92,0xa6,0xa6,0xa1,0x9a,0x90,0x94,0xc8,0x3a,0x3a,0x38,0x38,0x39,0x3a,
+ 0x3c,0x3d,0x3d,0x3c,0x3c,0x3d,0x3e,0x3e,0x3e,0x3e,0x3f,0x40,0x40,0x41,0x41,
+ 0x41,0x42,0x42,0x43,0x44,0x44,0x43,0x43,0x44,0x45,0x45,0x47,0x47,0x47,0x47,
+ 0x47,0x47,0x47,0x48,0x49,0x4a,0x4a,0x4c,0x4f,0x4c,0x4e,0x56,0x47,0x2e,0x0f,
+ 0x1d,0x5a,0x5e,0x50,0x51,0x50,0x4d,0x50,0x53,0x50,0x50,0x56,0x54,0x51,0x50,
+ 0x51,0x56,0x56,0x56,0x56,0x56,0x57,0x57,0x57,0x58,0x58,0x59,0x59,0x59,0x59,
+ 0x59,0x5a,0x5a,0x5a,0x5c,0x5c,0x5c,0x5c,0x5d,0x5e,0x5e,0x5e,0x5f,0x60,0x61,
+ 0x5f,0x5e,0x5f,0x63,0x69,0x65,0x5e,0x54,0x64,0x8b,0x5a,0x19,0x1d,0x41,0x7a,
+ 0x67,0x47,0x58,0x65,0x69,0x58,0x4e,0x66,0x6f,0x66,0x60,0x60,0x71,0x78,0x74,
+ 0x6b,0x5c,0x41,0x50,0x79,0x7b,0x74,0x6b,0x69,0x6d,0x6e,0x70,0x73,0x70,0x6d,
+ 0x7d,0x7f,0x63,0x52,0x52,0x80,0x8b,0x54,0x27,0x14,0x50,0x79,0x77,0x88,0x98,
+ 0x86,0x79,0x77,0x75,0x75,0x7e,0x80,0x7a,0x5c,0x48,0x70,0x82,0x76,0x62,0x53,
+ 0x57,0x5a,0x5a,0x49,0x46,0x75,0x79,0x57,0x5b,0x6c,0x7f,0x69,0x39,0x5f,0x82,
+ 0x6b,0x4c,0x34,0x65,0x90,0x85,0x7f,0x7b,0x78,0x7b,0x8a,0x90,0x8d,0x7b,0x74,
+ 0x89,0x86,0x78,0x7f,0x80,0x71,0x76,0x80,0x75,0x74,0x87,0x8d,0x8c,0x8d,0x8d,
+ 0x8d,0x8d,0x8e,0x8e,0x8e,0x8e,0x8f,0x90,0x91,0x91,0x90,0x90,0x91,0x91,0x91,
+ 0x92,0x92,0x92,0x93,0x93,0x94,0x94,0x94,0x93,0x93,0x94,0x94,0x94,0x94,0x94,
+ 0x95,0x96,0x97,0x97,0x97,0x97,0x98,0x98,0x98,0x98,0x98,0x99,0x9a,0x9a,0x9a,
+ 0x9a,0x9a,0x9a,0x9a,0x99,0x98,0x98,0x99,0x9a,0x9a,0x9b,0x9b,0x9b,0x9c,0x9c,
+ 0x9d,0x9e,0xa0,0xa0,0x9c,0x99,0x9c,0x9e,0xa0,0x9a,0x97,0xa3,0xaf,0xb5,0xa0,
+ 0x8e,0x99,0xa7,0xb2,0xa0,0x70,0x1a,0x00,0x00,0x57,0xa2,0xa3,0x9a,0x8f,0x9c,
+ 0xa7,0xa2,0xa0,0x9f,0xa0,0xa0,0x9e,0xa0,0xa3,0xa5,0xa5,0xa3,0xa3,0xa4,0xa2,
+ 0xa2,0xa6,0xa6,0xa4,0xa3,0xa3,0xa5,0xa7,0xac,0xbd,0x8e,0x15,0x00,0x04,0x00,
+ 0x18,0x62,0x9d,0xbd,0xa8,0x9d,0xa3,0xa7,0xa9,0xa4,0xa3,0xa4,0xa5,0xa6,0xa5,
+ 0xa4,0xa4,0xa4,0xa5,0xa5,0xa5,0xa5,0xa6,0xa8,0xaa,0xa8,0xa5,0xa6,0xa7,0xa4,
+ 0xa6,0xaa,0xba,0xa5,0x53,0x1e,0x03,0x00,0x03,0x03,0x02,0x00,0x00,0x00,0x02,
+ 0x02,0x02,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x02,0x01,0x00,0x01,0x04,0x07,0x03,0x00,0x13,0x38,0x73,0x5b,0x07,
+ 0x00,0x00,0x07,0x08,0x05,0x09,0x0a,0x02,0x02,0x07,0x00,0x0d,0x4f,0x8f,0xc0,
+ 0xb6,0xa7,0xa8,0xa9,0xa9,0xaa,0xab,0xad,0xad,0xab,0xa9,0xa9,0xac,0xad,0xad,
+ 0xac,0xaa,0xaa,0xaa,0xaa,0xab,0xac,0xac,0xab,0xaa,0xa7,0xa8,0xad,0xab,0xa9,
+ 0xa7,0xb2,0xbf,0x7d,0x42,0x5a,0x89,0xbe,0xb7,0xa5,0xa9,0xa9,0xa6,0xa8,0xab,
+ 0xac,0xac,0xac,0xa8,0xa7,0xac,0xab,0xa8,0xa8,0xaa,0xae,0xac,0xa9,0xaa,0xab,
+ 0xaa,0xaa,0xaa,0xa4,0xa4,0xad,0xb0,0xae,0xa5,0xa3,0xac,0xb3,0xae,0x7b,0x74,
+ 0xaa,0x94,0x73,0x98,0xae,0xaa,0x9c,0x8a,0x79,0x7f,0xc8,0x36,0x36,0x36,0x36,
+ 0x36,0x39,0x3b,0x3b,0x3b,0x3a,0x3a,0x3b,0x3d,0x3d,0x3c,0x3d,0x3d,0x3d,0x3e,
+ 0x3e,0x3f,0x3f,0x40,0x40,0x41,0x41,0x42,0x41,0x42,0x42,0x43,0x45,0x45,0x45,
+ 0x45,0x45,0x45,0x45,0x45,0x46,0x48,0x48,0x48,0x4a,0x4c,0x47,0x4b,0x58,0x45,
+ 0x26,0x0b,0x1d,0x5a,0x5d,0x4c,0x4c,0x4e,0x4f,0x50,0x50,0x4f,0x50,0x50,0x51,
+ 0x50,0x4f,0x50,0x54,0x55,0x54,0x54,0x54,0x54,0x55,0x56,0x56,0x57,0x57,0x57,
+ 0x57,0x57,0x58,0x58,0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5c,0x5c,0x5d,0x5d,0x5d,
+ 0x5c,0x5e,0x5e,0x5e,0x5a,0x60,0x74,0x53,0x28,0x2c,0x53,0x8f,0x57,0x08,0x17,
+ 0x3c,0x68,0x60,0x50,0x69,0x6c,0x57,0x4a,0x4c,0x6d,0x71,0x57,0x3e,0x38,0x5e,
+ 0x76,0x7c,0x6b,0x56,0x48,0x56,0x73,0x71,0x6a,0x6b,0x6d,0x6f,0x71,0x71,0x70,
+ 0x6c,0x6a,0x7c,0x7c,0x58,0x50,0x5f,0x86,0x8a,0x53,0x41,0x4c,0x79,0x7f,0x4a,
+ 0x59,0x7f,0x7b,0x75,0x77,0x79,0x79,0x6d,0x71,0x85,0x5d,0x37,0x68,0x7b,0x67,
+ 0x66,0x66,0x53,0x5b,0x79,0x62,0x4f,0x74,0x77,0x57,0x49,0x4c,0x67,0x5d,0x3a,
+ 0x57,0x6d,0x4c,0x43,0x52,0x7c,0x95,0x7b,0x73,0x77,0x74,0x78,0x86,0x8d,0x8c,
+ 0x7c,0x76,0x82,0x7f,0x75,0x74,0x73,0x6d,0x78,0x86,0x76,0x74,0x8d,0x90,0x8a,
+ 0x8a,0x8a,0x8b,0x8b,0x8b,0x8c,0x8c,0x8c,0x8d,0x8d,0x8d,0x8e,0x8e,0x8f,0x8f,
+ 0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x92,0x91,0x92,0x93,0x93,0x94,0x93,0x92,
+ 0x93,0x93,0x94,0x95,0x95,0x97,0x96,0x95,0x95,0x96,0x95,0x95,0x97,0x98,0x99,
+ 0x99,0x99,0x99,0x98,0x98,0x99,0x98,0x98,0x98,0x98,0x9a,0x9a,0x9a,0x9a,0x9a,
+ 0x9a,0x9b,0x9c,0x9d,0x9c,0x9a,0x9b,0x9c,0x9c,0x9a,0x98,0x9f,0xa3,0x9b,0x8d,
+ 0x80,0x95,0xa8,0x98,0x9e,0xb2,0xa7,0x7c,0x20,0x00,0x00,0x3d,0x7e,0xa4,0xab,
+ 0x9d,0x9f,0xa0,0x9d,0x9d,0x9f,0xa0,0xa0,0x9f,0xa0,0xa3,0xa5,0xa4,0xa0,0xa0,
+ 0xa2,0xa2,0xa2,0xa3,0xa0,0x9e,0xa2,0xa3,0xa0,0x9f,0xa1,0xb9,0x8d,0x13,0x00,
+ 0x07,0x00,0x14,0x55,0x95,0xbe,0xa6,0x9c,0xa6,0xa5,0xa2,0xa3,0xa4,0xa5,0xa6,
+ 0xa6,0xa4,0xa3,0xa3,0xa3,0xa5,0xa6,0xa6,0xa6,0xa6,0xa6,0xa7,0xa3,0x9e,0xa2,
+ 0xa5,0xa1,0xa3,0xa7,0xae,0x96,0x4e,0x1b,0x00,0x00,0x05,0x03,0x01,0x00,0x00,
+ 0x00,0x02,0x03,0x03,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x01,0x03,0x02,0x02,0x03,0x02,0x00,0x0a,0x19,0x27,
+ 0x1d,0x03,0x02,0x07,0x08,0x07,0x03,0x03,0x03,0x03,0x04,0x06,0x00,0x0f,0x7f,
+ 0xaf,0xb2,0xae,0xa9,0xa7,0xa7,0xa7,0xa8,0xa9,0xa7,0xa9,0xaa,0xa9,0xa7,0xa7,
+ 0xa9,0xac,0xad,0xac,0xa9,0xa7,0xa7,0xa9,0xaa,0xaa,0xa8,0xa7,0xa9,0xaa,0xa8,
+ 0xa7,0xa8,0xac,0xb2,0xb0,0x5a,0x12,0x2c,0x6e,0xc0,0xb7,0x9e,0xa7,0xa9,0xa5,
+ 0xa7,0xaa,0xa9,0xa8,0xa9,0xa6,0xa6,0xad,0xad,0xa9,0xa8,0xa7,0xa7,0xa7,0xa7,
+ 0xab,0xac,0xa6,0xa8,0xad,0xa7,0xa6,0xac,0xa7,0xa0,0xa4,0xa9,0xaa,0xa5,0x96,
+ 0x68,0x68,0xa2,0x99,0x80,0x94,0xa2,0xa4,0x9f,0x97,0x94,0x86,0xc8,0x36,0x35,
+ 0x35,0x35,0x36,0x37,0x37,0x37,0x37,0x39,0x39,0x3a,0x3a,0x3b,0x3a,0x3b,0x3b,
+ 0x3c,0x3c,0x3d,0x3d,0x3d,0x3d,0x3d,0x3e,0x3f,0x40,0x3f,0x40,0x41,0x41,0x42,
+ 0x43,0x44,0x44,0x44,0x43,0x44,0x45,0x45,0x46,0x46,0x45,0x47,0x47,0x42,0x48,
+ 0x5a,0x42,0x1e,0x0a,0x20,0x5a,0x5a,0x47,0x48,0x4c,0x4e,0x4f,0x4e,0x4e,0x4d,
+ 0x4c,0x4e,0x50,0x4e,0x50,0x53,0x53,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x54,
+ 0x54,0x54,0x54,0x55,0x56,0x57,0x57,0x59,0x59,0x5a,0x5a,0x5a,0x5b,0x5b,0x5b,
+ 0x5b,0x5a,0x5a,0x5a,0x5d,0x5e,0x56,0x5e,0x7a,0x46,0x05,0x12,0x45,0x8e,0x53,
+ 0x00,0x14,0x37,0x5d,0x5c,0x56,0x6d,0x67,0x42,0x3d,0x49,0x67,0x66,0x48,0x2b,
+ 0x24,0x4c,0x69,0x78,0x65,0x4f,0x47,0x56,0x70,0x6c,0x65,0x6a,0x6d,0x6e,0x70,
+ 0x70,0x6c,0x69,0x6a,0x79,0x74,0x4e,0x56,0x75,0x83,0x78,0x50,0x5c,0x80,0x91,
+ 0x7a,0x32,0x3f,0x6b,0x6d,0x6d,0x74,0x79,0x78,0x64,0x68,0x86,0x60,0x37,0x5e,
+ 0x6e,0x5e,0x66,0x6d,0x50,0x57,0x80,0x6d,0x57,0x6c,0x6d,0x58,0x3d,0x32,0x54,
+ 0x58,0x44,0x4f,0x53,0x34,0x40,0x6b,0x88,0x8f,0x74,0x6c,0x72,0x73,0x76,0x80,
+ 0x86,0x87,0x7f,0x7b,0x7d,0x7b,0x76,0x6b,0x67,0x6f,0x7a,0x83,0x78,0x78,0x8d,
+ 0x8d,0x87,0x88,0x89,0x89,0x8a,0x8b,0x8a,0x8a,0x8a,0x8a,0x8c,0x8c,0x8d,0x8d,
+ 0x8d,0x8e,0x8e,0x8e,0x8e,0x8f,0x8f,0x8e,0x8f,0x90,0x90,0x91,0x92,0x92,0x92,
+ 0x92,0x92,0x91,0x91,0x91,0x94,0x94,0x8f,0x8f,0x91,0x95,0x96,0x95,0x95,0x94,
+ 0x95,0x97,0x98,0x98,0x95,0x97,0x98,0x98,0x97,0x97,0x97,0x97,0x98,0x99,0x99,
+ 0x98,0x98,0x98,0x99,0x9a,0x9b,0x99,0x95,0x98,0x9c,0x9a,0x96,0x93,0xa5,0xad,
+ 0x87,0x5f,0x42,0x82,0xbd,0xa0,0x97,0xa3,0xa3,0x82,0x24,0x00,0x03,0x27,0x5d,
+ 0xa1,0xb4,0xa3,0x9f,0x9c,0x9b,0x9b,0x9c,0xa0,0xa1,0xa0,0xa0,0xa0,0xa3,0xa3,
+ 0x9f,0x9f,0xa0,0xa1,0xa1,0xa0,0x9c,0x9b,0xa1,0xa3,0x9b,0x98,0x9c,0xb5,0x8a,
+ 0x12,0x00,0x08,0x00,0x10,0x45,0x8c,0xc0,0xa6,0x9b,0xa7,0xa3,0x9e,0xa1,0xa4,
+ 0xa6,0xa6,0xa5,0xa3,0xa3,0xa2,0xa3,0xa4,0xa5,0xa6,0xa5,0xa5,0xa4,0xa4,0xa0,
+ 0x9c,0xa0,0xa2,0x9f,0xa0,0xa3,0xa6,0x95,0x64,0x36,0x0f,0x06,0x03,0x03,0x02,
+ 0x00,0x00,0x00,0x02,0x03,0x02,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x04,0x03,0x00,0x01,0x02,0x02,0x03,
+ 0x02,0x00,0x00,0x05,0x07,0x08,0x07,0x05,0x02,0x00,0x00,0x05,0x05,0x03,0x00,
+ 0x2b,0xa3,0xc1,0xa5,0xa5,0xa7,0xa7,0xa5,0xa4,0xa6,0xa6,0xa2,0xa3,0xa5,0xa4,
+ 0xa3,0xa2,0xa5,0xa9,0xaa,0xaa,0xa7,0xa6,0xa4,0xa5,0xa7,0xa7,0xa6,0xa5,0xaa,
+ 0xa9,0xa3,0xa3,0xa7,0xae,0xb2,0xa7,0x4a,0x00,0x0b,0x53,0xb9,0xb6,0x9f,0xa4,
+ 0xa6,0xa3,0xa6,0xa8,0xa8,0xa7,0xa3,0x9b,0x99,0xa5,0xaa,0xaa,0xa9,0xa8,0xa6,
+ 0xa5,0xa7,0xaa,0xa9,0xa3,0xa5,0xab,0xa8,0xa7,0xa9,0x9f,0x92,0x9a,0xa2,0xa4,
+ 0x94,0x7a,0x5e,0x60,0x83,0x7f,0x74,0x8b,0x9a,0x9c,0x9a,0x99,0xa3,0x89,0xc8,
+ 0x38,0x38,0x35,0x35,0x37,0x34,0x30,0x2f,0x32,0x38,0x39,0x37,0x35,0x36,0x3a,
+ 0x3a,0x39,0x3a,0x3a,0x3b,0x3b,0x3b,0x3a,0x3a,0x3a,0x3c,0x3d,0x3a,0x3d,0x41,
+ 0x40,0x3f,0x40,0x41,0x42,0x41,0x41,0x41,0x42,0x43,0x44,0x45,0x45,0x43,0x41,
+ 0x3f,0x47,0x59,0x3b,0x13,0x0e,0x27,0x5a,0x56,0x42,0x46,0x49,0x49,0x4d,0x4f,
+ 0x4c,0x49,0x47,0x4c,0x52,0x4f,0x4f,0x52,0x50,0x4e,0x52,0x53,0x52,0x52,0x53,
+ 0x52,0x52,0x53,0x53,0x53,0x53,0x53,0x54,0x55,0x57,0x58,0x57,0x57,0x58,0x5a,
+ 0x5a,0x5a,0x59,0x5a,0x5a,0x58,0x5a,0x5d,0x55,0x5d,0x79,0x47,0x07,0x10,0x3f,
+ 0x86,0x53,0x07,0x14,0x36,0x5e,0x5d,0x52,0x5d,0x50,0x2c,0x33,0x45,0x4c,0x49,
+ 0x3d,0x33,0x32,0x41,0x53,0x61,0x57,0x45,0x33,0x48,0x73,0x71,0x68,0x67,0x67,
+ 0x68,0x69,0x69,0x68,0x6a,0x6e,0x74,0x69,0x44,0x60,0x92,0x71,0x50,0x45,0x66,
+ 0x91,0x82,0x69,0x51,0x5b,0x6f,0x61,0x5e,0x70,0x73,0x6d,0x66,0x6a,0x78,0x64,
+ 0x4c,0x57,0x5e,0x5a,0x5c,0x5a,0x48,0x48,0x5e,0x60,0x5d,0x5b,0x5b,0x5a,0x38,
+ 0x27,0x4f,0x5f,0x57,0x48,0x36,0x27,0x41,0x75,0x82,0x7e,0x6e,0x6a,0x70,0x75,
+ 0x78,0x78,0x7b,0x7f,0x83,0x82,0x78,0x7a,0x7e,0x67,0x61,0x77,0x79,0x74,0x7a,
+ 0x7f,0x82,0x83,0x85,0x89,0x8a,0x87,0x8a,0x8d,0x8c,0x8a,0x88,0x8a,0x8d,0x8c,
+ 0x8b,0x8b,0x8d,0x8f,0x8c,0x8b,0x8c,0x8d,0x8d,0x8b,0x8b,0x8d,0x8e,0x8f,0x91,
+ 0x90,0x8d,0x91,0x93,0x91,0x8e,0x8d,0x95,0x94,0x7e,0x7f,0x8e,0x95,0x98,0x98,
+ 0x95,0x90,0x8f,0x91,0x98,0x95,0x8e,0x94,0x98,0x95,0x95,0x97,0x95,0x95,0x95,
+ 0x97,0x98,0x97,0x96,0x97,0x98,0x98,0x98,0x96,0x95,0x95,0x97,0x97,0x95,0x94,
+ 0xaa,0xad,0x6b,0x2f,0x0c,0x65,0xbe,0xae,0x96,0x82,0x8a,0x79,0x22,0x00,0x03,
+ 0x1d,0x4c,0x9b,0xaf,0x99,0x99,0x9c,0x9c,0x9a,0x98,0x9c,0x9f,0x9e,0x9b,0x99,
+ 0xa0,0xa3,0x9e,0x9d,0xa0,0xa0,0xa0,0x9e,0x9d,0x9e,0xa0,0xa0,0x98,0x99,0x9f,
+ 0xb3,0x86,0x12,0x00,0x07,0x00,0x0c,0x32,0x81,0xc1,0xa7,0x9a,0xa3,0xa3,0xa0,
+ 0xa0,0xa2,0xa4,0xa3,0xa1,0xa0,0xa0,0xa1,0xa1,0xa2,0xa3,0xa3,0xa3,0xa3,0xa4,
+ 0xa4,0xa3,0xa1,0x9d,0x9c,0x9d,0x9d,0x9d,0xa6,0xaa,0xa5,0x7b,0x3f,0x14,0x00,
+ 0x03,0x04,0x03,0x02,0x01,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x02,0x01,0x00,0x03,0x03,
+ 0x00,0x02,0x04,0x02,0x04,0x08,0x05,0x03,0x05,0x04,0x03,0x03,0x03,0x03,0x00,
+ 0x00,0x2b,0x69,0xb2,0xbc,0x9f,0x9c,0x9f,0xa4,0xa5,0xa2,0xa3,0xa1,0x9d,0x9a,
+ 0x98,0x98,0x9b,0xa0,0xa2,0xa3,0xa3,0xa4,0xa7,0xa6,0xa3,0xa2,0xa2,0xa3,0xa3,
+ 0xa4,0xa7,0xa5,0xa0,0xa0,0xa3,0xab,0xb3,0xaf,0x52,0x00,0x00,0x3a,0xa8,0xb7,
+ 0xa9,0xa2,0xa0,0xa0,0xa2,0xa5,0xab,0xa7,0x99,0x83,0x7b,0x93,0xa1,0xa7,0xad,
+ 0xae,0xaa,0xa8,0xa7,0xa4,0xa2,0xa0,0xa3,0xa5,0xa3,0xa2,0xa6,0x9c,0x8c,0x82,
+ 0x8a,0xa2,0x89,0x62,0x69,0x62,0x46,0x3a,0x45,0x7e,0x9c,0x92,0x8b,0x87,0x93,
+ 0x7b,0xc8,0x37,0x36,0x32,0x32,0x37,0x36,0x33,0x30,0x32,0x36,0x36,0x35,0x33,
+ 0x34,0x35,0x36,0x36,0x3a,0x3a,0x38,0x37,0x38,0x3a,0x39,0x37,0x38,0x39,0x3a,
+ 0x3c,0x3e,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3f,0x41,0x41,0x3e,0x40,0x41,0x41,
+ 0x40,0x3e,0x41,0x4a,0x58,0x36,0x0d,0x0f,0x2b,0x59,0x53,0x41,0x48,0x4b,0x45,
+ 0x48,0x4c,0x4b,0x48,0x45,0x49,0x4e,0x4c,0x4c,0x50,0x4e,0x4c,0x4e,0x4f,0x50,
+ 0x50,0x50,0x4f,0x50,0x51,0x51,0x50,0x50,0x52,0x53,0x52,0x50,0x51,0x53,0x55,
+ 0x56,0x57,0x57,0x57,0x57,0x56,0x57,0x5a,0x5a,0x59,0x53,0x5e,0x78,0x48,0x09,
+ 0x09,0x33,0x7d,0x50,0x09,0x12,0x32,0x5d,0x56,0x41,0x3d,0x31,0x1f,0x33,0x49,
+ 0x3d,0x37,0x39,0x36,0x35,0x33,0x3d,0x4d,0x47,0x3d,0x3a,0x4c,0x6b,0x6c,0x66,
+ 0x65,0x65,0x69,0x67,0x66,0x66,0x70,0x78,0x63,0x51,0x50,0x70,0x91,0x57,0x35,
+ 0x4d,0x65,0x76,0x6b,0x60,0x5f,0x6f,0x7c,0x59,0x50,0x71,0x71,0x65,0x67,0x65,
+ 0x5d,0x55,0x53,0x5e,0x63,0x5e,0x60,0x5d,0x40,0x3f,0x5a,0x63,0x61,0x52,0x53,
+ 0x61,0x54,0x46,0x47,0x50,0x5a,0x4b,0x3c,0x3d,0x50,0x6d,0x75,0x77,0x74,0x70,
+ 0x6d,0x76,0x7b,0x78,0x76,0x78,0x84,0x86,0x73,0x74,0x7c,0x69,0x62,0x73,0x6b,
+ 0x60,0x7b,0x8a,0x82,0x81,0x82,0x87,0x88,0x84,0x86,0x89,0x89,0x87,0x85,0x87,
+ 0x8a,0x8a,0x88,0x87,0x89,0x8a,0x8a,0x8a,0x8b,0x8a,0x89,0x88,0x8a,0x8c,0x8c,
+ 0x8b,0x8c,0x8c,0x8d,0x8e,0x8f,0x8d,0x8b,0x8a,0x96,0x96,0x7a,0x7b,0x8d,0x8d,
+ 0x8d,0x95,0x95,0x90,0x8e,0x90,0x95,0x94,0x91,0x92,0x93,0x93,0x92,0x91,0x91,
+ 0x91,0x8f,0x90,0x91,0x92,0x93,0x95,0x94,0x92,0x95,0x95,0x95,0x95,0x96,0x93,
+ 0x92,0x94,0xa9,0xab,0x72,0x32,0x00,0x3c,0x8b,0xa4,0x9c,0x80,0x90,0x86,0x26,
+ 0x00,0x03,0x21,0x54,0x9e,0xae,0x93,0x96,0x9b,0x98,0x98,0x97,0x99,0x9a,0x9a,
+ 0x9a,0x9b,0x9d,0x9d,0x9a,0x9b,0x9c,0x9d,0x9c,0x99,0x9a,0x9d,0xa0,0x9f,0x9b,
+ 0x9b,0xa0,0xb3,0x86,0x13,0x00,0x04,0x00,0x0a,0x29,0x7c,0xc0,0xa5,0x96,0x9f,
+ 0xa0,0x9e,0x9f,0xa0,0x9f,0xa0,0xa1,0x9f,0x9f,0xa1,0xa0,0xa0,0xa0,0xa0,0xa2,
+ 0xa1,0xa1,0xa1,0xa0,0xa0,0x9c,0x9b,0x9f,0x9e,0x9c,0x9f,0xa0,0x9c,0x7f,0x50,
+ 0x1b,0x00,0x03,0x04,0x03,0x01,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x03,0x04,0x02,0x03,0x03,0x04,0x05,0x05,0x03,0x02,0x04,0x05,0x04,0x04,0x04,
+ 0x03,0x00,0x09,0x5c,0xa1,0xae,0xaa,0x9e,0x9c,0x9e,0xa3,0xa4,0xa2,0xa2,0xa1,
+ 0x9e,0x9b,0x99,0x98,0x9c,0xa3,0xa0,0x98,0x96,0x99,0xa0,0xa3,0xa3,0xa0,0xa0,
+ 0xa4,0xa4,0xa3,0xa5,0xa5,0xa3,0xa3,0xa4,0xa4,0xae,0xb7,0x62,0x0a,0x00,0x30,
+ 0x9d,0xb3,0xab,0xa1,0x9c,0x9c,0x9a,0x9a,0xa1,0xa3,0x9d,0x7a,0x6a,0x8d,0x93,
+ 0x86,0x7f,0x7f,0x82,0x95,0xac,0xaa,0xa3,0x9f,0x9f,0xa0,0x9d,0xa0,0xa8,0x94,
+ 0x74,0x66,0x78,0xac,0x8a,0x50,0x62,0x69,0x53,0x46,0x49,0x79,0x8b,0x77,0x6b,
+ 0x64,0x65,0x59,0xc8,0x2e,0x2d,0x29,0x2b,0x34,0x39,0x3a,0x36,0x34,0x33,0x32,
+ 0x32,0x35,0x34,0x31,0x32,0x34,0x3a,0x39,0x35,0x34,0x35,0x39,0x38,0x35,0x35,
+ 0x36,0x3b,0x3c,0x3b,0x3b,0x3c,0x3c,0x3a,0x37,0x39,0x3d,0x41,0x3f,0x3b,0x3d,
+ 0x3d,0x3e,0x3e,0x3f,0x43,0x4b,0x57,0x32,0x0a,0x12,0x2f,0x56,0x50,0x41,0x4c,
+ 0x4d,0x43,0x44,0x47,0x49,0x48,0x45,0x46,0x48,0x48,0x4a,0x4c,0x4c,0x4c,0x48,
+ 0x4a,0x4e,0x4d,0x4c,0x4c,0x4d,0x50,0x4e,0x4d,0x4f,0x51,0x53,0x4f,0x4b,0x49,
+ 0x4e,0x54,0x53,0x51,0x51,0x53,0x55,0x51,0x53,0x5e,0x5a,0x53,0x52,0x5e,0x74,
+ 0x48,0x0d,0x03,0x27,0x70,0x4a,0x09,0x0e,0x2c,0x57,0x4a,0x2c,0x1f,0x19,0x1b,
+ 0x37,0x4c,0x37,0x2f,0x36,0x36,0x31,0x27,0x2c,0x3d,0x3a,0x39,0x48,0x54,0x5e,
+ 0x62,0x64,0x63,0x65,0x6a,0x67,0x65,0x67,0x74,0x7d,0x50,0x3d,0x69,0x7b,0x75,
+ 0x41,0x2d,0x57,0x58,0x48,0x53,0x5f,0x65,0x7a,0x85,0x53,0x48,0x73,0x71,0x62,
+ 0x65,0x5b,0x44,0x42,0x50,0x68,0x6f,0x62,0x67,0x64,0x3a,0x3a,0x64,0x69,0x61,
+ 0x4e,0x51,0x66,0x73,0x6d,0x41,0x3b,0x55,0x50,0x4c,0x5e,0x62,0x5d,0x68,0x74,
+ 0x7b,0x74,0x69,0x74,0x7d,0x79,0x74,0x73,0x82,0x85,0x6e,0x6e,0x78,0x6d,0x65,
+ 0x67,0x5b,0x53,0x7b,0x92,0x87,0x82,0x80,0x83,0x84,0x81,0x81,0x82,0x83,0x83,
+ 0x82,0x83,0x85,0x86,0x85,0x83,0x83,0x85,0x86,0x87,0x8a,0x87,0x85,0x87,0x89,
+ 0x8a,0x89,0x87,0x86,0x89,0x8d,0x8d,0x8a,0x8a,0x89,0x89,0x95,0x96,0x7e,0x7d,
+ 0x8a,0x82,0x7f,0x8e,0x93,0x91,0x91,0x91,0x8f,0x91,0x94,0x90,0x8e,0x91,0x8f,
+ 0x8b,0x8d,0x8c,0x88,0x87,0x88,0x8c,0x90,0x93,0x90,0x8c,0x91,0x94,0x94,0x95,
+ 0x95,0x8f,0x8d,0x92,0xa3,0xa8,0x8b,0x50,0x08,0x12,0x45,0x90,0xa6,0x8e,0xa4,
+ 0x98,0x2e,0x00,0x03,0x2a,0x62,0xa4,0xad,0x8e,0x94,0x9a,0x95,0x95,0x98,0x97,
+ 0x96,0x98,0x9b,0x9d,0x9a,0x98,0x96,0x97,0x98,0x9a,0x98,0x94,0x96,0x9b,0x9c,
+ 0x9d,0x9d,0x9c,0x9e,0xb2,0x86,0x14,0x00,0x03,0x00,0x09,0x26,0x79,0xbf,0xa2,
+ 0x92,0x9b,0x9b,0x9a,0x9d,0x9c,0x99,0x9d,0xa0,0x9d,0x9d,0xa0,0x9f,0x9c,0x9b,
+ 0x9c,0xa0,0x9e,0x9d,0x9c,0x9c,0x9b,0x9a,0x9b,0x9f,0xa0,0x9c,0x98,0x8c,0x77,
+ 0x68,0x55,0x20,0x00,0x03,0x03,0x02,0x00,0x00,0x02,0x03,0x03,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x00,
+ 0x00,0x00,0x02,0x03,0x04,0x03,0x02,0x04,0x04,0x01,0x02,0x03,0x05,0x06,0x07,
+ 0x06,0x04,0x03,0x0c,0x28,0x8a,0xc6,0xa0,0x97,0xa0,0x9f,0xa0,0xa3,0xa3,0xa1,
+ 0xa2,0xa2,0xa0,0x9e,0x9e,0x9e,0xa0,0xa4,0x9c,0x8e,0x8b,0x8e,0x98,0x9e,0xa0,
+ 0x9c,0x9d,0xa5,0xa3,0xa1,0xa3,0xa5,0xa5,0xa6,0xa5,0x9c,0xa7,0xbd,0x76,0x24,
+ 0x01,0x2e,0x94,0xae,0xab,0xa2,0x9c,0x9c,0x95,0x91,0x91,0x9b,0xa4,0x76,0x5c,
+ 0x83,0x7d,0x58,0x45,0x42,0x51,0x78,0xa3,0xa6,0xa0,0xa0,0x9e,0x9c,0x9b,0xa0,
+ 0xaa,0x86,0x56,0x4d,0x6d,0xb5,0x8e,0x48,0x53,0x6b,0x82,0x78,0x66,0x78,0x78,
+ 0x5f,0x54,0x4c,0x40,0x41,0xc8,0x12,0x12,0x11,0x18,0x28,0x33,0x3a,0x3a,0x36,
+ 0x33,0x32,0x32,0x37,0x37,0x32,0x33,0x34,0x35,0x36,0x37,0x37,0x37,0x37,0x38,
+ 0x3a,0x3a,0x3c,0x3d,0x3c,0x3a,0x39,0x3a,0x3f,0x41,0x40,0x3d,0x3d,0x40,0x41,
+ 0x42,0x3f,0x3f,0x42,0x45,0x45,0x3a,0x3d,0x51,0x2f,0x0a,0x20,0x3b,0x50,0x4a,
+ 0x3d,0x41,0x44,0x44,0x41,0x41,0x46,0x48,0x45,0x45,0x46,0x48,0x48,0x46,0x48,
+ 0x4a,0x48,0x49,0x4b,0x4b,0x4b,0x4c,0x4e,0x4f,0x4c,0x4c,0x4e,0x50,0x50,0x50,
+ 0x4e,0x4c,0x50,0x54,0x50,0x4d,0x50,0x50,0x50,0x51,0x55,0x5a,0x55,0x4d,0x4e,
+ 0x57,0x6a,0x46,0x13,0x03,0x1d,0x5c,0x3f,0x0a,0x06,0x1a,0x41,0x3a,0x28,0x2b,
+ 0x2b,0x27,0x32,0x3d,0x36,0x33,0x33,0x2e,0x28,0x24,0x2b,0x39,0x3b,0x3b,0x41,
+ 0x49,0x54,0x5f,0x66,0x65,0x63,0x61,0x60,0x63,0x6d,0x6b,0x61,0x48,0x4a,0x7d,
+ 0x6c,0x3d,0x49,0x4f,0x3c,0x2f,0x2e,0x56,0x72,0x74,0x74,0x6c,0x4f,0x4e,0x72,
+ 0x74,0x66,0x5d,0x53,0x4c,0x47,0x49,0x61,0x67,0x5b,0x5d,0x5a,0x3d,0x3d,0x5d,
+ 0x5c,0x54,0x55,0x5a,0x63,0x5a,0x4b,0x3c,0x40,0x52,0x45,0x41,0x5b,0x61,0x58,
+ 0x63,0x6c,0x66,0x65,0x66,0x6e,0x73,0x70,0x6d,0x6b,0x7c,0x82,0x6d,0x6f,0x7b,
+ 0x71,0x64,0x58,0x5f,0x70,0x80,0x86,0x80,0x7e,0x7e,0x7f,0x7f,0x7f,0x7f,0x7f,
+ 0x81,0x82,0x82,0x81,0x80,0x84,0x85,0x82,0x82,0x82,0x81,0x83,0x89,0x87,0x85,
+ 0x88,0x88,0x85,0x86,0x87,0x8a,0x8a,0x8a,0x8a,0x8b,0x8d,0x8c,0x8a,0x8d,0x8d,
+ 0x85,0x7f,0x7d,0x78,0x7b,0x8a,0x8b,0x86,0x91,0x95,0x8d,0x88,0x86,0x8e,0x92,
+ 0x8d,0x8d,0x8f,0x8a,0x85,0x82,0x80,0x81,0x86,0x8d,0x91,0x91,0x8d,0x8e,0x8f,
+ 0x8f,0x91,0x93,0x8f,0x8c,0x8b,0x9b,0xa6,0x98,0x5f,0x09,0x00,0x22,0x8d,0xb3,
+ 0x9c,0xad,0x9f,0x3b,0x06,0x03,0x20,0x56,0xa3,0xaf,0x8d,0x8e,0x93,0x91,0x95,
+ 0x9d,0xa2,0xa3,0x9e,0x97,0x91,0x96,0x98,0x95,0x94,0x94,0x97,0x98,0x98,0x9a,
+ 0x9b,0x97,0x95,0x98,0x9a,0x9c,0xae,0x82,0x13,0x00,0x03,0x00,0x07,0x20,0x74,
+ 0xbb,0xa1,0x92,0x98,0x98,0x98,0x99,0x99,0x98,0x99,0x9b,0x9c,0x9c,0x9c,0x99,
+ 0x98,0x97,0x98,0x9a,0x9b,0x9b,0x99,0x98,0x97,0x95,0x95,0x98,0x9b,0x9e,0x9c,
+ 0x91,0x7a,0x74,0x6b,0x28,0x00,0x04,0x03,0x00,0x00,0x01,0x01,0x01,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x03,0x06,0x07,0x05,0x01,0x00,0x03,0x01,0x01,0x05,0x07,0x06,0x05,0x05,0x04,
+ 0x06,0x08,0x01,0x00,0x00,0x32,0x7f,0xa7,0xb2,0x9c,0x97,0x9d,0x9c,0x9c,0x9c,
+ 0x9c,0x9c,0x9c,0x9c,0x99,0x99,0x9b,0x9b,0x9a,0x99,0x96,0x92,0x8e,0x8d,0x93,
+ 0x96,0x98,0x96,0x97,0x9b,0x98,0x96,0x9e,0xa0,0x9a,0x9e,0xa2,0x9c,0xa7,0xbb,
+ 0x80,0x36,0x04,0x25,0x88,0xad,0xb5,0xa7,0xa1,0xa5,0xaa,0xa3,0x88,0x90,0xa7,
+ 0x6a,0x3d,0x55,0x56,0x48,0x3f,0x45,0x62,0x65,0x5b,0x65,0x7f,0xab,0xb1,0xa2,
+ 0xa7,0xa7,0x98,0x6a,0x3c,0x43,0x66,0xa0,0x8d,0x5b,0x42,0x53,0x90,0x86,0x69,
+ 0x70,0x79,0x81,0x86,0x86,0x83,0x82,0xc8,0x02,0x02,0x01,0x08,0x17,0x23,0x2b,
+ 0x2b,0x2b,0x29,0x2a,0x2d,0x36,0x38,0x36,0x36,0x36,0x35,0x35,0x36,0x35,0x34,
+ 0x34,0x35,0x36,0x37,0x3a,0x3d,0x3b,0x37,0x35,0x36,0x3e,0x42,0x42,0x3b,0x36,
+ 0x36,0x3a,0x40,0x3d,0x3e,0x45,0x47,0x42,0x2a,0x28,0x3e,0x23,0x07,0x2e,0x43,
+ 0x3d,0x39,0x38,0x41,0x45,0x44,0x41,0x41,0x44,0x46,0x46,0x45,0x45,0x45,0x45,
+ 0x45,0x47,0x4a,0x4b,0x48,0x44,0x46,0x49,0x4a,0x49,0x48,0x48,0x49,0x4b,0x4c,
+ 0x4b,0x4b,0x4c,0x4d,0x4e,0x4f,0x4c,0x4b,0x4d,0x4d,0x4c,0x50,0x53,0x57,0x52,
+ 0x4c,0x49,0x52,0x63,0x44,0x17,0x04,0x19,0x51,0x3a,0x0c,0x00,0x12,0x3d,0x3a,
+ 0x2b,0x2d,0x30,0x30,0x2b,0x2a,0x35,0x36,0x2b,0x27,0x25,0x28,0x2c,0x32,0x41,
+ 0x49,0x3b,0x3c,0x49,0x59,0x63,0x63,0x60,0x5b,0x5d,0x62,0x6d,0x5c,0x40,0x4c,
+ 0x61,0x78,0x53,0x20,0x50,0x62,0x30,0x1c,0x21,0x4a,0x6a,0x74,0x67,0x51,0x4a,
+ 0x52,0x67,0x6c,0x66,0x58,0x51,0x53,0x4c,0x47,0x53,0x54,0x47,0x48,0x4b,0x40,
+ 0x42,0x51,0x52,0x4e,0x4c,0x4d,0x50,0x42,0x3a,0x4d,0x53,0x49,0x35,0x32,0x5c,
+ 0x67,0x5b,0x5e,0x60,0x57,0x5d,0x6a,0x6d,0x6b,0x64,0x62,0x66,0x76,0x7b,0x6e,
+ 0x70,0x76,0x6d,0x60,0x55,0x69,0x86,0x7e,0x77,0x7b,0x7b,0x7a,0x7d,0x7e,0x7b,
+ 0x7c,0x7f,0x7e,0x7f,0x82,0x7f,0x7b,0x7f,0x82,0x82,0x82,0x80,0x7e,0x80,0x86,
+ 0x84,0x82,0x86,0x86,0x81,0x83,0x86,0x88,0x86,0x83,0x86,0x88,0x88,0x86,0x83,
+ 0x85,0x86,0x87,0x80,0x74,0x71,0x73,0x79,0x7e,0x82,0x89,0x8d,0x8e,0x85,0x7b,
+ 0x86,0x8d,0x8a,0x8d,0x91,0x84,0x7b,0x77,0x7a,0x7f,0x7f,0x86,0x92,0x8f,0x87,
+ 0x89,0x8c,0x8f,0x8f,0x8d,0x8e,0x8c,0x86,0x92,0x9e,0xa0,0x6d,0x0e,0x00,0x12,
+ 0x82,0xac,0x94,0x9a,0x8b,0x42,0x13,0x03,0x15,0x45,0x9c,0xaa,0x86,0x86,0x8d,
+ 0x92,0x95,0x91,0x86,0x86,0x99,0x98,0x8d,0x91,0x95,0x94,0x92,0x91,0x93,0x97,
+ 0x99,0x98,0x96,0x91,0x90,0x93,0x96,0x9a,0xa9,0x7d,0x12,0x00,0x03,0x00,0x05,
+ 0x19,0x6b,0xb5,0xa0,0x93,0x96,0x96,0x95,0x95,0x95,0x97,0x96,0x96,0x98,0x98,
+ 0x96,0x95,0x94,0x95,0x95,0x95,0x97,0x98,0x98,0x96,0x93,0x93,0x93,0x94,0x96,
+ 0x98,0x9b,0x98,0x8b,0x8b,0x85,0x3c,0x08,0x07,0x03,0x00,0x02,0x03,0x02,0x01,
+ 0x01,0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x03,0x07,0x08,0x07,0x02,0x00,0x02,0x01,0x01,0x03,0x05,0x07,0x07,
+ 0x06,0x04,0x04,0x04,0x06,0x11,0x2b,0x6a,0xb5,0xae,0x9b,0x98,0x98,0x9a,0x99,
+ 0x98,0x97,0x96,0x96,0x97,0x96,0x93,0x94,0x97,0x96,0x94,0x8f,0x91,0x95,0x91,
+ 0x8d,0x8e,0x8e,0x8d,0x8d,0x8b,0x8b,0x89,0x87,0x8d,0x8e,0x89,0x8b,0x8f,0x8a,
+ 0x97,0xac,0x7f,0x41,0x07,0x1c,0x71,0xa3,0xb7,0x9d,0x97,0xa3,0xa1,0x91,0x67,
+ 0x66,0x7a,0x49,0x20,0x28,0x2e,0x31,0x32,0x3c,0x57,0x45,0x20,0x32,0x5d,0x9c,
+ 0x9d,0x83,0xa0,0xa8,0x87,0x62,0x45,0x4f,0x69,0x8d,0x82,0x62,0x3a,0x48,0x91,
+ 0x93,0x7c,0x7f,0x8c,0x9d,0xa0,0x9c,0x96,0x8d,0xc8,0x06,0x05,0x01,0x02,0x06,
+ 0x09,0x0a,0x09,0x0b,0x11,0x19,0x22,0x2c,0x34,0x39,0x39,0x39,0x3c,0x36,0x2c,
+ 0x28,0x28,0x2f,0x2e,0x29,0x27,0x2b,0x3a,0x3a,0x33,0x2e,0x2f,0x37,0x3b,0x3a,
+ 0x2e,0x24,0x20,0x25,0x2f,0x34,0x3a,0x42,0x41,0x35,0x15,0x0a,0x19,0x0b,0x03,
+ 0x39,0x44,0x1b,0x1d,0x32,0x50,0x54,0x41,0x42,0x48,0x43,0x44,0x48,0x47,0x45,
+ 0x41,0x44,0x4b,0x4c,0x4c,0x50,0x47,0x3a,0x40,0x47,0x43,0x3d,0x39,0x41,0x48,
+ 0x45,0x44,0x42,0x3f,0x40,0x49,0x48,0x41,0x48,0x4c,0x49,0x4b,0x4d,0x49,0x4b,
+ 0x53,0x53,0x4d,0x45,0x4c,0x63,0x45,0x16,0x03,0x19,0x53,0x3b,0x0c,0x00,0x1b,
+ 0x53,0x4f,0x33,0x1b,0x1b,0x31,0x25,0x1b,0x30,0x32,0x20,0x23,0x2b,0x32,0x2f,
+ 0x28,0x4c,0x62,0x3c,0x30,0x3d,0x4e,0x5a,0x5c,0x5d,0x5e,0x60,0x63,0x66,0x48,
+ 0x23,0x5b,0x7b,0x53,0x36,0x2c,0x4a,0x57,0x40,0x2e,0x24,0x28,0x3d,0x62,0x57,
+ 0x3c,0x45,0x4d,0x50,0x58,0x61,0x5a,0x54,0x51,0x4f,0x4b,0x45,0x37,0x27,0x2a,
+ 0x36,0x41,0x45,0x42,0x51,0x54,0x2e,0x20,0x2d,0x3a,0x50,0x7a,0x70,0x3c,0x1e,
+ 0x25,0x69,0x7b,0x67,0x5a,0x52,0x55,0x63,0x74,0x73,0x67,0x54,0x57,0x65,0x70,
+ 0x74,0x71,0x6c,0x65,0x5e,0x5b,0x63,0x77,0x88,0x72,0x69,0x79,0x79,0x74,0x7e,
+ 0x80,0x76,0x78,0x7e,0x7a,0x7a,0x7f,0x7d,0x78,0x77,0x7b,0x82,0x81,0x7c,0x7d,
+ 0x7e,0x7e,0x7d,0x7d,0x7f,0x80,0x7f,0x82,0x84,0x81,0x7d,0x79,0x7e,0x7f,0x76,
+ 0x73,0x74,0x7d,0x84,0x83,0x7e,0x75,0x6f,0x65,0x57,0x69,0x87,0x79,0x75,0x90,
+ 0x8a,0x77,0x74,0x79,0x87,0x8d,0x8c,0x7b,0x6e,0x67,0x73,0x80,0x74,0x79,0x95,
+ 0x8a,0x75,0x7f,0x8c,0x95,0x8f,0x87,0x8b,0x8b,0x86,0x88,0x8e,0xa3,0x7a,0x1a,
+ 0x00,0x10,0x6d,0x8a,0x6d,0x65,0x5a,0x3f,0x20,0x06,0x0a,0x33,0x8d,0x9d,0x7a,
+ 0x7c,0x89,0x9c,0x92,0x70,0x36,0x30,0x84,0x9f,0x94,0x8d,0x8b,0x91,0x91,0x8e,
+ 0x90,0x92,0x93,0x8f,0x8b,0x8d,0x8f,0x8e,0x92,0x97,0xa5,0x7a,0x11,0x00,0x06,
+ 0x01,0x03,0x12,0x60,0xaa,0x9e,0x93,0x94,0x91,0x90,0x8f,0x90,0x92,0x93,0x93,
+ 0x93,0x92,0x91,0x91,0x92,0x95,0x95,0x93,0x91,0x92,0x96,0x95,0x90,0x92,0x95,
+ 0x97,0x92,0x8b,0x8e,0x97,0xa5,0xaa,0x9e,0x5e,0x27,0x0b,0x01,0x02,0x04,0x06,
+ 0x03,0x02,0x02,0x05,0x05,0x02,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x05,0x05,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x02,0x00,0x00,
+ 0x00,0x04,0x07,0x05,0x00,0x00,0x18,0x48,0x90,0xaf,0xad,0x9b,0x8f,0x97,0x98,
+ 0x96,0x97,0x96,0x94,0x93,0x93,0x93,0x92,0x8f,0x91,0x94,0x93,0x91,0x8b,0x8e,
+ 0x92,0x8e,0x8a,0x87,0x86,0x84,0x7f,0x7b,0x76,0x76,0x77,0x71,0x6f,0x71,0x6e,
+ 0x69,0x64,0x73,0x90,0x72,0x40,0x0b,0x12,0x4d,0x8c,0xaa,0x7f,0x78,0x8b,0x6d,
+ 0x45,0x27,0x18,0x15,0x0e,0x0a,0x09,0x0a,0x0c,0x0e,0x12,0x16,0x0f,0x08,0x1f,
+ 0x41,0x68,0x55,0x34,0x7a,0x9f,0x7c,0x74,0x77,0x70,0x74,0x85,0x70,0x50,0x40,
+ 0x53,0x8c,0xa3,0xa9,0xad,0xac,0xa3,0x8a,0x6c,0x50,0x42,0xc8,0x03,0x03,0x01,
+ 0x01,0x03,0x02,0x00,0x00,0x00,0x05,0x0a,0x10,0x16,0x1d,0x20,0x21,0x20,0x21,
+ 0x1e,0x19,0x16,0x16,0x19,0x18,0x15,0x12,0x15,0x22,0x22,0x1b,0x17,0x18,0x1f,
+ 0x21,0x1f,0x16,0x0f,0x0e,0x12,0x16,0x1b,0x20,0x24,0x23,0x1b,0x08,0x00,0x07,
+ 0x03,0x06,0x26,0x28,0x07,0x15,0x32,0x48,0x43,0x28,0x2f,0x3a,0x2d,0x2b,0x34,
+ 0x3a,0x3f,0x42,0x44,0x45,0x3d,0x3b,0x48,0x48,0x40,0x46,0x4c,0x48,0x44,0x42,
+ 0x48,0x4c,0x47,0x45,0x46,0x47,0x49,0x4d,0x4c,0x49,0x4d,0x50,0x4c,0x52,0x57,
+ 0x4f,0x44,0x3a,0x46,0x56,0x4e,0x4f,0x5d,0x43,0x1c,0x08,0x17,0x47,0x32,0x0b,
+ 0x06,0x21,0x57,0x53,0x38,0x1e,0x1b,0x2b,0x28,0x28,0x45,0x40,0x1d,0x18,0x20,
+ 0x36,0x3f,0x40,0x50,0x56,0x3d,0x2c,0x29,0x49,0x63,0x5b,0x56,0x55,0x5a,0x5f,
+ 0x60,0x4a,0x32,0x5e,0x6d,0x35,0x2d,0x3e,0x3d,0x3a,0x39,0x2e,0x20,0x1e,0x35,
+ 0x68,0x57,0x30,0x3d,0x4c,0x55,0x58,0x57,0x4e,0x4c,0x52,0x51,0x4c,0x45,0x36,
+ 0x24,0x2b,0x37,0x36,0x3f,0x52,0x57,0x4e,0x31,0x1f,0x1d,0x3a,0x5a,0x6c,0x53,
+ 0x20,0x28,0x45,0x68,0x6c,0x5a,0x57,0x57,0x58,0x63,0x73,0x74,0x68,0x46,0x50,
+ 0x70,0x6d,0x68,0x6a,0x69,0x65,0x57,0x53,0x5d,0x73,0x84,0x71,0x68,0x74,0x74,
+ 0x72,0x76,0x78,0x78,0x78,0x79,0x76,0x78,0x7c,0x78,0x74,0x76,0x7a,0x7e,0x7b,
+ 0x78,0x7e,0x7f,0x79,0x79,0x7a,0x7b,0x7d,0x7f,0x7f,0x7f,0x7f,0x7b,0x77,0x78,
+ 0x75,0x68,0x64,0x69,0x74,0x7f,0x86,0x85,0x7b,0x6d,0x57,0x39,0x57,0x8d,0x6e,
+ 0x5e,0x7f,0x86,0x7c,0x69,0x69,0x83,0x8e,0x8a,0x73,0x5c,0x4d,0x65,0x83,0x74,
+ 0x74,0x8c,0x83,0x72,0x79,0x7e,0x7d,0x7d,0x7f,0x85,0x86,0x82,0x80,0x85,0xa3,
+ 0x82,0x2a,0x06,0x08,0x3a,0x48,0x34,0x38,0x3c,0x32,0x1d,0x06,0x05,0x26,0x7b,
+ 0x89,0x67,0x78,0x8f,0x9d,0x8a,0x5d,0x19,0x12,0x78,0x99,0x8f,0x89,0x86,0x8c,
+ 0x8d,0x8c,0x8b,0x8b,0x8d,0x8b,0x88,0x8d,0x8f,0x8a,0x8c,0x91,0x9f,0x75,0x0f,
+ 0x00,0x05,0x02,0x01,0x09,0x56,0xa0,0x99,0x90,0x8e,0x8c,0x8b,0x8d,0x8e,0x8e,
+ 0x91,0x91,0x8e,0x8d,0x8d,0x8d,0x8d,0x90,0x90,0x8e,0x8d,0x8d,0x93,0x91,0x8d,
+ 0x8e,0x90,0x91,0x8e,0x8a,0x8c,0x91,0x98,0x8a,0x6c,0x3d,0x19,0x05,0x03,0x08,
+ 0x06,0x03,0x03,0x03,0x04,0x03,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x05,0x05,0x02,0x00,0x00,0x05,0x05,0x01,0x02,0x03,
+ 0x02,0x02,0x03,0x04,0x03,0x00,0x07,0x20,0x51,0x7f,0x9c,0x9f,0x8f,0x86,0x85,
+ 0x8c,0x8e,0x8d,0x8e,0x8e,0x8b,0x8b,0x8c,0x8c,0x8b,0x89,0x8b,0x8d,0x8d,0x8b,
+ 0x8a,0x8a,0x8a,0x8d,0x8b,0x86,0x83,0x82,0x7e,0x7b,0x78,0x7a,0x7a,0x74,0x70,
+ 0x70,0x71,0x72,0x6b,0x78,0x91,0x79,0x4c,0x12,0x05,0x24,0x48,0x5c,0x3f,0x3a,
+ 0x48,0x31,0x17,0x0a,0x00,0x00,0x01,0x05,0x05,0x03,0x02,0x05,0x06,0x01,0x00,
+ 0x02,0x0e,0x1e,0x2f,0x20,0x0e,0x3f,0x5a,0x44,0x45,0x4e,0x49,0x54,0x74,0x5e,
+ 0x3d,0x4c,0x70,0xa3,0xa0,0x86,0x7f,0x71,0x5d,0x47,0x32,0x21,0x1a,0xc8,0x00,
+ 0x00,0x01,0x03,0x05,0x04,0x03,0x01,0x00,0x02,0x01,0x00,0x00,0x01,0x02,0x03,
+ 0x02,0x00,0x01,0x04,0x05,0x04,0x01,0x01,0x02,0x00,0x01,0x07,0x05,0x00,0x00,
+ 0x00,0x04,0x04,0x02,0x00,0x00,0x02,0x02,0x00,0x01,0x02,0x00,0x01,0x02,0x01,
+ 0x00,0x00,0x05,0x0a,0x0a,0x04,0x00,0x13,0x2c,0x30,0x23,0x0a,0x15,0x21,0x10,
+ 0x0d,0x19,0x26,0x32,0x3c,0x3d,0x34,0x26,0x21,0x36,0x42,0x45,0x49,0x4b,0x49,
+ 0x4b,0x4d,0x4e,0x4b,0x45,0x44,0x48,0x51,0x54,0x4e,0x4e,0x51,0x4e,0x4b,0x4a,
+ 0x53,0x5c,0x4f,0x38,0x1c,0x32,0x58,0x56,0x53,0x57,0x43,0x25,0x0d,0x11,0x30,
+ 0x22,0x0a,0x0c,0x23,0x4b,0x48,0x36,0x2a,0x23,0x22,0x2b,0x3a,0x58,0x4c,0x1b,
+ 0x0d,0x14,0x33,0x4a,0x56,0x4c,0x40,0x3f,0x2f,0x1b,0x48,0x6b,0x5c,0x51,0x4c,
+ 0x55,0x5a,0x57,0x52,0x4f,0x57,0x4e,0x25,0x32,0x51,0x2f,0x1a,0x28,0x24,0x1b,
+ 0x22,0x3d,0x6e,0x57,0x2b,0x3a,0x4e,0x5d,0x5a,0x50,0x42,0x41,0x4f,0x51,0x4f,
+ 0x4c,0x41,0x2d,0x3a,0x45,0x28,0x34,0x65,0x5c,0x45,0x42,0x32,0x1b,0x39,0x55,
+ 0x46,0x29,0x0e,0x3e,0x69,0x5c,0x4d,0x44,0x56,0x64,0x5a,0x5f,0x6d,0x73,0x66,
+ 0x3d,0x50,0x7b,0x6b,0x5b,0x60,0x68,0x6a,0x53,0x46,0x50,0x65,0x79,0x74,0x6d,
+ 0x6d,0x70,0x73,0x6d,0x6d,0x78,0x77,0x71,0x72,0x74,0x78,0x74,0x6f,0x77,0x79,
+ 0x75,0x73,0x74,0x7d,0x7d,0x75,0x75,0x78,0x79,0x7b,0x7d,0x7a,0x78,0x7d,0x7d,
+ 0x77,0x74,0x6d,0x5d,0x57,0x5d,0x6b,0x7b,0x87,0x88,0x7f,0x69,0x4c,0x24,0x4b,
+ 0x8d,0x69,0x50,0x68,0x7b,0x82,0x65,0x5e,0x80,0x8c,0x86,0x69,0x4b,0x32,0x54,
+ 0x83,0x78,0x73,0x7e,0x7d,0x77,0x71,0x66,0x58,0x64,0x75,0x7a,0x7b,0x7b,0x79,
+ 0x7f,0x9f,0x86,0x3b,0x13,0x01,0x07,0x08,0x06,0x22,0x36,0x25,0x13,0x04,0x03,
+ 0x1d,0x69,0x77,0x5b,0x78,0x95,0x9b,0x81,0x51,0x16,0x14,0x71,0x8f,0x86,0x85,
+ 0x85,0x85,0x86,0x89,0x86,0x85,0x89,0x89,0x88,0x8d,0x8d,0x86,0x86,0x8b,0x98,
+ 0x71,0x0f,0x00,0x03,0x02,0x00,0x01,0x4c,0x98,0x93,0x8b,0x89,0x86,0x86,0x8d,
+ 0x8d,0x8a,0x8c,0x8d,0x8a,0x89,0x8a,0x88,0x88,0x8a,0x8a,0x88,0x89,0x8b,0x8d,
+ 0x8d,0x8a,0x89,0x88,0x87,0x8a,0x8f,0x8e,0x85,0x72,0x52,0x2b,0x12,0x03,0x00,
+ 0x05,0x0d,0x06,0x00,0x02,0x04,0x06,0x02,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x04,0x02,0x02,0x07,0x06,0x00,
+ 0x02,0x04,0x05,0x07,0x09,0x06,0x02,0x00,0x1d,0x56,0x8a,0x9f,0x7c,0x6b,0x69,
+ 0x71,0x78,0x7b,0x7d,0x7f,0x81,0x81,0x7f,0x7f,0x82,0x81,0x81,0x80,0x82,0x85,
+ 0x84,0x84,0x86,0x84,0x82,0x8a,0x8b,0x85,0x83,0x83,0x82,0x82,0x84,0x85,0x84,
+ 0x82,0x7f,0x79,0x82,0x89,0x80,0x87,0x99,0x7e,0x4e,0x15,0x00,0x01,0x02,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0a,0x09,0x09,0x0c,0x0a,0x06,0x07,0x08,
+ 0x02,0x03,0x07,0x04,0x01,0x00,0x00,0x03,0x07,0x09,0x04,0x04,0x07,0x0a,0x24,
+ 0x59,0x48,0x28,0x4e,0x7f,0xac,0x85,0x41,0x2c,0x19,0x03,0x00,0x00,0x07,0x07,
+ 0xc8,0x01,0x01,0x01,0x02,0x02,0x01,0x00,0x01,0x02,0x03,0x03,0x03,0x02,0x01,
+ 0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x03,0x07,0x06,0x03,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x01,0x00,0x00,
+ 0x03,0x01,0x01,0x03,0x03,0x03,0x06,0x04,0x00,0x06,0x0e,0x10,0x0c,0x05,0x08,
+ 0x0b,0x03,0x04,0x0c,0x0e,0x0f,0x15,0x17,0x15,0x0e,0x0b,0x15,0x1d,0x24,0x29,
+ 0x2d,0x2e,0x30,0x32,0x33,0x30,0x27,0x25,0x2a,0x3a,0x41,0x33,0x33,0x38,0x2d,
+ 0x25,0x2a,0x32,0x36,0x29,0x1a,0x11,0x21,0x3c,0x42,0x4d,0x62,0x50,0x2f,0x0f,
+ 0x06,0x13,0x0e,0x04,0x08,0x13,0x24,0x23,0x20,0x2b,0x26,0x13,0x22,0x37,0x40,
+ 0x2f,0x0a,0x0c,0x1c,0x2c,0x2d,0x24,0x37,0x48,0x43,0x37,0x2c,0x3f,0x53,0x5c,
+ 0x5c,0x59,0x61,0x5c,0x3d,0x3c,0x4a,0x42,0x3a,0x37,0x46,0x53,0x2b,0x11,0x1c,
+ 0x17,0x12,0x2a,0x42,0x53,0x3e,0x27,0x50,0x59,0x31,0x41,0x60,0x53,0x45,0x3d,
+ 0x4c,0x5c,0x57,0x3d,0x18,0x33,0x52,0x2c,0x2b,0x52,0x53,0x48,0x48,0x37,0x1e,
+ 0x20,0x2c,0x3e,0x3d,0x2f,0x3e,0x4a,0x3f,0x3c,0x43,0x56,0x5e,0x48,0x55,0x74,
+ 0x69,0x55,0x40,0x50,0x6e,0x5e,0x53,0x62,0x67,0x62,0x40,0x35,0x50,0x5a,0x5d,
+ 0x69,0x6e,0x6b,0x6f,0x74,0x70,0x6c,0x69,0x69,0x69,0x6d,0x6f,0x70,0x72,0x70,
+ 0x66,0x65,0x6d,0x73,0x76,0x74,0x70,0x6d,0x6e,0x71,0x76,0x74,0x6e,0x6e,0x70,
+ 0x76,0x76,0x72,0x74,0x6e,0x58,0x48,0x45,0x62,0x7b,0x7b,0x74,0x6a,0x63,0x51,
+ 0x2b,0x45,0x7b,0x73,0x66,0x67,0x6d,0x73,0x65,0x65,0x7e,0x7d,0x6d,0x59,0x42,
+ 0x2b,0x4b,0x7a,0x7f,0x7b,0x76,0x7d,0x80,0x65,0x4c,0x3d,0x55,0x70,0x62,0x60,
+ 0x6b,0x6f,0x78,0x97,0x88,0x4d,0x20,0x03,0x07,0x12,0x25,0x58,0x6e,0x35,0x0f,
+ 0x02,0x02,0x1f,0x66,0x7e,0x71,0x76,0x82,0x99,0x7f,0x44,0x12,0x18,0x70,0x8d,
+ 0x83,0x83,0x82,0x82,0x81,0x80,0x83,0x82,0x7c,0x7d,0x81,0x86,0x85,0x7f,0x85,
+ 0x8e,0x98,0x70,0x12,0x00,0x02,0x03,0x00,0x00,0x46,0x92,0x8e,0x87,0x85,0x84,
+ 0x84,0x83,0x84,0x84,0x7d,0x7a,0x86,0x8a,0x84,0x83,0x83,0x87,0x86,0x84,0x88,
+ 0x8a,0x85,0x83,0x84,0x84,0x84,0x82,0x89,0x90,0x87,0x6b,0x36,0x36,0x50,0x45,
+ 0x2f,0x12,0x06,0x04,0x03,0x04,0x06,0x04,0x03,0x05,0x05,0x01,0x00,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,
+ 0x07,0x02,0x03,0x05,0x03,0x01,0x00,0x00,0x03,0x21,0x4a,0x73,0x74,0x6b,0x62,
+ 0x5c,0x58,0x5a,0x5e,0x61,0x64,0x65,0x69,0x69,0x69,0x6b,0x6d,0x6e,0x70,0x71,
+ 0x74,0x77,0x76,0x78,0x7d,0x7e,0x7d,0x82,0x86,0x84,0x82,0x82,0x86,0x86,0x81,
+ 0x7e,0x7d,0x7e,0x81,0x84,0x86,0x85,0x75,0x7a,0x8b,0x57,0x1d,0x08,0x02,0x05,
+ 0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x08,0x0b,0x09,0x07,0x05,0x08,0x06,0x02,
+ 0x03,0x04,0x02,0x03,0x05,0x03,0x01,0x00,0x03,0x09,0x02,0x00,0x03,0x04,0x04,
+ 0x01,0x0c,0x28,0x23,0x16,0x25,0x37,0x46,0x32,0x13,0x0a,0x03,0x00,0x00,0x02,
+ 0x00,0x00,0xc8,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x04,0x04,
+ 0x04,0x03,0x01,0x00,0x02,0x06,0x04,0x00,0x00,0x02,0x08,0x08,0x04,0x03,0x02,
+ 0x00,0x01,0x03,0x02,0x01,0x01,0x01,0x03,0x03,0x04,0x04,0x03,0x00,0x02,0x03,
+ 0x02,0x03,0x04,0x01,0x02,0x05,0x03,0x00,0x03,0x06,0x03,0x00,0x00,0x00,0x00,
+ 0x03,0x03,0x01,0x00,0x02,0x07,0x03,0x00,0x00,0x00,0x01,0x03,0x03,0x01,0x04,
+ 0x0a,0x0e,0x13,0x15,0x18,0x19,0x19,0x15,0x0f,0x0d,0x0f,0x1f,0x25,0x19,0x19,
+ 0x1d,0x11,0x0a,0x10,0x14,0x15,0x0c,0x07,0x0b,0x13,0x1d,0x26,0x37,0x51,0x45,
+ 0x28,0x0c,0x00,0x03,0x02,0x02,0x06,0x08,0x09,0x09,0x0e,0x20,0x1e,0x0a,0x15,
+ 0x24,0x20,0x12,0x00,0x0d,0x1d,0x1e,0x13,0x03,0x28,0x47,0x3d,0x36,0x36,0x39,
+ 0x40,0x4a,0x52,0x59,0x65,0x5d,0x2f,0x2c,0x43,0x3d,0x3a,0x40,0x50,0x59,0x2f,
+ 0x14,0x1a,0x13,0x0e,0x2f,0x41,0x35,0x26,0x23,0x56,0x58,0x19,0x30,0x60,0x5e,
+ 0x4e,0x37,0x4c,0x64,0x53,0x36,0x16,0x31,0x50,0x3a,0x2d,0x32,0x43,0x52,0x50,
+ 0x41,0x29,0x1a,0x1a,0x31,0x41,0x48,0x3a,0x2f,0x3b,0x41,0x44,0x53,0x5a,0x48,
+ 0x57,0x75,0x5d,0x45,0x47,0x53,0x5f,0x57,0x53,0x61,0x5e,0x52,0x3a,0x38,0x58,
+ 0x57,0x48,0x58,0x66,0x6c,0x70,0x70,0x6a,0x65,0x62,0x63,0x66,0x6c,0x6a,0x61,
+ 0x69,0x70,0x62,0x5b,0x5e,0x69,0x72,0x6c,0x69,0x6c,0x6e,0x70,0x76,0x71,0x64,
+ 0x65,0x6b,0x6d,0x6f,0x6e,0x6d,0x67,0x57,0x43,0x36,0x5a,0x74,0x63,0x5a,0x57,
+ 0x5f,0x5a,0x36,0x46,0x6e,0x71,0x69,0x5e,0x62,0x6b,0x65,0x69,0x7d,0x76,0x61,
+ 0x4e,0x3a,0x25,0x41,0x6c,0x7f,0x7f,0x6d,0x6d,0x6b,0x4a,0x32,0x2b,0x49,0x66,
+ 0x52,0x50,0x67,0x6a,0x70,0x8e,0x87,0x5b,0x28,0x04,0x08,0x16,0x2f,0x66,0x7c,
+ 0x35,0x0b,0x01,0x03,0x1c,0x57,0x75,0x7b,0x73,0x76,0x96,0x7b,0x3c,0x10,0x19,
+ 0x71,0x8c,0x81,0x81,0x80,0x7f,0x7c,0x7b,0x7f,0x7f,0x7d,0x7f,0x82,0x7f,0x7b,
+ 0x78,0x82,0x8d,0x95,0x6d,0x12,0x00,0x01,0x03,0x00,0x00,0x42,0x8d,0x8b,0x84,
+ 0x80,0x81,0x82,0x7e,0x7f,0x82,0x70,0x68,0x83,0x8a,0x7e,0x7d,0x80,0x82,0x82,
+ 0x7f,0x83,0x86,0x7f,0x7d,0x7f,0x7f,0x7f,0x7e,0x83,0x89,0x82,0x69,0x36,0x3d,
+ 0x5e,0x5b,0x44,0x18,0x03,0x00,0x01,0x04,0x07,0x03,0x00,0x05,0x07,0x01,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x03,
+ 0x05,0x04,0x03,0x02,0x02,0x03,0x02,0x06,0x0e,0x19,0x2f,0x54,0x71,0x7f,0x69,
+ 0x56,0x5f,0x61,0x5c,0x5b,0x5b,0x5d,0x5e,0x61,0x62,0x62,0x62,0x62,0x64,0x63,
+ 0x65,0x68,0x69,0x69,0x69,0x6c,0x71,0x74,0x76,0x78,0x7b,0x7c,0x7b,0x78,0x7d,
+ 0x7e,0x7a,0x7a,0x7c,0x83,0x87,0x86,0x74,0x5e,0x50,0x53,0x61,0x2f,0x00,0x01,
+ 0x07,0x08,0x04,0x03,0x09,0x0a,0x07,0x03,0x03,0x0a,0x0a,0x07,0x04,0x03,0x04,
+ 0x03,0x00,0x02,0x04,0x03,0x03,0x04,0x05,0x04,0x02,0x07,0x0d,0x05,0x01,0x06,
+ 0x07,0x07,0x03,0x03,0x08,0x0b,0x0b,0x07,0x04,0x02,0x01,0x00,0x00,0x00,0x03,
+ 0x05,0x06,0x03,0x01,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x02,
+ 0x01,0x01,0x00,0x01,0x03,0x02,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x03,0x03,0x00,0x01,0x05,0x03,0x01,0x01,0x04,0x07,0x05,0x03,0x02,0x02,0x03,
+ 0x01,0x02,0x06,0x03,0x00,0x01,0x03,0x03,0x02,0x01,0x00,0x02,0x07,0x06,0x02,
+ 0x01,0x00,0x00,0x04,0x07,0x03,0x01,0x05,0x07,0x07,0x03,0x01,0x01,0x05,0x07,
+ 0x03,0x02,0x03,0x03,0x05,0x07,0x09,0x08,0x04,0x03,0x05,0x04,0x02,0x04,0x06,
+ 0x07,0x06,0x04,0x04,0x05,0x06,0x04,0x03,0x03,0x05,0x07,0x06,0x04,0x07,0x0f,
+ 0x1d,0x19,0x0c,0x04,0x01,0x03,0x02,0x02,0x07,0x08,0x04,0x03,0x03,0x07,0x0a,
+ 0x08,0x06,0x04,0x03,0x03,0x04,0x0c,0x12,0x0a,0x07,0x0b,0x23,0x33,0x28,0x27,
+ 0x2f,0x38,0x37,0x23,0x2a,0x44,0x5b,0x5a,0x31,0x2c,0x41,0x51,0x50,0x33,0x44,
+ 0x62,0x3d,0x21,0x24,0x1b,0x14,0x2d,0x35,0x1e,0x16,0x1d,0x41,0x48,0x25,0x2e,
+ 0x48,0x5c,0x5a,0x42,0x53,0x63,0x3f,0x2c,0x32,0x37,0x3e,0x4c,0x39,0x0c,0x30,
+ 0x5e,0x5f,0x51,0x3a,0x32,0x2b,0x17,0x24,0x46,0x33,0x2b,0x5a,0x5d,0x41,0x4f,
+ 0x5e,0x63,0x6a,0x6f,0x50,0x3d,0x53,0x57,0x53,0x57,0x5a,0x5b,0x4d,0x3d,0x47,
+ 0x57,0x66,0x5a,0x44,0x45,0x55,0x70,0x71,0x65,0x55,0x54,0x66,0x6c,0x6d,0x73,
+ 0x67,0x4b,0x57,0x6d,0x70,0x61,0x44,0x52,0x69,0x68,0x6a,0x71,0x75,0x78,0x7b,
+ 0x73,0x64,0x63,0x66,0x65,0x69,0x6d,0x5f,0x54,0x58,0x4b,0x38,0x55,0x64,0x43,
+ 0x3c,0x49,0x5e,0x61,0x41,0x4d,0x6d,0x5e,0x4d,0x4a,0x5b,0x71,0x66,0x66,0x7d,
+ 0x7b,0x67,0x49,0x2e,0x1b,0x32,0x5a,0x77,0x7b,0x62,0x48,0x30,0x20,0x1a,0x20,
+ 0x3e,0x59,0x4c,0x54,0x72,0x6d,0x67,0x84,0x84,0x64,0x2d,0x01,0x03,0x05,0x0a,
+ 0x33,0x49,0x1d,0x04,0x02,0x03,0x11,0x32,0x53,0x6f,0x70,0x74,0x91,0x77,0x3c,
+ 0x0e,0x16,0x72,0x8d,0x80,0x7f,0x7d,0x7a,0x7b,0x7d,0x78,0x7c,0x8d,0x92,0x8d,
+ 0x7b,0x71,0x74,0x7b,0x85,0x8d,0x68,0x12,0x00,0x03,0x04,0x01,0x00,0x3f,0x84,
+ 0x88,0x82,0x7b,0x7b,0x7f,0x7c,0x7f,0x82,0x69,0x5c,0x7f,0x87,0x75,0x78,0x7c,
+ 0x7b,0x78,0x74,0x7a,0x7e,0x7c,0x7b,0x7b,0x7b,0x7b,0x7b,0x79,0x78,0x80,0x87,
+ 0x89,0x69,0x3c,0x3c,0x31,0x0a,0x00,0x02,0x00,0x00,0x03,0x02,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x03,
+ 0x07,0x12,0x17,0x03,0x00,0x00,0x00,0x00,0x03,0x19,0x3d,0x69,0x8a,0x91,0x8b,
+ 0x7d,0x7b,0x7a,0x79,0x78,0x77,0x78,0x78,0x74,0x74,0x74,0x74,0x71,0x6d,0x6b,
+ 0x69,0x65,0x63,0x65,0x64,0x61,0x61,0x62,0x63,0x68,0x6c,0x6a,0x69,0x6b,0x68,
+ 0x64,0x65,0x69,0x71,0x7b,0x86,0x96,0x95,0x7c,0x46,0x15,0x0f,0x12,0x19,0x0c,
+ 0x00,0x05,0x06,0x02,0x00,0x00,0x03,0x05,0x06,0x07,0x06,0x03,0x02,0x03,0x04,
+ 0x04,0x04,0x03,0x02,0x05,0x07,0x06,0x04,0x03,0x06,0x07,0x04,0x06,0x08,0x07,
+ 0x04,0x00,0x02,0x06,0x09,0x08,0x03,0x05,0x0a,0x03,0x00,0x02,0x08,0x0d,0x07,
+ 0x03,0x04,0x02,0x01,0x09,0x0a,0xc8,0x00,0x00,0x01,0x01,0x00,0x01,0x02,0x03,
+ 0x03,0x01,0x00,0x00,0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x02,0x01,0x00,0x00,
+ 0x00,0x00,0x02,0x03,0x01,0x02,0x03,0x02,0x00,0x02,0x03,0x04,0x03,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x03,0x03,0x02,0x02,0x02,0x01,0x01,0x02,0x03,0x03,0x05,
+ 0x04,0x03,0x01,0x01,0x02,0x03,0x05,0x03,0x03,0x02,0x05,0x07,0x03,0x01,0x00,
+ 0x03,0x06,0x04,0x03,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x02,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x03,0x01,0x00,0x00,0x02,0x04,0x02,0x00,
+ 0x00,0x01,0x06,0x04,0x01,0x07,0x10,0x19,0x0e,0x00,0x03,0x05,0x03,0x01,0x00,
+ 0x00,0x02,0x05,0x02,0x00,0x00,0x00,0x03,0x07,0x07,0x03,0x04,0x0c,0x14,0x19,
+ 0x19,0x1a,0x1e,0x29,0x2b,0x19,0x19,0x2b,0x48,0x4f,0x2d,0x28,0x37,0x55,0x57,
+ 0x28,0x2c,0x48,0x3a,0x2a,0x25,0x1f,0x1b,0x28,0x2a,0x1a,0x15,0x1b,0x32,0x3d,
+ 0x34,0x31,0x36,0x4d,0x56,0x4c,0x4f,0x50,0x32,0x31,0x4c,0x49,0x41,0x43,0x2f,
+ 0x0a,0x27,0x4d,0x50,0x4f,0x48,0x39,0x25,0x0b,0x0f,0x28,0x1d,0x19,0x40,0x3f,
+ 0x26,0x38,0x4f,0x5b,0x65,0x67,0x51,0x43,0x4f,0x52,0x50,0x57,0x5c,0x5e,0x50,
+ 0x3f,0x47,0x4e,0x4c,0x4d,0x4f,0x48,0x52,0x70,0x6d,0x59,0x4d,0x53,0x6c,0x76,
+ 0x75,0x67,0x57,0x49,0x50,0x5e,0x6a,0x5e,0x3d,0x4c,0x67,0x77,0x79,0x70,0x6f,
+ 0x6d,0x69,0x67,0x65,0x5e,0x5a,0x64,0x6a,0x6b,0x60,0x55,0x53,0x45,0x36,0x50,
+ 0x5c,0x3a,0x2f,0x3a,0x50,0x57,0x3d,0x45,0x5a,0x50,0x45,0x3e,0x57,0x79,0x69,
+ 0x62,0x75,0x74,0x64,0x41,0x24,0x15,0x27,0x46,0x57,0x55,0x3f,0x2b,0x1c,0x15,
+ 0x15,0x1c,0x30,0x45,0x4c,0x54,0x60,0x63,0x6c,0x89,0x8d,0x73,0x34,0x00,0x00,
+ 0x00,0x01,0x2d,0x45,0x19,0x04,0x04,0x03,0x0a,0x1e,0x3d,0x5f,0x63,0x6a,0x8a,
+ 0x6d,0x2c,0x09,0x19,0x6e,0x86,0x77,0x74,0x74,0x76,0x75,0x75,0x7b,0x7b,0x70,
+ 0x70,0x74,0x7d,0x7b,0x6d,0x70,0x7b,0x88,0x65,0x10,0x00,0x06,0x04,0x00,0x00,
+ 0x3a,0x7b,0x86,0x81,0x73,0x73,0x77,0x78,0x79,0x78,0x62,0x58,0x77,0x7e,0x70,
+ 0x7b,0x86,0x80,0x7b,0x76,0x73,0x73,0x76,0x78,0x78,0x75,0x74,0x78,0x78,0x75,
+ 0x78,0x78,0x72,0x53,0x29,0x1f,0x1c,0x1a,0x10,0x03,0x01,0x02,0x04,0x03,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,
+ 0x03,0x02,0x05,0x3a,0x63,0x49,0x33,0x28,0x2c,0x37,0x43,0x56,0x6e,0x86,0x94,
+ 0x8f,0x85,0x78,0x7b,0x80,0x80,0x7e,0x7b,0x7c,0x7d,0x7b,0x79,0x79,0x76,0x72,
+ 0x6e,0x6b,0x68,0x64,0x63,0x67,0x65,0x62,0x62,0x62,0x5d,0x5c,0x5c,0x5b,0x5a,
+ 0x59,0x5e,0x65,0x62,0x65,0x72,0x70,0x68,0x63,0x5b,0x4d,0x24,0x00,0x00,0x00,
+ 0x00,0x00,0x03,0x06,0x05,0x01,0x00,0x01,0x02,0x02,0x03,0x04,0x03,0x03,0x02,
+ 0x02,0x02,0x03,0x03,0x02,0x01,0x03,0x04,0x03,0x03,0x04,0x03,0x03,0x03,0x03,
+ 0x03,0x05,0x04,0x01,0x02,0x04,0x07,0x05,0x00,0x03,0x07,0x01,0x00,0x02,0x07,
+ 0x0a,0x05,0x03,0x03,0x01,0x02,0x08,0x09,0xc8,0x00,0x00,0x02,0x03,0x02,0x02,
+ 0x02,0x03,0x02,0x01,0x01,0x01,0x02,0x02,0x01,0x00,0x01,0x03,0x03,0x02,0x00,
+ 0x00,0x02,0x01,0x00,0x00,0x02,0x03,0x03,0x01,0x00,0x00,0x02,0x01,0x00,0x00,
+ 0x00,0x03,0x02,0x00,0x03,0x03,0x00,0x02,0x06,0x03,0x00,0x00,0x00,0x02,0x07,
+ 0x06,0x00,0x00,0x02,0x00,0x02,0x05,0x02,0x00,0x04,0x03,0x00,0x00,0x02,0x01,
+ 0x01,0x00,0x00,0x01,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x06,0x00,
+ 0x02,0x07,0x04,0x00,0x00,0x03,0x07,0x02,0x00,0x03,0x03,0x01,0x00,0x00,0x02,
+ 0x02,0x02,0x01,0x01,0x00,0x00,0x01,0x0e,0x1f,0x2f,0x1b,0x00,0x00,0x02,0x03,
+ 0x03,0x01,0x00,0x01,0x03,0x02,0x02,0x03,0x03,0x02,0x00,0x00,0x02,0x06,0x0a,
+ 0x04,0x03,0x0e,0x0f,0x0b,0x15,0x1d,0x19,0x14,0x14,0x2d,0x39,0x23,0x1e,0x28,
+ 0x48,0x4c,0x1b,0x12,0x21,0x29,0x29,0x1f,0x1d,0x1d,0x1e,0x1d,0x1b,0x18,0x19,
+ 0x23,0x2f,0x39,0x2f,0x25,0x36,0x45,0x4c,0x41,0x32,0x28,0x34,0x56,0x53,0x42,
+ 0x2b,0x1b,0x15,0x20,0x2c,0x32,0x3d,0x48,0x30,0x14,0x07,0x03,0x05,0x03,0x06,
+ 0x12,0x0f,0x06,0x1c,0x33,0x40,0x4c,0x55,0x4e,0x45,0x3e,0x41,0x48,0x4c,0x50,
+ 0x58,0x50,0x41,0x3a,0x2f,0x23,0x37,0x55,0x50,0x53,0x69,0x5e,0x46,0x44,0x4e,
+ 0x62,0x70,0x6e,0x4c,0x3d,0x48,0x46,0x45,0x52,0x4e,0x38,0x46,0x61,0x7b,0x7b,
+ 0x61,0x57,0x52,0x48,0x4d,0x5c,0x4d,0x44,0x5a,0x65,0x65,0x66,0x5f,0x48,0x38,
+ 0x34,0x48,0x52,0x3b,0x2f,0x2d,0x3a,0x3f,0x30,0x33,0x40,0x43,0x41,0x3a,0x53,
+ 0x74,0x60,0x55,0x62,0x62,0x54,0x33,0x1a,0x12,0x1f,0x31,0x2f,0x27,0x18,0x15,
+ 0x19,0x1c,0x1b,0x18,0x21,0x31,0x45,0x4c,0x45,0x57,0x6f,0x82,0x88,0x7c,0x3d,
+ 0x03,0x01,0x03,0x0d,0x41,0x5a,0x20,0x05,0x06,0x02,0x05,0x17,0x2f,0x49,0x4f,
+ 0x5c,0x82,0x60,0x17,0x03,0x1d,0x69,0x7c,0x6e,0x6d,0x6f,0x72,0x6e,0x6b,0x81,
+ 0x78,0x41,0x36,0x4b,0x7b,0x8a,0x6a,0x69,0x74,0x84,0x63,0x0e,0x00,0x08,0x03,
+ 0x00,0x00,0x35,0x70,0x82,0x7f,0x6c,0x6b,0x70,0x75,0x73,0x69,0x5d,0x5a,0x70,
+ 0x76,0x70,0x7c,0x85,0x7b,0x78,0x7c,0x71,0x6a,0x70,0x75,0x77,0x72,0x70,0x74,
+ 0x78,0x78,0x6f,0x5a,0x36,0x28,0x26,0x10,0x12,0x3b,0x2b,0x03,0x02,0x04,0x05,
+ 0x03,0x00,0x02,0x03,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x00,0x01,0x57,0xa6,0x96,0x7a,0x5e,0x66,0x7a,0x88,0x8f,0x8e,
+ 0x82,0x77,0x72,0x70,0x70,0x73,0x78,0x7b,0x78,0x72,0x74,0x77,0x76,0x75,0x74,
+ 0x70,0x6d,0x69,0x67,0x65,0x62,0x64,0x69,0x69,0x65,0x67,0x65,0x5c,0x57,0x54,
+ 0x56,0x55,0x50,0x5b,0x69,0x64,0x64,0x6b,0x57,0x38,0x1b,0x10,0x16,0x0e,0x03,
+ 0x04,0x03,0x00,0x02,0x05,0x05,0x03,0x02,0x03,0x03,0x03,0x01,0x00,0x00,0x00,
+ 0x04,0x04,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x04,0x01,0x00,
+ 0x01,0x02,0x01,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x02,0x03,0x04,0x02,0x01,
+ 0x03,0x03,0x01,0x01,0x01,0x00,0x02,0x03,0x04,0x03,0xc8,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x02,
+ 0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x02,0x00,0x01,0x03,0x01,0x00,0x00,0x00,
+ 0x01,0x03,0x02,0x00,0x00,0x01,0x00,0x01,0x02,0x01,0x00,0x03,0x03,0x01,0x01,
+ 0x01,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x03,
+ 0x03,0x00,0x01,0x03,0x02,0x00,0x00,0x01,0x03,0x01,0x00,0x02,0x02,0x01,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x03,0x09,0x11,0x18,0x0e,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x02,0x02,0x01,0x00,0x00,0x01,
+ 0x03,0x03,0x02,0x01,0x05,0x06,0x03,0x07,0x0a,0x0a,0x0a,0x08,0x10,0x14,0x0e,
+ 0x0c,0x0f,0x1a,0x1b,0x0a,0x07,0x0a,0x0e,0x0f,0x0c,0x0c,0x0c,0x0b,0x0a,0x0a,
+ 0x0a,0x0a,0x0d,0x12,0x16,0x12,0x0e,0x20,0x2d,0x31,0x25,0x16,0x0f,0x19,0x34,
+ 0x2f,0x1d,0x0e,0x07,0x0a,0x0c,0x0e,0x10,0x15,0x19,0x12,0x08,0x04,0x02,0x02,
+ 0x03,0x03,0x06,0x05,0x03,0x0b,0x13,0x17,0x1c,0x20,0x20,0x1f,0x1c,0x1c,0x1d,
+ 0x1d,0x1e,0x27,0x24,0x1a,0x15,0x10,0x0b,0x19,0x31,0x3f,0x4a,0x50,0x3d,0x24,
+ 0x21,0x24,0x29,0x2c,0x2b,0x1e,0x19,0x1d,0x1c,0x1a,0x1e,0x1d,0x19,0x28,0x3a,
+ 0x43,0x3c,0x26,0x1d,0x1b,0x1a,0x1e,0x24,0x1e,0x1a,0x21,0x35,0x53,0x6e,0x6c,
+ 0x30,0x25,0x3d,0x36,0x31,0x3c,0x3c,0x34,0x27,0x1b,0x14,0x20,0x34,0x2c,0x2c,
+ 0x42,0x46,0x3e,0x32,0x2e,0x38,0x36,0x2d,0x19,0x0f,0x14,0x19,0x1e,0x19,0x14,
+ 0x0d,0x0a,0x0e,0x21,0x22,0x10,0x17,0x24,0x20,0x2a,0x42,0x54,0x58,0x3b,0x42,
+ 0x66,0x45,0x17,0x02,0x0a,0x2e,0x67,0x78,0x24,0x00,0x03,0x00,0x06,0x20,0x26,
+ 0x20,0x2e,0x4b,0x80,0x5d,0x0a,0x00,0x19,0x69,0x7f,0x74,0x7e,0x80,0x72,0x69,
+ 0x66,0x7a,0x69,0x24,0x0f,0x24,0x6b,0x90,0x7d,0x7d,0x81,0x84,0x5f,0x0e,0x00,
+ 0x04,0x07,0x03,0x00,0x30,0x68,0x77,0x75,0x6a,0x6d,0x75,0x7c,0x76,0x65,0x5b,
+ 0x5f,0x7a,0x86,0x82,0x67,0x4c,0x3d,0x55,0x84,0x82,0x75,0x72,0x75,0x7b,0x7b,
+ 0x76,0x6e,0x70,0x78,0x74,0x5e,0x2f,0x2e,0x45,0x36,0x3a,0x62,0x3f,0x02,0x00,
+ 0x03,0x03,0x03,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,
+ 0x01,0x02,0x03,0x03,0x01,0x00,0x02,0x2c,0x5f,0x86,0x8f,0x80,0x7c,0x79,0x71,
+ 0x70,0x75,0x6f,0x68,0x66,0x65,0x64,0x6a,0x6f,0x6d,0x6a,0x68,0x6c,0x70,0x6e,
+ 0x6d,0x6a,0x69,0x68,0x69,0x67,0x63,0x64,0x65,0x66,0x63,0x5f,0x62,0x62,0x60,
+ 0x65,0x6f,0x78,0x77,0x6c,0x5f,0x54,0x5a,0x50,0x36,0x23,0x14,0x07,0x03,0x07,
+ 0x05,0x03,0x03,0x03,0x01,0x03,0x03,0x03,0x02,0x00,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x02,0x02,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x02,0x01,0x01,0x02,0x02,0x03,
+ 0x02,0x02,0x03,0x02,0x01,0x01,0x01,0x00,0x01,0x02,0x02,0x01,0xc8,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,
+ 0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x03,0x04,0x05,0x05,0x03,
+ 0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x01,0x02,0x01,0x01,0x01,0x00,0x00,0x02,0x03,0x03,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x03,0x0f,0x16,0x16,0x0e,0x05,0x00,
+ 0x07,0x16,0x0f,0x03,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x03,
+ 0x03,0x03,0x03,0x04,0x03,0x03,0x05,0x03,0x01,0x00,0x00,0x00,0x03,0x05,0x05,
+ 0x03,0x02,0x00,0x00,0x06,0x05,0x00,0x01,0x02,0x02,0x07,0x12,0x26,0x32,0x2e,
+ 0x1e,0x0b,0x09,0x07,0x03,0x01,0x00,0x03,0x04,0x03,0x03,0x02,0x01,0x01,0x04,
+ 0x0f,0x19,0x15,0x0d,0x02,0x00,0x00,0x01,0x02,0x01,0x03,0x03,0x00,0x12,0x35,
+ 0x55,0x56,0x19,0x13,0x31,0x21,0x19,0x34,0x39,0x2c,0x16,0x06,0x05,0x16,0x2d,
+ 0x22,0x20,0x37,0x2d,0x15,0x0e,0x10,0x17,0x16,0x10,0x07,0x07,0x12,0x12,0x0f,
+ 0x0b,0x09,0x08,0x05,0x07,0x1b,0x1e,0x0b,0x0f,0x15,0x07,0x15,0x3d,0x47,0x39,
+ 0x0b,0x14,0x4d,0x45,0x28,0x06,0x0d,0x39,0x6a,0x73,0x20,0x00,0x02,0x00,0x08,
+ 0x25,0x23,0x0e,0x21,0x44,0x74,0x52,0x04,0x00,0x1c,0x71,0x82,0x6d,0x73,0x71,
+ 0x5e,0x5a,0x5f,0x71,0x5d,0x13,0x00,0x0b,0x4a,0x72,0x72,0x73,0x71,0x73,0x52,
+ 0x0d,0x00,0x02,0x07,0x04,0x00,0x2c,0x62,0x74,0x77,0x6d,0x6c,0x6f,0x78,0x72,
+ 0x62,0x5a,0x5d,0x74,0x78,0x69,0x42,0x20,0x11,0x2f,0x67,0x6f,0x6a,0x66,0x65,
+ 0x65,0x63,0x5d,0x4f,0x57,0x6a,0x78,0x67,0x2b,0x25,0x3f,0x46,0x53,0x6f,0x44,
+ 0x00,0x00,0x03,0x01,0x02,0x03,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x02,0x02,0x03,0x02,0x03,0x06,0x0c,0x20,0x53,0x74,0x7e,0x7b,
+ 0x71,0x63,0x5e,0x61,0x5f,0x5e,0x61,0x5e,0x5a,0x5f,0x62,0x5f,0x5e,0x5e,0x62,
+ 0x65,0x65,0x64,0x62,0x5f,0x5f,0x62,0x62,0x61,0x63,0x66,0x67,0x64,0x61,0x64,
+ 0x66,0x68,0x6b,0x70,0x77,0x74,0x65,0x4a,0x33,0x3c,0x32,0x0f,0x03,0x02,0x02,
+ 0x02,0x02,0x03,0x03,0x03,0x02,0x03,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0xc8,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x02,
+ 0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x02,0x02,0x01,0x01,0x01,0x02,0x02,
+ 0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x03,0x05,0x07,0x05,0x04,0x03,0x03,
+ 0x01,0x00,0x03,0x07,0x03,0x00,0x07,0x09,0x03,0x03,0x02,0x02,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x04,0x03,0x02,0x01,0x00,0x01,0x02,
+ 0x03,0x02,0x00,0x00,0x01,0x03,0x03,0x02,0x01,0x07,0x0a,0x07,0x03,0x02,0x07,
+ 0x09,0x06,0x04,0x04,0x03,0x01,0x00,0x01,0x02,0x03,0x03,0x04,0x04,0x04,0x05,
+ 0x03,0x00,0x03,0x06,0x03,0x02,0x01,0x03,0x06,0x05,0x03,0x02,0x05,0x08,0x07,
+ 0x07,0x0a,0x15,0x19,0x07,0x03,0x0a,0x0c,0x12,0x20,0x1e,0x11,0x0a,0x07,0x0a,
+ 0x18,0x28,0x28,0x21,0x12,0x09,0x04,0x03,0x04,0x09,0x07,0x03,0x02,0x03,0x09,
+ 0x08,0x05,0x03,0x03,0x06,0x04,0x03,0x07,0x0b,0x0d,0x08,0x03,0x03,0x15,0x32,
+ 0x2b,0x15,0x03,0x10,0x36,0x3d,0x2f,0x0b,0x08,0x25,0x40,0x43,0x12,0x00,0x03,
+ 0x02,0x0a,0x24,0x26,0x1c,0x2f,0x47,0x5a,0x3b,0x06,0x01,0x27,0x80,0x83,0x54,
+ 0x42,0x37,0x32,0x3f,0x54,0x68,0x55,0x12,0x00,0x05,0x19,0x2e,0x3e,0x3f,0x3a,
+ 0x49,0x3a,0x08,0x00,0x03,0x04,0x01,0x00,0x2a,0x61,0x7e,0x83,0x74,0x63,0x58,
+ 0x61,0x63,0x5d,0x55,0x51,0x57,0x41,0x19,0x11,0x10,0x07,0x0d,0x1e,0x31,0x41,
+ 0x49,0x40,0x2b,0x24,0x1d,0x15,0x28,0x4c,0x74,0x6e,0x22,0x03,0x08,0x2f,0x51,
+ 0x5b,0x35,0x00,0x02,0x07,0x03,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x07,0x0b,0x0b,0x0a,0x0e,0x28,
+ 0x53,0x65,0x6d,0x6f,0x69,0x5e,0x5a,0x5a,0x60,0x5e,0x57,0x52,0x51,0x53,0x55,
+ 0x56,0x55,0x56,0x5b,0x5d,0x5b,0x56,0x53,0x55,0x57,0x5a,0x5f,0x65,0x6c,0x6d,
+ 0x6b,0x6e,0x71,0x71,0x5f,0x49,0x45,0x3d,0x2b,0x18,0x09,0x0a,0x0a,0x07,0x03,
+ 0x03,0x04,0x05,0x05,0x04,0x03,0x02,0x01,0x00,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x01,0x02,0x02,0x02,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x03,0x04,0x04,0x01,0x00,
+ 0x00,0x00,0x00,0x03,0x04,0x03,0x00,0x00,0x07,0x08,0x04,0x03,0x03,0x02,0x01,
+ 0x01,0x02,0x02,0x01,0x02,0x02,0x03,0x03,0x02,0x02,0x03,0x03,0x02,0x01,0x01,
+ 0x01,0x03,0x03,0x03,0x01,0x01,0x03,0x04,0x01,0x00,0x00,0x05,0x08,0x06,0x03,
+ 0x00,0x02,0x03,0x00,0x01,0x03,0x02,0x01,0x01,0x01,0x02,0x03,0x03,0x03,0x03,
+ 0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x07,0x04,0x02,0x00,0x03,
+ 0x07,0x07,0x03,0x00,0x00,0x02,0x04,0x03,0x00,0x03,0x0a,0x0e,0x0a,0x04,0x05,
+ 0x06,0x06,0x0c,0x15,0x16,0x11,0x03,0x00,0x00,0x05,0x07,0x03,0x01,0x00,0x02,
+ 0x04,0x05,0x03,0x01,0x01,0x03,0x06,0x05,0x03,0x01,0x03,0x08,0x05,0x01,0x02,
+ 0x0a,0x19,0x12,0x07,0x03,0x0a,0x17,0x1e,0x1c,0x07,0x05,0x14,0x1d,0x1d,0x09,
+ 0x01,0x03,0x02,0x06,0x16,0x19,0x13,0x22,0x31,0x37,0x23,0x03,0x04,0x1c,0x49,
+ 0x48,0x2c,0x1c,0x14,0x15,0x1e,0x2b,0x3c,0x33,0x0c,0x01,0x05,0x06,0x0c,0x19,
+ 0x19,0x16,0x26,0x23,0x08,0x01,0x02,0x03,0x01,0x01,0x1d,0x3d,0x4f,0x50,0x43,
+ 0x36,0x2f,0x33,0x36,0x35,0x31,0x2d,0x2c,0x1e,0x08,0x0d,0x12,0x0a,0x06,0x07,
+ 0x0f,0x1d,0x2c,0x26,0x13,0x0e,0x0b,0x0b,0x15,0x28,0x40,0x3e,0x12,0x00,0x00,
+ 0x1a,0x2f,0x32,0x1e,0x03,0x04,0x06,0x01,0x01,0x02,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x03,0x07,0x10,0x14,
+ 0x07,0x0e,0x28,0x35,0x3d,0x41,0x4f,0x61,0x57,0x4c,0x50,0x52,0x54,0x5a,0x5e,
+ 0x5c,0x59,0x56,0x58,0x58,0x53,0x55,0x5a,0x58,0x57,0x57,0x5a,0x5e,0x53,0x50,
+ 0x5a,0x57,0x4e,0x4b,0x49,0x48,0x36,0x20,0x1d,0x19,0x10,0x07,0x00,0x00,0x00,
+ 0x04,0x04,0x03,0x05,0x06,0x05,0x04,0x03,0x01,0x00,0x00,0x00,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x03,0x03,0x01,
+ 0x01,0x02,0x04,0x03,0x01,0x06,0x07,0x04,0x02,0x01,0x03,0x04,0x03,0x03,0x03,
+ 0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x03,0x03,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x02,0x03,0x04,0x05,0x05,0x04,0x03,0x05,0x04,0x00,0x00,0x00,0x02,0x03,
+ 0x03,0x03,0x03,0x07,0x09,0x08,0x07,0x05,0x04,0x04,0x03,0x03,0x03,0x03,0x03,
+ 0x03,0x02,0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x00,0x03,0x05,0x06,0x03,0x01,
+ 0x00,0x02,0x04,0x04,0x04,0x05,0x02,0x01,0x07,0x07,0x01,0x03,0x03,0x00,0x00,
+ 0x01,0x04,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x03,0x0b,0x0d,0x03,0x01,
+ 0x02,0x05,0x06,0x03,0x02,0x01,0x02,0x03,0x05,0x07,0x06,0x01,0x00,0x02,0x04,
+ 0x06,0x03,0x01,0x00,0x01,0x03,0x06,0x04,0x00,0x00,0x01,0x01,0x03,0x07,0x05,
+ 0x03,0x03,0x04,0x04,0x01,0x00,0x07,0x07,0x04,0x0b,0x13,0x16,0x0e,0x01,0x06,
+ 0x09,0x04,0x05,0x07,0x03,0x01,0x04,0x03,0x02,0x0b,0x0e,0x05,0x05,0x07,0x03,
+ 0x01,0x02,0x01,0x02,0x0b,0x0e,0x08,0x03,0x00,0x02,0x03,0x04,0x0b,0x12,0x12,
+ 0x0e,0x08,0x07,0x07,0x07,0x07,0x08,0x08,0x07,0x06,0x0a,0x12,0x18,0x19,0x10,
+ 0x0a,0x07,0x02,0x03,0x14,0x15,0x0b,0x0c,0x0f,0x15,0x11,0x07,0x04,0x03,0x04,
+ 0x07,0x09,0x07,0x07,0x08,0x07,0x05,0x04,0x03,0x00,0x01,0x03,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x15,0x24,0x1a,0x10,0x09,0x06,0x07,0x07,0x27,0x57,0x4b,0x36,0x35,0x3c,0x49,
+ 0x5b,0x65,0x5e,0x57,0x50,0x56,0x56,0x45,0x48,0x54,0x59,0x59,0x56,0x57,0x57,
+ 0x3f,0x32,0x3c,0x33,0x23,0x19,0x15,0x12,0x0a,0x01,0x02,0x03,0x06,0x07,0x07,
+ 0x03,0x03,0x05,0x06,0x05,0x06,0x06,0x05,0x04,0x03,0x01,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x04,
+ 0x03,0x00,0x01,0x02,0x03,0x02,0x00,0x04,0x06,0x02,0x01,0x01,0x00,0x01,0x03,
+ 0x03,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x02,0x03,0x04,0x04,0x03,0x03,0x03,0x02,0x01,0x02,0x03,
+ 0x03,0x03,0x01,0x01,0x03,0x05,0x04,0x03,0x03,0x05,0x04,0x04,0x03,0x04,0x04,
+ 0x04,0x03,0x03,0x02,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x03,0x03,0x02,
+ 0x01,0x01,0x02,0x03,0x04,0x01,0x00,0x03,0x03,0x03,0x05,0x04,0x03,0x02,0x01,
+ 0x01,0x03,0x04,0x04,0x03,0x04,0x03,0x01,0x00,0x00,0x04,0x03,0x00,0x04,0x06,
+ 0x02,0x02,0x03,0x05,0x04,0x00,0x00,0x02,0x02,0x02,0x01,0x03,0x04,0x03,0x00,
+ 0x00,0x02,0x06,0x07,0x04,0x00,0x02,0x06,0x04,0x03,0x00,0x00,0x00,0x03,0x04,
+ 0x03,0x01,0x01,0x03,0x05,0x05,0x03,0x01,0x01,0x01,0x00,0x03,0x07,0x08,0x07,
+ 0x03,0x03,0x03,0x02,0x02,0x03,0x02,0x02,0x03,0x05,0x05,0x04,0x03,0x00,0x03,
+ 0x07,0x07,0x06,0x01,0x03,0x05,0x04,0x03,0x02,0x01,0x01,0x02,0x03,0x03,0x03,
+ 0x03,0x04,0x04,0x04,0x03,0x04,0x08,0x06,0x00,0x03,0x06,0x03,0x05,0x09,0x09,
+ 0x08,0x07,0x06,0x04,0x03,0x06,0x0c,0x0c,0x09,0x0a,0x0d,0x11,0x0e,0x06,0x01,
+ 0x00,0x06,0x08,0x07,0x02,0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x03,
+ 0x03,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,
+ 0x03,0x01,0x09,0x12,0x16,0x15,0x0e,0x06,0x01,0x00,0x0c,0x1d,0x1a,0x12,0x0e,
+ 0x15,0x21,0x2b,0x2e,0x29,0x27,0x26,0x2a,0x29,0x1e,0x24,0x34,0x3e,0x41,0x3a,
+ 0x30,0x26,0x19,0x13,0x18,0x12,0x08,0x07,0x07,0x03,0x05,0x08,0x03,0x01,0x03,
+ 0x03,0x04,0x04,0x03,0x01,0x03,0x04,0x03,0x03,0x03,0x03,0x03,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0x01,
+ 0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,
+ 0x03,0x03,0x03,0x02,0x02,0x02,0x02,0x00,0x00,0x03,0x03,0x00,0x00,0x01,0x00,
+ 0x01,0x02,0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x03,0x02,0x01,0x01,0x01,0x01,
+ 0x03,0x05,0x03,0x01,0x00,0x00,0x03,0x03,0x01,0x00,0x01,0x03,0x03,0x03,0x03,
+ 0x03,0x03,0x03,0x03,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x04,0x04,0x03,
+ 0x01,0x00,0x00,0x02,0x03,0x03,0x03,0x02,0x01,0x00,0x03,0x04,0x03,0x02,0x02,
+ 0x00,0x00,0x03,0x05,0x05,0x03,0x02,0x05,0x04,0x02,0x02,0x03,0x06,0x04,0x00,
+ 0x00,0x00,0x00,0x02,0x03,0x04,0x03,0x01,0x01,0x03,0x03,0x01,0x00,0x01,0x03,
+ 0x03,0x03,0x02,0x02,0x03,0x07,0x06,0x02,0x03,0x06,0x03,0x02,0x03,0x02,0x02,
+ 0x03,0x03,0x01,0x01,0x02,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x01,
+ 0x03,0x04,0x05,0x03,0x02,0x04,0x04,0x03,0x04,0x05,0x04,0x06,0x07,0x03,0x00,
+ 0x00,0x02,0x06,0x08,0x07,0x03,0x05,0x09,0x03,0x00,0x00,0x00,0x01,0x01,0x03,
+ 0x04,0x02,0x00,0x00,0x03,0x05,0x05,0x06,0x09,0x07,0x00,0x03,0x07,0x04,0x03,
+ 0x03,0x01,0x00,0x03,0x03,0x02,0x05,0x08,0x08,0x07,0x06,0x06,0x07,0x09,0x08,
+ 0x06,0x03,0x03,0x06,0x07,0x05,0x01,0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,
+ 0x00,0x03,0x04,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x04,0x04,0x02,0x02,0x05,0x0e,0x11,0x0e,0x07,0x01,0x02,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x07,0x08,0x07,0x07,0x07,0x08,0x0b,0x0b,0x06,0x0b,0x18,0x20,
+ 0x24,0x1e,0x12,0x06,0x02,0x02,0x03,0x01,0x00,0x02,0x03,0x00,0x05,0x0b,0x06,
+ 0x01,0x01,0x01,0x02,0x04,0x04,0x00,0x02,0x03,0x02,0x01,0x02,0x03,0x03,0x02,
+ 0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x02,0x03,0x05,0x03,0x02,0x00,0x00,0x00,0x03,0x03,0x00,0x00,
+ 0x03,0x04,0x03,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x02,0x02,0x01,0x01,
+ 0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x02,
+ 0x02,0x00,0x01,0x03,0x02,0x01,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x01,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x02,0x03,0x03,0x03,0x08,0x07,0x00,0x00,0x01,0x03,
+ 0x02,0x00,0x00,0x00,0x03,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x04,0x07,0x03,
+ 0x03,0x04,0x01,0x00,0x00,0x01,0x02,0x03,0x05,0x05,0x04,0x03,0x03,0x03,0x03,
+ 0x03,0x03,0x02,0x05,0x0a,0x06,0x00,0x01,0x03,0x03,0x02,0x00,0x00,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x02,0x03,0x01,0x01,0x03,
+ 0x00,0x00,0x03,0x05,0x05,0x03,0x02,0x01,0x02,0x03,0x06,0x05,0x01,0x00,0x00,
+ 0x03,0x03,0x03,0x03,0x04,0x03,0x01,0x01,0x05,0x09,0x04,0x02,0x03,0x02,0x02,
+ 0x00,0x02,0x07,0x05,0x03,0x00,0x00,0x02,0x03,0x03,0x01,0x00,0x02,0x03,0x04,
+ 0x02,0x01,0x01,0x05,0x07,0x06,0x03,0x00,0x03,0x05,0x05,0x03,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x04,0x03,0x01,0x00,0x03,0x06,0x06,0x04,
+ 0x01,0x03,0x04,0x02,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x02,0x00,0x03,0x05,0x02,0x02,0x03,0x01,0x00,0x03,0x06,
+ 0x06,0x03,0x03,0x08,0x08,0x03,0x01,0x02,0x07,0x06,0x01,0x05,0x07,0x06,0x06,
+ 0x07,0x07,0x07,0x0a,0x07,0x02,0x02,0x03,0x03,0x03,0x05,0x06,0x04,0x02,0x03,
+ 0x03,0x02,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x04,0x05,0x02,0x00,0x02,0x02,
+ 0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x02,0x01,0x00,0x00,0x01,0x02,0x02,
+ 0x00,0x01,0x02,0x03,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x02,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,
+ 0x02,0x03,0x02,0x00,0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x02,0x03,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x02,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x02,0x05,0x04,0x00,0x00,
+ 0x00,0x02,0x03,0x02,0x01,0x00,0x01,0x01,0x01,0x02,0x01,0x00,0x00,0x02,0x03,
+ 0x03,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x03,0x02,0x01,
+ 0x02,0x03,0x02,0x01,0x01,0x03,0x07,0x05,0x02,0x01,0x02,0x02,0x01,0x00,0x02,
+ 0x03,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x02,0x01,0x00,0x02,0x03,0x01,
+ 0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x03,0x02,0x03,0x03,0x03,0x03,0x03,0x01,
+ 0x00,0x01,0x03,0x04,0x03,0x03,0x01,0x01,0x02,0x03,0x03,0x04,0x03,0x02,0x02,
+ 0x02,0x02,0x00,0x00,0x03,0x05,0x06,0x03,0x02,0x03,0x02,0x01,0x01,0x01,0x03,
+ 0x04,0x04,0x02,0x00,0x01,0x03,0x05,0x05,0x03,0x00,0x03,0x04,0x02,0x02,0x02,
+ 0x01,0x00,0x00,0x01,0x04,0x04,0x03,0x02,0x01,0x01,0x04,0x05,0x00,0x02,0x05,
+ 0x03,0x02,0x00,0x03,0x04,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x02,0x03,0x01,0x00,0x01,0x02,0x03,
+ 0x03,0x03,0x03,0x03,0x04,0x06,0x04,0x01,0x00,0x01,0x05,0x04,0x00,0x02,0x04,
+ 0x06,0x05,0x02,0x00,0x00,0x01,0x02,0x03,0x03,0x03,0x04,0x04,0x03,0x02,0x03,
+ 0x06,0x03,0x00,0x02,0x03,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
+ 0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,
+ 0x03,0x03,0x03,0x03,0x01,0x00,0x00,0x01,0x02,0x02,0x03,0x03,0x02,0x00,0x00,
+ 0x00,0x01,0x03,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
+ 0x03,0x03,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x02,0x03,0x04,0x03,0x01,0x00,0x01,0x04,0x03,0x02,0x00,0x02,
+ 0x05,0x02,0x00,0x00,0x00,0x00,0x02,0x03,0x03,0x02,0x01,0x00,0x00,0x01,0x00,
+ 0x00,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x02,0x05,0x03,0x02,0x00,0x00,
+ 0x01,0x03,0x04,0x03,0x03,0x02,0x01,0x02,0x03,0x02,0x01,0x03,0x03,0x03,0x02,
+ 0x02,0x01,0x00,0x00,0x03,0x05,0x02,0x01,0x03,0x01,0x01,0x03,0x03,0x02,0x00,
+ 0x00,0x01,0x03,0x04,0x04,0x04,0x03,0x02,0x00,0x02,0x04,0x04,0x03,0x00,0x01,
+ 0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x04,0x07,0x05,0x04,0x04,0x02,0x00,0x03,
+ 0x03,0x02,0x03,0x05,0x02,0x01,0x02,0x00,0x00,0x03,0x03,0x01,0x03,0x03,0x00,
+ 0x01,0x05,0x04,0x03,0x02,0x04,0x08,0x06,0x03,0x03,0x01,0x00,0x06,0x08,0x02,
+ 0x00,0x02,0x00,0x00,0x00,0x02,0x03,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02,0x04,0x04,0x03,
+ 0x04,0x05,0x01,0x00,0x00,0x03,0x04,0x00,0x00,0x03,0x03,0x03,0x04,0x04,0x03,
+ 0x02,0x03,0x07,0x06,0x03,0x03,0x03,0x00,0x02,0x07,0x04,0x03,0x07,0x04,0x00,
+ 0x00,0x01,0x08,0x06,0x00,0x03,0x05,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x04,0x01,0x00,0x00,
+ 0x01,0x03,0x02,0x01,0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x01,0x01,0x01,0x02,0x03,0x03,0x02,0x01,0x00,0x00,0x02,0x03,0x03,
+ 0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x02,0x02,0x00,0x01,0x03,0x03,0x02,0x01,0x00,0x01,0x02,0x03,0x03,0x01,0x00,
+ 0x02,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x02,0x03,0x03,0x02,0x01,0x01,
+ 0x02,0x03,0x03,0x00,0x00,0x02,0x04,0x06,0x03,0x00,0x00,0x02,0x04,0x01,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x02,0x03,0x01,0x02,0x03,0x01,0x00,
+ 0x00,0x01,0x03,0x01,0x02,0x05,0x03,0x00,0x02,0x03,0x02,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x00,0x01,0x01,0x01,0x02,0x03,0x00,0x00,0x00,0x01,0x01,0x00,0x03,
+ 0x06,0x03,0x00,0x01,0x02,0x03,0x03,0x03,0x03,0x03,0x05,0x03,0x02,0x03,0x01,
+ 0x00,0x03,0x04,0x00,0x01,0x04,0x03,0x02,0x00,0x03,0x05,0x02,0x01,0x03,0x03,
+ 0x03,0x02,0x01,0x00,0x00,0x01,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
+ 0x02,0x03,0x03,0x04,0x04,0x03,0x00,0x00,0x02,0x03,0x03,0x03,0x03,0x03,0x04,
+ 0x03,0x00,0x01,0x03,0x03,0x03,0x04,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x02,0x03,
+ 0x04,0x03,0x02,0x02,0x03,0x03,0x02,0x02,0x03,0x07,0x07,0x03,0x02,0x00,0x02,
+ 0x03,0x03,0x02,0x00,0x01,0x03,0x03,0x02,0x01,0x03,0x03,0x03,0x00,0x00,0x03,
+ 0x06,0x07,0x03,0x00,0x02,0x02,0x01,0x02,0x02,0x03,0x01,0x00,0x02,0x03,0x02,
+ 0x03,0x05,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x05,0x02,
+ 0x00,0x03,0x03,0x02,0x02,0x01,0x00,0x00,0x01,0x03,0x03,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x01,0x00,0x00,0x02,
+ 0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x02,0x02,0x00,0x02,0x03,0x03,0x01,0x00,0x00,0x01,0x02,0x03,0x03,
+ 0x01,0x00,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,
+ 0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x03,0x06,0x06,0x03,0x00,0x00,0x02,0x04,
+ 0x03,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x02,0x03,0x02,0x02,0x01,
+ 0x00,0x00,0x00,0x01,0x03,0x01,0x01,0x04,0x03,0x01,0x02,0x02,0x00,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x00,0x01,0x00,0x00,0x01,0x01,
+ 0x00,0x02,0x07,0x03,0x00,0x01,0x02,0x03,0x02,0x01,0x01,0x03,0x06,0x03,0x02,
+ 0x03,0x02,0x02,0x04,0x04,0x00,0x02,0x04,0x03,0x03,0x01,0x02,0x03,0x00,0x00,
+ 0x02,0x03,0x04,0x01,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x04,0x03,0x03,0x03,
+ 0x03,0x02,0x01,0x04,0x04,0x03,0x03,0x02,0x00,0x00,0x00,0x02,0x03,0x03,0x03,
+ 0x04,0x03,0x01,0x01,0x02,0x03,0x03,0x03,0x04,0x03,0x00,0x01,0x01,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x01,
+ 0x01,0x03,0x03,0x02,0x00,0x00,0x03,0x04,0x03,0x01,0x02,0x07,0x07,0x03,0x00,
+ 0x00,0x00,0x02,0x03,0x01,0x00,0x00,0x02,0x03,0x01,0x00,0x03,0x03,0x00,0x00,
+ 0x01,0x00,0x04,0x09,0x04,0x00,0x00,0x00,0x02,0x01,0x00,0x02,0x01,0x00,0x02,
+ 0x03,0x03,0x04,0x05,0x02,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,
+ 0x02,0x00,0x02,0x06,0x04,0x00,0x01,0x01,0x02,0x03,0x03,0x01,0x01,0x02,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x00,0x00,0x03,0x03,0x01,0x03,
+ 0x03,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x01,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x01,0x02,0x04,0x03,0x03,0x00,0x00,0x00,0x02,0x03,0x03,
+ 0x02,0x00,0x01,0x01,0x00,0x01,0x03,0x03,0x02,0x00,0x00,0x02,0x02,0x01,0x00,
+ 0x01,0x03,0x01,0x00,0x00,0x01,0x02,0x00,0x00,0x02,0x02,0x00,0x02,0x03,0x02,
+ 0x01,0x02,0x03,0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x00,0x00,0x02,0x02,0x00,0x00,0x02,0x04,0x03,0x00,0x01,0x03,0x00,0x00,0x00,
+ 0x03,0x05,0x02,0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x03,0x03,0x00,
+ 0x02,0x03,0x01,0x01,0x02,0x00,0x00,0x00,0x03,0x06,0x03,0x00,0x00,0x00,0x02,
+ 0x03,0x03,0x02,0x04,0x07,0x03,0x00,0x01,0x03,0x03,0x02,0x00,0x00,0x01,0x03,
+ 0x03,0x01,0x00,0x00,0x00,0x00,0x02,0x03,0x03,0x03,0x00,0x02,0x05,0x03,0x00,
+ 0x01,0x02,0x03,0x02,0x02,0x03,0x03,0x02,0x01,0x01,0x01,0x02,0x03,0x03,0x03,
+ 0x01,0x01,0x02,0x00,0x00,0x03,0x02,0x00,0x00,0x00,0x00,0x02,0x05,0x02,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
+ 0x05,0x02,0x00,0x01,0x02,0x00,0x00,0x01,0x02,0x02,0x00,0x02,0x03,0x02,0x01,
+ 0x00,0x01,0x02,0x00,0x02,0x04,0x02,0x00,0x04,0x04,0x03,0x03,0x03,0x01,0x00,
+ 0x01,0x05,0x07,0x01,0x00,0x00,0x02,0x02,0x00,0x01,0x02,0x01,0x01,0x01,0x02,
+ 0x02,0x01,0x01,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,
+ 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x04,0x03,0x00,0x00,0x01,0x01,0x02,0x02,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x00,0x02,0x02,
+ 0x01,0x02,0x03,0x03,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x01,
+ 0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x01,0x00,0x00,0x02,0x02,
+ 0x01,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,
+ 0x02,0x01,0x01,0x00,0x02,0x03,0x02,0x02,0x01,0x01,0x00,0x01,0x01,0x01,0x00,
+ 0x00,0x01,0x00,0x00,0x02,0x02,0x00,0x01,0x02,0x03,0x03,0x00,0x01,0x03,0x00,
+ 0x00,0x00,0x03,0x04,0x02,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x00,0x01,0x03,
+ 0x02,0x01,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x00,0x00,
+ 0x00,0x01,0x03,0x03,0x02,0x03,0x04,0x01,0x00,0x03,0x03,0x03,0x02,0x01,0x00,
+ 0x02,0x03,0x03,0x02,0x00,0x00,0x00,0x01,0x02,0x03,0x03,0x03,0x01,0x01,0x03,
+ 0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,
+ 0x03,0x03,0x01,0x01,0x01,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x03,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x02,0x03,0x02,0x00,0x01,0x01,0x00,0x01,0x02,0x02,0x02,0x01,0x02,0x03,
+ 0x01,0x00,0x00,0x01,0x02,0x01,0x02,0x03,0x02,0x01,0x04,0x03,0x03,0x03,0x03,
+ 0x01,0x00,0x01,0x03,0x04,0x01,0x00,0x00,0x01,0x02,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
+ 0x02,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x01,
+ 0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,
+ 0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x02,
+ 0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x02,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x02,0x02,0x02,0x02,
+ 0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x02,
+ 0x02,0x02,0x02,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,
+ 0x02,0x02,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x01,0x01,0x01,0x02,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,
+ 0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02,
+ 0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x02,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x01,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x03,0x02,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x02,0x02,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,
+ 0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,0x03,
+ 0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x03,
+ 0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x00,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x02,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x03,
+ 0x03,0x02,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x01,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
+ 0x01,0x02,0x02,0x01,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,
+ 0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x02,
+ 0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x01,0x01,
+ 0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x01,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,
+ 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,
+ 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x01,
+ 0x01,0x01,0x00,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+ 0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+ 0xc8,0xc8,0xc8,0xc8
+};
+
diff --git a/vendor/x11iraf/ximtool/logo/NOTES b/vendor/x11iraf/ximtool/logo/NOTES
new file mode 100644
index 00000000..59dcbaef
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo/NOTES
@@ -0,0 +1,17 @@
+
+To make a new logo:
+
+ 1) Create the logo image by some means. Size should be no larger
+ than 512x512
+ 2) Convert the image to FITS, scale it so pixel values are 0-200
+ 3) Export to a raw 'logo.bin' file using the IRAF command:
+
+ cl> export logo.fits[*,-*] logo.bin raw outtype='b1' header-
+
+ We flip the image in Y due to the difference in location of the
+ origin.
+ 4) Convert the binary logo.bin file to the header:
+
+ % mkhdr logo.bin > ../logo.h
+
+ 5) Recompile the XImtool sources.
diff --git a/vendor/x11iraf/ximtool/logo/logo.bin.gz b/vendor/x11iraf/ximtool/logo/logo.bin.gz
new file mode 100644
index 00000000..ded144e2
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo/logo.bin.gz
Binary files differ
diff --git a/vendor/x11iraf/ximtool/logo/logo.fits b/vendor/x11iraf/ximtool/logo/logo.fits
new file mode 100644
index 00000000..0ff7df28
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo/logo.fits
Binary files differ
diff --git a/vendor/x11iraf/ximtool/logo/logo.fits.gz b/vendor/x11iraf/ximtool/logo/logo.fits.gz
new file mode 100644
index 00000000..1837dcdb
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo/logo.fits.gz
Binary files differ
diff --git a/vendor/x11iraf/ximtool/logo/mkhdr.c b/vendor/x11iraf/ximtool/logo/mkhdr.c
new file mode 100644
index 00000000..240a774b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/logo/mkhdr.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+
+#define NBYTES 262144 /* 512 x 512 bytes */
+
+unsigned char buf[NBYTES];
+
+main (int argc, char **argv)
+{
+ int i, fd, sz;
+
+ fd = open (argv[1], O_RDONLY, 0644);
+ sz = read (fd, buf, NBYTES);
+ close (fd);
+
+ printf ("#define LOGO_XDIM\t\t512\n");
+ printf ("#define LOGO_YDIM\t\t512\n");
+ printf ("#define LOGO_NCOLORS\t\t200\n");
+ printf ("#define LOGO_NBYTES\t\t262144\n");
+ printf ("\n");
+ printf ("unsigned char logo_data[] = {");
+ for (i=0; i < NBYTES; i++) {
+ if ((i % 15) == 0)
+ printf ("\n ");
+ printf ("0x%02x%s", (unsigned char)buf[i],(i==(NBYTES-1) ? "\n" : ","));
+ }
+ printf ("};\n\n");
+}
+
+
diff --git a/vendor/x11iraf/ximtool/luts/README b/vendor/x11iraf/ximtool/luts/README
new file mode 100644
index 00000000..27a95ac6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/README
@@ -0,0 +1,37 @@
+This directory contains a collection of lookup tables compiled from various
+sources. The origin of most of these was Klaus Banse of the MIDAS project.
+The ultimate source of many of the tables is unknown.
+
+To have the colortables in this directory loaded automatically by Ximtool
+install them in the directory
+
+ /usr/local/lib/imtoolcmap/
+
+Or, to load colortables from a custom directory set the cmapDir1 or cmapDir2
+ximtool resource to the pathname of the directory containing the tables.
+
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green,
+and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+
+ R G B
+ R G B
+ (etc.)
+
+Blank lines and comment lines (# ...) are ignored.
+
+Usually 256 rows are provided, but the number may actually be anything
+in the range 1 to 256. Ximtool will interpolate the table as necessary
+to compute the colortable values used in Ximtool. Ximtool uses only
+201 colors to render pixel data, so it is usually necessary to interpolate
+the table when it is loaded.
+
+Tables are loaded into Ximtool by setting one of the user colormap directory
+resources. When Ximtool starts up it will read all the files in the
+colormap directory, disregarding any files that are unreadable or that do
+not appear to be colortables. The name of the colortable as it will appear
+in the Ximtool control panel is the root name of the file, e.g., if the
+file is "rainbow.lut" the colortable name will be "rainbow". Lower case
+names are suggested to avoid name collisions with the builtin colortables.
+If the same colortable file appears in multiple user colortable directories,
+the first one will be used.
diff --git a/vendor/x11iraf/ximtool/luts/alex.lut b/vendor/x11iraf/ximtool/luts/alex.lut
new file mode 100644
index 00000000..c5a25a96
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/alex.lut
@@ -0,0 +1,256 @@
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 1.00000 0.00000
+0.98039 1.00000 0.00000
+0.96078 0.97647 0.00000
+0.94510 0.93725 0.00000
+0.92549 0.89804 0.00000
+0.90980 0.85882 0.00000
+0.89412 0.81961 0.00000
+0.87451 0.78039 0.00000
+0.85882 0.74118 0.00000
+0.83922 0.70196 0.00000
+0.82353 0.66275 0.00000
+0.80392 0.62353 0.00000
+0.78824 0.58431 0.00000
+0.76863 0.54510 0.00000
+0.75686 0.50980 0.00000
+0.74118 0.46667 0.00000
+0.72549 0.43137 0.00000
+0.70980 0.39216 0.00000
+0.69412 0.35294 0.00000
+0.68235 0.31765 0.00000
+0.66275 0.27451 0.00000
+0.65098 0.23922 0.00000
+0.63529 0.20000 0.00000
+0.62745 0.16863 0.00000
+0.61569 0.12941 0.00000
+0.60784 0.09804 0.00000
+0.61961 0.08235 0.00000
+0.62745 0.06275 0.00000
+0.63922 0.04706 0.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.80000 0.00784 0.00784
+0.80784 0.02745 0.02745
+0.81961 0.05098 0.05098
+0.82745 0.08235 0.08235
+0.83922 0.11373 0.11373
+0.84706 0.14902 0.14902
+0.85882 0.19216 0.19216
+0.86667 0.23137 0.23137
+0.87843 0.27843 0.27843
+0.88627 0.32549 0.32549
+0.89804 0.37647 0.37647
+0.90980 0.43137 0.43137
+0.91765 0.48627 0.48627
+0.92941 0.54118 0.54118
+0.93725 0.60000 0.60000
+0.94902 0.66275 0.66275
+0.95686 0.72549 0.72549
+0.96863 0.79216 0.79216
+0.97647 0.85882 0.85882
+0.98824 0.92941 0.92941
+1.00000 1.00000 1.00000
+0.00000 0.00000 0.16471
+0.02745 0.00000 0.18431
+0.05882 0.00000 0.20000
+0.08627 0.00000 0.21961
+0.11373 0.00000 0.23922
+0.14510 0.00000 0.25882
+0.17647 0.00000 0.27843
+0.20392 0.00000 0.29804
+0.23137 0.00000 0.31765
+0.26275 0.00000 0.33725
+0.29412 0.00000 0.35686
+0.32157 0.00000 0.37647
+0.35294 0.00000 0.39608
+0.38039 0.00000 0.41569
+0.41176 0.00000 0.43529
+0.43922 0.00000 0.45490
+0.47059 0.00000 0.47451
+0.49804 0.00000 0.49412
+0.52941 0.00000 0.51373
+0.55686 0.00000 0.53725
+0.58824 0.00000 0.55686
+0.55686 0.00000 0.57647
+0.52941 0.00000 0.59608
+0.49804 0.00000 0.61569
+0.47059 0.00000 0.63922
+0.43922 0.00000 0.65882
+0.41176 0.00000 0.67843
+0.38039 0.00000 0.70196
+0.35294 0.00000 0.72157
+0.32157 0.00000 0.74118
+0.29412 0.00000 0.76471
+0.26275 0.00000 0.78431
+0.23137 0.00000 0.80392
+0.20392 0.00000 0.82745
+0.17647 0.00000 0.84706
+0.14510 0.00000 0.87059
+0.11373 0.00000 0.89020
+0.08627 0.00000 0.91373
+0.05882 0.00000 0.93333
+0.02745 0.00000 0.95686
+0.00000 0.00000 0.97647
+0.00000 0.00000 1.00000
+0.00000 0.02353 0.97647
+0.00000 0.04706 0.95686
+0.00000 0.06275 0.93333
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+0.00000 0.21176 0.72157
+0.00000 0.22353 0.70196
+0.00000 0.23529 0.67843
+0.00000 0.25098 0.65882
+0.00000 0.26275 0.63922
+0.00000 0.27451 0.61569
+0.00000 0.28627 0.59608
+0.00000 0.29804 0.57647
+0.00000 0.30980 0.55686
+0.00000 0.32157 0.53725
+0.00000 0.33333 0.51373
+0.00000 0.34510 0.49412
+0.00000 0.35686 0.47451
+0.00000 0.36863 0.45490
+0.00000 0.38039 0.43529
+0.00000 0.39216 0.41569
+0.00000 0.40392 0.39608
+0.00000 0.41176 0.37647
+0.00000 0.42353 0.35686
+0.00000 0.43529 0.33725
+0.00000 0.44706 0.31765
+0.00000 0.45882 0.29804
+0.00000 0.46667 0.27843
+0.00000 0.47843 0.25882
+0.00000 0.49020 0.23922
+0.00000 0.49804 0.21961
+0.00000 0.50980 0.20000
+0.00000 0.52157 0.18431
+0.00000 0.52941 0.16471
+0.00000 0.54118 0.14510
+0.00000 0.55294 0.12941
+0.00000 0.56078 0.10980
+0.00000 0.57255 0.09412
+0.00000 0.58431 0.07451
+0.00000 0.59216 0.05882
+0.00000 0.60392 0.04314
+0.00000 0.61176 0.02745
+0.00000 0.62353 0.01176
+0.00000 0.63137 0.00000
+0.00000 0.64314 0.00000
+0.00000 0.65098 0.00000
+0.00000 0.66275 0.00000
+0.00000 0.67059 0.00000
+0.00000 0.68235 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.70196 0.00000
+0.00000 0.70980 0.00000
+0.00000 0.72157 0.00000
+0.00000 0.72941 0.00000
+0.00000 0.74118 0.00000
+0.00000 0.74902 0.00000
+0.00000 0.76078 0.00000
+0.00000 0.76863 0.00000
+0.00000 0.77647 0.00000
+0.00000 0.78824 0.00000
+0.00000 0.79608 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.81569 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.83529 0.00000
+0.00000 0.84314 0.00000
+0.00000 0.85490 0.00000
+0.00000 0.86275 0.00000
+0.00000 0.87059 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.89020 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.90980 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.93725 0.00000
+0.00000 0.94510 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.96078 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.98039 0.00000
+0.00000 0.98824 0.00000
+0.00000 1.00000 0.00000
+0.00000 0.98824 0.00000
+0.00000 0.98039 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.96078 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.94510 0.00000
+0.00000 0.93725 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.90980 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89020 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.87059 0.00000
+0.00000 0.86275 0.00000
+0.00000 0.85490 0.00000
+0.00000 0.84314 0.00000
+0.00000 0.83529 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.81569 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.79608 0.00000
+0.00000 0.78824 0.00000
+0.00000 0.77647 0.00000
+0.00784 0.76863 0.00000
+0.03529 0.77647 0.00000
+0.06667 0.78824 0.00000
+0.09804 0.80000 0.00000
+0.12941 0.81176 0.00000
+0.16471 0.82745 0.00000
+0.20000 0.84314 0.00000
+0.23529 0.85882 0.00000
+0.26667 0.87059 0.00000
+0.30588 0.89020 0.00000
+0.34118 0.90196 0.00000
+0.37647 0.92157 0.00000
+0.41176 0.93333 0.00000
+0.44706 0.95294 0.00000
+0.48627 0.96863 0.00000
+0.52157 0.98824 0.00000
+0.56078 1.00000 0.00000
+0.59608 1.00000 0.00000
+0.63529 1.00000 0.00000
+0.67059 1.00000 0.00000
+0.70980 1.00000 0.00000
+0.74902 1.00000 0.00000
+0.78431 1.00000 0.00000
+0.82353 1.00000 0.00000
+0.85882 1.00000 0.00000
+0.89804 1.00000 0.00000
+0.93333 1.00000 0.00000
+0.97647 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/backgr.lut b/vendor/x11iraf/ximtool/luts/backgr.lut
new file mode 100644
index 00000000..515ce439
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/backgr.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.01587 0.01587 0.01587
+0.03174 0.03174 0.03174
+0.04761 0.04761 0.04761
+0.06348 0.06348 0.06348
+0.07935 0.07935 0.07935
+0.09522 0.09522 0.09522
+0.11109 0.11109 0.11109
+0.12696 0.12696 0.12696
+0.14283 0.14283 0.14283
+0.15870 0.15870 0.15870
+0.17457 0.17457 0.17457
+0.19044 0.19044 0.19044
+0.20631 0.20631 0.20631
+0.22218 0.22218 0.22218
+0.23805 0.23805 0.23805
+0.25392 0.25392 0.25392
+0.26979 0.26979 0.26979
+0.28566 0.28566 0.28566
+0.30153 0.30153 0.30153
+0.31740 0.31740 0.31740
+0.33327 0.33327 0.33327
+0.34914 0.34914 0.34914
+0.36501 0.36501 0.36501
+0.38088 0.38088 0.38088
+0.39675 0.39675 0.39675
+0.41262 0.41262 0.41262
+0.42849 0.42849 0.42849
+0.44436 0.44436 0.44436
+0.46023 0.46023 0.46023
+0.47610 0.47610 0.47610
+0.49197 0.49197 0.49197
+0.50784 0.50784 0.50784
+0.52371 0.52371 0.52371
+0.53958 0.53958 0.53958
+0.55545 0.55545 0.55545
+0.57132 0.57132 0.57132
+0.58719 0.58719 0.58719
+0.60306 0.60306 0.60306
+0.61893 0.61893 0.61893
+0.63480 0.63480 0.63480
+0.65067 0.65067 0.65067
+0.66654 0.66654 0.66654
+0.68241 0.68241 0.68241
+0.69828 0.69828 0.69828
+0.71415 0.71415 0.71415
+0.73002 0.73002 0.73002
+0.74589 0.74589 0.74589
+0.76176 0.76176 0.76176
+0.77763 0.77763 0.77763
+0.79350 0.79350 0.79350
+0.80937 0.80937 0.80937
+0.82524 0.82524 0.82524
+0.84111 0.84111 0.84111
+0.85698 0.85698 0.85698
+0.87285 0.87285 0.87285
+0.88872 0.88872 0.88872
+0.90459 0.90459 0.90459
+0.92046 0.92046 0.92046
+0.93633 0.93633 0.93633
+0.95220 0.95220 0.95220
+0.96807 0.96807 0.96807
+0.98394 0.98394 0.98394
+0.99981 0.99981 0.99981
+0.00000 0.00000 0.99981
+0.00000 0.01587 0.98394
+0.00000 0.03174 0.96807
+0.00000 0.04761 0.95220
+0.00000 0.06348 0.93633
+0.00000 0.07935 0.92046
+0.00000 0.09522 0.90459
+0.00000 0.11109 0.88872
+0.00000 0.12696 0.87285
+0.00000 0.14283 0.85698
+0.00000 0.15870 0.84111
+0.00000 0.17457 0.82524
+0.00000 0.19044 0.80937
+0.00000 0.20631 0.79350
+0.00000 0.22218 0.77763
+0.00000 0.23805 0.76176
+0.00000 0.25392 0.74589
+0.00000 0.26979 0.73002
+0.00000 0.28566 0.71415
+0.00000 0.30153 0.69828
+0.00000 0.31740 0.68241
+0.00000 0.33327 0.66654
+0.00000 0.34914 0.65067
+0.00000 0.36501 0.63480
+0.00000 0.38088 0.61893
+0.00000 0.39675 0.60306
+0.00000 0.41262 0.58719
+0.00000 0.42849 0.57132
+0.00000 0.44436 0.55545
+0.00000 0.46023 0.53958
+0.00000 0.47610 0.52371
+0.00000 0.49197 0.50784
+0.00000 0.50784 0.49197
+0.00000 0.52371 0.47610
+0.00000 0.53958 0.46023
+0.00000 0.55545 0.44436
+0.00000 0.57132 0.42849
+0.00000 0.58719 0.41262
+0.00000 0.60306 0.39675
+0.00000 0.61893 0.38088
+0.00000 0.63480 0.36501
+0.00000 0.65067 0.34914
+0.00000 0.66654 0.33327
+0.00000 0.68241 0.31740
+0.00000 0.69828 0.30153
+0.00000 0.71415 0.28566
+0.00000 0.73002 0.26979
+0.00000 0.74589 0.25392
+0.00000 0.76176 0.23805
+0.00000 0.77763 0.22218
+0.00000 0.79350 0.20631
+0.00000 0.80937 0.19044
+0.00000 0.82524 0.17457
+0.00000 0.84111 0.15870
+0.00000 0.85698 0.14283
+0.00000 0.87285 0.12696
+0.00000 0.88872 0.11109
+0.00000 0.90459 0.09522
+0.00000 0.92046 0.07935
+0.00000 0.93633 0.06348
+0.00000 0.95220 0.04761
+0.00000 0.96807 0.03174
+0.00000 0.98394 0.01587
+0.00000 0.99981 0.00000
+0.00000 1.00000 0.00000
+0.01587 1.00000 0.00000
+0.03174 1.00000 0.00000
+0.04761 1.00000 0.00000
+0.06348 1.00000 0.00000
+0.07935 1.00000 0.00000
+0.09522 1.00000 0.00000
+0.11109 1.00000 0.00000
+0.12696 1.00000 0.00000
+0.14283 1.00000 0.00000
+0.15870 1.00000 0.00000
+0.17457 1.00000 0.00000
+0.19044 1.00000 0.00000
+0.20631 1.00000 0.00000
+0.22218 1.00000 0.00000
+0.23805 1.00000 0.00000
+0.25392 1.00000 0.00000
+0.26979 1.00000 0.00000
+0.28566 1.00000 0.00000
+0.30153 1.00000 0.00000
+0.31740 1.00000 0.00000
+0.33327 1.00000 0.00000
+0.34914 1.00000 0.00000
+0.36501 1.00000 0.00000
+0.38088 1.00000 0.00000
+0.39675 1.00000 0.00000
+0.41262 1.00000 0.00000
+0.42849 1.00000 0.00000
+0.44436 1.00000 0.00000
+0.46023 1.00000 0.00000
+0.47610 1.00000 0.00000
+0.49197 1.00000 0.00000
+0.50784 1.00000 0.00000
+0.52371 1.00000 0.00000
+0.53958 1.00000 0.00000
+0.55545 1.00000 0.00000
+0.57132 1.00000 0.00000
+0.58719 1.00000 0.00000
+0.60306 1.00000 0.00000
+0.61893 1.00000 0.00000
+0.63480 1.00000 0.00000
+0.65067 1.00000 0.00000
+0.66654 1.00000 0.00000
+0.68241 1.00000 0.00000
+0.69828 1.00000 0.00000
+0.71415 1.00000 0.00000
+0.73002 1.00000 0.00000
+0.74589 1.00000 0.00000
+0.76176 1.00000 0.00000
+0.77763 1.00000 0.00000
+0.79350 1.00000 0.00000
+0.80937 1.00000 0.00000
+0.82524 1.00000 0.00000
+0.84111 1.00000 0.00000
+0.85698 1.00000 0.00000
+0.87285 1.00000 0.00000
+0.88872 1.00000 0.00000
+0.90459 1.00000 0.00000
+0.92046 1.00000 0.00000
+0.93633 1.00000 0.00000
+0.95220 1.00000 0.00000
+0.96807 1.00000 0.00000
+0.98394 1.00000 0.00000
+0.99981 1.00000 0.00000
+1.00000 0.99981 0.00000
+1.00000 0.98394 0.00000
+1.00000 0.96807 0.00000
+1.00000 0.95220 0.00000
+1.00000 0.93633 0.00000
+1.00000 0.92046 0.00000
+1.00000 0.90459 0.00000
+1.00000 0.88872 0.00000
+1.00000 0.87285 0.00000
+1.00000 0.85698 0.00000
+1.00000 0.84111 0.00000
+1.00000 0.82524 0.00000
+1.00000 0.80937 0.00000
+1.00000 0.79350 0.00000
+1.00000 0.77763 0.00000
+1.00000 0.76176 0.00000
+1.00000 0.74589 0.00000
+1.00000 0.73002 0.00000
+1.00000 0.71415 0.00000
+1.00000 0.69828 0.00000
+1.00000 0.68241 0.00000
+1.00000 0.66654 0.00000
+1.00000 0.65067 0.00000
+1.00000 0.63480 0.00000
+1.00000 0.61893 0.00000
+1.00000 0.60306 0.00000
+1.00000 0.58719 0.00000
+1.00000 0.57132 0.00000
+1.00000 0.55545 0.00000
+1.00000 0.53958 0.00000
+1.00000 0.52371 0.00000
+1.00000 0.50784 0.00000
+1.00000 0.49197 0.00000
+1.00000 0.47610 0.00000
+1.00000 0.46023 0.00000
+1.00000 0.44436 0.00000
+1.00000 0.42849 0.00000
+1.00000 0.41262 0.00000
+1.00000 0.39675 0.00000
+1.00000 0.38088 0.00000
+1.00000 0.36501 0.00000
+1.00000 0.34914 0.00000
+1.00000 0.33327 0.00000
+1.00000 0.31740 0.00000
+1.00000 0.30153 0.00000
+1.00000 0.28566 0.00000
+1.00000 0.26979 0.00000
+1.00000 0.25392 0.00000
+1.00000 0.23805 0.00000
+1.00000 0.22218 0.00000
+1.00000 0.20631 0.00000
+1.00000 0.19044 0.00000
+1.00000 0.17457 0.00000
+1.00000 0.15870 0.00000
+1.00000 0.14283 0.00000
+1.00000 0.12696 0.00000
+1.00000 0.11109 0.00000
+1.00000 0.09522 0.00000
+1.00000 0.07935 0.00000
+1.00000 0.06348 0.00000
+1.00000 0.04761 0.00000
+1.00000 0.03174 0.00000
+1.00000 0.01587 0.00000
+1.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/blulut.lut b/vendor/x11iraf/ximtool/luts/blulut.lut
new file mode 100644
index 00000000..1bdc621c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/blulut.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00392
+0.00000 0.00000 0.00784
+0.00000 0.00000 0.01176
+0.00000 0.00000 0.01569
+0.00000 0.00000 0.01961
+0.00000 0.00000 0.02353
+0.00000 0.00000 0.02745
+0.00000 0.00000 0.03137
+0.00000 0.00000 0.03529
+0.00000 0.00000 0.03922
+0.00000 0.00000 0.04314
+0.00000 0.00000 0.04706
+0.00001 0.00001 0.05098
+0.00001 0.00001 0.05490
+0.00001 0.00001 0.05882
+0.00002 0.00002 0.06275
+0.00002 0.00002 0.06667
+0.00002 0.00002 0.07059
+0.00003 0.00003 0.07451
+0.00004 0.00004 0.07843
+0.00005 0.00005 0.08235
+0.00006 0.00006 0.08627
+0.00007 0.00007 0.09020
+0.00008 0.00008 0.09412
+0.00009 0.00009 0.09804
+0.00011 0.00011 0.10196
+0.00013 0.00013 0.10588
+0.00015 0.00015 0.10980
+0.00017 0.00017 0.11373
+0.00019 0.00019 0.11765
+0.00022 0.00022 0.12157
+0.00025 0.00025 0.12549
+0.00028 0.00028 0.12941
+0.00032 0.00032 0.13333
+0.00035 0.00035 0.13725
+0.00040 0.00040 0.14118
+0.00044 0.00044 0.14510
+0.00049 0.00049 0.14902
+0.00055 0.00055 0.15294
+0.00061 0.00061 0.15686
+0.00067 0.00067 0.16078
+0.00074 0.00074 0.16471
+0.00081 0.00081 0.16863
+0.00089 0.00089 0.17255
+0.00097 0.00097 0.17647
+0.00106 0.00106 0.18039
+0.00115 0.00115 0.18431
+0.00126 0.00126 0.18824
+0.00136 0.00136 0.19216
+0.00148 0.00148 0.19608
+0.00160 0.00160 0.20000
+0.00173 0.00173 0.20392
+0.00187 0.00187 0.20784
+0.00201 0.00201 0.21176
+0.00216 0.00216 0.21569
+0.00233 0.00233 0.21961
+0.00250 0.00250 0.22353
+0.00268 0.00268 0.22745
+0.00287 0.00287 0.23137
+0.00307 0.00307 0.23529
+0.00327 0.00327 0.23922
+0.00349 0.00349 0.24314
+0.00373 0.00373 0.24706
+0.00397 0.00397 0.25098
+0.00422 0.00422 0.25490
+0.00449 0.00449 0.25882
+0.00477 0.00477 0.26275
+0.00506 0.00506 0.26667
+0.00536 0.00536 0.27059
+0.00568 0.00568 0.27451
+0.00601 0.00601 0.27843
+0.00636 0.00636 0.28235
+0.00672 0.00672 0.28627
+0.00709 0.00709 0.29020
+0.00748 0.00748 0.29412
+0.00789 0.00789 0.29804
+0.00831 0.00831 0.30196
+0.00875 0.00875 0.30588
+0.00921 0.00921 0.30980
+0.00969 0.00969 0.31373
+0.01018 0.01018 0.31765
+0.01069 0.01069 0.32157
+0.01122 0.01122 0.32549
+0.01177 0.01177 0.32941
+0.01235 0.01235 0.33333
+0.01294 0.01294 0.33725
+0.01355 0.01355 0.34118
+0.01418 0.01418 0.34510
+0.01484 0.01484 0.34902
+0.01552 0.01552 0.35294
+0.01622 0.01622 0.35686
+0.01694 0.01694 0.36078
+0.01769 0.01769 0.36471
+0.01847 0.01847 0.36863
+0.01926 0.01926 0.37255
+0.02009 0.02009 0.37647
+0.02094 0.02094 0.38039
+0.02181 0.02181 0.38431
+0.02272 0.02272 0.38824
+0.02365 0.02365 0.39216
+0.02461 0.02461 0.39608
+0.02560 0.02560 0.40000
+0.02662 0.02662 0.40392
+0.02767 0.02767 0.40784
+0.02875 0.02875 0.41176
+0.02986 0.02986 0.41569
+0.03100 0.03100 0.41961
+0.03218 0.03218 0.42353
+0.03338 0.03338 0.42745
+0.03463 0.03463 0.43137
+0.03590 0.03590 0.43529
+0.03721 0.03721 0.43922
+0.03856 0.03856 0.44314
+0.03994 0.03994 0.44706
+0.04136 0.04136 0.45098
+0.04282 0.04282 0.45490
+0.04432 0.04432 0.45882
+0.04585 0.04585 0.46275
+0.04743 0.04743 0.46667
+0.04904 0.04904 0.47059
+0.05070 0.05070 0.47451
+0.05239 0.05239 0.47843
+0.05413 0.05413 0.48235
+0.05591 0.05591 0.48627
+0.05774 0.05774 0.49020
+0.05961 0.05961 0.49412
+0.06153 0.06153 0.49804
+0.06349 0.06349 0.50196
+0.06549 0.06549 0.50588
+0.06755 0.06755 0.50980
+0.06965 0.06965 0.51373
+0.07180 0.07180 0.51765
+0.07400 0.07400 0.52157
+0.07625 0.07625 0.52549
+0.07856 0.07856 0.52941
+0.08091 0.08091 0.53333
+0.08331 0.08331 0.53725
+0.08577 0.08577 0.54118
+0.08829 0.08829 0.54510
+0.09086 0.09086 0.54902
+0.09348 0.09348 0.55294
+0.09616 0.09616 0.55686
+0.09890 0.09890 0.56078
+0.10169 0.10169 0.56471
+0.10455 0.10455 0.56863
+0.10746 0.10746 0.57255
+0.11044 0.11044 0.57647
+0.11347 0.11347 0.58039
+0.11657 0.11657 0.58431
+0.11973 0.11973 0.58824
+0.12296 0.12296 0.59216
+0.12624 0.12624 0.59608
+0.12960 0.12960 0.60000
+0.13302 0.13302 0.60392
+0.13651 0.13651 0.60784
+0.14007 0.14007 0.61176
+0.14369 0.14369 0.61569
+0.14739 0.14739 0.61961
+0.15116 0.15116 0.62353
+0.15500 0.15500 0.62745
+0.15891 0.15891 0.63137
+0.16289 0.16289 0.63529
+0.16695 0.16695 0.63922
+0.17109 0.17109 0.64314
+0.17530 0.17530 0.64706
+0.17959 0.17959 0.65098
+0.18395 0.18395 0.65490
+0.18840 0.18840 0.65882
+0.19292 0.19292 0.66275
+0.19753 0.19753 0.66667
+0.20222 0.20222 0.67059
+0.20699 0.20699 0.67451
+0.21185 0.21185 0.67843
+0.21679 0.21679 0.68235
+0.22182 0.22182 0.68627
+0.22693 0.22693 0.69020
+0.23213 0.23213 0.69412
+0.23742 0.23742 0.69804
+0.24280 0.24280 0.70196
+0.24827 0.24827 0.70588
+0.25384 0.25384 0.70980
+0.25949 0.25949 0.71373
+0.26524 0.26524 0.71765
+0.27109 0.27109 0.72157
+0.27703 0.27703 0.72549
+0.28307 0.28307 0.72941
+0.28920 0.28920 0.73333
+0.29544 0.29544 0.73725
+0.30178 0.30178 0.74118
+0.30821 0.30821 0.74510
+0.31476 0.31476 0.74902
+0.32140 0.32140 0.75294
+0.32815 0.32815 0.75686
+0.33500 0.33500 0.76078
+0.34196 0.34196 0.76471
+0.34903 0.34903 0.76863
+0.35621 0.35621 0.77255
+0.36350 0.36350 0.77647
+0.37090 0.37090 0.78039
+0.37841 0.37841 0.78431
+0.38603 0.38603 0.78824
+0.39377 0.39377 0.79216
+0.40163 0.40163 0.79608
+0.40960 0.40960 0.80000
+0.41769 0.41769 0.80392
+0.42590 0.42590 0.80784
+0.43423 0.43423 0.81176
+0.44268 0.44268 0.81569
+0.45126 0.45126 0.81961
+0.45996 0.45996 0.82353
+0.46878 0.46878 0.82745
+0.47773 0.47773 0.83137
+0.48681 0.48681 0.83529
+0.49601 0.49601 0.83922
+0.50535 0.50535 0.84314
+0.51482 0.51482 0.84706
+0.52442 0.52442 0.85098
+0.53415 0.53415 0.85490
+0.54402 0.54402 0.85882
+0.55403 0.55403 0.86275
+0.56417 0.56417 0.86667
+0.57445 0.57445 0.87059
+0.58487 0.58487 0.87451
+0.59543 0.59543 0.87843
+0.60613 0.60613 0.88235
+0.61698 0.61698 0.88627
+0.62798 0.62798 0.89020
+0.63911 0.63911 0.89412
+0.65040 0.65040 0.89804
+0.66184 0.66184 0.90196
+0.67342 0.67342 0.90588
+0.68516 0.68516 0.90980
+0.69705 0.69705 0.91373
+0.70909 0.70909 0.91765
+0.72129 0.72129 0.92157
+0.73365 0.73365 0.92549
+0.74616 0.74616 0.92941
+0.75883 0.75883 0.93333
+0.77167 0.77167 0.93725
+0.78466 0.78466 0.94118
+0.79782 0.79782 0.94510
+0.81115 0.81115 0.94902
+0.82464 0.82464 0.95294
+0.83830 0.83830 0.95686
+0.85213 0.85213 0.96078
+0.86612 0.86612 0.96471
+0.88029 0.88029 0.96863
+0.89464 0.89464 0.97255
+0.90915 0.90915 0.97647
+0.92385 0.92385 0.98039
+0.93872 0.93872 0.98431
+0.95377 0.95377 0.98824
+0.96899 0.96899 0.99216
+0.98441 0.98441 0.99608
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/flag.lut b/vendor/x11iraf/ximtool/luts/flag.lut
new file mode 100644
index 00000000..16c010a8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/flag.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
+0.98039 0.98039 0.98039
+0.00000 0.49020 0.98039
diff --git a/vendor/x11iraf/ximtool/luts/idl11.lut b/vendor/x11iraf/ximtool/luts/idl11.lut
new file mode 100644
index 00000000..e6708ae0
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl11.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00392 0.00392
+0.00000 0.00784 0.00784
+0.00000 0.01176 0.01176
+0.00000 0.01569 0.01569
+0.00000 0.03137 0.03137
+0.00000 0.04706 0.04706
+0.00000 0.06275 0.06275
+0.00000 0.08235 0.08235
+0.00000 0.09804 0.09804
+0.00000 0.11373 0.11373
+0.00000 0.12941 0.12941
+0.00000 0.14902 0.14902
+0.00000 0.16471 0.16471
+0.00000 0.18039 0.18039
+0.00000 0.19608 0.19608
+0.00000 0.21569 0.21569
+0.00000 0.23137 0.23137
+0.00000 0.24706 0.24706
+0.00000 0.26275 0.26275
+0.00000 0.28235 0.28235
+0.00000 0.29804 0.29804
+0.00000 0.31373 0.31373
+0.00000 0.32941 0.32941
+0.00000 0.34902 0.34902
+0.00000 0.36471 0.36471
+0.00000 0.38039 0.38039
+0.00000 0.39608 0.39608
+0.00000 0.41569 0.41569
+0.00000 0.43137 0.43137
+0.00000 0.44706 0.44706
+0.00000 0.46275 0.46275
+0.00000 0.48235 0.48235
+0.00000 0.49804 0.49804
+0.00000 0.51373 0.51373
+0.00000 0.52941 0.52941
+0.00000 0.54902 0.54902
+0.00000 0.56471 0.56471
+0.00000 0.58039 0.58039
+0.00000 0.59608 0.59608
+0.00000 0.61569 0.61569
+0.00000 0.63137 0.63137
+0.00000 0.64706 0.64706
+0.00000 0.66275 0.66275
+0.00000 0.68235 0.68235
+0.00000 0.69804 0.69804
+0.00000 0.71373 0.71373
+0.00000 0.72941 0.72941
+0.00000 0.74902 0.74902
+0.00000 0.76471 0.76471
+0.00000 0.78039 0.78039
+0.00000 0.79608 0.79608
+0.00000 0.81569 0.81569
+0.00000 0.83137 0.83137
+0.00000 0.84706 0.84706
+0.00000 0.86275 0.86275
+0.00000 0.88235 0.88235
+0.00000 0.89804 0.89804
+0.00000 0.91373 0.91373
+0.00000 0.92941 0.92941
+0.00000 0.94902 0.94902
+0.00000 0.96471 0.96471
+0.00000 0.98039 0.98039
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 0.98431 1.00000
+0.00000 0.96863 1.00000
+0.00000 0.95294 1.00000
+0.00000 0.93725 1.00000
+0.00000 0.92157 1.00000
+0.00000 0.90588 1.00000
+0.00000 0.89020 1.00000
+0.00000 0.87451 1.00000
+0.00000 0.85882 1.00000
+0.00000 0.84314 1.00000
+0.00000 0.82745 1.00000
+0.00000 0.81176 1.00000
+0.00000 0.79608 1.00000
+0.00000 0.78039 1.00000
+0.00000 0.76471 1.00000
+0.00000 0.74902 1.00000
+0.00000 0.73333 1.00000
+0.00000 0.71765 1.00000
+0.00000 0.70196 1.00000
+0.00000 0.68627 1.00000
+0.00000 0.66667 1.00000
+0.00000 0.65098 1.00000
+0.00000 0.63529 1.00000
+0.00000 0.61961 1.00000
+0.00000 0.60392 1.00000
+0.00000 0.58824 1.00000
+0.00000 0.57255 1.00000
+0.00000 0.55686 1.00000
+0.00000 0.54118 1.00000
+0.00000 0.52549 1.00000
+0.00000 0.50980 1.00000
+0.00000 0.49412 1.00000
+0.00000 0.47843 1.00000
+0.00000 0.46275 1.00000
+0.00000 0.44706 1.00000
+0.00000 0.43137 1.00000
+0.00000 0.41569 1.00000
+0.00000 0.40000 1.00000
+0.00000 0.38431 1.00000
+0.00000 0.36863 1.00000
+0.00000 0.35294 1.00000
+0.00000 0.33333 1.00000
+0.00000 0.31765 1.00000
+0.00000 0.30196 1.00000
+0.00000 0.28627 1.00000
+0.00000 0.27059 1.00000
+0.00000 0.25490 1.00000
+0.00000 0.23922 1.00000
+0.00000 0.22353 1.00000
+0.00000 0.20784 1.00000
+0.00000 0.19216 1.00000
+0.00000 0.17647 1.00000
+0.00000 0.16078 1.00000
+0.00000 0.14510 1.00000
+0.00000 0.12941 1.00000
+0.00000 0.11373 1.00000
+0.00000 0.09804 1.00000
+0.00000 0.08235 1.00000
+0.00000 0.06667 1.00000
+0.00000 0.05098 1.00000
+0.00000 0.03529 1.00000
+0.00000 0.01961 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.01569 0.00000 1.00000
+0.03137 0.00000 1.00000
+0.04706 0.00000 1.00000
+0.06275 0.00000 1.00000
+0.07843 0.00000 1.00000
+0.09412 0.00000 1.00000
+0.10980 0.00000 1.00000
+0.12549 0.00000 1.00000
+0.14118 0.00000 1.00000
+0.15686 0.00000 1.00000
+0.17255 0.00000 1.00000
+0.18824 0.00000 1.00000
+0.20392 0.00000 1.00000
+0.21961 0.00000 1.00000
+0.23529 0.00000 1.00000
+0.25098 0.00000 1.00000
+0.26667 0.00000 1.00000
+0.28235 0.00000 1.00000
+0.29804 0.00000 1.00000
+0.31373 0.00000 1.00000
+0.33333 0.00000 1.00000
+0.34902 0.00000 1.00000
+0.36471 0.00000 1.00000
+0.38039 0.00000 1.00000
+0.39608 0.00000 1.00000
+0.41176 0.00000 1.00000
+0.42745 0.00000 1.00000
+0.44314 0.00000 1.00000
+0.45882 0.00000 1.00000
+0.47451 0.00000 1.00000
+0.49020 0.00000 1.00000
+0.50588 0.00000 1.00000
+0.52157 0.00000 1.00000
+0.53725 0.00000 1.00000
+0.55294 0.00000 1.00000
+0.56863 0.00000 1.00000
+0.58431 0.00000 1.00000
+0.60000 0.00000 1.00000
+0.61569 0.00000 1.00000
+0.63137 0.00000 1.00000
+0.64706 0.00000 1.00000
+0.66667 0.00000 1.00000
+0.68235 0.00000 1.00000
+0.69804 0.00000 1.00000
+0.71373 0.00000 1.00000
+0.72941 0.00000 1.00000
+0.74510 0.00000 1.00000
+0.76078 0.00000 1.00000
+0.77647 0.00000 1.00000
+0.79216 0.00000 1.00000
+0.80784 0.00000 1.00000
+0.82353 0.00000 1.00000
+0.83922 0.00000 1.00000
+0.85490 0.00000 1.00000
+0.87059 0.00000 1.00000
+0.88627 0.00000 1.00000
+0.90196 0.00000 1.00000
+0.91765 0.00000 1.00000
+0.93333 0.00000 1.00000
+0.94902 0.00000 1.00000
+0.96471 0.00000 1.00000
+0.98039 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 0.98431
+1.00000 0.00000 0.96863
+1.00000 0.00000 0.95294
+1.00000 0.00000 0.93725
+1.00000 0.00000 0.92157
+1.00000 0.00000 0.90588
+1.00000 0.00000 0.89020
+1.00000 0.00000 0.87451
+1.00000 0.00000 0.85490
+1.00000 0.00000 0.83922
+1.00000 0.00000 0.82353
+1.00000 0.00000 0.80784
+1.00000 0.00000 0.79216
+1.00000 0.00000 0.77647
+1.00000 0.00000 0.76078
+1.00000 0.00000 0.74510
+1.00000 0.00000 0.72941
+1.00000 0.00000 0.70980
+1.00000 0.00000 0.69412
+1.00000 0.00000 0.67843
+1.00000 0.00000 0.66275
+1.00000 0.00000 0.64706
+1.00000 0.00000 0.63137
+1.00000 0.00000 0.61569
+1.00000 0.00000 0.60000
+1.00000 0.00000 0.58431
+1.00000 0.00000 0.56471
+1.00000 0.00000 0.54902
+1.00000 0.00000 0.53333
+1.00000 0.00000 0.51765
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.48627
+1.00000 0.00000 0.47059
+1.00000 0.00000 0.45490
+1.00000 0.00000 0.43922
+1.00000 0.00000 0.41961
+1.00000 0.00000 0.40392
+1.00000 0.00000 0.38824
+1.00000 0.00000 0.37255
+1.00000 0.00000 0.35686
+1.00000 0.00000 0.34118
+1.00000 0.00000 0.32549
+1.00000 0.00000 0.30980
+1.00000 0.00000 0.29412
+1.00000 0.00000 0.27451
+1.00000 0.00000 0.25882
+1.00000 0.00000 0.24314
+1.00000 0.00000 0.22745
+1.00000 0.00000 0.21176
+1.00000 0.00000 0.19608
+1.00000 0.00000 0.18039
+1.00000 0.00000 0.16471
+1.00000 0.00000 0.14902
+1.00000 0.00000 0.12941
+1.00000 0.00000 0.11373
+1.00000 0.00000 0.09804
+1.00000 0.00000 0.08235
+1.00000 0.00000 0.06667
+1.00000 0.00000 0.05098
+1.00000 0.00000 0.03529
+1.00000 0.00000 0.01961
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl12.lut b/vendor/x11iraf/ximtool/luts/idl12.lut
new file mode 100644
index 00000000..78dc76b7
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl12.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.32941 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 0.65882 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.32941
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.65882
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+0.50196 0.00000 1.00000
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.50196
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.25098
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+0.86275 0.74510 0.74510
+0.86275 0.74510 0.74510
+0.86275 0.74510 0.74510
+0.86275 0.74510 0.74510
+0.86275 0.74510 0.74510
+0.86667 0.74510 0.74510
+0.86667 0.74510 0.74510
+0.86667 0.74510 0.74510
+0.86667 0.74510 0.74510
+0.86667 0.74510 0.74510
+0.87059 0.74510 0.74510
+0.87059 0.74510 0.74510
+0.87059 0.74510 0.74510
+0.87059 0.74510 0.74510
+0.87059 0.74510 0.74510
+0.87451 0.74510 0.74510
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+0.86275 0.86275 0.86275
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl14.lut b/vendor/x11iraf/ximtool/luts/idl14.lut
new file mode 100644
index 00000000..b253b2fc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl14.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.16471 0.00000
+0.00000 0.33333 0.00000
+0.00000 0.49804 0.00000
+0.00000 0.66667 0.00000
+0.00000 0.83137 0.00000
+0.00000 1.00000 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.88627 0.00000
+0.00000 0.84706 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.77255 0.00000
+0.00000 0.73333 0.00000
+0.00000 0.69412 0.00000
+0.00000 0.65490 0.00000
+0.00000 0.61569 0.00000
+0.00000 0.58039 0.00000
+0.00000 0.54118 0.00000
+0.00000 0.50196 0.00000
+0.00000 0.46275 0.00000
+0.00000 0.42353 0.00000
+0.00000 0.38824 0.00000
+0.00000 0.34902 0.00000
+0.00000 0.30980 0.00000
+0.00000 0.27059 0.00000
+0.00000 0.23137 0.00000
+0.00000 0.19608 0.00000
+0.00000 0.15686 0.00000
+0.00000 0.11765 0.00000
+0.00000 0.07843 0.00000
+0.00000 0.03922 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.03137
+0.00000 0.00000 0.06275
+0.00000 0.00000 0.09412
+0.00000 0.00000 0.12549
+0.00000 0.00000 0.16078
+0.00000 0.00000 0.19216
+0.00000 0.00000 0.22353
+0.00000 0.00000 0.25490
+0.00000 0.00000 0.29020
+0.00000 0.00000 0.32157
+0.00000 0.00000 0.35294
+0.00000 0.00000 0.38431
+0.00000 0.00000 0.41569
+0.00000 0.00000 0.45098
+0.00000 0.00000 0.48235
+0.00000 0.00000 0.51373
+0.00000 0.00000 0.54510
+0.00000 0.00000 0.58039
+0.00000 0.00000 0.61176
+0.00000 0.00000 0.64314
+0.00000 0.00000 0.67451
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.74118
+0.00000 0.00000 0.77255
+0.00000 0.00000 0.80392
+0.00000 0.00000 0.83529
+0.00000 0.00000 0.87059
+0.00000 0.00000 0.90196
+0.00000 0.00000 0.93333
+0.00000 0.00000 0.96471
+0.00000 0.00000 1.00000
+0.00000 0.00000 0.00000
+0.02745 0.00000 0.01961
+0.05882 0.00000 0.03922
+0.09020 0.00000 0.05882
+0.12157 0.00000 0.08235
+0.15294 0.00000 0.10196
+0.18431 0.00000 0.12157
+0.21569 0.00000 0.14510
+0.24706 0.00000 0.16471
+0.27451 0.00000 0.18431
+0.30588 0.00000 0.20784
+0.33725 0.00000 0.22745
+0.36863 0.00000 0.24706
+0.40000 0.00000 0.27059
+0.43137 0.00000 0.29020
+0.46275 0.00000 0.30980
+0.49412 0.00000 0.33333
+0.52549 0.00000 0.34902
+0.55686 0.00000 0.36863
+0.59216 0.00000 0.38431
+0.62353 0.00000 0.40392
+0.65882 0.00000 0.42353
+0.69020 0.00000 0.43922
+0.72157 0.00000 0.45882
+0.75686 0.00000 0.47451
+0.78824 0.00000 0.49412
+0.82353 0.00000 0.51373
+0.85490 0.00000 0.52941
+0.88627 0.00000 0.54902
+0.92157 0.00000 0.56471
+0.95294 0.00000 0.58431
+0.98824 0.00000 0.60392
+0.00000 0.00000 0.00000
+0.00392 0.00000 0.00000
+0.00784 0.00000 0.00000
+0.01176 0.00000 0.00000
+0.01569 0.00000 0.00000
+0.01961 0.00000 0.00000
+0.02353 0.00000 0.00000
+0.02745 0.00000 0.00000
+0.03137 0.00000 0.00000
+0.03529 0.00000 0.00000
+0.03922 0.00000 0.00000
+0.04314 0.00000 0.00000
+0.04706 0.00000 0.00000
+0.05490 0.00000 0.00000
+0.06275 0.00000 0.00000
+0.07059 0.00000 0.00000
+0.07843 0.00000 0.00000
+0.09020 0.00000 0.00000
+0.09804 0.00000 0.00000
+0.10588 0.00000 0.00000
+0.11373 0.00000 0.00000
+0.12549 0.00000 0.00000
+0.13333 0.00000 0.00000
+0.14118 0.00000 0.00000
+0.14902 0.00000 0.00000
+0.16078 0.00000 0.00000
+0.17255 0.00000 0.00000
+0.18431 0.00000 0.00000
+0.19608 0.00000 0.00000
+0.20784 0.00000 0.00000
+0.21961 0.00000 0.00000
+0.23137 0.00000 0.00000
+0.24706 0.00000 0.00000
+0.25882 0.00000 0.00000
+0.27059 0.00000 0.00000
+0.28235 0.00000 0.00000
+0.29412 0.00000 0.00000
+0.30588 0.00000 0.00000
+0.32157 0.00000 0.00392
+0.33333 0.00000 0.00392
+0.34902 0.00000 0.00392
+0.36471 0.00000 0.00392
+0.38039 0.00000 0.00392
+0.39608 0.00000 0.00392
+0.41176 0.00000 0.00392
+0.42353 0.00000 0.00392
+0.43922 0.00000 0.00392
+0.45490 0.00000 0.00392
+0.47059 0.00000 0.00392
+0.48627 0.00000 0.00392
+0.50196 0.00392 0.00392
+0.51373 0.00392 0.00392
+0.52941 0.00392 0.00392
+0.54510 0.00392 0.00392
+0.56078 0.00392 0.00392
+0.57647 0.00392 0.00392
+0.59216 0.00392 0.00392
+0.60784 0.00392 0.00392
+0.62353 0.00392 0.00392
+0.63922 0.00392 0.00392
+0.65490 0.00392 0.00392
+0.67059 0.00392 0.00392
+0.68627 0.00392 0.00392
+0.69804 0.00392 0.00392
+0.70980 0.00392 0.00392
+0.72549 0.00392 0.00392
+0.73725 0.00392 0.00392
+0.75294 0.00392 0.00392
+0.76471 0.00392 0.00392
+0.77647 0.00392 0.00392
+0.79216 0.00392 0.00392
+0.80392 0.00392 0.00392
+0.81961 0.00392 0.00392
+0.83137 0.00392 0.00392
+0.84706 0.00392 0.00784
+0.85490 0.00392 0.00784
+0.86275 0.00392 0.00784
+0.87451 0.00392 0.00784
+0.88235 0.00392 0.00784
+0.89020 0.00392 0.00784
+0.90196 0.00392 0.00784
+0.90980 0.00392 0.00784
+0.91765 0.00392 0.00784
+0.92941 0.00392 0.00784
+0.93725 0.00392 0.00784
+0.94510 0.00392 0.00784
+0.95686 0.00784 0.00784
+0.95686 0.00784 0.00784
+0.96078 0.00784 0.00784
+0.96471 0.00784 0.00784
+0.96863 0.00784 0.00784
+0.96863 0.00784 0.00784
+0.97255 0.00784 0.00784
+0.97647 0.00784 0.00784
+0.98039 0.00784 0.00784
+0.98039 0.00784 0.00784
+0.98431 0.00784 0.00784
+0.98824 0.00784 0.00784
+0.99216 0.00784 0.00784
+0.99608 0.00392 0.00784
+0.99608 0.00392 0.00784
+0.99608 0.01176 0.00784
+0.99608 0.01961 0.00784
+0.99608 0.03137 0.00784
+0.99608 0.03922 0.00784
+0.99608 0.04706 0.00784
+0.99608 0.05882 0.00784
+0.99608 0.06667 0.00784
+0.99608 0.07451 0.00784
+0.99608 0.08627 0.00784
+0.99608 0.09412 0.00784
+0.99608 0.10196 0.00784
+0.99608 0.11373 0.00784
+0.99608 0.12157 0.00784
+0.99608 0.12941 0.00784
+0.99608 0.14118 0.00784
+0.99608 0.14118 0.00784
+0.99608 0.14902 0.01176
+0.99608 0.15686 0.01569
+0.99608 0.16471 0.01961
+1.00000 0.17647 0.02745
+1.00000 0.18824 0.03529
+1.00000 0.20000 0.04706
+1.00000 0.21176 0.05490
+1.00000 0.22745 0.06667
+1.00000 0.23922 0.07843
+1.00000 0.25098 0.09020
+1.00000 0.26275 0.10588
+1.00000 0.27451 0.11765
+1.00000 0.28627 0.13333
+1.00000 0.30196 0.15294
+1.00000 0.32157 0.17255
+1.00000 0.34118 0.19216
+1.00000 0.36078 0.21569
+1.00000 0.37647 0.23529
+1.00000 0.39216 0.25490
+1.00000 0.40784 0.27843
+1.00000 0.42353 0.29804
+1.00000 0.44314 0.32157
+1.00000 0.46667 0.34902
+1.00000 0.49020 0.38039
+1.00000 0.51373 0.40784
+1.00000 0.54118 0.43922
+1.00000 0.56471 0.47059
+1.00000 0.59216 0.50196
+1.00000 0.61569 0.53333
+1.00000 0.64314 0.56863
+1.00000 0.67059 0.60000
+1.00000 0.69804 0.63529
+1.00000 0.72549 0.67059
+1.00000 0.75686 0.70588
+1.00000 0.78431 0.74118
+1.00000 0.81569 0.77647
+1.00000 0.84314 0.81176
+1.00000 0.87451 0.85098
+1.00000 0.89804 0.87843
+1.00000 0.92157 0.90980
+1.00000 0.94902 0.93725
+1.00000 0.97255 0.96863
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl15.lut b/vendor/x11iraf/ximtool/luts/idl15.lut
new file mode 100644
index 00000000..7fbbdc5e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl15.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.07059 0.00392 0.00392
+0.14118 0.00784 0.01176
+0.21176 0.01176 0.01961
+0.28235 0.01569 0.02745
+0.35294 0.01961 0.03529
+0.42353 0.02353 0.04314
+0.49804 0.02745 0.05098
+0.56863 0.03137 0.05882
+0.63922 0.03529 0.06667
+0.70980 0.03922 0.07451
+0.78039 0.04314 0.08235
+0.85098 0.04706 0.09020
+0.92157 0.05098 0.09804
+0.99608 0.05490 0.10588
+0.97647 0.05882 0.11373
+0.95686 0.06275 0.12157
+0.93725 0.06667 0.12941
+0.91765 0.07059 0.13725
+0.89804 0.07451 0.14510
+0.87451 0.07843 0.15294
+0.85490 0.08235 0.16078
+0.83529 0.08627 0.16863
+0.81569 0.09020 0.17647
+0.79608 0.09412 0.18431
+0.77255 0.09804 0.19216
+0.75294 0.10196 0.20000
+0.73333 0.10588 0.20784
+0.71373 0.10980 0.21569
+0.69412 0.11373 0.22353
+0.67451 0.11765 0.23137
+0.65098 0.12157 0.23922
+0.63137 0.12549 0.24706
+0.61176 0.12941 0.25490
+0.59216 0.13333 0.26275
+0.57255 0.13725 0.27059
+0.54902 0.14118 0.27843
+0.52941 0.14510 0.28627
+0.50980 0.14902 0.29412
+0.49020 0.15294 0.30196
+0.47059 0.15686 0.30980
+0.45098 0.16078 0.31765
+0.42745 0.16471 0.32549
+0.40784 0.16863 0.33333
+0.38824 0.17255 0.34118
+0.36863 0.17647 0.34902
+0.34902 0.18039 0.35686
+0.32549 0.18431 0.36471
+0.30588 0.18824 0.37255
+0.28627 0.19216 0.38039
+0.26667 0.19608 0.38824
+0.24706 0.20000 0.39608
+0.22745 0.20392 0.40392
+0.20392 0.20784 0.41176
+0.18431 0.21176 0.41961
+0.16471 0.21569 0.42745
+0.14510 0.21961 0.43529
+0.12549 0.22353 0.44314
+0.10196 0.22745 0.45098
+0.08235 0.23137 0.45882
+0.06275 0.23529 0.46667
+0.04314 0.23922 0.47451
+0.02353 0.24314 0.48235
+0.00000 0.24706 0.49020
+0.25098 0.25098 0.49804
+0.25490 0.25490 0.50588
+0.25882 0.25882 0.51373
+0.26275 0.26275 0.52157
+0.26667 0.26667 0.52941
+0.27059 0.27059 0.53725
+0.27451 0.27451 0.54510
+0.27843 0.27843 0.55294
+0.28235 0.28235 0.56078
+0.28627 0.28627 0.56863
+0.29020 0.29020 0.57647
+0.29412 0.29412 0.58431
+0.29804 0.29804 0.59216
+0.30196 0.30196 0.60000
+0.30588 0.30588 0.60784
+0.30980 0.30980 0.61569
+0.31373 0.31373 0.62353
+0.31765 0.31765 0.63137
+0.32157 0.32157 0.63922
+0.32549 0.32549 0.64706
+0.32941 0.32941 0.65490
+0.33333 0.33333 0.66275
+0.33725 0.33725 0.67059
+0.34118 0.34118 0.67843
+0.34510 0.34510 0.68627
+0.34902 0.34902 0.69412
+0.35294 0.35294 0.70196
+0.35686 0.35686 0.70980
+0.36078 0.36078 0.71765
+0.36471 0.36471 0.72549
+0.36863 0.36863 0.73333
+0.37255 0.37255 0.74118
+0.37647 0.37647 0.74902
+0.38039 0.38039 0.75686
+0.38431 0.38431 0.76471
+0.38824 0.38824 0.77255
+0.39216 0.39216 0.78039
+0.39608 0.39608 0.78824
+0.40000 0.40000 0.79608
+0.40392 0.40392 0.80392
+0.40784 0.40784 0.81176
+0.41176 0.41176 0.81961
+0.41569 0.41569 0.82745
+0.41961 0.41961 0.83529
+0.42353 0.42353 0.84314
+0.42745 0.42745 0.85098
+0.43137 0.43137 0.85882
+0.43529 0.43529 0.86667
+0.43922 0.43922 0.87451
+0.44314 0.44314 0.88235
+0.44706 0.44706 0.89020
+0.45098 0.45098 0.89804
+0.45490 0.45490 0.90588
+0.45882 0.45882 0.91373
+0.46275 0.46275 0.92157
+0.46667 0.46667 0.92941
+0.47059 0.47059 0.93725
+0.47451 0.47451 0.94510
+0.47843 0.47843 0.95294
+0.48235 0.48235 0.96078
+0.48627 0.48627 0.96863
+0.49020 0.49020 0.97647
+0.49412 0.49412 0.98431
+0.49804 0.49804 0.99216
+0.50196 0.50196 1.00000
+0.50588 0.50588 0.98431
+0.50980 0.50980 0.96863
+0.51373 0.51373 0.95294
+0.51765 0.51765 0.93333
+0.52157 0.52157 0.91765
+0.52549 0.52549 0.90196
+0.52941 0.52941 0.88627
+0.53333 0.53333 0.86667
+0.53725 0.53725 0.85098
+0.54118 0.54118 0.83529
+0.54510 0.54510 0.81961
+0.54902 0.54902 0.80000
+0.55294 0.55294 0.78431
+0.55686 0.55686 0.76863
+0.56078 0.56078 0.75294
+0.56471 0.56471 0.73333
+0.56863 0.56863 0.71765
+0.57255 0.57255 0.70196
+0.57647 0.57647 0.68627
+0.58039 0.58039 0.66667
+0.58431 0.58431 0.65098
+0.58824 0.58824 0.63529
+0.59216 0.59216 0.61961
+0.59608 0.59608 0.60000
+0.60000 0.60000 0.58431
+0.60392 0.60392 0.56863
+0.60784 0.60784 0.55294
+0.61176 0.61176 0.53333
+0.61569 0.61569 0.51765
+0.61961 0.61961 0.50196
+0.62353 0.62353 0.48627
+0.62745 0.62745 0.46667
+0.63137 0.63137 0.45098
+0.63529 0.63529 0.43529
+0.63922 0.63922 0.41961
+0.64314 0.64314 0.40000
+0.64706 0.64706 0.38431
+0.65098 0.65098 0.36863
+0.65490 0.65490 0.35294
+0.65882 0.65882 0.33333
+0.66275 0.66275 0.31765
+0.66667 0.66667 0.30196
+0.67059 0.67059 0.28627
+0.67451 0.67451 0.26667
+0.67843 0.67843 0.25098
+0.68235 0.68235 0.23529
+0.68627 0.68627 0.21961
+0.69020 0.69020 0.20000
+0.69412 0.69412 0.18431
+0.69804 0.69804 0.16863
+0.70196 0.70196 0.15294
+0.70588 0.70588 0.13333
+0.70980 0.70980 0.11765
+0.71373 0.71373 0.10196
+0.71765 0.71765 0.08627
+0.72157 0.72157 0.06667
+0.72549 0.72549 0.05098
+0.72941 0.72941 0.03529
+0.73333 0.73333 0.01961
+0.73725 0.73725 0.00000
+0.74118 0.74118 0.01176
+0.74510 0.74510 0.02745
+0.74902 0.74902 0.04314
+0.75294 0.75294 0.05882
+0.75686 0.75686 0.07451
+0.76078 0.76078 0.08627
+0.76471 0.76471 0.10196
+0.76863 0.76863 0.11765
+0.77255 0.77255 0.13333
+0.77647 0.77647 0.14902
+0.78039 0.78039 0.16078
+0.78431 0.78431 0.17647
+0.78824 0.78824 0.19216
+0.79216 0.79216 0.20784
+0.79608 0.79608 0.22353
+0.80000 0.80000 0.23529
+0.80392 0.80392 0.25098
+0.80784 0.80784 0.26667
+0.81176 0.81176 0.28235
+0.81569 0.81569 0.29804
+0.81961 0.81961 0.30980
+0.82353 0.82353 0.32549
+0.82745 0.82745 0.34118
+0.83137 0.83137 0.35686
+0.83529 0.83529 0.37255
+0.83922 0.83922 0.38431
+0.84314 0.84314 0.40000
+0.84706 0.84706 0.41569
+0.85098 0.85098 0.43137
+0.85490 0.85490 0.44706
+0.85882 0.85882 0.45882
+0.86275 0.86275 0.47451
+0.86667 0.86667 0.49020
+0.87059 0.87059 0.50588
+0.87451 0.87451 0.52157
+0.87843 0.87843 0.53725
+0.88235 0.88235 0.54902
+0.88627 0.88627 0.56471
+0.89020 0.89020 0.58039
+0.89412 0.89412 0.59608
+0.89804 0.89804 0.61176
+0.90196 0.90196 0.62353
+0.90588 0.90588 0.63922
+0.90980 0.90980 0.65490
+0.91373 0.91373 0.67059
+0.91765 0.91765 0.68627
+0.92157 0.92157 0.69804
+0.92549 0.92549 0.71373
+0.92941 0.92941 0.72941
+0.93333 0.93333 0.74510
+0.93725 0.93725 0.76078
+0.94118 0.94118 0.77255
+0.94510 0.94510 0.78824
+0.94902 0.94902 0.80392
+0.95294 0.95294 0.81961
+0.95686 0.95686 0.83529
+0.96078 0.96078 0.84706
+0.96471 0.96471 0.86275
+0.96863 0.96863 0.87843
+0.97255 0.97255 0.89412
+0.97647 0.97647 0.90980
+0.98039 0.98039 0.92157
+0.98431 0.98431 0.93725
+0.98824 0.98824 0.95294
+0.99216 0.99216 0.96863
+0.99608 0.99608 0.98431
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl2.lut b/vendor/x11iraf/ximtool/luts/idl2.lut
new file mode 100644
index 00000000..beb24271
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl2.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.14118 0.00000
+0.00000 0.28235 0.00000
+0.00000 0.29412 0.00000
+0.00000 0.30980 0.00000
+0.00000 0.32157 0.00000
+0.00000 0.33725 0.00000
+0.00000 0.35294 0.00000
+0.00000 0.36471 0.00000
+0.00000 0.38039 0.00000
+0.00000 0.39216 0.00000
+0.00000 0.40784 0.00000
+0.00000 0.42353 0.00000
+0.00000 0.45882 0.00000
+0.00000 0.49412 0.00000
+0.00000 0.52941 0.00000
+0.00000 0.56471 0.00000
+0.00000 0.60000 0.00000
+0.00000 0.63529 0.00000
+0.00000 0.67059 0.00000
+0.00000 0.70588 0.00000
+0.00000 0.74118 0.00000
+0.00000 0.77647 0.00000
+0.00000 0.81176 0.00000
+0.00000 0.84706 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.98824 0.00000
+0.02353 0.97647 0.00000
+0.04706 0.96471 0.00000
+0.07059 0.95294 0.00000
+0.09412 0.94118 0.00000
+0.11765 0.91765 0.00000
+0.14118 0.89412 0.00000
+0.16471 0.87059 0.00000
+0.18824 0.84706 0.00000
+0.21176 0.82353 0.00000
+0.23529 0.80000 0.00000
+0.25882 0.77647 0.00000
+0.28235 0.75294 0.00000
+0.30588 0.72941 0.00000
+0.32941 0.70588 0.00000
+0.35294 0.68235 0.00000
+0.37647 0.65882 0.00000
+0.40000 0.63529 0.00000
+0.42353 0.61176 0.00000
+0.44706 0.58824 0.00000
+0.47059 0.56471 0.00000
+0.49412 0.54118 0.00000
+0.51765 0.51765 0.00000
+0.54118 0.49412 0.00000
+0.56471 0.47059 0.00000
+0.58824 0.44706 0.00000
+0.61176 0.42353 0.00000
+0.63529 0.40000 0.00000
+0.65882 0.37647 0.00000
+0.68235 0.35294 0.00000
+0.70588 0.32941 0.00000
+0.72941 0.30588 0.00000
+0.75294 0.28235 0.00000
+0.77647 0.25882 0.00000
+0.80000 0.23529 0.00000
+0.82353 0.21176 0.00000
+0.84706 0.18824 0.00000
+0.87059 0.16471 0.00000
+0.89412 0.14118 0.00000
+0.91765 0.11765 0.00000
+0.94118 0.09412 0.00000
+0.95294 0.07059 0.00000
+0.96471 0.04706 0.00000
+0.97647 0.02353 0.00000
+0.98824 0.00000 0.00000
+0.98824 0.00000 0.00000
+0.98824 0.00000 0.00000
+0.98824 0.00000 0.00000
+0.98824 0.00000 0.00392
+0.98431 0.00000 0.01176
+0.98039 0.00000 0.01961
+0.97647 0.00000 0.02745
+0.97255 0.00000 0.03529
+0.97255 0.00000 0.03922
+0.97255 0.00000 0.04706
+0.97255 0.00000 0.05490
+0.97255 0.00000 0.06275
+0.96863 0.00000 0.07059
+0.96471 0.00000 0.07843
+0.96078 0.00000 0.08627
+0.95686 0.00000 0.09804
+0.95294 0.00000 0.10588
+0.94902 0.00000 0.11373
+0.94510 0.00000 0.12157
+0.94118 0.00000 0.13333
+0.94118 0.00000 0.13725
+0.93725 0.00000 0.14510
+0.93333 0.00000 0.15294
+0.92941 0.00000 0.16078
+0.92549 0.00000 0.16863
+0.92549 0.00000 0.17647
+0.92549 0.00000 0.18431
+0.92549 0.00000 0.19608
+0.92157 0.00000 0.20392
+0.91765 0.00000 0.21176
+0.91373 0.00000 0.21961
+0.90980 0.00000 0.23137
+0.90588 0.00000 0.23922
+0.90196 0.00000 0.24706
+0.89804 0.00000 0.25490
+0.89412 0.00000 0.26275
+0.89412 0.00000 0.26667
+0.89412 0.00000 0.27451
+0.89412 0.00000 0.28235
+0.89412 0.00000 0.29020
+0.89020 0.00000 0.29804
+0.88627 0.00000 0.30588
+0.88235 0.00000 0.31373
+0.87843 0.00000 0.32549
+0.87451 0.00000 0.33333
+0.87059 0.00000 0.34118
+0.86667 0.00000 0.34902
+0.86275 0.00392 0.36078
+0.85882 0.00392 0.36863
+0.85490 0.00392 0.37647
+0.85098 0.00392 0.38431
+0.84706 0.00000 0.39608
+0.84706 0.00000 0.40000
+0.84706 0.00000 0.40784
+0.84706 0.00000 0.41569
+0.84706 0.00000 0.42353
+0.84314 0.00000 0.43137
+0.83922 0.00000 0.43922
+0.83529 0.00000 0.44706
+0.83137 0.00000 0.45490
+0.82745 0.00000 0.46275
+0.82353 0.00000 0.47059
+0.81961 0.00000 0.47843
+0.81569 0.00000 0.49020
+0.81176 0.00000 0.49804
+0.80784 0.00000 0.50588
+0.80392 0.00000 0.51373
+0.80000 0.00000 0.52549
+0.80000 0.00000 0.52941
+0.80000 0.00000 0.53725
+0.80000 0.00000 0.54510
+0.80000 0.00000 0.55294
+0.79608 0.00000 0.56078
+0.79216 0.00000 0.56863
+0.78824 0.00000 0.57647
+0.78431 0.00000 0.58824
+0.78039 0.00000 0.59608
+0.77647 0.00000 0.60392
+0.77255 0.00000 0.61176
+0.76863 0.00000 0.62353
+0.76863 0.00000 0.62745
+0.76863 0.00000 0.63529
+0.76863 0.00000 0.63922
+0.76863 0.00000 0.64706
+0.76471 0.00000 0.65490
+0.76078 0.00000 0.66275
+0.75686 0.00000 0.67059
+0.75294 0.00000 0.68235
+0.74902 0.00000 0.69020
+0.74510 0.00000 0.69804
+0.74118 0.00000 0.70588
+0.73725 0.00000 0.71765
+0.73333 0.00000 0.72549
+0.72941 0.00000 0.73333
+0.72549 0.00000 0.74118
+0.72157 0.00000 0.75294
+0.72157 0.00000 0.75686
+0.72157 0.00000 0.76471
+0.72157 0.00000 0.77255
+0.72157 0.00000 0.78039
+0.71765 0.00000 0.78824
+0.71373 0.00000 0.79608
+0.70980 0.00000 0.80392
+0.70588 0.00000 0.81569
+0.70196 0.00000 0.82353
+0.69804 0.00000 0.83137
+0.69412 0.00000 0.83922
+0.69020 0.00000 0.84706
+0.69020 0.00000 0.85098
+0.69020 0.00000 0.85882
+0.69020 0.00000 0.86667
+0.69020 0.00000 0.87451
+0.68627 0.00000 0.88235
+0.68235 0.00000 0.89020
+0.67843 0.00000 0.89804
+0.67451 0.00000 0.90980
+0.67059 0.00000 0.91765
+0.66667 0.00000 0.92549
+0.66275 0.00000 0.93333
+0.65882 0.00000 0.94510
+0.65490 0.00000 0.95294
+0.65098 0.00000 0.96078
+0.64706 0.00000 0.96863
+0.64314 0.00000 0.98039
+0.64314 0.00000 0.98431
+0.64314 0.00000 0.98824
+0.64314 0.00000 0.99216
+0.64314 0.00000 1.00000
+0.63922 0.00000 1.00000
+0.63529 0.00000 1.00000
+0.63137 0.00000 1.00000
+0.62745 0.00000 1.00000
+0.62353 0.00000 1.00000
+0.61961 0.00000 1.00000
+0.61569 0.00000 1.00000
+0.61176 0.00000 1.00000
+0.60784 0.00000 1.00000
+0.60392 0.00000 1.00000
+0.60000 0.00000 1.00000
+0.59608 0.00000 1.00000
+0.59608 0.00000 1.00000
+0.59608 0.00000 1.00000
+0.59608 0.00000 1.00000
+0.59608 0.00000 1.00000
+0.59216 0.00000 1.00000
+0.58824 0.00000 1.00000
+0.58431 0.00000 1.00000
+0.58039 0.00000 1.00000
+0.59216 0.03137 1.00000
+0.60392 0.06275 1.00000
+0.61569 0.09412 1.00000
+0.62745 0.12549 1.00000
+0.63922 0.15686 1.00000
+0.65098 0.18824 1.00000
+0.66275 0.21961 1.00000
+0.67451 0.25098 1.00000
+0.69020 0.28235 1.00000
+0.70588 0.31373 1.00000
+0.72157 0.34510 1.00000
+0.73725 0.37647 1.00000
+0.74902 0.40784 1.00000
+0.76078 0.43922 1.00000
+0.77255 0.47059 1.00000
+0.78431 0.50196 1.00000
+0.79608 0.52941 1.00000
+0.80784 0.55686 1.00000
+0.81961 0.58431 1.00000
+0.83137 0.61176 1.00000
+0.84314 0.64314 1.00000
+0.85490 0.67451 1.00000
+0.86667 0.70588 1.00000
+0.87843 0.73725 1.00000
+0.89412 0.76863 1.00000
+0.90980 0.80000 1.00000
+0.92549 0.83137 1.00000
+0.94118 0.86275 1.00000
+0.95294 0.89412 1.00000
+0.96471 0.92549 1.00000
+0.97647 0.95686 1.00000
+0.98824 0.98824 1.00000
+0.99216 0.99216 1.00000
+0.99608 0.99608 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl4.lut b/vendor/x11iraf/ximtool/luts/idl4.lut
new file mode 100644
index 00000000..fad325f4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl4.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00784
+0.00000 0.00000 0.01569
+0.00000 0.00000 0.02353
+0.00000 0.00000 0.03137
+0.00000 0.00000 0.03922
+0.00000 0.00000 0.04706
+0.00000 0.00000 0.05490
+0.00000 0.00000 0.06275
+0.00000 0.00000 0.07059
+0.00000 0.00000 0.07843
+0.00000 0.00000 0.08627
+0.00000 0.00000 0.09804
+0.00000 0.00000 0.10588
+0.00000 0.00000 0.11373
+0.00000 0.00000 0.12157
+0.00000 0.00000 0.12941
+0.00000 0.00000 0.13725
+0.00000 0.00000 0.14510
+0.00000 0.00000 0.15294
+0.00000 0.00000 0.16078
+0.00000 0.00000 0.16863
+0.00000 0.00000 0.17647
+0.00000 0.00000 0.18431
+0.00000 0.00000 0.19608
+0.00000 0.00000 0.20392
+0.00000 0.00000 0.21176
+0.00000 0.00000 0.21961
+0.00000 0.00000 0.22745
+0.00000 0.00000 0.23529
+0.00000 0.00000 0.24314
+0.00000 0.00000 0.25098
+0.00000 0.00000 0.25882
+0.00000 0.01176 0.26667
+0.00000 0.02353 0.27451
+0.00000 0.03529 0.28235
+0.00000 0.04706 0.29412
+0.00000 0.05882 0.30196
+0.00000 0.07059 0.30980
+0.00000 0.08235 0.31765
+0.00000 0.09804 0.32549
+0.00000 0.10980 0.33333
+0.00000 0.12157 0.34118
+0.00000 0.13333 0.34902
+0.00000 0.14510 0.35686
+0.00000 0.15686 0.36471
+0.00000 0.16863 0.37255
+0.00000 0.18039 0.38039
+0.00000 0.19608 0.39216
+0.00000 0.20784 0.39216
+0.00000 0.21961 0.39216
+0.00000 0.23137 0.39216
+0.00000 0.24314 0.39216
+0.00000 0.25490 0.39216
+0.00000 0.26667 0.39216
+0.00000 0.27843 0.39216
+0.00000 0.29412 0.39216
+0.00000 0.30588 0.39216
+0.00000 0.31765 0.39216
+0.00000 0.32941 0.39216
+0.00000 0.34118 0.39216
+0.00000 0.35294 0.39216
+0.00000 0.36471 0.39216
+0.00000 0.37647 0.39216
+0.00000 0.39216 0.39216
+0.00000 0.40392 0.39216
+0.00000 0.41569 0.39216
+0.00000 0.42745 0.39216
+0.00000 0.43922 0.39216
+0.00000 0.45098 0.39216
+0.00000 0.46275 0.39216
+0.00000 0.47451 0.39216
+0.00000 0.49020 0.39216
+0.00000 0.50196 0.39216
+0.00000 0.51373 0.39216
+0.00000 0.52549 0.39216
+0.00000 0.53725 0.39216
+0.00000 0.54902 0.39216
+0.00000 0.56078 0.39216
+0.00000 0.57255 0.39216
+0.00000 0.58824 0.39216
+0.00000 0.58824 0.37647
+0.00000 0.58824 0.36471
+0.00000 0.58824 0.35294
+0.00000 0.58824 0.34118
+0.00000 0.58824 0.32941
+0.00000 0.58824 0.31765
+0.00000 0.58824 0.30588
+0.00000 0.58824 0.29412
+0.00000 0.58824 0.27843
+0.00000 0.58824 0.26667
+0.00000 0.58824 0.25490
+0.00000 0.58824 0.24314
+0.00000 0.58824 0.23137
+0.00000 0.58824 0.21961
+0.00000 0.58824 0.20784
+0.00000 0.58824 0.19608
+0.00000 0.58431 0.18039
+0.00000 0.58039 0.16863
+0.00000 0.58039 0.15686
+0.00000 0.57647 0.14510
+0.00000 0.57255 0.13333
+0.00000 0.57255 0.12157
+0.00000 0.56863 0.10980
+0.00000 0.56863 0.09804
+0.00000 0.56471 0.08235
+0.00000 0.56078 0.07059
+0.00000 0.56078 0.05882
+0.00000 0.55686 0.04706
+0.00000 0.55294 0.03529
+0.00000 0.55294 0.02353
+0.00000 0.54902 0.01176
+0.00000 0.54902 0.00000
+0.02745 0.53725 0.00000
+0.05882 0.52941 0.00000
+0.08627 0.51765 0.00000
+0.11765 0.50980 0.00000
+0.14510 0.49804 0.00000
+0.17647 0.49020 0.00000
+0.20392 0.47843 0.00000
+0.23529 0.47059 0.00000
+0.26275 0.45882 0.00000
+0.29412 0.45098 0.00000
+0.32157 0.43922 0.00000
+0.35294 0.43137 0.00000
+0.38039 0.41961 0.00000
+0.41176 0.41176 0.00000
+0.43922 0.40000 0.00000
+0.47059 0.39216 0.00000
+0.49020 0.36471 0.00000
+0.50980 0.34118 0.00000
+0.52941 0.31765 0.00000
+0.54902 0.29412 0.00000
+0.56863 0.26667 0.00000
+0.58824 0.24314 0.00000
+0.60784 0.21961 0.00000
+0.62745 0.19608 0.00000
+0.64706 0.16863 0.00000
+0.66667 0.14510 0.00000
+0.68627 0.12157 0.00000
+0.70588 0.09804 0.00000
+0.72549 0.07059 0.00000
+0.74510 0.04706 0.00000
+0.76471 0.02353 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00784 0.00000
+0.78824 0.01569 0.00000
+0.78824 0.02353 0.00000
+0.79216 0.03529 0.00000
+0.79216 0.04314 0.00000
+0.79608 0.05098 0.00000
+0.79608 0.06275 0.00000
+0.80000 0.07059 0.00000
+0.80000 0.07843 0.00000
+0.80392 0.09020 0.00000
+0.80392 0.09804 0.00000
+0.80784 0.10588 0.00000
+0.80784 0.11373 0.00000
+0.81176 0.12549 0.00000
+0.81176 0.13333 0.00000
+0.81569 0.14118 0.00000
+0.81569 0.15294 0.00000
+0.81961 0.16078 0.00000
+0.81961 0.16863 0.00000
+0.82353 0.18039 0.00000
+0.82353 0.18824 0.00000
+0.82745 0.19608 0.00000
+0.82745 0.20784 0.00000
+0.83137 0.21569 0.00000
+0.83137 0.22353 0.00000
+0.83529 0.23137 0.00000
+0.83529 0.24314 0.00000
+0.83922 0.25098 0.00000
+0.83922 0.25882 0.00000
+0.84314 0.27059 0.00000
+0.84314 0.27843 0.00000
+0.84706 0.28627 0.00000
+0.84706 0.29804 0.00000
+0.85098 0.30588 0.00000
+0.85098 0.31373 0.00000
+0.85490 0.32549 0.00000
+0.85490 0.33333 0.00000
+0.85882 0.34118 0.00000
+0.85882 0.34902 0.00000
+0.86275 0.36078 0.00000
+0.86275 0.36863 0.00000
+0.86667 0.37647 0.00000
+0.86667 0.38824 0.00000
+0.87059 0.39608 0.00000
+0.87059 0.40392 0.00000
+0.87451 0.41569 0.00000
+0.87451 0.42353 0.00000
+0.87843 0.43137 0.00000
+0.87843 0.44314 0.00000
+0.88235 0.45098 0.00000
+0.88235 0.45882 0.00000
+0.88627 0.46667 0.00000
+0.88627 0.47843 0.00000
+0.89020 0.48627 0.00000
+0.89020 0.49412 0.00000
+0.89412 0.50588 0.00000
+0.89412 0.51373 0.00000
+0.89804 0.52157 0.00000
+0.89804 0.53333 0.00000
+0.90196 0.54118 0.00000
+0.90196 0.54902 0.00000
+0.90588 0.55686 0.00000
+0.90588 0.56863 0.00000
+0.90980 0.57647 0.00000
+0.90980 0.58431 0.00000
+0.91373 0.59608 0.00000
+0.91373 0.60392 0.00000
+0.91765 0.61176 0.00000
+0.91765 0.62353 0.00000
+0.92157 0.63137 0.00000
+0.92157 0.63922 0.00000
+0.92549 0.65098 0.00000
+0.92549 0.65882 0.00000
+0.92941 0.66667 0.00000
+0.92941 0.67451 0.00000
+0.93333 0.68627 0.00000
+0.93333 0.69412 0.00000
+0.93725 0.70196 0.00000
+0.93725 0.71373 0.00000
+0.94118 0.72157 0.00000
+0.94118 0.72941 0.00000
+0.94510 0.74118 0.00000
+0.94510 0.74902 0.00000
+0.94902 0.75686 0.00000
+0.94902 0.76863 0.00000
+0.95294 0.77647 0.00000
+0.95294 0.78431 0.00000
+0.95686 0.79216 0.00000
+0.95686 0.80392 0.00000
+0.96078 0.81176 0.00000
+0.96078 0.81961 0.00000
+0.96471 0.83137 0.00000
+0.96471 0.83922 0.00000
+0.96863 0.84706 0.00000
+0.96863 0.85882 0.00000
+0.97255 0.86667 0.00000
+0.97255 0.87451 0.00000
+0.97647 0.88627 0.00000
+0.97647 0.89412 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90980 0.00000
+0.98431 0.92157 0.00000
+0.98431 0.92941 0.00000
+0.98824 0.93725 0.00000
+0.98824 0.94902 0.00000
+0.99216 0.95686 0.00000
+0.99216 0.96471 0.00000
+0.99608 0.97647 0.00000
+0.99608 0.98431 0.00000
+1.00000 0.99216 0.00000
+1.00000 1.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl5.lut b/vendor/x11iraf/ximtool/luts/idl5.lut
new file mode 100644
index 00000000..a557730b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl5.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.01961
+0.00000 0.00000 0.03922
+0.00000 0.00000 0.05882
+0.00000 0.00000 0.07843
+0.00000 0.00000 0.10196
+0.00000 0.00000 0.12157
+0.00000 0.00000 0.14118
+0.00000 0.00000 0.16078
+0.00000 0.00000 0.18039
+0.00000 0.00000 0.20392
+0.00000 0.00000 0.22353
+0.00000 0.00000 0.24314
+0.00000 0.00000 0.26275
+0.00000 0.00000 0.28235
+0.00000 0.00000 0.30588
+0.00000 0.00000 0.32549
+0.00000 0.00000 0.34510
+0.00000 0.00000 0.36471
+0.00000 0.00000 0.38431
+0.00000 0.00000 0.40784
+0.00000 0.00000 0.42745
+0.00000 0.00000 0.44706
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.48627
+0.00000 0.00000 0.50980
+0.00000 0.00000 0.52941
+0.00000 0.00000 0.54902
+0.00000 0.00000 0.56863
+0.00000 0.00000 0.58824
+0.00000 0.00000 0.61176
+0.00000 0.00000 0.63137
+0.00000 0.00000 0.65098
+0.00000 0.00000 0.67059
+0.00000 0.00000 0.69020
+0.00000 0.00000 0.71373
+0.00000 0.00000 0.73333
+0.00000 0.00000 0.75294
+0.00000 0.00000 0.77255
+0.00000 0.00000 0.79216
+0.00000 0.00000 0.81569
+0.00000 0.00000 0.83529
+0.00000 0.00000 0.85490
+0.00000 0.00000 0.87451
+0.00000 0.00000 0.89412
+0.00000 0.00000 0.91765
+0.00000 0.00000 0.93725
+0.00000 0.00000 0.95686
+0.01569 0.00000 0.97647
+0.03529 0.00000 1.00000
+0.05490 0.00000 0.98039
+0.07451 0.00000 0.96078
+0.09020 0.00000 0.93725
+0.10980 0.00000 0.91765
+0.12941 0.00000 0.89412
+0.14902 0.00000 0.87451
+0.16471 0.00000 0.85490
+0.18431 0.00000 0.83137
+0.20392 0.00000 0.81176
+0.22353 0.00000 0.78824
+0.23922 0.00000 0.76863
+0.25882 0.00000 0.74510
+0.27843 0.00000 0.72549
+0.29804 0.00000 0.70588
+0.31765 0.00000 0.68235
+0.31765 0.00000 0.66275
+0.31765 0.00000 0.63922
+0.31765 0.00000 0.61961
+0.31765 0.00000 0.59608
+0.31765 0.00000 0.57647
+0.31765 0.00000 0.55686
+0.31765 0.00000 0.53333
+0.31373 0.00000 0.51373
+0.31373 0.00000 0.49020
+0.31373 0.00000 0.47059
+0.31373 0.00000 0.44706
+0.31373 0.00000 0.42745
+0.31373 0.00000 0.40784
+0.31373 0.00000 0.38431
+0.30980 0.00000 0.36471
+0.32941 0.00000 0.34118
+0.34902 0.00000 0.32157
+0.36863 0.00000 0.29804
+0.38824 0.00000 0.27843
+0.40784 0.00000 0.25882
+0.42745 0.00000 0.23529
+0.44706 0.00000 0.21569
+0.46667 0.00000 0.19216
+0.48627 0.00000 0.17255
+0.50588 0.00000 0.14902
+0.52549 0.00000 0.12941
+0.54510 0.00000 0.10980
+0.56471 0.00000 0.08627
+0.58431 0.00000 0.06667
+0.60392 0.00000 0.04314
+0.62353 0.00000 0.02353
+0.64314 0.00000 0.00000
+0.66275 0.00000 0.00000
+0.68235 0.00000 0.00000
+0.70588 0.00000 0.00000
+0.72549 0.00000 0.00000
+0.74510 0.00000 0.00000
+0.76863 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.80784 0.00000 0.00000
+0.83137 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.87059 0.00000 0.00000
+0.89412 0.00000 0.00000
+0.91373 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.01961 0.00000
+1.00000 0.03922 0.00000
+1.00000 0.06275 0.00000
+1.00000 0.08235 0.00000
+1.00000 0.10588 0.00000
+1.00000 0.12549 0.00000
+1.00000 0.14510 0.00000
+1.00000 0.16863 0.00000
+1.00000 0.18824 0.00000
+1.00000 0.21176 0.00000
+1.00000 0.23137 0.00000
+1.00000 0.25098 0.00000
+1.00000 0.27451 0.00000
+1.00000 0.29412 0.00000
+1.00000 0.31765 0.00000
+1.00000 0.33333 0.01569
+1.00000 0.35294 0.03529
+1.00000 0.37255 0.05490
+1.00000 0.39216 0.07451
+1.00000 0.41176 0.09412
+1.00000 0.42745 0.10980
+1.00000 0.44706 0.12941
+1.00000 0.46667 0.14902
+1.00000 0.48627 0.16863
+1.00000 0.50588 0.18824
+1.00000 0.52549 0.20784
+1.00000 0.54118 0.22353
+1.00000 0.56078 0.24314
+1.00000 0.58039 0.26275
+1.00000 0.60000 0.28235
+1.00000 0.61961 0.30196
+1.00000 0.63922 0.32157
+1.00000 0.63922 0.30196
+1.00000 0.63922 0.27843
+1.00000 0.63922 0.25490
+1.00000 0.63922 0.23137
+1.00000 0.63922 0.20784
+1.00000 0.63922 0.18431
+1.00000 0.63922 0.16078
+1.00000 0.63922 0.14118
+1.00000 0.63922 0.11765
+1.00000 0.63922 0.09412
+1.00000 0.63922 0.07059
+1.00000 0.63922 0.04706
+1.00000 0.63922 0.02353
+1.00000 0.63922 0.00000
+1.00000 0.63922 0.00000
+1.00000 0.63922 0.00000
+1.00000 0.63922 0.00000
+0.97255 0.63922 0.00000
+0.94118 0.63922 0.00000
+0.90980 0.63922 0.00000
+0.88235 0.63922 0.00000
+0.85098 0.63922 0.00000
+0.81961 0.63922 0.00000
+0.79216 0.63922 0.00000
+0.76078 0.63922 0.00000
+0.72941 0.63922 0.00000
+0.70196 0.63922 0.00000
+0.67059 0.63922 0.00000
+0.63922 0.63922 0.00000
+0.65882 0.63922 0.00000
+0.67843 0.63922 0.00000
+0.69804 0.66275 0.01176
+0.71765 0.68627 0.02353
+0.73725 0.70980 0.03529
+0.75686 0.73333 0.04706
+0.77647 0.75686 0.06275
+0.79608 0.78039 0.07451
+0.81961 0.80392 0.08627
+0.83922 0.83137 0.09804
+0.85882 0.85490 0.11373
+0.87843 0.87843 0.12549
+0.89804 0.90196 0.13725
+0.91765 0.92549 0.14902
+0.93725 0.94902 0.16078
+0.95686 0.97255 0.17647
+0.97647 1.00000 0.18824
+1.00000 1.00000 0.20000
+1.00000 1.00000 0.21176
+1.00000 1.00000 0.22745
+1.00000 1.00000 0.23922
+1.00000 1.00000 0.25098
+1.00000 1.00000 0.26275
+1.00000 1.00000 0.27843
+1.00000 1.00000 0.29020
+1.00000 1.00000 0.30196
+1.00000 1.00000 0.31373
+1.00000 1.00000 0.32549
+1.00000 1.00000 0.34118
+1.00000 1.00000 0.35294
+1.00000 1.00000 0.36471
+1.00000 1.00000 0.37647
+1.00000 1.00000 0.39216
+1.00000 1.00000 0.40392
+1.00000 1.00000 0.41569
+1.00000 1.00000 0.42745
+1.00000 1.00000 0.43922
+1.00000 1.00000 0.45490
+1.00000 1.00000 0.46667
+1.00000 1.00000 0.47843
+1.00000 1.00000 0.49020
+1.00000 1.00000 0.50588
+1.00000 1.00000 0.51765
+1.00000 1.00000 0.52941
+1.00000 1.00000 0.54118
+1.00000 1.00000 0.55686
+1.00000 1.00000 0.56863
+1.00000 1.00000 0.58039
+1.00000 1.00000 0.59216
+1.00000 1.00000 0.60392
+1.00000 1.00000 0.61961
+1.00000 1.00000 0.63137
+1.00000 1.00000 0.64314
+1.00000 1.00000 0.65490
+1.00000 1.00000 0.67059
+1.00000 1.00000 0.68235
+1.00000 1.00000 0.69412
+1.00000 1.00000 0.70588
+1.00000 1.00000 0.71765
+1.00000 1.00000 0.73333
+1.00000 1.00000 0.74510
+1.00000 1.00000 0.75686
+1.00000 1.00000 0.76863
+1.00000 1.00000 0.78431
+1.00000 1.00000 0.79608
+1.00000 1.00000 0.80784
+1.00000 1.00000 0.81961
+1.00000 1.00000 0.83529
+1.00000 1.00000 0.84706
+1.00000 1.00000 0.85882
+1.00000 1.00000 0.87059
+1.00000 1.00000 0.88235
+1.00000 1.00000 0.89804
+1.00000 1.00000 0.90980
+1.00000 1.00000 0.92157
+1.00000 1.00000 0.93333
+1.00000 1.00000 0.94902
+1.00000 1.00000 0.96078
+1.00000 1.00000 0.97255
+1.00000 1.00000 0.98431
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/idl6.lut b/vendor/x11iraf/ximtool/luts/idl6.lut
new file mode 100644
index 00000000..c511860d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/idl6.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.01176 0.00000 0.00000
+0.02745 0.00000 0.00000
+0.04314 0.00000 0.00000
+0.05882 0.00000 0.00000
+0.07451 0.00000 0.00000
+0.08627 0.00000 0.00000
+0.10196 0.00000 0.00000
+0.11765 0.00000 0.00000
+0.13333 0.00000 0.00000
+0.14902 0.00000 0.00000
+0.16078 0.00000 0.00000
+0.17647 0.00000 0.00000
+0.19216 0.00000 0.00000
+0.20784 0.00000 0.00000
+0.22353 0.00000 0.00000
+0.23529 0.00000 0.00000
+0.25098 0.00000 0.00000
+0.26667 0.00000 0.00000
+0.28235 0.00000 0.00000
+0.29804 0.00000 0.00000
+0.30980 0.00000 0.00000
+0.32549 0.00000 0.00000
+0.34118 0.00000 0.00000
+0.35686 0.00000 0.00000
+0.37255 0.00000 0.00000
+0.38431 0.00000 0.00000
+0.40000 0.00000 0.00000
+0.41569 0.00000 0.00000
+0.43137 0.00000 0.00000
+0.44706 0.00000 0.00000
+0.45882 0.00000 0.00000
+0.47451 0.00000 0.00000
+0.49020 0.00000 0.00000
+0.50588 0.00000 0.00000
+0.52157 0.00000 0.00000
+0.53725 0.00000 0.00000
+0.54902 0.00000 0.00000
+0.56471 0.00000 0.00000
+0.58039 0.00000 0.00000
+0.59608 0.00000 0.00000
+0.61176 0.00000 0.00000
+0.62353 0.00000 0.00000
+0.63922 0.00000 0.00000
+0.65490 0.00000 0.00000
+0.67059 0.00000 0.00000
+0.68627 0.00000 0.00000
+0.69804 0.00000 0.00000
+0.71373 0.00000 0.00000
+0.72941 0.00000 0.00000
+0.74510 0.00000 0.00000
+0.76078 0.00000 0.00000
+0.77255 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.80392 0.00000 0.00000
+0.81961 0.00000 0.00000
+0.83529 0.00000 0.00000
+0.84706 0.00000 0.00000
+0.86275 0.00000 0.00000
+0.87843 0.00000 0.00000
+0.89412 0.00000 0.00000
+0.90980 0.00000 0.00000
+0.92157 0.00000 0.00000
+0.93725 0.00000 0.00000
+0.95294 0.00000 0.00000
+0.96863 0.01176 0.00000
+0.98431 0.02745 0.00000
+1.00000 0.04314 0.00000
+0.98431 0.05882 0.00000
+0.96863 0.07451 0.00000
+0.95294 0.09020 0.00000
+0.93725 0.10588 0.00000
+0.92157 0.12157 0.00000
+0.90196 0.13725 0.00000
+0.88627 0.15294 0.00000
+0.87059 0.16863 0.00000
+0.85490 0.18431 0.00000
+0.83922 0.20000 0.00000
+0.82353 0.21569 0.00000
+0.80392 0.23137 0.00000
+0.78824 0.24706 0.00000
+0.77255 0.26275 0.00000
+0.75686 0.27843 0.00000
+0.74118 0.29412 0.00000
+0.72157 0.30980 0.00000
+0.70588 0.32549 0.00000
+0.69020 0.34118 0.00000
+0.67451 0.35686 0.00000
+0.65882 0.37255 0.00000
+0.64314 0.38824 0.00000
+0.62353 0.40392 0.00000
+0.60784 0.41961 0.00000
+0.59216 0.43529 0.00000
+0.57647 0.45098 0.00000
+0.56078 0.46667 0.00000
+0.54118 0.48235 0.00000
+0.52549 0.49804 0.00000
+0.50980 0.51373 0.00000
+0.49412 0.52941 0.00000
+0.47843 0.54510 0.00000
+0.46275 0.56078 0.00000
+0.44314 0.57647 0.00000
+0.42745 0.59216 0.00000
+0.41176 0.60784 0.00000
+0.39608 0.62353 0.00000
+0.38039 0.63922 0.00000
+0.36078 0.65490 0.00000
+0.34510 0.67059 0.00000
+0.32941 0.68627 0.00000
+0.31373 0.70196 0.00000
+0.29804 0.71765 0.00000
+0.28235 0.73333 0.00000
+0.26275 0.74902 0.00000
+0.24706 0.76471 0.00000
+0.23137 0.78039 0.00000
+0.21569 0.79608 0.00000
+0.20000 0.81176 0.00000
+0.18039 0.82745 0.00000
+0.16471 0.84314 0.00000
+0.14902 0.85882 0.00000
+0.13333 0.87451 0.00000
+0.11765 0.89020 0.00000
+0.10196 0.90588 0.00000
+0.08235 0.92157 0.00000
+0.06667 0.93725 0.00000
+0.05098 0.95294 0.00000
+0.03529 0.96863 0.00000
+0.01961 0.98431 0.01176
+0.00000 1.00000 0.02745
+0.00000 0.98431 0.04314
+0.00000 0.96863 0.05882
+0.00000 0.95294 0.07451
+0.00000 0.93725 0.09020
+0.00000 0.92157 0.10588
+0.00000 0.90588 0.11765
+0.00000 0.89020 0.13333
+0.00000 0.87451 0.14902
+0.00000 0.85882 0.16471
+0.00000 0.84314 0.18039
+0.00000 0.82745 0.19608
+0.00000 0.81176 0.21176
+0.00000 0.79608 0.22353
+0.00000 0.78039 0.23922
+0.00000 0.76471 0.25490
+0.00000 0.74902 0.27059
+0.00000 0.73333 0.28627
+0.00000 0.71765 0.30196
+0.00000 0.70196 0.31765
+0.00000 0.68627 0.33333
+0.00000 0.66667 0.34510
+0.00000 0.65098 0.36078
+0.00000 0.63529 0.37647
+0.00000 0.61961 0.39216
+0.00000 0.60392 0.40784
+0.00000 0.58824 0.42353
+0.00000 0.57255 0.43922
+0.00000 0.55686 0.45098
+0.00000 0.54118 0.46667
+0.00000 0.52549 0.48235
+0.00000 0.50980 0.49804
+0.00000 0.49412 0.51373
+0.00000 0.47843 0.52941
+0.00000 0.46275 0.54510
+0.00000 0.44706 0.55686
+0.00000 0.43137 0.57255
+0.00000 0.41569 0.58824
+0.00000 0.40000 0.60392
+0.00000 0.38431 0.61961
+0.00000 0.36863 0.63529
+0.00000 0.35294 0.65098
+0.00000 0.33333 0.66667
+0.00000 0.31765 0.67843
+0.00000 0.30196 0.69412
+0.00000 0.28627 0.70980
+0.00000 0.27059 0.72549
+0.00000 0.25490 0.74118
+0.00000 0.23922 0.75686
+0.00000 0.22353 0.77255
+0.00000 0.20784 0.78431
+0.00000 0.19216 0.80000
+0.00000 0.17647 0.81569
+0.00000 0.16078 0.83137
+0.00000 0.14510 0.84706
+0.00000 0.12941 0.86275
+0.00000 0.11373 0.87843
+0.00000 0.09804 0.89020
+0.00000 0.08235 0.90588
+0.00000 0.06667 0.92157
+0.00000 0.05098 0.93725
+0.00000 0.03529 0.95294
+0.00000 0.01961 0.96863
+0.00000 0.00000 0.98431
+0.00000 0.00000 1.00000
+0.00000 0.00000 0.98431
+0.00000 0.00000 0.96863
+0.00000 0.00000 0.95294
+0.00000 0.00000 0.93725
+0.00000 0.00000 0.92157
+0.00000 0.00000 0.90588
+0.00000 0.00000 0.89020
+0.00000 0.00000 0.87451
+0.00000 0.00000 0.85882
+0.00000 0.00000 0.84314
+0.00000 0.00000 0.82745
+0.00000 0.00000 0.81176
+0.00000 0.00000 0.79608
+0.00000 0.00000 0.78039
+0.00000 0.00000 0.76471
+0.00000 0.00000 0.74902
+0.00000 0.00000 0.73333
+0.00000 0.00000 0.71765
+0.00000 0.00000 0.70196
+0.00000 0.00000 0.68627
+0.00000 0.00000 0.66667
+0.00000 0.00000 0.65098
+0.00000 0.00000 0.63529
+0.00000 0.00000 0.61961
+0.00000 0.00000 0.60392
+0.00000 0.00000 0.58824
+0.00000 0.00000 0.57255
+0.00000 0.00000 0.55686
+0.00000 0.00000 0.54118
+0.00000 0.00000 0.52549
+0.00000 0.00000 0.50980
+0.00000 0.00000 0.49412
+0.00000 0.00000 0.47843
+0.00000 0.00000 0.46275
+0.00000 0.00000 0.44706
+0.00000 0.00000 0.43137
+0.00000 0.00000 0.41569
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.38431
+0.00000 0.00000 0.36863
+0.00000 0.00000 0.35294
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.31765
+0.00000 0.00000 0.30196
+0.00000 0.00000 0.28627
+0.00000 0.00000 0.27059
+0.00000 0.00000 0.25490
+0.00000 0.00000 0.23922
+0.00000 0.00000 0.22353
+0.00000 0.00000 0.20784
+0.00000 0.00000 0.19216
+0.00000 0.00000 0.17647
+0.00000 0.00000 0.16078
+0.00000 0.00000 0.14510
+0.00000 0.00000 0.12941
+0.00000 0.00000 0.11373
+0.00000 0.00000 0.09804
+0.00000 0.00000 0.08235
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.05098
+0.00000 0.00000 0.03529
+0.00000 0.00000 0.01961
+0.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/ikon.lut b/vendor/x11iraf/ximtool/luts/ikon.lut
new file mode 100644
index 00000000..c930305d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/ikon.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.14118 0.00000
+0.00000 0.28235 0.00000
+0.00000 0.42353 0.00000
+0.00000 0.56471 0.00000
+0.00000 0.70588 0.00000
+0.00000 0.84706 0.00000
+0.00000 0.98824 0.00000
+0.00000 0.00000 0.14118
+0.00000 0.14118 0.14118
+0.00000 0.28235 0.14118
+0.00000 0.42353 0.14118
+0.00000 0.56471 0.14118
+0.00000 0.70588 0.14118
+0.00000 0.84706 0.14118
+0.00000 0.98824 0.14118
+0.00000 0.00000 0.28235
+0.00000 0.14118 0.28235
+0.00000 0.28235 0.28235
+0.00000 0.42353 0.28235
+0.00000 0.56471 0.28235
+0.00000 0.70588 0.28235
+0.00000 0.84706 0.28235
+0.00000 0.98824 0.28235
+0.00000 0.00000 0.42353
+0.00000 0.14118 0.42353
+0.00000 0.28235 0.42353
+0.00000 0.42353 0.42353
+0.00000 0.56471 0.42353
+0.00000 0.70588 0.42353
+0.00000 0.84706 0.42353
+0.00000 0.98824 0.42353
+0.00000 0.00000 0.56471
+0.00000 0.14118 0.56471
+0.00000 0.28235 0.56471
+0.00000 0.42353 0.56471
+0.00000 0.56471 0.56471
+0.00000 0.70588 0.56471
+0.00000 0.84706 0.56471
+0.00000 0.98824 0.56471
+0.00000 0.00000 0.70588
+0.00000 0.14118 0.70588
+0.00000 0.28235 0.70588
+0.00000 0.42353 0.70588
+0.00000 0.56471 0.70588
+0.00000 0.70588 0.70588
+0.00000 0.84706 0.70588
+0.00000 0.98824 0.70588
+0.00000 0.00000 0.84706
+0.00000 0.14118 0.84706
+0.00000 0.28235 0.84706
+0.00000 0.42353 0.84706
+0.00000 0.56471 0.84706
+0.00000 0.70588 0.84706
+0.00000 0.84706 0.84706
+0.00000 0.98824 0.84706
+0.00000 0.00000 0.98824
+0.00000 0.14118 0.98824
+0.00000 0.28235 0.98824
+0.00000 0.42353 0.98824
+0.00000 0.56471 0.98824
+0.00000 0.70588 0.98824
+0.00000 0.84706 0.98824
+0.00000 0.98824 0.98824
+0.00000 0.00000 0.00000
+0.32941 0.14118 0.00000
+0.32941 0.28235 0.00000
+0.32941 0.42353 0.00000
+0.32941 0.56471 0.00000
+0.32941 0.70588 0.00000
+0.32941 0.84706 0.00000
+0.32941 0.98824 0.00000
+0.32941 0.00000 0.14118
+0.32941 0.14118 0.14118
+0.32941 0.28235 0.14118
+0.32941 0.42353 0.14118
+0.32941 0.56471 0.14118
+0.32941 0.70588 0.14118
+0.32941 0.84706 0.14118
+0.32941 0.98824 0.14118
+0.32941 0.00000 0.28235
+0.32941 0.14118 0.28235
+0.32941 0.28235 0.28235
+0.32941 0.42353 0.28235
+0.32941 0.56471 0.28235
+0.32941 0.70588 0.28235
+0.32941 0.84706 0.28235
+0.32941 0.98824 0.28235
+0.32941 0.00000 0.42353
+0.32941 0.14118 0.42353
+0.32941 0.28235 0.42353
+0.32941 0.42353 0.42353
+0.32941 0.56471 0.42353
+0.32941 0.70588 0.42353
+0.32941 0.84706 0.42353
+0.32941 0.98824 0.42353
+0.32941 0.00000 0.56471
+0.32941 0.14118 0.56471
+0.32941 0.28235 0.56471
+0.32941 0.42353 0.56471
+0.32941 0.56471 0.56471
+0.32941 0.70588 0.56471
+0.32941 0.84706 0.56471
+0.32941 0.98824 0.56471
+0.32941 0.00000 0.70588
+0.32941 0.14118 0.70588
+0.32941 0.28235 0.70588
+0.32941 0.42353 0.70588
+0.32941 0.56471 0.70588
+0.32941 0.70588 0.70588
+0.32941 0.84706 0.70588
+0.32941 0.98824 0.70588
+0.32941 0.00000 0.84706
+0.32941 0.14118 0.84706
+0.32941 0.28235 0.84706
+0.32941 0.42353 0.84706
+0.32941 0.56471 0.84706
+0.32941 0.70588 0.84706
+0.32941 0.84706 0.84706
+0.32941 0.98824 0.84706
+0.32941 0.00000 0.98824
+0.32941 0.14118 0.98824
+0.32941 0.28235 0.98824
+0.32941 0.42353 0.98824
+0.32941 0.56471 0.98824
+0.32941 0.70588 0.98824
+0.32941 0.84706 0.98824
+0.32941 0.98824 0.98824
+0.32941 0.00000 0.00000
+0.65882 0.14118 0.00000
+0.65882 0.28235 0.00000
+0.65882 0.42353 0.00000
+0.65882 0.56471 0.00000
+0.65882 0.70588 0.00000
+0.65882 0.84706 0.00000
+0.65882 0.98824 0.00000
+0.65882 0.00000 0.14118
+0.65882 0.14118 0.14118
+0.65882 0.28235 0.14118
+0.65882 0.42353 0.14118
+0.65882 0.56471 0.14118
+0.65882 0.70588 0.14118
+0.65882 0.84706 0.14118
+0.65882 0.98824 0.14118
+0.65882 0.00000 0.28235
+0.65882 0.14118 0.28235
+0.65882 0.28235 0.28235
+0.65882 0.42353 0.28235
+0.65882 0.56471 0.28235
+0.65882 0.70588 0.28235
+0.65882 0.84706 0.28235
+0.65882 0.98824 0.28235
+0.65882 0.00000 0.42353
+0.65882 0.14118 0.42353
+0.65882 0.28235 0.42353
+0.65882 0.42353 0.42353
+0.65882 0.56471 0.42353
+0.65882 0.70588 0.42353
+0.65882 0.84706 0.42353
+0.65882 0.98824 0.42353
+0.65882 0.00000 0.56471
+0.65882 0.14118 0.56471
+0.65882 0.28235 0.56471
+0.65882 0.42353 0.56471
+0.65882 0.56471 0.56471
+0.65882 0.70588 0.56471
+0.65882 0.84706 0.56471
+0.65882 0.98824 0.56471
+0.65882 0.00000 0.70588
+0.65882 0.14118 0.70588
+0.65882 0.28235 0.70588
+0.65882 0.42353 0.70588
+0.65882 0.56471 0.70588
+0.65882 0.70588 0.70588
+0.65882 0.84706 0.70588
+0.65882 0.98824 0.70588
+0.65882 0.00000 0.84706
+0.65882 0.14118 0.84706
+0.65882 0.28235 0.84706
+0.65882 0.42353 0.84706
+0.65882 0.56471 0.84706
+0.65882 0.70588 0.84706
+0.65882 0.84706 0.84706
+0.65882 0.98824 0.84706
+0.65882 0.00000 0.98824
+0.65882 0.14118 0.98824
+0.65882 0.28235 0.98824
+0.65882 0.42353 0.98824
+0.65882 0.56471 0.98824
+0.65882 0.70588 0.98824
+0.65882 0.84706 0.98824
+0.65882 0.98824 0.98824
+0.65882 0.00000 0.00000
+0.98824 0.14118 0.00000
+0.98824 0.28235 0.00000
+0.98824 0.42353 0.00000
+0.98824 0.56471 0.00000
+0.98824 0.70588 0.00000
+0.98824 0.84706 0.00000
+0.98824 0.98824 0.00000
+0.98824 0.00000 0.14118
+0.98824 0.14118 0.14118
+0.98824 0.28235 0.14118
+0.98824 0.42353 0.14118
+0.98824 0.56471 0.14118
+0.98824 0.70588 0.14118
+0.98824 0.84706 0.14118
+0.98824 0.98824 0.14118
+0.98824 0.00000 0.28235
+0.98824 0.14118 0.28235
+0.98824 0.28235 0.28235
+0.98824 0.42353 0.28235
+0.98824 0.56471 0.28235
+0.98824 0.70588 0.28235
+0.98824 0.84706 0.28235
+0.98824 0.98824 0.28235
+0.98824 0.00000 0.42353
+0.98824 0.14118 0.42353
+0.98824 0.28235 0.42353
+0.98824 0.42353 0.42353
+0.98824 0.56471 0.42353
+0.98824 0.70588 0.42353
+0.98824 0.84706 0.42353
+0.98824 0.98824 0.42353
+0.98824 0.00000 0.56471
+0.98824 0.14118 0.56471
+0.98824 0.28235 0.56471
+0.98824 0.42353 0.56471
+0.98824 0.56471 0.56471
+0.98824 0.70588 0.56471
+0.98824 0.84706 0.56471
+0.98824 0.98824 0.56471
+0.98824 0.00000 0.70588
+0.98824 0.14118 0.70588
+0.98824 0.28235 0.70588
+0.98824 0.42353 0.70588
+0.98824 0.56471 0.70588
+0.98824 0.70588 0.70588
+0.98824 0.84706 0.70588
+0.98824 0.98824 0.70588
+0.98824 0.00000 0.84706
+0.98824 0.14118 0.84706
+0.98824 0.28235 0.84706
+0.98824 0.42353 0.84706
+0.98824 0.56471 0.84706
+0.98824 0.70588 0.84706
+0.98824 0.84706 0.84706
+0.98824 0.98824 0.84706
+0.98824 0.00000 0.98824
+0.98824 0.14118 0.98824
+0.98824 0.28235 0.98824
+0.98824 0.42353 0.98824
+0.98824 0.56471 0.98824
+0.98824 0.70588 0.98824
+0.98824 0.84706 0.98824
+0.98824 0.98824 0.98824
diff --git a/vendor/x11iraf/ximtool/luts/isophot.lut b/vendor/x11iraf/ximtool/luts/isophot.lut
new file mode 100644
index 00000000..70df9c7b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/isophot.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.03922
+0.00000 0.00000 0.07843
+0.00000 0.00000 0.11765
+0.00000 0.00000 0.15686
+0.00000 0.00000 0.19608
+0.00000 0.00000 0.23529
+0.00000 0.00000 0.27843
+0.00000 0.00000 0.31765
+0.00000 0.00000 0.35686
+0.00000 0.00000 0.39608
+0.00000 0.00000 0.43529
+0.00000 0.00000 0.47451
+0.00000 0.00000 0.51765
+0.00000 0.00000 0.55686
+0.00000 0.00000 0.59608
+0.00000 0.00000 0.63529
+0.00000 0.00000 0.67451
+0.00000 0.00000 0.71765
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.00000 0.00000 0.87843
+0.00000 0.00000 0.91765
+0.00000 0.00000 0.95686
+0.00000 0.00000 1.00000
+0.00000 0.03137 1.00000
+0.00000 0.06275 1.00000
+0.00000 0.09412 1.00000
+0.00000 0.12549 1.00000
+0.00000 0.15686 1.00000
+0.00000 0.18824 1.00000
+0.00000 0.21961 1.00000
+0.00000 0.25490 1.00000
+0.00000 0.28627 1.00000
+0.00000 0.31765 1.00000
+0.00000 0.34902 1.00000
+0.00000 0.38039 1.00000
+0.00000 0.41176 1.00000
+0.00000 0.44314 1.00000
+0.00000 0.47843 1.00000
+0.00000 0.49804 1.00000
+0.00000 0.51765 1.00000
+0.00000 0.53725 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.00000 0.61961 1.00000
+0.00000 0.63922 1.00000
+0.00000 0.65882 1.00000
+0.00000 0.67843 1.00000
+0.00000 0.70196 1.00000
+0.00000 0.72157 1.00000
+0.00000 0.74118 1.00000
+0.00000 0.76078 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.79608 1.00000
+0.00000 0.81176 1.00000
+0.00000 0.82353 1.00000
+0.00000 0.83922 1.00000
+0.00000 0.85490 1.00000
+0.00000 0.86667 1.00000
+0.00000 0.88235 1.00000
+0.00000 0.89412 1.00000
+0.00000 0.90980 1.00000
+0.00000 0.92549 1.00000
+0.00000 0.93725 1.00000
+0.00000 0.95294 1.00000
+0.00000 0.96863 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.00000 1.00000 0.96078
+0.00000 1.00000 0.94118
+0.00000 1.00000 0.92157
+0.00000 1.00000 0.90196
+0.00000 1.00000 0.88235
+0.00000 1.00000 0.86275
+0.00000 1.00000 0.84314
+0.00000 1.00000 0.82353
+0.00000 1.00000 0.80392
+0.00000 1.00000 0.78431
+0.00000 1.00000 0.76471
+0.00000 1.00000 0.74510
+0.00000 1.00000 0.72549
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.65490
+0.00000 1.00000 0.60784
+0.00000 1.00000 0.56078
+0.00000 1.00000 0.51373
+0.00000 1.00000 0.46667
+0.00000 1.00000 0.41961
+0.00000 1.00000 0.37255
+0.00000 1.00000 0.32549
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.00000 1.00000 0.13725
+0.00000 1.00000 0.09020
+0.00000 1.00000 0.04314
+0.00000 1.00000 0.00000
+0.04706 1.00000 0.00000
+0.09412 1.00000 0.00000
+0.14118 1.00000 0.00000
+0.18824 1.00000 0.00000
+0.23529 1.00000 0.00000
+0.28235 1.00000 0.00000
+0.32941 1.00000 0.00000
+0.37647 1.00000 0.00000
+0.42353 1.00000 0.00000
+0.47059 1.00000 0.00000
+0.51765 1.00000 0.00000
+0.56471 1.00000 0.00000
+0.61176 1.00000 0.00000
+0.65882 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.72549 1.00000 0.00000
+0.74510 1.00000 0.00000
+0.76471 1.00000 0.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.84314 1.00000 0.00000
+0.86275 1.00000 0.00000
+0.88235 1.00000 0.00000
+0.90196 1.00000 0.00000
+0.92157 1.00000 0.00000
+0.94118 1.00000 0.00000
+0.96078 1.00000 0.00000
+0.98039 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 0.98039 0.00000
+0.99608 0.96078 0.00000
+0.99608 0.94118 0.00000
+0.99608 0.92549 0.00000
+0.99216 0.90588 0.00000
+0.99216 0.88627 0.00000
+0.99216 0.87059 0.00000
+0.99216 0.85098 0.00000
+0.98824 0.83137 0.00000
+0.98824 0.81569 0.00000
+0.98824 0.79608 0.00000
+0.98824 0.77647 0.00000
+0.98824 0.76078 0.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.98824 0.69020 0.00000
+0.98824 0.67059 0.00000
+0.98824 0.65490 0.00000
+0.98824 0.63922 0.00000
+0.98824 0.61961 0.00000
+0.99216 0.60392 0.00000
+0.99216 0.58824 0.00000
+0.99216 0.56863 0.00000
+0.99216 0.55294 0.00000
+0.99608 0.53725 0.00000
+0.99608 0.51765 0.00000
+0.99608 0.50196 0.00000
+0.99608 0.48627 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.43529 0.00000
+1.00000 0.40392 0.00000
+1.00000 0.37255 0.00000
+1.00000 0.34118 0.00000
+1.00000 0.30980 0.00000
+1.00000 0.27843 0.00000
+1.00000 0.24706 0.00000
+1.00000 0.21569 0.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.09020 0.00000
+1.00000 0.05882 0.00000
+1.00000 0.02745 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.04706
+1.00000 0.00000 0.09412
+1.00000 0.00000 0.14118
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.00000 0.32941
+1.00000 0.00000 0.37647
+1.00000 0.00000 0.42353
+1.00000 0.00000 0.47059
+1.00000 0.00000 0.51765
+1.00000 0.00000 0.56471
+1.00000 0.00000 0.61176
+1.00000 0.00000 0.65882
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.72549
+1.00000 0.00000 0.74902
+1.00000 0.00000 0.77255
+1.00000 0.00000 0.79608
+1.00000 0.00000 0.81569
+1.00000 0.00000 0.83922
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.88627
+1.00000 0.00000 0.90588
+1.00000 0.00000 0.92941
+1.00000 0.00000 0.95294
+1.00000 0.00000 0.97647
+1.00000 0.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.14118 1.00000
+1.00000 0.17647 1.00000
+1.00000 0.21176 1.00000
+1.00000 0.25098 1.00000
+1.00000 0.28627 1.00000
+1.00000 0.32157 1.00000
+1.00000 0.36078 1.00000
+1.00000 0.39608 1.00000
+1.00000 0.43137 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.48627 1.00000
+1.00000 0.50588 1.00000
+1.00000 0.52157 1.00000
+1.00000 0.54118 1.00000
+1.00000 0.56078 1.00000
+1.00000 0.57647 1.00000
+1.00000 0.59608 1.00000
+1.00000 0.61176 1.00000
+1.00000 0.63137 1.00000
+1.00000 0.65098 1.00000
+1.00000 0.66667 1.00000
+1.00000 0.68627 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.74510 1.00000
+1.00000 0.78824 1.00000
+1.00000 0.83137 1.00000
+1.00000 0.87059 1.00000
+1.00000 0.91373 1.00000
+1.00000 0.95686 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/light.lut b/vendor/x11iraf/ximtool/luts/light.lut
new file mode 100644
index 00000000..a58c7120
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/light.lut
@@ -0,0 +1,256 @@
+0.00000 0.00392 0.00000
+0.00000 0.00784 0.01961
+0.00000 0.01176 0.05490
+0.00000 0.01569 0.08627
+0.00000 0.01961 0.10980
+0.00000 0.02353 0.13725
+0.00000 0.02745 0.15686
+0.00000 0.03137 0.18039
+0.00000 0.03529 0.20000
+0.00000 0.03922 0.21569
+0.00000 0.04314 0.23529
+0.00000 0.04706 0.25098
+0.00000 0.05098 0.26275
+0.00000 0.05490 0.28235
+0.00000 0.05882 0.29412
+0.00000 0.06275 0.30588
+0.00000 0.06667 0.31765
+0.00000 0.07059 0.33333
+0.00000 0.07451 0.34118
+0.00000 0.07843 0.35294
+0.00000 0.08235 0.36078
+0.00000 0.08627 0.37255
+0.00000 0.09020 0.38431
+0.00000 0.09412 0.39216
+0.00392 0.09804 0.40000
+0.00784 0.10196 0.41176
+0.01176 0.10588 0.41961
+0.01569 0.10980 0.43137
+0.01569 0.11373 0.43529
+0.01961 0.11765 0.44314
+0.02353 0.12157 0.45098
+0.02745 0.12549 0.45882
+0.02745 0.12941 0.46667
+0.03137 0.13333 0.47059
+0.03529 0.13725 0.48235
+0.04314 0.14118 0.48627
+0.04706 0.14510 0.49412
+0.05098 0.14902 0.50196
+0.05882 0.15294 0.50588
+0.06667 0.15686 0.50980
+0.07451 0.16078 0.51765
+0.08235 0.16471 0.52157
+0.09020 0.16863 0.53333
+0.09804 0.17255 0.53725
+0.10588 0.17647 0.54118
+0.11765 0.18039 0.54902
+0.12941 0.18431 0.55294
+0.14118 0.18824 0.55686
+0.15294 0.19216 0.56078
+0.16471 0.19608 0.56471
+0.18039 0.20000 0.57255
+0.18824 0.20392 0.58039
+0.20000 0.20784 0.58431
+0.21569 0.21176 0.58824
+0.23137 0.21569 0.59216
+0.24706 0.21961 0.59608
+0.26275 0.22353 0.60000
+0.27843 0.22745 0.60392
+0.29412 0.23137 0.60784
+0.30980 0.23529 0.61176
+0.32941 0.23922 0.61569
+0.34902 0.24314 0.61961
+0.36863 0.24706 0.62745
+0.38431 0.25098 0.63137
+0.40392 0.25490 0.63529
+0.41569 0.25882 0.63922
+0.43529 0.26275 0.64314
+0.45490 0.26667 0.64706
+0.47059 0.27059 0.65098
+0.48627 0.27451 0.65490
+0.50196 0.27843 0.65490
+0.51765 0.28235 0.65882
+0.52941 0.28627 0.66275
+0.54902 0.29020 0.66667
+0.56471 0.29412 0.67059
+0.58039 0.29804 0.67843
+0.59216 0.30196 0.67843
+0.60392 0.30588 0.68235
+0.61961 0.30980 0.68627
+0.63137 0.31373 0.69020
+0.63922 0.31765 0.69020
+0.65098 0.32157 0.69412
+0.65882 0.32549 0.69804
+0.67059 0.32941 0.70196
+0.67843 0.33333 0.70196
+0.69020 0.33725 0.70588
+0.69804 0.34118 0.70980
+0.70588 0.34510 0.71373
+0.71373 0.34902 0.71373
+0.72157 0.35294 0.71765
+0.72941 0.35686 0.72157
+0.73725 0.36078 0.72157
+0.74510 0.36471 0.72941
+0.75294 0.36863 0.73333
+0.76078 0.37255 0.73333
+0.76863 0.37647 0.73725
+0.77647 0.38039 0.74118
+0.78039 0.38431 0.74118
+0.78824 0.38824 0.74510
+0.79608 0.39216 0.74510
+0.80392 0.39608 0.74902
+0.80784 0.40000 0.75294
+0.81176 0.40392 0.75294
+0.81961 0.40784 0.75686
+0.82353 0.41176 0.76078
+0.82745 0.41569 0.76078
+0.83529 0.41961 0.76471
+0.83922 0.42353 0.76471
+0.84314 0.42745 0.76863
+0.84706 0.43137 0.76863
+0.85098 0.43529 0.77255
+0.85490 0.43922 0.78039
+0.85882 0.44314 0.78039
+0.86275 0.44706 0.78431
+0.86667 0.45098 0.78431
+0.87059 0.45490 0.78824
+0.87451 0.45882 0.78824
+0.87843 0.46275 0.79216
+0.88235 0.46667 0.79216
+0.88627 0.47059 0.79608
+0.89020 0.47451 0.79608
+0.89412 0.47843 0.80000
+0.89804 0.48235 0.80000
+0.89804 0.48627 0.80392
+0.90196 0.49020 0.80392
+0.90588 0.49412 0.80784
+0.90980 0.49804 0.80784
+0.91373 0.50196 0.81176
+0.91373 0.50588 0.81176
+0.91765 0.50980 0.81569
+0.92157 0.51373 0.81569
+0.92157 0.51765 0.81961
+0.92549 0.52157 0.81961
+0.92941 0.52549 0.82745
+0.92941 0.52941 0.82745
+0.93333 0.53333 0.83137
+0.93725 0.53725 0.83137
+0.93725 0.54118 0.83529
+0.93725 0.54510 0.83529
+0.94118 0.54902 0.83922
+0.94118 0.55294 0.83922
+0.94510 0.55686 0.83922
+0.94510 0.56078 0.84314
+0.94902 0.56471 0.84314
+0.94902 0.56863 0.84706
+0.95294 0.57255 0.84706
+0.95294 0.57647 0.85098
+0.95294 0.58039 0.85098
+0.95686 0.58431 0.85490
+0.95686 0.58824 0.85490
+0.96078 0.59216 0.85490
+0.96078 0.59608 0.85882
+0.96078 0.60000 0.85882
+0.96471 0.60392 0.86275
+0.96471 0.60784 0.86275
+0.96471 0.61176 0.86275
+0.96863 0.61569 0.86667
+0.96863 0.61961 0.86667
+0.97255 0.62353 0.87059
+0.97255 0.62745 0.87059
+0.97255 0.63137 0.87059
+0.97647 0.63529 0.87843
+0.97647 0.63922 0.87843
+0.98039 0.64314 0.88235
+0.98039 0.64706 0.88235
+0.98039 0.65098 0.88235
+0.98431 0.65490 0.88627
+0.98431 0.65882 0.88627
+0.98431 0.66275 0.89020
+0.98824 0.66667 0.89020
+0.98824 0.67059 0.89020
+0.98824 0.67451 0.89412
+0.99216 0.67843 0.89412
+0.99216 0.68235 0.89412
+0.99216 0.68627 0.89804
+0.99216 0.69020 0.89804
+0.99216 0.69412 0.89804
+0.99608 0.69804 0.90196
+0.99608 0.70196 0.90196
+0.99608 0.70588 0.90588
+0.99608 0.70980 0.90588
+0.99608 0.71373 0.90588
+0.99608 0.71765 0.90980
+0.99608 0.72157 0.90980
+0.99608 0.72549 0.90980
+0.99608 0.72941 0.91373
+0.99608 0.73333 0.91373
+0.99608 0.73725 0.91373
+0.99608 0.74118 0.91765
+0.99608 0.74510 0.91765
+0.99608 0.74902 0.91765
+0.99608 0.75294 0.92157
+0.99608 0.75686 0.92157
+0.99608 0.76078 0.92157
+0.99608 0.76471 0.92941
+0.99608 0.76863 0.92941
+0.99608 0.77255 0.92941
+0.99608 0.77647 0.93333
+0.99608 0.78039 0.93333
+0.99608 0.78431 0.93333
+0.99608 0.78824 0.93725
+1.00000 0.79216 0.93725
+1.00000 0.79608 0.93725
+1.00000 0.80000 0.94118
+1.00000 0.80392 0.94118
+1.00000 0.80784 0.94118
+1.00000 0.81176 0.94118
+1.00000 0.81569 0.94510
+1.00000 0.81961 0.94510
+1.00000 0.82353 0.94510
+1.00000 0.82745 0.94902
+1.00000 0.83137 0.94902
+1.00000 0.83529 0.94902
+1.00000 0.83922 0.95294
+1.00000 0.84314 0.95294
+1.00000 0.84706 0.95294
+1.00000 0.85098 0.95686
+1.00000 0.85490 0.95686
+1.00000 0.85882 0.95686
+1.00000 0.86275 0.95686
+1.00000 0.86667 0.96078
+1.00000 0.87059 0.96078
+1.00000 0.87451 0.96078
+1.00000 0.87843 0.96471
+1.00000 0.88235 0.96471
+1.00000 0.88627 0.96471
+1.00000 0.89020 0.96471
+1.00000 0.89412 0.96863
+1.00000 0.89804 0.96863
+1.00000 0.90196 0.96863
+1.00000 0.90588 0.97255
+1.00000 0.90980 0.97255
+1.00000 0.91373 0.97255
+1.00000 0.91765 0.97255
+1.00000 0.92157 0.98039
+1.00000 0.92549 0.98039
+1.00000 0.92941 0.98039
+1.00000 0.93333 0.98039
+1.00000 0.93725 0.98431
+1.00000 0.94118 0.98431
+1.00000 0.94510 0.98431
+1.00000 0.94902 0.98824
+1.00000 0.95294 0.98824
+1.00000 0.95686 0.98824
+1.00000 0.96078 0.98824
+1.00000 0.96471 0.99216
+1.00000 0.96863 0.99216
+1.00000 0.97255 0.99216
+1.00000 0.97647 0.99216
+1.00000 0.98039 0.99608
+1.00000 0.98431 0.99608
+1.00000 0.98824 0.99608
+1.00000 0.99216 0.99608
+1.00000 0.99608 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/lnspiral.lut b/vendor/x11iraf/ximtool/luts/lnspiral.lut
new file mode 100644
index 00000000..bc6ec646
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/lnspiral.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.13725
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.80392
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.53333 0.00000 0.87451
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.91373 0.00000 0.97255
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.46667
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.36863 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.77647 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.99608 0.97647 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.98431 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.36078 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.65490
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.74118
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.26275 0.87843 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.65882 0.59608 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.92157 0.61961 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.89804 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.76863 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.81176 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.51765
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/manycol.lut b/vendor/x11iraf/ximtool/luts/manycol.lut
new file mode 100644
index 00000000..dbedc784
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/manycol.lut
@@ -0,0 +1,256 @@
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.34902 0.34902 0.34902
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.44706 0.78431 0.92549
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.69020 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 0.69020 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.88235 0.00000
+0.72549 0.00000 0.72549
+0.72549 0.00000 0.72549
diff --git a/vendor/x11iraf/ximtool/luts/mousse.lut b/vendor/x11iraf/ximtool/luts/mousse.lut
new file mode 100644
index 00000000..468af5bc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/mousse.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.06667
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.13333
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.26667
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.33333
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.46667
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.00000 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.06667 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.13333 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.20000 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.26667 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.33333 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.40000 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.46667 0.00000 0.53333
+0.53333 0.00000 0.53333
+0.53333 0.00000 0.53333
+0.53333 0.00000 0.53333
+0.53333 0.00000 0.53333
+0.53333 0.00000 0.46667
+0.53333 0.00000 0.46667
+0.53333 0.00000 0.46667
+0.53333 0.00000 0.46667
+0.60000 0.00000 0.40000
+0.60000 0.00000 0.40000
+0.60000 0.00000 0.40000
+0.60000 0.00000 0.40000
+0.60000 0.00000 0.33333
+0.60000 0.00000 0.33333
+0.60000 0.00000 0.33333
+0.60000 0.00000 0.33333
+0.66667 0.00000 0.26667
+0.66667 0.00000 0.26667
+0.66667 0.00000 0.26667
+0.66667 0.00000 0.26667
+0.66667 0.00000 0.20000
+0.66667 0.00000 0.20000
+0.66667 0.00000 0.20000
+0.66667 0.00000 0.20000
+0.73333 0.00000 0.13333
+0.73333 0.00000 0.13333
+0.73333 0.00000 0.13333
+0.73333 0.00000 0.13333
+0.73333 0.00000 0.06667
+0.73333 0.00000 0.06667
+0.73333 0.00000 0.06667
+0.73333 0.00000 0.06667
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.80000 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+0.93333 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.06667 0.00000
+1.00000 0.06667 0.00000
+1.00000 0.13333 0.00000
+1.00000 0.13333 0.00000
+1.00000 0.20000 0.00000
+1.00000 0.20000 0.00000
+1.00000 0.26667 0.00000
+1.00000 0.26667 0.00000
+1.00000 0.33333 0.00000
+1.00000 0.33333 0.00000
+1.00000 0.40000 0.00000
+1.00000 0.40000 0.00000
+1.00000 0.46667 0.00000
+1.00000 0.46667 0.00000
+1.00000 0.53333 0.00000
+1.00000 0.53333 0.00000
+1.00000 0.60000 0.00000
+1.00000 0.60000 0.00000
+1.00000 0.66667 0.00000
+1.00000 0.66667 0.00000
+1.00000 0.73333 0.00000
+1.00000 0.73333 0.00000
+1.00000 0.80000 0.00000
+1.00000 0.80000 0.00000
+1.00000 0.86667 0.00000
+1.00000 0.86667 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.06667
+1.00000 1.00000 0.06667
+1.00000 1.00000 0.13333
+1.00000 1.00000 0.13333
+1.00000 1.00000 0.20000
+1.00000 1.00000 0.20000
+1.00000 1.00000 0.26667
+1.00000 1.00000 0.26667
+1.00000 1.00000 0.33333
+1.00000 1.00000 0.33333
+1.00000 1.00000 0.40000
+1.00000 1.00000 0.40000
+1.00000 1.00000 0.46667
+1.00000 1.00000 0.46667
+1.00000 1.00000 0.53333
+1.00000 1.00000 0.53333
+1.00000 1.00000 0.60000
+1.00000 1.00000 0.60000
+1.00000 1.00000 0.66667
+1.00000 1.00000 0.66667
+1.00000 1.00000 0.73333
+1.00000 1.00000 0.73333
+1.00000 1.00000 0.80000
+1.00000 1.00000 0.80000
+1.00000 1.00000 0.86667
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/pastel.lut b/vendor/x11iraf/ximtool/luts/pastel.lut
new file mode 100644
index 00000000..c45fcdea
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/pastel.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 1.00000
+0.01961 0.00000 0.98039
+0.05490 0.00000 0.94510
+0.08627 0.00392 0.91373
+0.10980 0.00392 0.89020
+0.13725 0.00392 0.86275
+0.15686 0.00392 0.84314
+0.18039 0.00392 0.81961
+0.20000 0.00784 0.80000
+0.21569 0.00784 0.78431
+0.23529 0.00784 0.76471
+0.25098 0.00784 0.74902
+0.26275 0.01176 0.73725
+0.28235 0.01176 0.71765
+0.29412 0.01176 0.70588
+0.30588 0.01176 0.69412
+0.31765 0.01176 0.68235
+0.33333 0.01569 0.66667
+0.34118 0.01569 0.65882
+0.35294 0.01569 0.64706
+0.36078 0.01569 0.63922
+0.37255 0.01961 0.62745
+0.38431 0.01961 0.61569
+0.39216 0.01961 0.60784
+0.40000 0.01961 0.60000
+0.41176 0.02353 0.58824
+0.41961 0.02353 0.58039
+0.43137 0.02353 0.56863
+0.43529 0.02745 0.56471
+0.44314 0.02745 0.55686
+0.45098 0.02745 0.54902
+0.45882 0.02745 0.54118
+0.46667 0.03137 0.53333
+0.47059 0.03137 0.52941
+0.48235 0.03137 0.51765
+0.48627 0.03529 0.51373
+0.49412 0.03529 0.50588
+0.50196 0.03529 0.49804
+0.50588 0.03529 0.49412
+0.50980 0.04314 0.49020
+0.51765 0.04314 0.48235
+0.52157 0.04314 0.47843
+0.53333 0.04706 0.46667
+0.53725 0.04706 0.46275
+0.54118 0.04706 0.45882
+0.54902 0.05098 0.45098
+0.55294 0.05098 0.44706
+0.55686 0.05098 0.44314
+0.56078 0.05490 0.43922
+0.56471 0.05490 0.43529
+0.57255 0.05490 0.42745
+0.58039 0.05882 0.41961
+0.58431 0.05882 0.41569
+0.58824 0.05882 0.41176
+0.59216 0.06275 0.40784
+0.59608 0.06275 0.40392
+0.60000 0.06275 0.40000
+0.60392 0.06667 0.39608
+0.60784 0.06667 0.39216
+0.61176 0.06667 0.38824
+0.61569 0.07059 0.38431
+0.61961 0.07059 0.38039
+0.62745 0.07451 0.37255
+0.63137 0.07451 0.36863
+0.63529 0.07451 0.36471
+0.63922 0.07843 0.36078
+0.64314 0.07843 0.35686
+0.64706 0.08235 0.35294
+0.65098 0.08235 0.34902
+0.65490 0.08235 0.34510
+0.65490 0.08627 0.34510
+0.65882 0.08627 0.34118
+0.66275 0.09020 0.33725
+0.66667 0.09020 0.33333
+0.67059 0.09020 0.32941
+0.67843 0.09412 0.32157
+0.67843 0.09412 0.32157
+0.68235 0.09804 0.31765
+0.68627 0.09804 0.31373
+0.69020 0.10196 0.30980
+0.69020 0.10196 0.30980
+0.69412 0.10588 0.30588
+0.69804 0.10588 0.30196
+0.70196 0.10980 0.29804
+0.70196 0.10980 0.29804
+0.70588 0.10980 0.29412
+0.70980 0.11765 0.29020
+0.71373 0.11765 0.28627
+0.71373 0.12157 0.28627
+0.71765 0.12157 0.28235
+0.72157 0.12549 0.27843
+0.72157 0.12549 0.27843
+0.72941 0.12941 0.27059
+0.73333 0.12941 0.26667
+0.73333 0.13333 0.26667
+0.73725 0.13725 0.26275
+0.74118 0.13725 0.25882
+0.74118 0.14118 0.25882
+0.74510 0.14118 0.25490
+0.74510 0.14510 0.25490
+0.74902 0.14510 0.25098
+0.75294 0.14902 0.24706
+0.75294 0.14902 0.24706
+0.75686 0.15294 0.24314
+0.76078 0.15686 0.23922
+0.76078 0.15686 0.23922
+0.76471 0.16078 0.23529
+0.76471 0.16078 0.23529
+0.76863 0.16471 0.23137
+0.76863 0.16863 0.23137
+0.77255 0.16863 0.22745
+0.78039 0.17255 0.21961
+0.78039 0.17255 0.21961
+0.78431 0.17647 0.21569
+0.78431 0.18039 0.21569
+0.78824 0.18039 0.21176
+0.78824 0.18431 0.21176
+0.79216 0.18824 0.20784
+0.79216 0.18824 0.20784
+0.79608 0.19608 0.20392
+0.79608 0.20000 0.20392
+0.80000 0.20000 0.20000
+0.80000 0.20392 0.20000
+0.80392 0.20784 0.19608
+0.80392 0.20784 0.19608
+0.80784 0.21176 0.19216
+0.80784 0.21569 0.19216
+0.81176 0.21961 0.18824
+0.81176 0.21961 0.18824
+0.81569 0.22353 0.18431
+0.81569 0.22745 0.18431
+0.81961 0.23137 0.18039
+0.81961 0.23137 0.18039
+0.82745 0.23529 0.17255
+0.82745 0.23922 0.17255
+0.83137 0.24314 0.16863
+0.83137 0.24314 0.16863
+0.83529 0.24706 0.16471
+0.83529 0.25098 0.16471
+0.83922 0.25490 0.16078
+0.83922 0.25882 0.16078
+0.83922 0.26275 0.16078
+0.84314 0.26275 0.15686
+0.84314 0.27059 0.15686
+0.84706 0.27451 0.15294
+0.84706 0.27843 0.15294
+0.85098 0.28235 0.14902
+0.85098 0.28627 0.14902
+0.85490 0.29020 0.14510
+0.85490 0.29412 0.14510
+0.85490 0.29804 0.14510
+0.85882 0.29804 0.14118
+0.85882 0.30196 0.14118
+0.86275 0.30588 0.13725
+0.86275 0.30980 0.13725
+0.86275 0.31373 0.13725
+0.86667 0.31765 0.13333
+0.86667 0.32157 0.13333
+0.87059 0.32549 0.12941
+0.87059 0.33333 0.12941
+0.87059 0.33725 0.12941
+0.87843 0.34118 0.12157
+0.87843 0.34510 0.12157
+0.88235 0.34902 0.11765
+0.88235 0.35294 0.11765
+0.88235 0.35686 0.11765
+0.88627 0.36078 0.11373
+0.88627 0.36471 0.11373
+0.89020 0.37255 0.10980
+0.89020 0.37647 0.10980
+0.89020 0.38039 0.10980
+0.89412 0.38431 0.10588
+0.89412 0.38824 0.10588
+0.89412 0.39216 0.10588
+0.89804 0.40000 0.10196
+0.89804 0.40392 0.10196
+0.89804 0.40784 0.10196
+0.90196 0.41176 0.09804
+0.90196 0.41961 0.09804
+0.90588 0.42353 0.09412
+0.90588 0.42745 0.09412
+0.90588 0.43529 0.09412
+0.90980 0.43922 0.09020
+0.90980 0.44314 0.09020
+0.90980 0.45098 0.09020
+0.91373 0.45490 0.08627
+0.91373 0.45882 0.08627
+0.91373 0.46667 0.08627
+0.91765 0.47059 0.08235
+0.91765 0.47843 0.08235
+0.91765 0.48235 0.08235
+0.92157 0.49020 0.07843
+0.92157 0.49412 0.07843
+0.92157 0.50196 0.07843
+0.92941 0.50588 0.07059
+0.92941 0.51373 0.07059
+0.92941 0.51765 0.07059
+0.93333 0.52549 0.06667
+0.93333 0.52941 0.06667
+0.93333 0.53725 0.06667
+0.93725 0.54118 0.06275
+0.93725 0.54902 0.06275
+0.93725 0.55686 0.06275
+0.94118 0.56078 0.05882
+0.94118 0.56863 0.05882
+0.94118 0.57647 0.05882
+0.94118 0.58039 0.05882
+0.94510 0.58824 0.05490
+0.94510 0.59608 0.05490
+0.94510 0.60000 0.05490
+0.94902 0.60784 0.05098
+0.94902 0.61569 0.05098
+0.94902 0.62353 0.05098
+0.95294 0.63137 0.04706
+0.95294 0.63529 0.04706
+0.95294 0.64314 0.04706
+0.95686 0.65098 0.04314
+0.95686 0.65882 0.04314
+0.95686 0.66667 0.04314
+0.95686 0.67451 0.04314
+0.96078 0.68235 0.03922
+0.96078 0.69020 0.03922
+0.96078 0.69804 0.03922
+0.96471 0.70588 0.03529
+0.96471 0.71373 0.03529
+0.96471 0.72157 0.03529
+0.96471 0.72941 0.03529
+0.96863 0.73725 0.03137
+0.96863 0.74510 0.03137
+0.96863 0.75294 0.03137
+0.97255 0.76078 0.02745
+0.97255 0.77255 0.02745
+0.97255 0.78039 0.02745
+0.97255 0.78824 0.02745
+0.98039 0.79608 0.01961
+0.98039 0.80392 0.01961
+0.98039 0.81569 0.01961
+0.98039 0.82353 0.01961
+0.98431 0.83137 0.01569
+0.98431 0.84314 0.01569
+0.98431 0.85098 0.01569
+0.98824 0.86275 0.01176
+0.98824 0.87059 0.01176
+0.98824 0.87843 0.01176
+0.98824 0.89020 0.01176
+0.99216 0.89804 0.00784
+0.99216 0.90980 0.00784
+0.99216 0.91765 0.00784
+0.99216 0.92941 0.00784
+0.99608 0.94118 0.00392
+0.99608 0.94902 0.00392
+0.99608 0.96078 0.00392
+0.99608 0.97255 0.00392
+1.00000 0.98039 0.00000
+1.00000 0.99216 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/pseudo1.lut b/vendor/x11iraf/ximtool/luts/pseudo1.lut
new file mode 100644
index 00000000..bea23581
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/pseudo1.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 1.00000
+0.00000 0.00000 0.99216
+0.00000 0.00000 0.98824
+0.00392 0.00000 0.98431
+0.00392 0.00000 0.98039
+0.00784 0.00000 0.97647
+0.00784 0.00000 0.96863
+0.01176 0.00000 0.96471
+0.01569 0.00000 0.96078
+0.01569 0.00000 0.95686
+0.01961 0.00000 0.95294
+0.01961 0.00000 0.94510
+0.02353 0.00784 0.94118
+0.02745 0.01569 0.93725
+0.02745 0.02745 0.93333
+0.03137 0.03922 0.92941
+0.03529 0.05098 0.92157
+0.03529 0.06667 0.91765
+0.03922 0.08235 0.91373
+0.04314 0.09804 0.90980
+0.04706 0.11765 0.90588
+0.04706 0.09804 0.90196
+0.05098 0.08235 0.89412
+0.05490 0.06667 0.89020
+0.05490 0.05098 0.88627
+0.05882 0.03922 0.88235
+0.06275 0.02745 0.87843
+0.06667 0.01569 0.87059
+0.07059 0.00784 0.86667
+0.07059 0.00000 0.86275
+0.07451 0.00000 0.85882
+0.07843 0.00392 0.85490
+0.08235 0.01176 0.85098
+0.08235 0.02353 0.84314
+0.08627 0.03922 0.83922
+0.09020 0.05490 0.83529
+0.09412 0.07059 0.83137
+0.09804 0.09020 0.82745
+0.09804 0.10980 0.82353
+0.10196 0.13333 0.81569
+0.10588 0.15686 0.81176
+0.10980 0.13333 0.80784
+0.11373 0.10980 0.80392
+0.11765 0.09020 0.80000
+0.11765 0.07059 0.79608
+0.12157 0.05490 0.79216
+0.12549 0.03922 0.78431
+0.12941 0.02353 0.78039
+0.13333 0.01176 0.77647
+0.13725 0.00392 0.77255
+0.14118 0.00000 0.76863
+0.14118 0.00392 0.76471
+0.14510 0.01569 0.75686
+0.14902 0.03137 0.75294
+0.15294 0.04706 0.74902
+0.15686 0.06667 0.74510
+0.16078 0.09020 0.74118
+0.16471 0.11373 0.73725
+0.16863 0.13725 0.73333
+0.17255 0.16471 0.72549
+0.17255 0.19608 0.72157
+0.17647 0.16471 0.71765
+0.18039 0.13725 0.71373
+0.18431 0.11373 0.70980
+0.18824 0.09020 0.70588
+0.19216 0.06667 0.70196
+0.19608 0.04706 0.69804
+0.20000 0.03137 0.69020
+0.20392 0.01569 0.68627
+0.20784 0.00392 0.68235
+0.21176 0.00000 0.67843
+0.21176 0.00784 0.67451
+0.21569 0.02353 0.67059
+0.21961 0.04314 0.66667
+0.22353 0.06667 0.66275
+0.22745 0.09412 0.65490
+0.23137 0.12549 0.65098
+0.23529 0.15686 0.64706
+0.23922 0.19608 0.64314
+0.24314 0.23137 0.63922
+0.24706 0.27451 0.63529
+0.25098 0.23137 0.63137
+0.25490 0.19608 0.62745
+0.25882 0.15686 0.61961
+0.26275 0.12549 0.61569
+0.26667 0.09412 0.61176
+0.27059 0.06667 0.60784
+0.27451 0.04314 0.60392
+0.27843 0.02353 0.60000
+0.28235 0.00784 0.59608
+0.28627 0.00000 0.59216
+0.29020 0.00784 0.58824
+0.29412 0.03137 0.58431
+0.29804 0.05490 0.57647
+0.29804 0.08627 0.57255
+0.30196 0.12157 0.56863
+0.30588 0.16078 0.56471
+0.30980 0.20392 0.56078
+0.31373 0.25098 0.55686
+0.31765 0.29804 0.55294
+0.32157 0.35294 0.54902
+0.32549 0.29804 0.54510
+0.32941 0.25098 0.54118
+0.33333 0.20392 0.53725
+0.33725 0.16078 0.52941
+0.34118 0.12157 0.52549
+0.34510 0.08627 0.52157
+0.34902 0.05490 0.51765
+0.35294 0.03137 0.51373
+0.35686 0.00784 0.50980
+0.36078 0.00000 0.50588
+0.36471 0.01176 0.50196
+0.37255 0.03529 0.49804
+0.37647 0.07059 0.49412
+0.38039 0.10588 0.49020
+0.38431 0.14902 0.48627
+0.38824 0.20000 0.48235
+0.39216 0.25098 0.47843
+0.39608 0.30588 0.47059
+0.40000 0.36471 0.46667
+0.40392 0.43137 0.46275
+0.40784 0.36471 0.45882
+0.41176 0.30588 0.45490
+0.41569 0.25098 0.45098
+0.41961 0.20000 0.44706
+0.42353 0.14902 0.44314
+0.42745 0.10588 0.43922
+0.43137 0.07059 0.43529
+0.43529 0.03529 0.43137
+0.43922 0.01176 0.42745
+0.44314 0.00000 0.42353
+0.44706 0.01569 0.41961
+0.45098 0.04314 0.41569
+0.45490 0.08235 0.41176
+0.45882 0.12549 0.40784
+0.46275 0.17647 0.40392
+0.46667 0.23529 0.40000
+0.47059 0.29804 0.39608
+0.47843 0.36471 0.39216
+0.48235 0.43137 0.38824
+0.48627 0.50980 0.38431
+0.49020 0.43137 0.38039
+0.49412 0.36471 0.37647
+0.49804 0.29804 0.37255
+0.50196 0.23529 0.36471
+0.50588 0.17647 0.36078
+0.50980 0.12549 0.35686
+0.51373 0.08235 0.35294
+0.51765 0.04314 0.34902
+0.52157 0.01569 0.34510
+0.52549 0.00000 0.34118
+0.52941 0.01569 0.33725
+0.53725 0.05098 0.33333
+0.54118 0.09412 0.32941
+0.54510 0.14510 0.32549
+0.54902 0.20784 0.32157
+0.55294 0.27059 0.31765
+0.55686 0.34118 0.31373
+0.56078 0.41961 0.30980
+0.56471 0.50196 0.30588
+0.56863 0.58824 0.30196
+0.57255 0.50196 0.29804
+0.57647 0.41961 0.29804
+0.58431 0.34118 0.29412
+0.58824 0.27059 0.29020
+0.59216 0.20784 0.28627
+0.59608 0.14510 0.28235
+0.60000 0.09412 0.27843
+0.60392 0.05098 0.27451
+0.60784 0.01569 0.27059
+0.61176 0.00000 0.26667
+0.61569 0.01961 0.26275
+0.61961 0.05882 0.25882
+0.62745 0.10588 0.25490
+0.63137 0.16863 0.25098
+0.63529 0.23529 0.24706
+0.63922 0.30980 0.24314
+0.64314 0.38824 0.23922
+0.64706 0.47451 0.23529
+0.65098 0.56863 0.23137
+0.65490 0.66667 0.22745
+0.66275 0.56863 0.22353
+0.66667 0.47451 0.21961
+0.67059 0.38824 0.21569
+0.67451 0.30980 0.21176
+0.67843 0.23529 0.21176
+0.68235 0.16863 0.20784
+0.68627 0.10588 0.20392
+0.69020 0.05882 0.20000
+0.69804 0.01961 0.19608
+0.70196 0.00000 0.19216
+0.70588 0.02353 0.18824
+0.70980 0.06275 0.18431
+0.71373 0.12157 0.18039
+0.71765 0.18824 0.17647
+0.72157 0.26275 0.17255
+0.72549 0.34510 0.17255
+0.73333 0.43529 0.16863
+0.73725 0.52941 0.16471
+0.74118 0.63529 0.16078
+0.74510 0.74510 0.15686
+0.74902 0.63529 0.15294
+0.75294 0.52941 0.14902
+0.75686 0.43529 0.14510
+0.76471 0.34510 0.14118
+0.76863 0.26275 0.14118
+0.77255 0.18824 0.13725
+0.77647 0.12157 0.13333
+0.78039 0.06275 0.12941
+0.78431 0.02353 0.12549
+0.79216 0.00000 0.12157
+0.79608 0.02353 0.11765
+0.80000 0.07059 0.11765
+0.80392 0.13333 0.11373
+0.80784 0.20784 0.10980
+0.81176 0.29020 0.10588
+0.81569 0.38039 0.10196
+0.82353 0.47843 0.09804
+0.82745 0.58824 0.09804
+0.83137 0.70196 0.09412
+0.83529 0.82353 0.09020
+0.83922 0.70196 0.08627
+0.84314 0.58824 0.08235
+0.85098 0.47843 0.08235
+0.85490 0.38039 0.07843
+0.85882 0.29020 0.07451
+0.86275 0.20784 0.07059
+0.86667 0.13333 0.07059
+0.87059 0.07059 0.06667
+0.87843 0.02353 0.06275
+0.88235 0.00000 0.05882
+0.88627 0.02745 0.05490
+0.89020 0.07843 0.05490
+0.89412 0.14510 0.05098
+0.90196 0.22745 0.04706
+0.90588 0.31765 0.04706
+0.90980 0.41569 0.04314
+0.91373 0.52549 0.03922
+0.91765 0.64314 0.03529
+0.92157 0.76863 0.03529
+0.92941 0.90196 0.03137
+0.93333 0.76863 0.02745
+0.93725 0.64314 0.02745
+0.94118 0.52549 0.02353
+0.94510 0.41569 0.01961
+0.95294 0.31765 0.01961
+0.95686 0.25882 0.01569
+0.96078 0.23137 0.01569
+0.96471 0.23922 0.01176
+0.96863 0.27843 0.00784
+0.97647 0.35294 0.00784
+0.98039 0.46275 0.00392
+0.98431 0.58431 0.00392
+0.98824 0.71373 0.00000
+0.99216 0.85098 0.00000
+1.00000 1.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/pseudo2.lut b/vendor/x11iraf/ximtool/luts/pseudo2.lut
new file mode 100644
index 00000000..7bb4d78f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/pseudo2.lut
@@ -0,0 +1,256 @@
+0.30980 0.29020 0.22353
+0.32157 0.30196 0.23922
+0.33333 0.31765 0.25490
+0.34510 0.32941 0.27059
+0.35686 0.34510 0.29020
+0.36863 0.36078 0.30588
+0.38039 0.37647 0.32549
+0.39216 0.38824 0.34510
+0.40392 0.40392 0.36471
+0.41569 0.41961 0.38431
+0.42745 0.43529 0.40392
+0.43922 0.45098 0.42353
+0.45098 0.46667 0.44314
+0.46275 0.48235 0.46667
+0.47451 0.49804 0.48627
+0.49020 0.51765 0.50980
+0.50196 0.53333 0.53333
+0.51373 0.54902 0.55686
+0.52549 0.56863 0.58039
+0.54118 0.58431 0.60392
+0.55294 0.60000 0.62745
+0.56863 0.61961 0.65098
+0.58039 0.63529 0.67843
+0.59216 0.65490 0.70196
+0.60784 0.67059 0.72941
+0.61961 0.69020 0.75686
+0.63529 0.70980 0.78431
+0.64706 0.72549 0.75686
+0.66275 0.74510 0.72941
+0.67843 0.76471 0.70588
+0.69020 0.78431 0.68235
+0.70588 0.80392 0.65882
+0.71765 0.82353 0.64314
+0.73333 0.80392 0.62353
+0.74902 0.78824 0.60392
+0.76471 0.77255 0.58824
+0.77647 0.75686 0.57255
+0.79216 0.74118 0.55686
+0.80784 0.73333 0.54118
+0.82353 0.71765 0.52941
+0.83922 0.70588 0.51373
+0.85490 0.69804 0.50588
+0.87059 0.68235 0.49412
+0.85490 0.67451 0.48627
+0.83922 0.66667 0.47843
+0.82745 0.65882 0.47059
+0.81569 0.65098 0.46275
+0.80392 0.63922 0.45882
+0.79216 0.63529 0.45490
+0.78431 0.62745 0.45098
+0.77255 0.61961 0.44706
+0.76078 0.61176 0.44706
+0.74902 0.60784 0.44706
+0.74510 0.60392 0.44706
+0.73333 0.60000 0.44706
+0.72941 0.59608 0.45098
+0.71765 0.59216 0.45490
+0.70980 0.58824 0.45882
+0.70588 0.58824 0.46275
+0.69412 0.58431 0.47059
+0.69020 0.58039 0.47843
+0.68235 0.58039 0.48627
+0.67843 0.58039 0.49412
+0.67451 0.57647 0.50588
+0.66667 0.58039 0.51373
+0.66275 0.57647 0.52941
+0.65490 0.58039 0.54118
+0.65098 0.58039 0.55686
+0.64706 0.58039 0.57255
+0.64314 0.58431 0.58824
+0.63529 0.58824 0.60392
+0.63529 0.58824 0.62353
+0.63137 0.59216 0.64314
+0.62745 0.59608 0.65882
+0.62745 0.60000 0.68235
+0.62353 0.60392 0.70588
+0.62353 0.60784 0.72941
+0.61961 0.61176 0.75686
+0.61961 0.61961 0.78431
+0.61569 0.62745 0.75686
+0.61569 0.63529 0.72941
+0.61176 0.63922 0.70588
+0.61176 0.65098 0.68235
+0.61176 0.65882 0.65882
+0.61176 0.66667 0.64314
+0.61176 0.67451 0.62353
+0.61176 0.68235 0.60392
+0.61176 0.69804 0.58824
+0.61176 0.70588 0.57255
+0.61569 0.71765 0.55686
+0.61569 0.73333 0.54118
+0.61961 0.74118 0.52941
+0.61961 0.75686 0.51373
+0.62353 0.77255 0.50588
+0.62353 0.78824 0.49412
+0.62745 0.80392 0.48627
+0.62745 0.82353 0.47843
+0.63137 0.80392 0.47059
+0.63529 0.78824 0.46275
+0.63529 0.77255 0.45882
+0.64314 0.75686 0.45490
+0.64706 0.74118 0.45098
+0.65098 0.73333 0.44706
+0.65490 0.71765 0.44706
+0.66275 0.70588 0.44706
+0.66667 0.69804 0.44706
+0.67451 0.68235 0.44706
+0.67843 0.67451 0.45098
+0.68235 0.66667 0.45490
+0.69020 0.65882 0.45882
+0.69412 0.65098 0.46275
+0.70588 0.63922 0.47059
+0.70980 0.63529 0.47843
+0.71765 0.62745 0.48627
+0.72941 0.61961 0.49412
+0.73333 0.61176 0.50588
+0.74510 0.60784 0.51373
+0.74902 0.60392 0.52941
+0.76078 0.60000 0.54118
+0.77647 0.59608 0.55686
+0.79216 0.59216 0.57255
+0.80392 0.58824 0.58824
+0.81961 0.58824 0.60392
+0.83922 0.58431 0.62353
+0.85490 0.58039 0.64314
+0.87451 0.58039 0.65882
+0.89804 0.58039 0.68235
+0.92157 0.57647 0.70588
+0.91373 0.58039 0.72941
+0.90588 0.57647 0.75686
+0.89804 0.58039 0.78431
+0.89412 0.58039 0.75686
+0.88627 0.58039 0.72941
+0.88235 0.58431 0.70588
+0.87843 0.58824 0.68235
+0.87451 0.58824 0.65882
+0.87059 0.59216 0.64314
+0.86275 0.59608 0.62353
+0.86275 0.60000 0.60392
+0.85882 0.60392 0.58824
+0.85882 0.60784 0.57255
+0.85490 0.61176 0.55686
+0.85098 0.61961 0.54118
+0.85490 0.62745 0.52941
+0.85098 0.63529 0.51373
+0.85098 0.63922 0.50588
+0.85098 0.65490 0.49412
+0.85098 0.67059 0.48627
+0.85490 0.68235 0.47843
+0.85098 0.69804 0.47059
+0.85490 0.71373 0.46275
+0.85098 0.74118 0.45882
+0.85490 0.75686 0.45490
+0.85882 0.78039 0.45098
+0.86275 0.80392 0.44706
+0.86275 0.82353 0.44706
+0.86667 0.85098 0.44706
+0.87059 0.87843 0.44706
+0.87451 0.90980 0.44706
+0.87843 0.93725 0.45098
+0.88235 0.97255 0.45490
+0.88627 0.96471 0.45882
+0.89020 0.96078 0.46275
+0.89804 0.95686 0.47059
+0.90196 0.95294 0.47843
+0.90588 0.94902 0.48627
+0.91373 0.94902 0.49412
+0.91765 0.94510 0.50588
+0.92549 0.94118 0.51373
+0.92941 0.94510 0.52941
+0.94118 0.94118 0.54118
+0.94902 0.94510 0.55686
+0.95294 0.94510 0.57255
+0.96078 0.94510 0.58824
+0.97255 0.94902 0.60392
+0.98039 0.94902 0.62745
+0.98824 0.95294 0.65098
+0.99608 0.95686 0.67451
+1.00000 0.95686 0.70588
+1.00000 0.96078 0.73333
+1.00000 0.96863 0.76863
+1.00000 0.97255 0.80392
+1.00000 0.98039 0.84314
+1.00000 0.98431 0.82353
+0.98824 0.99216 0.80784
+0.96078 0.99608 0.79608
+0.93333 1.00000 0.78431
+0.90980 1.00000 0.77255
+0.88235 1.00000 0.76471
+0.85882 1.00000 0.75686
+0.83137 1.00000 0.74902
+0.80784 1.00000 0.74118
+0.78039 1.00000 0.73725
+0.75686 1.00000 0.73333
+0.73333 1.00000 0.72941
+0.70588 1.00000 0.72941
+0.69020 1.00000 0.72941
+0.66667 0.97255 0.72941
+0.64314 0.93725 0.73333
+0.62353 0.90196 0.73725
+0.60392 0.86667 0.74118
+0.58431 0.83137 0.74510
+0.56078 0.79608 0.75294
+0.54510 0.76078 0.75686
+0.52941 0.73333 0.76863
+0.51373 0.69804 0.77647
+0.50196 0.67059 0.78824
+0.48627 0.63922 0.80392
+0.47059 0.61176 0.81569
+0.45490 0.58039 0.83137
+0.44314 0.55294 0.84706
+0.43529 0.52941 0.86667
+0.42353 0.50588 0.88235
+0.41569 0.47843 0.90196
+0.41176 0.45490 0.92549
+0.40392 0.43529 0.87843
+0.40000 0.41569 0.83922
+0.39216 0.39216 0.79608
+0.38824 0.37647 0.75686
+0.38431 0.35686 0.72157
+0.38039 0.34118 0.67843
+0.38039 0.32941 0.65098
+0.37255 0.31765 0.61569
+0.37255 0.30588 0.58431
+0.37255 0.29804 0.55686
+0.37255 0.29412 0.52549
+0.37647 0.28627 0.50196
+0.37647 0.28235 0.47843
+0.38039 0.28235 0.45882
+0.38431 0.27843 0.43922
+0.38824 0.27843 0.41961
+0.39608 0.27843 0.40784
+0.40000 0.28235 0.40000
+0.40784 0.28627 0.38824
+0.41569 0.29020 0.38431
+0.42353 0.29804 0.38039
+0.43529 0.30588 0.37647
+0.44706 0.31765 0.37647
+0.45882 0.32549 0.38039
+0.47059 0.34118 0.38431
+0.48235 0.35294 0.39216
+0.50196 0.37255 0.40000
+0.51765 0.39216 0.40784
+0.53725 0.41176 0.42353
+0.55686 0.43922 0.43529
+0.57647 0.46667 0.45098
+0.60000 0.49804 0.47451
+0.62745 0.52941 0.49804
+0.65490 0.56078 0.52549
+0.68235 0.59216 0.54902
+0.70980 0.62745 0.58431
+0.74118 0.66275 0.61569
+0.77255 0.70196 0.65098
+0.80392 0.74118 0.69020
+0.83529 0.78039 0.73333
+0.87059 0.82353 0.78431
diff --git a/vendor/x11iraf/ximtool/luts/rainbow.lut b/vendor/x11iraf/ximtool/luts/rainbow.lut
new file mode 100644
index 00000000..37e1977a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/rainbow.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.16471
+0.02745 0.00000 0.18431
+0.05882 0.00000 0.20000
+0.08627 0.00000 0.21961
+0.11373 0.00000 0.23922
+0.14510 0.00000 0.25882
+0.17647 0.00000 0.27843
+0.20392 0.00000 0.29804
+0.23137 0.00000 0.31765
+0.26275 0.00000 0.33725
+0.29412 0.00000 0.35686
+0.32157 0.00000 0.37647
+0.35294 0.00000 0.39608
+0.38039 0.00000 0.41569
+0.41176 0.00000 0.43529
+0.43922 0.00000 0.45490
+0.47059 0.00000 0.47451
+0.49804 0.00000 0.49412
+0.52941 0.00000 0.51373
+0.55686 0.00000 0.53725
+0.58824 0.00000 0.55686
+0.55686 0.00000 0.57647
+0.52941 0.00000 0.59608
+0.49804 0.00000 0.61569
+0.47059 0.00000 0.63922
+0.43922 0.00000 0.65882
+0.41176 0.00000 0.67843
+0.38039 0.00000 0.70196
+0.35294 0.00000 0.72157
+0.32157 0.00000 0.74118
+0.29412 0.00000 0.76471
+0.26275 0.00000 0.78431
+0.23137 0.00000 0.80392
+0.20392 0.00000 0.82745
+0.17647 0.00000 0.84706
+0.14510 0.00000 0.87059
+0.11373 0.00000 0.89020
+0.08627 0.00000 0.91373
+0.05882 0.00000 0.93333
+0.02745 0.00000 0.95686
+0.00000 0.00000 0.97647
+0.00000 0.00000 1.00000
+0.00000 0.02353 0.97647
+0.00000 0.04706 0.95686
+0.00000 0.06275 0.93333
+0.00000 0.08235 0.91373
+0.00000 0.09804 0.89020
+0.00000 0.11373 0.87059
+0.00000 0.12941 0.84706
+0.00000 0.14118 0.82745
+0.00000 0.15686 0.80392
+0.00000 0.16863 0.78431
+0.00000 0.18431 0.76471
+0.00000 0.19608 0.74118
+0.00000 0.21176 0.72157
+0.00000 0.22353 0.70196
+0.00000 0.23529 0.67843
+0.00000 0.25098 0.65882
+0.00000 0.26275 0.63922
+0.00000 0.27451 0.61569
+0.00000 0.28627 0.59608
+0.00000 0.29804 0.57647
+0.00000 0.30980 0.55686
+0.00000 0.32157 0.53725
+0.00000 0.33333 0.51373
+0.00000 0.34510 0.49412
+0.00000 0.35686 0.47451
+0.00000 0.36863 0.45490
+0.00000 0.38039 0.43529
+0.00000 0.39216 0.41569
+0.00000 0.40392 0.39608
+0.00000 0.41176 0.37647
+0.00000 0.42353 0.35686
+0.00000 0.43529 0.33725
+0.00000 0.44706 0.31765
+0.00000 0.45882 0.29804
+0.00000 0.46667 0.27843
+0.00000 0.47843 0.25882
+0.00000 0.49020 0.23922
+0.00000 0.49804 0.21961
+0.00000 0.50980 0.20000
+0.00000 0.52157 0.18431
+0.00000 0.52941 0.16471
+0.00000 0.54118 0.14510
+0.00000 0.55294 0.12941
+0.00000 0.56078 0.10980
+0.00000 0.57255 0.09412
+0.00000 0.58431 0.07451
+0.00000 0.59216 0.05882
+0.00000 0.60392 0.04314
+0.00000 0.61176 0.02745
+0.00000 0.62353 0.01176
+0.00000 0.63137 0.00000
+0.00000 0.64314 0.00000
+0.00000 0.65098 0.00000
+0.00000 0.66275 0.00000
+0.00000 0.67059 0.00000
+0.00000 0.68235 0.00000
+0.00000 0.69020 0.00000
+0.00000 0.70196 0.00000
+0.00000 0.70980 0.00000
+0.00000 0.72157 0.00000
+0.00000 0.72941 0.00000
+0.00000 0.74118 0.00000
+0.00000 0.74902 0.00000
+0.00000 0.76078 0.00000
+0.00000 0.76863 0.00000
+0.00000 0.77647 0.00000
+0.00000 0.78824 0.00000
+0.00000 0.79608 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.81569 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.83529 0.00000
+0.00000 0.84314 0.00000
+0.00000 0.85490 0.00000
+0.00000 0.86275 0.00000
+0.00000 0.87059 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.89020 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.90980 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.93725 0.00000
+0.00000 0.94510 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.96078 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.98039 0.00000
+0.00000 0.98824 0.00000
+0.00000 1.00000 0.00000
+0.00000 0.98824 0.00000
+0.00000 0.98039 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.96078 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.94510 0.00000
+0.00000 0.93725 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.90980 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89020 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.87059 0.00000
+0.00000 0.86275 0.00000
+0.00000 0.85490 0.00000
+0.00000 0.84314 0.00000
+0.00000 0.83529 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.81569 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.79608 0.00000
+0.00000 0.78824 0.00000
+0.00000 0.77647 0.00000
+0.00784 0.76863 0.00000
+0.03529 0.77647 0.00000
+0.06667 0.78824 0.00000
+0.09804 0.80000 0.00000
+0.12941 0.81176 0.00000
+0.16471 0.82745 0.00000
+0.20000 0.84314 0.00000
+0.23529 0.85882 0.00000
+0.26667 0.87059 0.00000
+0.30588 0.89020 0.00000
+0.34118 0.90196 0.00000
+0.37647 0.92157 0.00000
+0.41176 0.93333 0.00000
+0.44706 0.95294 0.00000
+0.48627 0.96863 0.00000
+0.52157 0.98824 0.00000
+0.56078 1.00000 0.00000
+0.59608 1.00000 0.00000
+0.63529 1.00000 0.00000
+0.67059 1.00000 0.00000
+0.70980 1.00000 0.00000
+0.74902 1.00000 0.00000
+0.78431 1.00000 0.00000
+0.82353 1.00000 0.00000
+0.85882 1.00000 0.00000
+0.89804 1.00000 0.00000
+0.93333 1.00000 0.00000
+0.97647 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 1.00000 0.00000
+0.98039 1.00000 0.00000
+0.96078 0.97647 0.00000
+0.94510 0.93725 0.00000
+0.92549 0.89804 0.00000
+0.90980 0.85882 0.00000
+0.89412 0.81961 0.00000
+0.87451 0.78039 0.00000
+0.85882 0.74118 0.00000
+0.83922 0.70196 0.00000
+0.82353 0.66275 0.00000
+0.80392 0.62353 0.00000
+0.78824 0.58431 0.00000
+0.76863 0.54510 0.00000
+0.75686 0.50980 0.00000
+0.74118 0.46667 0.00000
+0.72549 0.43137 0.00000
+0.70980 0.39216 0.00000
+0.69412 0.35294 0.00000
+0.68235 0.31765 0.00000
+0.66275 0.27451 0.00000
+0.65098 0.23922 0.00000
+0.63529 0.20000 0.00000
+0.62745 0.16863 0.00000
+0.61569 0.12941 0.00000
+0.60784 0.09804 0.00000
+0.61961 0.08235 0.00000
+0.62745 0.06275 0.00000
+0.63922 0.04706 0.00000
+0.64706 0.02353 0.00000
+0.65882 0.00000 0.00000
+0.66667 0.00000 0.00000
+0.67843 0.00000 0.00000
+0.68627 0.00000 0.00000
+0.69804 0.00000 0.00000
+0.70980 0.00000 0.00000
+0.71765 0.00000 0.00000
+0.72941 0.00000 0.00000
+0.73725 0.00000 0.00000
+0.74902 0.00000 0.00000
+0.75686 0.00000 0.00000
+0.76863 0.00000 0.00000
+0.77647 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.80000 0.00784 0.00784
+0.80784 0.02745 0.02745
+0.81961 0.05098 0.05098
+0.82745 0.08235 0.08235
+0.83922 0.11373 0.11373
+0.84706 0.14902 0.14902
+0.85882 0.19216 0.19216
+0.86667 0.23137 0.23137
+0.87843 0.27843 0.27843
+0.88627 0.32549 0.32549
+0.89804 0.37647 0.37647
+0.90980 0.43137 0.43137
+0.91765 0.48627 0.48627
+0.92941 0.54118 0.54118
+0.93725 0.60000 0.60000
+0.94902 0.66275 0.66275
+0.95686 0.72549 0.72549
+0.96863 0.79216 0.79216
+0.97647 0.85882 0.85882
+0.98824 0.92941 0.92941
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/rainbow1.lut b/vendor/x11iraf/ximtool/luts/rainbow1.lut
new file mode 100644
index 00000000..8871dc2f
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/rainbow1.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.16471
+0.02745 0.00000 0.18431
+0.05882 0.00000 0.20000
+0.08627 0.00000 0.21961
+0.11373 0.00000 0.23922
+0.14510 0.00000 0.25882
+0.17647 0.00000 0.27843
+0.20392 0.00000 0.29804
+0.23137 0.00000 0.31765
+0.26275 0.00000 0.33725
+0.29412 0.00000 0.35686
+0.32157 0.00000 0.37647
+0.35294 0.00000 0.39608
+0.38039 0.00000 0.41569
+0.41176 0.00000 0.43529
+0.43922 0.00000 0.45490
+0.47059 0.00000 0.47451
+0.49804 0.00000 0.49412
+0.52941 0.00000 0.51373
+0.55686 0.00000 0.53725
+0.58824 0.00000 0.55686
+0.55686 0.00000 0.57647
+0.52941 0.00000 0.59608
+0.49804 0.00000 0.61569
+0.47059 0.00000 0.63922
+0.43922 0.00000 0.65882
+0.41176 0.00000 0.67843
+0.38039 0.00000 0.70196
+0.35294 0.00000 0.72157
+0.32157 0.00000 0.74118
+0.29412 0.00000 0.76471
+0.26275 0.00000 0.78431
+0.23137 0.00000 0.80392
+0.20392 0.00000 0.82745
+0.17647 0.00000 0.84706
+0.14510 0.00000 0.87059
+0.11373 0.00000 0.89020
+0.08627 0.00000 0.91373
+0.05882 0.00000 0.93333
+0.02745 0.00000 0.95686
+0.00000 0.00000 0.97647
+0.00000 0.00000 1.00000
+0.00000 0.00000 0.97647
+0.00000 0.00784 0.95686
+0.00000 0.01569 0.93333
+0.00000 0.02353 0.91373
+0.00000 0.03137 0.89020
+0.00000 0.03922 0.87059
+0.00000 0.05098 0.85098
+0.00000 0.06275 0.83137
+0.00000 0.07843 0.81176
+0.00000 0.09804 0.79216
+0.00000 0.11765 0.77255
+0.00000 0.13725 0.75294
+0.00000 0.15686 0.73333
+0.00000 0.17647 0.71373
+0.00000 0.19608 0.69412
+0.00000 0.21569 0.67451
+0.00000 0.23529 0.65882
+0.00000 0.25490 0.64314
+0.00000 0.27059 0.62745
+0.00000 0.28627 0.61176
+0.00000 0.30196 0.59608
+0.00000 0.32157 0.58039
+0.00000 0.33333 0.56471
+0.00000 0.34510 0.54902
+0.00000 0.35686 0.53333
+0.00000 0.36863 0.51765
+0.00000 0.38039 0.50196
+0.00000 0.39216 0.48627
+0.00000 0.40392 0.47059
+0.00000 0.41176 0.45882
+0.00000 0.42353 0.44706
+0.00000 0.43529 0.43529
+0.00000 0.44706 0.42353
+0.00000 0.45882 0.41176
+0.00000 0.46667 0.40000
+0.00000 0.47843 0.38824
+0.00000 0.49020 0.37647
+0.00000 0.49804 0.36471
+0.00000 0.50980 0.35294
+0.00000 0.52157 0.34118
+0.00000 0.52941 0.32941
+0.00000 0.54118 0.31765
+0.00000 0.55294 0.30588
+0.00000 0.56078 0.29412
+0.00000 0.57255 0.28235
+0.00000 0.58431 0.27059
+0.00000 0.59216 0.25882
+0.00000 0.60392 0.24706
+0.00000 0.61176 0.23529
+0.00000 0.62353 0.22353
+0.00000 0.63137 0.21176
+0.00000 0.64314 0.20000
+0.00000 0.65098 0.18824
+0.00000 0.66275 0.17647
+0.00000 0.67059 0.16471
+0.00000 0.68235 0.15294
+0.00000 0.69020 0.14118
+0.00000 0.70196 0.12941
+0.00000 0.70980 0.11765
+0.00000 0.72157 0.10196
+0.00000 0.72941 0.08627
+0.00000 0.74118 0.07059
+0.00000 0.74902 0.05490
+0.00000 0.76078 0.03922
+0.00000 0.76863 0.02353
+0.00000 0.77647 0.00000
+0.00000 0.78824 0.00000
+0.00000 0.79608 0.00000
+0.00000 0.80784 0.00000
+0.00000 0.81569 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.83529 0.00000
+0.00000 0.84314 0.00000
+0.00000 0.85490 0.00000
+0.00000 0.86275 0.00000
+0.00000 0.87059 0.00000
+0.00000 0.88235 0.00000
+0.00000 0.89020 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.90980 0.00000
+0.00000 0.91765 0.00000
+0.00000 0.92549 0.00000
+0.00000 0.93725 0.00000
+0.00000 0.94510 0.00000
+0.00000 0.95294 0.00000
+0.00000 0.96078 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.98039 0.00000
+0.00000 0.98824 0.00000
+0.00784 1.00000 0.00000
+0.01569 0.98824 0.00000
+0.02353 0.98039 0.00000
+0.03137 0.97255 0.00000
+0.04314 0.96078 0.00000
+0.05490 0.95294 0.00000
+0.06667 0.94510 0.00000
+0.07843 0.93725 0.00000
+0.09020 0.92549 0.00000
+0.10196 0.91765 0.00000
+0.11373 0.90980 0.00000
+0.12549 0.89804 0.00000
+0.13725 0.89020 0.00000
+0.14902 0.88235 0.00000
+0.16471 0.87059 0.00000
+0.20000 0.86275 0.00000
+0.23529 0.85490 0.00000
+0.26667 0.84314 0.00000
+0.30588 0.83529 0.00000
+0.34118 0.82353 0.00000
+0.37647 0.81569 0.00000
+0.41176 0.80784 0.00000
+0.44706 0.79608 0.00000
+0.48627 0.78824 0.00000
+0.52157 0.77647 0.00000
+0.56078 0.76863 0.00000
+0.59608 0.77647 0.00000
+0.63529 0.78824 0.00000
+0.67059 0.80000 0.00000
+0.70980 0.81176 0.00000
+0.74902 0.82745 0.00000
+0.78431 0.84314 0.00000
+0.82353 0.85882 0.00000
+0.85882 0.87059 0.00000
+0.89804 0.89020 0.00000
+0.93333 0.90196 0.00000
+0.97647 0.92157 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.95294 0.00000
+1.00000 0.96863 0.00000
+1.00000 0.98824 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 0.97647 0.00000
+1.00000 0.93725 0.00000
+1.00000 0.89804 0.00000
+1.00000 0.85882 0.00000
+1.00000 0.81961 0.00000
+1.00000 0.78039 0.00000
+1.00000 0.74118 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.66275 0.00000
+1.00000 0.62353 0.00000
+1.00000 0.58431 0.00000
+1.00000 0.54510 0.00000
+1.00000 0.50980 0.00000
+1.00000 0.46667 0.00000
+1.00000 0.43137 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.35294 0.00000
+1.00000 0.31765 0.00000
+1.00000 0.27451 0.00000
+1.00000 0.23922 0.00000
+1.00000 0.20000 0.00000
+1.00000 0.16863 0.00000
+1.00000 0.12941 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.08235 0.00000
+1.00000 0.06275 0.00000
+1.00000 0.04706 0.00000
+1.00000 0.02353 0.00000
+1.00000 0.00000 0.00000
+0.99216 0.00000 0.00000
+0.98431 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.96863 0.00000 0.00000
+0.96078 0.00000 0.00000
+0.95294 0.00000 0.00000
+0.94510 0.00000 0.00000
+0.93725 0.00000 0.00000
+0.92941 0.00000 0.00000
+0.92157 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.90588 0.00000 0.00000
+0.89804 0.00000 0.00000
+0.89020 0.00000 0.00000
+0.88235 0.00000 0.00000
+0.87451 0.00000 0.00000
+0.86667 0.00000 0.00000
+0.85882 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.84314 0.00000 0.00000
+0.83529 0.00000 0.00000
+0.82745 0.00000 0.00000
+0.81961 0.00000 0.00000
+0.81176 0.00000 0.00000
+0.80392 0.00000 0.00000
+0.79608 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78039 0.00000 0.00000
+0.77255 0.00000 0.00000
+0.76471 0.00000 0.00000
+0.75686 0.00000 0.00000
+0.74902 0.00000 0.00000
+0.74118 0.00000 0.00000
+0.73333 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/rainbow2.lut b/vendor/x11iraf/ximtool/luts/rainbow2.lut
new file mode 100644
index 00000000..594a70cb
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/rainbow2.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.03137 0.00000 0.03137
+0.06275 0.00000 0.06275
+0.09412 0.00000 0.09412
+0.12549 0.00000 0.12549
+0.15686 0.00000 0.15686
+0.18824 0.00000 0.18824
+0.21961 0.00000 0.21961
+0.25098 0.00000 0.25098
+0.28235 0.00000 0.28235
+0.31373 0.00000 0.31373
+0.34510 0.00000 0.34510
+0.37647 0.00000 0.37647
+0.40784 0.00000 0.40784
+0.43922 0.00000 0.43922
+0.47059 0.00000 0.47059
+0.50196 0.00000 0.50196
+0.53333 0.00000 0.53333
+0.56471 0.00000 0.56471
+0.59608 0.00000 0.59608
+0.62745 0.00000 0.62745
+0.65882 0.00000 0.65882
+0.69020 0.00000 0.69020
+0.72157 0.00000 0.72157
+0.75294 0.00000 0.75294
+0.78431 0.00000 0.78431
+0.81569 0.00000 0.81569
+0.84706 0.00000 0.84706
+0.87843 0.00000 0.87843
+0.90980 0.00000 0.90980
+0.94118 0.00000 0.94118
+0.97255 0.00000 0.97255
+1.00000 0.00000 1.00000
+0.96863 0.00000 1.00000
+0.93725 0.00000 1.00000
+0.90588 0.00000 1.00000
+0.87451 0.00000 1.00000
+0.84314 0.00000 1.00000
+0.81176 0.00000 1.00000
+0.78039 0.00000 1.00000
+0.74902 0.00000 1.00000
+0.71765 0.00000 1.00000
+0.68627 0.00000 1.00000
+0.65490 0.00000 1.00000
+0.62353 0.00000 1.00000
+0.59216 0.00000 1.00000
+0.56078 0.00000 1.00000
+0.52941 0.00000 1.00000
+0.49804 0.00000 1.00000
+0.46667 0.00000 1.00000
+0.43529 0.00000 1.00000
+0.40392 0.00000 1.00000
+0.37255 0.00000 1.00000
+0.34118 0.00000 1.00000
+0.30980 0.00000 1.00000
+0.27843 0.00000 1.00000
+0.24706 0.00000 1.00000
+0.21569 0.00000 1.00000
+0.18431 0.00000 1.00000
+0.15294 0.00000 1.00000
+0.12157 0.00000 1.00000
+0.09020 0.00000 1.00000
+0.05882 0.00000 1.00000
+0.02745 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.03137 1.00000
+0.00000 0.06275 1.00000
+0.00000 0.09412 1.00000
+0.00000 0.12549 1.00000
+0.00000 0.15686 1.00000
+0.00000 0.18824 1.00000
+0.00000 0.21961 1.00000
+0.00000 0.25098 1.00000
+0.00000 0.28235 1.00000
+0.00000 0.31373 1.00000
+0.00000 0.34510 1.00000
+0.00000 0.37647 1.00000
+0.00000 0.40784 1.00000
+0.00000 0.43922 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.50196 1.00000
+0.00000 0.53333 1.00000
+0.00000 0.56471 1.00000
+0.00000 0.59608 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.65882 1.00000
+0.00000 0.69020 1.00000
+0.00000 0.72157 1.00000
+0.00000 0.75294 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.81569 1.00000
+0.00000 0.84706 1.00000
+0.00000 0.87843 1.00000
+0.00000 0.90980 1.00000
+0.00000 0.94118 1.00000
+0.00000 0.97255 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.96863
+0.00000 1.00000 0.93725
+0.00000 1.00000 0.90588
+0.00000 1.00000 0.87451
+0.00000 1.00000 0.84314
+0.00000 1.00000 0.81176
+0.00000 1.00000 0.78039
+0.00000 1.00000 0.74902
+0.00000 1.00000 0.71765
+0.00000 1.00000 0.68627
+0.00000 1.00000 0.65490
+0.00000 1.00000 0.62353
+0.00000 1.00000 0.59216
+0.00000 1.00000 0.56078
+0.00000 1.00000 0.52941
+0.00000 1.00000 0.49804
+0.00000 1.00000 0.46667
+0.00000 1.00000 0.43529
+0.00000 1.00000 0.40392
+0.00000 1.00000 0.37255
+0.00000 1.00000 0.34118
+0.00000 1.00000 0.30980
+0.00000 1.00000 0.27843
+0.00000 1.00000 0.24706
+0.00000 1.00000 0.21569
+0.00000 1.00000 0.18431
+0.00000 1.00000 0.15294
+0.00000 1.00000 0.12157
+0.00000 1.00000 0.09020
+0.00000 1.00000 0.05882
+0.00000 1.00000 0.02745
+0.00000 1.00000 0.00000
+0.03137 1.00000 0.00000
+0.06275 1.00000 0.00000
+0.09412 1.00000 0.00000
+0.12549 1.00000 0.00000
+0.15686 1.00000 0.00000
+0.18824 1.00000 0.00000
+0.21961 1.00000 0.00000
+0.25098 1.00000 0.00000
+0.28235 1.00000 0.00000
+0.31373 1.00000 0.00000
+0.34510 1.00000 0.00000
+0.37647 1.00000 0.00000
+0.40784 1.00000 0.00000
+0.43922 1.00000 0.00000
+0.47059 1.00000 0.00000
+0.50196 1.00000 0.00000
+0.53333 1.00000 0.00000
+0.56471 1.00000 0.00000
+0.59608 1.00000 0.00000
+0.62745 1.00000 0.00000
+0.65882 1.00000 0.00000
+0.69020 1.00000 0.00000
+0.72157 1.00000 0.00000
+0.75294 1.00000 0.00000
+0.78431 1.00000 0.00000
+0.81569 1.00000 0.00000
+0.84706 1.00000 0.00000
+0.87843 1.00000 0.00000
+0.90980 1.00000 0.00000
+0.94118 1.00000 0.00000
+0.97255 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 0.98431 0.00000
+1.00000 0.96863 0.00000
+1.00000 0.95294 0.00000
+1.00000 0.93725 0.00000
+1.00000 0.92157 0.00000
+1.00000 0.90588 0.00000
+1.00000 0.89020 0.00000
+1.00000 0.87451 0.00000
+1.00000 0.85882 0.00000
+1.00000 0.84314 0.00000
+1.00000 0.82745 0.00000
+1.00000 0.81176 0.00000
+1.00000 0.79608 0.00000
+1.00000 0.78039 0.00000
+1.00000 0.76471 0.00000
+1.00000 0.74902 0.00000
+1.00000 0.73333 0.00000
+1.00000 0.71765 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.68627 0.00000
+1.00000 0.67059 0.00000
+1.00000 0.65490 0.00000
+1.00000 0.63922 0.00000
+1.00000 0.62353 0.00000
+1.00000 0.60784 0.00000
+1.00000 0.59216 0.00000
+1.00000 0.57647 0.00000
+1.00000 0.56078 0.00000
+1.00000 0.54510 0.00000
+1.00000 0.52941 0.00000
+1.00000 0.51373 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.48235 0.00000
+1.00000 0.46667 0.00000
+1.00000 0.45098 0.00000
+1.00000 0.43529 0.00000
+1.00000 0.41961 0.00000
+1.00000 0.40392 0.00000
+1.00000 0.38824 0.00000
+1.00000 0.37255 0.00000
+1.00000 0.35686 0.00000
+1.00000 0.34118 0.00000
+1.00000 0.32549 0.00000
+1.00000 0.30980 0.00000
+1.00000 0.29412 0.00000
+1.00000 0.27843 0.00000
+1.00000 0.26275 0.00000
+1.00000 0.24706 0.00000
+1.00000 0.23137 0.00000
+1.00000 0.21569 0.00000
+1.00000 0.20000 0.00000
+1.00000 0.18431 0.00000
+1.00000 0.16863 0.00000
+1.00000 0.15294 0.00000
+1.00000 0.13725 0.00000
+1.00000 0.12157 0.00000
+1.00000 0.10588 0.00000
+1.00000 0.09020 0.00000
+1.00000 0.07451 0.00000
+1.00000 0.05882 0.00000
+1.00000 0.04314 0.00000
+1.00000 0.02745 0.00000
+1.00000 0.01176 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.03137 0.03137
+1.00000 0.06275 0.06275
+1.00000 0.09412 0.09412
+1.00000 0.12549 0.12549
+1.00000 0.15686 0.15686
+1.00000 0.18824 0.18824
+1.00000 0.21961 0.21961
+1.00000 0.25098 0.25098
+1.00000 0.28235 0.28235
+1.00000 0.31373 0.31373
+1.00000 0.34510 0.34510
+1.00000 0.37647 0.37647
+1.00000 0.40784 0.40784
+1.00000 0.43922 0.43922
+1.00000 0.47059 0.47059
+1.00000 0.50196 0.50196
+1.00000 0.53333 0.53333
+1.00000 0.56471 0.56471
+1.00000 0.59608 0.59608
+1.00000 0.62745 0.62745
+1.00000 0.65882 0.65882
+1.00000 0.69020 0.69020
+1.00000 0.72157 0.72157
+1.00000 0.75294 0.75294
+1.00000 0.78431 0.78431
+1.00000 0.81569 0.81569
+1.00000 0.84706 0.84706
+1.00000 0.87843 0.87843
+1.00000 0.90980 0.90980
+1.00000 0.94118 0.94118
+1.00000 0.97255 0.97255
diff --git a/vendor/x11iraf/ximtool/luts/rainbow3.lut b/vendor/x11iraf/ximtool/luts/rainbow3.lut
new file mode 100644
index 00000000..f9769859
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/rainbow3.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.03922
+0.00000 0.00000 0.07843
+0.00000 0.00000 0.11765
+0.00000 0.00000 0.15686
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.23922
+0.00000 0.00000 0.27843
+0.00000 0.00000 0.31765
+0.00000 0.00000 0.35686
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.43922
+0.00000 0.00000 0.47843
+0.00000 0.00000 0.51765
+0.00000 0.00000 0.55686
+0.00000 0.00000 0.60000
+0.00000 0.00000 0.63922
+0.00000 0.00000 0.67843
+0.00000 0.00000 0.71765
+0.00000 0.00000 0.75686
+0.00000 0.00000 0.80000
+0.00000 0.00000 0.83922
+0.00000 0.00000 0.87843
+0.00000 0.00000 0.91765
+0.00000 0.00000 0.95686
+0.00000 0.00000 1.00000
+0.00000 0.03137 1.00000
+0.00000 0.06275 1.00000
+0.00000 0.09412 1.00000
+0.00000 0.12549 1.00000
+0.00000 0.15686 1.00000
+0.00000 0.18824 1.00000
+0.00000 0.21961 1.00000
+0.00000 0.25490 1.00000
+0.00000 0.28627 1.00000
+0.00000 0.31765 1.00000
+0.00000 0.34902 1.00000
+0.00000 0.38039 1.00000
+0.00000 0.41176 1.00000
+0.00000 0.44314 1.00000
+0.00000 0.47843 1.00000
+0.00000 0.49804 1.00000
+0.00000 0.51765 1.00000
+0.00000 0.53725 1.00000
+0.00000 0.55686 1.00000
+0.00000 0.58039 1.00000
+0.00000 0.60000 1.00000
+0.00000 0.61961 1.00000
+0.00000 0.63922 1.00000
+0.00000 0.65882 1.00000
+0.00000 0.68235 1.00000
+0.00000 0.70196 1.00000
+0.00000 0.72157 1.00000
+0.00000 0.74118 1.00000
+0.00000 0.76078 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.79608 1.00000
+0.00000 0.81176 1.00000
+0.00000 0.82745 1.00000
+0.00000 0.83922 1.00000
+0.00000 0.85490 1.00000
+0.00000 0.87059 1.00000
+0.00000 0.88235 1.00000
+0.00000 0.89804 1.00000
+0.00000 0.91373 1.00000
+0.00000 0.92549 1.00000
+0.00000 0.94118 1.00000
+0.00000 0.95686 1.00000
+0.00000 0.96863 1.00000
+0.00000 0.98431 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.98039
+0.00000 1.00000 0.96078
+0.00000 1.00000 0.94118
+0.00000 1.00000 0.92157
+0.00000 1.00000 0.90196
+0.00000 1.00000 0.88235
+0.00000 1.00000 0.86275
+0.00000 1.00000 0.84314
+0.00000 1.00000 0.82353
+0.00000 1.00000 0.80392
+0.00000 1.00000 0.78431
+0.00000 1.00000 0.76471
+0.00000 1.00000 0.74510
+0.00000 1.00000 0.72549
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.65882
+0.00000 1.00000 0.61176
+0.00000 1.00000 0.56471
+0.00000 1.00000 0.51765
+0.00000 1.00000 0.47059
+0.00000 1.00000 0.42353
+0.00000 1.00000 0.37647
+0.00000 1.00000 0.32549
+0.00000 1.00000 0.27843
+0.00000 1.00000 0.23137
+0.00000 1.00000 0.18431
+0.00000 1.00000 0.13725
+0.00000 1.00000 0.09020
+0.00000 1.00000 0.04314
+0.00000 1.00000 0.00000
+0.04706 1.00000 0.00000
+0.09412 1.00000 0.00000
+0.14118 1.00000 0.00000
+0.18824 1.00000 0.00000
+0.23529 1.00000 0.00000
+0.28235 1.00000 0.00000
+0.32941 1.00000 0.00000
+0.37647 1.00000 0.00000
+0.42353 1.00000 0.00000
+0.47059 1.00000 0.00000
+0.51765 1.00000 0.00000
+0.56471 1.00000 0.00000
+0.61176 1.00000 0.00000
+0.65882 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.72549 1.00000 0.00000
+0.74510 1.00000 0.00000
+0.76471 1.00000 0.00000
+0.78431 1.00000 0.00000
+0.80392 1.00000 0.00000
+0.82353 1.00000 0.00000
+0.84314 1.00000 0.00000
+0.86275 1.00000 0.00000
+0.88235 1.00000 0.00000
+0.90196 1.00000 0.00000
+0.92157 1.00000 0.00000
+0.94118 1.00000 0.00000
+0.96078 1.00000 0.00000
+0.98039 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 0.98039 0.00000
+0.99608 0.96078 0.00000
+0.99608 0.94510 0.00000
+0.99608 0.92549 0.00000
+0.99608 0.90588 0.00000
+0.99216 0.89020 0.00000
+0.99216 0.87059 0.00000
+0.99216 0.85098 0.00000
+0.99216 0.83529 0.00000
+0.99216 0.81569 0.00000
+0.98824 0.79608 0.00000
+0.98824 0.78039 0.00000
+0.98824 0.76078 0.00000
+0.98824 0.74118 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.70588 0.00000
+0.98824 0.69020 0.00000
+0.98824 0.67451 0.00000
+0.98824 0.65490 0.00000
+0.99216 0.63922 0.00000
+0.99216 0.62353 0.00000
+0.99216 0.60392 0.00000
+0.99216 0.58824 0.00000
+0.99216 0.57255 0.00000
+0.99608 0.55294 0.00000
+0.99608 0.53725 0.00000
+0.99608 0.52157 0.00000
+0.99608 0.50196 0.00000
+0.99608 0.48627 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.43922 0.00000
+1.00000 0.40784 0.00000
+1.00000 0.37647 0.00000
+1.00000 0.34510 0.00000
+1.00000 0.31373 0.00000
+1.00000 0.28235 0.00000
+1.00000 0.25098 0.00000
+1.00000 0.21569 0.00000
+1.00000 0.18431 0.00000
+1.00000 0.15294 0.00000
+1.00000 0.12157 0.00000
+1.00000 0.09020 0.00000
+1.00000 0.05882 0.00000
+1.00000 0.02745 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.04706
+1.00000 0.00000 0.09412
+1.00000 0.00000 0.14118
+1.00000 0.00000 0.18824
+1.00000 0.00000 0.23529
+1.00000 0.00000 0.28235
+1.00000 0.00000 0.32941
+1.00000 0.00000 0.37647
+1.00000 0.00000 0.42353
+1.00000 0.00000 0.47059
+1.00000 0.00000 0.51765
+1.00000 0.00000 0.56471
+1.00000 0.00000 0.61176
+1.00000 0.00000 0.65882
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.72549
+1.00000 0.00000 0.74902
+1.00000 0.00000 0.77255
+1.00000 0.00000 0.79608
+1.00000 0.00000 0.81569
+1.00000 0.00000 0.83922
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.88627
+1.00000 0.00000 0.90588
+1.00000 0.00000 0.92941
+1.00000 0.00000 0.95294
+1.00000 0.00000 0.97647
+1.00000 0.00000 1.00000
+1.00000 0.03529 1.00000
+1.00000 0.07059 1.00000
+1.00000 0.10588 1.00000
+1.00000 0.14118 1.00000
+1.00000 0.18039 1.00000
+1.00000 0.21569 1.00000
+1.00000 0.25098 1.00000
+1.00000 0.28627 1.00000
+1.00000 0.32549 1.00000
+1.00000 0.36078 1.00000
+1.00000 0.39608 1.00000
+1.00000 0.43137 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.48627 1.00000
+1.00000 0.50588 1.00000
+1.00000 0.52157 1.00000
+1.00000 0.54118 1.00000
+1.00000 0.56078 1.00000
+1.00000 0.57647 1.00000
+1.00000 0.59608 1.00000
+1.00000 0.61176 1.00000
+1.00000 0.63137 1.00000
+1.00000 0.65098 1.00000
+1.00000 0.66667 1.00000
+1.00000 0.68627 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.74510 1.00000
+1.00000 0.78824 1.00000
+1.00000 0.83137 1.00000
+1.00000 0.87059 1.00000
+1.00000 0.91373 1.00000
+1.00000 0.95686 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/rainbow4.lut b/vendor/x11iraf/ximtool/luts/rainbow4.lut
new file mode 100644
index 00000000..233da89d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/rainbow4.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.01176
+0.00000 0.00000 0.02745
+0.00000 0.00000 0.04314
+0.00000 0.00000 0.05882
+0.00000 0.00000 0.07451
+0.00000 0.00000 0.09020
+0.00000 0.00000 0.10588
+0.00000 0.00000 0.12157
+0.00000 0.00000 0.13725
+0.00000 0.00000 0.15294
+0.00000 0.00000 0.16863
+0.00000 0.00000 0.18431
+0.00000 0.00000 0.20000
+0.00000 0.00000 0.21176
+0.00000 0.00000 0.22745
+0.00000 0.00000 0.24314
+0.00000 0.00000 0.25882
+0.00000 0.00000 0.27451
+0.00000 0.00000 0.29020
+0.00000 0.00000 0.30588
+0.00000 0.00000 0.32157
+0.00000 0.00000 0.33725
+0.00000 0.00000 0.35294
+0.00000 0.00000 0.36863
+0.00000 0.00000 0.38431
+0.00000 0.00000 0.40000
+0.00000 0.00000 0.41176
+0.00000 0.00000 0.42745
+0.00000 0.00000 0.44314
+0.00000 0.00000 0.45882
+0.00000 0.00000 0.47451
+0.00000 0.00000 0.49020
+0.00000 0.00000 0.50588
+0.00000 0.00000 0.52157
+0.00000 0.00000 0.53725
+0.00000 0.00000 0.55294
+0.00000 0.00000 0.56863
+0.00000 0.00000 0.58431
+0.00000 0.00000 0.60000
+0.00000 0.00000 0.61176
+0.00000 0.00000 0.62745
+0.00000 0.00000 0.64314
+0.00000 0.00000 0.65882
+0.00000 0.00000 0.67451
+0.00000 0.00000 0.69020
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.72157
+0.00000 0.00000 0.73725
+0.00000 0.00000 0.75294
+0.00000 0.00000 0.76863
+0.00000 0.00000 0.78431
+0.00000 0.00000 0.80000
+0.00000 0.00000 0.81176
+0.00000 0.00000 0.82745
+0.00000 0.00000 0.84314
+0.00000 0.00000 0.85882
+0.00000 0.00000 0.87451
+0.00000 0.00000 0.89020
+0.00000 0.00000 0.90588
+0.00000 0.00000 0.92157
+0.00000 0.00000 0.93725
+0.00000 0.00000 0.95294
+0.00000 0.00000 0.96863
+0.00000 0.00000 0.98431
+0.00000 0.00000 1.00000
+0.00000 0.03529 1.00000
+0.00000 0.07059 1.00000
+0.00000 0.10980 1.00000
+0.00000 0.14510 1.00000
+0.00000 0.18039 1.00000
+0.00000 0.21961 1.00000
+0.00000 0.25490 1.00000
+0.00000 0.29412 1.00000
+0.00000 0.32941 1.00000
+0.00000 0.36471 1.00000
+0.00000 0.40392 1.00000
+0.00000 0.43922 1.00000
+0.00000 0.47843 1.00000
+0.00000 0.50196 1.00000
+0.00000 0.52549 1.00000
+0.00000 0.54902 1.00000
+0.00000 0.57255 1.00000
+0.00000 0.59608 1.00000
+0.00000 0.61961 1.00000
+0.00000 0.64314 1.00000
+0.00000 0.66667 1.00000
+0.00000 0.69020 1.00000
+0.00000 0.71373 1.00000
+0.00000 0.73725 1.00000
+0.00000 0.76078 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.80000 1.00000
+0.00000 0.81569 1.00000
+0.00000 0.83137 1.00000
+0.00000 0.84706 1.00000
+0.00000 0.86667 1.00000
+0.00000 0.88235 1.00000
+0.00000 0.89804 1.00000
+0.00000 0.91373 1.00000
+0.00000 0.93333 1.00000
+0.00000 0.94902 1.00000
+0.00000 0.96471 1.00000
+0.00000 0.98039 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.97647
+0.00000 1.00000 0.95294
+0.00000 1.00000 0.92941
+0.00000 1.00000 0.90588
+0.00000 1.00000 0.88627
+0.00000 1.00000 0.86275
+0.00000 1.00000 0.83922
+0.00000 1.00000 0.81569
+0.00000 1.00000 0.79608
+0.00000 1.00000 0.77255
+0.00000 1.00000 0.74902
+0.00000 1.00000 0.72549
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.65098
+0.00000 1.00000 0.59608
+0.00000 1.00000 0.54118
+0.00000 1.00000 0.48627
+0.00000 1.00000 0.43137
+0.00000 1.00000 0.37647
+0.00000 1.00000 0.32549
+0.00000 1.00000 0.27059
+0.00000 1.00000 0.21569
+0.00000 1.00000 0.16078
+0.00000 1.00000 0.10588
+0.00000 1.00000 0.05098
+0.00000 1.00000 0.00000
+0.05098 1.00000 0.00000
+0.10588 1.00000 0.00000
+0.16078 1.00000 0.00000
+0.21569 1.00000 0.00000
+0.27059 1.00000 0.00000
+0.32549 1.00000 0.00000
+0.37647 1.00000 0.00000
+0.43137 1.00000 0.00000
+0.48627 1.00000 0.00000
+0.54118 1.00000 0.00000
+0.59608 1.00000 0.00000
+0.65098 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.72549 1.00000 0.00000
+0.74902 1.00000 0.00000
+0.77255 1.00000 0.00000
+0.79608 1.00000 0.00000
+0.81569 1.00000 0.00000
+0.83922 1.00000 0.00000
+0.86275 1.00000 0.00000
+0.88627 1.00000 0.00000
+0.90588 1.00000 0.00000
+0.92941 1.00000 0.00000
+0.95294 1.00000 0.00000
+0.97647 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 0.97647 0.00000
+0.99608 0.95686 0.00000
+0.99608 0.93333 0.00000
+0.99608 0.91373 0.00000
+0.99216 0.89412 0.00000
+0.99216 0.87059 0.00000
+0.99216 0.85098 0.00000
+0.99216 0.82745 0.00000
+0.98824 0.80784 0.00000
+0.98824 0.78824 0.00000
+0.98824 0.76471 0.00000
+0.98824 0.74510 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.70588 0.00000
+0.98824 0.68627 0.00000
+0.98824 0.66667 0.00000
+0.98824 0.64706 0.00000
+0.99216 0.62745 0.00000
+0.99216 0.60784 0.00000
+0.99216 0.58824 0.00000
+0.99216 0.56863 0.00000
+0.99608 0.54902 0.00000
+0.99608 0.52941 0.00000
+0.99608 0.50980 0.00000
+0.99608 0.49020 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.43137 0.00000
+1.00000 0.39608 0.00000
+1.00000 0.36078 0.00000
+1.00000 0.32549 0.00000
+1.00000 0.28627 0.00000
+1.00000 0.25098 0.00000
+1.00000 0.21569 0.00000
+1.00000 0.18039 0.00000
+1.00000 0.14118 0.00000
+1.00000 0.10588 0.00000
+1.00000 0.07059 0.00000
+1.00000 0.03529 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.05098
+1.00000 0.00000 0.10588
+1.00000 0.00000 0.16078
+1.00000 0.00000 0.21569
+1.00000 0.00000 0.27059
+1.00000 0.00000 0.32549
+1.00000 0.00000 0.37647
+1.00000 0.00000 0.43137
+1.00000 0.00000 0.48627
+1.00000 0.00000 0.54118
+1.00000 0.00000 0.59608
+1.00000 0.00000 0.65098
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.72549
+1.00000 0.00000 0.74902
+1.00000 0.00000 0.77255
+1.00000 0.00000 0.79608
+1.00000 0.00000 0.81569
+1.00000 0.00000 0.83922
+1.00000 0.00000 0.86275
+1.00000 0.00000 0.88627
+1.00000 0.00000 0.90588
+1.00000 0.00000 0.92941
+1.00000 0.00000 0.95294
+1.00000 0.00000 0.97647
+1.00000 0.00000 1.00000
+1.00000 0.03529 1.00000
+1.00000 0.07059 1.00000
+1.00000 0.10588 1.00000
+1.00000 0.14118 1.00000
+1.00000 0.18039 1.00000
+1.00000 0.21569 1.00000
+1.00000 0.25098 1.00000
+1.00000 0.28627 1.00000
+1.00000 0.32549 1.00000
+1.00000 0.36078 1.00000
+1.00000 0.39608 1.00000
+1.00000 0.43137 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.48627 1.00000
+1.00000 0.50588 1.00000
+1.00000 0.52157 1.00000
+1.00000 0.54118 1.00000
+1.00000 0.56078 1.00000
+1.00000 0.57647 1.00000
+1.00000 0.59608 1.00000
+1.00000 0.61176 1.00000
+1.00000 0.63137 1.00000
+1.00000 0.65098 1.00000
+1.00000 0.66667 1.00000
+1.00000 0.68627 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.74510 1.00000
+1.00000 0.78824 1.00000
+1.00000 0.83137 1.00000
+1.00000 0.87059 1.00000
+1.00000 0.91373 1.00000
+1.00000 0.95686 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/random.lut b/vendor/x11iraf/ximtool/luts/random.lut
new file mode 100644
index 00000000..1b09399d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/random.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.51765
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98431 0.81176 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.76863 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 0.89804 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+0.92157 0.61961 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.65882 0.59608 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.26275 0.87843 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.74118
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.65490
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.36078 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.98431 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.99608 0.97647 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98824 0.77647 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.36863 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.46667
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+0.91373 0.00000 0.97255
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.53333 0.00000 0.87451
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.80392
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.13725
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/random1.lut b/vendor/x11iraf/ximtool/luts/random1.lut
new file mode 100644
index 00000000..98dafa52
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/random1.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.00000 0.00000 0.16471
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.23137 0.00000 0.31765
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.47451
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.47059 0.00000 0.63922
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.23137 0.00000 0.80392
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.00000 0.97647
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.05098 0.85098
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.19608 0.69412
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.33333 0.56471
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.42353 0.44706
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.50980 0.35294
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.59216 0.25882
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.67059 0.16471
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.74902 0.05490
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.82353 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.89804 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.00000 0.97255 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.05490 0.95294 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.14902 0.88235 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.41176 0.80784 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+0.70980 0.81176 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 0.93333 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.70196 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.39216 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+1.00000 0.09804 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.97647 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.91373 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.85098 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
+0.78824 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/random2.lut b/vendor/x11iraf/ximtool/luts/random2.lut
new file mode 100644
index 00000000..6c0acc81
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/random2.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.47059 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.62745 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 0.78431 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 1.00000 0.00392
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00392 0.86275 0.47059
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.78431 0.62745
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.70588 0.78431
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.00000 0.62745 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.47059 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.23529 0.00392 1.00000
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.47059 0.00392 0.78431
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.62745 0.00392 0.62745
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.78431 0.00392 0.47059
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+0.90196 0.11765 0.23529
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.23529 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.59608 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+0.98039 0.98039 0.47059
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/random3.lut b/vendor/x11iraf/ximtool/luts/random3.lut
new file mode 100644
index 00000000..60f216ea
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/random3.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.47059
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.47059 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 0.78431 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.47059 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/random4.lut b/vendor/x11iraf/ximtool/luts/random4.lut
new file mode 100644
index 00000000..6865308b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/random4.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.70588
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.00000 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.47059 0.00000 0.86275
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+0.70588 0.00000 0.90196
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.70588
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+1.00000 0.47059 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72549 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+0.98431 0.85098 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.70588 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 0.70588
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.47059 0.78431 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.62745 0.62745 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+0.78431 0.47059 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.70588 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 0.86275 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/real.lut b/vendor/x11iraf/ximtool/luts/real.lut
new file mode 100644
index 00000000..4eb841ea
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/real.lut
@@ -0,0 +1,256 @@
+0.00784 0.00392 0.00000
+0.01569 0.00784 0.00000
+0.02353 0.01176 0.00000
+0.03137 0.01569 0.00000
+0.03922 0.01961 0.00000
+0.04706 0.02353 0.00000
+0.05490 0.02745 0.00000
+0.06275 0.03137 0.00000
+0.07059 0.03529 0.00000
+0.07843 0.03922 0.00000
+0.08627 0.04314 0.00000
+0.09412 0.04706 0.00000
+0.10196 0.05098 0.00000
+0.10980 0.05490 0.00000
+0.11765 0.05882 0.00000
+0.12549 0.06275 0.00000
+0.13333 0.06667 0.00000
+0.14118 0.07059 0.00000
+0.14902 0.07451 0.00000
+0.15686 0.07843 0.00000
+0.16471 0.08235 0.00000
+0.17255 0.08627 0.00000
+0.18039 0.09020 0.00000
+0.18824 0.09412 0.00000
+0.19608 0.09804 0.00000
+0.20392 0.10196 0.00000
+0.21176 0.10588 0.00000
+0.21961 0.10980 0.00000
+0.22745 0.11373 0.00000
+0.23529 0.11765 0.00000
+0.24314 0.12157 0.00000
+0.25098 0.12549 0.00000
+0.25882 0.12941 0.00000
+0.26667 0.13333 0.00000
+0.27451 0.13725 0.00000
+0.28235 0.14118 0.00000
+0.29020 0.14510 0.00000
+0.29804 0.14902 0.00000
+0.30588 0.15294 0.00000
+0.31373 0.15686 0.00000
+0.32157 0.16078 0.00000
+0.32941 0.16471 0.00000
+0.33725 0.16863 0.00000
+0.34510 0.17255 0.00000
+0.35294 0.17647 0.00000
+0.36078 0.18039 0.00000
+0.36863 0.18431 0.00000
+0.37647 0.18824 0.00000
+0.38431 0.19216 0.00000
+0.39216 0.19608 0.00000
+0.40000 0.20000 0.00000
+0.40784 0.20392 0.00000
+0.41569 0.20784 0.00000
+0.42353 0.21176 0.00000
+0.43137 0.21569 0.00000
+0.43922 0.21961 0.00000
+0.44706 0.22353 0.00000
+0.45490 0.22745 0.00000
+0.46275 0.23137 0.00000
+0.47059 0.23529 0.00000
+0.47843 0.23922 0.00000
+0.48627 0.24314 0.00000
+0.49412 0.24706 0.00000
+0.50196 0.25098 0.00000
+0.50980 0.25490 0.00000
+0.51765 0.25882 0.00000
+0.52549 0.26275 0.00000
+0.53333 0.26667 0.00000
+0.54118 0.27059 0.00000
+0.54902 0.27451 0.00000
+0.55686 0.27843 0.00000
+0.56471 0.28235 0.00000
+0.57255 0.28627 0.00000
+0.58039 0.29020 0.00000
+0.58824 0.29412 0.00000
+0.59608 0.29804 0.00000
+0.60392 0.30196 0.00000
+0.61176 0.30588 0.00000
+0.61961 0.30980 0.00000
+0.62745 0.31373 0.00000
+0.63529 0.31765 0.00000
+0.64314 0.32157 0.00000
+0.65098 0.32549 0.00000
+0.65882 0.32941 0.00000
+0.66667 0.33333 0.00000
+0.67451 0.33725 0.00000
+0.68235 0.34118 0.00000
+0.69020 0.34510 0.00000
+0.69804 0.34902 0.00000
+0.70588 0.35294 0.00000
+0.71373 0.35686 0.00000
+0.72157 0.36078 0.00000
+0.72941 0.36471 0.00000
+0.73725 0.36863 0.00000
+0.74510 0.37255 0.00000
+0.75294 0.37647 0.00000
+0.76078 0.38039 0.00000
+0.76863 0.38431 0.00000
+0.77647 0.38824 0.00000
+0.78431 0.39216 0.00000
+0.79216 0.39608 0.00000
+0.80000 0.40000 0.00000
+0.80784 0.40392 0.00000
+0.81569 0.40784 0.00000
+0.82353 0.41176 0.00000
+0.83137 0.41569 0.00000
+0.83922 0.41961 0.00000
+0.84706 0.42353 0.00000
+0.85490 0.42745 0.00000
+0.86275 0.43137 0.00000
+0.87059 0.43529 0.00000
+0.87843 0.43922 0.00000
+0.88627 0.44314 0.00000
+0.89412 0.44706 0.00000
+0.90196 0.45098 0.00000
+0.90980 0.45490 0.00000
+0.91765 0.45882 0.00000
+0.92549 0.46275 0.00000
+0.93333 0.46667 0.00000
+0.94118 0.47059 0.00000
+0.94902 0.47451 0.00000
+0.95686 0.47843 0.00000
+0.96471 0.48235 0.00000
+0.97255 0.48627 0.00000
+0.98039 0.49020 0.00000
+0.98824 0.49412 0.00000
+0.99608 0.49804 0.00000
+1.00000 0.50196 0.00000
+1.00000 0.50588 0.00784
+1.00000 0.50980 0.01569
+1.00000 0.51373 0.02353
+1.00000 0.51765 0.03137
+1.00000 0.52157 0.03922
+1.00000 0.52549 0.04706
+1.00000 0.52941 0.05490
+1.00000 0.53333 0.06275
+1.00000 0.53725 0.07059
+1.00000 0.54118 0.07843
+1.00000 0.54510 0.08627
+1.00000 0.54902 0.09412
+1.00000 0.55294 0.10196
+1.00000 0.55686 0.10980
+1.00000 0.56078 0.11765
+1.00000 0.56471 0.12549
+1.00000 0.56863 0.13333
+1.00000 0.57255 0.14118
+1.00000 0.57647 0.14902
+1.00000 0.58039 0.15686
+1.00000 0.58431 0.16471
+1.00000 0.58824 0.17255
+1.00000 0.59216 0.18039
+1.00000 0.59608 0.18824
+1.00000 0.60000 0.19608
+1.00000 0.60392 0.20392
+1.00000 0.60784 0.21176
+1.00000 0.61176 0.21961
+1.00000 0.61569 0.22745
+1.00000 0.61961 0.23529
+1.00000 0.62353 0.24314
+1.00000 0.62745 0.25098
+1.00000 0.63137 0.25882
+1.00000 0.63529 0.26667
+1.00000 0.63922 0.27451
+1.00000 0.64314 0.28235
+1.00000 0.64706 0.29020
+1.00000 0.65098 0.29804
+1.00000 0.65490 0.30588
+1.00000 0.65882 0.31373
+1.00000 0.66275 0.32157
+1.00000 0.66667 0.32941
+1.00000 0.67059 0.33725
+1.00000 0.67451 0.34510
+1.00000 0.67843 0.35294
+1.00000 0.68235 0.36078
+1.00000 0.68627 0.36863
+1.00000 0.69020 0.37647
+1.00000 0.69412 0.38431
+1.00000 0.69804 0.39216
+1.00000 0.70196 0.40000
+1.00000 0.70588 0.40784
+1.00000 0.70980 0.41569
+1.00000 0.71373 0.42353
+1.00000 0.71765 0.43137
+1.00000 0.72157 0.43922
+1.00000 0.72549 0.44706
+1.00000 0.72941 0.45490
+1.00000 0.73333 0.46275
+1.00000 0.73725 0.47059
+1.00000 0.74118 0.47843
+1.00000 0.74510 0.48627
+1.00000 0.74902 0.49412
+1.00000 0.75294 0.50196
+1.00000 0.75686 0.50980
+1.00000 0.76078 0.51765
+1.00000 0.76471 0.52549
+1.00000 0.76863 0.53333
+1.00000 0.77255 0.54118
+1.00000 0.77647 0.54902
+1.00000 0.78039 0.55686
+1.00000 0.78431 0.56471
+1.00000 0.78824 0.57255
+1.00000 0.79216 0.58039
+1.00000 0.79608 0.58824
+1.00000 0.80000 0.59608
+1.00000 0.80392 0.60392
+1.00000 0.80784 0.61176
+1.00000 0.81176 0.61961
+1.00000 0.81569 0.62745
+1.00000 0.81961 0.63529
+1.00000 0.82353 0.64314
+1.00000 0.82745 0.65098
+1.00000 0.83137 0.65882
+1.00000 0.83529 0.66667
+1.00000 0.83922 0.67451
+1.00000 0.84314 0.68235
+1.00000 0.84706 0.69020
+1.00000 0.85098 0.69804
+1.00000 0.85490 0.70588
+1.00000 0.85882 0.71373
+1.00000 0.86275 0.72157
+1.00000 0.86667 0.72941
+1.00000 0.87059 0.73725
+1.00000 0.87451 0.74510
+1.00000 0.87843 0.75294
+1.00000 0.88235 0.76078
+1.00000 0.88627 0.76863
+1.00000 0.89020 0.77647
+1.00000 0.89412 0.78431
+1.00000 0.89804 0.79216
+1.00000 0.90196 0.80000
+1.00000 0.90588 0.80784
+1.00000 0.90980 0.81569
+1.00000 0.91373 0.82353
+1.00000 0.91765 0.83137
+1.00000 0.92157 0.83922
+1.00000 0.92549 0.84706
+1.00000 0.92941 0.85490
+1.00000 0.93333 0.86275
+1.00000 0.93725 0.87059
+1.00000 0.94118 0.87843
+1.00000 0.94510 0.88627
+1.00000 0.94902 0.89412
+1.00000 0.95294 0.90196
+1.00000 0.95686 0.90980
+1.00000 0.96078 0.91765
+1.00000 0.96471 0.92549
+1.00000 0.96863 0.93333
+1.00000 0.97255 0.94118
+1.00000 0.97647 0.94902
+1.00000 0.98039 0.95686
+1.00000 0.98431 0.96471
+1.00000 0.98824 0.97255
+1.00000 0.99216 0.98039
+1.00000 0.99608 0.98824
+1.00000 1.00000 0.99608
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/smooth.lut b/vendor/x11iraf/ximtool/luts/smooth.lut
new file mode 100644
index 00000000..b8f5973a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/smooth.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 1.00000
+0.01569 0.00000 0.98431
+0.03529 0.00000 0.96471
+0.05098 0.00000 0.94902
+0.06667 0.00000 0.93333
+0.08627 0.00000 0.91373
+0.10196 0.00000 0.89804
+0.11765 0.00000 0.88235
+0.13725 0.00000 0.86275
+0.15294 0.00000 0.84706
+0.16863 0.00000 0.83137
+0.18824 0.00000 0.81176
+0.20392 0.00000 0.79608
+0.21961 0.00000 0.78039
+0.23922 0.00000 0.76078
+0.25490 0.00000 0.74510
+0.27059 0.00000 0.72941
+0.28627 0.00000 0.71373
+0.30588 0.00000 0.69412
+0.32157 0.00000 0.67843
+0.33725 0.00000 0.66275
+0.35686 0.00000 0.64314
+0.37255 0.00000 0.62745
+0.38824 0.00000 0.61176
+0.40784 0.00000 0.59216
+0.42353 0.00000 0.57647
+0.43922 0.00000 0.56078
+0.45882 0.00000 0.54118
+0.47451 0.00000 0.52549
+0.49020 0.00000 0.50980
+0.50980 0.00000 0.49020
+0.52549 0.00000 0.47451
+0.54118 0.00000 0.45882
+0.56078 0.00000 0.43922
+0.57647 0.00000 0.42353
+0.59216 0.00000 0.40784
+0.61176 0.00000 0.38824
+0.62745 0.00000 0.37255
+0.64314 0.00000 0.35686
+0.66275 0.00000 0.33725
+0.67843 0.00000 0.32157
+0.69412 0.00000 0.30588
+0.71373 0.00000 0.28627
+0.72941 0.00000 0.27059
+0.74510 0.00000 0.25490
+0.76078 0.00000 0.23922
+0.78039 0.00000 0.21961
+0.79608 0.00000 0.20392
+0.81176 0.00000 0.18824
+0.83137 0.00000 0.16863
+0.84706 0.00000 0.15294
+0.86275 0.00000 0.13725
+0.88235 0.00000 0.11765
+0.89804 0.00000 0.10196
+0.91373 0.00000 0.08627
+0.93333 0.00000 0.06667
+0.94902 0.00000 0.05098
+0.96471 0.00000 0.03529
+0.98431 0.00000 0.01569
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.01176 0.00000
+1.00000 0.01961 0.00000
+1.00000 0.03137 0.00000
+1.00000 0.03922 0.00000
+1.00000 0.05098 0.00000
+1.00000 0.05882 0.00000
+1.00000 0.07059 0.00000
+1.00000 0.08235 0.00000
+1.00000 0.09020 0.00000
+1.00000 0.10196 0.00000
+1.00000 0.10980 0.00000
+1.00000 0.12157 0.00000
+1.00000 0.12941 0.00000
+1.00000 0.14118 0.00000
+0.99608 0.15294 0.00000
+0.99608 0.16078 0.00000
+0.99608 0.17255 0.00000
+0.99608 0.18039 0.00000
+0.99608 0.19216 0.00000
+0.99608 0.20392 0.00000
+0.99608 0.21176 0.00000
+0.99608 0.22353 0.00000
+0.99608 0.23137 0.00000
+0.99608 0.24314 0.00000
+0.99608 0.25098 0.00000
+0.99608 0.26275 0.00000
+0.99608 0.27451 0.00000
+0.99608 0.28235 0.00000
+0.99608 0.29412 0.00000
+0.99608 0.30196 0.00000
+0.99608 0.31373 0.00000
+0.99608 0.32157 0.00000
+0.99608 0.33333 0.00000
+0.99608 0.34510 0.00000
+0.99608 0.35294 0.00000
+0.99608 0.36471 0.00000
+0.99608 0.37255 0.00000
+0.99608 0.38431 0.00000
+0.99608 0.39216 0.00000
+0.99608 0.40392 0.00000
+0.99608 0.41569 0.00000
+0.99608 0.42353 0.00000
+0.99608 0.43529 0.00000
+0.99608 0.44314 0.00000
+0.99216 0.45490 0.00000
+0.99216 0.46667 0.00000
+0.99216 0.47451 0.00000
+0.99216 0.48627 0.00000
+0.99216 0.49412 0.00000
+0.99216 0.50588 0.00000
+0.99216 0.51373 0.00000
+0.99216 0.52549 0.00000
+0.99216 0.53725 0.00000
+0.99216 0.54510 0.00000
+0.99216 0.55686 0.00000
+0.99216 0.56471 0.00000
+0.99216 0.57647 0.00000
+0.99216 0.58431 0.00000
+0.99216 0.59608 0.00000
+0.99216 0.60000 0.00000
+0.99216 0.60784 0.00000
+0.99216 0.61176 0.00000
+0.99216 0.61569 0.00000
+0.99216 0.61961 0.00000
+0.99216 0.62745 0.00000
+0.99216 0.63137 0.00000
+0.99216 0.63529 0.00000
+0.99216 0.64314 0.00000
+0.98824 0.64706 0.00000
+0.98824 0.65098 0.00000
+0.98824 0.65882 0.00000
+0.98824 0.66275 0.00000
+0.98824 0.66667 0.00000
+0.98824 0.67451 0.00000
+0.98824 0.67843 0.00000
+0.98824 0.68235 0.00000
+0.98824 0.68627 0.00000
+0.98824 0.69412 0.00000
+0.98824 0.69804 0.00000
+0.98824 0.70196 0.00000
+0.98824 0.70980 0.00000
+0.98824 0.71373 0.00000
+0.98824 0.71765 0.00000
+0.98824 0.72549 0.00000
+0.98824 0.72941 0.00000
+0.98824 0.73333 0.00000
+0.98824 0.73725 0.00000
+0.98824 0.74510 0.00000
+0.98824 0.74902 0.00000
+0.98431 0.75294 0.00000
+0.98431 0.76078 0.00000
+0.98431 0.76471 0.00000
+0.98431 0.76863 0.00000
+0.98431 0.77255 0.00000
+0.98431 0.78039 0.00000
+0.98431 0.78431 0.00000
+0.98431 0.78824 0.00000
+0.98431 0.79608 0.00000
+0.98431 0.80000 0.00000
+0.98431 0.80392 0.00000
+0.98431 0.81176 0.00000
+0.98431 0.81569 0.00000
+0.98431 0.81961 0.00000
+0.98431 0.82745 0.00000
+0.98431 0.83137 0.00000
+0.98431 0.83529 0.00000
+0.98431 0.83922 0.00000
+0.98431 0.84706 0.00000
+0.98431 0.85098 0.00000
+0.98039 0.85490 0.00000
+0.98039 0.86275 0.00000
+0.98039 0.86667 0.00000
+0.98039 0.87059 0.00000
+0.98039 0.87843 0.00000
+0.98039 0.88235 0.00000
+0.98039 0.88627 0.00000
+0.98039 0.89020 0.00000
+0.98039 0.89804 0.00000
+0.98039 0.90196 0.00000
+0.98039 0.90196 0.00000
+0.96471 0.88627 0.00000
+0.94902 0.87059 0.00000
+0.92941 0.85490 0.00000
+0.91373 0.83922 0.00000
+0.89804 0.82745 0.00000
+0.88235 0.81176 0.00000
+0.86275 0.79608 0.00000
+0.84706 0.78039 0.00000
+0.83137 0.76471 0.00000
+0.81569 0.74902 0.00000
+0.79608 0.73333 0.00000
+0.78039 0.71765 0.00000
+0.76471 0.70196 0.00000
+0.74902 0.68627 0.00000
+0.72941 0.67451 0.00000
+0.71373 0.65882 0.00000
+0.69804 0.64314 0.00000
+0.68235 0.62745 0.00000
+0.66275 0.61176 0.00000
+0.64706 0.59608 0.00000
+0.63137 0.58039 0.00000
+0.61569 0.56471 0.00000
+0.60000 0.54902 0.00000
+0.58039 0.53333 0.00000
+0.56471 0.52157 0.00000
+0.54902 0.50588 0.00000
+0.53333 0.49020 0.00000
+0.51373 0.47451 0.00000
+0.49804 0.45882 0.00000
+0.48235 0.44314 0.00000
+0.46667 0.42745 0.00000
+0.44706 0.41176 0.00000
+0.43137 0.39608 0.00000
+0.41569 0.38039 0.00000
+0.40000 0.36863 0.00000
+0.38039 0.35294 0.00000
+0.36471 0.33725 0.00000
+0.34902 0.32157 0.00000
+0.33333 0.30588 0.00000
+0.31765 0.29020 0.00000
+0.29804 0.27451 0.00000
+0.28235 0.25882 0.00000
+0.26667 0.24314 0.00000
+0.25098 0.22745 0.00000
+0.23137 0.21569 0.00000
+0.21569 0.20000 0.00000
+0.20000 0.18431 0.00000
+0.18431 0.16863 0.00000
+0.16471 0.15294 0.00000
+0.14902 0.13725 0.00000
+0.13333 0.12157 0.00000
+0.11765 0.10588 0.00000
+0.09804 0.09020 0.00000
+0.08235 0.07451 0.00000
+0.06667 0.06275 0.00000
+0.05098 0.04706 0.00000
+0.03137 0.03137 0.00000
+0.01569 0.01569 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000
diff --git a/vendor/x11iraf/ximtool/luts/staircase.lut b/vendor/x11iraf/ximtool/luts/staircase.lut
new file mode 100644
index 00000000..dd67419c
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/staircase.lut
@@ -0,0 +1,256 @@
+0.00392 0.00392 0.31373
+0.00784 0.00784 0.31373
+0.01176 0.01176 0.31373
+0.01569 0.01569 0.31373
+0.01961 0.01961 0.31373
+0.02353 0.02353 0.31373
+0.02745 0.02745 0.31373
+0.03137 0.03137 0.31373
+0.03529 0.03529 0.31373
+0.03922 0.03922 0.31373
+0.04314 0.04314 0.31373
+0.04706 0.04706 0.31373
+0.05098 0.05098 0.31373
+0.05490 0.05490 0.31373
+0.05882 0.05882 0.31373
+0.06275 0.06275 0.31373
+0.06667 0.06667 0.47059
+0.07059 0.07059 0.47059
+0.07451 0.07451 0.47059
+0.07843 0.07843 0.47059
+0.08235 0.08235 0.47059
+0.08627 0.08627 0.47059
+0.09020 0.09020 0.47059
+0.09412 0.09412 0.47059
+0.09804 0.09804 0.47059
+0.10196 0.10196 0.47059
+0.10588 0.10588 0.47059
+0.10980 0.10980 0.47059
+0.11373 0.11373 0.47059
+0.11765 0.11765 0.47059
+0.12157 0.12157 0.47059
+0.12549 0.12549 0.47059
+0.12941 0.12941 0.62745
+0.13333 0.13333 0.62745
+0.13725 0.13725 0.62745
+0.14118 0.14118 0.62745
+0.14510 0.14510 0.62745
+0.14902 0.14902 0.62745
+0.15294 0.15294 0.62745
+0.15686 0.15686 0.62745
+0.16078 0.16078 0.62745
+0.16471 0.16471 0.62745
+0.16863 0.16863 0.62745
+0.17255 0.17255 0.62745
+0.17647 0.17647 0.62745
+0.18039 0.18039 0.62745
+0.18431 0.18431 0.62745
+0.18824 0.18824 0.62745
+0.19216 0.19216 0.78431
+0.19608 0.19608 0.78431
+0.20000 0.20000 0.78431
+0.20392 0.20392 0.78431
+0.20784 0.20784 0.78431
+0.21176 0.21176 0.78431
+0.21569 0.21569 0.78431
+0.21961 0.21961 0.78431
+0.22353 0.22353 0.78431
+0.22745 0.22745 0.78431
+0.23137 0.23137 0.78431
+0.23529 0.23529 0.78431
+0.23922 0.23922 0.78431
+0.24314 0.24314 0.78431
+0.24706 0.24706 0.78431
+0.25098 0.25098 0.78431
+0.25490 0.25490 0.94118
+0.25882 0.25882 0.94118
+0.26275 0.26275 0.94118
+0.26667 0.26667 0.94118
+0.27059 0.27059 0.94118
+0.27451 0.27451 0.94118
+0.27843 0.27843 0.94118
+0.28235 0.28235 0.94118
+0.28627 0.28627 0.94118
+0.29020 0.29020 0.94118
+0.29412 0.29412 0.94118
+0.29804 0.29804 0.94118
+0.30196 0.30196 0.94118
+0.30588 0.30588 0.94118
+0.30980 0.30980 0.94118
+0.31373 0.31373 0.94118
+0.31765 0.31765 0.95294
+0.32157 0.32157 0.96471
+0.32549 0.32549 0.97647
+0.32941 0.32941 0.98824
+0.33333 0.33333 1.00000
+0.00392 0.31373 0.00392
+0.00784 0.31373 0.00784
+0.01176 0.31373 0.01176
+0.01569 0.31373 0.01569
+0.01961 0.31373 0.01961
+0.02353 0.31373 0.02353
+0.02745 0.31373 0.02745
+0.03137 0.31373 0.03137
+0.03529 0.31373 0.03529
+0.03922 0.31373 0.03922
+0.04314 0.31373 0.04314
+0.04706 0.31373 0.04706
+0.05098 0.31373 0.05098
+0.05490 0.31373 0.05490
+0.05882 0.31373 0.05882
+0.06275 0.31373 0.06275
+0.06667 0.47059 0.06667
+0.07059 0.47059 0.07059
+0.07451 0.47059 0.07451
+0.07843 0.47059 0.07843
+0.08235 0.47059 0.08235
+0.08627 0.47059 0.08627
+0.09020 0.47059 0.09020
+0.09412 0.47059 0.09412
+0.09804 0.47059 0.09804
+0.10196 0.47059 0.10196
+0.10588 0.47059 0.10588
+0.10980 0.47059 0.10980
+0.11373 0.47059 0.11373
+0.11765 0.47059 0.11765
+0.12157 0.47059 0.12157
+0.12549 0.47059 0.12549
+0.12941 0.62745 0.12941
+0.13333 0.62745 0.13333
+0.13725 0.62745 0.13725
+0.14118 0.62745 0.14118
+0.14510 0.62745 0.14510
+0.14902 0.62745 0.14902
+0.15294 0.62745 0.15294
+0.15686 0.62745 0.15686
+0.16078 0.62745 0.16078
+0.16471 0.62745 0.16471
+0.16863 0.62745 0.16863
+0.17255 0.62745 0.17255
+0.17647 0.62745 0.17647
+0.18039 0.62745 0.18039
+0.18431 0.62745 0.18431
+0.18824 0.62745 0.18824
+0.19216 0.78431 0.19216
+0.19608 0.78431 0.19608
+0.20000 0.78431 0.20000
+0.20392 0.78431 0.20392
+0.20784 0.78431 0.20784
+0.21176 0.78431 0.21176
+0.21569 0.78431 0.21569
+0.21961 0.78431 0.21961
+0.22353 0.78431 0.22353
+0.22745 0.78431 0.22745
+0.23137 0.78431 0.23137
+0.23529 0.78431 0.23529
+0.23922 0.78431 0.23922
+0.24314 0.78431 0.24314
+0.24706 0.78431 0.24706
+0.25098 0.78431 0.25098
+0.25490 0.94118 0.25490
+0.25882 0.94118 0.25882
+0.26275 0.94118 0.26275
+0.26667 0.94118 0.26667
+0.27059 0.94118 0.27059
+0.27451 0.94118 0.27451
+0.27843 0.94118 0.27843
+0.28235 0.94118 0.28235
+0.28627 0.94118 0.28627
+0.29020 0.94118 0.29020
+0.29412 0.94118 0.29412
+0.29804 0.94118 0.29804
+0.30196 0.94118 0.30196
+0.30588 0.94118 0.30588
+0.30980 0.94118 0.30980
+0.31373 0.94118 0.31373
+0.31765 0.95294 0.31765
+0.32157 0.96471 0.32157
+0.32549 0.97647 0.32549
+0.32941 0.98824 0.32941
+0.33333 1.00000 0.33333
+0.31373 0.00392 0.00392
+0.31373 0.00784 0.00784
+0.31373 0.01176 0.01176
+0.31373 0.01569 0.01569
+0.31373 0.01961 0.01961
+0.31373 0.02353 0.02353
+0.31373 0.02745 0.02745
+0.31373 0.03137 0.03137
+0.31373 0.03529 0.03529
+0.31373 0.03922 0.03922
+0.31373 0.04314 0.04314
+0.31373 0.04706 0.04706
+0.31373 0.05098 0.05098
+0.31373 0.05490 0.05490
+0.31373 0.05882 0.05882
+0.31373 0.06275 0.06275
+0.47059 0.06667 0.06667
+0.47059 0.07059 0.07059
+0.47059 0.07451 0.07451
+0.47059 0.07843 0.07843
+0.47059 0.08235 0.08235
+0.47059 0.08627 0.08627
+0.47059 0.09020 0.09020
+0.47059 0.09412 0.09412
+0.47059 0.09804 0.09804
+0.47059 0.10196 0.10196
+0.47059 0.10588 0.10588
+0.47059 0.10980 0.10980
+0.47059 0.11373 0.11373
+0.47059 0.11765 0.11765
+0.47059 0.12157 0.12157
+0.47059 0.12549 0.12549
+0.62745 0.12941 0.12941
+0.62745 0.13333 0.13333
+0.62745 0.13725 0.13725
+0.62745 0.14118 0.14118
+0.62745 0.14510 0.14510
+0.62745 0.14902 0.14902
+0.62745 0.15294 0.15294
+0.62745 0.15686 0.15686
+0.62745 0.16078 0.16078
+0.62745 0.16471 0.16471
+0.62745 0.16863 0.16863
+0.62745 0.17255 0.17255
+0.62745 0.17647 0.17647
+0.62745 0.18039 0.18039
+0.62745 0.18431 0.18431
+0.62745 0.18824 0.18824
+0.78431 0.19216 0.19216
+0.78431 0.19608 0.19608
+0.78431 0.20000 0.20000
+0.78431 0.20392 0.20392
+0.78431 0.20784 0.20784
+0.78431 0.21176 0.21176
+0.78431 0.21569 0.21569
+0.78431 0.21961 0.21961
+0.78431 0.22353 0.22353
+0.78431 0.22745 0.22745
+0.78431 0.23137 0.23137
+0.78431 0.23529 0.23529
+0.78431 0.23922 0.23922
+0.78431 0.24314 0.24314
+0.78431 0.24706 0.24706
+0.78431 0.25098 0.25098
+0.94118 0.25490 0.25490
+0.94118 0.25882 0.25882
+0.94118 0.26275 0.26275
+0.94118 0.26667 0.26667
+0.94118 0.27059 0.27059
+0.94118 0.27451 0.27451
+0.94118 0.27843 0.27843
+0.94118 0.28235 0.28235
+0.94118 0.28627 0.28627
+0.94118 0.29020 0.29020
+0.94118 0.29412 0.29412
+0.94118 0.29804 0.29804
+0.94118 0.30196 0.30196
+0.94118 0.30588 0.30588
+0.94118 0.30980 0.30980
+0.94118 0.31373 0.31373
+0.94902 0.39216 0.39216
+0.96078 0.52941 0.52941
+0.97255 0.66667 0.66667
+0.98431 0.80392 0.80392
+0.99216 0.80000 0.80000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/stairs8.lut b/vendor/x11iraf/ximtool/luts/stairs8.lut
new file mode 100644
index 00000000..8fab692a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/stairs8.lut
@@ -0,0 +1,256 @@
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+0.76471 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+0.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 1.00000 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.49804 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 0.00000 0.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.00000 1.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/stairs9.lut b/vendor/x11iraf/ximtool/luts/stairs9.lut
new file mode 100644
index 00000000..cb1f6385
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/stairs9.lut
@@ -0,0 +1,256 @@
+0.00000 0.00000 0.00000
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.19608 0.19608 0.19608
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.60784 0.00000 0.47451
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.78431 0.00000 0.00000
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.92549 0.65490 0.37255
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.56863 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 0.96471 0.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 1.00000 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.69412 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
+0.00000 0.00000 1.00000
diff --git a/vendor/x11iraf/ximtool/luts/standard.lut b/vendor/x11iraf/ximtool/luts/standard.lut
new file mode 100644
index 00000000..477e4bc8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/luts/standard.lut
@@ -0,0 +1,256 @@
+0.00392 0.00392 0.33333
+0.00784 0.00784 0.34118
+0.01176 0.01176 0.34902
+0.01569 0.01569 0.35686
+0.01961 0.01961 0.36471
+0.02353 0.02353 0.37255
+0.02745 0.02745 0.38039
+0.03137 0.03137 0.38824
+0.03529 0.03529 0.39608
+0.03922 0.03922 0.40392
+0.04314 0.04314 0.41176
+0.04706 0.04706 0.41961
+0.05098 0.05098 0.42745
+0.05490 0.05490 0.43529
+0.05882 0.05882 0.44314
+0.06275 0.06275 0.45098
+0.06667 0.06667 0.45882
+0.07059 0.07059 0.46667
+0.07451 0.07451 0.47451
+0.07843 0.07843 0.48235
+0.08235 0.08235 0.49020
+0.08627 0.08627 0.49804
+0.09020 0.09020 0.50588
+0.09412 0.09412 0.51373
+0.09804 0.09804 0.52157
+0.10196 0.10196 0.52941
+0.10588 0.10588 0.53725
+0.10980 0.10980 0.54510
+0.11373 0.11373 0.55294
+0.11765 0.11765 0.56078
+0.12157 0.12157 0.56863
+0.12549 0.12549 0.57647
+0.12941 0.12941 0.58431
+0.13333 0.13333 0.59210
+0.13725 0.13725 0.60000
+0.14118 0.14118 0.60784
+0.14510 0.14510 0.61569
+0.14902 0.14902 0.62353
+0.15294 0.15294 0.63137
+0.15686 0.15686 0.63922
+0.16078 0.16078 0.64706
+0.16471 0.16471 0.65490
+0.16863 0.16863 0.66275
+0.17255 0.17255 0.67059
+0.17647 0.17647 0.67843
+0.18039 0.18039 0.68627
+0.18431 0.18431 0.69412
+0.18824 0.18824 0.70196
+0.19216 0.19216 0.70980
+0.19608 0.19608 0.71765
+0.20000 0.20000 0.72549
+0.20392 0.20392 0.73333
+0.20784 0.20784 0.74118
+0.21176 0.21176 0.74902
+0.21569 0.21569 0.75686
+0.21961 0.21961 0.76471
+0.22353 0.22353 0.77255
+0.22745 0.22745 0.78039
+0.23137 0.23137 0.78824
+0.23529 0.23529 0.79608
+0.23922 0.23922 0.80392
+0.24314 0.24314 0.81176
+0.24706 0.24706 0.81961
+0.25098 0.25098 0.82745
+0.25490 0.25490 0.83529
+0.25882 0.25882 0.84314
+0.26275 0.26275 0.85098
+0.26667 0.26667 0.85882
+0.27059 0.27059 0.86667
+0.27451 0.27451 0.87451
+0.27843 0.27843 0.88235
+0.28235 0.28235 0.89020
+0.28627 0.28627 0.89804
+0.29020 0.29020 0.90588
+0.29412 0.29412 0.91373
+0.29804 0.29804 0.92157
+0.30196 0.30196 0.92941
+0.30588 0.30588 0.93725
+0.30980 0.30980 0.94510
+0.31373 0.31373 0.95294
+0.31765 0.31765 0.96078
+0.32157 0.32157 0.96863
+0.32549 0.32549 0.97647
+0.32941 0.32941 0.98431
+0.33333 0.33333 0.99216
+0.00392 0.33333 0.00392
+0.00784 0.34118 0.00784
+0.01176 0.34902 0.01176
+0.01569 0.35686 0.01569
+0.01961 0.36471 0.01961
+0.02353 0.37255 0.02353
+0.02745 0.38039 0.02745
+0.03137 0.38824 0.03137
+0.03529 0.39608 0.03529
+0.03922 0.40392 0.03922
+0.04314 0.41176 0.04314
+0.04706 0.41961 0.04706
+0.05098 0.42745 0.05098
+0.05490 0.43529 0.05490
+0.05882 0.44314 0.05882
+0.06275 0.45098 0.06275
+0.06667 0.45882 0.06667
+0.07059 0.46667 0.07059
+0.07451 0.47451 0.07451
+0.07843 0.48235 0.07843
+0.08235 0.49020 0.08235
+0.08627 0.49804 0.08627
+0.09020 0.50588 0.09020
+0.09412 0.51373 0.09412
+0.09804 0.52157 0.09804
+0.10196 0.52941 0.10196
+0.10588 0.53725 0.10588
+0.10980 0.54510 0.10980
+0.11373 0.55294 0.11373
+0.11765 0.56078 0.11765
+0.12157 0.56863 0.12157
+0.12549 0.57647 0.12549
+0.12941 0.58431 0.12941
+0.13333 0.59210 0.13333
+0.13725 0.60000 0.13725
+0.14118 0.60784 0.14118
+0.14510 0.61569 0.14510
+0.14902 0.62353 0.14902
+0.15294 0.63137 0.15294
+0.15686 0.63922 0.15686
+0.16078 0.64706 0.16078
+0.16471 0.65490 0.16471
+0.16863 0.66275 0.16863
+0.17255 0.67059 0.17255
+0.17647 0.67843 0.17647
+0.18039 0.68627 0.18039
+0.18431 0.69412 0.18431
+0.18824 0.70196 0.18824
+0.19216 0.70980 0.19216
+0.19608 0.71765 0.19608
+0.20000 0.72549 0.20000
+0.20392 0.73333 0.20392
+0.20784 0.74118 0.20784
+0.21176 0.74902 0.21176
+0.21569 0.75686 0.21569
+0.21961 0.76471 0.21961
+0.22353 0.77255 0.22353
+0.22745 0.78039 0.22745
+0.23137 0.78824 0.23137
+0.23529 0.79608 0.23529
+0.23922 0.80392 0.23922
+0.24314 0.81176 0.24314
+0.24706 0.81961 0.24706
+0.25098 0.82745 0.25098
+0.25490 0.83529 0.25490
+0.25882 0.84314 0.25882
+0.26275 0.85098 0.26275
+0.26667 0.85882 0.26667
+0.27059 0.86667 0.27059
+0.27451 0.87451 0.27451
+0.27843 0.88235 0.27843
+0.28235 0.89020 0.28235
+0.28627 0.89804 0.28627
+0.29020 0.90588 0.29020
+0.29412 0.91373 0.29412
+0.29804 0.92157 0.29804
+0.30196 0.92941 0.30196
+0.30588 0.93725 0.30588
+0.30980 0.94510 0.30980
+0.31373 0.95294 0.31373
+0.31765 0.96078 0.31765
+0.32157 0.96863 0.32157
+0.32549 0.97647 0.32549
+0.32941 0.98431 0.32941
+0.33333 0.99216 0.33333
+0.33333 0.00392 0.00392
+0.34118 0.00784 0.00784
+0.34902 0.01176 0.01176
+0.35686 0.01569 0.01569
+0.36471 0.01961 0.01961
+0.37255 0.02353 0.02353
+0.38039 0.02745 0.02745
+0.38824 0.03137 0.03137
+0.39608 0.03529 0.03529
+0.40392 0.03922 0.03922
+0.41176 0.04314 0.04314
+0.41961 0.04706 0.04706
+0.42745 0.05098 0.05098
+0.43529 0.05490 0.05490
+0.44314 0.05882 0.05882
+0.45098 0.06275 0.06275
+0.45882 0.06667 0.06667
+0.46667 0.07059 0.07059
+0.47451 0.07451 0.07451
+0.48235 0.07843 0.07843
+0.49020 0.08235 0.08235
+0.49804 0.08627 0.08627
+0.50588 0.09020 0.09020
+0.51373 0.09412 0.09412
+0.52157 0.09804 0.09804
+0.52941 0.10196 0.10196
+0.53725 0.10588 0.10588
+0.54510 0.10980 0.10980
+0.55294 0.11373 0.11373
+0.56078 0.11765 0.11765
+0.56863 0.12157 0.12157
+0.57647 0.12549 0.12549
+0.58431 0.12941 0.12941
+0.59210 0.13333 0.13333
+0.60000 0.13725 0.13725
+0.60784 0.14118 0.14118
+0.61569 0.14510 0.14510
+0.62353 0.14902 0.14902
+0.63137 0.15294 0.15294
+0.63922 0.15686 0.15686
+0.64706 0.16078 0.16078
+0.65490 0.16471 0.16471
+0.66275 0.16863 0.16863
+0.67059 0.17255 0.17255
+0.67843 0.17647 0.17647
+0.68627 0.18039 0.18039
+0.69412 0.18431 0.18431
+0.70196 0.18824 0.18824
+0.70980 0.19216 0.19216
+0.71765 0.19608 0.19608
+0.72549 0.20000 0.20000
+0.73333 0.20392 0.20392
+0.74118 0.20784 0.20784
+0.74902 0.21176 0.21176
+0.75686 0.21569 0.21569
+0.76471 0.21961 0.21961
+0.77255 0.22353 0.22353
+0.78039 0.22745 0.22745
+0.78824 0.23137 0.23137
+0.79608 0.23529 0.23529
+0.80392 0.23922 0.23922
+0.81176 0.24314 0.24314
+0.81961 0.24706 0.24706
+0.82745 0.25098 0.25098
+0.83529 0.25490 0.25490
+0.84314 0.25882 0.25882
+0.85098 0.26275 0.26275
+0.85882 0.26667 0.26667
+0.86667 0.27059 0.27059
+0.87451 0.27451 0.27451
+0.88235 0.27843 0.27843
+0.89020 0.28235 0.28235
+0.89804 0.28627 0.28627
+0.90588 0.29020 0.29020
+0.91373 0.29412 0.29412
+0.92157 0.29804 0.29804
+0.92941 0.30196 0.30196
+0.93725 0.30588 0.30588
+0.94510 0.30980 0.30980
+0.95294 0.31373 0.31373
+0.96078 0.31765 0.31765
+0.96863 0.32157 0.32157
+0.97647 0.32549 0.32549
+0.98431 0.32941 0.32941
+0.99216 0.33333 0.33333
+1.00000 0.33725 0.33725
diff --git a/vendor/x11iraf/ximtool/print.c b/vendor/x11iraf/ximtool/print.c
new file mode 100644
index 00000000..63822aa4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/print.c
@@ -0,0 +1,387 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+
+#include "ximtool.h"
+
+
+/*
+** PRINT.C -- Printer interface.
+**
+** xim_print (xim, x0,y0, nx,ny)
+**
+** ximp_rename (xim, old, new) # print alert action
+** ximp_cancel (xim, fname) # print alert action
+**
+** xim_initPrinterOps (xim)
+** xim_initPrinterList (xim)
+** xim_getPrinterInfo (xim, printer)
+**
+** xim_print prints the indicated region of the display frame (raster 0).
+** If nx or ny is zero the full display frame is printed. The output device
+** or file and all print options are maintained in the printer context within
+** the XIM descriptor. The xim_initPrinter routines should be called at
+** startup to initialize the print options and load the list of local printers.
+*/
+
+void xim_initPrinterOps();
+int xim_getPrinterInfo();
+
+static void printstat();
+static void xim_initPrinterList();
+
+
+/* XIM_PRINT -- Print the indicated region of the current display frame to
+** the printer device or to a file.
+*/
+
+xim_print (xim, x0,y0, nx,ny)
+register XimDataPtr xim;
+int x0,y0, nx,ny; /* region of source raster */
+{
+ register PSImagePtr psim = xim->psim;
+ register PrintCfgPtr pcp = xim->pcp;
+ register FrameBufPtr fb = xim->df_p;
+ register ColorMapPtr cm = &colormaps[fb->colormap-1];
+ unsigned char r[256], g[256], b[256];
+ unsigned char *pixels = NULL;
+ static char tmpfile[SZ_FNAME];
+ static char fname[SZ_FNAME];
+ static char text[SZ_LINE];
+ int w, h, ncolors;
+ FILE *fp;
+ char *mktemp();
+
+
+ bzero (text, SZ_LINE);
+ bzero (fname, SZ_FNAME);
+ bzero (tmpfile, SZ_FNAME);
+
+
+ /* Get the display pixels and colormap. The routine allocates a
+ * pointer to the pixels we'll need to free when we're done.
+ */
+ printstat (xim, "Get image data...");
+ pixels = xim_readDisplay (xim, x0,y0,nx,ny, &w,&h, r,g,b, &ncolors);
+ if (!pixels)
+ return (-1);
+
+ /* Set up some of the EPS options and load the colormap. */
+ if (psim->label && (psim->page.flags & EPS_DOTITLE))
+ eps_setLabel (psim, fb->ctran.imtitle);
+ eps_setCmap (psim, r, g, b, ncolors);
+ eps_setTransform (psim, fb->ctran.z1, fb->ctran.z2, fb->ctran.zt,
+ fb->offset, fb->scale, cm->name);
+
+
+ /* Now call the main routine to output the EPS file.
+ */
+ if (pcp->diskfile) {
+
+ /* Print to a file. If we are not clobbering an existing file
+ * and we can open the output file write to it directly and be
+ * done with it. If there is any problem we we to a temporary
+ * file and issue an alert with actions to be taken if the user
+ * decides to proceed or cancel the operation.
+ */
+ if (strchr (pcp->printFile, (int)'%'))
+ sprintf (fname, pcp->printFile, pcp->seqno++);
+ else
+ strcpy (fname, pcp->printFile);
+
+ if (access (fname, F_OK) < 0) {
+ if (fp = fopen (fname, "w")) {
+ struct stat fs;
+
+ printstat (xim, "Generating postscript output...");
+ eps_print (psim, fp, pixels, w, h, 8, 0);
+ fclose (fp);
+
+ stat (fname, &fs);
+ sprintf (text, "Wrote %d bytes to '%s'",
+ (int)fs.st_size, fname);
+ printstat (xim, text);
+
+ } else {
+ sprintf (text, "Could not open file %s", fname);
+ xim_alert (xim, text, NULL, NULL);
+ }
+
+ } else {
+ /* Named file already exists. Write a temporary file and
+ * post an alert to ask the user if they want to overwrite
+ * the existing file.
+ */
+ char ok_action[SZ_LINE];
+ char cancel_action[SZ_LINE];
+ char tmpfile[SZ_FNAME];
+ char *ip, *op, *last;
+
+
+ bzero (tmpfile, SZ_FNAME);
+ bzero (ok_action, SZ_LINE);
+ bzero (cancel_action, SZ_LINE);
+
+ /* Write to a temporary file in the same directory as fname.
+ */
+ for (ip=fname, op=tmpfile, last=tmpfile; *op = *ip++; op++) {
+ if (*op == '/')
+ last = op + 1;
+ }
+ *last = '\0';
+ strcat (tmpfile, "ximpXXXXXX");
+ if (mktemp(tmpfile) == (char *)NULL)
+ return (-1);
+
+ if (!(fp = fopen (tmpfile, "w"))) {
+ sprintf (text, "Cannot open temporary file:\n%s", tmpfile);
+ xim_alert (xim, text, NULL, NULL);
+ return (-1);
+ }
+ printstat (xim, "Generating postscript output...");
+ eps_print (psim, fp, pixels, w, h, 8, 0);
+ fclose (fp);
+
+ for (ip=fname; *ip!='\0' ; ip++) ;
+ for ( ; *ip != '/' && ip > fname; ip--) ;
+ sprintf (text, "%s\n%s\n%s",
+ "File already exists:", (ip == fname ? fname : ++ip),
+ "Overwrite this file?");
+
+ sprintf (ok_action, "print rename %s %s", tmpfile, fname);
+ sprintf (cancel_action, "print cancel %s", tmpfile);
+
+ xim_alert (xim, text, ok_action, cancel_action);
+ }
+
+ } else {
+ /* Print to a printer device. */
+ strcpy (tmpfile, "/tmp/ximpXXXXXX");
+ if (mktemp(tmpfile) == (char *)NULL)
+ return (-1);
+
+ if (!(fp = fopen (tmpfile, "w")))
+ return (-1);
+ printstat (xim, "Generating postscript output...");
+ eps_print (psim, fp, pixels, w, h, 8, 0);
+ fclose (fp);
+
+ printstat (xim, "Printing file...");
+ sprintf (text, "cat %s | %s", tmpfile, pcp->printCmd);
+ system (text); /* dispose to printer */
+ unlink (tmpfile); /* delete tmp file */
+
+ printstat (xim, "Done.");
+ }
+
+ /* Clean up and return. */
+ free ((char *) pixels);
+ return (0);
+}
+
+pbob () { int i = 0; }
+
+
+/* The following implement the ok and cancel actions posted by the alert in
+** xim_print above.
+*/
+
+void
+ximp_rename (xim, old, new)
+register XimDataPtr xim;
+char *old, *new;
+{
+ char text[SZ_LINE];
+ struct stat fs;
+
+ bzero (text, SZ_LINE);
+ unlink (new);
+
+ if (rename(old,new) != 0 || stat(new,&fs) != 0) {
+ sprintf (text, "Could not write file %s", new);
+ printstat (xim, text);
+ } else {
+ sprintf (text, "Wrote %d bytes to %s", fs.st_size, new);
+ printstat (xim, text);
+ }
+}
+
+void
+ximp_cancel (xim, fname)
+register XimDataPtr xim;
+char *fname;
+{
+ printstat (xim, "Print cancelled.");
+ unlink (fname);
+}
+
+
+/* XIM_INITPRINTEROPS -- Initialize the printer operations.
+*/
+void
+xim_initPrinterOps (xim)
+register XimDataPtr xim;
+{
+ register PrintCfgPtr pcp;
+ char buf[SZ_LINE];
+ PSImagePtr eps_init();
+
+
+ /* Open a pointer to the EPS structure. */
+ xim->psim = eps_init();
+
+ /* Read the printer configuration file. */
+ xim_initPrinterList (xim);
+
+ /* Initialize options. */
+ xim_message (xim, "printOptions", "papersize letter");
+ xim_message (xim, "printOptions", "orientation portrait");
+ xim_message (xim, "printOptions", "colortype gray");
+ xim_message (xim, "printOptions", "autoscale True");
+ xim_message (xim, "printOptions", "annotate True");
+ xim_message (xim, "printOptions", "dotitle True");
+ xim_message (xim, "printOptions", "docolorbar True");
+ xim_message (xim, "printOptions", "doborders True");
+
+ /* Allocate the printer configuration struct. */
+ xim->pcp = pcp = (PrintCfgPtr) malloc (sizeof (PrintCfg));
+
+ pcp->seqno = 0;
+ pcp->printno = 0;
+ pcp->diskfile = 0;
+ strcpy (pcp->printFile, "frame%d.eps");
+
+ bzero (buf, SZ_LINE);
+ sprintf (buf, "printerName %s", printer_list[0].printerName);
+ xim_message (xim, "printOptions", buf);
+
+ strcpy (pcp->printCmd, printer_list[0].printCmd);
+ sprintf (buf, "printCmd %s", pcp->printCmd);
+ xim_message (xim, "printOptions", buf);
+}
+
+
+/* XIM_INITPRINTERLIST -- Read the printer configuration file and initialize
+** the structure with the list of printers and commands. Send the printer
+** list to the GUI, maintain the command list internally.
+*/
+
+static void
+xim_initPrinterList (xim)
+register XimDataPtr xim;
+{
+ register int i;
+ register FILE *fp;
+ char buf[SZ_LINE], plist[MAX_PRINTERS*20];
+ char *ip, *pn, *pc, *pl;
+
+
+ bzero (buf, SZ_LINE);
+ bzero (plist, MAX_PRINTERS*20);
+
+ if (access (xim->printConfig, R_OK) == 0) {
+ if (!(fp = fopen (xim->printConfig, "r")))
+ return;
+
+ /* Scan the printer configuration file.
+ */
+ while (fgets (buf, SZ_LINE, fp) != NULL) {
+ /* Skip comment lines and blank lines. */
+ for (ip=buf; *ip == ' ' || *ip == '\t'; ip++)
+ ;
+ if (*ip == '\n' || *ip == '#')
+ continue;
+
+ /* Now scan up to the tab for the list entry, i.e the printer
+ * name we'll use in the GUI.
+ */
+ pn = printer_list[nprinters].printerName;
+ while (*ip != '\t')
+ *pn++ = *ip++;
+ *pn++ = '\0';
+ ip++;
+
+ while (!isalnum(*ip))
+ ip++;
+
+ /* Everything up to a comment char or the newline is the
+ * command to be used to dispose the EPS.
+ */
+ pc = printer_list[nprinters].printCmd;
+ while (*ip != '#' && *ip != '\n')
+ *pc++ = *ip++;
+ *pc++ = '\0';
+
+ nprinters++;
+ bzero (buf, SZ_LINE);
+ }
+ fclose (fp);
+
+ /* Erase the remaining entries in the default printer list */
+ for (i=nprinters; i < MAX_PRINTERS; i++) {
+ strcpy (printer_list[i].printerName, " ");
+ printer_list[i].printCmd[0] = '\0';
+ }
+ } else {
+ while (printer_list[nprinters].printerName[0] != '\0' &&
+ nprinters < MAX_PRINTERS)
+ nprinters++;
+ }
+
+
+ /* Now build up a list of the printers, either from the config
+ * file or the fallback, and send it to the GUI.
+ */
+ for (i=0, pl=plist; i < nprinters; i++) {
+ *pl++ = '"';
+ for (ip = printer_list[i].printerName; *pl = *ip++; pl++)
+ ;
+ *pl++ = '"';
+ *pl++ = '\n';
+ }
+ *pl++ = '\0';
+
+ xim_message (xim, "printerList", plist);
+}
+
+
+/* XIM_GETPRINTERINFO -- For a given printer name search the printer list
+** array and update the GUI with the selected printer name and command.
+*/
+
+int
+xim_getPrinterInfo (xim, printer)
+register XimDataPtr xim;
+char *printer;
+{
+ register int i;
+ register PrintCfgPtr pcp = xim->pcp;
+
+ /* Scan down the printer list until we find the requested device. */
+ for (i=0; strcmp(printer_list[i].printerName, printer) != 0; i++)
+ if (i >= MAX_PRINTERS)
+ return (pcp->printno);
+
+ return (pcp->printno = i);
+}
+
+
+/* PRINTSTAT -- Internal routine for print status messages.
+*/
+
+static void
+printstat (xim, message)
+register XimDataPtr xim;
+char *message;
+{
+ char text[SZ_LINE];
+
+ bzero (text, SZ_LINE);
+ sprintf (text, "status {%s}", message);
+ xim_message (xim, "printOptions", text);
+}
diff --git a/vendor/x11iraf/ximtool/quant.c b/vendor/x11iraf/ximtool/quant.c
new file mode 100644
index 00000000..34514a50
--- /dev/null
+++ b/vendor/x11iraf/ximtool/quant.c
@@ -0,0 +1,797 @@
+#include <stdio.h>
+
+/* QUANT.C -- Quantize the colors in a pixmap down to a specified number.
+** This code is largely stolen from PBMPlus by Jef Poskanzer.
+**
+** ORIGINAL COPYRIGHT NOTICE:
+**
+** Copyright (C) 1989, 1991 by Jef Poskanzer.
+**
+** Permission to use, copy, modify, and distribute this software and its
+** documentation for any purpose and without fee is hereby granted, provided
+** that the above copyright notice appear in all copies and that both that
+** copyright notice and this permission notice appear in supporting
+** documentation. This software is provided "as is" without express or
+** implied warranty.
+*/
+
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef abs
+#define abs(a) ((a) >= 0 ? (a) : -(a))
+#undef odd
+#define odd(n) ((n) & 1)
+
+#ifdef HPUX
+#define random() rand()
+#define srandom(x) srand(x)
+#endif
+
+typedef unsigned char byte;
+typedef unsigned char pixval;
+
+#define PPM_MAXMAXVAL 255
+typedef struct { pixval r, g, b; } pixel;
+
+#define PPM_GETR(p) ((p).r)
+#define PPM_GETG(p) ((p).g)
+#define PPM_GETB(p) ((p).b)
+
+#define PPM_ASSIGN(p,red,grn,blu) \
+ { (p).r = (red); (p).g = (grn); (p).b = (blu); }
+
+#define PPM_EQUAL(p,q) ( (p).r == (q).r && (p).g == (q).g && (p).b == (q).b )
+
+/* Color scaling macro -- to make writing ppmtowhatever easier. */
+#define PPM_DEPTH(newp,p,oldmaxval,newmaxval) \
+ PPM_ASSIGN( (newp), \
+ (int) PPM_GETR(p) * (newmaxval) / (oldmaxval), \
+ (int) PPM_GETG(p) * (newmaxval) / (oldmaxval), \
+ (int) PPM_GETB(p) * (newmaxval) / (oldmaxval) )
+
+/* Luminance macro, using only integer ops. Returns an int (*256) JHB */
+#define PPM_LUMIN(p) \
+ ( 77 * PPM_GETR(p) + 150 * PPM_GETG(p) + 29 * PPM_GETB(p) )
+
+
+/* Color histogram stuff. */
+typedef struct colorhist_item *colorhist_vector;
+struct colorhist_item {
+ pixel color;
+ int value;
+};
+
+typedef struct colorhist_list_item *colorhist_list;
+struct colorhist_list_item {
+ struct colorhist_item ch;
+ colorhist_list next;
+};
+
+
+/* Color hash table stuff. */
+
+typedef colorhist_list *colorhash_table;
+
+#define MAXCOLORS 32767
+#define FS_SCALE 1024
+#define HASH_SIZE 20023
+
+#define LARGE_LUM
+#define REP_AVERAGE_PIXELS
+
+#define hashPixel(p) ((((int) PPM_GETR(p) * 33023 + \
+ (int) PPM_GETG(p) * 30013 + \
+ (int) PPM_GETB(p) * 27011) & 0x7fffffff) \
+ % HASH_SIZE)
+
+
+typedef struct box *box_vector;
+struct box {
+ int ind;
+ int colors;
+ int sum;
+};
+
+static colorhist_vector medianCut (), colorHashToColorHist ();
+static colorhist_vector computeColorHist ();
+static colorhash_table computeColorHash (), colorHistToColorHash ();
+static colorhash_table allocColorHash ();
+static int redCompare(), greenCompare(), blueCompare();
+static int lookupColor (), addToColorHash (), sumCompare();
+static void freeColorHash (), addToColorHist(),freeColorHist();
+
+
+
+/* PPMQUANT -- Quantize an image with a given colormap to a new number of
+ * colors, modifies the image in place. Floyd-Steinberg dithering isn't
+ * current enabled because of speed but can be turned on later. Modified
+ * from the original code in the PBMplus package by Jef Poskanzer.
+ */
+
+int
+ppmquant (image, r, g, b, nx, ny, ncolors, newcolors)
+byte *image; /* image pixels (i.e. cmap indices) */
+byte *r, *g, *b; /* colormap */
+int nx, ny; /* image dimensions */
+int ncolors; /* current number of colors */
+int newcolors; /* requested number of colors */
+{
+ register pixel *pP;
+ register long sr, sg, sb, err;
+ register int i, col, limitcol, index = 0;
+ byte *pix = image;
+ pixel **pixels;
+ pixval maxval = 255, newmaxval;
+ int rows, cols, row;
+ int colors;
+ int floyd = 0, usehash;
+ colorhist_vector chv, colormap;
+ colorhash_table cht;
+ long *thisrerr, *thisgerr, *thisberr;
+ long *nextrerr, *nextgerr, *nextberr, *temperr;
+ int fs_direction;
+
+ /* Reformat into 2-dimensional array of pixel structures */
+ rows = ny;
+ cols = nx;
+ pixels = (pixel **) malloc (rows * sizeof(pixel *));
+ if (!pixels)
+ return;
+
+ for (row=0; row<rows; row++) {
+ pixels[row] = (pixel *) malloc(cols * sizeof(pixel));
+ if (!pixels[row])
+ return;
+
+ for (col=0, pP=pixels[row]; col<cols; col++, pP++) {
+ pP->r = (pixval) r[*pix];
+ pP->g = (pixval) g[*pix];
+ pP->b = (pixval) b[*pix];
+ pix++;
+ }
+ }
+
+
+ /* Step 2: attempt to make a histogram of the colors, unclustered.
+ ** If at first we don't succeed, lower maxval to increase color
+ ** coherence and try again. This will eventually terminate, with
+ ** maxval at worst 15, since 32^3 is approximately MAXCOLORS.
+ */
+ for (; ;) {
+ chv = computeColorHist(pixels, cols, rows, MAXCOLORS, &colors) ;
+ if (chv != (colorhist_vector) 0)
+ break;
+ newmaxval = maxval / 2;
+ for (row = 0; row < rows; ++row)
+ for (col = 0, pP = pixels[row]; col < cols; ++col, ++pP)
+ PPM_DEPTH (*pP, *pP, maxval, newmaxval) ;
+ maxval = newmaxval;
+ }
+
+ /* Step 3: apply median-cut to histogram, making the new colormap.
+ */
+ colormap = medianCut (chv, colors, rows * cols, maxval, newcolors) ;
+ freeColorHist (chv) ;
+
+ /* Step 4: map the colors in the image to their closest match in the
+ ** new colormap, and write 'em out.
+ */
+ cht = allocColorHash ();
+ usehash = 1;
+ pix = image;
+ if (floyd) {
+ /* Initialize Floyd-Steinberg error vectors. */
+ thisrerr = (long *) calloc (cols + 2, sizeof(long) );
+ nextrerr = (long *) calloc (cols + 2, sizeof(long) );
+ thisgerr = (long *) calloc (cols + 2, sizeof(long) );
+ nextgerr = (long *) calloc (cols + 2, sizeof(long) );
+ thisberr = (long *) calloc (cols + 2, sizeof(long) );
+ nextberr = (long *) calloc (cols + 2, sizeof(long) );
+ srandom ((int) (time (0) ^ getpid ()) ) ;
+ for (col = 0; col < cols + 2; ++col) {
+ thisrerr[col] = random () % (FS_SCALE * 2) - FS_SCALE;
+ thisgerr[col] = random () % (FS_SCALE * 2) - FS_SCALE;
+ thisberr[col] = random () % (FS_SCALE * 2) - FS_SCALE;
+ /* (random errors in [-1 .. 1]) */
+ }
+ fs_direction = 1;
+ }
+ for (row = 0; row < rows; ++row) {
+ if (floyd)
+ for (col = 0; col < cols + 2; ++col)
+ nextrerr[col] = nextgerr[col] = nextberr[col] = 0;
+ if ( (!floyd) || fs_direction) {
+ col = 0;
+ limitcol = cols;
+ pP = pixels[row];
+ } else {
+ col = cols - 1;
+ limitcol = -1;
+ pP = &(pixels[row][col]);
+ }
+ do {
+ if (floyd) {
+ /* Use Floyd-Steinberg errors to adjust actual color. */
+ sr = PPM_GETR(*pP) + thisrerr[col + 1] / FS_SCALE;
+ sg = PPM_GETG(*pP) + thisgerr[col + 1] / FS_SCALE;
+ sb = PPM_GETB(*pP) + thisberr[col + 1] / FS_SCALE;
+ if (sr < 0)
+ sr = 0;
+ else if (sr > maxval)
+ sr = maxval;
+ if (sg < 0)
+ sg = 0;
+ else if (sg > maxval)
+ sg = maxval;
+ if (sb < 0)
+ sb = 0;
+ else if (sb > maxval)
+ sb = maxval;
+ PPM_ASSIGN (*pP, sr, sg, sb) ;
+ }
+
+ /* Check hash table to see if we have already matched this
+ * color.
+ */
+ index = lookupColor (cht, pP) ;
+ if (index == -1) { /* No; search colormap for closest match. */
+ register int i, r1, g1, b1, r2, g2, b2;
+ register long dist, newdist;
+ r1 = PPM_GETR (*pP) ;
+ g1 = PPM_GETG (*pP) ;
+ b1 = PPM_GETB (*pP) ;
+ dist = 2000000000;
+ for (i = 0; i < newcolors; ++i) {
+ r2 = PPM_GETR (colormap[i].color) ;
+ g2 = PPM_GETG (colormap[i].color) ;
+ b2 = PPM_GETB (colormap[i].color) ;
+ newdist = (r1 - r2) * (r1 - r2) +
+ (g1 - g2) * (g1 - g2) +
+ (b1 - b2) * (b1 - b2) ;
+ if (newdist < dist) {
+ index = i;
+ dist = newdist;
+ }
+ }
+ if (usehash) {
+ if (addToColorHash (cht, pP, index) < 0) {
+ usehash = 0;
+ }
+ }
+ }
+
+ if (floyd) {
+ /* Propagate Floyd-Steinberg error terms. */
+ if (fs_direction) {
+ err = (sr - (long) PPM_GETR (colormap[index].color)) * FS_SCALE;
+ thisrerr[col + 2] += (err * 7) / 16;
+ nextrerr[col ] += (err * 3) / 16;
+ nextrerr[col + 1] += (err * 5) / 16;
+ nextrerr[col + 2] += (err ) / 16;
+ err = (sg - (long) PPM_GETG (colormap[index].color)) * FS_SCALE;
+ thisgerr[col + 2] += (err * 7) / 16;
+ nextgerr[col ] += (err * 3) / 16;
+ nextgerr[col + 1] += (err * 5) / 16;
+ nextgerr[col + 2] += (err ) / 16;
+ err = (sb - (long) PPM_GETB (colormap[index].color)) * FS_SCALE;
+ thisberr[col + 2] += (err * 7) / 16;
+ nextberr[col ] += (err * 3) / 16;
+ nextberr[col + 1] += (err * 5) / 16;
+ nextberr[col + 2] += (err ) / 16;
+ } else {
+
+ err = (sr - (long) PPM_GETR (colormap[index].color)) * FS_SCALE;
+ thisrerr[col ] += (err * 7) / 16;
+ nextrerr[col + 2] += (err * 3) / 16;
+ nextrerr[col + 1] += (err * 5) / 16;
+ nextrerr[col ] += (err ) / 16;
+ err = (sg - (long) PPM_GETG (colormap[index].color)) * FS_SCALE;
+ thisgerr[col ] += (err * 7) / 16;
+ nextgerr[col + 2] += (err * 3) / 16;
+ nextgerr[col + 1] += (err * 5) / 16;
+ nextgerr[col ] += (err ) / 16;
+ err = (sb - (long) PPM_GETB (colormap[index].color)) * FS_SCALE;
+ thisberr[col ] += (err * 7) / 16;
+ nextberr[col + 2] += (err * 3) / 16;
+ nextberr[col + 1] += (err * 5) / 16;
+ nextberr[col ] += (err ) / 16;
+ }
+ }
+
+ *pP = colormap[index].color;
+ *pix++ = index; /* save the new image index */
+
+ if ( (!floyd) || fs_direction) {
+ ++col;
+ ++pP;
+ } else {
+ --col;
+ --pP;
+ }
+ } while (col != limitcol) ;
+
+ if (floyd) {
+ temperr = thisrerr;
+ thisrerr = nextrerr;
+ nextrerr = temperr;
+ temperr = thisgerr;
+ thisgerr = nextgerr;
+ nextgerr = temperr;
+ temperr = thisberr;
+ thisberr = nextberr;
+ nextberr = temperr;
+ fs_direction = !fs_direction;
+ }
+
+ }
+
+ /* Rescale and load the new colormap. */
+ for (i=0; i<newcolors; i++) {
+ PPM_DEPTH(colormap[i].color, colormap[i].color, maxval, 255);
+ r[i] = PPM_GETR (colormap[i].color);
+ g[i] = PPM_GETG (colormap[i].color);
+ b[i] = PPM_GETB (colormap[i].color);
+ }
+
+ /* Free the pixels array. */
+ for (i=0; i<rows; i++) free (pixels[i]);
+ free (pixels);
+
+ /* Free cht and colormap. */
+ freeColorHist (colormap);
+ freeColorHash (cht);
+
+ return (0) ;
+}
+
+
+/*
+** Here is the fun part, the median-cut colormap generator. This is based
+** on Paul Heckbert's paper "Color Image Quantization for Frame Buffer
+** Display", SIGGRAPH '82 Proceedings, page 297.
+*/
+
+static colorhist_vector
+medianCut (chv, colors, sum, maxval, newcolors)
+colorhist_vector chv;
+int colors, sum, newcolors;
+pixval maxval;
+{
+ colorhist_vector colormap;
+ box_vector bv;
+ register int bi, i;
+ int boxes;
+
+ bv = (box_vector) malloc (sizeof(struct box) * newcolors) ;
+ colormap =
+ (colorhist_vector) malloc (sizeof(struct colorhist_item) * newcolors) ;
+ if (bv == (box_vector) 0 || colormap == (colorhist_vector) 0)
+ perror ("out of memory") ;
+ for (i = 0; i < newcolors; ++i)
+ PPM_ASSIGN (colormap[i].color, 0, 0, 0) ;
+
+ /*
+ ** Set up the initial box.
+ */
+ bv[0].ind = 0;
+ bv[0].colors = colors;
+ bv[0].sum = sum;
+ boxes = 1;
+
+ /*
+ ** Main loop: split boxes until we have enough.
+ */
+ while (boxes < newcolors) {
+ register int indx, clrs;
+ int sm;
+ register int minr, maxr, ming, maxg, minb, maxb, v;
+ int halfsum, lowersum;
+
+ /*
+ ** Find the first splittable box.
+ */
+ for (bi = 0; bi < boxes; ++bi)
+ if (bv[bi].colors >= 2)
+ break;
+ if (bi == boxes)
+ break; /* ran out of colors! */
+ indx = bv[bi].ind;
+ clrs = bv[bi].colors;
+ sm = bv[bi].sum;
+
+ /*
+ ** Go through the box finding the minimum and maximum of each
+ ** component - the boundaries of the box.
+ */
+ minr = maxr = PPM_GETR (chv[indx].color) ;
+ ming = maxg = PPM_GETG (chv[indx].color) ;
+ minb = maxb = PPM_GETB (chv[indx].color) ;
+ for (i = 1; i < clrs; ++i) {
+ v = PPM_GETR (chv[indx + i].color) ;
+ if (v < minr)
+ minr = v;
+ if (v > maxr)
+ maxr = v;
+ v = PPM_GETG (chv[indx + i].color) ;
+ if (v < ming)
+ ming = v;
+ if (v > maxg)
+ maxg = v;
+ v = PPM_GETB (chv[indx + i].color) ;
+ if (v < minb)
+ minb = v;
+ if (v > maxb)
+ maxb = v;
+ }
+
+ /*
+ ** Find the largest dimension, and sort by that component. I have
+ ** included two methods for determining the "largest" dimension;
+ ** first by simply comparing the range in RGB space, and second
+ ** by transforming into luminosities before the comparison. You
+ ** can switch which method is used by switching the commenting on
+ ** the LARGE_ defines at the beginning of this source file.
+ */
+ {
+ /* LARGE_LUM version */
+
+ pixel p;
+ float rl, gl, bl;
+
+ PPM_ASSIGN(p, maxr - minr, 0, 0);
+ rl = PPM_LUMIN(p);
+ PPM_ASSIGN(p, 0, maxg - ming, 0);
+ gl = PPM_LUMIN(p);
+ PPM_ASSIGN(p, 0, 0, maxb - minb);
+ bl = PPM_LUMIN(p);
+
+ if (rl >= gl && rl >= bl)
+ qsort(
+ (char *)&(chv[indx]),clrs,sizeof(struct colorhist_item),
+ redCompare) ;
+ else if (gl >= bl)
+ qsort(
+ (char *)&(chv[indx]),clrs,sizeof(struct colorhist_item),
+ greenCompare) ;
+ else
+ qsort(
+ (char *)&(chv[indx]),clrs,sizeof(struct colorhist_item),
+ blueCompare) ;
+ }
+
+ /*
+ ** Now find the median based on the counts, so that about half the
+ ** pixels (not colors, pixels) are in each subdivision.
+ */
+ lowersum = chv[indx].value;
+ halfsum = sm / 2;
+ for (i = 1; i < clrs - 1; ++i) {
+ if (lowersum >= halfsum)
+ break;
+ lowersum += chv[indx + i].value;
+ }
+
+ /*
+ ** Split the box, and sort to bring the biggest boxes to the top.
+ */
+ bv[bi].colors = i;
+ bv[bi].sum = lowersum;
+ bv[boxes].ind = indx + i;
+ bv[boxes].colors = clrs - i;
+ bv[boxes].sum = sm - lowersum;
+ ++boxes;
+ qsort ((char *) bv, boxes, sizeof(struct box) , sumCompare) ;
+ }
+
+ /*
+ ** Ok, we've got enough boxes. Now choose a representative color for
+ ** each box. There are a number of possible ways to make this choice.
+ ** One would be to choose the center of the box; this ignores any
+ ** structure within the boxes. Another method would be to average all
+ ** the colors in the box - this is the method specified in Heckbert's
+ ** paper. A third method is to average all the pixels in the box. You
+ ** can switch which method is used by switching the commenting on the
+ ** REP_ defines at the beginning of this source file.
+ */
+ for (bi = 0; bi < boxes; ++bi) {
+ /* REP_AVERAGE_PIXELS version */
+
+ register int indx = bv[bi].ind;
+ register int clrs = bv[bi].colors;
+ register long r = 0, g = 0, b = 0, sum = 0;
+
+ for (i = 0; i < clrs; ++i) {
+ r += PPM_GETR (chv[indx + i].color) * chv[indx + i].value;
+ g += PPM_GETG (chv[indx + i].color) * chv[indx + i].value;
+ b += PPM_GETB (chv[indx + i].color) * chv[indx + i].value;
+ sum += chv[indx + i].value;
+ }
+ r = r / sum;
+ if (r > maxval)
+ r = maxval; /* avoid math errors */
+ g = g / sum;
+ if (g > maxval)
+ g = maxval;
+ b = b / sum;
+ if (b > maxval)
+ b = maxval;
+ PPM_ASSIGN (colormap[bi].color, r, g, b) ;
+ }
+
+ /* All done. */
+ return colormap;
+}
+
+
+static int
+redCompare (ch1, ch2)
+colorhist_vector ch1, ch2;
+{
+ return (int) PPM_GETR (ch1->color) - (int) PPM_GETR (ch2->color) ;
+}
+
+
+static int
+greenCompare (ch1, ch2)
+colorhist_vector ch1, ch2;
+{
+ return (int) PPM_GETG (ch1->color) - (int) PPM_GETG (ch2->color) ;
+}
+
+
+static int
+blueCompare (ch1, ch2)
+colorhist_vector ch1, ch2;
+{
+ return (int) PPM_GETB (ch1->color) - (int) PPM_GETB (ch2->color) ;
+}
+
+
+static int
+sumCompare (b1, b2)
+box_vector b1, b2;
+{
+ return b2->sum - b1->sum;
+}
+
+
+static colorhist_vector
+computeColorHist (pixels, cols, rows, maxcolors, colorsP)
+pixel**pixels;
+int cols, rows, maxcolors;
+int*colorsP;
+{
+ colorhash_table cht;
+ colorhist_vector chv;
+
+ cht = computeColorHash (pixels, cols, rows, maxcolors, colorsP) ;
+ if (cht == (colorhash_table) 0)
+ return (colorhist_vector) 0;
+ chv = colorHashToColorHist (cht, maxcolors) ;
+ freeColorHash (cht) ;
+ return chv;
+}
+
+
+static void
+addToColorHist (chv, colorsP, maxcolors, colorP, value, position)
+colorhist_vector chv;
+pixel*colorP;
+int*colorsP;
+int maxcolors, value, position;
+{
+ int i, j;
+
+ /* Search colorhist for the color. */
+ for (i = 0; i < *colorsP; ++i)
+ if (PPM_EQUAL (chv[i].color, *colorP) ) {
+ /* Found it - move to new slot. */
+ if (position > i) {
+ for (j = i; j < position; ++j)
+ chv[j] = chv[j + 1];
+ } else if (position < i) {
+ for (j = i; j > position; --j)
+ chv[j] = chv[j - 1];
+ }
+ chv[position].color = *colorP;
+ chv[position].value = value;
+ return;
+ }
+ if (*colorsP < maxcolors) {
+ /* Didn't find it, but there's room to add it; so do so. */
+ for (i = *colorsP; i > position; --i)
+ chv[i] = chv[i - 1];
+ chv[position].color = *colorP;
+ chv[position].value = value;
+ ++(*colorsP);
+ }
+}
+
+
+static colorhash_table
+computeColorHash (pixels, cols, rows, maxcolors, colorsP)
+pixel**pixels;
+int cols, rows, maxcolors;
+int*colorsP;
+{
+ colorhash_table cht;
+ register pixel*pP;
+ colorhist_list chl;
+ int col, row, hash;
+
+ cht = allocColorHash ();
+ *colorsP = 0;
+
+ /* Go through the entire image, building a hash table of colors. */
+ for (row = 0; row < rows; ++row)
+ for (col = 0, pP = pixels[row]; col < cols; ++col, ++pP) {
+ hash = hashPixel (*pP) ;
+ for (chl=cht[hash]; chl != (colorhist_list) 0; chl=chl->next)
+ if (PPM_EQUAL (chl->ch.color, *pP) )
+ break;
+ if (chl != (colorhist_list) 0)
+ ++(chl->ch.value);
+ else
+ {
+ if (++(*colorsP) > maxcolors) {
+ freeColorHash (cht) ;
+ return (colorhash_table) 0;
+ }
+ chl = (colorhist_list)
+ malloc (sizeof(struct colorhist_list_item));
+ if (chl == 0)
+ perror ("out of memory computing hash table") ;
+ chl->ch.color = *pP;
+ chl->ch.value = 1;
+ chl->next = cht[hash];
+ cht[hash] = chl;
+ }
+ }
+
+ return cht;
+}
+
+
+static colorhash_table
+allocColorHash ()
+{
+ colorhash_table cht;
+ int i;
+
+ cht = (colorhash_table) malloc (HASH_SIZE * sizeof(colorhist_list)) ;
+ if (cht == 0)
+ perror ("out of memory allocating hash table") ;
+
+ for (i = 0; i < HASH_SIZE; ++i)
+ cht[i] = (colorhist_list) 0;
+
+ return cht;
+}
+
+
+static int
+addToColorHash (cht, colorP, value)
+colorhash_table cht;
+pixel*colorP;
+int value;
+{
+ register int hash;
+ register colorhist_list chl;
+
+ chl = (colorhist_list) malloc (sizeof(struct colorhist_list_item) ) ;
+ if (chl == 0)
+ return - 1;
+ hash = hashPixel (*colorP) ;
+ chl->ch.color = *colorP;
+ chl->ch.value = value;
+ chl->next = cht[hash];
+ cht[hash] = chl;
+ return 0;
+}
+
+
+static colorhist_vector
+colorHashToColorHist (cht, maxcolors)
+colorhash_table cht;
+int maxcolors;
+{
+ colorhist_vector chv;
+ colorhist_list chl;
+ int i, j;
+
+ /* Now collate the hash table into a simple colorhist array. */
+ chv = (colorhist_vector) malloc (maxcolors * sizeof(struct colorhist_item) ) ;
+ /* (Leave room for expansion by caller.) */
+ if (chv == (colorhist_vector) 0)
+ perror ("out of memory generating histogram") ;
+
+ /* Loop through the hash table. */
+ j = 0;
+ for (i = 0; i < HASH_SIZE; ++i)
+ for (chl = cht[i]; chl != (colorhist_list) 0; chl = chl->next) {
+ /* Add the new entry. */
+ chv[j] = chl->ch;
+ ++j;
+ }
+
+ /* All done. */
+ return chv;
+}
+
+
+static colorhash_table
+colorHistToColorHash (chv, colors)
+colorhist_vector chv;
+int colors;
+{
+ colorhash_table cht;
+ int i, hash;
+ pixel color;
+ colorhist_list chl;
+
+ cht = allocColorHash ();
+
+ for (i = 0; i < colors; ++i) {
+ color = chv[i].color;
+ hash = hashPixel (color) ;
+ for (chl = cht[hash]; chl != (colorhist_list) 0; chl = chl->next)
+/*
+ if (PPM_EQUAL (chl->ch.color, color) )
+ pm_error(
+ "same color found twice - %d %d %d", PPM_GETR(color),
+ PPM_GETG(color), PPM_GETB(color)) ;
+*/
+ chl = (colorhist_list) malloc (sizeof(struct colorhist_list_item) ) ;
+ if (chl == (colorhist_list) 0)
+ perror ("out of memory") ;
+ chl->ch.color = color;
+ chl->ch.value = i;
+ chl->next = cht[hash];
+ cht[hash] = chl;
+ }
+
+ return cht;
+}
+
+
+static int
+lookupColor (cht, colorP)
+colorhash_table cht;
+pixel*colorP;
+{
+ int hash;
+ colorhist_list chl;
+
+ hash = hashPixel (*colorP) ;
+ for (chl = cht[hash]; chl != (colorhist_list) 0; chl = chl->next)
+ if (PPM_EQUAL (chl->ch.color, *colorP) )
+ return chl->ch.value;
+
+ return - 1;
+}
+
+
+static void
+freeColorHist (chv)
+colorhist_vector chv;
+{
+ free ((char *) chv) ;
+}
+
+
+static void
+freeColorHash (cht)
+colorhash_table cht;
+{
+ int i;
+ colorhist_list chl, chlnext;
+
+ for (i = 0; i < HASH_SIZE; ++i)
+ for (chl = cht[i]; chl != (colorhist_list) 0; chl = chlnext) {
+ chlnext = chl->next;
+ free ((char *) chl) ;
+ }
+ free ((char *) cht) ;
+}
diff --git a/vendor/x11iraf/ximtool/rasio.c b/vendor/x11iraf/ximtool/rasio.c
new file mode 100644
index 00000000..64400250
--- /dev/null
+++ b/vendor/x11iraf/ximtool/rasio.c
@@ -0,0 +1,660 @@
+#include <stdio.h>
+#include <math.h>
+#include <ctype.h>
+
+/*
+ * RASIO.C -- Routines to load and save Sun rasterfiles.
+ *
+ * ival = isSunRas (fname)
+ * loadSunRas (fname, pixels, pixtype, w,h, r,g,b, ncolors, colorstyle)
+ * writeSunRas (fp, pixels, pixtype, w,h, r,g,b, ncolors, colorstyle)
+ * getSunRasHdr (fname)
+ *
+ * isSunRas returns nonzero if the named file is a Sun rasterfile.
+ * loadSunRas reads a Sun rasterfile and returns the decoded pixel array and
+ * 8 bit colormap if any. The caller is responsible for freeing the pixels
+ * buffer. writeSunRas performs the converse operation, writing the given
+ * pixel array and colormap to the output Sun rasterfile.
+ */
+
+#define DEBUG 0
+
+/* MONO returns total intensity of r,g,b components */
+#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5) /*.33R+ .5G+ .17B*/
+
+/*
+ * Info on sun rasterfiles taken from rasterfile(5) man page.
+ * ------------------------------------------------------------
+ */
+
+#define RAS_MAGIC 0x59a66a95
+
+struct rasterfile {
+ long ras_magic;
+ long ras_width;
+ long ras_height;
+ long ras_depth;
+ long ras_length;
+ long ras_type;
+ long ras_maptype;
+ long ras_maplength;
+};
+
+static char errstr[128];
+
+#define RT_OLD 0 /* Raw pixrect image in 68000 byte order */
+#define RT_STANDARD 1 /* Raw pixrect image in 68000 byte order */
+#define RT_BYTE_ENCODED 2 /* Run-length compression of bytes */
+#define RT_FORMAT_RGB 3 /* XRGB or RGB instead of XBGR or BGR */
+
+#define RMT_RAW 2
+#define RMT_NONE 0
+#define RMT_EQUAL_RGB 1
+
+#define RAS_RLE 0x80
+
+
+#ifdef __STDC__
+static char *sunRasError(char *, char *);
+static int rle_read(unsigned char *, int, int, FILE *, int);
+static void SunRas1to8(unsigned char *, unsigned char *, int);
+static void SunRas8to1(unsigned char *, unsigned char *, int, int);
+static int read_sun_long(long *, FILE *);
+static int write_sun_long(long, FILE *);
+static void fixBGR(unsigned char *, int, int);
+#else
+static char *sunRasError();
+static int rle_read();
+static void SunRas1to8();
+static void SunRas8to1();
+static int read_sun_long(), write_sun_long();
+static void fixBGR();
+#endif
+
+
+/*
+ * Public routines.
+ * ----------------
+ */
+
+
+/* LoadSunRas -- Load the Sun rasterfile. The Sun rasterfile is input in
+ * the file fname and the decoded pixel array and colormap are output in
+ * the output variables PIXELS and R/G/B. The caller is responsible for
+ * freeing PIXELS when it is no longer needed. The RGB arrays should be
+ * contain space for at least 256 elements.
+ */
+char *
+loadSunRas (fname, pixels, pixtype, o_w,o_h, r,g,b, ncolors, colorstyle)
+char *fname; /* input filename */
+unsigned char **pixels; /* output pixels */
+int *pixtype; /* 8-bit or 24-bit */
+int *o_w, *o_h; /* dimensions */
+unsigned char *r, *g, *b; /* colormap */
+int *ncolors; /* number of colors */
+int colorstyle; /* return color (0) or grayscale (1) */
+{
+ register FILE *fp;
+ register int i, j;
+ int linesize, lsize, csize, isize, w, h, d, nc, ct;
+ unsigned char *image, *line, p;
+ struct rasterfile sunhdr;
+
+ /* Read in the Sun Rasterfile picture. */
+ fp = fopen (fname, "r");
+ if (!fp)
+ return (sunRasError(fname, "unable to open file"));
+
+ read_sun_long (&sunhdr.ras_magic, fp);
+ read_sun_long (&sunhdr.ras_width, fp);
+ read_sun_long (&sunhdr.ras_height, fp);
+ read_sun_long (&sunhdr.ras_depth, fp);
+ read_sun_long (&sunhdr.ras_length, fp);
+ read_sun_long (&sunhdr.ras_type, fp);
+ read_sun_long (&sunhdr.ras_maptype, fp);
+ read_sun_long (&sunhdr.ras_maplength, fp);
+
+ if (sunhdr.ras_magic != RAS_MAGIC) {
+ fclose (fp);
+ return (sunRasError(fname, "not a Sun rasterfile"));
+ }
+
+ /* Make sure that the input picture can be dealt with. */
+ if (sunhdr.ras_depth != 1 &&
+ sunhdr.ras_depth != 8 &&
+ sunhdr.ras_depth != 24 &&
+ sunhdr.ras_depth != 32) {
+
+ fprintf (stderr, "Sun rasterfile image has depth %d\n",
+ sunhdr.ras_depth);
+ fprintf (stderr, "Depths supported are 1, 8, 24, and 32\n");
+ fclose (fp);
+ return (sunRasError(fname, "Unsupported rasterfile depth"));
+ }
+
+ if (sunhdr.ras_type != RT_OLD &&
+ sunhdr.ras_type != RT_STANDARD &&
+ sunhdr.ras_type != RT_BYTE_ENCODED &&
+ sunhdr.ras_type != RT_FORMAT_RGB) {
+
+ fprintf (stderr, "Sun rasterfile of unsupported type %d\n",
+ sunhdr.ras_type);
+ fclose (fp);
+ return (sunRasError(fname, "Unsupported rasterfile type"));
+ }
+
+ if (sunhdr.ras_maptype != RMT_RAW &&
+ sunhdr.ras_maptype != RMT_NONE &&
+ sunhdr.ras_maptype != RMT_EQUAL_RGB) {
+
+ fprintf (stderr, "Sun rasterfile colormap of unsupported type %d\n",
+ sunhdr.ras_maptype);
+ fclose (fp);
+ return (sunRasError(fname, "Unsupported rasterfile colormap"));
+ }
+
+ w = sunhdr.ras_width;
+ h = sunhdr.ras_height;
+ d = sunhdr.ras_depth;
+ isize = sunhdr.ras_length ? sunhdr.ras_length : (w * h * d) / 8;
+ csize = (sunhdr.ras_maptype == RMT_NONE) ? 0 : sunhdr.ras_maplength;
+
+ /* Compute length of the output image. */
+ lsize = w * h;
+ if (d == 24 || d == 32)
+ lsize = lsize * 3;
+
+ linesize = w * d;
+ if (linesize % 16)
+ linesize += (16 - (linesize % 16));
+ linesize /= 8;
+
+ if (DEBUG) {
+ fprintf (stderr, "LoadSunRas() - loading a %dx%d pic, %d planes\n",
+ w, h, d);
+ fprintf (stderr,
+ "type %d, maptype %d, isize %d, csize %d, lsize %d, linesize %d\n",
+ sunhdr.ras_type, sunhdr.ras_maptype,
+ isize, csize, lsize, linesize);
+ fprintf (stderr, "colorstyle=%d nc=%d\n", colorstyle,
+ sunhdr.ras_maplength/3);
+ }
+
+ /* Read in the colormap, if any. */
+ if (sunhdr.ras_maptype == RMT_EQUAL_RGB && csize) {
+ nc = sunhdr.ras_maplength / 3;
+ ct = 8;
+ fread (r, 1, nc, fp);
+ fread (g, 1, nc, fp);
+ fread (b, 1, nc, fp);
+ } else if (sunhdr.ras_maptype == RMT_RAW && csize) {
+ /* We don't know how to handle raw colormap, ignore. */
+ fseek (fp, (long) csize, 1);
+ nc = ct = 0;
+ } else {
+ /* No colormap, make one up. */
+ if (sunhdr.ras_depth == 1) {
+ r[0] = g[0] = b[0] = 0;
+ r[1] = g[1] = b[1] = 255;
+ nc = 2;
+ ct = 1;
+ } else if (sunhdr.ras_depth == 8) {
+ for (i=0, nc=256; i < nc; i++)
+ r[i] = g[i] = b[i] = i;
+ ct = 8;
+ }
+ }
+
+ /* Allocate memory for picture and read it in. Note we may slightly
+ * overallocate here (if image is padded)
+ */
+ image = (unsigned char *) malloc (lsize);
+ line = (unsigned char *) malloc (linesize);
+ if (!image || !line) {
+ fclose (fp);
+ return (sunRasError (fname, "out of memory"));
+ }
+
+ for (i=0; i < h; i++) {
+ if (sunhdr.ras_type == RT_BYTE_ENCODED) {
+ if (rle_read (line, 1, linesize, fp, (i == 0)) != linesize)
+ break;
+ } else {
+ if (fread (line, 1, linesize, fp) != linesize) {
+ free ((char *)image);
+ free ((char *)line);
+ fclose (fp);
+ return (sunRasError (fname, "file read error"));
+ }
+ }
+
+ switch (d) {
+ case 1:
+ SunRas1to8 (image + w * i, line, w);
+ break;
+ case 8:
+ if (colorstyle) {
+ for (j=0; j < w; j++) {
+ p = line[j];
+ image[w*i + j] = MONO(r[p],g[p],b[p]);
+ }
+ } else
+ bcopy(line, image + w * i, w);
+ break;
+ case 24:
+ bcopy(line, image + w * i * 3, w * 3);
+ break;
+ case 32:
+ {
+ int k;
+ unsigned char *ip, *op;
+
+ ip = line;
+ op = (unsigned char *) (image + w * i * 3);
+ for (k = 0; k < w; k++) {
+ *ip++; /* skip 'alpha' */
+ *op++ = *ip++; /* red */
+ *op++ = *ip++; /* green */
+ *op++ = *ip++; /* blue */
+ }
+ }
+ }
+ }
+ free ((char *)line);
+
+ if (d == 24 || d == 32) {
+ if (sunhdr.ras_type != RT_FORMAT_RGB)
+ fixBGR(image, w, h);
+ *pixtype = 24;
+ } else
+ *pixtype = 8;
+
+ *pixels = (unsigned char *) image;
+ *o_w = w;
+ *o_h = h;
+
+ /* If we requested grayscale reset the colormap. */
+ if (colorstyle)
+ for (i=0, nc=256; i < nc; i++)
+ r[i] = g[i] = b[i] = i;
+ *ncolors = nc;
+
+ fclose (fp);
+ return (NULL);
+}
+
+
+/* WriteSunRas -- Write a pixel array and colormap to a file in Sun rasterfile
+ * format. Writes a sun rasterfile to the already open stream. Writes either
+ * 24-bit, 8-bit or 1-bit. Currently will not write RLE files. If PIC24 and
+ * F_GREYSCALE, writes an 8-bit grayscale image.
+ */
+int
+writeSunRas (fp, pixels, pixtype, w,h, r,g,b, ncolors, colorstyle)
+FILE *fp;
+unsigned char *pixels;
+int pixtype, w, h;
+unsigned char *r, *g, *b;
+int ncolors, colorstyle;
+{
+ unsigned char *line, *graypic, graymap[256], *sp, *dp;
+ int linesize, i, color, d, y, flipbw;
+ struct rasterfile sunhdr;
+
+ /* Biggest problem w/ RLE file: should we compute image size first
+ * (nicer) or go back and write it in when we are done (kludgy)?
+ */
+ graypic = NULL;
+
+ /* Special case: if PIC24 and writing GREYSCALE, write 8-bit file.
+ */
+ if (pixtype == 24 && colorstyle == 1) {
+ graypic = (unsigned char *) malloc (w * h);
+ for (i=0, sp=pixels, dp=graypic; i < w * h; i++, sp += 3, dp++) {
+ *dp = MONO(sp[0], sp[1], sp[2]);
+ }
+
+ for (i = 0; i < 256; i++)
+ graymap[i] = i;
+ r = g = b = graymap;
+ ncolors = 256;
+ pixtype = 8;
+ pixels = graypic;
+ }
+
+ if (pixtype == 24) {
+ d = 24;
+ linesize = w * 3;
+ } else if (colorstyle != 0) {
+ d = 8;
+ linesize = w;
+ } else {
+ d = 1;
+ linesize = w;
+ if (linesize % 8)
+ linesize += (8 - linesize % 8);
+ linesize /= 8;
+ }
+
+ if (linesize % 2)
+ linesize++;
+ line = (unsigned char *) malloc (linesize);
+ if (!line) {
+ if (graypic)
+ free ((char *) graypic);
+ return (1);
+ }
+
+ if (DEBUG)
+ fprintf (stderr,
+ "WriteSunRas: d %d, linesize %d ncolors %d\n",
+ d, linesize, ncolors);
+
+ /* Set flipbw if color#0 is black. */
+ if (d == 1)
+ flipbw = (MONO(r[0], g[0], b[0]) < MONO(r[1], g[1], b[1]));
+
+ /* Set up the header.
+ */
+ sunhdr.ras_magic = RAS_MAGIC;
+ sunhdr.ras_width = w;
+ sunhdr.ras_height = h;
+ sunhdr.ras_depth = d;
+ sunhdr.ras_length = linesize * h;
+ sunhdr.ras_type = RT_STANDARD;
+ sunhdr.ras_maptype = (d == 1 || d == 24) ? RMT_NONE : RMT_EQUAL_RGB;
+ sunhdr.ras_maplength = (d == 1 || d == 24) ? 0 : 3 * ncolors;
+
+ write_sun_long (sunhdr.ras_magic, fp);
+ write_sun_long (sunhdr.ras_width, fp);
+ write_sun_long (sunhdr.ras_height, fp);
+ write_sun_long (sunhdr.ras_depth, fp);
+ write_sun_long (sunhdr.ras_length, fp);
+ write_sun_long (sunhdr.ras_type, fp);
+ write_sun_long (sunhdr.ras_maptype, fp);
+ write_sun_long (sunhdr.ras_maplength, fp);
+
+ /* Write the colormap.
+ */
+ if (d == 8) {
+ if (colorstyle == 1) {
+ /* grayscale */
+ for (color = 0; color < 3; color++)
+ for (i = 0; i < ncolors; i++)
+ putc (MONO(r[i], g[i], b[i]), fp);
+ } else {
+ fwrite ((char *)r, sizeof(char), ncolors, fp);
+ fwrite ((char *)g, sizeof(char), ncolors, fp);
+ fwrite ((char *)b, sizeof(char), ncolors, fp);
+ }
+ }
+
+ /* Write the image.
+ */
+ line[linesize-1] = 0;
+ for (y = 0; y < h; y++) {
+ if (d == 24) {
+ unsigned char *lptr, *pix;
+
+ pix = pixels + y * w * 3;
+ for (i=0, lptr=line; i < w; i++, pix += 3) {
+ *lptr++ = pix[2]; /* write data out in BGR order */
+ *lptr++ = pix[1];
+ *lptr++ = pix[0];
+ }
+ } else if (d == 8) {
+ bcopy (pixels + y * w, line, w);
+ } else {
+ /* d == 1 */
+ SunRas8to1 (line, pixels + y * w, w, flipbw);
+ }
+
+ if (fwrite ((char *)line, sizeof(char), linesize, fp) != linesize) {
+ if (graypic)
+ free ((char *)graypic);
+ free ((char *)line);
+ return (2);
+ }
+ }
+
+ free ((char *)line);
+ if (graypic)
+ free ((char *)graypic);
+ return (0);
+}
+
+
+/* IsSunRas -- Test a file to see if it is a Sun rasterfile.
+ */
+isSunRas (fname)
+char *fname; /* input filename */
+{
+ register FILE *fp;
+ struct rasterfile sunhdr;
+ int value = 0;
+
+ if (fp = fopen (fname, "r")) {
+ read_sun_long (&sunhdr.ras_magic, fp);
+ value = (sunhdr.ras_magic == RAS_MAGIC);
+ fclose (fp);
+ }
+
+ return (value);
+}
+
+
+/* getSunRasHdr -- Get some set of header information for the GUI.
+ */
+
+char *
+getSunRasHdr (fname)
+char *fname;
+{
+ FILE *fp;
+ char *line;
+ struct rasterfile hdr;
+
+ /* Open the image. */
+ fp = fopen (fname, "r");
+ if (!fp)
+ return NULL;
+
+ /* Read the image header. */
+ read_sun_long (&hdr.ras_magic, fp);
+ read_sun_long (&hdr.ras_width, fp);
+ read_sun_long (&hdr.ras_height, fp);
+ read_sun_long (&hdr.ras_depth, fp);
+ read_sun_long (&hdr.ras_length, fp);
+ read_sun_long (&hdr.ras_type, fp);
+ read_sun_long (&hdr.ras_maptype, fp);
+ read_sun_long (&hdr.ras_maplength, fp);
+
+ /* Format the description. */
+ line = (char *) malloc (80);
+ sprintf (line, "%-16.16s %3d %5dx%-5d %s %s",
+ fname, hdr.ras_depth, hdr.ras_width, hdr.ras_height,
+ "Sun Rasterfile",
+ ((((hdr.ras_type == RT_OLD) ? "(OLD)" :
+ (hdr.ras_type == RT_STANDARD) ? "(Standard)" :
+ (hdr.ras_type == RT_BYTE_ENCODED) ? "(Byte-Encoded)" :
+ (hdr.ras_type == RT_FORMAT_RGB) ? "(RGB)" : " "))) );
+
+ fclose (fp);
+ return (line);
+}
+
+
+/*
+ * Internal routines.
+ * -------------------
+ */
+
+static int
+rle_read (ptr, size, nitems, fp, init)
+register unsigned char *ptr;
+int size, nitems, init;
+FILE *fp;
+{
+ static int count, ch;
+ int readbytes, c, read;
+
+ if (init)
+ count = ch = 0;
+
+ readbytes = size * nitems;
+ for (read = 0; read < readbytes; read++) {
+ if (count) {
+ *ptr++ = (unsigned char) ch;
+ count--;
+ } else {
+ c = getc (fp);
+ if (c == EOF)
+ break;
+
+ if (c == RAS_RLE) { /* 0x80 */
+ count = getc(fp);
+ if (count == EOF)
+ break;
+
+ if (count < 0)
+ count &= 0xff;
+ if (count == 0)
+ *ptr++ = (unsigned char) c;
+ else {
+ if ((ch = getc(fp)) == EOF)
+ break;
+ *ptr++ = (unsigned char) ch;
+ }
+ } else
+ *ptr++ = (unsigned char) c;
+ }
+ }
+
+ return (read / size);
+}
+
+
+static char *
+sunRasError (fname, st)
+char *fname, *st;
+{
+ sprintf (errstr, "%s: %s\n", fname, st);
+ return (errstr);
+}
+
+
+static void
+SunRas1to8 (dest, src, len)
+unsigned char *dest, *src;
+int len;
+{
+ register int i, b;
+ int c = 0;
+
+ for (i = 0, b = -1; i < len; i++) {
+ if (b < 0) {
+ b = 7;
+ c = ~(*src++);
+ }
+ *dest++ = (unsigned char)((c >> (b--)) & 1);
+ }
+}
+
+
+static void
+SunRas8to1 (dest, src, len, flip)
+unsigned char *dest, *src;
+int len, flip;
+{
+ int i, b;
+ int c;
+
+ for (c = b = i = 0; i < len; i++) {
+ c <<= 1;
+ c |= (*src++ ? 1 : 0);
+ if (b++ == 7) {
+ if (flip)
+ c = ~c;
+ *dest++ = (unsigned char) (c & 0xff);
+ b = c = 0;
+ }
+ }
+ if (b) {
+ if (flip)
+ c = ~c;
+ *dest = (unsigned char) ((c << (8 - b)) & 0xff);
+ }
+}
+
+
+/* Reads a 4-byte int in Sun byteorder.
+ * Returns 0 for success, EOF for failure.
+ */
+static int
+read_sun_long (l, fp)
+long *l;
+FILE *fp;
+{
+ int c0, c1, c2, c3;
+
+ c0 = fgetc(fp);
+ c1 = fgetc(fp);
+ c2 = fgetc(fp);
+ c3 = fgetc(fp);
+
+ *l = (((unsigned long) c0 & 0xff) << 24) |
+ (((unsigned long) c1 & 0xff) << 16) |
+ (((unsigned long) c2 & 0xff) << 8) |
+ (((unsigned long) c3 & 0xff));
+
+ if (ferror(fp))
+ return EOF;
+
+ return (0);
+}
+
+
+/* Write a long word in sun byte-order.
+ * Returns 0 for success, EOF for failure.
+ */
+static int
+write_sun_long (l, fp)
+long l;
+FILE *fp;
+{
+ char c;
+
+ c = ((l >> 24) & 0xff);
+ if (putc (c, fp) == EOF)
+ return (EOF);
+ c = ((l >> 16) & 0xff);
+ if (putc (c, fp) == EOF)
+ return (EOF);
+ c = ((l >> 8) & 0xff);
+ if (putc (c, fp) == EOF)
+ return (EOF);
+ c = (l & 0xff);
+ if (putc (c, fp) == EOF)
+ return (EOF);
+ return (0);
+}
+
+
+/* kr3 - fix up BGR order SUN 24-bit rasters to be RGB order
+ */
+static void
+fixBGR (img, w, h)
+unsigned char *img;
+int w, h;
+{
+ int i, npixels;
+ unsigned char tmp;
+
+ npixels = w * h;
+ for (i = 0; i < npixels; i++) {
+ tmp = img[0]; /* swap red and blue channels */
+ img[0] = img[2];
+ img[2] = tmp;
+ img += 3; /* bump to next pixel */
+ }
+}
diff --git a/vendor/x11iraf/ximtool/raster.c b/vendor/x11iraf/ximtool/raster.c
new file mode 100644
index 00000000..51652241
--- /dev/null
+++ b/vendor/x11iraf/ximtool/raster.c
@@ -0,0 +1,2995 @@
+#include <stdio.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <Obm.h>
+#include <ObmW/Gterm.h>
+#include "ximtool.h"
+#include "iis.h"
+
+/* Slackware/RedHat4.2 compatibility hack. */
+#if defined(linux) && defined(isalnum)
+#undef isalnum
+#define isalnum(c) (isalpha(c)||isdigit(c))
+#endif
+
+
+#define DBG_RASTER 0
+
+
+/*
+ * RASTER.C -- Raster pixel (frame buffer) routines. These are the routines
+ * which create and manipulate the frame buffers and the graphics pipeline
+ * to the screen.
+ *
+ * xim_initialize (xim, config, nframes, hardreset)
+ * xim_reset (xim, w)
+ * xim_resize (xim, w)
+ * xim_refresh (xim)
+ *
+ * xim_setFrame (xim, frame)
+ * xim_setReferenceFrame (chan, frame)
+ * xim_setDisplayFrame (xim, frame)
+ * xim_initFrame (xim, frame, nframes, config, memModel)
+ * xim_delFrame (xim, frame)
+ * xim_matchFrames (xim, frames, reference_frame)
+ * xim_registerFrames (xim, frames, reference_frame)
+ * xim_fitFrame (xim)
+ * xim_tileFrames (xim, frame_list)
+ *
+ * xim_cursorMode (xim, state)
+ *
+ * xim_setMapping (xim, fb, frame, mapping, src, dst, fill_mode)
+ * xim_setZoom (xim, fb, frame, mapping, src, dst,
+ * xcen,ycen, xmag,ymag, xoff,yoff, absolute)
+ * xim_setFlip (xim, fb, flip_x, flip_y)
+ * xim_setColormap (name, dirs, red, green, blue, ncolors)
+ * xim_setRop (xim, fb, rop)
+ * rop = xim_getAntialias (xim, s)
+ *
+ * xim_getScreen (xim, frame, sx, sy, width, height, depth)
+ * bool = xim_onScreen (xim, frame)
+ *
+ * xim_setCursorPos (xim, sx, sy)
+ * xim_getCursorPos (xim, sx, sy, raster, frame)
+ *
+ * pixels = xim_readDisplay (xim, x0,y0,nx,ny, w,h, r,g,b, ncolors)
+ * stat = xim_writeDisplay (xim, frame, mapname, pixels, w,h, r,g,b, ncolors)
+ *
+ * xim_message (xim, object, message)
+ * xim_msgi (xim, object, intval)
+ * xim_alert (xim, text, ok_action, cancel_action)
+ */
+
+/* Define some builtin colormaps. */
+static Lut aips0 = {
+#include "data/aips0.lut"
+};
+static Lut blue = {
+#include "data/blue.lut"
+};
+static Lut color = {
+#include "data/color.lut"
+};
+static Lut green = {
+#include "data/green.lut"
+};
+static Lut halley = {
+#include "data/halley.lut"
+};
+static Lut heat = {
+#include "data/heat.lut"
+};
+static Lut rainbow = {
+#include "data/rainbow.lut"
+};
+static Lut red = {
+#include "data/red.lut"
+};
+static Lut staircase = {
+#include "data/staircase.lut"
+};
+static Lut standard = {
+#include "data/standard.lut"
+};
+
+static void get_fbconfig();
+static void set_colorbar();
+static int get_dirfile();
+static void load_testpattern();
+static void set_nframes();
+static void xim_frameRegion();
+static void xim_colortables();
+extern char *getenv();
+double strtod();
+
+#define TOL 0.0001
+
+
+/* XIM_INITIALIZE -- Initialize the imaging subsystem. Read the config file
+ * and create the frame buffers, mappings, and colormaps.
+ */
+void
+xim_initialize (xim, config, nframes, hardreset)
+register XimDataPtr xim;
+int config;
+int nframes;
+int hardreset;
+{
+ register Widget gt = xim->gt;
+ register FrameBufPtr fb;
+ register int i;
+
+ unsigned short m_red[MAX_COLORS];
+ unsigned short m_green[MAX_COLORS];
+ unsigned short m_blue[MAX_COLORS];
+ char *fname, *ip, *op, sbuf[8192];
+ String maps[MAX_COLORMAPS], dirs[4];
+ int max_cmaps, first, ngray, rgb_len, nfiles, n;
+ static int nbuiltin_cmaps = 0;
+ int display_frame = 1;
+ char cmapname[SZ_NAME];
+ char buf[SZ_LINE];
+ FbConfigPtr cf;
+ ColorMapPtr cm;
+ struct dir *dp;
+ int startup;
+ DIR *dir;
+
+ /* The gterm widget handle should already have been set by the
+ * GUI during startup.
+ */
+ if (!gt) {
+ fprintf (stderr, "xim_initialize: no gterm-image widget!!\n");
+ exit (1);
+ }
+
+ /* Inform the GUI that the frame buffers are being initialized.
+ * The initialize parameter is set to "startup" during program
+ * startup, "restart" at the start of an initialization during
+ * execution, and "done" when initialization is completed.
+ */
+ startup = (xim->nframes == 0);
+ xim_message (xim, "initialize", startup ? "startup" : "restart");
+
+ if (hardreset || startup || config != xim->fb_configno) {
+ xim_msgi (xim, "frame", 0);
+ xim_message (xim, "frameTitle", "");
+ set_nframes (xim, 0);
+ cm = &colormaps[DEF_COLORMAP-1];
+ strcpy (cmapname, cm->name);
+ hardreset = 1;
+
+ /* Get frame buffer configurations. */
+ get_fbconfig (xim);
+
+ /* Remove any existing border highlight marker. */
+ if (xim->gm_border) {
+ GmDestroy (xim->gm_border);
+ xim->gm_border = NULL;
+ }
+
+ /* Initialize the frame buffers. */
+ if (DBG_RASTER)
+ fprintf (stderr, "xim_initialize: Raster init.....\n");
+ GtRasterInit (gt);
+ if (DBG_RASTER)
+ fprintf (stderr, "xim_initialize: Raster init.....DONE\n");
+ for (i=1; i <= MAX_FRAMES; i++)
+ xim->frames[i].frameno = 0;
+
+ cf = &xim->fb_config[config-1];
+ nframes = (nframes <= 0) ? cf->nframes : nframes;
+
+ if (startup) {
+ /* Set initial tile frames list to be all frames if starting
+ * up in tile frames mode.
+ */
+ if (xim->tileFrames && nframes > 1) {
+ xim->tileFramesList = 0;
+ xim->nTileFrames = 0;
+ for (i=0; i < nframes; i++) {
+ xim->tileFramesList |= (1 << i);
+ xim->nTileFrames++;
+ }
+ }
+ } else {
+ xim->display_frame = 0;
+ xim->df_p = NULL;
+ for (i=0; i < XtNumber(xim->chan); i++) {
+ IoChanPtr chan = &xim->chan[i];
+ if (chan->type)
+ xim_setReferenceFrame (chan, 1);
+ }
+ if (xim->cursor_chan)
+ xim->cursor_chan = &xim->chan[0];
+ }
+
+ xim->rop = xim->antialias ?
+ xim_getAntialias (xim, xim->antialiasType) : 0x00;
+ xim->fb_configno = config = max(1, min(MAX_FBCONFIG, config));
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ........................SETNFRAME\n");
+ set_nframes (xim, nframes);
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ........................SETNFRAME DONE\n");
+
+ /* Initialize the tile framing options. */
+ xim->tileByRows = 1;
+ xim->tileTopDown = 1;
+ xim->tileLabels = 0;
+
+ /* Set the new frame size. */
+ sprintf (buf, "%d %d %d", cf->width, cf->height, 8);
+ xim_message (xim, "frameSize", buf);
+
+ /* Create the frames. */
+ for (i=1; i <= nframes; i++) {
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ...............INITFRAME %d\n",i);
+ xim_initFrame (xim, i, nframes, cf, xim->memModel);
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ...............INITFRAME %d DONE\n",i);
+ }
+
+ /* Reinitialize the tile framing. */
+ if (xim->tileFrames) {
+ xim->tileFramesList = 0;
+ xim->nTileFrames = 0;
+ for (i=0; i < nframes; i++) {
+ xim->tileFramesList |= (1 << i);
+ xim->nTileFrames++;
+ }
+ }
+
+ xim->width = cf->width;
+ xim->height = cf->height;
+ GtSetLogRes (gt, cf->width, cf->height);
+
+ } else {
+ /* Soft reset. */
+ display_frame = xim->display_frame;
+ fb = &xim->frames[display_frame-1];
+ cm = &colormaps[fb->colormap-1];
+ strcpy (cmapname, cm->name);
+
+ for (i=0; i < ncolormaps; i++) {
+ cm = &colormaps[i];
+ GtFreeColormap (gt, cm->mapno);
+ }
+ }
+
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ........................CMAP SETUP\n");
+ /* Set up the colormap to emulate the IIS/imtool colormap. Set
+ * xim->ncolors to the length of the grayscale region of the colormap
+ * returned by iiscolormap so that our other colormaps will have the
+ * same size.
+ */
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: xim->ncolors = %d\n", xim->ncolors);
+ xim_iiscolormap (gt, m_red,m_green,m_blue, &first, &ngray, &rgb_len);
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: writeColormap: first=%d ngray=%d len=%d\n",
+ first, ngray, rgb_len);
+ GtWriteColormap (gt, 0, first, rgb_len, m_red, m_green, m_blue);
+ if ((xim->ncolors = ngray) < 0) {
+ fprintf (stderr, "ERROR: No colormap cells available.\n");
+ exit (1);
+ }
+
+
+ /* Initialize the color tables.
+ */
+ max_cmaps = nbuiltin_cmaps ? nbuiltin_cmaps : MAX_COLORMAPS;
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: init colortables: xim->ncolors = %d\n",
+ xim->ncolors);
+ for (ncolormaps=0; ncolormaps < max_cmaps; ncolormaps++) {
+ cm = &colormaps[ncolormaps];
+ if (!cm->name[0])
+ break;
+ cm->mapno = GtNextColormap (gt);
+ xim_setColormap (cm->name, NULL, m_red, m_green, m_blue,
+ xim->ncolors);
+ GtWriteColormap (gt, cm->mapno, first, xim->ncolors,
+ m_red, m_green, m_blue);
+ }
+ if (DBG_RASTER)
+ fprintf (stderr, "xim_initialize: init colortables: DONE\n");
+
+ /* The first time this is called count the number of builtin cmaps. */
+ if (nbuiltin_cmaps == 0)
+ nbuiltin_cmaps = ncolormaps;
+
+ /* Get the names of the two user defined colormaps, if any. */
+ nfiles = 0;
+ maps[nfiles++] = xim->userCMap1;
+ maps[nfiles++] = xim->userCMap2;
+
+ /* If any user colormap directories are specified get the names
+ * of the colormap files in these directories.
+ */
+ dirs[0] = "./";
+ dirs[1] = xim->userCMapDir1;
+ dirs[2] = xim->userCMapDir2;
+ dirs[3] = NULL;
+
+ for (i=1, op=sbuf; dirs[i]; i++) {
+ if (strcmp (dirs[i], "none") != 0) {
+ if (dir = opendir (dirs[i])) {
+ while ((n = get_dirfile (dir, op, SZ_FNAME)) > 0) {
+ maps[nfiles++] = op;
+ op += n + 1;
+ if (nfiles >= MAX_COLORMAPS)
+ break;
+ }
+ closedir (dir);
+ }
+ }
+ }
+
+ /* Add all the user specified colormaps to the colormap table.
+ */
+ for (i=0; i < nfiles && ncolormaps < MAX_COLORMAPS; i++) {
+ fname = maps[i];
+ if (strcmp (fname, "none") != 0) {
+ if (xim_setColormap (fname, dirs,
+ m_red, m_green, m_blue, xim->ncolors) == OK) {
+
+ cm = &colormaps[ncolormaps++];
+ cm->mapno = GtNextColormap (gt);
+
+ /* Use root portion of filename as the colormap name. */
+ for (ip=fname; *ip; ip++)
+ if (*ip == '/')
+ fname = ip + 1;
+ for (ip=fname, op=cm->name; *ip && *ip != '.'; ip++) {
+ *op++ = *ip;
+ if (op - cm->name >= SZ_CMAPNAME)
+ break;
+ }
+ *op = '\0';
+
+ GtWriteColormap (gt, cm->mapno, first, xim->ncolors,
+ m_red, m_green, m_blue);
+ }
+ }
+ }
+
+ /* Pass the list of colortables on to the user interface. */
+ xim_colortables (xim);
+
+ /* Set initial display frame. */
+ xim_setDisplayFrame (xim, display_frame);
+
+ /* Force the initial default colormap to be loaded. */
+ fb = &xim->frames[display_frame-1];
+ for (i=0; i < ncolormaps; i++) {
+ cm = &colormaps[i];
+ if (strcmp (cm->name, cmapname) == 0)
+ break;
+ }
+ if (i >= ncolormaps)
+ cm = &colormaps[DEF_COLORMAP-1];
+
+ GtLoadColormap (gt, cm->mapno, fb->offset, fb->scale);
+ xim_enhancement (xim, fb);
+
+ /* Set options. */
+/* xim_message (xim, "cmfocus", xim->cm_focus ? "True" : "False");*/
+ xim_message (xim, "autoscale", xim->autoscale ? "True" : "False");
+ xim_message (xim, "antialias", xim->antialias ? "True" : "False");
+ xim_message (xim, "tileFrames", xim->tileFrames ? "True" : "False");
+
+ xim_message (xim, "initialize", "done");
+
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initialize: ................................RETURNING\n");
+}
+
+
+/* XIM_RESET -- Called when the active gterm widget is set or changed.
+ */
+void
+xim_reset (xim, w)
+XimDataPtr xim;
+Widget w;
+{
+ unsigned short iomap[MAX_COLORS];
+ int iomap_len;
+
+ if (!w)
+ return;
+
+ /* The following assumes that the GUI does a setGterm first for the
+ * colorbar and second for the main image window. The first thing we
+ * do is set the iomap so that all ximtool color and pixel i/o will
+ * see the emulated IIS color model.
+ */
+ if (xim->cb == NULL) {
+ xim->cb = w;
+ xim_iisiomap (w, iomap, &iomap_len);
+ GtPostResizeProc (w, set_colorbar, xim);
+ GtWriteIomap (w, iomap, 0, iomap_len);
+ } else {
+ xim->gt = w;
+ xim_iisiomap (w, iomap, &iomap_len);
+ GtPostResizeProc (w, xim_resize, xim);
+ GtWriteIomap (w, iomap, 0, iomap_len);
+ }
+}
+
+
+/* XIM_RESIZE -- Called when the active gterm widget is resized. We need to
+ * resize the zoom raster and modify the zoom mapping for each frame to
+ * reflect the new window size.
+ */
+void
+xim_resize (xim, w)
+XimDataPtr xim;
+Widget w;
+{
+ register FrameBufPtr fb;
+ int junk, sx, sy, width, height, depth;
+ int i, active, frame, mapping, zoomtype;
+ float xscale, yscale, scale;
+ char buf[SZ_LINE];
+
+
+ /* This case is true during startup. */
+ if (xim->nframes <= 0)
+ return;
+
+ /* Get new screen size. In tile frame mode select the first frame
+ * in the list for the size, which may not always be frame 1.
+ */
+ if (xim->tileFrames && !(xim->tileFramesList & 1)) {
+ if (xim->nframes == 0)
+ return;
+ for (i=1; i <= xim->nframes; i++)
+ if (xim->tileFramesList & (1 << (i-1))) {
+ xim_getScreen (xim, i, &sx, &sy, &width, &height, &depth);
+ break;
+ }
+ } else
+ xim_getScreen (xim, 1, &sx, &sy, &width, &height, &depth);
+
+ /* Compute the new scale factor required to scale the source to the
+ * destination at magnification 1.0.
+ */
+ if (xim->autoscale) {
+ xscale = (float)width / (float)xim->width;
+ yscale = (float)height / (float)xim->height;
+ scale = min (xscale, yscale);
+ } else {
+ xscale = 1.0;
+ yscale = 1.0;
+ scale = 1.0;
+ }
+
+ /* Adjust the mapping for each frame. */
+ for (frame=1; frame <= xim->nframes; frame++) {
+ fb = &xim->frames[frame-1];
+ mapping = fb->zoommap;
+
+ /* For rapid frame blink, split screen, etc. the zoom raster
+ * must be the same size as the screen so we must resize this
+ * raster when the display window is resized. The CreateRaster
+ * call will delete the old raster and all its mappings and
+ * create a new one. We must then restore the mappings, and
+ * if this is an active display frame, refresh the mapping.
+ */
+ active = xim_onScreen (xim, frame);
+
+ if (fb->zoomras) {
+ GtQueryRaster (w, fb->zoomras, &zoomtype, &junk, &junk, &junk);
+ GtCreateRaster (w, fb->zoomras, zoomtype, width, height, depth);
+ xim_setMapping (xim, NULL, frame, fb->dispmap,
+ fb->zoomras, 0, M_FILL);
+ if (!active) {
+ GtDisableMapping (w, fb->dispmap, 0);
+ xim_setMapping (xim, NULL, frame, fb->zoommap,
+ fb->raster, fb->zoomras, M_FILL);
+ GtDisableMapping (w, fb->zoommap, 0);
+ }
+ } else {
+ if (active) {
+ GtEnableMapping (w, fb->dispmap, 0);
+ GtSetDisplayRaster (w, xim->display_frame);
+ } else
+ GtDisableMapping (w, fb->dispmap, 0);
+ }
+
+ /* Set the new mapping. */
+ fb->xscale = fb->yscale = scale;
+ xim_setZoom (xim, fb, frame, mapping, fb->raster, fb->zoomras,
+ fb->xcen, fb->ycen, fb->xmag, fb->ymag,
+ fb->xoff, fb->yoff, False);
+ }
+
+ /* Refresh the screen for any active mappings. Any mappings
+ * defined on any visible frame should be refreshed, since a
+ * redraw clears the display window.
+ */
+ for (frame=1; frame <= xim->nframes; frame++) {
+ if (xim_onScreen (xim, frame)) {
+ int junk, width, height, depth;
+ fb = &xim->frames[frame-1];
+ GtQueryRaster (w, fb->raster, &junk, &width, &height, &depth);
+ GtRefreshPixels (w, fb->raster, GtPixel, 0, 0, width, height);
+ }
+ }
+
+ /* Highlight the current frame. */
+ xim_highlightFrame (xim, xim->display_frame);
+
+ sprintf (buf, "%d %d %d %d", sx, sy, width, height);
+ xim_message (xim, "resize", buf);
+}
+
+
+/* XIM_REFRESH -- Refresh the current display frame.
+ */
+void
+xim_refresh (xim)
+XimDataPtr xim;
+{
+ register FrameBufPtr fb = xim->df_p;
+ int junk, width, height, depth;
+
+ GtQueryRaster (xim->gt, fb->raster, &junk, &width, &height, &depth);
+ GtRefreshPixels (xim->gt, fb->raster, GtPixel, 0, 0, width, height);
+}
+
+
+/* XIM_CLOSE -- Free any raster specific resources.
+ */
+void
+xim_close (xim)
+register XimDataPtr xim;
+{
+}
+
+
+/* XIM_SETFRAME -- Configure a frame to be both the display and reference
+ * frame.
+ */
+void
+xim_setFrame (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ xim_setDisplayFrame (xim, frame);
+}
+
+
+/* XIM_SETREFERENCEFRAME -- Set the frame used for frame buffer i/o.
+ */
+void
+xim_setReferenceFrame (chan, frame)
+register IoChanPtr chan;
+int frame;
+{
+ register XimDataPtr xim = (XimDataPtr) chan->xim;
+ register FrameBufPtr fb;
+ int frameno;
+
+ /* Ignore request if channel not active. */
+ if (!chan->type)
+ return;
+
+ frameno = max(1, min(MAX_FRAMES, frame));
+ fb = &xim->frames[frameno-1];
+
+ /* Ignore request if not a valid frame. */
+ if (fb->frameno > 0) {
+ chan->reference_frame = frameno;
+ chan->rf_p = fb;
+ }
+}
+
+
+/* XIM_SETDISPLAYFRAME -- Set the frame which is displayed.
+ */
+void
+xim_setDisplayFrame (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ register FrameBufPtr fb;
+ register Widget gt = xim->gt;
+ FrameBufPtr old_fb = xim->df_p;
+ int frameno, old_frameno;
+ char buf[256];
+
+ old_frameno = old_fb ? old_fb->frameno : 0;
+ frameno = max(1, min(MAX_FRAMES, frame));
+ fb = &xim->frames[frameno-1];
+
+ /* Ignore request if not a valid frame. */
+ if (fb->frameno > 0 && (!old_fb || frameno != old_frameno)) {
+ /* Special case: if tile frame mode is in effect and we are
+ * displaying a frame not in the tile list, clear the screen
+ * before displaying the frame. Likewise, if displaying an
+ * untiled frame while in tile frame mode and then reverting
+ * to display of a tiled frame, clear the screen and display
+ * all the tiled frames.
+ */
+ if (xim->tileFrames && old_fb) {
+ int tile_old = (xim->tileFramesList & (1 << old_frameno-1));
+ int tile_new = (xim->tileFramesList & (1 << frameno-1));
+
+ if (tile_old && !tile_new)
+ GtClearScreen (gt);
+ else if (!tile_old && tile_new) {
+ GtClearScreen (gt);
+/* xim_resize (xim, gt);*/
+ }
+ }
+
+ /* Map the new frame. */
+ xim->df_p = fb;
+ xim->display_frame = frameno;
+ GtEnableMapping (gt, fb->dispmap, 0);
+
+ /* Unmap the old frame. */
+ if (old_fb && !xim_onScreen (xim, old_frameno)) {
+ FrameBufPtr old_fb = &xim->frames[old_frameno-1];
+ GtDisableMapping (gt, old_fb->dispmap, 0);
+ }
+
+ /* Display the new frame. */
+ if (GtActiveMapping (gt, fb->zoommap)) {
+ GtRefreshMapping (gt, fb->dispmap);
+ } else {
+ GtEnableMapping (gt, fb->zoommap, 0);
+ GtRefreshMapping (gt, fb->zoommap);
+ }
+ GtSetDisplayRaster (gt, frameno);
+
+
+ /* Highlight the new frame if in tileFrames mode. */
+ xim_highlightFrame (xim, frameno);
+
+ /* Load the colormap only if it differs from what we already
+ * have. This avoids the waste of repeatedly reloading the
+ * colormap when blinking frames that have matched colormaps.
+ */
+ if (!old_fb || fb->colormap != old_fb->colormap ||
+ abs (fb->offset - old_fb->offset) > 0.001 ||
+ abs (fb->scale - old_fb->scale) > 0.001) {
+
+ GtSetColormapFocus (-1); /* force full update */
+ GtLoadColormap (gt, fb->colormap, fb->offset, fb->scale);
+ GtSetColormapFocus (xim->cm_focus);
+ }
+
+ xim_msgi (xim, "frame", frameno);
+ xim_message (xim, "frameTitle", fb->ctran.imtitle);
+ xim_message (xim, "xflip", fb->xflip ? "true" : "false");
+ xim_message (xim, "yflip", fb->yflip ? "true" : "false");
+ xim_frameRegion (xim, fb);
+
+ sprintf (buf, "%g %g %g %g %g %g %g %g",
+ fb->xmag, fb->ymag, fb->xcen, fb->ycen,
+ fb->xscale, fb->yscale, fb->xoff, fb->yoff);
+ xim_message (xim, "frameView", buf);
+ }
+}
+
+
+/* XIM_INITFRAME -- Initialize a frame buffer.
+ */
+void
+xim_initFrame (xim, frame, nframes, config, memModel)
+register XimDataPtr xim;
+int frame, nframes;
+FbConfigPtr config;
+char *memModel;
+{
+ register FrameBufPtr fb = &xim->frames[frame-1];
+ register Widget gt = xim->gt;
+ int sx, sy, width, height, depth;
+ char buf[SZ_LINE];
+
+ if (frame < 1 || frame > MAX_FRAMES)
+ return;
+
+ xim_delFrame (xim, frame);
+ memset ((void *)fb, 0, sizeof(FrameBuf));
+
+ /* Create the frame buffer. */
+ fb->frameno = frame;
+ fb->raster = GtNextRaster (gt);
+
+ if (DBG_RASTER) {
+ fprintf (stderr,
+ "xim_initFrame: Creating CLIENT raster for frame=%d raster=%d (%dx%dx%d)\n",
+ frame, fb->raster,
+ config->width, config->height, DEF_FRAME_DEPTH);
+ fprintf (stderr,
+ "xim_initFrame: Creating memModel=%s frame=%d raster=%d (%d x %d)\n",
+ memModel, frame, fb->raster, config->width, config->height);
+ }
+
+ if (GtCreateRaster (gt, fb->raster, GtClient,
+ config->width, config->height, DEF_FRAME_DEPTH) < 0) {
+
+ fprintf (stderr, "cannot create %dx%d frame buffer #%d\n",
+ config->width, config->height, frame);
+ return;
+ }
+
+ /* Get region of screen to be written into. */
+ xim_getScreen (xim, frame, &sx, &sy, &width, &height, &depth);
+
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initFrame: [%d of %d] screen size -- %d x %d x %d\n",
+ frame, nframes, width, height, depth);
+
+ /* Set up the graphics pipeline to the screen. The "memory model"
+ * determines memory is used, trading off memory usage against speed
+ * for operations like zoom/pan and blink.
+ */
+
+ if (strcmp (memModel, "fast") == 0) {
+ /* Use both client and server memory to achieve the best
+ * possible performance. The frame buffer raster (type ximage)
+ * is mapped to a server pixmap with the zoom/pan mapping, and
+ * the server pixmap is mapped to the screen with the one-to-one
+ * frame display mapping.
+ */
+fast: fb->zoomras = GtNextRaster (gt);
+ if (GtCreateRaster (gt,
+ fb->zoomras, GtServer, width, height, depth) < 0)
+ goto nice;
+
+ xim_setMapping (xim, fb, frame, fb->zoommap = GtNextMapping(gt),
+ fb->raster, fb->zoomras, xim->autoscale ? M_ASPECT : M_UNITARY);
+ xim_setMapping (xim, fb, frame, fb->dispmap = GtNextMapping(gt),
+ fb->zoomras, 0, M_FILL);
+
+ } else if (strcmp (memModel, "beNiceToServer") == 0) {
+ /* Minimize use of X server memory, but keep zoom raster to speed
+ * up blinks. Everything is the same as with the "fast" memory
+ * model except that the zoom raster is an ximage rather than
+ * server pixmap raster.
+ */
+nice: fb->zoomras = GtNextRaster (gt);
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initFrame: creating 'nice' model (0x%x)\n",
+ fb->zoomras);
+ if (GtCreateRaster (gt,
+ fb->zoomras, GtClient, width, height, depth) < 0)
+ goto small;
+
+ xim_setMapping (xim, fb, frame, fb->zoommap = GtNextMapping(gt),
+ fb->raster, fb->zoomras, xim->autoscale ? M_ASPECT : M_UNITARY);
+ xim_setMapping (xim, fb, frame, fb->dispmap = GtNextMapping(gt),
+ fb->zoomras, 0, M_FILL);
+
+ } else if (strcmp (memModel, "small") == 0) {
+ /* Minimize both client and server memory as far as possible.
+ * Only the frame buffer raster is used, the zoom/pan mapping
+ * maps directly to the screen and is also used as the screen
+ * mapping.
+ *
+ * FIXME: On TrueColor visuals we can have an issue here where
+ * the display pixmap is 24-bits and various things (e.g. pixel
+ * readback) are expecting 8-bits.
+ */
+small: fb->zoomras = 0;
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_initFrame: creating 'small' model (0x%x)\n",
+ fb->zoomras);
+
+ xim_setMapping (xim, fb, frame, fb->zoommap = GtNextMapping(gt),
+ fb->raster, fb->zoomras, xim->autoscale ? M_ASPECT : M_UNITARY);
+ fb->dispmap = fb->zoommap;
+
+ } else {
+ fprintf (stderr,
+ "unrecognized memModel `%s', default to `fast'\n", memModel);
+ goto fast;
+ }
+
+ /* Set up the default colormap. */
+ fb->colormap = DEF_COLORMAP;
+ fb->offset = 0.5;
+ fb->scale = (xim->invert ? -1.0 : 1.0);
+ xim_enhancement (xim, fb);
+
+ /* Disable frame display initially if not mapped to screen. */
+ if (xim_onScreen (xim, frame)) {
+ GtEnableMapping (gt, fb->dispmap, 0);
+ GtSetDisplayRaster (gt, frame);
+ } else
+ GtDisableMapping (gt, fb->dispmap, 0);
+
+ set_nframes (xim, max (xim->nframes, frame));
+}
+
+
+/* XIM_DELFRAME -- Delete a frame.
+ */
+void
+xim_delFrame (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ register FrameBufPtr fb = &xim->frames[frame-1];
+ register Widget gt = xim->gt;
+
+ if (frame < 1 || frame > MAX_FRAMES)
+ return;
+ if (fb->frameno <= 0)
+ return;
+
+ GtFreeMapping (gt, fb->dispmap);
+ if (fb->zoommap != fb->dispmap)
+ GtFreeMapping (gt, fb->zoommap);
+ if (fb->zoomras)
+ GtDestroyRaster (gt, fb->zoomras);
+ if (fb->raster)
+ GtDestroyRaster (gt, fb->raster);
+
+ fb->frameno = 0;
+ if (xim->nframes == frame)
+ set_nframes (xim, frame - 1);
+}
+
+
+/* XIM_ERASEFRAME -- Erase a frame.
+ */
+void
+xim_eraseFrame (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ FrameBufPtr fb = &xim->frames[frame-1];
+ Widget gt = xim->gt;
+ int Z = 0;
+
+ GtSetPixels (gt, fb->raster, GtPixel, Z,Z,Z,Z, CMS_BACKGROUND, 0);
+}
+
+
+/* XIM_FITFRAME -- Attempt to resize the display window to be the same
+ * size as the frame buffer.
+ */
+void
+xim_fitFrame (xim)
+register XimDataPtr xim;
+{
+ register Widget gt = xim->gt;
+
+ GtCreateRaster (gt, 0, GtServer, xim->width, xim->height, 8);
+}
+
+
+/* XIM_TILEFRAMES -- Set or clear tile frame mode.
+ */
+void
+xim_tileFrames (xim, frame_list)
+register XimDataPtr xim;
+int frame_list;
+{
+ register int i;
+ register Widget w = xim->gt;
+ register FrameBufPtr fb;
+ char buf[SZ_LINE];
+ int mapping;
+
+
+ /* Get list of frames to be tiled. */
+ xim->tileFramesList = frame_list;
+ for (i=0, xim->nTileFrames = 0; i < xim->nframes; i++)
+ if (frame_list & (1 << i))
+ xim->nTileFrames++;
+
+ /* Remove any existing border highlight marker. */
+ if (xim->gm_border) {
+ GmDestroy (xim->gm_border);
+ xim->gm_border = NULL;
+ }
+
+ xim->tileFrames = (frame_list != 0);
+ GtClearScreen (w);
+ initialize_shadow_pixmap (w, 0);
+ xim_resize (xim, w);
+
+ /* Entering tile frame mode.
+ */
+ if (xim->tileFrames) {
+
+ /* Ensure that the display frame is set to one of the
+ * tiled frames.
+ */
+ if (!(xim->tileFramesList & (1 << xim->display_frame-1))) {
+ for (i=1; i <= xim->nframes; i++)
+ if (xim->tileFramesList & (1 << (i-1))) {
+ xim->df_p = NULL;
+ xim->display_frame = 0;
+ xim_setFrame (xim, i);
+ break;
+ }
+ }
+
+
+ /* Change the stacking order of the frame mappings if
+ * necessary so that any frames not in the tile list are
+ * displayed above the tiled frames. If this is not
+ * done the untiled frames may be obscured by the tiled
+ * frames.
+ */
+ for (i=0, mapping=0; i < xim->nframes; i++)
+ if (xim->tileFramesList & (1 << i)) {
+ fb = &xim->frames[i];
+ if (!mapping)
+ mapping = fb->dispmap;
+ else if (GtCompareMappings (w, mapping, fb->dispmap) < 0)
+ mapping = fb->dispmap;
+ }
+ for (i=0; i < xim->nframes; i++)
+ if (!(xim->tileFramesList & (1 << i))) {
+ fb = &xim->frames[i];
+ GtRaiseMapping (w, fb->dispmap, mapping);
+ }
+ }
+
+ /* Highlight the current frame. */
+ xim_highlightFrame (xim, xim->display_frame);
+
+ sprintf (buf, "%s", xim->tileFrames ? "True" : "False");
+ xim_message (xim, "tileFrames", buf);
+}
+
+
+/* XIM_HIGHLIGHTFRAME -- If in tile frames mode, highlight the current frame
+ * by coloring the border of the frame.
+ */
+xim_highlightFrame (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ /* If we are tiling frames highlight the new display frame. */
+ if (xim->gm_border) {
+ GmDestroy (xim->gm_border);
+ xim->gm_border = NULL;
+ }
+
+ if (xim->tileFrames && xim->highlightFrames) {
+ int sx, sy, width, height, depth;
+ int interactive, erase;
+ XtPointer gm;
+ Arg args[20];
+ int nargs = 0;
+
+ xim_getScreen (xim, frame, &sx, &sy, &width, &height, &depth);
+ if (sx > 0 && sy > 0) {
+ gm = (XtPointer) GmCreate (xim->gt, Gm_Box,
+ interactive=False);
+
+ XtSetArg (args[nargs], GmX, sx + (width-1)/2); nargs++;
+ XtSetArg (args[nargs], GmY, sy + (height-1)/2); nargs++;
+ XtSetArg (args[nargs], GmWidth, (width-1)/2+1); nargs++;
+ XtSetArg (args[nargs], GmHeight, (height-1)/2+1); nargs++;
+ XtSetArg (args[nargs], GmLineWidth, xim->tileBorder); nargs++;
+ XtSetArg (args[nargs], GmSensitive, False); nargs++;
+ XtSetArg (args[nargs], GmVisible, True); nargs++;
+ XtSetArg (args[nargs], GmActivated, True); nargs++;
+
+ GmLower (gm, NULL);
+ GmSetAttribute (gm, GmLineColor, xim->borderColor, XtRString);
+ GmSetAttributes (gm, args, nargs, XtRInt);
+
+ xim->gm_border = gm;
+ }
+ xim_labelTiles (xim);
+ }
+}
+
+
+/* XIM_LABELTILES -- Label the tile with the frame number.
+ */
+xim_labelTiles (xim)
+register XimDataPtr xim;
+{
+ FrameBufPtr fb;
+ MappingPtr mp;
+ Widget gt = xim->gt;
+ XtPointer gm;
+ Arg args[10];
+ char text[256], tw[16];
+ register int i, j, len;
+ int sx, sy, width, height, depth, nargs=0;
+
+ static XtPointer labels[MAX_FRAMES];
+ static int label_init = 1;
+
+ if (!(xim->tileFrames && xim->tileLabels > 0))
+ return;
+
+ /* Initialize the label markers. */
+ if (label_init) {
+ /* First time through make sure we're all NULL. */
+ for (i=0; i < MAX_FRAMES; i++)
+ labels[i] = (XtPointer) NULL;
+ label_init = 0;
+ } else {
+ /* Free up the existing labels. */
+ for (i=0; labels[i] && i < MAX_FRAMES; i++) {
+ GmDestroy (labels[i]);
+ labels[i] = (XtPointer) NULL;
+ }
+ }
+
+
+ for (i=0; i < xim->nframes; i++) {
+ if (xim->tileFramesList & (1 << i)) {
+ xim_getScreen (xim, i+1, &sx, &sy, &width, &height, &depth);
+ fb = &xim->frames[i];
+ switch (xim->tileLabels) {
+ case 1: /* frame number */
+ sprintf (text, " %d ", i+1);
+ break;
+ case 2: /* image name */
+ if (fb->nmaps == 0) {
+ strcpy (text, " Blank ");
+ } else {
+ mp = &fb->mapping[0];
+ len = strlen (mp->ref);
+ for (j=len-1; mp->ref[j] != '/' && j > 0; j--) ;
+ sprintf (text, " %s ", &mp->ref[++j]);
+ }
+ break;
+ case 3: /* image title */
+ if (fb->nmaps == 0) {
+ strcpy (text, " Blank ");
+ } else {
+ len = strlen (fb->ctran.imtitle);
+ for (j=0; fb->ctran.imtitle[j] != ' ' && j < len; j++) ;
+ j += 3;
+ sprintf (text, " %s ", &fb->ctran.imtitle[j]);
+ }
+ break;
+ }
+
+
+ /* Now draw the label as a text marker on the tile. We use
+ * markers since they can be placed as needed in the frame
+ * and provide a background which lets them be read despite
+ * whatever image scaling is in place.
+ */
+ gm = (XtPointer) GmCreate (xim->gt, Gm_Text, False);
+
+ nargs = 0; /* initialize */
+ len = strlen (text);
+ sprintf (tw, "%dch", len);
+
+ XtSetArg (args[nargs], GmX, sx + 10); nargs++;
+ XtSetArg (args[nargs], GmY, sy + height - 20); nargs++;
+ XtSetArg (args[nargs], GmLineWidth, 0); nargs++;
+ XtSetArg (args[nargs], GmSensitive, True); nargs++;
+ XtSetArg (args[nargs], GmVisible, True); nargs++;
+ XtSetArg (args[nargs], GmActivated, True); nargs++;
+ XtSetArg (args[nargs], GmImageText, True); nargs++;
+
+ GmSetAttribute (gm, GmWidth, tw, XtRString);
+ GmSetAttribute (gm, GmHeight, "1ch", XtRString);
+ GmSetAttribute (gm, GmTextBgColor, "black", XtRString);
+ GmSetAttribute (gm, GmTextColor, "yellow", XtRString);
+ GmSetAttribute (gm, GmText, text, XtRString);
+ GmSetAttributes (gm, args, nargs, XtRInt);
+ GmMarkpos (gm);
+ GmRedraw (gm, GXcopy, True);
+
+ labels[i] = gm; /* save the marker ptr */
+ }
+ }
+}
+
+
+/* XIM_MATCHFRAMES -- Make the color enhancement of the listed frames match
+ * that of the indicated frame.
+ */
+void
+xim_matchFrames (xim, frames, reference_frame)
+XimDataPtr xim;
+int *frames;
+int reference_frame;
+{
+ register FrameBufPtr fr, fb = &xim->frames[reference_frame-1];
+ register int *ip, i;
+ Widget gt = xim->gt;
+ char buf[256];
+ int bits;
+
+ /* If frames is NULL match all frames. Set one bit in BITS for
+ * each frame to be modified. This ensures that each frame is
+ * only modified once, even if the same frame is listed more than
+ * once.
+ */
+ if (frames) {
+ for (ip=frames, bits=0; *ip; ip++)
+ bits |= (1 << (*ip - 1));
+ } else {
+ for (i=1, bits=0; i <= xim->nframes; i++)
+ bits |= (1 << (i - 1));
+ }
+
+ for (i=0; i < xim->nframes; i++) {
+ fr = &xim->frames[i];
+ if (fr != fb && (bits & (1 << (fr->frameno - 1)))) {
+ fr->colormap = fb->colormap;
+ fr->offset = fb->offset;
+ fr->scale = fb->scale;
+ xim_enhancement (xim, fr);
+ }
+ }
+}
+
+
+/* XIM_REGISTERFRAMES -- Register the listed frames with the given reference
+ * frame, i.e. set the field center and scale of each frame to match the
+ * reference frame.
+ */
+void
+xim_registerFrames (xim, frames, reference_frame, offsets)
+XimDataPtr xim;
+int *frames;
+int reference_frame;
+int offsets;
+{
+ register int *ip, i;
+ register FrameBufPtr fr, fb = &xim->frames[reference_frame-1];
+ int src, st, sx, sy, snx, sny;
+ int dst, dt, dx, dy, dnx, dny;
+ Widget gt = xim->gt;
+ int bits, rop;
+
+ /* If frames is NULL register all frames. Set one bit in BITS for
+ * each frame to be modified. This ensures that each frame is
+ * only modified once, even if the same frame is listed more than
+ * once.
+ */
+ if (frames) {
+ for (ip=frames, bits=0; *ip; ip++)
+ bits |= (1 << (*ip - 1));
+ } else {
+ for (i=1, bits=0; i <= xim->nframes; i++)
+ bits |= (1 << (i - 1));
+ }
+
+ GtGetMapping (gt, fb->zoommap,
+ &rop, &src,&st,&sx,&sy,&snx,&sny, &dst,&dt,&dx,&dy,&dnx,&dny);
+
+ for (i=0; i < xim->nframes; i++) {
+ fr = &xim->frames[i];
+
+/* if (fr != fb && (bits & (1 << (fr->frameno - 1)))) {*/
+ if ((bits & (1 << (fr->frameno - 1)))) {
+ fr->xcen = fb->xcen; fr->ycen = fb->ycen;
+ fr->xmag = fb->xmag; fr->ymag = fb->ymag;
+ fr->xflip = fb->xflip; fr->yflip = fb->yflip;
+
+ if (!xim_onScreen (xim, fb->frameno))
+ GtDisableMapping (gt, fr->zoommap, 0);
+
+ if (offsets) {
+ /* fb is the current display buffer, fr is some other
+ * frame in the list. To do the offsets we must
+ * first subtract the offset of the current display
+ * and then add the offset peculiar to the frame.
+ */
+
+ int nsx, nsy;
+
+ nsx = (int)(sx - fb->xoff + fr->xoff);
+ nsy = (int)(sy - fb->yoff + fr->yoff);
+
+ GtSetMapping (gt, fr->zoommap, xim->rop,
+ fr->raster, st,nsx,nsy, snx,sny,
+ fr->zoomras,dt,dx,dy,dnx,dny);
+ GtRefreshMapping (gt, fr->zoommap);
+
+ } else {
+ GtSetMapping (gt, fr->zoommap, xim->rop,
+ fr->raster, st,sx,sy, snx,sny,
+ fr->zoomras,dt,dx,dy,dnx,dny);
+ }
+ }
+ }
+
+ /* A normal registration zeroes the offsets for each frame. */
+ if (!offsets) {
+ for (i=0; i < xim->nframes; i++) {
+ fr = &xim->frames[i];
+ fr->xoff = fr->yoff = 0;
+ }
+ }
+ xim_labelTiles (xim);
+}
+
+
+/* XIM_CURSORMODE -- Enter or leave cursor mode. The remote client issues
+ * a cursor read request via the datastream, then blocks until a cursor
+ * value is returned. The GUI is responsible for signalling to the user
+ * that the application is waiting for cursor input, and for returning the
+ * cursor value when the cursor read finishes.
+ */
+void
+xim_cursorMode (xim, state)
+register XimDataPtr xim;
+int state;
+{
+ /* The GUI is responsible for implementing cursor reads. */
+ xim_message (xim, "cursorMode", state ? "on" : "off");
+}
+
+
+/* XIM_SETMAPPING -- Set up a mapping between two rasters.
+ */
+void
+xim_setMapping (xim, fb, frame, mapping, src, dst, fill_mode)
+register FrameBufPtr fb;
+register XimDataPtr xim;
+int frame;
+int mapping;
+int src, dst;
+int fill_mode;
+{
+ register Widget gt = xim->gt;
+ int src_type, src_width, src_height, src_depth;
+ int dst_type, dst_width, dst_height, dst_depth, dst_x, dst_y;
+ float xscale, yscale, scale;
+ int dx, dy, dnx, dny;
+ int sx, sy, snx, sny;
+
+ /* Get dimensions of source and destination rasters. */
+ if (GtQueryRaster (gt, src,
+ &src_type, &src_width, &src_height, &src_depth) == 0)
+ return;
+
+ /* Get region of destination to be written into. */
+ if (dst == 0) {
+ xim_getScreen (xim, frame,
+ &dst_x, &dst_y, &dst_width, &dst_height, &dst_depth);
+ } else {
+ if (GtQueryRaster (gt, dst,
+ &dst_type, &dst_width, &dst_height, &dst_depth) == 0)
+ return;
+ dst_x = dst_y = 0;
+ }
+
+ xscale = (float)dst_width / (float)src_width;
+ yscale = (float)dst_height / (float)src_height;
+
+ switch (fill_mode) {
+ case M_UNITARY:
+ /* Set up a unitary (one-to-one) mapping, i.e. one pixel in the
+ * source is mapped to one pixel in the destination. The mapped
+ * region is the center of both rasters.
+ */
+ xscale = yscale = 1.0;
+ /* fall through */
+
+ case M_ASPECT:
+ /* Scale the source to fit the destination, preserving the
+ * aspect ratio and displaying all source pixels.
+ */
+ scale = min (xscale, yscale);
+ if (abs(scale - (int)(scale+0.5)) < TOL)
+ scale = (int)(scale+0.5);
+
+ dnx = src_width * scale;
+ if (dnx > dst_width) {
+ /* Clip source rect. */
+ dnx = dst_width;
+ snx = dnx;
+ sx = max (0, (src_width + 1) / 2 - snx / 2);
+ dx = 0;
+ } else {
+ /* Clip destination rect. */
+ snx = src_width;
+ sx = 0;
+ dx = max (0, (dst_width + 1) / 2 - dnx / 2);
+ }
+
+ dny = src_height * scale;
+ if (dny > dst_height) {
+ /* Clip source rect. */
+ dny = dst_height;
+ sny = dny;
+ sy = max (0, (src_height + 1) / 2 - sny / 2);
+ dy = 0;
+ } else {
+ /* Clip destination rect. */
+ sny = src_height;
+ sy = 0;
+ dy = max (0, (dst_height + 1) / 2 - dny / 2);
+ }
+
+ GtSetMapping (gt, mapping, xim->rop,
+ src, GtPixel, sx, sy, snx, sny,
+ dst, GtPixel, dst_x + dx, dst_y + dy, dnx, dny);
+ break;
+
+ case M_FILL:
+ /* Scale the source to fill the destination window.
+ */
+ GtSetMapping (gt, mapping, xim->rop,
+ src, GtPixel, 0, 0, src_width, src_height,
+ dst, GtPixel, dst_x, dst_y, dst_width, dst_height);
+ break;
+ }
+
+ if (fb && mapping == fb->zoommap) {
+ fb->xmag = 1.0;
+ fb->ymag = 1.0;
+ fb->xscale = xscale;
+ fb->yscale = yscale;
+ fb->xcen = (src_width + 1) / 2.0;
+ fb->ycen = (src_height + 1) / 2.0;
+ fb->xflip = fb->yflip = 0;
+ }
+}
+
+
+/* XIM_SETZOOM -- Modify a mapping between two rasters given the specified
+ * view center and zoom factors.
+ */
+void
+xim_setZoom (xim, fb, frame, mapping, src, dst, xcen,ycen,xmag,ymag, xoff,yoff, absolute)
+register XimDataPtr xim;
+register FrameBufPtr fb;
+int frame;
+int mapping;
+int src, dst;
+float xcen, ycen; /* center of source raster region to be mapped */
+float xmag, ymag; /* magnification in each axis */
+float xoff, yoff; /* offset in each axis */
+Boolean absolute; /* ignore xscale/yscale */
+{
+ register Widget gt = xim->gt;
+ int src_type, src_width, src_height, src_depth;
+ int dst_type, dst_width, dst_height, dst_depth, dst_x, dst_y;
+ int sx1, sx2, sy1, sy2, snx, sny;
+ int dx1, dx2, dy1, dy2, dnx, dny;
+ int fx1, fx2, fy1, fy2, shift;
+ int src_recenter_allowed = 1;
+ int dst_recenter_allowed = 1;
+ int xreplicate, yreplicate;
+ int scale, max_x, max_y, bias;
+ float xscale, yscale;
+ char buf[256];
+
+
+ /* Get dimensions of source and destination rasters. */
+ if (GtQueryRaster (gt, src,
+ &src_type, &src_width, &src_height, &src_depth) == 0)
+ return;
+
+ /* Get region of destination to be written into. */
+ if (dst == 0) {
+ xim_getScreen (xim, frame,
+ &dst_x, &dst_y, &dst_width, &dst_height, &dst_depth);
+ } else {
+ if (GtQueryRaster (gt, dst,
+ &dst_type, &dst_width, &dst_height, &dst_depth) == 0)
+ return;
+ dst_x = dst_y = 0;
+ }
+
+ /* Use old center if none given. */
+ if (xcen <= 0)
+ xcen = fb->xcen;
+ if (ycen <= 0)
+ ycen = fb->ycen;
+
+ /* Get scaling ratios. */
+ if (absolute) {
+ xscale = xmag;
+ yscale = ymag;
+ } else {
+ xscale = xmag * fb->xscale;
+ yscale = ymag * fb->yscale;
+ }
+
+ /* Avoid roundoff if integer scaling. */
+ if (xreplicate = (abs(xscale - (int)(xscale+0.5)) < TOL))
+ xscale = (int)(xscale+0.5);
+ if (yreplicate = (abs(yscale - (int)(yscale+0.5)) < TOL))
+ yscale = (int)(yscale+0.5);
+
+ /* Sanity check, return if we're getting too small. */
+ if (xscale < TOL || yscale < TOL)
+ return;
+
+
+ /* Map the destination rect back into the source with the given
+ * zoom factor and center, clipping the source rect at the source
+ * raster boundary.
+ */
+src_recenter:
+ max_x = src_width - 1;
+ max_y = src_height - 1;
+
+ snx = (int) (dst_width / xscale) + 1;
+ sny = (int) (dst_height / yscale) + 1;
+
+ sx1 = (int) (xcen - snx / 2.0 + 0.5 + xoff); /*********/
+ sx2 = (int) (xcen + snx / 2.0 + 0.5);
+ sy1 = (int) (ycen - sny / 2.0 + 0.5 + yoff); /*********/
+ sy2 = (int) (ycen + sny / 2.0 + 0.5);
+
+ /* Fiddle the source rect slightly if necessary to achieve the
+ * requested snx,sny. This corrects for any pixel selection errors
+ * introduced in the float to integer truncation. This is a small
+ * effect but it can be apparent at high pixel magnifications.
+ */
+ sx2 -= ((sx2 - sx1 + 1) - snx);
+ sy2 -= ((sy2 - sy1 + 1) - sny);
+
+ if (src_recenter_allowed) {
+ /* Adjust the center of the source rect to make it fit on the
+ * source raster, but only if only one edge extends beyond the
+ * raster boundary. If both edges are out of bounds we just
+ * clip below.
+ *
+ * MJF 9/29 - The changes to fx2/fy2 below are to fix an off-by-one
+ * error in the center pixel computed by an integer zoom. For
+ * example, display a 256sq image, invert the cmap and zoom by
+ * two, the center is different than a straight centering op done
+ * by the pan function. The effect is that hardcopy has an extra
+ * border on two sides.
+ */
+ fx1 = (sx1 < 0) ? -sx1 : 0;
+ fx2 = (sx2 > max_x) ? (max_x - sx2 + 1) : 0;
+ if (fx1 && !fx2 || !fx1 && fx2)
+ xcen += (fx1 + fx2);
+
+ fy1 = (sy1 < 0) ? -sy1 : 0;
+ fy2 = (sy2 > max_y) ? (max_y - sy2 + 1) : 0;
+ if (fy1 && !fy2 || !fy1 && fy2)
+ ycen += (fy1 + fy2);
+
+ src_recenter_allowed = 0;
+ goto src_recenter;
+ }
+
+ /* Clip the source rect to the raster boundary. */
+ sx1 = max(0, min(max_x, sx1));
+ sx2 = max(0, min(max_x, sx2));
+ sy1 = max(0, min(max_y, sy1));
+ sy2 = max(0, min(max_y, sy2));
+
+ snx = sx2 - sx1 + 1;
+ sny = sy2 - sy1 + 1;
+
+
+ /* Map the zoomed, possibly centered, and clipped source rect back
+ * to the destination.
+ */
+ max_x = dst_width - 1;
+ max_y = dst_height - 1;
+
+ dx1 = (int) ((sx1-0.5 - xcen) * xscale + dst_width / 2.0 + 0.5);
+ dx2 = (int) ((sx2+0.5 - xcen) * xscale + dst_width / 2.0 + 0.5);
+ dy1 = (int) ((sy1-0.5 - ycen) * yscale + dst_height / 2.0 + 0.5);
+ dy2 = (int) ((sy2+0.5 - ycen) * yscale + dst_height / 2.0 + 0.5);
+
+ if (dst_recenter_allowed) {
+ /* If the unclipped destination rect extends out of bounds on
+ * one side or the other (but not both), shift it slightly to
+ * try to recenter it on the destination raster. This tends
+ * to cancel out rounding errors occurring in the calculation
+ * of the destination rect.
+ */
+ fx1 = (dx1 < 0) ? -dx1 : 0;
+ fx2 = (dx2 > max_x) ? (max_x - dx2) : 0;
+ if (fx1 && !fx2 || !fx1 && fx2) {
+ shift = (fx1 + fx2);
+ dx1 += shift;
+ dx2 += shift;
+ }
+
+ fy1 = (dy1 < 0) ? -dy1 : 0;
+ fy2 = (dy2 > max_y) ? (max_y - dy2) : 0;
+ if (fy1 && !fy2 || !fy1 && fy2) {
+ shift = (fy1 + fy2);
+ dy1 += shift;
+ dy2 += shift;
+ }
+
+ /* If the destination rect does not fill the destination raster,
+ * center it in the raster.
+ */
+ if ((dx2 - dx1 + 1) < dst_width) {
+ shift = (dx1 + (max_x - dx2)) / 2 - dx1;
+ dx1 += shift;
+ dx2 += shift;
+ }
+
+ if ((dy2 - dy1 + 1) < dst_height) {
+ shift = (dy1 + (max_y - dy2)) / 2 - dy1;
+ dy1 += shift;
+ dy2 += shift;
+ }
+ }
+
+ /* Clip to the edge of the destination raster. */
+ dx1 = max(0, min(max_x, dx1));
+ dx2 = max(0, min(max_x, dx2));
+ dy1 = max(0, min(max_y, dy1));
+ dy2 = max(0, min(max_y, dy2));
+
+ dnx = dx2 - dx1 + 1;
+ dny = dy2 - dy1 + 1;
+
+ /* Attempt to integerize things if integer scaling is selected. This
+ * can leave a blank pixel or two at the edge depending upon the
+ * window size and scaling.
+ */
+ scale = (int)xscale;
+ if (xreplicate && dnx != snx * scale) {
+ if (snx < src_width) {
+ snx = max(1, min(src_width, dnx / scale));
+ dnx = max(1, min(dst_width, snx * scale));
+ } else if (dnx < dst_width) {
+ dnx = max(1, min(dst_width, snx * scale));
+ snx = max(1, min(src_width, dnx / scale));
+ }
+ if ((bias = ((dx2 - dx1 + 1) - dnx) / 2) > 0) {
+ dx1 += bias;
+ dx2 += bias;
+ }
+ }
+ scale = (int)yscale;
+ if (yreplicate && dny != sny * scale) {
+ if (sny < src_height) {
+ sny = max(1, min(src_height, dny / scale));
+ dny = max(1, min(dst_height, sny * scale));
+ } else if (dny < dst_height) {
+ dny = max(1, min(dst_height, sny * scale));
+ sny = max(1, min(src_height, dny / scale));
+ }
+ if ((bias = ((dy2 - dy1 + 1) - dny) / 2) > 0) {
+ dy1 += bias;
+ dy2 += bias;
+ }
+ }
+
+
+
+ /* Set the mapping. */
+ initialize_shadow_pixmap (gt, dst);
+ GtSetMapping (gt, mapping, xim->rop,
+ src, GtPixel, sx1, sy1, snx, sny,
+ dst, GtPixel, dst_x + dx1, dst_y + dy1,
+ fb->xflip ? -dnx : dnx,
+ fb->yflip ? -dny : dny);
+
+ /* Update the frame buffer zoom/pan/flip parameters. */
+ fb->xcen = xcen; fb->ycen = ycen;
+ fb->xoff = xoff; fb->yoff = yoff;
+
+ if (absolute) {
+ fb->xmag = xmag / fb->xscale;
+ fb->ymag = ymag / fb->yscale;
+ } else {
+ fb->xmag = xmag;
+ fb->ymag = ymag;
+ }
+
+ xim_frameRegion (xim, fb);
+ sprintf (buf, "%g %g %g %g %g %g %g %g",
+ fb->xmag, fb->ymag, fb->xcen, fb->ycen,
+ fb->xscale, fb->yscale, fb->xoff, fb->yoff);
+ xim_message (xim, "frameView", buf);
+}
+
+
+/* XIM_GETSCREEN -- Determine the region of the display window to which
+ * the given frame is mapped.
+ */
+xim_getScreen (xim, frame, sx, sy, width, height, depth)
+register XimDataPtr xim;
+int frame;
+int *sx, *sy;
+int *width, *height, *depth;
+{
+ register int i;
+ int border = xim->tileBorder;
+ int rtype, scr_width, scr_height;
+ int twidth, theight, tileno, frameno;
+ int tilex, tiley;
+ int nrows = xim->tileRows, ncols = xim->tileCols;
+
+ if (GtQueryRaster (xim->gt, 0,
+ &rtype, &scr_width, &scr_height, depth) == 0)
+ return;
+
+ /* Use the entire display window if we are not tiling frames, if
+ * there aren't enough frames to tile, or if the given frame is
+ * not in the list of tile frames.
+ */
+ if (!xim->tileFrames || xim->nframes <= 1 ||
+ !(xim->tileFramesList & (1 << frame-1))) {
+ *sx = *sy = 0;
+ *width = scr_width;
+ *height = scr_height;
+ return;
+ }
+
+ /* Get index of frame in tile Frames list. */
+ for (i=1, frameno=0; i <= xim->nframes; i++) {
+ if (xim->tileFramesList & (1 << (i-1))) {
+ frameno++;
+ if (frame == i)
+ break;
+ }
+ }
+
+ /* Now compute the size of each tile. */
+ tileno = frameno - 1;
+ twidth = (scr_width - (ncols * 2 * border)) / ncols;
+ theight = (scr_height - (nrows * 2 * border)) / nrows;
+
+ /* Get the "coordinates" of the tile in the mosaic. */
+ if (xim->tileByRows) {
+ tilex = tileno % ncols;
+ tiley = tileno / ncols;
+ } else {
+ tilex = tileno / nrows;
+ tiley = tileno % nrows;
+ }
+ if (!xim->tileTopDown)
+ tiley = (nrows - tiley - 1);
+
+ /* Finally, get the placement of the tile on the screen. */
+ *sx = tilex * twidth + ((tilex*2+1) * border);
+ *sy = tiley * theight + ((tiley*2+1) * border);
+
+ *width = twidth;
+ *height = theight;
+}
+
+
+/* XIM_ONSCREEN -- Test whether the given frame is visible onscreen.
+ */
+xim_onScreen (xim, frame)
+register XimDataPtr xim;
+int frame;
+{
+ if (xim->tileFrames)
+ return ((xim->tileFramesList & (1 << (frame-1))) != 0);
+ else
+ return (frame == xim->display_frame);
+}
+
+
+/* XIM_SETFLIP -- Modify a mapping to flip the frame in X and/or Y.
+ */
+void
+xim_setFlip (xim, fb, flip_x, flip_y)
+register XimDataPtr xim;
+register FrameBufPtr fb;
+int flip_x, flip_y;
+{
+ register Widget gt = xim->gt;
+ int src, st, sx, sy, snx, sny;
+ int dst, dt, dx, dy, dnx, dny;
+ int rop;
+
+ if (!flip_x && !flip_y)
+ return;
+
+ if (flip_x)
+ fb->xflip = !fb->xflip;
+ if (flip_y)
+ fb->yflip = !fb->yflip;
+
+ GtGetMapping (gt, fb->zoommap,
+ &rop, &src,&st,&sx,&sy,&snx,&sny, &dst,&dt,&dx,&dy,&dnx,&dny);
+
+ dnx = abs (dnx);
+ dnx = fb->xflip ? -dnx : dnx;
+ dny = abs (dny);
+ dny = fb->yflip ? -dny : dny;
+
+ GtSetMapping (gt, fb->zoommap,
+ rop, src,st,sx,sy,snx,sny, dst,dt,dx,dy,dnx,dny);
+
+ xim_message (xim, "xflip", fb->xflip ? "true" : "false");
+ xim_message (xim, "yflip", fb->yflip ? "true" : "false");
+}
+
+
+/* XIM_SETROP -- Modify the rasterop portion of a mapping.
+ */
+void
+xim_setRop (xim, fb, rop)
+register XimDataPtr xim;
+register FrameBufPtr fb;
+int rop;
+{
+ register Widget gt = xim->gt;
+ int src, st, sx, sy, snx, sny;
+ int dst, dt, dx, dy, dnx, dny;
+ int oldrop;
+
+ GtGetMapping (gt, fb->zoommap,
+ &oldrop, &src,&st,&sx,&sy,&snx,&sny, &dst,&dt,&dx,&dy,&dnx,&dny);
+
+ GtSetMapping (gt, fb->zoommap,
+ rop, src,st,sx,sy,snx,sny, dst,dt,dx,dy,dnx,dny);
+}
+
+
+/* XIM_SETCURSORPOS -- Set the cursor position.
+ */
+void
+xim_setCursorPos (xim, sx, sy)
+register XimDataPtr xim;
+float sx, sy; /* raster coordinates */
+{
+ GtSetRaster (xim->gt, xim->df_p->frameno);
+ GtSetCursorPos (xim->gt, (int)sx, (int)sy);
+ GtSetRaster (xim->gt, 0);
+}
+
+
+/* XIM_GETCURSORPOS -- Get the cursor position. This is done to a fractional
+ * pixel precision if the image is zoomed.
+ */
+void
+xim_getCursorPos (xim, sx, sy, raster, frame)
+register XimDataPtr xim;
+float *sx, *sy;
+int *raster, *frame;
+{
+ register FrameBufPtr fb;
+ DPoint pv1, pv2;
+ int rx, ry, rmap;
+ int src, x, y, i;
+
+ GtGetCursorPos (xim->gt, &x, &y);
+ src = GtSelectRaster (xim->gt, 0, GtPixel, x,y, GtNDC, &rx, &ry, &rmap);
+
+ pv1.x = rx; pv1.y = ry;
+ GtNDCToPixel (xim->gt, src, &pv1, &pv2, 1);
+ *sx = pv2.x;
+ *sy = pv2.y;
+
+ if (raster)
+ *raster = src;
+
+ if (frame) {
+ *frame = xim->display_frame;
+ for (i=1; i < xim->nframes; i++) {
+ fb = &xim->frames[i-1];
+ if (fb->raster == src || fb->zoomras == src) {
+ *frame = fb->frameno;
+ break;
+ }
+ }
+ }
+}
+
+
+/* XIM_READDISPLAY -- Read a region of the current display frame and return
+ * the pixels and corresponding RGB colormap. We allocate a pointer to the
+ * pixels that needs to be freed later on. Note this routine returns an
+ * 8 bit RGB colormap.
+ */
+unsigned char *
+xim_readDisplay (xim, x0,y0,nx,ny, w,h, r,g,b, ncolors)
+register XimDataPtr xim;
+int x0,y0,nx,ny; /* region to extract (input) */
+int *w, *h; /* size of output region (output). */
+unsigned char *r, *g, *b; /* colortable (output) */
+int *ncolors; /* size of colortable (output) */
+{
+ register Widget gt = xim->gt;
+ register int i, j;
+
+ int raster, x1, y1, nc;
+ int first, nelem, maxelem;
+ char buf[SZ_LINE], *tmpfile;
+ unsigned short *rs, *gs, *bs;
+ int junk, width, height, depth;
+ unsigned short *cmap=NULL, *iomap=NULL;
+ unsigned char *pixels=NULL;
+ static int debug = 0;
+
+ /* The display is raster zero. */
+ raster = 0;
+
+ /* Get the size of the raster we're going to extract. If nx or ny
+ * is zero use the entire raster, else use the indicated region.
+ * If a region is given clip it to the raster boundary.
+ */
+ if (GtQueryRaster (gt, raster, &junk, &width, &height, &depth) == 0)
+ goto error;
+
+
+ if (nx <= 0 || ny <= 0) {
+ x0 = y0 = 0;
+ nx = width;
+ ny = height;
+ } else {
+ x1 = min (width-1, x0 + nx - 1);
+ y1 = min (height-1, y0 + ny - 1);
+ x0 = max (0, x0);
+ y0 = max (0, y0);
+ nx = x1 - x0 + 1;
+ ny = y1 - y0 + 1;
+ }
+
+ /* Get a pixel buffer and read the pixels. */
+ if (nx*ny <= 0 || !(pixels = (unsigned char *) malloc (nx * ny)))
+ goto error;
+ if (GtReadPixels (gt, raster, pixels, 8, x0, y0, nx, ny) < 0)
+ goto error;
+
+
+ /* Get Gterm widget colormap. */
+ if (!(cmap = (ushort *) malloc (3 * MAX_COLORS * sizeof(ushort))))
+ goto error;
+
+ rs = cmap;
+ gs = rs + MAX_COLORS;
+ bs = gs + MAX_COLORS;
+
+ if (depth == 8) {
+ nc = GtReadColormap (gt, raster, 0, MAX_COLORS, rs,gs,bs);
+ if (nc <= 0)
+ goto error;
+
+
+ /* Get the RGB color associated with each pixel. To determine
+ ** this we must consider both the Gterm widget colormap and iomap.
+ ** The iomap maps client pixels to Gterm widget pixels, and the
+ ** colormap maps Gterm widget pixels to RGB values. GtReadPixels
+ ** returns client pixels, so to get the RGB value associated with
+ ** each client pixel we must run the client pixel through the iomap
+ ** to get the Gterm widget pixel, and then use this to look up the
+ ** RGB value in the widget's colormap. When reading the display
+ ** (raster=0) we get the colormap corresponding to the image as
+ ** currently windowed, hence the output image will be rendered as
+ ** in the current display. Note: the Gterm widget maps are 16 bits,
+ ** while we return an 8 bit RGB colormap to our caller.
+ */
+ /* Get iomap. */
+ if (!(iomap = (ushort *) malloc (MAX_COLORS * sizeof(ushort))))
+ goto error;
+ GtReadIomap (gt, iomap, 0, MAX_COLORS);
+
+ if (debug) {
+ register short pmin = MAX_COLORS, pmax = 0, i, j;
+ fprintf (stderr, "iomap\n");
+ for (i=0; i < MAX_COLORS; ) {
+ for (j=0; j < 8 && i < MAX_COLORS; j++) {
+ pmin = (iomap[i] < pmin ? iomap[i] : pmin);
+ pmax = (iomap[i] > pmax ? iomap[i] : pmax);
+ fprintf (stderr, "%3d(%3d) ", i, iomap[i++]);
+ }
+ fprintf (stderr, "\n");
+
+ }
+ fprintf (stderr, "iomap min = %d max = %d\n", pmin, pmax);
+ fprintf (stderr, "Gterm Colormap\n");
+ for (i=0; i < MAX_COLORS; ) {
+ for (j=1; j < 4 && i < MAX_COLORS; j++)
+ fprintf (stderr, " %3d(%3d,%3d,%3d)",i,
+ (rs[i]>>8),(gs[i]>>8),(bs[i++]>>8));
+ fprintf (stderr, "\n");
+ }
+ fflush (stderr);
+ }
+
+ /* Output the colormap. */
+ for (i=0; i < nc; i++) {
+ j = iomap[i];
+ r[i] = (rs[j] >> 8);
+ g[i] = (gs[j] >> 8);
+ b[i] = (bs[j] >> 8);
+ }
+ for (i=nc; i < MAX_COLORS; i++) {
+ j = iomap[i];
+ r[i] = (rs[j] >> 8);
+ g[i] = (gs[j] >> 8);
+ b[i] = (bs[j] >> 8);
+ }
+
+ } else {
+ unsigned long lut[MAX_COLORS];
+ int start = 10; /* static colors offset */
+
+ GtReadLUT (gt, lut, 0, MAX_COLORS);
+
+ nc = 216;
+ for (i=0; i < nc; i++) {
+ r[i] = (lut[i] >> 16) & 0xff;
+ g[i] = (lut[i] >> 8) & 0xff;
+ b[i] = (lut[i] ) & 0xff;
+ }
+ }
+
+ *w = nx;
+ *h = ny;
+ *ncolors = nc; /* includes static colors */
+
+ if (debug) {
+ fprintf (stderr,
+ "xim_readDisplay: w=%d h=%d d=%d\n", width, height, depth);
+ for (i=0; i < nc; i++)
+ fprintf (stderr, "xim_readDisplay[%3d]: %3d %3d %3d\n",
+ i, r[i], g[i], b[i]);
+ }
+
+ free ((char *) cmap);
+ free ((char *) iomap);
+
+ return (pixels);
+
+error:
+ if (cmap)
+ free ((char *) cmap);
+ if (iomap)
+ free ((char *) iomap);
+ if (pixels)
+ free ((char *) pixels);
+ return (NULL);
+}
+
+
+/* XIM_WRITEDISPLAY -- Load the current display frame from the pixel array
+ * and RGB colormap passed in the input arguments. The data is assumed to
+ * be 8 bit pseudocolor.
+ */
+int
+xim_writeDisplay (xim, frame, mapname, pixels, w,h, r,g,b, ncolors)
+register XimDataPtr xim;
+int frame; /* display frame to be written */
+char *mapname; /* colormap name to be written */
+unsigned char *pixels;
+int w, h;
+unsigned char *r, *g, *b;
+int ncolors;
+{
+ register int i, j;
+ register FrameBufPtr fb;
+ register Widget gt = xim->gt;
+ unsigned short rs[MAX_COLORS], gs[MAX_COLORS], bs[MAX_COLORS];
+ unsigned short iomap[MAX_COLORS], sv_iomap[MAX_COLORS];
+ unsigned short invmap[MAX_COLORS];
+ int want, npix, nx, ny, sx0, sy0, dx0, dy0;
+ int sx, sy, width, height, depth;
+ float xzoom, yzoom, zoom;
+ int debug=0, autoscale=xim->autoscale;
+ unsigned char *gtpix;
+ ColorMapPtr cm;
+
+
+ if (DBG_RASTER)
+ fprintf (stderr, "raster writeDisplay: .......................");
+
+ /* If frame=0 use the current display frame. */
+ if (frame < 1) frame = xim->display_frame;
+
+ /* Create additional frames if needed. */
+ if (frame > xim->nframes) {
+ for (i=1; i <= frame; i++) {
+ fb = &xim->frames[i-1];
+ if (fb->frameno != i) {
+ xim_initFrame (xim, i, frame,
+ &xim->fb_config[xim->fb_configno-1], xim->memModel);
+
+ /* If we're in tile mode, add the frame to the tile list
+ * and if needed resize the tile frames.
+ */
+ if (xim->tileFrames) {
+ xim->tileFramesList |= (1 << (i-1));
+ xim->nTileFrames++;
+ xim_tileFrames (xim, xim->tileFramesList);
+ }
+ }
+ }
+ }
+
+
+ /* Erase the existing frame before disabling the mapping, otherwise
+ * we get a white background when the new image is loaded.
+ */
+ xim_eraseFrame (xim, frame);
+
+ fb = &xim->frames[frame-1];
+ GtDisableMapping (gt, fb->dispmap, 0);
+
+ /* Substitute a one-to-one iomap so that we don't confuse colors for
+ * a non-continuous tone (grayscale) image.
+ */
+ GtReadIomap (gt, sv_iomap, 0, MAX_COLORS);
+ for (i=0; i < MAX_COLORS; i++)
+ iomap[i] = FIRST_COLOR + min (xim->ncolors, i);
+ GtWriteIomap (gt, iomap, 0, MAX_COLORS);
+
+ /* If debug mode is enabled compute and print the minimum and maximum
+ * pixel values and a histogram or count of the number of pixels at
+ * each value.
+ */
+ if (debug) {
+ int count[MAX_COLORS];
+ int v, lo, hi;
+
+ memset ((void *)count, 0, sizeof(count));
+ for (i=0, lo=MAX_COLORS, hi=0; i < w*h; i++) {
+ v = pixels[i];
+ count[v]++;
+ if (v < lo)
+ lo = v;
+ else if (v > hi)
+ hi = v;
+ }
+ fprintf (stderr, "%s: w=%d h=%d min=%d max=%d\n",
+ mapname, w, h, lo, hi);
+
+ for (i=0, j=0; i < MAX_COLORS; i++)
+ if (count[i]) {
+ fprintf (stderr, " %3d(%4d)", i, min(9999,count[i]));
+ if (++j >= 7) {
+ fprintf (stderr, "\n");
+ j = 0;
+ }
+ }
+ if (j)
+ fprintf (stderr, "\n");
+
+ fprintf (stderr, "zeros: ");
+ for (i=0; i < MAX_COLORS; i++)
+ if (!count[i])
+ fprintf (stderr, " %d", i);
+ fprintf (stderr, "\n");
+ }
+
+ /* Invert the iomap. We want to map standard pixels 0-N to the range
+ * FC-FC+N in Gterm color space (FC is shorthand for FIRST_COLOR).
+ * GtWritePixels will process pixels through the ximtool iomap so we
+ * need to compute invmap, which tells us the input value needed to
+ * get the desired value of out the iomap.
+ GtReadIomap (gt, iomap, 0, MAX_COLORS);
+ memset ((void *)invmap, 0, sizeof(invmap));
+ for (i=0; i < MAX_COLORS; i++)
+ invmap[iomap[i]] = i;
+ if (!(gtpix = (unsigned char *) malloc (npix = w * h)))
+ return (-1);
+ for (i=0; i < npix; i++) {
+ want = FIRST_COLOR + pixels[i];
+ gtpix[i] = invmap[want];
+ }
+ free ((char *) gtpix);
+ */
+
+ /* If the image is too large to fit in the existing frame clip it
+ * to fit (we need to add an auto-resize option here later).
+ */
+ if (w > xim->width) {
+ nx = xim->width;
+ sx0 = (w - nx) / 2;
+ dx0 = 0;
+ } else {
+ nx = w;
+ sx0 = 0;
+ dx0 = (xim->width - w) / 2;
+ }
+
+ if (h > xim->height) {
+ ny = xim->height;
+ sy0 = (h - ny) / 2;
+ dy0 = 0;
+ } else {
+ ny = h;
+ sy0 = 0;
+ dy0 = (xim->height - h) / 2;
+ }
+
+ /* Load the frame. The GtWritePixels call loads to the raster
+ * associated with the frame, not the frame number directly.
+ */
+ if (nx <= xim->width && ny <= xim->height) {
+ GtWritePixels (gt, fb->raster, pixels, 8, dx0, dy0, nx, ny);
+ } else {
+ unsigned char *ip = pixels + sy0 * w + sx0;
+ for (i=0; i < ny; i++, ip += w)
+ GtWritePixels (gt, fb->raster, ip, 8, dx0, dy0+i, nx, 1);
+ }
+
+ /* Get screen size. */
+ xim_getScreen (xim, 1, &sx, &sy, &width, &height, &depth);
+
+ /* Compute the new scale factor required to scale the source to the
+ * destination at magnification 1.0.
+ */
+ if (autoscale) {
+ xzoom = (float)width / (float)nx;
+ yzoom = (float)height / (float)ny;
+ zoom = min (xzoom, yzoom);
+ } else {
+ xzoom = 1.0;
+ yzoom = 1.0;
+ zoom = 1.0;
+ }
+
+ /* Set the new mapping. */
+ fb->xmag = fb->ymag = zoom;
+ fb->xcen = xim->width / 2;
+ fb->ycen = xim->height / 2;
+
+ /* Zoom it to fill the display window. */
+ xim_setZoom (xim, fb, frame, fb->zoommap, fb->raster, fb->zoomras,
+ fb->xcen, fb->ycen, fb->xmag, fb->ymag,
+ fb->xoff, fb->yoff, True);
+
+ /* Check if the named colortable is already defined. If not, add
+ * another one. If ncolors=0 omit the colortable handling, e.g.
+ * when loading a raster that doesn't have a colormap.
+ */
+ if (ncolors > 0) {
+ for (i=0, cm=NULL; i < ncolormaps; i++)
+ if (strcmp (colormaps[i].name, mapname) == 0) {
+ cm = &colormaps[i];
+ break;
+ }
+ if (!cm) {
+ if (ncolormaps >= MAX_COLORMAPS - 1)
+ cm = &colormaps[ncolormaps];
+ else {
+ cm = &colormaps[ncolormaps++];
+ cm->mapno = GtNextColormap (gt);
+ }
+ strcpy (cm->name, mapname);
+ ncolormaps = min (MAX_COLORMAPS-1, ncolormaps);
+
+ /* Pass the list of colortables on to the user interface. */
+ xim_colortables (xim);
+ }
+
+ for (i=0; i < ncolors; i++) {
+ rs[i] = (r[i] << 8);
+ gs[i] = (g[i] << 8);
+ bs[i] = (b[i] << 8);
+ }
+
+ if (DBG_RASTER)
+ fprintf (stderr,"raster writeDisplay: writing colormap.......");
+ GtWriteColormap (gt, cm->mapno,
+ FIRST_COLOR, min(ncolors,xim->ncolors), rs, gs, bs);
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "raster writeDisplay: writing colormap.......DONE");
+
+ fb->offset = 0.5;
+ fb->scale = (xim->invert ? -1.0 : 1.0);
+ fb->colormap = cm->mapno;
+ } else
+ cm = &colormaps[fb->colormap-1];
+
+ /* Display the frame. */
+ GtEnableMapping (gt, fb->dispmap, 1);
+ GtSetDisplayRaster (gt, xim->display_frame);
+ xim_setDisplayFrame (xim, frame);
+
+ GtSetColormapFocus (-1); /* force full update */
+ GtLoadColormap (gt, cm->mapno, fb->offset, fb->scale);
+ GtSetColormapFocus (xim->cm_focus);
+ xim_enhancement (xim, fb);
+
+ GtWriteIomap (gt, sv_iomap, 0, MAX_COLORS);
+
+ if (DBG_RASTER)
+ fprintf (stderr, "raster writeDisplay: ......................DONE");
+ return (0);
+}
+
+
+/* XIM_MESSAGE -- Send a message to the user interface.
+ */
+void
+xim_message (xim, object, message)
+register XimDataPtr xim;
+char *object;
+char *message;
+{
+ char msgbuf[SZ_MSGBUF];
+
+ sprintf (msgbuf, "setValue {%s}", message);
+ ObmDeliverMsg (xim->obm, object, msgbuf);
+}
+
+
+/* XIM_MSGI -- Like xim_message, but the message is an integer value.
+ */
+void
+xim_msgi (xim, object, value)
+register XimDataPtr xim;
+char *object;
+int value;
+{
+ char msgbuf[SZ_LINE];
+ sprintf (msgbuf, "setValue {%d}", value);
+ ObmDeliverMsg (xim->obm, object, msgbuf);
+}
+
+
+/* XIM_ALERT -- Issue an alert to the server. The message text input will
+ * be displayed and either the ok (proceed) or cancel action will be taken,
+ * causing the action text input to be sent back to the client to be
+ * executed as a command. This is used to alert the server (i.e. user) of
+ * unusual circumstances and determine whether or not the server wants to
+ * proceed. An alert with no actions is a warning.
+ */
+void
+xim_alert (xim, text, ok_action, cancel_action)
+register XimDataPtr xim;
+char *text; /* message text */
+char *ok_action; /* command sent back to client for "ok" */
+char *cancel_action; /* command sent back to client for "cancel" */
+{
+ char msgbuf[SZ_LINE];
+ sprintf (msgbuf, "setValue {{%s} {%s} {%s}}", text,
+ ok_action ? ok_action : "", cancel_action ? cancel_action : "");
+ ObmDeliverMsg (xim->obm, "alert", msgbuf);
+}
+
+
+/*
+ * Internal Routines.
+ * -------------------
+ */
+
+/* XIM_FRAMEREGION -- Called when the value of the frameRegion UI parameter
+ * needs to be updated.
+ */
+static void
+xim_frameRegion (xim, fb)
+register XimDataPtr xim;
+register FrameBufPtr fb;
+{
+ int rop, src, dst;
+ int st, sx, sy, snx, sny;
+ int dt, dx, dy, dnx, dny;
+ char buf[SZ_LINE];
+
+ if (GtGetMapping (xim->gt, fb->zoommap, &rop,
+ &src, &st, &sx, &sy, &snx, &sny,
+ &dst, &dt, &dx, &dy, &dnx, &dny) == -1)
+ return;
+
+ /* args: frame x y width height */
+ sprintf (buf, "%d %d %d %d %d", fb->frameno, sx, sy, snx, sny);
+ xim_message (xim, "frameRegion", buf);
+}
+
+
+/* XIM_COLORTABLES -- Called when the "colortables" UI parameter needs to be
+ * updated, i.e., when some change to the list of colormaps has occurred.
+ */
+static void
+xim_colortables (xim)
+XimDataPtr xim;
+{
+ register char *ip, *op;
+ char buf[MAX_COLORMAPS*40];
+ int i;
+
+ for (i=0, op=buf; i < ncolormaps; i++) {
+ *op++ = '"';
+ for (ip = colormaps[i].name; *op = *ip++; op++)
+ ;
+ *op++ = '"';
+ *op++ = '\n';
+ }
+ *op++ = '\0';
+
+ xim_message (xim, "colortables", buf);
+}
+
+
+/* XIM_ENHANCEMENT -- Called when the "enhancement" UI parameter needs to
+ * be updated for a frame.
+ */
+xim_enhancement (xim, fb)
+register XimDataPtr xim;
+register FrameBufPtr fb;
+{
+ char buf[SZ_LINE];
+
+ sprintf (buf, "%d \"%s\" %0.3f %0.3f", fb->frameno,
+ colormaps[fb->colormap-1].name, fb->offset, fb->scale);
+ xim_message (xim, "enhancement", buf);
+
+
+ /* Force an update of the colorbar. On TrueColor visuals this
+ ** is required since the colormap doesn't automatically update
+ ** the display.
+ */
+ set_colorbar (xim, xim->cb);
+}
+
+
+/* GET_FBCONFIG -- Read the XIMTOOL startup file to get the set of possible
+ * frame buffer sizes.
+ *
+ * File format: configno nframes width height [extra fields]
+ * e.g., 1 2 512 512
+ * 2 2 800 800
+ * 3 1 1024 1024 # comment
+ */
+static void
+get_fbconfig (xim)
+register XimDataPtr xim;
+{
+ register char *ip;
+ register FILE *fp = NULL;
+ int config, nframes, width, height, i;
+ char lbuf[SZ_LINE+1], *fname;
+ static char *fb_paths[] = {
+ "/usr/local/lib/imtoolrc",
+ "/opt/local/lib/imtoolrc",
+ "/iraf/iraf/dev/imtoolrc",
+ "/local/lib/imtoolrc",
+ "/usr/iraf/dev/imtoolrc",
+ "/usr/local/iraf/dev/imtoolrc",
+ NULL};
+
+ /* Initialize the config table. */
+ xim->fb_configno = 1;
+ for (i=0; i < MAX_FBCONFIG; i++) {
+ xim->fb_config[i].nframes = 1;
+ xim->fb_config[i].width = DEF_FRAME_WIDTH;
+ xim->fb_config[i].height = DEF_FRAME_HEIGHT;
+ }
+
+ /* Now add in some defaults for commonly used sizes based on the
+ * standard IRAF imtoolrc file, we'll avoid any instrument specific
+ * configurations.
+ */
+ xim->fb_config[0].width = xim->fb_config[0].height = 512;
+ xim->fb_config[1].width = xim->fb_config[1].height = 800;
+ xim->fb_config[2].width = xim->fb_config[2].height = 1024;
+ xim->fb_config[3].width = xim->fb_config[3].height = 1600;
+ xim->fb_config[4].width = xim->fb_config[4].height = 2048;
+ xim->fb_config[5].width = xim->fb_config[5].height = 4096;
+
+ /* Attempt to open the config file. */
+ if ((fname=getenv(FBCONFIG_ENV1)) || (fname=getenv(FBCONFIG_ENV2)))
+ fp = fopen (fname, "r");
+ if (!fp && (fname = getenv ("HOME"))) {
+ sprintf (lbuf, "%s/%s", fname, FBCONFIG_1);
+ fp = fopen (fname = lbuf, "r");
+ if (fp) {
+ xim->imtoolrc = (char *) XtCalloc (SZ_LINE, sizeof(char));
+ strncpy (xim->imtoolrc, fname, strlen(fname));
+ }
+ }
+ if (!fp)
+ fp = fopen (fname = xim->imtoolrc, "r");
+ for (i=0; !fp && fb_paths[i]; i++) {
+ if ((fp = fopen (fname = fb_paths[i], "r"))) {
+ xim->imtoolrc = XtCalloc(strlen(fb_paths[i]+1),sizeof(char));
+ strncpy (xim->imtoolrc, fb_paths[i],strlen(fb_paths[i]));
+ break;
+ }
+ }
+ if (!fp) {
+ fprintf (stderr,
+ "Warning: No frame buffer configuration file found.\n");
+ return;
+ }
+
+
+ /* Scan the frame buffer configuration file.
+ */
+ while (fgets (lbuf, SZ_LINE, fp) != NULL) {
+ /* Skip comment lines and blank lines. */
+ for (ip=lbuf; *ip == ' ' || *ip == '\t'; ip++)
+ ;
+ if (*ip == '\n' || *ip == '#')
+ continue;
+ if (!isdigit (*ip))
+ continue;
+ switch (sscanf (ip, "%d%d%d%d", &config,&nframes,&width,&height)) {
+ case 4:
+ break; /* normal case */
+ case 3:
+ height = width; /* default to square format */
+ break;
+ default:
+ fprintf (stderr, "ximtool: bad config `%s'\n", ip);
+ continue;
+ }
+
+ nframes = max (1, nframes);
+ width = max (1, width);
+ height = max (1, height);
+
+ /* Since the frame buffer is stored in a memory pixrect
+ * (effectively), the line length should be an integral number
+ * of 16 bit words.
+ */
+ if (width & 1) {
+ fprintf (stderr, "imtool warning: fb config %d [%d-%dx%d] - ",
+ config, nframes, width, height);
+ fprintf (stderr, "frame width should be even, reset to %d\n",
+ --width);
+ }
+
+ config = max(1, min(MAX_FBCONFIG, config)) - 1;
+ xim->fb_config[config].nframes = nframes;
+ xim->fb_config[config].width = width;
+ xim->fb_config[config].height = height;
+ }
+
+ if (fp) fclose (fp);
+}
+
+
+/* XIM_GETANTIALIAS -- Convert a antialias algorithm expressed as a string
+ * into a Gterm rasterop code.
+ */
+xim_getAntialias (xim, s)
+XimDataPtr xim;
+char *s;
+{
+ register char *ip, *op;
+ char word[SZ_NAME];
+ int rop = 0;
+
+ for (ip=s; *ip && isspace(*ip); ip++)
+ ;
+
+ while (*ip) {
+ for (op=word; *ip && isalnum(*ip); ip++)
+ *op++ = isupper(*ip) ? tolower(*ip) : *ip;
+ *op++ = '\0';
+
+ if (strcmp (word, "nearest") == 0)
+ rop |= MF_NEAREST;
+ else if (strcmp (word, "bilinear") == 0)
+ rop |= MF_BILINEAR;
+ else if (strcmp (word, "area") == 0)
+ rop |= MF_AREA;
+ else if (strcmp (word, "blkavg") == 0)
+ rop |= MF_BLKAVG;
+ else if (strcmp (word, "boxcar") == 0)
+ rop |= MF_BOXCAR;
+ else if (strcmp (word, "lowpass") == 0)
+ rop |= MF_LOWPASS;
+ else if (strcmp (word, "gaussian") == 0)
+ rop |= MF_GAUSSIAN;
+
+ while (*ip && !isalnum(*ip))
+ ip++;
+ }
+
+ return (rop);
+}
+
+
+/* XIM_SETCOLORMAP -- Set up the RGB lookup tables used to map the windowed
+ * monochrome output of a frame buffer into the hardware colormap.
+ */
+xim_setColormap (function, dirs, m_red, m_green, m_blue, nelem)
+char *function; /* type of colormap */
+String *dirs;
+unsigned short *m_red;
+unsigned short *m_green;
+unsigned short *m_blue;
+int nelem;
+{
+ register int i, j;
+ register char *ip, *op;
+ static int seed = 0;
+ int v, vsat, step;
+ int knot[7];
+ float frac;
+
+
+ if (DBG_RASTER)
+ fprintf (stderr,
+ "xim_setColormap: name='%s' nelem=%d\n", function, nelem);
+
+ vsat = MAX_COLORS - 1;
+ step = MAX_COLORS / 6;
+ for (i=0; i < 7; i++)
+ knot[i] = i * step;
+ knot[6] = vsat;
+
+ if (dirs) {
+ /* Load the colormap from a file. */
+ char fname[SZ_FNAME];
+ char lbuf[SZ_LINE];
+ TripletPtr p;
+ Lut user;
+ FILE *fp;
+
+ /* Get full file pathname. If the same file is found in multiple
+ * directories the first version found is used.
+ */
+ strcpy (fname, function);
+ for (i=0; function[0] != '/' && dirs[i]; i++) {
+ for (ip=dirs[i], op=fname; *ip; )
+ *op++ = *ip++;
+ if (op > fname && *(op-1) != '/')
+ *op++ = '/';
+ for (ip=function; *ip; )
+ *op++ = *ip++;
+ *op = '\0';
+ if (access (fname, 0) == 0)
+ break;
+ }
+
+ /* Try to open the file. */
+ if ((fp = fopen (fname, "r")) == NULL) {
+ fprintf (stderr, "cannot open %s\n", fname);
+ return (ERR);
+ }
+
+ /* Scan the file. The user colormap may have any number of
+ * RGB pairs up to a maximum of MAX_COLORS (256).
+ */
+ user.lutlen = 0;
+ while (fgets (lbuf, SZ_LINE, fp)) {
+ char *np, *next;
+ float v[3];
+
+ /* Ignore blank lines and comment lines. */
+ for (ip=lbuf; isspace(*ip); ip++)
+ ;
+ if (*ip == '\0' || *ip == '#')
+ continue;
+ if (user.lutlen+1 >= MAX_COLORS)
+ break;
+
+ /* Get an RGB entry. */
+ p = &user.hue[user.lutlen++];
+ for (i=0, np=ip; i < 3; i++, np=next) {
+ v[i] = strtod (np, &next);
+ if (next == np) {
+ fclose (fp);
+ return (ERR);
+ }
+ }
+
+ p->red = v[0];
+ p->green = v[1];
+ p->blue = v[2];
+ }
+
+ fclose (fp);
+ if (user.lutlen <= 0)
+ return (ERR);
+
+ /* Scale the user colormap to fit the NELEMS colors required
+ * for the output colormap. nelem and lutlen must be the same
+ * to disable scaling and preserve the exact colortable values.
+ */
+ for (i=0; i < nelem; i++) {
+ float x, w1, w2;
+ float r, g, b;
+
+ x = (float)i / (float)(nelem - 1) * (user.lutlen - 1);
+ j = max(0, min(user.lutlen-1, (int)x));
+ w1 = 1.0 - (x - j);
+ w2 = 1.0 - w1;
+
+ r = user.hue[j].red;
+ g = user.hue[j].green;
+ b = user.hue[j].blue;
+
+ if (w2 > 0.0001 && j+1 < user.lutlen) {
+ r = r * w1 + user.hue[j+1].red * w2;
+ g = g * w1 + user.hue[j+1].green * w2;
+ b = b * w1 + user.hue[j+1].blue * w2;
+ }
+
+ m_red[i] = r * vsat;
+ m_green[i] = g * vsat;
+ m_blue[i] = b * vsat;
+ }
+
+ } else if (strncmp (function, "Grayscale", 9) == 0) {
+ for (i=0; i < nelem; i++)
+ m_red[i] = m_green[i] = m_blue[i] =
+ (float)i / (float)(nelem - 1) * vsat;
+
+ } else if (strncmp (function, "HSV", 3) == 0) {
+ /* HSV: hue varies uniformly from 270 to 360 and back to 270.
+ * Value varies from zero to one using a cube root relation
+ * which causes the value to approach 1.0 rapidly away from zero.
+ * Saturation is zero near the endpoints, causing the curve
+ * to range from black to white at the endpoints, but ranges
+ * to 1.0 at the halfway point, causing nearly saturated colors
+ * in the middle of the range.
+ */
+ for (i=0; i < nelem; i++) {
+ float h, s, v, r, g, b;
+ double pow(), sin();
+
+ frac = 1.0 - ((float)i / (float)(nelem - 1));
+ h = frac * 360.0 + 270.0;
+ s = abs (sin (frac * 3.1416));
+ v = pow ((1.0 - frac), (1.0 / 3.0));
+
+ hsv_to_rgb (h, s, v, &r, &g, &b);
+ m_red[i] = r * vsat;
+ m_green[i] = g * vsat;
+ m_blue[i] = b * vsat;
+ }
+
+ } else if (strncmp (function, "Heat", 4) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = heat.hue[j].red * vsat;
+ m_green[i] = heat.hue[j].green * vsat;
+ m_blue[i] = heat.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Ramp", 4) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = heat.hue[j].red * (frac * (vsat * 2));
+ m_green[i] = heat.hue[j].green * (frac * (vsat * 2));
+ m_blue[i] = heat.hue[j].blue * (frac * (vsat * 2));
+ }
+
+ } else if (strncmp (function, "AIPS0", 5) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = aips0.hue[j].red * vsat;
+ m_green[i] = aips0.hue[j].green * vsat;
+ m_blue[i] = aips0.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Color", 5) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = color.hue[j].red * vsat;
+ m_green[i] = color.hue[j].green * vsat;
+ m_blue[i] = color.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Staircase", 9) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = staircase.hue[j].red * vsat;
+ m_green[i] = staircase.hue[j].green * vsat;
+ m_blue[i] = staircase.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Standard", 8) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = standard.hue[j].red * vsat;
+ m_green[i] = standard.hue[j].green * vsat;
+ m_blue[i] = standard.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Red", 3) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = red.hue[j].red * vsat;
+ m_green[i] = red.hue[j].green * vsat;
+ m_blue[i] = red.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Green", 5) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = green.hue[j].red * vsat;
+ m_green[i] = green.hue[j].green * vsat;
+ m_blue[i] = green.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Blue", 4) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = blue.hue[j].red * vsat;
+ m_green[i] = blue.hue[j].green * vsat;
+ m_blue[i] = blue.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Halley", 6) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = halley.hue[j].red * vsat;
+ m_green[i] = halley.hue[j].green * vsat;
+ m_blue[i] = halley.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Rainbow1", 8) == 0) {
+ for (i=0; i < nelem; i++)
+ m_red[i] = m_green[i] = m_blue[i] = 0;
+
+ for (i=knot[0]; i <= knot[1]; i++)
+ m_blue[i] = vsat * (i - knot[0]) / step;
+ for (i=knot[1]; i <= knot[2]; i++)
+ m_blue[i] = vsat;
+ for (i=knot[2]; i <= knot[3]; i++)
+ m_blue[i] = vsat * (knot[3] - i) / step;
+
+ for (i=knot[1]; i <= knot[2]; i++)
+ m_green[i] = vsat * (i - knot[1]) / step;
+ for (i=knot[2]; i <= knot[4]; i++)
+ m_green[i] = vsat;
+ for (i=knot[4]; i <= knot[5]; i++)
+ m_green[i] = vsat * (knot[5] - i) / step;
+
+ for (i=knot[3]; i <= knot[4]; i++)
+ m_red[i] = vsat * (i - knot[3]) / step;
+ for (i=knot[4]; i <= knot[6]; i++)
+ m_red[i] = vsat;
+
+ for (i=knot[5]; i <= knot[6]; i++) {
+ if ((v = vsat * (i - knot[5]) / step) > vsat)
+ v = vsat;
+ m_green[i] = m_blue[i] = v;
+ }
+
+ } else if (strncmp (function, "Rainbow2", 8) == 0) {
+ for (i=0; i < nelem; i++) {
+ frac = (float)i / (float)(nelem - 1);
+ j = frac * (heat.lutlen - 1);
+ m_red[i] = rainbow.hue[j].red * vsat;
+ m_green[i] = rainbow.hue[j].green * vsat;
+ m_blue[i] = rainbow.hue[j].blue * vsat;
+ }
+
+ } else if (strncmp (function, "Random16", 8) == 0) {
+ int red, green, blue;
+
+ if (!seed)
+ seed = time(0);
+ srand (seed++);
+
+ for (i=0; i < nelem; ) {
+ red = ((rand() >> 4) % vsat);
+ green = ((rand() >> 4) % vsat);
+ blue = ((rand() >> 4) % vsat);
+
+ for (j=0; i < nelem && j < nelem/16; j++, i++) {
+ m_red[i] = red;
+ m_green[i] = green;
+ m_blue[i] = blue;
+ }
+ }
+
+ } else if (strncmp (function, "Random8", 7) == 0) {
+ int red, green, blue;
+
+ if (!seed)
+ seed = time(0);
+ srand (seed++);
+
+ for (i=0; i < nelem; ) {
+ red = ((rand() >> 4) % vsat);
+ green = ((rand() >> 4) % vsat);
+ blue = ((rand() >> 4) % vsat);
+
+ for (j=0; i < nelem && j < nelem/8; j++, i++) {
+ m_red[i] = red;
+ m_green[i] = green;
+ m_blue[i] = blue;
+ }
+ }
+
+ } else if (strncmp (function, "Random", 6) == 0) {
+ if (!seed)
+ seed = time(0);
+ srand (seed++);
+ for (i=0; i < nelem; i++) {
+ m_red[i] = ((rand() >> 4) % vsat);
+ m_green[i] = ((rand() >> 4) % vsat);
+ m_blue[i] = ((rand() >> 4) % vsat);
+ }
+ }
+
+ /* Scale colormap values to 16 bits. */
+ for (i=0; i < nelem; i++) {
+ m_red[i] <<= 8;
+ m_green[i] <<= 8;
+ m_blue[i] <<= 8;
+ }
+
+ return (OK);
+}
+
+
+hsv_to_rgb (h, s, v, r, g, b)
+float h, s, v;
+float *r, *g, *b;
+{
+ register int i;
+ float f, p, q, t;
+
+ while (h >= 360.0)
+ h -= 360.0;
+
+ h /= 60.0;
+ i = (int) h;
+ f = h - i;
+ p = v * (1 - s);
+ q = v * (1 - s*f);
+ t = v * (1 - s * (1.0 - f));
+
+ switch (i) {
+ case 0:
+ *r = v; *g = t; *b = p;
+ break;
+ case 1:
+ *r = q; *g = v; *b = p;
+ break;
+ case 2:
+ *r = p; *g = v; *b = t;
+ break;
+ case 3:
+ *r = p; *g = q; *b = v;
+ break;
+ case 4:
+ *r = t; *g = p; *b = v;
+ break;
+ case 5:
+ *r = v; *g = p; *b = q;
+ break;
+ }
+}
+
+
+/* GET_DIRFILE -- Get the next file name from an open directory file.
+ */
+static int
+get_dirfile (dir, outstr, maxch)
+DIR *dir;
+char *outstr;
+int maxch;
+{
+ register int n;
+ register struct dirent *dp;
+ register char *ip, *op;
+ int status;
+
+ for (dp = readdir(dir); dp != NULL; dp = readdir(dir))
+ if (dp->d_ino != 0) {
+ n = strlen (dp->d_name);
+ status = n;
+ for (ip=dp->d_name, op=outstr; --n >= 0; )
+ *op++ = *ip++;
+ *op = EOS;
+ return (status);
+ }
+
+ return (EOF);
+}
+
+
+/* LOAD_TESTPATTERN -- Load a test pattern into the given frame.
+ */
+static void
+load_testpattern (xim, frame, type)
+XimDataPtr xim;
+int frame;
+int type; /* not used */
+{
+ register FrameBufPtr fb = &xim->frames[frame];
+ register int i, j, ncolors;
+ int rtype, width, height, depth;
+ unsigned char *data;
+
+ if (GtQueryRaster (xim->gt, fb->raster,
+ &rtype, &width, &height, &depth) == 0)
+ return;
+
+ data = (unsigned char *) XtMalloc (width);
+ if (data == (unsigned char *)NULL)
+ return;
+
+ ncolors = xim->ncolors;
+ for (j=0; j < height; j++) {
+ for (i=0; i < width; i++)
+ data[i] = (((i + j) * 10) % ncolors);
+ GtWritePixels (xim->gt, fb->raster, data, 8, 0, j, width, 1);
+ }
+
+ XtFree ((char *)data);
+}
+
+
+/* SET_COLORBAR -- Write the colorbar pixels.
+ */
+static void
+set_colorbar (xim, w)
+XimDataPtr xim;
+Widget w;
+{
+ register int i;
+ static int initialized = 0;
+ int first, ngray, rgb_len, rtype, width, height, depth;
+ unsigned short m_red[MAX_COLORS];
+ unsigned short m_green[MAX_COLORS];
+ unsigned short m_blue[MAX_COLORS];
+ unsigned char *data;
+
+
+ if (!w)
+ return;
+
+ if (DBG_RASTER)
+ fprintf (stderr, "SETTING COLORBAR PIXELS...... init = %d\n",
+ initialized);
+
+ if (GtQueryRaster (w, 0, &rtype, &width, &height, &depth) == 0)
+ return;
+
+ data = (unsigned char *) XtMalloc (width * height);
+ for (i=0; i < width; i++)
+ data[i] = ((float)i / (float)(width - 1) * (xim->ncolors - 1));
+
+ for (i=1; i < height; i++)
+ memmove (data + i * width, data, width);
+
+ if (!initialized) {
+ xim_iiscolormap (w, m_red,m_green,m_blue, &first, &ngray, &rgb_len);
+ GtWriteColormap (w, 0, first, rgb_len, m_red, m_green, m_blue);
+
+ xim_setColormap ("Grayscale", NULL, m_red, m_green, m_blue, ngray);
+ GtWriteColormap (w, 0, first, ngray, m_red, m_green, m_blue);
+
+ xim->ncolors = ngray;
+ initialized++;
+ }
+
+ GtWritePixels (w, 0, data, 8, 0, 0, width, height);
+ XtFree ((char *)data);
+
+ if (DBG_RASTER)
+ fprintf (stderr, "SETTING COLORBAR PIXELS...... DONE\n");
+}
+
+
+/* SET_NFRAMES -- Called when the number of frame buffers changes.
+ */
+static void
+set_nframes (xim, nframes)
+XimDataPtr xim;
+int nframes;
+{
+ xim->nframes = nframes;
+ xim_msgi (xim, "nframes", nframes);
+}
diff --git a/vendor/x11iraf/ximtool/save.c b/vendor/x11iraf/ximtool/save.c
new file mode 100644
index 00000000..51d5b7c4
--- /dev/null
+++ b/vendor/x11iraf/ximtool/save.c
@@ -0,0 +1,377 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+
+#include "ximtool.h"
+
+/*
+ * SAVE.C -- Routines for saving image rasters to disk files.
+ *
+ * xim_initSave (xim)
+ * xim_saveClose (xim)
+ *
+ * status = xim_saveFile (xim, fname, format, x0,y0, nx,ny)
+ *
+ * xims_rename (xim, old, new) # save alert action
+ * xims_cancel (xim, fname) # save alert action
+ *
+ * xim_saveFile saves the current display frame to the named file using
+ * the format specified. If nx or ny is zero the entire frame is saved,
+ * otherwise the indicated region is saved.
+ */
+
+static int xims_write();
+static void savestat(), savetext();
+
+
+/* XIM_INITSAVE -- Initialize the file save structure.
+ */
+void
+xim_initSave (xim)
+register XimDataPtr xim;
+{
+ register fileSavePtr fsp;
+ extern char *getcwd(), *getenv();
+ char buf[SZ_LINE];
+
+ if (!(xim->fsp = fsp = (fileSavePtr) calloc (1, sizeof (fileSave))))
+ return;
+
+ fsp->seqno = 0;
+ fsp->format = XIM_RAS;
+ fsp->colorType = XIM_PSEUDOCOLOR;
+ strcpy (fsp->fname, "frame%d.ras");
+
+ /* Now update the GUI. */
+ sprintf (buf, "format ras");
+ xim_message (xim, "saveOptions", buf);
+ sprintf (buf, "color pseudocolor");
+ xim_message (xim, "saveOptions", buf);
+ sprintf (buf, "fname frame%%d.ras");
+ xim_message (xim, "saveOptions", buf);
+}
+
+
+/* XIM_SAVECLOSE -- Close the save structure.
+ */
+void
+xim_saveClose (xim)
+register XimDataPtr xim;
+{
+ register fileSavePtr fsp = xim->fsp;
+
+ if (fsp)
+ free ((char *) fsp);
+}
+
+
+/* XIM_SAVEFILE - Save the current display frame to a disk file. If nx or
+ * ny is zero the entire frame is saved, otherwise the given region is saved.
+ */
+int
+xim_saveFile (xim, template, fileformat, x0,y0, nx,ny)
+register XimDataPtr xim;
+char *template; /* file name or printf format */
+int fileformat; /* output raster file format/type */
+int x0, y0, nx, ny; /* region of display to be saved */
+{
+ register int i, j;
+ register fileSavePtr fsp = xim->fsp;
+ int w, h, ncols;
+ char text[SZ_LINE], fname[SZ_FNAME];
+ unsigned char r[256], g[256], b[256];
+ unsigned char *pixels = NULL;
+ int status = -1;
+ static int debug=0;
+ extern int errno;
+ FILE *fp;
+ char *mktemp();
+
+ /* Generate output file name. */
+ sprintf (fname, template, fsp->seqno++);
+
+ /* Get the display pixels and colormap. The routine allocates a
+ * pointer to the pixels we'll need to free when we're done.
+ */
+ pixels = xim_readDisplay (xim, x0,y0,nx,ny, &w,&h, r,g,b, &ncols);
+ if (!pixels)
+ goto done;
+
+ if (debug) {
+ register int cpix, val;
+ fprintf (stderr, "saveFile: %s -> %dx%d at %d colors\n",
+ fname, w, h, ncols);
+ cpix = (w/2+(h/2)*w);
+ val = pixels[cpix];
+ fprintf (stderr, "Center pixel %d: val=%d (%d,%d,%d)\n",cpix,
+ val,r[val],g[val],b[val]);
+ fprintf (stderr, "User Colormap\n");
+ for (i=0; i < 256; ) {
+ for (j=1; j < 4 && i < 256; j++)
+ fprintf (stderr, " %3d(%3d,%3d,%3d)",i,r[i],g[i],b[i++]);
+ fprintf (stderr, "\n");
+ }
+ }
+
+ fsp->w = w;
+ fsp->h = h;
+ fsp->d = 8;
+
+ if (access (fname, F_OK) < 0) {
+ if (fp = fopen (fname, "w")) {
+ struct stat fs;
+
+ xims_write (xim, fp, fileformat, pixels, w,h,8, r,g,b, 256);
+ fclose (fp);
+ stat (fname, &fs);
+
+ savetext (xim, fsp->seqno, fname, fileformat, (int)fs.st_size,
+ w, h, 8);
+ sprintf (text, "Wrote %d bytes to %s", (int)fs.st_size, fname);
+ savestat (xim, text);
+
+ } else {
+ sprintf (text, "Error %d\nCannot open file %s", errno, fname);
+ xim_alert (xim, text, NULL, NULL);
+ fsp->seqno--;
+ }
+
+ } else {
+ /* Named file already exists. Write a temporary file and
+ * post an alert to ask the user if they want to overwrite
+ * the existing file.
+ */
+ char ok_action[SZ_LINE];
+ char cancel_action[SZ_LINE];
+ char tmpfile[SZ_FNAME];
+ char *ip, *op, *last;
+
+ /* Write to a temporary file in the same directory as fname. */
+ for (ip=fname, op=tmpfile, last=tmpfile; *op = *ip++; op++)
+ if (*op == '/')
+ last = op + 1;
+ *last = '\0';
+ strcat (tmpfile, "ximsXXXXXX");
+ if (mktemp(tmpfile) == (char *)NULL)
+ goto done;
+
+ if (!(fp = fopen (tmpfile, "w"))) {
+ sprintf (text, "Cannot open temporary file:\n%s", tmpfile);
+ xim_alert (xim, text, NULL, NULL);
+ goto done;
+ }
+ xims_write (xim, fp, fileformat, pixels, w,h,8, r,g,b, 256);
+ fclose (fp);
+
+ sprintf (text, "%s\n%s\n%s",
+ "The following file already exists:", fname,
+ "Do you want to overwrite this file?");
+
+ sprintf (ok_action, "save rename %s %s", tmpfile, fname);
+ sprintf (cancel_action, "save cancel %s", tmpfile);
+
+ xim_alert (xim, text, ok_action, cancel_action);
+ }
+
+ status = 0;
+done:
+ if (pixels)
+ free ((char *) pixels);
+ return (status);
+}
+
+
+/* XIMS_WRITE -- Write a file in the indicated format.
+ */
+static int
+xims_write (xim, fp, fileformat, pixels, w,h,d, r,g,b, ncolors)
+register XimDataPtr xim;
+FILE *fp;
+int fileformat;
+unsigned char *pixels;
+int w, h, d;
+unsigned char *r, *g, *b;
+int ncolors;
+{
+ register fileSavePtr fsp = xim->fsp;
+ register PSImagePtr psim = xim->psim;
+ register FrameBufPtr fb = xim->df_p;
+ register ColorMapPtr cm = &colormaps[fb->colormap-1];
+ register int sv_annotate = psim->annotate;
+ register int sv_colorClass = psim->colorClass;
+ int gray=0, status=0;
+
+
+ switch (fileformat) {
+ case XIM_RAS:
+ /* Write Sun Rasterfile. We don't support 24-bit yet but can
+ * add it later.
+ */
+ savestat (xim, "Generating Sun rasterfile...");
+ if (xim->fsp->colorType == XIM_GRAYSCALE)
+ status = writeSunRas (fp, pixels, 8, w,h, r,g,b, ncolors, 1);
+ else
+ status = writeSunRas (fp, pixels, 8, w,h, r,g,b, ncolors, 2);
+
+ break;
+
+ case XIM_FITS:
+ /* Write a simple FITS file.
+ */
+ savestat (xim, "Generating FITS file...");
+ status = writeFITS (fp, pixels, w, h, r, g, b, ncolors);
+ break;
+
+ case XIM_GIF:
+ /* Write a GIF file.
+ */
+ savestat (xim, "Generating GIF file...");
+ gray = (xim->fsp->colorType == XIM_GRAYSCALE);
+ status = writeGIF (fp, pixels, w, h, r, g, b, ncolors, gray);
+ break;
+
+ case XIM_TIFF:
+ /* Write a TIFF file.
+ */
+ savestat (xim, "Generating TIFF file...");
+ gray = (xim->fsp->colorType == XIM_GRAYSCALE);
+ status = writeTIFF (fp, pixels, w, h, ncolors, gray, r, g, b);
+ break;
+
+ case XIM_EPS:
+ /* Write an EPS file.
+ */
+ savestat (xim, "Generating postscript output...");
+
+ /* Temporarily reset the values. */
+ psim->annotate = 0;
+ psim->colorClass = xim->fsp->colorType;
+
+ /* Set up some of the EPS options print to the file. */
+ eps_setCmap (psim, r, g, b, ncolors);
+ eps_setTransform (psim, fb->ctran.z1, fb->ctran.z2, fb->ctran.zt,
+ fb->offset, fb->scale, cm->name);
+ eps_print (psim, fp, pixels, w, h, 8, 0);
+
+ /* Restore the saved values. */
+ psim->annotate = sv_annotate;
+ psim->colorClass = sv_colorClass;
+ break;
+
+ case XIM_JPEG:
+ case XIM_X11:
+ case XIM_RAW:
+ default:
+ /* We don't know what this is so give up and notify the GUI. */
+ savestat (xim, "Save file format not implemented.");
+ status = -1;
+ break;
+ }
+
+ return (status);
+}
+
+
+/* The following implement the ok and cancel actions posted by the alert in
+ * xim_save above.
+ */
+void
+xims_rename (xim, old, new)
+register XimDataPtr xim;
+char *old, *new;
+{
+ register fileSavePtr fsp = xim->fsp;
+ char text[SZ_LINE];
+ struct stat fs;
+
+ unlink (new);
+ if (rename(old,new) != 0 || stat(new,&fs) != 0) {
+ sprintf (text, "Could not write file %s", new);
+ savestat (xim, text);
+ } else {
+ stat (new, &fs);
+ savetext (xim, fsp->seqno, new, fsp->format, (int)fs.st_size,
+ fsp->w, fsp->h, fsp->d);
+ sprintf (text, "Wrote %d bytes to %s", (int)fs.st_size, new);
+ savestat (xim, text);
+ }
+}
+
+void
+xims_cancel (xim, fname)
+register XimDataPtr xim;
+char *fname;
+{
+ savestat (xim, "Save cancelled.");
+ unlink (fname);
+}
+
+
+/* SAVESTAT -- Internal routine for save status messages.
+ */
+static void
+savestat (xim, message)
+register XimDataPtr xim;
+char *message;
+{
+ char text[SZ_LINE];
+ sprintf (text, "status {%s}", message);
+ xim_message (xim, "saveOptions", text);
+}
+
+
+/* SAVETEXT -- Write something useful the text box in the save panel.
+ */
+static void
+savetext (xim, seqno, fullname, fileformat, filesize, w,h,d)
+register XimDataPtr xim;
+int seqno;
+char *fullname;
+int fileformat;
+int filesize;
+int w, h, d;
+{
+ register char *ip;
+ char *fmt, *fname, text[SZ_LINE];
+
+ for (ip=fname=fullname; *ip; ip++)
+ if (*ip == '/')
+ fname = ip + 1;
+
+ switch (fileformat) {
+ case XIM_RAS:
+ fmt = "Sun rasterfile";
+ break;
+ case XIM_GIF:
+ fmt = "GIF file";
+ break;
+ case XIM_TIFF:
+ fmt = "TIFF file";
+ break;
+ case XIM_JPEG:
+ fmt = "JPEG file";
+ break;
+ case XIM_X11:
+ fmt = "X11 window dump";
+ break;
+ case XIM_FITS:
+ fmt = "FITS file";
+ break;
+ case XIM_RAW:
+ fmt = "Raw bytes";
+ break;
+ case XIM_EPS:
+ fmt = "EPS file";
+ break;
+ default:
+ fmt = "unknown format";
+ break;
+ }
+
+ sprintf (text, "text {-- Frame %d --\n%s\n%s\n%d bytes\n%dx%dx%d}",
+ seqno-1, fname, fmt, filesize, w, h, d);
+ xim_message (xim, "saveOptions", text);
+}
diff --git a/vendor/x11iraf/ximtool/tiffio.c b/vendor/x11iraf/ximtool/tiffio.c
new file mode 100644
index 00000000..1f258338
--- /dev/null
+++ b/vendor/x11iraf/ximtool/tiffio.c
@@ -0,0 +1,197 @@
+/*
+ * TIFFIO.C -- Routines to save a simple TIFF 6.0 format file. Loading is
+ * not supported due to the complexity of the format.
+ *
+ * writeTIFF (fa, data, w, h, ncolors, gray, r, g, b)
+ */
+
+#include <stdio.h>
+#ifdef ULTRIX
+#include <sys/types.h>
+#endif
+#include <unistd.h>
+
+
+/* TIFF Tag description
+ */
+typedef struct {
+ short tag;
+ short type;
+ int count;
+ int offset;
+} TiffTag;
+
+typedef struct {
+ unsigned short red[256];
+ unsigned short green[256];
+ unsigned short blue[256];
+} Colors;
+
+static char *h_order = "MM\0*";
+static char *l_order = "II*\0";
+
+/* Tag Definitions */
+#define IMAGEWIDTH 256
+#define IMAGELENGTH 257
+#define BITSPERSAMPLE 258
+#define COMPRESSION 259
+#define PHOTOMETRIC 262
+#define STRIPOFFSETS 273
+#define ROWSPERSTRIP 278
+#define STRIPBYTECOUNT 279
+#define XRESOLUTION 282
+#define YRESOLUTION 283
+#define RESOLUTIONUNIT 296
+#define COLORMAP 320
+
+#define MAXCOLORS 256
+
+/* MONO returns total intensity of r,g,b components */
+#define MONO(rd,gn,bl) (((rd)*11 + (gn)*16 + (bl)*5) >> 5) /*.33R+ .5G+ .17B*/
+
+
+
+/* writeTIFF -- Write a TIFF 6.0 image.
+*/
+
+writeTIFF (fa, data, w, h, ncolors, gray, r, g, b)
+FILE *fa; /* output file descriptor */
+unsigned char *data; /* pixel data */
+int w, h; /* image dimensions */
+int ncolors; /* number of colors */
+int gray; /* grayscale? */
+unsigned char *r, *g, *b; /* colormap */
+{
+ int i,size,offset;
+ short dirs = 12;
+ TiffTag *tt;
+ unsigned char *dta, r1, b1, g1;
+ unsigned short *rr, *gg, *bb;
+ int bitspersample=8, compression=1, photo=3, resolution=2;
+ int width = w, height = h;
+
+ tt = (TiffTag *) calloc (dirs, sizeof(TiffTag));
+ size = w * h;
+ dta = (unsigned char *) calloc (size+(size%4), sizeof(unsigned char));
+ rr = (unsigned short *) calloc (MAXCOLORS, sizeof(unsigned short));
+ gg = (unsigned short *) calloc (MAXCOLORS, sizeof(unsigned short));
+ bb = (unsigned short *) calloc (MAXCOLORS, sizeof(unsigned short));
+ memcpy(dta, data, size * sizeof(unsigned char));
+
+ if (is_swapped()) {
+ fwrite (l_order, 4, 1, fa);
+ } else {
+ fwrite (h_order, 4, 1, fa);
+ width = w << 16;
+ height = h << 16;
+ bitspersample <<= 16;
+ compression <<= 16;
+ photo <<= 16;
+ resolution <<= 16;
+ }
+
+ offset = 8;
+ fwrite (&offset, 4, 1, fa);
+ fwrite (&dirs, 2, 1, fa); /* number of IFD's */
+
+ /* Create TIFF IFD's.
+ */
+ create_TIFFtag (tt+0, IMAGEWIDTH, 3, 1, (width));
+ create_TIFFtag (tt+1, IMAGELENGTH, 3, 1, (height));
+ create_TIFFtag (tt+2, BITSPERSAMPLE, 3, 1, (bitspersample));
+ create_TIFFtag (tt+3, COMPRESSION, 3, 1, (compression));
+ create_TIFFtag (tt+4, PHOTOMETRIC, 3, 1, (photo));
+ create_TIFFtag (tt+5, STRIPOFFSETS, 4, 1, 10+(dirs*12)+4);
+ create_TIFFtag (tt+6, ROWSPERSTRIP, 3, 1, (width));
+ create_TIFFtag (tt+7, STRIPBYTECOUNT, 4, 1, size);
+ create_TIFFtag (tt+8, XRESOLUTION, 5, 1,
+ (tt+5)->offset+(2*768)+(size+(size%4)));
+ create_TIFFtag (tt+9, YRESOLUTION, 5, 1,
+ (tt+5)->offset+(2*768)+(size+(size%4))+8);
+ create_TIFFtag (tt+10, RESOLUTIONUNIT, 3, 1, (resolution));
+ create_TIFFtag (tt+11, COLORMAP, 3, 768,
+ (tt+5)->offset+(size+(size%4)));
+
+ /* Write header info and tags.
+ */
+ for (i = 0 ; i < dirs ; i++) {
+ fwrite ((tt+i), 12, 1, fa);
+ }
+
+ /* Write a 4-byte NULL -- this tells the TIFF reader that there
+ * are no more IFD's.
+ */
+ i = 0;
+ fwrite (&i, 4, 1, fa);
+
+ /* Write data.
+ */
+ fwrite (dta, size+(size%4), 1, fa);
+
+ /* Create unsigned short colormap.
+ */
+ for (i = 0 ; i < ncolors ; i++) {
+ if (gray) {
+ r1 = (unsigned char) MONO (*(r+i),*(g+i),*(b+i));
+ g1 = (unsigned char) MONO (*(r+i),*(g+i),*(b+i));
+ b1 = (unsigned char) MONO (*(r+i),*(g+i),*(b+i));
+ *(r+i) = r1;
+ *(g+i) = g1;
+ *(b+i) = b1;
+ }
+ *(rr+i) = (unsigned short) *(r+i) | ((unsigned short) *(r+i) << 8);
+ *(gg+i) = (unsigned short) *(g+i) | ((unsigned short) *(g+i) << 8);
+ *(bb+i) = (unsigned short) *(b+i) | ((unsigned short) *(b+i) << 8);
+ }
+
+ /* Fill in the rest of the colortable with 0xffff's.
+ */
+ for (i = ncolors ; i < MAXCOLORS ; i++) {
+ *(rr+i) = (unsigned short) 0xffff;
+ *(gg+i) = (unsigned short) 0xffff;
+ *(bb+i) = (unsigned short) 0xffff;
+ }
+
+ /* Write out colormap.
+ */
+ fwrite (rr, MAXCOLORS*sizeof(unsigned short), 1, fa);
+ fwrite (gg, MAXCOLORS*sizeof(unsigned short), 1, fa);
+ fwrite (bb, MAXCOLORS*sizeof(unsigned short), 1, fa);
+
+ /* Write the XResolution.
+ */
+ i = 1;
+ fwrite (&i, sizeof(int), 1, fa);
+ fwrite (&i, sizeof(int), 1, fa);
+
+ /* Write the YResolution.
+ */
+ i = 1;
+ fwrite (&i, sizeof(int), 1, fa);
+ fwrite (&i, sizeof(int), 1, fa);
+
+ /* Free memory.
+ */
+ free (tt);
+ free (dta);
+ free (rr);
+ free (gg);
+ free (bb);
+}
+
+
+/* create_TIFFtag - Create a TIFF IFD (Image File Directory).
+*/
+
+create_TIFFtag (tag, desig, type, count, offset)
+TiffTag *tag; /* tag to create */
+short desig; /* tag definition */
+short type; /* scalar type of data items */
+int count; /* no. of items in tag data */
+int offset; /* byte offset to data items */
+{
+ tag->tag = desig;
+ tag->type = type;
+ tag->count = count;
+ tag->offset = offset;
+}
diff --git a/vendor/x11iraf/ximtool/util.c b/vendor/x11iraf/ximtool/util.c
new file mode 100644
index 00000000..2ac6331b
--- /dev/null
+++ b/vendor/x11iraf/ximtool/util.c
@@ -0,0 +1,251 @@
+/*
+ * UTIL.C -- Utility routines for the package.
+ *
+ * bswap2 (a, b, nbytes)
+ * bswap4 (a, aoff, b, boff, nbytes)
+ * bswap8 (a, aoff, b, boff, nbytes)
+ * flip (buffer, nx, ny)
+ * is_swapped ()
+ * min_max (a, npts, bitpix, min, max)
+ * strpak (in, out, len)
+ *
+ *
+ */
+
+
+#include <stdio.h>
+#ifdef ULTRIX
+#include <sys/types.h>
+#endif
+#include <unistd.h>
+
+#ifndef AIXV3
+#ifndef OSF1
+typedef unsigned char uchar;
+#endif
+#endif
+
+
+
+/* BSWAP2 - Move bytes from array "a" to array "b", swapping successive
+ * pairs of bytes. The two arrays may be the same but may not be offset
+ * and overlapping.
+ */
+bswap2 (a, b, nbytes)
+char *a, *b; /* input array */
+int nbytes; /* number of bytes to swap */
+{
+ register char *ip=a, *op=b, *otop;
+ register unsigned temp;
+
+ /* Swap successive pairs of bytes.
+ */
+ for (otop = op + (nbytes & ~1); op < otop; ) {
+ temp = *ip++;
+ *op++ = *ip++;
+ *op++ = temp;
+ }
+
+ /* If there is an odd byte left, move it to the output array.
+ */
+ if (nbytes & 1)
+ *op = *ip;
+}
+
+
+/* BSWAP4 - Move bytes from array "a" to array "b", swapping the four bytes
+ * in each successive 4 byte group, i.e., 12345678 becomes 43218765.
+ * The input and output arrays may be the same but may not partially overlap.
+ */
+bswap4 (a, aoff, b, boff, nbytes)
+char *a; /* input array */
+int aoff; /* first byte in input array */
+char *b; /* output array */
+int boff; /* first byte in output array */
+int nbytes; /* number of bytes to swap */
+{
+ register char *ip, *op, *tp;
+ register int n;
+ static char temp[4];
+
+ tp = temp;
+ ip = (char *)a + aoff - 1;
+ op = (char *)b + boff - 1;
+
+ /* Swap successive four byte groups.
+ */
+ for (n = nbytes >> 2; --n >= 0; ) {
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ }
+
+ /* If there are any odd bytes left, move them to the output array.
+ * Do not bother to swap as it is unclear how to swap a partial
+ * group, and really incorrect if the data is not modulus 4.
+ */
+ for (n = nbytes & 03; --n >= 0; )
+ *op++ = *ip++;
+}
+
+
+/* BSWAP8 - Move bytes from array "a" to array "b", swapping the eight bytes
+ * in each successive 8 byte group, i.e., 12345678 becomes 87654321.
+ * The input and output arrays may be the same but may not partially overlap.
+ */
+bswap8 (a, aoff, b, boff, nbytes)
+char *a; /* input array */
+int aoff; /* first byte in input array */
+char *b; /* output array */
+int boff; /* first byte in output array */
+int nbytes; /* number of bytes to swap */
+{
+ register char *ip, *op, *tp;
+ register int n;
+ static char temp[8];
+
+ tp = temp;
+ ip = (char *)a + aoff - 1;
+ op = (char *)b + boff - 1;
+
+ /* Swap successive eight byte groups.
+ */
+ for (n = nbytes >> 3; --n >= 0; ) {
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *tp++ = *ip++;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ *op++ = *--tp;
+ }
+
+ /* If there are any odd bytes left, move them to the output array.
+ * Do not bother to swap as it is unclear how to swap a partial
+ * group, and really incorrect if the data is not modulus 8.
+ */
+ for (n = nbytes & 03; --n >= 0; )
+ *op++ = *ip++;
+}
+
+
+/* IS_SWAPPED -- See if this is a byte-swapped (relative to Sun) machine.
+ */
+
+is_swapped ()
+{
+ union {
+ char ch[4];
+ int i;
+ } u;
+
+ u.i = 1;
+ return ((int) u.ch[0]);
+}
+
+
+/* MIN_MAX -- Get the min and max values of an array.
+ */
+
+min_max (a, npts, bitpix, min, max)
+char *a;
+int npts;
+int bitpix;
+float *min, *max;
+{
+ register int i;
+
+ *min = 32768.0, *max = -32768.0;
+
+ if (bitpix == 8) {
+ char *buf = (char *)a;
+ for (i=0; i < npts; i++) {
+ if (buf[i] < *min) *min = buf[i];
+ if (buf[i] > *max) *max = buf[i];
+ }
+ } else if (bitpix == 16) {
+ short *buf = (short *)a;
+ for (i=0; i < npts; i++) {
+ if (buf[i] < *min) *min = buf[i];
+ if (buf[i] > *max) *max = buf[i];
+ }
+ } else if (bitpix == 32) {
+ int *buf = (int *)a;
+ for (i=0; i < npts; i++) {
+ if (buf[i] < *min) *min = buf[i];
+ if (buf[i] > *max) *max = buf[i];
+ }
+ } else if (bitpix == -32) {
+ float *buf = (float *)a;
+ for (i=0; i < npts; i++) {
+ if (buf[i] < *min) *min = buf[i];
+ if (buf[i] > *max) *max = buf[i];
+ }
+ } else if (bitpix == -64) {
+ double *buf = (double *)a;
+ for (i=0; i < npts; i++) {
+ if (buf[i] < *min) *min = buf[i];
+ if (buf[i] > *max) *max = buf[i];
+ }
+ }
+}
+
+
+/* STRPAK -- Convert ASCII string from SPP char per short to C char per byte
+ */
+
+strpak (in, out, len)
+char *in, *out;
+int len;
+{
+ int i, j;
+
+ /* adaptive byte selection (whichever byte order) chars alternate
+ * with \0
+ */
+ if ( in[0] == '\0' )
+ j = 1;
+ else
+ j = 0;
+ for ( i = 0; i < len; i++, j += 2 )
+ out[i] = in[j];
+ out[i] = '\0';
+}
+
+
+/* FLIP -- Reverse order of lines in image. We do this as a separate step
+ * rather than when reading so the sampling grid for zscale is the same as
+ * for DISPLAY, even though the pixels are stored "flipped" in the pixfile.
+ */
+flip (buffer, nx, ny)
+uchar *buffer;
+int nx, ny;
+{
+ int i;
+ register int j, v;
+ register uchar *buff1, *buff2;
+
+ for (i = 0; i < ny / 2; i++) {
+ buff1 = &buffer[i*nx];
+ buff2 = &buffer[(ny-1-i)*nx];
+ for (j = 0; j < nx; j++) {
+ v = *buff1;
+ *(buff1++) = *buff2;
+ *(buff2++) = v;
+ }
+ }
+}
diff --git a/vendor/x11iraf/ximtool/ximclient.c b/vendor/x11iraf/ximtool/ximclient.c
new file mode 100644
index 00000000..2d67f25d
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximclient.c
@@ -0,0 +1,2576 @@
+#include <stdio.h>
+#include <ctype.h>
+#include <math.h>
+#include <sys/stat.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <Tcl/tcl.h>
+#include <Obm.h>
+#include <ObmW/Gterm.h>
+#include "ximtool.h"
+
+/*
+ * XIMCLIENT.C -- The Ximtool "client" object. This code implements an OBM
+ * client and responds to messages sent to the client object by the GUI code
+ * executing under the object manager.
+ *
+ * xim_clientOpen (xim)
+ * xim_clientClose (xim)
+ * xim_clientExecute (xim, objname, key, cmd)
+ *
+ * The clientExecute callback is called by the GUI code in the object manager
+ * to execute ximtool client commands.
+ *
+ * Client commands:
+ *
+ * setFrame frameno
+ * frameno = getFrame [raster]
+ * raster = getRaster [frameno]
+ * frame = getSource [raster [sx sy snx sny]]
+ * nextFrame
+ * prevFrame
+ * matchFrames [frames [reference_frame]]
+ * registerFrames [frames [reference_frame]]
+ * offfsetRegister [frames [reference_frame]]
+ * fitFrame
+ * clearFrame [frame]
+ *
+ * setOption option value [args]
+ * setColormap colormap
+ * setOffset xoff yoff
+ * windowColormap offset scale
+ * windowRGB color offset scale save_flag
+ * zoom [mag | xmag ymag [ xcen ycen ]]
+ * zoomAbs [mag | xmag ymag [ xcen ycen ]]
+ * center = centroid xcen ycen size [type]
+ * pix = getPixels x0 y0 nx ny [format]
+ * pan xcen ycen
+ * flip axis [axis ...]
+ *
+ * setPrintOption option value [args]
+ * print [x0 y0 nx ny]
+ * setSaveOption option value [args]
+ * save [x0 y0 nx ny]
+ * setLoadOption option value [args]
+ * load
+ * help
+ * info option
+ *
+ * wcsstr = encodewcs sx sy sz
+ * retCursorVal sx sy [frame [wcs [key [strval]]]]
+ *
+ * ism_start task
+ * ism_stop task
+ * ism_cmd task [args]
+ *
+ * initialize
+ * Reset
+ * Quit
+ */
+
+
+/* Client callback struct. */
+typedef struct {
+ XimDataPtr xim;
+ Tcl_Interp *tcl;
+ Tcl_Interp *server;
+} XimClient, *XimClientPtr;
+
+
+
+static int initialize(), Reset(), Quit();
+static int setColormap(), updateColormap(), windowColormap();
+static int zoom(), pan(), getSource();
+static int setFrame(), getFrame(), getRaster(), nextFrame(), prevFrame();
+static int fitFrame(), matchFrames(), registerFrames(), retCursorVal();
+static int encodewcs(), flip(), clearFrame(), setOption(), setOffset();
+static int setPrintOption(), setSaveOption(), setLoadOption();
+static int print(), save(), load(), help(), windowRGB();
+static int centroid(), getPixels();
+static int ism_start(), ism_stop(), ism_cmd();
+
+extern int ism_evaluate(), info();
+extern IsmModule ismNameToPtr();
+extern double atof();
+
+
+/* xim_clientOpen -- Initialize the ximtool client code.
+ */
+void
+xim_clientOpen (xim)
+XimDataPtr xim;
+{
+ register XimClientPtr xc;
+ register Tcl_Interp *tcl;
+
+ xc = (XimClientPtr) XtCalloc (1, sizeof(XimClient));
+ xim->clientPrivate = (int *)xc;
+
+ xc->xim = xim;
+ xc->tcl = tcl = Tcl_CreateInterp();
+ ObmAddCallback (xim->obm, OBMCB_clientOutput|OBMCB_preserve,
+ xim_clientExecute, (XtPointer)xc);
+
+ Tcl_CreateCommand (tcl,
+ "Quit", Quit, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "Reset", Reset, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "initialize", initialize, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setFrame", setFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "getFrame", getFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "getRaster", getRaster, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "getSource", getSource, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "nextFrame", nextFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "prevFrame", prevFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "fitFrame", fitFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "matchFrames", matchFrames, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "registerFrames", registerFrames, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "offsetRegister", registerFrames, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "clearFrame", clearFrame, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setOption", setOption, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setColormap", setColormap, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setOffset", setOffset, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "windowColormap", windowColormap, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "updateColormap", updateColormap, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "zoom", zoom, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "zoomAbs", zoom, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "centroid", centroid, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "getPixels", getPixels, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "pan", pan, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "flip", flip, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "retCursorVal", retCursorVal, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "encodewcs", encodewcs, (ClientData)xc, NULL);
+
+ Tcl_CreateCommand (tcl,
+ "setPrintOption", setPrintOption, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "print", print, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setSaveOption", setSaveOption, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "save", save, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "setLoadOption", setLoadOption, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "load", load, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "help", help, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "info", info, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "windowRGB", windowRGB, (ClientData)xc, NULL);
+
+ /* ISM module callbacks. */
+ Tcl_CreateCommand (tcl,
+ "ism_start", ism_start, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "ism_stop", ism_stop, (ClientData)xc, NULL);
+ Tcl_CreateCommand (tcl,
+ "ism_cmd", ism_cmd, (ClientData)xc, NULL);
+}
+
+
+/* xim_clientClose -- Shutdown the ximtool client code.
+ */
+void
+xim_clientClose (xim)
+XimDataPtr xim;
+{
+ register XimClientPtr xc = (XimClientPtr) xim->clientPrivate;
+ Tcl_DeleteInterp (xc->tcl);
+}
+
+
+/* xim_clientExecute -- Called by the GUI code to send a message to the
+ * "client", which from the object manager's point of view is ximtool itself.
+ */
+xim_clientExecute (xc, tcl, objname, key, command)
+register XimClientPtr xc;
+Tcl_Interp *tcl; /* caller's Tcl */
+char *objname; /* object name */
+int key; /* notused */
+char *command;
+{
+ register XimDataPtr xim = xc->xim;
+
+ xc->server = tcl;
+ if (strcmp (objname, "client") == 0)
+ Tcl_Eval (xc->tcl, command);
+ else
+ ism_evaluate (xim, objname, command);
+
+ return (0);
+}
+
+
+/*
+ * XIMTOOL CLIENT commands.
+ * ----------------------------
+ */
+
+/* Quit -- Exit ximtool.
+ *
+ * Usage: Quit
+ */
+static int
+Quit (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ xim_shutdown (xim);
+}
+
+
+/* Reset -- Reset ximtool.
+ *
+ * Usage: Reset
+ *
+ * Reset does a full power-on reset of ximtool.
+ */
+static int
+Reset (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ xim_initialize (xim, xim->fb_configno, xim->nframes, 1);
+}
+
+
+/* initialize -- Reinitialize ximtool.
+ *
+ * Usage: initialize
+ *
+ * Initialize does a partial reinitialization of ximtool, preserving the
+ * current frame buffers and view.
+ */
+static int
+initialize (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ xim_initialize (xim, xim->fb_configno, xim->nframes, 0);
+}
+
+
+/* setFrame -- Set the frame to be displayed.
+ *
+ * Usage: setFrame <frameno>
+ */
+static int
+setFrame (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ if (argc == 2)
+ xim_setFrame (xc->xim, atoi(argv[1]));
+ return (TCL_OK);
+}
+
+
+/* getFrame -- Get the frame number.
+ *
+ * Usage: frameno = getFrame [raster]
+ *
+ * This routine has two forms. When called with no argument getFrame returns
+ * the current display frame. When called with a raster number getFrame
+ * returns the frame number with which the raster is associated.
+ */
+static int
+getFrame (xc, tcl, argc, argv)
+XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb;
+ char frameno[SZ_NAME];
+ register int i;
+ int raster;
+
+ if (argc == 1)
+ sprintf (frameno, "%d", xc->xim->display_frame);
+ else {
+ raster = atoi (argv[1]);
+ strcpy (frameno, "0");
+
+ for (i=1; i <= xim->nframes; i++) {
+ fb = &xim->frames[i-1];
+ if (fb->raster == raster || fb->zoomras == raster) {
+ sprintf (frameno, "%d", fb->frameno);
+ break;
+ }
+ }
+ }
+
+ Tcl_SetResult (xc->server, frameno, TCL_VOLATILE);
+ return (TCL_OK);
+}
+
+
+/* getRaster -- Get the image raster number of the given frame.
+ *
+ * Usage: raster = getRaster [frameno]
+ *
+ * This routine has two forms. When called with no argument getRaster returns
+ * the raster number of the current display frame. When called with a frame
+ * number getRaster returns the raster number of the given frame.
+ */
+static int
+getRaster (xc, tcl, argc, argv)
+XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb;
+ char buf[SZ_NAME];
+ register int i;
+ int frameno;
+
+ if (argc == 1)
+ sprintf (buf, "%d", xim->df_p->raster);
+ else {
+ frameno = atoi (argv[1]);
+ strcpy (buf, "0");
+
+ for (i=1; i < xim->nframes; i++) {
+ fb = &xim->frames[i-1];
+ if (fb->frameno == frameno) {
+ sprintf (buf, "%d", fb->raster);
+ break;
+ }
+ }
+ }
+
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+ return (TCL_OK);
+}
+
+
+/* getSource -- Get the source of the currently displayed image.
+ *
+ * Usage: frame = getSource [raster [sx sy snx sny]]
+ *
+ * getSource returns the frame number of the currently displayed frame as
+ * the function value, and the raster number and source rect within that
+ * raster are returned as function arguments.
+ */
+static int
+getSource (xc, tcl, argc, argv)
+XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register int i;
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ int src, st, sx, sy, snx, sny;
+ int dst, dt, dx, dy, dnx, dny;
+ char buf[SZ_NAME];
+ int frameno, rop;
+
+ GtGetMapping (xim->gt, fb->zoommap, &rop,
+ &src,&st,&sx,&sy,&snx,&sny, &dst,&dt,&dx,&dy,&dnx,&dny);
+
+ if (argc > 1) {
+ sprintf (buf, "%d", fb->raster);
+ Tcl_SetVar (xc->server, argv[1], buf, 0);
+ }
+ if (argc > 2) {
+ sprintf (buf, "%d", sx);
+ Tcl_SetVar (xc->server, argv[2], buf, 0);
+ sprintf (buf, "%d", sy);
+ Tcl_SetVar (xc->server, argv[3], buf, 0);
+ sprintf (buf, "%d", snx);
+ Tcl_SetVar (xc->server, argv[4], buf, 0);
+ sprintf (buf, "%d", sny);
+ Tcl_SetVar (xc->server, argv[5], buf, 0);
+ }
+
+ sprintf (buf, "%d", fb->frameno);
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+
+ return (TCL_OK);
+}
+
+
+/* nextFrame -- Display the next frame in sequence.
+ *
+ * Usage: nextFrame
+ */
+static int
+nextFrame (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int frame;
+
+ if (xim->display_frame < xim->nframes)
+ frame = xim->display_frame + 1;
+ else
+ frame = 1;
+
+ xim_setFrame (xc->xim, frame);
+ return (TCL_OK);
+}
+
+
+/* prevFrame -- Display the previous frame in sequence.
+ *
+ * Usage: prevFrame
+ */
+static int
+prevFrame (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int frame;
+
+ if (xim->display_frame > 1)
+ frame = xim->display_frame - 1;
+ else
+ frame = xim->nframes;
+
+ xim_setFrame (xc->xim, frame);
+ return (TCL_OK);
+}
+
+
+/* matchFrames -- Set the enhancement of the listed frames to match that of
+ * the given reference frame. If no reference frame is given the current
+ * display frame is used. If no frames are listed all frames are matched
+ * to the current display frame.
+ *
+ * Usage: matchFrames [frames [reference_frame]]
+ */
+static int
+matchFrames (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int *frames, frame_list[32], reference_frame;
+ int nitems, i;
+ char **items;
+
+ /* Get reference frame. */
+ if (argc > 2)
+ reference_frame = atoi (argv[2]);
+ else
+ reference_frame = xim->display_frame;
+
+ /* Get frame list. */
+ if (argc > 1) {
+ if (Tcl_SplitList (tcl, argv[1], &nitems, &items) != TCL_OK)
+ goto nolist;
+ for (i=0, frames=frame_list; i < nitems; i++)
+ frames[i] = atoi (items[i]);
+ frames[i] = (int) NULL;
+ XtFree ((char *)items);
+ } else
+nolist: frames = NULL;
+
+ xim_matchFrames (xc->xim, frames, reference_frame);
+ return (TCL_OK);
+}
+
+
+/* registerFrames -- Register the listed frames with the given reference
+ * frame. If no reference frame is given the current display frame is used.
+ * If no frames are listed all frames are registered with the current
+ * display frame.
+ *
+ * Usage: registerFrames [frames [reference_frame]]
+ * offsetRegister [frames [reference_frame]]
+ */
+static int
+registerFrames (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int *frames, frame_list[32], reference_frame;
+ int nitems, i, offsets;
+ char **items;
+
+ /* Get reference frame. */
+ if (argc > 2)
+ reference_frame = atoi (argv[2]);
+ else
+ reference_frame = xim->display_frame;
+
+ /* Get frame list. */
+ if (argc > 1) {
+ if (Tcl_SplitList (tcl, argv[1], &nitems, &items) != TCL_OK)
+ goto nolist;
+ for (i=0, frames=frame_list; i < nitems; i++)
+ frames[i] = atoi (items[i]);
+ frames[i] = (int) NULL;
+ XtFree ((char *)items);
+ } else
+nolist: frames = NULL;
+
+ offsets = (strcmp (argv[0], "offsetRegister") == 0);
+ xim_registerFrames (xc->xim, frames, reference_frame, offsets);
+ return (TCL_OK);
+}
+
+
+/* setOffset -- Set the offset for the current display frame buffer.
+ *
+ * Usage: setOffset xoff yoff
+ */
+static int
+setOffset (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ float xcen, ycen;
+ float xmag, ymag;
+ float xoff, yoff;
+ Boolean absolute = False;
+ int frame = xim->display_frame - 1;
+
+
+ if (argc < 3)
+ return (TCL_ERROR);
+
+ xcen = fb->xcen;
+ ycen = fb->ycen;
+ xmag = fb->xmag;
+ ymag = fb->ymag;
+
+ /* Get offset values for the frame. */
+ xoff = atof (argv[1]);
+ yoff = atof (argv[2]);
+
+ /* Set frame offset. */
+ xim_setZoom (xim, fb, fb->frameno, fb->zoommap,
+ fb->raster, fb->zoomras, xcen, ycen, xmag, ymag, xoff, yoff,
+ absolute);
+
+ /* Now set he frame values independent of the display frame. */
+ fb = &xim->frames[frame];
+ fb->xoff = xoff;
+ fb->yoff = yoff;
+
+ return (TCL_OK);
+}
+
+
+
+/* clearFrame -- Clear the given frame, or the current frame in no frame
+ * number is given.
+ *
+ * Usage: clearFrame [frame]
+ */
+static int
+clearFrame (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int frame;
+
+ if (argc > 1)
+ frame = atoi (argv[1]);
+ else
+ frame = xim->display_frame;
+
+ xim_eraseFrame (xc->xim, frame);
+ return (TCL_OK);
+}
+
+
+/* fitFrame -- Attempt to make the display window the same size as the frame
+ * buffer.
+ *
+ * Usage: fitFrame
+ */
+static int
+fitFrame (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+
+ xim_fitFrame (xc->xim);
+ return (TCL_OK);
+}
+
+
+/* setOption -- Set an ximtool client option.
+ *
+ * Usage: setOption option value [args]
+ *
+ * Options:
+ * autoscale true|false
+ * antialias true|false [type]
+ * tileFrames true|false [frames]
+ * tileByRow true|false
+ * tileTopDown true|false
+ * tileGeom type|geom [frames]
+ * cmfocus size
+ */
+char *h_orient[] = {
+ "1x1","2x1","3x1","2x2", "3x2","3x2","4x2","4x2", "3x3","5x2","4x3","4x3"
+};
+char *v_orient[] = {
+ "1x1","1x2","1x3","2x2", "2x3","2x3","2x4","2x4", "3x3","2x5","3x4","3x4"
+};
+
+static int
+setOption (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ char *option, *strval, **items;
+ char buf[SZ_LINE];
+ int ch, value, nx, ny, nitems, i, frame_list=0;
+
+
+ if (argc < 3)
+ return (TCL_ERROR);
+ else {
+ option = argv[1];
+ strval = argv[2];
+
+ if (strcmp (option, "tileGeom") != 0) {
+ ch = strval[0];
+ if (isdigit (ch))
+ value = atoi (strval);
+ else if (ch == 'T' || ch == 't')
+ value = 1;
+ else if (ch == 'F' || ch == 'f')
+ value = 0;
+ }
+ }
+
+ if (strcmp (option, "autoscale") == 0) {
+ if (xim->autoscale != value) {
+ xim->autoscale = value;
+ xim_resize (xim, xim->gt);
+ sprintf (buf, "%s", value ? "True" : "False");
+ xim_message (xim, "autoscale", buf);
+ }
+ } else if (strcmp (option, "antialias") == 0) {
+ if (xim->antialias != value) {
+ xim->antialias = value;
+ if (value) {
+ if (argc > 3)
+ xim->rop = xim_getAntialias (xim, argv[3]);
+ else
+ xim->rop = xim_getAntialias (xim, xim->antialiasType);
+ } else
+ xim->rop = 0;
+ xim_setRop (xim, fb, xim->rop);
+ sprintf (buf, "%s", value ? "True" : "False");
+ xim_message (xim, "antialias", buf);
+ }
+
+ } else if (strcmp (option, "cmfocus") == 0) {
+ if (xim->cm_focus != value) {
+ int box_size = value;
+ xim->cm_focus = box_size;
+ GtSetColormapFocus (box_size);
+ }
+
+ } else if (strcmp (option, "tileFrames") == 0) {
+ if (xim->tileFrames != value) {
+ /* Get list of frames to be tiled. */
+ if (argc > 3) {
+ if (Tcl_SplitList (tcl, argv[3], &nitems, &items) != TCL_OK)
+ goto nolist1;
+ for (i=0; i < nitems; i++)
+ frame_list |= (1 << (atoi(items[i]) - 1));
+ XtFree ((char *)items);
+ } else {
+nolist1: for (i=0; i < xim->nframes; i++)
+ frame_list |= (1 << i);
+ nitems = xim->nframes;
+ }
+
+ /* Set or clear tile frame mode. */
+ xim_tileFrames (xim, value ? frame_list : 0);
+ }
+
+ } else if (strcmp (option, "tileByRows") == 0) {
+ xim->tileByRows = value;
+ xim_tileFrames (xim, xim->tileFramesList);
+
+ } else if (strcmp (option, "tileTopDown") == 0) {
+ xim->tileTopDown = value;
+ xim_tileFrames (xim, xim->tileFramesList);
+
+ } else if (strcmp (option, "tileLabels") == 0) {
+ xim->tileLabels = value;
+ xim_tileFrames (xim, xim->tileFramesList);
+
+ } else if (strcmp (option, "tileGeom") == 0) {
+ /* Get list of frames to be tiled. */
+ if (argc > 3) {
+ if (Tcl_SplitList (tcl, argv[3], &nitems, &items) != TCL_OK)
+ goto nolist2;
+ for (i=0; i < nitems; i++)
+ frame_list |= (1 << (atoi(items[i]) - 1));
+ XtFree ((char *)items);
+ } else {
+nolist2: for (i=0; i < xim->nframes; i++)
+ frame_list |= (1 << i);
+ nitems = xim->nframes;
+ }
+ nitems = max (nitems, 1);
+
+
+ /* Get the option or tile geometry. */
+ if (strcmp (strval, "Best") == 0) {
+ if (xim->width < xim->height)
+ goto horient;
+ else
+ goto vorient;
+ } else if (strcmp (strval, "Square") == 0) {
+ for (i=0; (i*i) < nitems; i++)
+ ;
+ nx = ny = i;
+ } else if (strcmp (strval, "Horizontal") == 0) {
+horient: if (nitems >= 13)
+ nx = ny = 4;
+ else
+ sscanf (h_orient[nitems-1], "%dx%d", &nx, &ny);
+ } else if (strcmp (strval, "Vertical") == 0) {
+vorient: if (nitems >= 13)
+ nx = ny = 4;
+ else
+ sscanf (v_orient[nitems-1], "%dx%d", &nx, &ny);
+ } else if (strcmp (strval, "Row") == 0) {
+ nx = nitems;
+ ny = 1;
+ } else if (strcmp (strval, "Column") == 0) {
+ nx = 1;
+ ny = nitems;
+ } else {
+ sscanf (strval, "%dx%d", &nx, &ny);
+ }
+
+ /* Set or clear tile frame mode. */
+ xim->tileRows = ny;
+ xim->tileCols = nx;
+ xim->tileFramesList = frame_list;
+ sprintf (buf, "%d %d", nx, ny);
+ xim_message (xim, "tileOptions", buf);
+
+ xim_tileFrames (xim, xim->tileFramesList);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* setColormap -- Set the colormap for the current display frame.
+ *
+ * Usage: setColormap <colormap>
+ *
+ * The colormap may be specified either by number or by name.
+ */
+static int
+setColormap (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ unsigned short m_red[MAX_COLORS];
+ unsigned short m_green[MAX_COLORS];
+ unsigned short m_blue[MAX_COLORS];
+ char buf[SZ_LINE];
+ ColorMapPtr cm;
+ int i;
+
+
+ if (argc == 2) {
+ if (isdigit (*argv[1]))
+ i = atoi(argv[1]);
+ else {
+ for (i=1; i <= ncolormaps; i++)
+ if (strcmp (colormaps[i-1].name, argv[1]) == 0)
+ break;
+ }
+
+ if (i >= 1 && i <= ncolormaps) {
+ cm = &colormaps[i-1];
+ if (strncmp (cm->name, "Random", 6) == 0) {
+ xim_setColormap (cm->name, NULL,
+ m_red, m_green, m_blue, xim->ncolors);
+ GtWriteColormap (xim->gt, cm->mapno,
+ first_color, xim->ncolors, m_red, m_green, m_blue);
+ }
+
+ fb->colormap = i;
+ GtSetColormapFocus (-1); /* force full update */
+ GtLoadColormap (xim->gt, cm->mapno, fb->offset, fb->scale);
+ GtSetColormapFocus (xim->cm_focus);
+ xim_enhancement (xim, fb);
+ }
+ }
+
+ return (TCL_OK);
+}
+
+
+/* windowColormap -- Set the colormap for the current display frame.
+ *
+ * Usage: windowColormap <offset> <scale>
+ */
+static int
+windowColormap (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register ColorMapPtr cm;
+ char buf[SZ_LINE];
+
+ if (argc > 1) {
+ cm = &colormaps[fb->colormap-1];
+ fb->offset = atof(argv[1]);
+ fb->scale = (argc > 2) ? (float)atof(argv[2]) : fb->scale;
+ GtLoadColormap (xim->gt, cm->mapno, fb->offset, fb->scale);
+ xim_enhancement (xim, fb);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* updateColormap -- Update the colormap for the entire display frame.
+ *
+ * Usage: updateColormap <offset> <scale>
+ */
+static int
+updateColormap (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register ColorMapPtr cm;
+ char buf[SZ_LINE];
+
+ if (argc > 1) {
+ cm = &colormaps[fb->colormap-1];
+ fb->offset = atof(argv[1]);
+ fb->scale = (argc > 2) ? (float)atof(argv[2]) : fb->scale;
+ GtSetColormapFocus (-1); /* force full update */
+ GtLoadColormap (xim->gt, cm->mapno, fb->offset, fb->scale);
+ GtSetColormapFocus (xim->cm_focus);
+ xim_enhancement (xim, fb);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* zoom -- Set the zoom factors for the current frame to the given values.
+ * A zoom factor > 1 enlarges the image, < 1 shrinks the image, 1.0 maps
+ * one source pixel to one destination pixel.
+ *
+ * Usage: zoom <xymag> 1 argument
+ * zoom <xmag> <ymag> 2 arguments
+ * zoom <xmag> <ymag> <xcen> <ycen> 4 arguments
+ *
+ * When called as "zoom" the magnification is relative to the fixed scaling,
+ * if any, used to scale the frame to fit the display window at mag=1.0.
+ * When called as zoomAbs" the magnification given is the actual scale factor
+ * used to map raster pixels to display pixels.
+ */
+static int
+zoom (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ float xmag, ymag;
+ float xcen, ycen;
+ float xoff, yoff;
+ Boolean absolute;
+
+ xmag = fb->xmag;
+ ymag = fb->ymag;
+ xcen = fb->xcen;
+ ycen = fb->ycen;
+ xoff = fb->xoff;
+ yoff = fb->yoff;
+
+ switch (argc) {
+ case 7:
+ xoff = atof (argv[5]);
+ yoff = atof (argv[6]);
+ /* fall through */
+ case 5:
+ xcen = atof (argv[3]);
+ ycen = atof (argv[4]);
+ /* fall through */
+ case 3:
+ xmag = atof (argv[1]);
+ ymag = atof (argv[2]);
+ break;
+ case 2:
+ xmag = ymag = atof (argv[1]);
+ break;
+ }
+
+ absolute = (strcmp (argv[0], "zoomAbs") == 0);
+ xim_setZoom (xim, fb, fb->frameno, fb->zoommap,
+ fb->raster, fb->zoomras, xcen, ycen, xmag, ymag, xoff, yoff,
+ absolute);
+
+ return (TCL_OK);
+}
+
+
+/* pan -- Pan the current frame, i.e., change the view center.
+ *
+ * Usage: pan <xcen> <ycen>
+ */
+static int
+pan (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ Boolean absolute = False;
+ float xmag, ymag;
+ float xcen, ycen;
+ float xoff, yoff;
+ double atof();
+
+ xmag = fb->xmag;
+ ymag = fb->ymag;
+ xoff = fb->xoff;
+ yoff = fb->yoff;
+
+ if (argc == 3) {
+ xcen = atof (argv[1]);
+ ycen = atof (argv[2]);
+
+ xim_setZoom (xim, fb, fb->frameno, fb->zoommap,
+ fb->raster, fb->zoomras, xcen, ycen, xmag, ymag, xoff, yoff,
+ absolute);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* centroid -- Center the cursor on the feature given an initial position
+ * and box size. Return a correction to the center.
+ *
+ * Usage: centroid <xcen> <ycen> <size> [ <type> ]
+ */
+static int
+centroid (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register CtranPtr ct = (CtranPtr) &fb->ctran;
+ unsigned char junk[MAX_COLORS];
+ unsigned char *pix = NULL;
+ float *data=NULL, *xm=NULL, *ym=NULL;
+ float xsum, ysum, xsumx, ysumx;
+ float cx, cy, lo, hi, px, xcen, ycen, size;
+ float xmin=999999.0, xmax=-999999.0;
+ int w, h, ncolors, i, j;
+ int dist=0, mind=99999, maxd=99999, imin=0, imax=0;
+ int x0, y0, nx, npix, min_max=-1;
+ char buf[SZ_LINE];
+ double atof();
+
+
+ if (argc < 4)
+ return (TCL_ERROR);
+
+ xcen = atof (argv[1]);
+ ycen = atof (argv[2]);
+ size = atof (argv[3]);
+ if (argc == 5)
+ min_max = strcmp (argv[4],"max");
+
+ x0 = xcen - size;
+ y0 = ycen - size;
+ nx = size * 2 + 1;
+ npix = nx * nx;
+
+ /* Read the display raster. */
+ pix = xim_readDisplay (xim, x0,y0,nx,nx, &w,&h, junk,junk,junk,
+ &ncolors);
+
+ /* Scale the data to the WCS pixel values for centroiding. */
+ data = (float *) XtMalloc (npix * sizeof(float));
+ for (i=0; i < npix; i++) {
+ if (pix[i] == 0) {
+ data[i] = 0.0;
+ } else {
+ if (ct->zt == W_LINEAR) {
+ data[i] = ((pix[i]-1) * (ct->z2 - ct->z1) / 199) + ct->z1;
+ data[i] = max (ct->z1, min (ct->z2, data[i]));
+ } else
+ data[i] = (float) pix[i];
+ }
+ cx = (nx / 2) - (i % nx);
+ cy = (nx / 2) - (i / nx);
+ dist = (int) (sqrt (cx*cx + cy*cy) + 0.5);
+
+ if (data[i] > xmax)
+ xmax = data[i], maxd = dist, imax = i;
+ else if (data[i] == xmax && dist < maxd)
+ maxd = dist, imax = i;
+
+ if (data[i] < xmin)
+ xmin = data[i], mind = dist, imin = i;
+ else if (data[i] == xmin && dist < mind)
+ mind = dist, imin = i;
+ }
+ XtFree ((char *)pix);
+
+ if (min_max >= 0) {
+ if (min_max == 0) {
+ if (data[npix/2] == xmax)
+ sprintf (buf, "0 0");
+ else
+ sprintf (buf, "%g %g", (imax%nx)-size, (imax/nx)-size);
+ } else {
+ if (data[npix/2] == xmin)
+ sprintf (buf, "0 0");
+ else
+ sprintf (buf, "%g %g", (imin%nx)-size, (imin/nx)-size);
+ }
+
+ /* Return the correction to the position. */
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+ return (TCL_OK);
+ }
+
+
+ /* Find the low threshold for the subraster (i.e. the mean). */
+ lo = hi = xsum = data[0];
+ for (i=1; i < npix ; i++) {
+ xsum += data[i];
+ lo = (data[i] < lo ? data[i] : lo);
+ hi = (data[i] > hi ? data[i] : hi);
+ }
+
+ /* Check for a raster with all the same pixels, in which case
+ * just return a zero offset.
+ */
+ if (lo == hi) {
+ sprintf (buf, "0 0");
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+ return (TCL_OK);
+
+ } else
+ lo = xsum / (float)npix;
+
+ /* Accumulate the x and y marginals. */
+ xm = (float *) XtMalloc (nx * sizeof(float));
+ ym = (float *) XtMalloc (nx * sizeof(float));
+ for (i=0; i < nx; i++) {
+ xsum = xm[i] = 0.0, ysum = ym[i] = 0.0;
+ for (j=0; j < nx; j++) {
+ px = data[(j*nx)+i]; /* column sum */
+ if (lo <= px)
+ xsum += px - lo;
+
+ px = data[(i*nx)+j]; /* row sum */
+ if (lo <= px)
+ ysum += px - lo;
+ }
+ xm[i] = xsum;
+ ym[i] = ysum;
+ }
+ XtFree ((char *)data);
+
+ /* Now calculate the centroids as the first moment. If all the
+ * marginals are zero (i.e. all pixels the same) then return a
+ * zero correction.
+ */
+ xsum = xsumx = 0.0, ysum = ysumx = 0.0;
+ px = (float) nx;
+ for (i=0; i < nx; i++) {
+ xsum += (xm[i] / px);
+ xsumx += (xm[i] / px) * i;
+
+ ysum += (ym[i] / px);
+ ysumx += (ym[i] / px) * i;
+ }
+ cx = (xsum == 0.0) ? size : xsumx / xsum;
+ cy = (ysum == 0.0) ? size : ysumx / ysum;
+
+ XtFree ((char *)xm); /* clean up */
+ XtFree ((char *)ym);
+
+ /* Return the correction to the position. */
+ sprintf (buf, "%d %d", nint(cx-size), nint(cy-size));
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+
+ return (TCL_OK);
+}
+
+
+/* getPixels -- Get an array of pixels around the given center position.
+ *
+ * Usage: getPixels <x0> <y0> <nx> <ny> [format [scale]]
+ */
+
+#define PF_NONE 0 /* don't format the output pixels */
+#define PF_PIXTAB 1 /* format for pixel table */
+#define PF_HCUT 2 /* format for horizontal cut-plot */
+#define PF_VCUT 3 /* format for vertical cut-plot */
+
+static int
+getPixels (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register CtranPtr ct = (CtranPtr) &fb->ctran;
+ register int i, j, k, l;
+ unsigned char *pix = NULL;
+ char *buf = NULL, ch, val[32];
+ float *data = NULL;
+ float z1 = ct->z1, z2 = ct->z2;
+ float scale=1.0, yscale = 128.0 / (z2 - z1);
+ int x0, y0, nx, ny, format=0, npix, sample=1, raster=0;
+ double atof();
+
+
+ if (argc < 5)
+ return (TCL_ERROR);
+
+ x0 = atof (argv[1]);
+ y0 = atof (argv[2]);
+ nx = atof (argv[3]);
+ ny = atof (argv[4]);
+ if (argc >= 6) {
+ if (isdigit ((ch = *argv[5])))
+ format = atoi (argv[5]);
+ else if (ch == 'T' || ch == 't')
+ format = 1;
+ else
+ format = 0;
+ }
+ if (argc >= 7)
+ sample = (isdigit(*argv[6]) ? atoi (argv[6]) : 1);
+ if (argc == 8)
+ scale = atof (argv[7]);
+
+ npix = nx * ny;
+
+
+ /* Read the display raster. */
+ pix = (unsigned char *) XtMalloc (npix);
+ if (GtReadPixels (xim->gt, raster, pix, 8, x0, y0, nx, ny) < 0)
+ return (TCL_ERROR);
+
+ /* Scale the data to the WCS pixel values for display. We don't
+ * get here if an ISM is running that provides access to the real
+ * pixel values.
+ */
+ data = (float *) XtCalloc (npix, sizeof(float));
+ for (i=0; i < npix; i+=sample) {
+ if (pix[i] == 0) {
+ data[i] = 0.0;
+ } else {
+ if (ct->zt == W_LINEAR) {
+ data[i] = ((pix[i]-1) * (z2 - z1) / 199) + z1;
+ data[i] = max (z1, min (z2, data[i]));
+ } else
+ data[i] = (float) pix[i];
+ }
+ if (format > 1) { data[i] = (z2 - data[i]) * yscale; }
+ }
+ XtFree ((char *)pix);
+
+ /* Get a text buffer large enough to hold the encoded data. */
+ if (!(buf = (char *) XtMalloc ((npix + 4) * 30))) {
+ XtFree ((char *)data);
+ return (TCL_ERROR);
+ }
+
+ /* Encode the data as {ddd} {ddd} {ddd}...{ddd}. The first four
+ * elements are the zscale values and the array min/max.
+ */
+ strcpy (buf, "");
+ sprintf (val, "{%10.1f} ", z1); strcat (buf, val);
+ sprintf (val, "{%10.1f} ", z2); strcat (buf, val);
+
+ if (format == PF_PIXTAB) {
+ for (i=0; i < npix; i++) {
+ sprintf (val, "{%10.1f%c} ", data[i],
+ (data[i] <= z1 ? '-' : (data[i] >= z2 ? '+' : ' ')) );
+ strcat (buf, val);
+ }
+ } else if (format == PF_HCUT) {
+ for (i=0; i < npix; i+=sample) {
+ sprintf (val, "{%g %g} ", i * scale, data[i]);
+ strcat (buf, val);
+ }
+ } else if (format == PF_VCUT) {
+ for (i=0; i < npix; i+=sample) {
+ sprintf (val, "{%g %g} ", data[i], i * scale);
+ strcat (buf, val);
+ }
+ } else {
+ for (i=0; i < npix; i++) {
+ sprintf (val, "{%f} ", data[i]);
+ strcat (buf, val);
+ }
+ }
+
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+ XtFree ((char *)data);
+ XtFree ((char *)buf);
+
+ return (TCL_OK);
+}
+
+
+/* flip -- Flip the current display frame in the indicated axis or axes.
+ *
+ * Usage: flip [axis [axis ...]]
+ */
+static int
+flip (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ int flip_x = 0, flip_y = 0;
+ int ch, i;
+
+ for (i=1; i < argc; i++) {
+ ch = argv[i][0];
+ if (ch == 'x' || ch == 'X')
+ flip_x = !flip_x;
+ else if (ch == 'y' || ch == 'Y')
+ flip_y = !flip_y;
+ }
+
+ xim_setFlip (xim, fb, flip_x, flip_y);
+ return (TCL_OK);
+}
+
+
+/* retCursorVal -- Return a cursor value to the ximtool client process. This
+ * should be executed by the GUI to terminate a cursor read.
+ *
+ * Usage: retCursorVal sx sy [frame [wcs [key [strval]]]]
+ */
+static int
+retCursorVal (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int frame, wcs, key;
+ float sx, sy;
+ char *s, *strval;
+
+ if (argc < 3)
+ return (TCL_ERROR);
+
+ sx = atof (argv[1]);
+ sy = atof (argv[2]);
+ frame = (argc > 3) ? atoi (argv[3]) : xim->display_frame;
+ wcs = (argc > 4) ? atoi (argv[4]) : 1;
+
+ if (argc > 5) {
+ s = argv[5];
+ if (s[0] == '^')
+ key = s[1] - 'A' + 1;
+ else
+ key = s[0];
+ } else
+ key = 0;
+
+ strval = (argc > 6) ? argv[6] : "";
+
+ xim_retCursorVal (xim, sx, sy, frame, wcs, key, strval);
+
+ return (TCL_OK);
+}
+
+
+/* encodewcs -- Convert raw screen coordinates x,y,z (z=pixel value) to
+ * world coordinates using the WCS passed to ximtool by the client application
+ * when the frame was loaded. The encoded description of the current position
+ * and pixel value is returned to the GUI as a string value.
+ *
+ * Usage: string = encodewcs sx sy sz
+ */
+static int
+encodewcs (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ char buf[SZ_LINE];
+ float sx, sy;
+ int sz;
+
+ if (argc < 3)
+ return (TCL_ERROR);
+
+ sx = atof (argv[1]);
+ sy = atof (argv[2]);
+ sz = (argc > 3) ? atoi (argv[3]) : 0;
+
+ xim_encodewcs (xc->xim, sx, sy, sz, buf);
+ Tcl_SetResult (xc->server, buf, TCL_VOLATILE);
+
+ return (TCL_OK);
+}
+
+
+/* setPrintOption -- Set an ximtool client hardcopy option.
+ *
+ * Usage: setPrintOption option value [args]
+ *
+ * Options:
+ * autoscale true|false
+ * autorotate true|false
+ * maxaspect true|false
+ * annotate true|false
+ * compress true|false
+ *
+ * orientation portrait|landscape
+ * papersize letter|legal|A4|B5
+ * imscale value
+ *
+ * colortype gray|pseudo|rgb
+ * printername strval
+ * devicetype printer|file
+ *
+ * printcmd command
+ * printfile filename
+ *
+ * dotitle true|false
+ * doborders true|false
+ * docolorbars true|false
+ * title string
+ *
+ * corners llx lly urx ury
+ */
+static int
+setPrintOption (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register PSImagePtr psim = xim->psim;
+ register PrintCfgPtr pcp = xim->pcp;
+ register PrinterPtr prp;
+ register int i;
+ int llx, lly, urx, ury;
+ char *option, strval[SZ_LINE];
+ char buf[SZ_LINE];
+ int pnum, ch, value, psflags = psim->page.flags;
+
+ if (argc < 3)
+ return (TCL_ERROR);
+ else {
+ option = argv[1];
+ strcpy (strval, argv[2]);
+ for (i=3; i < argc; i++) {
+ strcat (strval, " ");
+ strcat (strval, argv[i]);
+ }
+
+ ch = strval[0];
+ if (isdigit (ch))
+ value = atoi (strval);
+ else if (ch == 'T' || ch == 't')
+ value = 1;
+ else if (ch == 'F' || ch == 'f')
+ value = 0;
+ }
+
+ if (strcmp (option, "autoscale") == 0) { /* AUTOSCALE */
+ psflags = value ? psflags | EPS_AUTOSCALE :
+ psflags & ~EPS_AUTOSCALE ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "autorotate") == 0) { /* AUTOROTATE */
+ psflags = value ? psflags | EPS_AUTOROTATE :
+ psflags & ~EPS_AUTOROTATE ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "maxaspect") == 0) { /* MAXASPECT */
+ psflags = value ? psflags | EPS_MAXASPECT :
+ psflags & ~EPS_MAXASPECT ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "dotitle") == 0) { /* TITLE */
+ psflags = value ? psflags | EPS_DOTITLE :
+ psflags & ~EPS_DOTITLE ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "doborders") == 0) { /* BORDERS */
+ psflags = value ? psflags | EPS_DOBORDERS :
+ psflags & ~EPS_DOBORDERS ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "docolorbar") == 0) { /* COLORBAR */
+ psflags = value ? psflags | EPS_DOCOLORBAR :
+ psflags & ~EPS_DOCOLORBAR ;
+ psim->page.flags = psflags;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "title") == 0) { /* TITLE STR */
+ if (strcmp ("imtitle", strval) != 0) {
+ strcpy (psim->label, strval);
+ sprintf (buf, "title %s", strval);
+ xim_message (xim, "printOptions", buf);
+ }
+
+ } else if (strcmp (option, "annotate") == 0) { /* ANNOTATE */
+ if (value) {
+ if (!psim->label)
+ psim->label = (char *) calloc (SZ_LINE, sizeof (char));
+ sprintf (psim->label, "[Frame %d] %s",
+ fb->frameno, fb->ctran.imtitle);
+ psim->annotate = 1;
+ } else {
+ if (psim->label) {
+ XtFree ((char *)psim->label);
+ psim->label = NULL;
+ }
+ psim->annotate = 0;
+ }
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "compress") == 0) { /* COMPRESS */
+ if (value)
+ psim->compression = RLECompression;
+ else
+ psim->compression = NoCompression;
+ sprintf (buf, "%s %s", option, value ? "True" : "False");
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "orientation") == 0) { /* ORIENTATION */
+ if (ch == 'P' || ch == 'p')
+ psim->page.orientation = EPS_PORTRAIT;
+ else if (ch == 'L' || ch == 'l')
+ psim->page.orientation = EPS_LANDSCAPE;
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "papersize") == 0) { /* PAPER SIZE */
+ if (strval[2] == 'T' || strval[2] == 't')
+ psim->page.page_type = EPS_LETTER;
+ else if (strval[2] == 'G' || strval[2] == 'g')
+ psim->page.page_type = EPS_LEGAL;
+ else if (strval[0] == 'A' || strval[0] == 'a')
+ psim->page.page_type = EPS_A4;
+ else if (strval[0] == 'B' || strval[0] == 'b')
+ psim->page.page_type = EPS_B5;
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "imscale") == 0) { /* IMAGE SCALE */
+ if (value >= 10) {
+ if ((int)(psim->page.scale*100.0) != value)
+ psim->page.scale = (float) value / 100.0;
+ sprintf (buf, "%s %d", option, value);
+ xim_message (xim, "printOptions", buf);
+ }
+
+ } else if (strcmp (option, "colortype") == 0) { /* COLORTYPE */
+ if (ch == 'G' || ch == 'g')
+ psim->colorClass = EPS_GRAYSCALE;
+ else if (ch == 'P' || ch == 'p')
+ psim->colorClass = EPS_PSEUDOCOLOR;
+ else if (ch == 'R' || ch == 'r')
+ psim->colorClass = EPS_TRUECOLOR;
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "devicetype") == 0) { /* DEVICETYPE */
+
+ if (strval[0] == 'p' || strval[0] == 'P') {
+ pcp->diskfile = 0;
+ sprintf (buf, "deviceType Printer");
+ xim_message (xim, "printOptions", buf);
+ sprintf (buf, "printCmd %s", pcp->printCmd);
+ xim_message (xim, "printOptions", buf);
+ sprintf (buf, "printerName %d", pcp->printno);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strval[0] == 'f' || strval[0] == 'F') {
+ pcp->diskfile = 1;
+ sprintf (buf, "deviceType File");
+ xim_message (xim, "printOptions", buf);
+ sprintf (buf, "printFile %s", pcp->printFile);
+ xim_message (xim, "printOptions", buf);
+ }
+
+ } else if (strcmp (option, "printername") == 0) { /* PRINTER NAME */
+ /* Set to printer mode if called in file mode. */
+ if (pcp->diskfile) {
+ pcp->diskfile = 0;
+ sprintf (buf, "deviceType Printer");
+ xim_message (xim, "printOptions", buf);
+ }
+ pnum = xim_getPrinterInfo (xim, strval);
+ sprintf (buf, "printerName %s", strval);
+ xim_message (xim, "printOptions", buf);
+ strcpy (pcp->printCmd, printer_list[pnum].printCmd);
+ sprintf (buf, "printCmd %s", pcp->printCmd);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "printcmd") == 0) { /* PRINT COMMAND */
+ strcpy (pcp->printCmd, strval);
+ sprintf (buf, "printCmd %s", strval);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "printfile") == 0) { /* PRINT FILENAME */
+ strcpy (pcp->printFile, strval);
+ sprintf (buf, "printFile %s", strval);
+ xim_message (xim, "printOptions", buf);
+
+ } else if (strcmp (option, "corners") == 0) { /* IMAGE CORNERS */
+ /* Set the corners of the image being printed. */
+ sscanf (strval, "%d %d %d %d", &llx, &lly, &urx, &ury);
+ eps_setCorners (psim, llx, lly, urx, ury);
+ }
+
+ /* Reload the page parameters in case anything's changed. */
+ eps_setPage (psim, psim->page.orientation, psim->page.page_type,
+ (int)(psim->page.scale*100), psim->page.flags);
+
+ return (TCL_OK);
+}
+
+
+/* setSaveOption -- Set an ximtool client disk file option.
+ *
+ * Usage: setSaveOption option value [args]
+ *
+ * Options:
+ *
+ * format fmt
+ * color gray|pseudo|rgb
+ * fname strval
+ */
+static int
+setSaveOption (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register fileSavePtr fsp = xim->fsp;
+ register int i;
+ char *option, strval[SZ_LINE];
+ char buf[SZ_LINE];
+ int ch, value;
+
+ if (argc < 3)
+ return (TCL_ERROR);
+ else {
+ option = argv[1];
+ strcpy (strval, argv[2]);
+ for (i=3; i < argc; i++) {
+ strcat (strval, " ");
+ strcat (strval, argv[i]);
+ }
+
+
+ ch = strval[0];
+ if (isdigit (ch))
+ value = atoi (strval);
+ else if (ch == 'T' || ch == 't')
+ value = 1;
+ else if (ch == 'F' || ch == 'f')
+ value = 0;
+ }
+
+ if (strcmp (option, "format") == 0) { /* FORMAT */
+ switch (strval[0]) {
+ case 'r':
+ if (strval[2] == 's') {
+ fsp->format = XIM_RAS;
+ strcpy (fsp->fname, "frame%d.ras");
+ } else if (strval[2] == 'w') {
+ fsp->format = XIM_RAW;
+ strcpy (fsp->fname, "frame%d.raw");
+ }
+ break;
+ case 'g':
+ fsp->format = XIM_GIF;
+ strcpy (fsp->fname, "frame%d.gif");
+ break;
+ case 'j':
+ fsp->format = XIM_JPEG;
+ strcpy (fsp->fname, "frame%d.jpg");
+ break;
+ case 't':
+ fsp->format = XIM_TIFF;
+ strcpy (fsp->fname, "frame%d.tiff");
+ break;
+ case 'f':
+ fsp->format = XIM_FITS;
+ strcpy (fsp->fname, "frame%d.fits");
+ break;
+ case 'e':
+ fsp->format = XIM_EPS;
+ strcpy (fsp->fname, "frame%d.eps");
+ break;
+ case 'x':
+ fsp->format = XIM_X11;
+ strcpy (fsp->fname, "frame%d.xwd");
+ break;
+ }
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "saveOptions", buf);
+ sprintf (buf, "fname %s", fsp->fname);
+ xim_message (xim, "saveOptions", buf);
+
+ } else if (strcmp (option, "color") == 0) { /* COLOR */
+ if (ch == 'G' || ch == 'g')
+ fsp->colorType = XIM_GRAYSCALE;
+ else if (ch == 'P' || ch == 'p')
+ fsp->colorType = XIM_PSEUDOCOLOR;
+ else if (ch == 'R' || ch == 'r')
+ fsp->colorType = XIM_RGB;
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "saveOptions", buf);
+
+ } else if (strcmp (option, "fname") == 0) { /* FILENAME */
+ strcpy (fsp->fname, strval);
+ sprintf (buf, "%s %s", option, strval);
+ xim_message (xim, "saveOptions", buf);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* setLoadOption -- Set an ximtool client disk file option.
+ *
+ * Usage: setLoadOption option value [args]
+ *
+ * Options:
+ * up
+ * root
+ * home
+ * rescan
+ * headers
+ * pattern patstr
+ * gray 0|1
+ * zscale 0|1
+ * zrange 0|1
+ * z1 value
+ * z2 value
+ * nsample value
+ *
+ */
+static int
+setLoadOption (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register int i;
+ register XimDataPtr xim = xc->xim;
+ register fileLoadPtr flp = xim->flp;
+ char *ip, *op, *option, *strval;
+ char buf[SZ_LINE];
+
+ if (argc < 2)
+ return (TCL_ERROR);
+ else {
+ option = argv[1];
+ strval = (argc == 3 ? argv[2] : "" );
+ }
+
+ if (strcmp (option, "up") == 0) { /* UP */
+ if (strcmp("/", flp->curdir) != 0) {
+ for (i=strlen(flp->curdir); i > 1; i--) {
+ if (flp->curdir[i] == '/')
+ break;
+ }
+ flp->curdir[i] = '\0';
+ sprintf (buf, "curdir %s", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+ xim_dirRescan (xim);
+ }
+
+ } else if (strcmp (option, "root") == 0) { /* ROOT */
+ strcpy (flp->curdir, "/");
+ sprintf (buf, "curdir %s", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+ xim_dirRescan (xim);
+
+ } else if (strcmp (option, "home") == 0) { /* HOME */
+ strcpy (flp->curdir, flp->homedir);
+ sprintf (buf, "curdir %s", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+ xim_dirRescan (xim);
+
+ } else if (strcmp (option, "pattern") == 0) { /* PATTERN */
+ if (strcmp(strval, flp->pattern) != 0) {
+ strcpy (flp->pattern, strval);
+ sprintf (buf, "pattern %s", flp->pattern);
+ xim_message (xim, "loadOptions", buf);
+ xim_dirRescan (xim);
+ }
+
+ } else if (strcmp (option, "rescan") == 0) { /* RESCAN */
+ xim_dirRescan (xim);
+
+ } else if (strcmp (option, "headers") == 0) { /* HEADERS */
+ xim_scanHeaders (xim);
+
+ } else if (strcmp (option, "gray") == 0) { /* GRAY */
+ flp->gray = (strval[0] == '0' ? 0 : 1);
+ sprintf (buf, "gray %s", strval[0] == '0' ? "off" : "on");
+ xim_message (xim, "loadOptions", buf);
+
+ } else if (strcmp (option, "zscale") == 0) { /* ZSCALE */
+ flp->zscale = (strval[0] == '0' ? 0 : 1);
+ sprintf (buf, "zscale %s", strval[0] == '0' ? "off" : "on");
+ xim_message (xim, "loadOptions", buf);
+
+ } else if (strcmp (option, "zrange") == 0) { /* ZRANGE */
+ flp->zrange = (strval[0] == '0' ? 0 : 1);
+ sprintf (buf, "zrange %s", strval[0] == '0' ? "off" : "on");
+ xim_message (xim, "loadOptions", buf);
+
+ } else if (strcmp (option, "z1") == 0) { /* Z1 */
+ sscanf (argv[2], "%g", &(flp->z1));
+ sprintf (buf, "z1 %s", argv[2]);
+ xim_message (xim, "loadOptions", buf);
+
+ } else if (strcmp (option, "z2") == 0) { /* Z2 */
+ sscanf (argv[2], "%g", &(flp->z2));
+ sprintf (buf, "z2 %s", argv[2]);
+ xim_message (xim, "loadOptions", buf);
+
+ } else if (strcmp (option, "nsample") == 0) { /* NSAMPLE */
+ sscanf (argv[2], "%d", &(flp->nsample));
+ sprintf (buf, "nsample %s", argv[2]);
+ xim_message (xim, "loadOptions", buf);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* Print -- Print the current display frame to a printer or to a file (EPS).
+ *
+ * Usage: print [x0 y0 nx ny]
+ *
+ * print rename old new
+ * print cancel fname
+ *
+ * If a subregion is given the indicated region is printed, otherwise the
+ * full display frame is printed.
+ *
+ * The forms "print rename" and "print cancel" are actions for print alerts.
+ */
+static int
+print (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ int x0, y0, nx, ny;
+
+ /* Handle the special cases first. */
+ if (argc == 4 && strcmp (argv[1], "rename") == 0) {
+ ximp_rename (xim, argv[2], argv[3]);
+ return (TCL_OK);
+ } else if (argc == 3 && strcmp (argv[1], "cancel") == 0) {
+ ximp_cancel (xim, argv[2]);
+ return (TCL_OK);
+ }
+
+ /* Normal case of a print. */
+ if (argc == 5) {
+ x0 = atoi (argv[1]);
+ y0 = atoi (argv[2]);
+ nx = atoi (argv[3]);
+ ny = atoi (argv[4]);
+ } else
+ x0 = y0 = nx = ny = 0;
+
+ if (xim_print (xim, x0,y0, nx,ny) < 0)
+ return (TCL_ERROR);
+ else
+ return (TCL_OK);
+}
+
+
+/* Save -- Save the current display frame to a disk file.
+ *
+ * Usage: save [x0 y0 nx ny]
+ *
+ * save rename old new
+ * save cancel fname
+ *
+ * If a subregion is given the indicated region is saved, otherwise the
+ * full display frame is saved.
+ *
+ * The forms "save rename" and "save cancel" are actions for save alerts.
+ */
+static int
+save (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register fileSavePtr fsp = xim->fsp;
+ int x0, y0, nx, ny;
+
+ /* Handle the special cases first. */
+ if (argc == 4 && strcmp (argv[1], "rename") == 0) {
+ xims_rename (xim, argv[2], argv[3]);
+ return (TCL_OK);
+ } else if (argc == 3 && strcmp (argv[1], "cancel") == 0) {
+ xims_cancel (xim, argv[2]);
+ return (TCL_OK);
+ }
+
+ if (argc == 5) {
+ x0 = atoi (argv[1]);
+ y0 = atoi (argv[2]);
+ nx = atoi (argv[3]);
+ ny = atoi (argv[4]);
+ } else
+ x0 = y0 = nx = ny = 0;
+
+ /* Pass off to the file save routines. */
+ if (xim_saveFile (xim, fsp->fname, fsp->format, x0,y0, nx,ny) < 0)
+ return (TCL_ERROR);
+ else
+ return (TCL_OK);
+}
+
+
+/* Load -- Load a frame from a disk file.
+ *
+ * Usage: load filename [frame]
+ *
+ * Options: frame display frame to be loaded
+ */
+static int
+load (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register int i;
+ register XimDataPtr xim = xc->xim;
+ register fileLoadPtr flp = xim->flp;
+ char *ip, *op, *fname;
+ char *flist, buf[SZ_LINE];
+ struct stat file_info;
+ int frame;
+
+ if (argc < 2)
+ return (TCL_ERROR);
+
+ fname = argv[1];
+ frame = (argc >= 3) ? atoi(argv[2]) : xim->display_frame;
+
+ /* If given a directory change the directory browser current reference
+ * directory and get a listing.
+ */
+ if (fname[strlen(fname)-1] == '/') {
+ fname[strlen(fname)-1] = '\0';
+ if (fname[0] == '/') {
+ sprintf (flp->curdir, "%s", fname);
+ } else {
+ strcat (flp->curdir, "/");
+ strcat (flp->curdir, fname);
+ }
+ sprintf (buf, "curdir %s", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+
+ xim_dirRescan (xim);
+
+ } else {
+ /* Otherwise it may be some kind of image to be loaded, but first
+ * check to see if it's not some other directory first.
+ */
+ (void) stat (fname, &file_info);
+ if (S_ISDIR(file_info.st_mode)) {
+ sprintf (flp->curdir, "%s", fname);
+ sprintf (buf, "curdir %s", flp->curdir);
+ xim_message (xim, "loadOptions", buf);
+ xim_dirRescan (xim);
+ return (TCL_OK);
+ }
+
+ /* It's not a directory, so try loading the file. */
+ if (xim_loadFile (xim, fname, frame) != 0)
+ return (TCL_ERROR);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* Help -- Send the default help text (HTML) to the GUI.
+ *
+ * Usage: help
+ */
+
+/* The builtin default help text. */
+static char *help_text[] = {
+ "setValue {",
+# include "ximtool.html.h"
+ "}",
+ NULL
+};
+
+static int
+help (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register char *ip, *op, *helptxt;
+ register int i;
+
+ helptxt = (char *) XtMalloc (1024000);
+ for (i=0, op=helptxt; ip = help_text[i]; i++) {
+ while (*ip)
+ *op++ = *ip++;
+ *op++ = '\n';
+ }
+ *op++ = '\0';
+
+ ObmDeliverMsg (xim->obm, "help", helptxt);
+ XtFree ((char *)helptxt);
+
+ return (TCL_OK);
+}
+
+
+/* Info -- Send various kinds of information to the GUI. The 'args' option
+ * allows us to pass in information from the GUI that cannot be easily
+ * obtained otherwise, e.g. private information inthe Gterm widget such as
+ * the basePixel resource.
+ *
+ * Usage: info option [ args ... ]
+ */
+
+info (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ char line[SZ_LINE], path[80], *option, *message;
+
+ if (argc < 2)
+ return (TCL_ERROR);
+ else
+ option = argv[1];
+
+ message = (char *) XtCalloc (8182, sizeof(char));
+
+ if (strcmp (option, "server") == 0) {
+ info_server (xim, argc, argv, message);
+
+ } else if (strcmp (option, "wcs") == 0) {
+ info_wcs (xim, message);
+
+ } else if (strcmp (option, "clients") == 0) {
+ info_clients (xim, message);
+
+ } else if (strcmp (option, "imtoolrc") == 0) {
+ info_imtoolrc (xim, message);
+
+ } else {
+ XtFree ((char *)message);
+ return (TCL_ERROR);
+ }
+
+ strcat (message, "\n\0");
+
+ if (*message)
+ xim_message (xim, "info", message);
+ XtFree ((char *)message);
+
+ return (TCL_OK);
+}
+
+
+/* INFO_SERVER -- Helper routine to report server state information.
+ */
+info_server (xim, argc, argv, text)
+register XimDataPtr xim;
+int argc;
+char **argv;
+char *text;
+{
+ extern char *ximtool_version[];
+ extern int ncolormaps, first_color;
+ char cmapname[80], line[SZ_LINE];
+ ColorMapPtr cm;
+
+ sprintf (text, "\t%s\n\n", ximtool_version[0]);
+
+ sprintf (line, "%20s: %s\n", "Base Pixel",
+ (argc >= 3 ? argv[2] :""));
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Max Colors",
+ (argc >= 4 ? argv[3] :""));
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Memory Model", xim->memModel);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Antialias Type", xim->antialiasType);
+ strcat (text, line);
+ strcat (text, "\n");
+
+ cm = &colormaps[DEF_COLORMAP-1];
+ strcpy (cmapname, cm->name);
+ sprintf (line, "%20s: %s\n", "Current Colormap", cmapname);
+ strcat (text, line);
+ sprintf (line, "%20s: %d\n", "Colormaps Available", ncolormaps);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "User Cmap 1", xim->userCMap1);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "User Cmap 2", xim->userCMap1);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Cmap Dir 1", xim->userCMapDir1);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Cmap Dir 2", xim->userCMapDir2);
+ strcat (text, line);
+ strcat (text, "\n");
+ sprintf (line, "%20s: %s\n", "Printer Config", xim->printConfig);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Printer File", xim->pcp->printFile);
+ strcat (text, line);
+ sprintf (line, "%20s: %s\n", "Printer Cmd", xim->pcp->printCmd);
+ strcat (text, line);
+}
+
+
+/* INFO_CLIENTS -- Helper routine to report client (display or ISM) state.
+ */
+info_clients (xim, text)
+register XimDataPtr xim;
+char *text;
+{
+ register IsmModule ism;
+ register int i;
+ char line[SZ_LINE], path[80];
+ extern ismModule ism_modules[];
+ extern int ism_nmodules;
+
+ strcpy (text, "\t\tClient Communications Channels\n\n");
+
+ strcat (text, " Display Client Connections\t ");
+ strcat (text, "ISM Client Connections\n");
+ strcat (text, " --------------------------\t ");
+ strcat (text, "----------------------\n");
+
+ if (xim->port)
+ sprintf (line, " inet: %d\t\t\t ", xim->port);
+ else
+ sprintf (line, " inet: Disabled\t\t");
+ strcat (text, line);
+
+ sprintf (path, xim->ism_addr, getuid());
+ sprintf (line, "unix: %s\n", path);
+ strcat (text, line);
+
+ if (strcmp(xim->unixaddr, "none") != 0) {
+ sprintf (path, xim->unixaddr, getuid());
+ sprintf (line, " unix: %s\n", path);
+ } else
+ sprintf (line, " unix: Disabled\n");
+ strcat (text, line);
+
+ if (strcmp(xim->input_fifo,"") != 0 &&
+ strcmp(xim->input_fifo,"none") != 0)
+ sprintf (line, " fifo: %s\n\t %s\n\n",
+ xim->input_fifo, xim->output_fifo);
+ else
+ sprintf (line, " fifo: Disabled\n\n");
+ strcat (text, line);
+
+ strcat (text, "\n");
+ strcat (text, "\t\t Available ISM Components\n\n");
+ strcat (text, " Name Channel Command\n");
+ strcat (text, " ---- ------- -------\n");
+ for (i=0; i < ism_nmodules; i++) {
+ ism = &ism_modules[i];
+ sprintf (line, " %-9.9s %-15.15s '%s'\n",
+ ism->name,
+ (ism->connected ? ism->chan->path : "Disabled"),
+ ism->command);
+ strcat (text, line);
+ }
+}
+
+
+/* INFO_WCS -- Helper routine to report WCS and mapping information for
+ * each frame in the display.
+ */
+info_wcs (xim, text)
+register XimDataPtr xim;
+char *text;
+{
+ register FrameBufPtr fr = xim->df_p;
+ register CtranPtr ct = &fr->ctran;
+ register int i;
+ MappingPtr mp = (MappingPtr) NULL;
+ char line[SZ_LINE];
+
+ /* Write the current frame WCS. */
+ sprintf (line,
+ "\t\tFrame %d WCS & Mappings\n\t\t------------------------\n\n",
+ fr->frameno);
+ strcat (text, line);
+
+ strcat (text, "Frame WCS:\n");
+ sprintf (line, " a = %9.3f\t b = %9.3f %s\n",
+ ct->a, ct->b, "# Scale factors");
+ strcat (text, line);
+
+ sprintf (line, " c = %9.3f\t d = %9.3f %s\n",
+ ct->c, ct->d, "# Cross factors");
+ strcat (text, line);
+
+ sprintf (line, " tx = %9.3f\tty = %9.3f %s\n",
+ ct->tx, ct->ty, "# Translation");
+ strcat (text, line);
+ sprintf (line, " z1 = %9.3f\tz2 = %9.3f %s\n",
+ ct->z1, ct->z2, "# z-scale range");
+ strcat (text, line);
+
+ sprintf (line, " zt = %9s\t%30s\n",
+ (ct->zt == W_UNITARY ? "unitary" :
+ (ct->zt == W_LINEAR ? "linear" :
+ (ct->zt == W_LOG ? "log" : "unknown"))),
+ "# z-scale type\n");
+ strcat (text, line);
+
+
+ fr = (FrameBufPtr) NULL;
+ for (i=0; i < xim->nframes; i++) {
+ fr = &xim->frames[i];
+ if (xim->display_frame == fr->frameno)
+ break;
+ }
+
+ if (!fr) {
+ strcat (text, " \n \n");
+ return;
+ }
+
+ for (i=0; i < fr->nmaps; i++) {
+ mp = &(fr->mapping[i]);
+ ct = &(mp->ctran);
+
+ sprintf (line, "\nMapping %d: \n", mp->id);
+ strcat (text, line);
+
+ sprintf (line, " a = %7.3f b = %7.3f\n", ct->a, ct->b);
+ strcat (text, line);
+ sprintf (line, " c = %7.3f d = %7.3f\n", ct->c, ct->d);
+ strcat (text, line);
+ sprintf (line, " tx = %7.3f ty = %7.3f\n", ct->tx, ct->ty);
+ strcat (text, line);
+ sprintf (line, " z1 = %7.3f z2 = %7.3f\tzt: %s\n",
+ ct->z1, ct->z2,
+ (ct->zt == W_UNITARY ? "unitary" :
+ (ct->zt == W_LINEAR ? "linear" :
+ (ct->zt == W_LOG ? "log" : "unknown"))) );
+ strcat (text, line);
+
+ sprintf (line, " region %d: %s\n", mp->regid, mp->region);
+ strcat (text, line);
+ sprintf (line, " src: x=%9f y=%9f nx=%d ny=%d\n",
+ mp->sx, mp->sy, mp->snx, mp->sny);
+ strcat (text, line);
+ sprintf (line, " dest: x=%9d y=%9d nx=%d ny=%d\n",
+ mp->dx, mp->dy, mp->dnx, mp->dny);
+
+ strcat (text, line);
+ sprintf (line, " ref: %s\n", mp->ref);
+ strcat (text, line);
+ }
+ strcat (text, " \n \n");
+}
+
+
+/* INFO_IMTOOLRC -- Helper routine to report the frame buffer configuration
+ * table.
+ */
+info_imtoolrc (xim, text)
+register XimDataPtr xim;
+char *text;
+{
+ register int last_fb_used = MAX_FBCONFIG;
+ register int i, w, h, nf, fb_config = xim->fb_configno;
+ char line[SZ_LINE];
+
+ strcpy (text, " Frame Buffer Configuration Table\n");
+ strcat (text, " --------------------------------\n\n");
+
+ sprintf (line, " Imtoolrc File: %s\n", xim->imtoolrc);
+ strcat (text, line);
+ strcat (text, "\n Config NFrames\tWidth\tHeight\n");
+ strcat (text, " ------ -------\t-----\t------\n");
+
+ /* Find the index of the last FB defined. */
+ for (i=MAX_FBCONFIG; i > 1; i--)
+ if (xim->fb_config[i-1].width != DEF_FRAME_WIDTH ||
+ xim->fb_config[i-1].height != DEF_FRAME_HEIGHT) {
+ last_fb_used = i;
+ break;
+ }
+
+ /* Print out the frame buffer configurations. */
+ for (i=1; i <= last_fb_used; i++) {
+ w = xim->fb_config[i-1].width;
+ h = xim->fb_config[i-1].height;
+ nf = xim->fb_config[i-1].nframes;
+ if (i > 1 && (w == DEF_FRAME_WIDTH && h == DEF_FRAME_HEIGHT)) {
+ sprintf (line, " %4d\t\t 0\t n/a\t n/a\n", i);
+ } else {
+ sprintf (line, " %4d\t\t%2d\t%5d\t%5d\t %s\n",
+ i, nf, w, h, ((i==fb_config) ? "<--- current" : " "));
+ }
+ strcat (text, line);
+ }
+ strcat (text, " \n \n");
+}
+
+
+/* windowRGB -- Window an individual component of an RGB colormap. We start
+ * with the currently defined cmap and scale it's component by the given
+ * offset and slope. A 'save' flag is set when the button is released meaning
+ * the user is done with that component and the loaded colormap is updated,
+ * otherwise continue changing that color from the previous call allowing us
+ * to window the color progressively. The GUI's 'initialize' option should
+ * restore the original colormap. [This is still test code.]
+ *
+ * Usage: windowRGB <color> <offset> <scale> <save>
+ *
+ * Options: color color to manipulate (1=Red,2=Green,3=Blue)
+ * offset offset of transformation
+ * scale slope of transformation
+ * save save to loaded colormap when complete?
+ */
+
+static int
+windowRGB (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register FrameBufPtr fb = xim->df_p;
+ register ColorMapPtr cm;
+ int color, first, nelem, maxelem, save = 0;
+ unsigned short r[MAX_COLORS];
+ unsigned short g[MAX_COLORS];
+ unsigned short b[MAX_COLORS];
+ char buf[SZ_LINE];
+
+
+ if (argc > 1) {
+ cm = &colormaps[fb->colormap-1];
+ color = atoi(argv[1]);
+ fb->offset = atof(argv[2]);
+ fb->scale = (argc > 2) ? (float)atof(argv[3]) : fb->scale;
+ save = atoi(argv[4]);
+
+ /* Query and read the current colormap. */
+ GtQueryColormap (xim->gt, cm->mapno, &first, &nelem, &maxelem);
+ GtReadColormap (xim->gt, cm->mapno, first, nelem, r,g,b);
+
+ /* compute the scaled colormap, scaling only the color we're
+ * interested in.
+ */
+ switch (color) {
+ case 1:
+ cmapScale (r, nelem, first, fb->offset, fb->scale);
+ break;
+ case 2:
+ cmapScale (g, nelem, first, fb->offset, fb->scale);
+ break;
+ case 3:
+ cmapScale (b, nelem, first, fb->offset, fb->scale);
+ break;
+ }
+
+ /* Lastly, write it back to the widget. */
+ GtWriteColormap (xim->gt, 0, first, nelem, r, g, b);
+ if (save)
+ GtWriteColormap (xim->gt, cm->mapno, first, nelem, r, g, b);
+ }
+
+ return (TCL_OK);
+}
+
+
+/* cmapScale -- Given a single-color cmap scale it with the given offset and
+ * slope, the scaling is done in place.
+ */
+
+cmapScale (map, ncells, first, offset, slope)
+unsigned short map[MAX_COLORS];
+int ncells, first;
+float offset, slope;
+{
+ register int i, c1, c2;
+ register float x, y, z, frac;
+ unsigned short val, out[MAX_COLORS];
+
+ for (i=0; i < ncells; i++) {
+ x = (float)i / (float)(ncells - 1);
+ y = (x - offset) * slope + 0.5;
+
+ if (y <= 0.0) {
+ val = map[first];
+ } else if (y >= 1.0) {
+ val = map[ncells-1];
+ } else {
+ z = y * (ncells - 1);
+ c1 = (int)z;
+ c2 = min (ncells-1, c1 + 1);
+ frac = z - c1;
+ val = map[c1] * (1.0 - frac) + map[c2] * frac;
+ }
+
+ out[i] = val;
+ }
+
+ for (i=0; i < MAX_COLORS; i++)
+ map[i] = out[i];
+}
+
+
+
+/* ISM_START -- Start the ISM task. The named task must be listed in
+ * the array of ISM modules.
+ *
+ * Usage: ism_start task
+ */
+static int
+ism_start (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register IsmModule ism;
+
+ if (argc < 2)
+ return (TCL_ERROR);
+
+ /* Lookup the command for the task and start it.
+ */
+ if ((ism = ismNameToPtr (argv[1]))) {
+ system (ism->command);
+ return (TCL_OK);
+ }
+
+ /* Task not found, return an error. */
+ return (TCL_ERROR);
+}
+
+
+/* ISM_STOP -- Stop the ISM task. The named task is told to shut itself
+ * down by executing the registered shutdown callback. We return OK if
+ * the shutdown can be executed, an ERR is returned if the named task is
+ * not currently running.
+ *
+ * Usage: ism_stop task
+ */
+static int
+ism_stop (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register IsmModule ism;
+
+ if (argc < 2)
+ return (TCL_ERROR);
+
+ /* Lookup the command for the task and stop it. */
+ if ((ism = ismNameToPtr (argv[1]))) {
+ (*ism->shutdownCB) (xim, ism);
+ ism->connected = 0;
+ return (TCL_OK);
+ }
+
+ /* Task not found, return an error. */
+ return (TCL_ERROR);
+}
+
+
+/* ISM_CMD -- Send a command to the named ISM command callback. Return
+ * values are sent as messages to the GUI 'ism_msg' parameter object, we
+ * simply pass the argv to the appropriate function.
+ *
+ * Usage: ism_cmd task <args>
+ */
+static int
+ism_cmd (xc, tcl, argc, argv)
+register XimClientPtr xc;
+Tcl_Interp *tcl;
+int argc;
+char **argv;
+{
+ register XimDataPtr xim = xc->xim;
+ register IsmModule ism;
+ char **cmd_argv;
+ int cmd_argc;
+
+ if (argc < 2)
+ return (TCL_ERROR);
+
+ /* Lookup the command callback for the task and run it. */
+ if ((ism = ismNameToPtr (argv[1]))) {
+
+ /* Get local copy of argc and argv containing only the commands
+ * for the ISM callback.
+ */
+ if ((cmd_argc = (argc - 2) > 0)) {
+ cmd_argv = (char **) XtMalloc (cmd_argc * sizeof(char *));
+ memmove (cmd_argv, &argv[2], cmd_argc * sizeof(char *));
+ }
+
+ /* Process the command. */
+ (*ism->commandCB) (xim, ism, cmd_argc, cmd_argv);
+ return (TCL_OK);
+ }
+
+ /* Task not found, return an error. */
+ return (TCL_ERROR);
+}
diff --git a/vendor/x11iraf/ximtool/ximprint.cfg b/vendor/x11iraf/ximtool/ximprint.cfg
new file mode 100644
index 00000000..e552f2cd
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximprint.cfg
@@ -0,0 +1,30 @@
+default lpr
+clp lpr -Pclp
+clp2 lpr -Pclp2
+clp2t lpr -Pclp2t
+lw1 lpr -Plw1
+lw2 lpr -Plw2
+lw2 lpr -Plw3
+lw4 lpr -Plw4
+lw5 lpr -Plw5
+lw6 lpr -Plw6
+lw7 lpr -Plw7
+lw8 lpr -Plw8
+lw9 lpr -Plw9
+lw10 lpr -Plw10
+lw11 lpr -Plw11
+lw12 lpr -Plw12
+lw13 lpr -Plw13
+lw14 lpr -Plw14
+lw15 lpr -Plw15
+lw16 lpr -Plw16
+lw18 lpr -Plw18
+lw19 lpr -Plw19
+lw20 lpr -Plw20
+lw21 lpr -Plw21
+lw22 lpr -Plw22
+lw23 lpr -Plw23
+lw24 lpr -Plw24
+lw25 lpr -Plw25
+lw26 lpr -Plw26
+lw27 lpr -Plw27
diff --git a/vendor/x11iraf/ximtool/ximtool-alt.csh b/vendor/x11iraf/ximtool/ximtool-alt.csh
new file mode 100755
index 00000000..631723ef
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool-alt.csh
@@ -0,0 +1,98 @@
+#!/bin/csh -f
+#
+# XIMTOOL-ALT -- Script wrapper to start XImtool using the alternate GUI.
+# The GUI file is contained is this script which is created when the system
+# is built, it may be used to run any alternate GUI by simply replacing the
+# Tcl script making up the GUI at the end of this script or by using the
+# "-gui" command line flag. The only configurable item is the path to the
+# XImtool binary to be used, by default the one found in the user's path will
+# be used.
+# Arguments specific to this GUI include:
+#
+# -showToolBar <bool> show toolbar on startup
+# -showPanelBar <bool> show panelbar on startup
+#
+#----------------------------------------------------------------------------
+
+# Configurable parameters
+set XIMTOOL = ximtool # Path to default ximtool binary
+
+
+#------------------------------------------------------------------
+#--------------- Do not modify below this line --------------------
+#------------------------------------------------------------------
+unset noclobber
+onintr cleanup
+
+set SKIP = 99 # offset to GUI file
+
+# Dump the GUI from this script file.
+tail +$SKIP $0 > /tmp/_gui.$$
+
+# Check for no arguments.
+set q = '"'
+set cmd = "-gui /tmp/_gui.$$ -title $q XImtool V1.3 - Alternative GUI $q"
+
+# Process the script arguments, quoting args when necessary.
+if ($#argv > 0) then
+ while ("$1" != "")
+ if ("$1" == "-xrm") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-xrm <resource>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q$1$q"
+ else if ("$1" == "-help") then
+ $XIMTOOL -help
+ exit 0
+ else if ("$1" == "-defgui") then
+ tail +$SKIP $0
+ exit 0
+ else if ("$1" == "-showToolBar") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-showToolBar <bool>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q XImtool.showToolBar:$1$q"
+ else if ("$1" == "-showPanelBar") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-showPanelBar <bool>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q XImtool.showPanelBar:$1$q"
+ else
+ set cmd = "$cmd $1"
+ endif
+
+ if ("$2" == "") then
+ break
+ else
+ shift
+ endif
+ end
+endif
+
+# Run the command.
+echo "$XIMTOOL $cmd ; /bin/rm -f /tmp/_gui*.$$" > /tmp/_gui.cmds.$$
+sh /tmp/_gui.cmds.$$
+exit 0
+
+cleanup:
+ /bin/rm -f /tmp/_gui*.$$
+ exit 0
+
+#--------------------------------------------------------------------------
+#-------------------------- XIMTOOL-ALT.GUI -------------------------------
+#------ ------
+#------ To change the GUI run by this script just delete everything ------
+#------ below here and replace with the new GUI Tcl script. ------
+#------ ------
+#--------------------------------------------------------------------------
+#--------------------------------------------------------------------------
+
diff --git a/vendor/x11iraf/ximtool/ximtool-alt.gui b/vendor/x11iraf/ximtool/ximtool-alt.gui
new file mode 120000
index 00000000..ef8416c6
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool-alt.gui
@@ -0,0 +1 @@
+ximtool.gui \ No newline at end of file
diff --git a/vendor/x11iraf/ximtool/ximtool-old.csh b/vendor/x11iraf/ximtool/ximtool-old.csh
new file mode 100755
index 00000000..37e859aa
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool-old.csh
@@ -0,0 +1,78 @@
+#!/bin/csh -f
+#
+# XIMTOOL-OLD -- Script wrapper to start XImtool using the original GUI.
+# The GUI file is contained is this script which is created when the system
+# is built, it may be used to run any alternate GUI by simply replacing the
+# Tcl script making up the GUI at the end of this script or by using the
+# "-gui" command line flag. The only configurable item is the path to the
+# XImtool binary to be used, by default the one found in the user's path will
+# be used.
+#
+#----------------------------------------------------------------------------
+
+# Configurable parameters
+set XIMTOOL = ximtool # Path to default ximtool binary
+
+
+#------------------------------------------------------------------
+#--------------- Do not modify below this line --------------------
+#------------------------------------------------------------------
+unset noclobber
+onintr cleanup
+
+set SKIP = 79 # offset to GUI file
+
+# Dump the GUI from this script file.
+tail +$SKIP $0 > /tmp/_gui.$$
+
+# Check for no arguments.
+set q = '"'
+set cmd = "-gui /tmp/_gui.$$ -title $q XImtool V1.4 - Original GUI $q"
+
+# Process the script arguments, quoting args when necessary.
+if ($#argv > 0) then
+ while ("$1" != "")
+ if ("$1" == "-xrm") then
+ if ("$2" != "") then
+ shift
+ else
+ echo "missing argument to '-xrm <resource>' switch"
+ exit 1
+ endif
+ set cmd = "$cmd -xrm $q$1$q"
+ else if ("$1" == "-help") then
+ $XIMTOOL -help
+ exit 0
+ else if ("$1" == "-defgui") then
+ tail +$SKIP $0
+ exit 0
+ else
+ set cmd = "$cmd $1"
+ endif
+
+ if ("$2" == "") then
+ break
+ else
+ shift
+ endif
+ end
+endif
+
+# Run the command.
+echo "$XIMTOOL $cmd ; /bin/rm -f /tmp/_gui*.$$" > /tmp/_gui.cmds.$$
+sh /tmp/_gui.cmds.$$
+exit 0
+
+cleanup:
+ /bin/rm -f /tmp/_gui*.$$
+ exit 0
+
+#--------------------------------------------------------------------------
+#-------------------------- XIMTOOL-OLD.GUI -------------------------------
+#------ ------
+#------ To change the GUI run by this script just delete everything ------
+#------ below here and replace with the new GUI Tcl script. ------
+#------ ------
+#--------------------------------------------------------------------------
+#--------------------------------------------------------------------------
+
diff --git a/vendor/x11iraf/ximtool/ximtool-old.gui b/vendor/x11iraf/ximtool/ximtool-old.gui
new file mode 100644
index 00000000..9ffde34a
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool-old.gui
@@ -0,0 +1,10873 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL.GUI -- Default GUI for the Ximtool image display server.
+#
+# Version 2.0 -- BETA VERSION
+
+
+set Version "NOAO/IRAF XImtool Version 2.0BETA"
+
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display \
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton \
+ menubar MenuButton viewButton \
+ menubar MenuButton optionsButton \
+ menubar Label imageTitle \
+ menubar Toggle controlButton \
+ menubar Toggle xflipButton \
+ menubar Toggle yflipButton \
+ menubar Command prevButton \
+ menubar MenuButton frameButton \
+ menubar Command nextButton \
+ menubar Toggle helpButton \
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+ display Slider2d focusSlider\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+}
+
+
+set Objects(panelShell) { \
+ toplevel TopLevelShell panelShell\
+ panelShell Layout panel\
+\
+ panel Frame panelMenuFrame\
+ panelMenuFrame Layout panelMenuBar\
+ panelMenuBar Command panelHelp\
+ panelMenuBar Command panelClose\
+\
+ panel Frame tabFrame\
+ tabFrame Tabs panelTabs\
+ panelTabs Frame display_panel\
+ panelTabs Frame print_panel\
+ panelTabs Frame load_panel\
+ panelTabs Frame save_panel\
+ panelTabs Frame info_panel\
+ panelTabs Frame tile_panel\
+ panelTabs Frame wcs_panel\
+\
+\
+ display_panel Layout controlPanel\
+ controlPanel Group viewBox\
+ controlPanel Group enhancementBox\
+ controlPanel Group blinkBox\
+ controlPanel Group optionsBox\
+ controlPanel Frame controlBox\
+\
+ viewBox Layout view\
+ view Group frameSelect\
+ frameSelect Layout frameBox\
+ frameBox Box frlistBox\
+ frlistBox Viewport framePort\
+ framePort Layout frameList\
+ frameList TextToggle frame1\
+ frameList TextToggle frame2\
+ frameList TextToggle frame3\
+ frameList TextToggle frame4\
+ frameList TextToggle frame5\
+ frameList TextToggle frame6\
+ frameList TextToggle frame7\
+ frameList TextToggle frame8\
+ frameList TextToggle frame9\
+ frameList TextToggle frame10\
+ frameList TextToggle frame11\
+ frameList TextToggle frame12\
+ frameList TextToggle frame13\
+ frameList TextToggle frame14\
+ frameList TextToggle frame15\
+ frameList TextToggle frame16\
+ frameBox Command prevFrame\
+ frameBox Command nextFrame\
+ view Frame frameDataBox\
+ frameDataBox TextBox frameData\
+ view Group zoomBox\
+ zoomBox Layout zoom\
+ zoom TextButton toggleZoom\
+ zoom TextButton zoomIn\
+ zoom Command x1\
+ zoom Command z2\
+ zoom Command z3\
+ zoom Command z4\
+ zoom Command z5\
+ zoom Command z8\
+ zoom TextButton zoomOut\
+ zoom TextButton centerFrame\
+ zoom Command d2\
+ zoom Command d3\
+ zoom Command d4\
+ zoom Command d5\
+ zoom Command d8\
+ view Layout viewButtons\
+ viewButtons Command aspect\
+ viewButtons Command flipX\
+ viewButtons Command flipY\
+ viewButtons Command flipXY\
+ viewButtons Command clearFrame\
+ viewButtons Command fitFrame\
+\
+ enhancementBox Layout enhance\
+ enhance Frame colorlistFrame\
+ colorlistFrame Viewport colorlistView\
+ colorlistView MultiList colorlist\
+ enhance Frame colordataFrame\
+ colordataFrame TextBox colordata\
+ enhance Label contrastLabel\
+ enhance Slider2d contrastSlider\
+ enhance Label brightnessLabel\
+ enhance Slider2d brightnessSlider\
+ enhance Command invertButton\
+ enhance Command optimizeButton\
+\
+ blinkBox Layout blink\
+ blink Label blinkFramesLabel\
+ blink Command blinkFrame1\
+ blink Command blinkFrame2\
+ blink Command blinkFrame3\
+ blink Command blinkFrame4\
+ blink Toggle blinkPanel\
+ blink Command blinkReset\
+ blink Label blinkRateLabel\
+ blink Frame BRframe\
+ BRframe Layout BRlayout\
+ BRlayout Arrow BRdecrease\
+ BRlayout TextBox BRtext\
+ BRlayout Arrow BRincrease\
+ blink Command registerButton\
+ blink Command matchButton\
+ blink TextToggle blinkButton\
+ blink TextToggle autoregButton\
+\
+ optionsBox TextToggle pannerButton\
+ optionsBox TextToggle magnifierButton\
+ optionsBox TextToggle coordsBoxButton\
+ optionsBox TextToggle autoscaleButton\
+ optionsBox TextToggle antialiasButton\
+ optionsBox TextToggle tileFramesButton\
+ optionsBox TextToggle warningsButton\
+ optionsBox TextToggle peakupButton\
+\
+ controlBox Layout control\
+ control Command initializeButton\
+ control Command normalizeButton\
+\
+\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+ optLayout Group annOptsGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage TextToggle epsSquareButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage TextToggle epsB5Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame\
+ ScaleFrame Layout ScaleLayout\
+ ScaleLayout Arrow SCdecrease\
+ ScaleLayout TextBox SCtext\
+ ScaleLayout Arrow SCincrease\
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle compressButton\
+\
+ annOptsGroup Layout annOpts\
+ annOpts TextToggle annotateButton\
+ annOpts TextToggle colorbarButton\
+ annOpts TextToggle titleButton\
+ annOpts TextToggle bordersButton\
+ annOpts Label titleLabel\
+ annOpts Frame titleFrame\
+ titleFrame AsciiText titleString\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers\
+ printers Frame printlistFrame\
+ printlistFrame Viewport printlistView\
+ printlistView MultiList printlist\
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout Command okayPrint\
+ cmdLayout Label printStatus\
+\
+\
+ load_panel Layout filesLayout\
+ filesLayout Group imlistGroup\
+ imlistGroup Layout imlistLayout\
+ imlistLayout Command rootButton\
+ imlistLayout Command homeButton\
+ imlistLayout Command upButton\
+ imlistLayout Command rescanButton\
+ imlistLayout Label dirLabel\
+ imlistLayout Label fnameLabel\
+ imlistLayout Frame filnamFrame\
+ filnamFrame AsciiText fnameText\
+ imlistLayout Label imtemplateLabel\
+ imlistLayout Frame imtemplateFrame\
+ imtemplateFrame AsciiText imtemplateText\
+ imlistLayout Label imlistLabel\
+ imlistLayout Frame imlistFrame\
+ imlistFrame Viewport imlistView\
+ imlistView MultiList imageList\
+\
+ filesLayout Group imoptsGroup\
+ imoptsGroup Layout imoptsLayout\
+ imoptsLayout TextToggle grayscale\
+ imoptsLayout TextToggle autoload\
+ imoptsLayout TextToggle browseHdrs\
+ imoptsLayout TextToggle zscale\
+ imoptsLayout TextToggle zrange\
+ imoptsLayout Label z1Label\
+ imoptsLayout Frame z1Frame\
+ z1Frame AsciiText z1Value\
+ imoptsLayout Label z2Label\
+ imoptsLayout Frame z2Frame\
+ z2Frame AsciiText z2Value\
+ imoptsLayout Label nsampLabel\
+ imoptsLayout Frame nsampFrame\
+ nsampFrame AsciiText nsampValue\
+ imoptsLayout Label frameLabel\
+ imoptsLayout MenuButton frameFrame\
+\
+ filesLayout Group loadCmdGroup\
+ loadCmdGroup Layout loadCmdLayout\
+ loadCmdLayout Command filesLoadButton\
+ loadCmdLayout Label filesStatus\
+\
+\
+ save_panel Layout saveLayout\
+ saveLayout Group saveNameGroup\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveLayout Group saveOptGroup\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox\
+ saveDataBox TextBox saveData\
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle epsButton\
+ formats TextToggle x11Button\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveLayout Group saveCmdGroup\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout Command okaySave\
+ saveCmdLayout Label saveStatus\
+\
+\
+ info_panel Layout infoLayout\
+ infoLayout Group infoBox\
+ infoBox Layout infoBoxL\
+ infoBoxL Frame infoFrame\
+ infoFrame AsciiText infoText\
+ infoBoxL TextToggle infoOptFr\
+ infoBoxL TextToggle infoOptWCS\
+ infoBoxL TextToggle infoOptSvr\
+ infoBoxL TextToggle infoOptClients\
+ infoBoxL TextToggle infoOptIsm\
+ infoBoxL TextToggle infoOptFB\
+\
+\
+ wcs_panel Layout wcsLayout\
+ wcsLayout Group wcsGroup\
+ wcsGroup Layout wcsBox\
+\
+ wcsBox Frame wcsFrame\
+ wcsFrame Layout wcsText\
+ wcsText AsciiText wtName\
+ wcsText AsciiText wtTitle\
+ wcsText AsciiText wtFBCfg\
+ wcsText AsciiText wtIPixval\
+ wcsText AsciiText wtSPixval\
+ wcsText AsciiText wtBPixval\
+ wcsText AsciiText wtWcs1\
+ wcsText AsciiText wtWcs2\
+ wcsText AsciiText wtWcs3\
+ wcsText AsciiText wtWcs4\
+\
+ wcsBox TextToggle ismToggle\
+ wcsBox TextToggle pixelTable\
+ wcsBox TextToggle imageHeader\
+ wcsBox TextToggle compass\
+ wcsBox TextToggle wcsOptions\
+\
+\
+ wcsLayout Group wcsOptGroup\
+ wcsOptGroup Layout wcsOptLayout\
+\
+ wcsOptLayout Group wcsCoords\
+ wcsCoords Layout wcLayout\
+ wcLayout Label wcTitle\
+ wcLayout Frame wcLine\
+ wcLayout Label wlWcs1\
+ wcLayout Label wlWcs2\
+ wcLayout Label wlWcs3\
+ wcLayout Label wlWcs4\
+ wcLayout MenuButton sysWcs1\
+ wcLayout MenuButton sysWcs2\
+ wcLayout MenuButton sysWcs3\
+ wcLayout MenuButton sysWcs4\
+ wcLayout MenuButton fmtWcs1\
+ wcLayout MenuButton fmtWcs2\
+ wcLayout MenuButton fmtWcs3\
+ wcLayout MenuButton fmtWcs4\
+ wcLayout TextToggle wpWcs1\
+ wcLayout TextToggle wpWcs2\
+ wcLayout TextToggle wpWcs3\
+ wcLayout TextToggle wpWcs4\
+ wcLayout TextToggle wiWcs1\
+ wcLayout TextToggle wiWcs2\
+ wcLayout TextToggle wiWcs3\
+ wcLayout TextToggle wiWcs4\
+\
+ wcsOptLayout Group wcsOpts\
+ wcsOpts Layout woLayout\
+ woLayout TextToggle woptLabels\
+ woLayout TextToggle woptTitles\
+ woLayout TextToggle woptFBinfo\
+ woLayout TextToggle woptBPM\
+\
+ wcsOptLayout Group wcsIsmGroup\
+ wcsIsmGroup Layout wcsIsmLayout\
+ wcsIsmLayout Label wcsIsmLabel\
+ wcsIsmLayout Frame wcsIsmFrame\
+ wcsIsmFrame AsciiText wcsIsmCmd\
+ wcsIsmLayout Command wcsIsmInit\
+\
+\
+ tile_panel Frame tileOpts\
+ tileOpts Layout toptLayout\
+ toptLayout Group tFramesG\
+ toptLayout Group tileMode\
+ tileMode TextToggle tileDisabled\
+ tileMode TextToggle tileManual\
+ tileMode TextToggle tileBest\
+ tileMode TextToggle tileSquare\
+ tileMode TextToggle tileHorizontal\
+ tileMode TextToggle tileVertical\
+ tileMode TextToggle tileRow\
+ tileMode TextToggle tileCol\
+ toptLayout Group userOrientG\
+ toptLayout Group fillStyle\
+ fillStyle TextToggle byCols\
+ fillStyle TextToggle bottomUp\
+ toptLayout Group tileLabel\
+ tileLabel TextToggle labelImname\
+ tileLabel TextToggle labelTitles\
+ tileLabel TextToggle labelFrames\
+ toptLayout Frame geomFrame\
+ geomFrame Label tileGeometry\
+\
+ userOrientG Layout userOrientL\
+ userOrientL Label nrowLab\
+ userOrientL Frame nrFrame\
+ nrFrame Layout nrLayout\
+ nrLayout Arrow nrdecrease\
+ nrLayout Label nrtext\
+ nrLayout Arrow nrincrease\
+ userOrientL Label ncolLab\
+ userOrientL Frame ncFrame\
+ ncFrame Layout ncLayout\
+ ncLayout Arrow ncdecrease\
+ ncLayout Label nctext\
+ ncLayout Arrow ncincrease\
+\
+ tFramesG Layout tFrames\
+ tFrames Command tAll\
+ tFrames Command tNone\
+ tFrames Toggle tFrame1\
+ tFrames Toggle tFrame2\
+ tFrames Toggle tFrame3\
+ tFrames Toggle tFrame4\
+ tFrames Toggle tFrame5\
+ tFrames Toggle tFrame6\
+ tFrames Toggle tFrame7\
+ tFrames Toggle tFrame8\
+ tFrames Toggle tFrame9\
+ tFrames Toggle tFrame10\
+ tFrames Toggle tFrame11\
+ tFrames Toggle tFrame12\
+ tFrames Toggle tFrame13\
+ tFrames Toggle tFrame14\
+ tFrames Toggle tFrame15\
+ tFrames Toggle tFrame16\
+}
+
+
+set Objects(parameters) { \
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter cmfocus\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter tileOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help\
+ ximtool Parameter info\
+ ximtool Parameter ism_msg\
+}
+
+
+set Objects(help_panel) { \
+ toplevel TopLevelShell help_panel\
+ help_panel Layout helpLayout\
+ helpLayout Group helpMenuGroup\
+ helpMenuGroup Layout helpMenubar\
+ helpLayout Layout helpInfoLayout\
+\
+ helpMenubar Command helpClose\
+\
+ helpLayout Command helpBack\
+ helpLayout Command helpForward\
+ helpLayout Command helpHome\
+ helpLayout Frame hfFrame\
+ hfFrame AsciiText hfEntry\
+ helpLayout Command hfFind\
+ helpLayout Command hfClear\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText\
+\
+ helpInfoLayout Label helpIRAFLogo\
+ helpInfoLayout Label helpInfo1\
+ helpInfoLayout Label helpInfo2\
+ helpInfoLayout Label helpInfo3\
+ helpInfoLayout Label helpNOAOLogo\
+}
+
+
+set Objects(blink_panel) { \
+ toplevel TopLevelShell blink_panel\
+ blink_panel Layout bpLayout\
+\
+ bpLayout Frame brMenuFrame\
+ brMenuFrame Layout brMenuBar\
+ brMenuBar Command brClose\
+\
+ bpLayout Frame brFrame\
+ brFrame Layout brLayout\
+\
+ brLayout Group brFramesG\
+ brFramesG Layout brFrames\
+ brFrames MenuButton brFrame1\
+ brFrames MenuButton brFrame2\
+ brFrames MenuButton brFrame3\
+ brFrames MenuButton brFrame4\
+ brFrames MenuButton brFrame5\
+ brFrames MenuButton brFrame6\
+ brFrames MenuButton brFrame7\
+ brFrames MenuButton brFrame8\
+ brFrames MenuButton brFrame9\
+ brFrames MenuButton brFrame10\
+ brFrames MenuButton brFrame11\
+ brFrames MenuButton brFrame12\
+ brFrames MenuButton brFrame13\
+ brFrames MenuButton brFrame14\
+ brFrames MenuButton brFrame15\
+ brFrames MenuButton brFrame16\
+\
+ brLayout Group brCmdG\
+ brCmdG Layout brCmd\
+ brCmd Command brReset\
+ brCmd Label brRateLabel\
+ brCmd Frame brBRframe\
+ brBRframe Layout brBRlayout\
+ brBRlayout Arrow brBRdecrease\
+ brBRlayout TextBox brBRtext\
+ brBRlayout Arrow brBRincrease\
+ brCmd Command brRegButton\
+ brCmd Command brMatchButton\
+ brCmd TextToggle brBlinkButton\
+ brCmd TextToggle brAregButton\
+}
+
+
+set Objects(hdr_panel) { \
+ toplevel TopLevelShell hdr_panel\
+ hdr_panel Layout hdrLayout\
+\
+ hdrLayout Frame hdrMenuFrame\
+ hdrMenuFrame Layout hdrMenuBar\
+ hdrMenuBar Command hdrClose\
+\
+ hdrLayout Group hdrObjGroup\
+ hdrObjGroup Layout hdrObjLayout\
+ hdrObjLayout Label hdrObjLabel\
+ hdrObjLayout MenuButton hdrObjMenu\
+\
+ hdrLayout Frame hdrTabFrame\
+ hdrTabFrame Tabs hdrTabs\
+ hdrTabs Group hdrHdrGroup\
+ hdrTabs Group hdrWcsGroup\
+\
+ hdrHdrGroup Layout hdrHdrLayout\
+ hdrHdrLayout Frame hFindFrame\
+ hFindFrame AsciiText hFindEntry\
+ hdrHdrLayout Command hdrFilter\
+ hdrHdrLayout Command hdrFind\
+ hdrHdrLayout Command hdrClear\
+ hdrHdrLayout HTML hdrText\
+\
+ hdrWcsGroup Layout hdrWcsLayout\
+ hdrWcsLayout Group hdrInfoGroup\
+ hdrInfoGroup Frame hdrIGFrame\
+ hdrIGFrame AsciiText hdrIGText\
+ hdrWcsLayout Group hdrKeywGroup\
+ hdrKeywGroup Frame hdrKGFrame\
+ hdrKGFrame AsciiText hdrKGText\
+}
+
+
+set Objects(pixel_table) { \
+ toplevel TopLevelShell pixel_panel\
+\
+ pixel_panel Layout pixel_table\
+ pixel_table Frame pixtabMenuFrame\
+ pixtabMenuFrame Layout pixtabMenuBar\
+ pixtabMenuBar MenuButton pixtabSize\
+ pixtabMenuBar Command pixtabHelp\
+ pixtabMenuBar Command pixtabClose\
+\
+ pixel_table Frame pixtabFrame\
+ pixtabFrame Porthole ptPort\
+ ptPort Layout ptLayout\
+ ptLayout Frame ptColFrame\
+ ptColFrame MultiList ptColLabs\
+ ptLayout Frame ptRowFrame\
+ ptRowFrame MultiList ptRowLabs\
+ ptLayout Frame ptFrame\
+ ptFrame MultiList pixtab\
+\
+ ptLayout Label meanLabel\
+ ptLayout Frame meanFrame\
+ meanFrame Label meanValue\
+\
+ ptLayout Label sigLabel\
+ ptLayout Frame sigFrame\
+ sigFrame Label sigValue\
+}
+
+
+set Objects(tcl_panel) { \
+ toplevel TopLevelShell tcl_panel\
+ tcl_panel Layout tclLayout\
+ tclLayout Group tclCmdGroup\
+ tclCmdGroup Layout tclCmd\
+ tclCmd Command tclClear\
+ tclCmd Command tclExecute\
+ tclCmd Command tclDismiss\
+ tclLayout Frame tclFrame\
+ tclFrame AsciiText tclEntry\
+}
+
+
+set Objects(warning) { \
+ toplevel TransientShell warning\
+ warning Layout warn\
+ warn Frame warnFrame\
+ warnFrame Layout WFlayout\
+ WFlayout Icon warnIcon\
+ WFlayout TextBox warnText\
+ warn Command warnOk\
+ warn Command warnCancel\
+}
+
+
+set Resources(global) { \
+
+ !---------------------------------------------------------
+ ! Define some global widget resources for the main panels.
+ !---------------------------------------------------------
+ *shadowWidth: 1
+ *background: #c4c4c4
+! *foreground: black
+ *Arrow.width: 16
+ *Arrow.height: 25
+ *Text*height: 21
+ *Command.height: 21
+ *Command.highlightThickness: 1
+ *MenuButton.height: 21
+ *MenuButton.highlightThickness: 1
+ *Label.borderWidth: 0
+ *Label.shadowWidth: 0
+ *TextButton.shadowWidth: 0
+ *TextButton.highlightThickness: 1
+ *TextToggle*borderWidth: 0
+ *TextToggle.highlightThickness: 0
+ *Toggle.highlightThickness: 1
+ *Group.shrinkToFit: True
+
+ *Arrow.foreground: gray
+ *Arrow.background: #adadad
+ *Text*background: #adadad
+ *AsciiText*background: #adadad
+ *TextBox.background: #adadad
+ *MultiList*background: #adadad
+ *Slider2d.thumbColor: #c4c4c4
+
+
+ !-------------------------------------------------------------
+ ! Define resources to take advantage of the 3D scrollbar look.
+ !-------------------------------------------------------------
+ *Scrollbar*background: #c4c4c4
+ *Scrollbar*shadowWidth: 1
+ *Scrollbar*width: 15
+ *Scrollbar*height: 15
+ *Scrollbar*cursorName: top_left_arrow
+ *Scrollbar*pushThumb: true
+
+ *HTML.Scrollbar.shadowWidth: 1
+ *HTML*Scrollbar*width: 15
+ *HTML*Scrollbar*height: 15
+
+
+ !----------------------------------------
+ ! Menu resources giving a shadow effect.
+ !----------------------------------------
+ *SmeBSB.leftMargin: 10
+ *SmeBSB.rightMargin: 5
+ *SmeBSB.shadowWidth: 2
+ *SmeBSB.foreground: #e5e5e5
+ *SmeBSB.background: SteelBlue
+ *SimpleMenu.background: #c4c4c4
+ *SimpleMenu.borderWidth: 2
+ *SimpleMenu.borderColor: black
+ *SimpleMenu.line1.foreground: #9c9c9c
+ *SimpleMenu.line2.foreground: #e8e8e8
+ *SimpleMenu.line3.foreground: #9c9c9c
+ *SimpleMenu.line4.foreground: #e8e8e8
+ *SimpleMenu.line5.foreground: #9c9c9c
+ *SimpleMenu.line6.foreground: #e8e8e8
+ *SimpleMenu.line7.foreground: #9c9c9c
+ *SimpleMenu.line8.foreground: #e8e8e8
+ *SimpleMenu.line9.foreground: #9c9c9c
+ *SimpleMenu.line10.foreground: #e8e8e8
+ *SimpleMenu.line11.foreground: #9c9c9c
+ *SimpleMenu.line12.foreground: #e8e8e8
+ *SimpleMenu.line13.foreground: #9c9c9c
+ *SimpleMenu.line14.foreground: #e8e8e8
+ *SimpleMenu.line15.foreground: #9c9c9c
+ *SimpleMenu.line16.foreground: #e8e8e8
+ *SimpleMenu.line17.foreground: #9c9c9c
+ *SimpleMenu.line18.foreground: #e8e8e8
+ *SimpleMenu.line19.foreground: #9c9c9c
+ *SimpleMenu.line20.foreground: #e8e8e8
+ *SimpleMenu.line21.foreground: #9c9c9c
+ *SimpleMenu.line22.foreground: #e8e8e8
+ *SimpleMenu.line23.foreground: #9c9c9c
+ *SimpleMenu.line24.foreground: #e8e8e8
+ *SimpleMenu.line25.foreground: #9c9c9c
+ *SimpleMenu.line26.foreground: #e8e8e8
+ *SimpleMenu.line27.foreground: #9c9c9c
+ *SimpleMenu.line28.foreground: #e8e8e8
+ *SimpleMenu.line29.foreground: #9c9c9c
+ *SimpleMenu.line30.foreground: #e8e8e8
+ *SimpleMenu.line31.foreground: #9c9c9c
+ *SimpleMenu.line32.foreground: #e8e8e8
+ *SimpleMenu.line33.foreground: #9c9c9c
+ *SimpleMenu.line34.foreground: #e8e8e8
+ *SimpleMenu.line35.foreground: #9c9c9c
+ *SimpleMenu.line36.foreground: #e8e8e8
+ *SimpleMenu.line37.foreground: #9c9c9c
+ *SimpleMenu.line38.foreground: #e8e8e8
+ *SimpleMenu.line39.foreground: #9c9c9c
+ *SimpleMenu.line40.foreground: #e8e8e8
+
+
+ !---------------------------------------------
+ ! Fixups for 24-bit displays
+ !---------------------------------------------
+ *hFindEntry.background: #adadad
+ *hdrIGText.background: #adadad
+ *hdrKGText.background: #adadad
+ *hfEntry.background: #adadad
+ *printcmd.background: #adadad
+ *titleString.background: #adadad
+ *fnameText.background: #adadad
+ *imtemplateText.background: #adadad
+ *z1Value.background: #adadad
+ *z2Value.background: #adadad
+ *nsampValue.background: #adadad
+ *saveFile.background: #adadad
+ *infoText.background: #adadad
+ *wtName.background: #adadad
+ *wtTitle.background: #adadad
+ *wtFBCfg.background: #adadad
+ *wtIPixval.background: #adadad
+ *wtSPixval.background: #adadad
+ *wtBPixval.background: #adadad
+ *wtWcs1.background: #adadad
+ *wtWcs2.background: #adadad
+ *wtWcs3.background: #adadad
+ *wtWcs4.background: #adadad
+ *wcsIsmCmd.background: #adadad
+ *tclEntry.background: #adadad
+
+ *hFindEntry.foreground: #000000
+ *hdrIGText.foreground: #000000
+ *hdrKGText.foreground: #000000
+ *hfEntry.foreground: #000000
+ *printcmd.foreground: #000000
+ *titleString.foreground: #000000
+ *fnameText.foreground: #000000
+ *imtemplateText.foreground: #000000
+ *z1Value.foreground: #000000
+ *z2Value.foreground: #000000
+ *nsampValue.foreground: #000000
+ *saveFile.foreground: #000000
+ *infoText.foreground: #000000
+ *wtName.foreground: #000000
+ *wtTitle.foreground: #000000
+ *wtFBCfg.foreground: #000000
+ *wtIPixval.foreground: #000000
+ *wtSPixval.foreground: #000000
+ *wtBPixval.foreground: #000000
+ *wtWcs1.foreground: #000000
+ *wtWcs2.foreground: #000000
+ *wtWcs3.foreground: #000000
+ *wtWcs4.foreground: #000000
+ *wcsIsmCmd.foreground: #000000
+ *tclEntry.foreground: #000000
+}
+
+
+
+
+
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: Black
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: Black
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.foreground: Black
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: Black
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: Black
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: Black
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 0
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ -2 \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ vcutFrame < * +inf -inf > \
+ } \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 plotOpts -4 } \
+ } \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ focusSlider 2 hcut 2 vcut 15 \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+ *focusSlider.location: 0 0 100 15
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 0
+ *hcutFrame.outerOffset: 0
+ *hcutPlot.color0: #c4c4c4
+ *hcutPlot.color1: black
+ *hcutPlot.color0: darkslategray
+ *hcutPlot.color1: #eeeee0
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 6
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ *vcutPlot.color0: #c4c4c4
+ *vcutPlot.color1: black
+ *vcutPlot.color0: darkslategray
+ *vcutPlot.color1: #eeeee0
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 6
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 40
+ *menuGroup.width: 518
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 1 < -1 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ controlButton 1 < -1 > \
+ 1 < -1 > \
+ xflipButton 1 < -1 > yflipButton \
+ 1 < -1 > \
+ prevButton 1 < -1 > frameButton 1 < -1 > nextButton \
+ 1 < -1 > \
+ helpButton \
+ 1 < -1 > \
+ }
+
+ *menubar*SimpleMenu.borderColor: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: white
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *menubar.width: 518
+ *menubar*borderWidth: 0
+ *menubar*Command.label: x
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 518
+ *imageFrame.height: 518
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 518
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Ctrl <Key>a: call(toggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(controlPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift<Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Up>: call(updateColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+ *colorbar.borderWidth: 0
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.width: 50
+ *colorbar.height: 17
+}
+
+
+set Resources(panelShell) { \
+
+ !================================
+ ! Main Integrated Control Panel
+ !================================
+ *panelShell.title: XImtool Control Panel
+ *panelShell.geometry: 480x630
+ *panelShell.maxWidth: 480
+ *panelShell.minWidth: 480
+ *panelTabs.internalHeight: 3
+ *panelTabs.internalWidth: 10
+
+ *Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *List.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextToggle.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ *display_panel.tabLabel: Display
+ *display_panel.innerOffset: 5
+ *print_panel.tabLabel: Print
+ *print_panel.innerOffset: 5
+ *load_panel.tabLabel: Load
+ *load_panel.innerOffset: 5
+ *save_panel.tabLabel: Save
+ *save_panel.innerOffset: 5
+ *info_panel.tabLabel: Info
+ *info_panel.innerOffset: 5
+ *tile_panel.tabLabel: Tile
+ *tile_panel.innerOffset: 5
+ *wcs_panel.tabLabel: Coords
+ *wcs_panel.innerOffset: 5
+
+ *panelMenuBar*borderWidth: 0
+ *panelMenuBar*Command.internalHeight: 4
+ *panelMenuBar*Command.internalWidth: 15
+ *panelMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 10 < +inf -10> \
+ panelHelp \
+ 3 < -3 > \
+ panelClose \
+ 7 < -7 > \
+ } \
+ 5 < -5 > \
+ }
+
+ *panelHelp.label: Help
+ *panelClose.label: Dismiss
+
+
+ *tabFrame.outerOffset: 3
+ *tabFrame.innerOffset: 0
+ *tabFrame.frameWidth: 0
+ *tabFrame.frameType: chiseled
+ *panelMenuFrame.outerOffset: 0
+ *panelMenuFrame.innerOffset: 1
+ *panelMenuFrame.frameType: raised
+ *panelMenuFrame.frameWidth: 2
+ *panel.layout: vertical { \
+ panelMenuFrame < +inf -inf * > \
+ 3 \
+ horizontal { tabFrame < +inf -inf * +inf -inf> } \
+ }
+}
+
+
+set Resources(display_panel) { \
+
+ !================================
+ ! Main Display Control Panel.
+ !================================
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+
+ *blinkFrame1.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame2.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame3.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame4.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *matchButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *registerButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *autoregButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -5 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ -5 \
+ controlBox < +inf * > \
+ -5 \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 7
+
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ vertical { \
+ 3 < -3 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 3 < -3 > \
+ } \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 1
+ *frameData.width: 150
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 7
+ *frameSelect.innerOffset: 2
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame
+
+ *frameBox.layout: vertical { \
+ 3 \
+ horizontal { -2 frlistBox < * +inff -inff > } \
+ 3 < +inf -3 > \
+ horizontal { prevFrame < +inf -inf * > 4 nextFrame < +inf -inf * > } \
+ }
+ *framePort.allowVert: True
+ *framePort.allowHoriz: False
+ *framePort.useRight: True
+ *framePort.height: 80
+
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*frame1.label: 1\ \
+ *frameBox*frame2.label: 2\ \
+ *frameBox*frame3.label: 3\ \
+ *frameBox*frame4.label: 4\ \
+
+ *frameBox*frame5.label: 5\ \
+ *frameBox*frame6.label: 6\ \
+ *frameBox*frame7.label: 7\ \
+ *frameBox*frame8.label: 8\ \
+ *frameBox*frame9.label: 9\ \
+ *frameBox*frame10.label: 10\
+ *frameBox*frame11.label: 11\
+ *frameBox*frame12.label: 12\
+ *frameBox*frame13.label: 13\
+ *frameBox*frame14.label: 14\
+ *frameBox*frame15.label: 15\
+ *frameBox*frame16.label: 16\
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xxx
+ *frameBox*nextFrame.label: xxx
+
+ *frameList*location: 0 0 50 20
+ *frameList.layout: vertical { \
+ frame1 < +inf * >\
+ frame2 < +inf * >\
+ frame3 < +inf * >\
+ frame4 < +inf * >\
+ frame5 < +inf * >\
+ frame6 < +inf * >\
+ frame7 < +inf * >\
+ frame8 < +inf * >\
+ frame9 < +inf * >\
+ frame10 < +inf * >\
+ frame11 < +inf * >\
+ frame12 < +inf * >\
+ frame13 < +inf * >\
+ frame14 < +inf * >\
+ frame15 < +inf * >\
+ frame16 < +inf * >\
+ }
+
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 7
+ *zoomBox.shrinkToFit: True
+ *zoomBox*TextButton.frameWidth: 1
+ *zoomBox*TextButton.outerOffset: 0
+
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { toggleZoom < +inf * +inf > 1 } \
+ 1 \
+ vertical { 1 < +inf > z5 1 < +inf > z3 0 < +inf > } \
+ 1 \
+ vertical { zoomIn < +inf * +inf > 1 } \
+ } \
+ 1 \
+ horizontal { \
+ 1 < +inf > \
+ d8 1 d4 1 d2 1 x1 1 z2 1 z4 1 z8 \
+ 1 < +inf > \
+ } \
+ 1 \
+ horizontal { \
+ vertical { 1 zoomOut < +inf * +inf > } \
+ 1 \
+ vertical { 0 < +inf > d3 1 < +inf > d5 1 < +inf > } \
+ 1 \
+ vertical { 1 centerFrame < +inf * +inf > } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 2
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 2
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 2
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 2
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.layout: horizontal { \
+ 2 < -2 > \
+ aspect < +inf * > 2 \
+ flipX < +inf * > 2 \
+ flipY < +inf * > 2 \
+ flipXY < +inf * > 2 \
+ clearFrame < +inf * > 2 \
+ fitFrame < +inf * > \
+ 2 < -2 > \
+ }
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 7
+
+ *enhance*Viewport.allowVert: True
+ *enhance*Viewport.allowHoriz: False
+ *enhance*Viewport.useRight: False
+ *enhance*Viewport.resizeable: True
+ *enhance*Scrollbar.width: 17
+ *enhance*Scrollbar.minimumThumb: 10
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 2 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { -1 contrastLabel 3 < -3 > brightnessLabel -1 } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*frameType: sunken
+ *enhance*frameWidth: 1
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+
+ *colorlist.width: 100
+ *colorlist.height: 98
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 17
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 17
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+
+ ! ---------------------
+ ! BLINK/REGISTER
+ ! ---------------------
+ *blinkBox.label: Blink/Register
+ *blinkBox.location: 0 0 235 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 7
+ *blinkBox*TextToggle.frameWidth: 1
+
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkPanel < -50% * > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ vertical { \
+ 2 matchButton < +inf * > 4 < -4 > registerButton < +inf * > \
+ } \
+ 5 < -5 > \
+ vertical { \
+ 1 blinkButton < +inf * > 4 < -4 > autoregButton < +inf * > \
+ } \
+ } \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *blink.TextToggle.location: 0 0 102 23
+ *blink.TextToggle.frameWidth: 1
+ *blink*TextToggle.highlightColor: yellow
+ *blink*TextToggle.offIcon: square0s
+ *blink*TextToggle.onIcon: square1s
+ *blink*TextToggle.outerOffset: 1
+ *blink*Command.height: 27
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+
+ *blinkFramesLabel.label: Frames List:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkPanel.label: x
+ *blinkPanel.width: 20
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 1
+ *BRtext.width: 40
+ *BRtext.height: 23
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+ *autoregButton.label: Auto-Register
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 7
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 20
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox.TextToggle.highlightThickness: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *magnifierButton.label: Magnifier
+ *warningsButton.label: Warnings
+ *peakupButton.label: Centroid Peaks
+ *peakupButton.on: True
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 7
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+}
+
+
+set Resources(print_panel) { \
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 20
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -3 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 80
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 1
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*Text*height: 22
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout.layout: horizontal { \
+ labelLayout 5 inputLayout < +inf -inf * > \
+ }
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { 5 toLabel 7 printerLabel }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { 5 toPrinter 5 toFile 5 < +inf -inf > } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 330
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 2
+ *optLayout*borderWidth: 0
+ *optLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ vertical { \
+ 5 \
+ epsPageGroup < +inf -inf * > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ vertical { \
+ 5 \
+ printColorGroup < +inf -inf * > \
+ printerGroup < +inf -inf * > \
+ -1 \
+ } \
+ -1 \
+ } \
+ 5 \
+ horizontal { annOptsGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 7
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel 4 < -4 > \
+ horizontal { 25 epsPortButton epsLandButton epsSquareButton -1 } \
+ 4 \
+ epsSizeLabel -1 \
+ horizontal { \
+ 25 epsLetterButton epsLegalButton epsA4Button epsB5Button -1 \
+ } \
+ 10 \
+ horizontal { 5 epsScaleLabel 4 ScaleFrame < +inf -inf * > } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 65
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 85
+ *epsSquareButton.label: Square
+ *epsSquareButton.width: 70
+ *epsSquareButton.sensitive: False
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 60
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 60
+ *epsA4Button.label: A4
+ *epsA4Button.width: 50
+ *epsB5Button.label: B5
+ *epsB5Button.width: 50
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Output Image Scale:
+ *epsScaleLabel.justify: right
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 1
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 35
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease SCtext < +inf -100% * > SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 22
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 7
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 125
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.location: 0 0 250 60
+ *options.frameWidth: 2
+ *options.layout: horizontal { \
+ 5 \
+ vertical { -1 epsscaleButton 2 autorotateButton -1 } \
+ 3 \
+ vertical { -1 aspectButton 2 compressButton -1 } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: RLE Compress
+ *compressButton.sensitive: False
+
+
+ ! Annotation options box resources.
+ ! ------------------------------------
+ *annOptsGroup.outerOffset: 7
+ *annOptsGroup.innerOffset: 5
+ *annOptsGroup*onIcon: square1s
+ *annOptsGroup*offIcon: square0s
+ *annOptsGroup.label: Annotation Options
+ *annOptsGroup*TextToggle.width: 90
+ *annOptsGroup*TextToggle.highlightColor: yellow
+ *annOptsGroup*Frame.frameType: sunken
+ *annOptsGroup*Frame.frameWidth: 1
+ *annOptsGroup*Frame.width: 300
+ *annOptsGroup*Text*editType: edit
+ *annOpts.frameWidth: 2
+ *annOpts.location: 0 0 400 70
+ *annOpts.layout: vertical { \
+ 2 \
+ horizontal { \
+ 5 annotateButton 2 titleButton 2 bordersButton 2 colorbarButton 5 \
+ } \
+ 3 \
+ horizontal { -1 titleLabel 2 titleFrame < +inf -inf * > -1 } \
+ -1 \
+ }
+ *annotateButton.label: \ Annotate
+ *titleButton.label: \ Title
+ *bordersButton.label: \ Borders
+ *colorbarButton.label: \ Colorbar
+ *titleLabel.label: Title String
+ *titleString*string: imtitle
+ *titleString*height: 23
+ *titleString*Text*editType: edit
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 7
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 110
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 1 \
+ vertical { -1 prGrayButton 2 prPseudoButton 2 prRGBButton -1 } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 130
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 7
+
+ *printers*Viewport.allowVert: True
+ *printers*Viewport.allowHoriz: False
+ *printers*Viewport.useRight: True
+ *printers*Viewport.resizeable: True
+ *printers*Scrollbar.width: 17
+ *printers*Scrollbar.minimumThumb: 10
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*frameType: sunken
+ *printers*frameWidth: 1
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 50
+ *cmdLayout.borderWidth: 0
+ *cmdLayout*Command.internalWidth: 12
+ *cmdLayout.layout: horizontal { \
+ 2 \
+ okayPrint 1 < +inf > printStatus < +inf -inf * +inf -inf > \
+ 2 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+}
+
+
+set Resources(info_panel) { \
+
+ !--------------------
+ ! Information Panel
+ !--------------------
+ *infoLayout*borderWidth: 0
+ *infoLayout*Frame.frameType: sunken
+ *infoLayout*Frame.frameWidth: 1
+ *infoLayout*Command.internalWidth: 12
+ *infoLayout*Text*editType: read
+ *infoLayout*Text*scrollVertical: whenNeeded
+ *infoLayout*Text*scrollHorizontal: whenNeeded
+ *infoLayout*Text*displayCaret: False
+ *infoLayout*Scrollbar.background: #c4c4c4
+ *infoLayout*Scrollbar.width: 17
+ *infoLayout*Scrollbar.height: 17
+
+ *infoText.height: 240
+ *infoText*font: 6x13
+ *infoLayout.layout: vertical { \
+ infoBox < +inf -inf * > \
+ }
+
+ *infoBox.label:
+ *infoBox.outerOffset: 0
+ *infoBox.innerOffset: 3
+ *infoBoxL*TextToggle.frameType: raised
+ *infoBoxL*TextToggle.frameWidth: 1
+ *infoBoxL*TextToggle*outerOffset: 0
+ *infoBoxL*TextToggle*innerOffset: 1
+ *infoBoxL*TextToggle.location: 0 0 100 25
+ *infoBoxL*TextToggle*onIcon: square1s
+ *infoBoxL*TextToggle*offIcon: square0s
+ *infoBoxL*TextToggle*highlightColor: cyan
+ *infoBoxL.layout: vertical { \
+ infoFrame < +inf -inf * +inf -inf > 1 \
+ 4 \
+ horizontal { \
+ infoOptFr < +inf -inf * > 1 \
+ infoOptSvr < +inf -inf * > 1 \
+ infoOptClients < +inf -inf * > 1 \
+ infoOptWCS < +inf -inf * > 1 \
+ infoOptIsm < +inf -inf * > 1 \
+ infoOptFB < +inf -inf * > \
+ }\
+ 2 \
+ }
+ *infoOptFr.label: Frame
+ *infoOptFr.on: True
+ *infoOptSvr.label: Server
+ *infoOptWCS.label: WCS
+ *infoOptIsm.label: ISM
+ *infoOptClients.label: Clients
+ *infoOptFB.label: Imtoolrc
+}
+
+
+
+set Resources(load_panel) { \
+
+ !-------------------------------
+ ! File Load Control Panel.
+ !-------------------------------
+ *filesLayout*borderWidth: 0
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*TextToggle.ledtMargin: 3
+ *filesLayout*SimpleMenu.borderWidth: 1
+ *filesLayout*SimpleMenu.borderColor: black
+ *filesLayout*SimpleMenu.foreground: White
+ *filesLayout*SimpleMenu.background: SteelBlue
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ imlistGroup < +inf -inf * > \
+ 3 \
+ horizontal { -5 imoptsGroup < +inf -inf * > -5 } \
+ -1 \
+ loadCmdGroup < +inf -inf * > \
+ }
+
+ *imlistGroup.label:
+ *imlistGroup.frameWidth: 2
+ *imlistGroup.outerOffset: 2
+ *imlistLayout*Label.shadowWidth: 0
+ *imlistLayout*Label.justify: left
+ *imlistLayout*Command.width: 90
+ *imlistLayout*Command.height: 23
+ *imlistLayout*Command.shadowWidth: 1
+ *imlistLayout*Viewport.allowVert: True
+ *imlistLayout*Viewport.allowHoriz True
+ *imlistLayout*Viewport.useRight: True
+ *imlistLayout*Viewport.useBottom: True
+ *imlistLayout*Viewport.resizeable: True
+ *imlistLayout*Scrollbar.height: 17
+ *imlistLayout*Scrollbar.width: 17
+ *imlistLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ rootButton < +inf -inf * > 1 \
+ homeButton < +inf -inf * > 1 \
+ upButton < +inf -inf * > 1 \
+ rescanButton < +inf -inf * > \
+ 3 \
+ imtemplateLabel 3 imtemplateFrame < +inf -inf * > \
+ 3 \
+ } \
+ 5 \
+ horizontal { 1 imlistLabel < +inf -inf * > 1 } \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 \
+ dirLabel < +inf -inf * > \
+ 3 \
+ horizontal { 5 fnameLabel 5 filnamFrame < +inf -inf * > } \
+ 3 \
+ }
+ *imtemplateLabel.label: Filter:
+ *imtemplateText*editType: edit
+ *imtemplateText*height: 23
+ *imtemplateText*font: 7x13
+ !*imageList.width: 100
+ *imageList*height: 140
+ *imageList.shadeSurplus: False
+ *imageList.defaultColumns: 3
+ *imageList.font: 7x13
+ *imlistView.resizeable: True
+ *imlistLabel.height: 0
+ *imlistLabel.label: xxx
+ *imlistLabel.justify: left
+ *imlistLabel.font: *lucida-bold-r*10*
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *dirLabel.label: \ \ Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 22
+
+ *imoptsGroup.label: Options
+ *imoptsGroup.frameWidth: 2
+ *imoptsGroup.outerOffset: 7
+ *imoptsGroup*offIcon: square0s
+ *imoptsGroup*onIcon: square1s
+ *imoptsGroup*highlightColor: yellow
+ *imoptsLayout*Label.shadowWidth: 0
+ *imoptsLayout*Label.justify: left
+ *imoptsLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ autoload 6 grayscale \
+ 3 < +inf > \
+ browseHdrs \
+ 3 < +inf > \
+ frameLabel 2 frameFrame \
+ 3 \
+ } \
+ 6 \
+ horizontal { \
+ 3 \
+ zscale 6 zrange \
+ 3 \
+ z1Label z1Frame < +inf * > 2 \
+ z2Label z2Frame < +inf * > 2 \
+ nsampLabel nsampFrame < +inf * > \
+ 3 \
+ } \
+ 3 \
+ }
+ *grayscale.label: Auto Grayscale
+ *grayscale.location: 0 0 100 22
+ *autoload.label: Auto Load
+ *autoload.location: 0 0 80 22
+ *autoload.on: True
+ *browseHdrs.label: List Image Headers
+ *browseHdrs.location: 0 0 120 22
+ *browseHdrs.on: False
+ *zscale.label: Zscale
+ *zscale.location: 0 0 60 22
+ *zrange.label: Zrange
+ *zrange.location: 0 0 60 22
+ *z1Label.label: z1
+ *z1Value*width: 60
+ *z1Value*height: 22
+ *z1Value*editType: edit
+ *z2Label.label: z2
+ *z2Value*width: 60
+ *z2Value*height: 22
+ *z2Value*editType: edit
+ *nsampLabel.label: Nsample
+ *nsampValue*width: 60
+ *nsampValue*height: 22
+ *nsampValue*editType: edit
+ *frameLabel.label: Frame:\
+ *frameFrame.width: 50
+ *frameFrame.resize: False
+ *frameFrame.label: Current
+ *frameFrame.font: 6x13
+ *frameFrame.menuName: loadFrames
+
+
+ *loadCmdGroup.label:
+ *loadCmdGroup*frameWidth: 2
+ *loadCmdGroup*outerOffset: 5
+ *loadCmdGroup.outerOffset: 2
+ *loadCmdGroup*innerOffset: 5
+ *loadCmdGroup.frameType: sunken
+ *loadCmdGroup.label:
+ *loadCmdGroup.location: 0 0 400 45
+ *loadCmdLayout*Command.internalWidth: 12
+ *loadCmdLayout.layout: horizontal { \
+ 2 \
+ filesLoadButton \
+ 1 < +inf > \
+ filesStatus \
+ 2 \
+ }
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+}
+
+
+
+set Resources(save_panel) { \
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel*TextToggle.alignment: left
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ saveNameGroup < +inf * > \
+ saveOptGroup < +inf -inf * > -3 \
+ saveCmdGroup < +inf * > \
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 50
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 1
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout.layout: vertical { \
+ 2 \
+ horizontal { 5 saveLabel 5 fnameFrame < +inf -inf * > 5 } \
+ 2 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 140
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { 5 < -5 > fmtGroup < +inf * +inf > -1 } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -inff * +inff -inff > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { 5 < -5 > saveColorGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 140 120
+ *saveColorGroup.outerOffset: 7
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 110
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { 5 svGrayButton 2 svPseudoButton 2 svRGBButton -1 } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svRGBButton.label: RGB
+
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 1
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 7
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { 5 fitsButton 2 gifButton 2 tiffButton 2 rawButton 1 } \
+ 2 < -2 > \
+ vertical { 5 epsButton 2 rasButton 2 x11Button 2 jpegButton 1 } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *epsButton.label: EPS
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: False
+ *x11Button.sensitive: False
+ *rawButton.sensitive: False
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 50
+ *saveCmdLayout*Command.internalWidth: 12
+ *saveCmdLayout.layout: horizontal { \
+ 2 \
+ okaySave 1 < +inf -1 > saveStatus < +inf -inf * > \
+ 2 \
+ }
+ *okaySave.label: Save
+}
+
+
+set Resources(tile_panel) { \
+
+ *tileOpts.frameType: chiseled
+ *tileOpts.frameWidth: 2
+ *tileOpts.outerOffset: 5
+ *tileOpts.innerOffset: 7
+ *tileOpts*shrinkToFit: True
+ *tileOpts*borderWidth: 0
+
+ *toptLayout.layout: vertical { \
+ horizontal { -6 tFramesG < +inf -inf * > -6 } \
+ horizontal { \
+ -1 \
+ horizontal { -6 tileMode < * +inf -inf > -6 } \
+ vertical { \
+ horizontal { -3 userOrientG < +inf -inf * > -3 } \
+ horizontal { -3 fillStyle < +inf -inf * > -3 } \
+ horizontal { -3 tileLabel < +inf -inf * > -3 } \
+ -7 \
+ horizontal { -3 geomFrame < +inf -inf * > -3 } \
+ } \
+ -1 \
+ } \
+ -4 \
+ }
+ *tileMode.label: Tile Mode
+ *tileMode.outerOffset: 7
+ *tileMode.innerOffset: 5
+ *tileMode*location: 0 0 150 20
+ *tileMode*TextToggle.outerOffset: 2
+ *tileMode*TextToggle.innerOffset: 1
+ *tileMode*TextToggle.frameWidth: 0
+ *tileMode*TextToggle.leftMargin: 10
+ *tileMode*TextToggle.rightMargin: 20
+ *tileMode*TextToggle.onIcon: diamond1s
+ *tileMode*TextToggle.offIcon: diamond0s
+ *tileMode*TextToggle.highlightColor: yellow
+
+ *tileDisabled.label: Disabled
+ *tileManual.label: Manual
+ *tileBest.label: Best
+ *tileSquare.label: Square
+ *tileHorizontal.label: Horizontal
+ *tileVertical.label: Vertical
+ *tileRow.label: One Row
+ *tileCol.label: One Column
+
+ *fillStyle.label: Fill Style
+ *fillStyle.location: 0 0 160 30
+ *fillStyle.outerOffset: 7
+ *fillStyle.innerOffset: 5
+ *fillStyle.rows: 1
+ *fillStyle*selectionStyle: multi
+ *fillStyle*outerOffset: 0
+ *fillStyle*innerOffset: 1
+ *fillStyle*leftMargin: 7
+ *fillStyle*onIcon: square1s
+ *fillStyle*offIcon: square0s
+ *fillStyle*highlightColor: yellow
+ *fillStyle.TextToggle.frameWidth: 0
+ *fillStyle.TextToggle.location: 0 0 85 23
+ *byCols.label: Fill by Columns
+ *bottomUp.label: Fill from Bottom
+
+ *tileLabel.label: Tile Labels
+ *tileLabel.location: 0 0 175 30
+ *tileLabel.outerOffset: 7
+ *tileLabel.innerOffset: 5
+ *tileLabel.rows: 1
+ *tileLabel*selection: -1
+ *tileLabel*outerOffset: 0
+ *tileLabel*innerOffset: 1
+ *tileLabel*leftMargin: 7
+ *tileLabel*onIcon: square1s
+ *tileLabel*offIcon: square0s
+ *tileLabel*highlightColor: yellow
+ *tileLabel.TextToggle.frameWidth: 0
+ *tileLabel.TextToggle.location: 0 0 85 23
+ *labelFrames.label: Frameno
+ *labelImname.label: Img Name
+ *labelTitles.label: Img Title
+
+ *geomFrame.frameWidth: 0
+ *geomFrame.frameType: sunken
+ *geomFrame.outerOffset: 7
+ *geomFrame.innerOffset: 4
+ *tileGeometry.width: 220
+ *tileGeometry.height; 37
+ *tileGeometry.background: #c4c4c4
+ *tileGeometry.font: 7x13bold
+ *tileGeometry.label: Tile Geometry: 1 x 2
+
+ *userOrientG.label: Manual Configuration
+ *userOrientG.height: 90
+ *userOrientG.width: 220
+ *userOrientG.outerOffset: 7
+ *userOrientG.innerOffset: 5
+ *userOrientG.shrinkToFit: True
+ *userOrientG*Frame.frameWidth: 1
+ *userOrientG*Frame.frameType: sunken
+ *userOrientG*Text.height: 21
+ *userOrientG*Text*editType: edit
+ *userOrientL.borderWidth: 0
+ *userOrientL.layout: vertical { \
+ 1 \
+ horizontal { 18 nrowLab < +50% -inf * > nrFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { ncolLab < +50% -inf * > ncFrame < +inf -inf * > 5 } \
+ }
+ *nrowLab.justify: right
+ *ncolLab.justify: right
+
+ *nrLayout.layout: horizontal {nrdecrease nrtext < +inf -inf * > nrincrease}
+ *nrdecrease.direction: left
+ *nrincrease.direction: right
+ *nrowLab.label: Tile Rows:
+ *nrtext.background: #adadad
+ *nrtext.justify: center
+ *nrtext.font: 7x13bold
+ *nrtext.label: 1
+
+ *ncLayout.layout: horizontal {ncdecrease nctext < +inf -inf * > ncincrease}
+ *ncdecrease.direction: left
+ *ncincrease.direction: right
+ *ncolLab.label: Tile Columns:
+ *nctext.background: #adadad
+ *nctext.justify: center
+ *nctext.font: 7x13bold
+ *nctext.label: 2
+
+ *tFramesG.label: Tile Frames
+ *tFramesG.outerOffset: 7
+ *tFramesG.innerOffset: 7
+ *tFrames.borderWidth: 0
+ *tFrames*Toggle.height: 17
+ *tFrames.layout: horizontal { \
+ tAll \
+ 2 \
+ tFrame1 tFrame2 tFrame3 tFrame4 tFrame5 \
+ tFrame6 tFrame7 tFrame8 tFrame9 tFrame10 \
+ tFrame11 tFrame12 tFrame13 tFrame14 tFrame15 tFrame16 \
+ 2 \
+ tNone \
+ }
+ *tAll.label: All\
+ *tNone.label: None
+}
+
+
+set Resources(wcs_panel) { \
+
+ !--------------------
+ ! WCS Readout Panel
+ !--------------------
+ *wcsGroup*TextToggle.offIcon: square0s
+ *wcsGroup*TextToggle.onIcon: square1s
+
+ !*wcsLayout*TextToggle.location: 0 0 160 23
+ *wcsLayout*TextToggle.height: 23
+ *wcsLayout*TextToggle.outerOffset: 0
+ *wcsLayout*Layout.borderWidth: 0
+ *wcsLayout.borderWidth: 0
+ *wcsLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ wcsGroup < +inf -inf * > \
+ 5 \
+ horizontal { -1 wcsOptGroup < +inf -inf * > -1 } \
+ -2 \
+ }
+
+ *wcsOptGroup.label:
+ *wcsOptGroup.outerOffset: 0
+ *wcsOptGroup.innerOffset: 5
+ *wcsOptGroup.frameType: chiseled
+ *wcsOptGroup.frameWidth: 0
+ *wcsOptLayout.layout: vertical { \
+ horizontal { -9 wcsCoords < +inf -inf * > -9 } \
+ -3 \
+ horizontal { -5 wcsOpts < +inf -inf * > -5 } \
+ horizontal { -5 wcsIsmGroup < +inf -inf * > -5 } \
+ 1 \
+ }
+
+ *wcsOpts.label:
+ *wcsOpts.width: 265
+ *wcsOpts.height: 40
+ *wcsOpts.outerOffset: 3
+ *wcsOpts.innerOffset: 3
+ *woLayout*TextToggle.frameWidth: 0
+ *woLayout*TextToggle.onIcon: square1s
+ *woLayout*TextToggle.offIcon: square0s
+ *woLayout*TextToggle.highlightColor: cyan
+ *woLayout*TextToggle.alignment: left
+ *woLayout*TextToggle.leftMargin: 5
+ *woLayout.layout: horizontal { \
+ 3 \
+ woptLabels < +inf -inf * > 2 \
+ woptTitles < +inf -inf * > 2 \
+ woptFBinfo < +inf -inf * > 2 \
+ woptBPM < +inf -inf * > \
+ 3 \
+ }
+ *woptLabels.label: WCS Labels
+ *woptLabels.on: True
+ *woptTitles.label: Image Titles
+ *woptTitles.on: True
+ *woptFBinfo.label: Frame Buffer Info
+ *woptFBinfo.on: True
+ *woptBPM.label: BPM Data
+ *woptBPM.on: False
+ *woptLabels.location: 0 0 150 21
+ *woptTitles.location: 0 0 150 21
+ *woptFBinfo.location: 0 0 175 21
+ *woptBPM.location: 0 0 120 21
+
+
+ *wcsCoords.label: Readout Values
+ *wcsCoords.width: 265
+ *wcsCoords.height: 135
+ *wcsCoords.outerOffset: 7
+ *wcsCoords.innerOffset: 3
+ *wcLayout*TextToggle.offIcon: diamond0s
+ *wcLayout*TextToggle.onIcon: diamond1s
+ *wcLayout*TextToggle.highlightColor: yellow2
+ *wcLayout*TextToggle.shrinkToFit: True
+ *wcLayout*TextToggle.frameWidth: 0
+ *wcLayout*TextToggle.label:
+ *wcLayout*TextToggle.on: True
+ *wcLayout*Label.justify: right
+ *wcLayout*Label.font: 7x13bold
+ *wcLayout*SimpleMenu.borderColor: black
+ *wcLayout*SimpleMenu.borderWidth: 1
+ *wcLayout*SimpleMenu.foreground: White
+ *wcLayout*SimpleMenu.background: SteelBlue
+ *wcLayout*MenuButton.shadowWidth: 1
+ *wcLayout*MenuButton.resize: False
+ *wcLayout.layout: vertical {\
+ 1 \
+ horizontal { 20 < -20 > wcTitle < +inf -inf * > 20 < -20 > }\
+ 1 \
+ horizontal { 5 wcLine < +inf -inf * > 5 } \
+ 5 \
+ horizontal { \
+ 10 \
+ vertical { 2 wlWcs1 2 wlWcs2 2 wlWcs3 2 wlWcs4 2 } 5 \
+ vertical { 1 sysWcs1 1 sysWcs2 1 sysWcs3 1 sysWcs4 1 } 5 \
+ vertical { 1 fmtWcs1 1 fmtWcs2 1 fmtWcs3 1 fmtWcs4 1 } 20 \
+ vertical { 1 wpWcs1 3 wpWcs2 3 wpWcs3 3 wpWcs4 3 } 20 \
+ vertical { 1 wiWcs1 3 wiWcs2 3 wiWcs3 3 wiWcs4 3 } 15 \
+ } \
+ 3 \
+ }
+ *wcTitle.label: Type\ \ \ \ \ \ \ \ \ \ Format\ \ \ \ \ \ Panel\ ImgWin
+
+ *wcLine.height: 2
+ *wcLine.frameWidth: 2
+ *wcLine.frameType: ledged
+
+ *wlWcs1.label: First WCS
+ *wlWcs2.label: Second WCS
+ *wlWcs3.label: Third WCS
+ *wlWcs4.label: Fourth WCS
+ *sysWcs1.label: \ Image Display\
+ *sysWcs1.menuName: sysMenu1
+ *sysWcs2.label: None
+ *sysWcs2.menuName: sysMenu2
+ *sysWcs3.label: None
+ *sysWcs3.menuName: sysMenu3
+ *sysWcs4.label: None
+ *sysWcs4.menuName: sysMenu4
+ *fmtWcs1.label: \ Sexigesimal\
+ *fmtWcs1.menuName: fmtMenu1
+ *fmtWcs2.label: None
+ *fmtWcs2.menuName: fmtMenu2
+ *fmtWcs3.label: None
+ *fmtWcs3.menuName: fmtMenu3
+ *fmtWcs4.label: None
+ *fmtWcs4.menuName: fmtMenu4
+
+ *editMenu fmtWcsMenu$i fmtWcs$i $items
+
+ *wcsIsmGroup.label:
+ *wcsIsmGroup.width: 395
+ *wcsIsmGroup.height: 50
+ *wcsIsmGroup.outerOffset: 3
+ *wcsIsmGroup.innerOffset: 5
+ *wcsIsmGroup*borderWidth: 0
+ *wcsIsmLayout.layout: horizontal { \
+ wcsIsmLabel 1 wcsIsmFrame < +inf -inf * > 3 wcsIsmInit 1 \
+ }
+ *wcsIsmLabel.label: ISM Command
+ *wcsIsmFrame.frameType: sunken
+ *wcsIsmFrame.frameWidth: 1
+ *wcsIsmFrame.outerOffset: 1
+ *wcsIsmFrame*height: 23
+ *wcsIsmCmd*editType: edit
+ *wcsIsmCmd.displayCaret: True
+ *wcsIsmInit.label: Initialize
+ *wcsIsmInit.internalWidth: 7
+
+ *wcsBox*borderWidth: 0
+ *wcsBox*TextToggle.frameType: raised
+ *wcsBox*TextToggle.frameWidth: 1
+ *wcsBox*TextToggle.leftMargin: 2
+ *wcsBox*borderWidth: 0
+ *wcsBox.layout: vertical { \
+ wcsFrame < +inf -inf * > \
+ 2 \
+ horizontal { \
+ 2 \
+ ismToggle < +inf -inf * > 2 \
+ pixelTable < +inf -inf * > 2 \
+ imageHeader < +inf -inf * > 2 \
+ compass < +inf -inf * > 2 \
+ wcsOptions < +inf -inf * > \
+ 2 \
+ } \
+ }
+ *ismToggle.label: ISM Mod
+ *ismToggle.label: WCS/Pix
+ *pixelTable.label: Pix Table
+ *imageHeader.label: Header
+ *imageHeader.sensitive: False
+ *compass.label: Compass
+ *wcsOptions.label: Options
+
+ *wcsGroup.label:
+ *wcsGroup.outerOffset: 0
+ *wcsGroup.innerOffset: 5
+ *wcsGroup.frameType: chiseled
+ *wcsGroup.frameWidth: 2
+ *wcsGroup*Text*width: 260
+ *wcsGroup*Text*height: 17
+ *wcsGroup*Text*font: 7x13
+ *wcsGroup*Text*displayCaret: False
+ *wcsGroup*Text*editType: read
+ *wcsGroup*Text*background: black
+ *wcsGroup*Text*foreground: yellow2
+ *wcsGroup*TextToggle.highlightColor: cyan
+ *wcsFrame.frameType: sunken
+ *wcsFrame.frameWidth: 1
+ *wcsText*background: yellow4
+ *wcsText.layout: vertical { \
+ wtName < +inf -inf * > -3 \
+ wtTitle < +inf -inf * > -3 \
+ wtFBCfg < +inf -inf * > \
+ 1 < -1 > \
+ wtWcs1 < +inf -inf * > -3 \
+ wtWcs2 < +inf -inf * > -3 \
+ wtWcs3 < +inf -inf * > -3 \
+ wtWcs4 < +inf -inf * > \
+ 1 < -1 > \
+ horizontal { \
+ wtIPixval < +inf -inf * +inf > 1 \
+ wtSPixval < +inf -inf * +inf > 1 \
+ wtBPixval < +inf -inf * +inf > \
+ } \
+ }
+}
+
+
+set Resources(blink_panel) { \
+
+ *blink_panel.geometry: 425x200
+ *blink_panel.title: Blink/Register Frames
+
+ *brMenuBar*Command.internalHeight: 4
+ *brMenuBar*Command.internalWidth: 12
+ *brMenuBar*Command.height: 27
+ *brMenuBar*borderWidth: 0
+
+ *brMenuBar*Label.font: 7x13bold
+ *brLayout*Command.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brRegButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brReset.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brMatchButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brBlinkButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brAregButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+
+ *brMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> brClose 5 } \
+ 5 < -5 > \
+ }
+ *brClose.label: Dismiss
+
+ *brMenuFrame.frameType: raised
+ *brMenuFrame.frameWidth: 2
+ *bpLayout.layout: vertical { \
+ brMenuFrame < +inf -inf * > \
+ 1 < -1 > \
+ brFrame < +inf -inf * +inf -inf > \
+ }
+
+ *brFrame.frameType: chiseled
+ *brFrame.frameWidth: 2
+ *brFrame.outerOffset: 4
+ *brFrame.innerOffset: 4
+
+ *brLayout.borderWidth: 0
+ *brLayout.layout: vertical { \
+ 3 < -3 > \
+ horizontal { -3 brFramesG < +inf -inf * > -3 } \
+ -5 \
+ horizontal { -3 brCmdG < +inf -inf * +inf -inf > -3 } \
+ -5 \
+ }
+
+ *brCmdG.label:
+ *brCmdG.outerOffset: 7
+ *brCmdG.innerOffset: 7
+ *brCmdG*borderWidth: 0
+ *brCmd.layout: horizontal { \
+ 2 \
+ vertical { \
+ 2 \
+ horizontal { \
+ 2 \
+ brRateLabel \
+ 2 \
+ brBRframe < +inf -inf * >\
+ 4 \
+ brReset \
+ 2 \
+ } \
+ 8 < -8 > \
+ horizontal { \
+ 4 \
+ brMatchButton < +inf -inf * > \
+ 5 < -5 > \
+ brRegButton < +inf -inf * > \
+ 2 \
+ } \
+ 1 < +inf > \
+ } \
+ 10 \
+ vertical { \
+ 2 \
+ brBlinkButton < +inf * > \
+ 10 < -10 > \
+ brAregButton < +inf * > \
+ 1 < +inf > \
+ } \
+ 2 \
+ }
+
+ *brFramesG.label: Frames List
+ *brFramesG.outerOffset: 7
+ *brFramesG.innerOffset: 7
+ *brFramesG*SimpleMenu.borderColor: black
+ *brFramesG*SimpleMenu.borderWidth: 1
+ *brFramesG*SimpleMenu.foreground: White
+ *brFramesG*SimpleMenu.background: SteelBlue
+
+ *brFrames.borderWidth: 0
+ *brFrames.layout: horizontal { \
+ 5 < +inf > \
+ brFrame1 < +inf * > 1 \
+ brFrame2 < +inf * > 1 \
+ brFrame3 < +inf * > 1 \
+ brFrame4 < +inf * > 1 \
+ brFrame5 < +inf * > 1 \
+ brFrame6 < +inf * > 1 \
+ brFrame7 < +inf * > 1 \
+ brFrame8 < +inf * > 1 \
+ brFrame9 < +inf * > 1 \
+ brFrame10 < +inf * > 1 \
+ brFrame11 < +inf * > 1 \
+ brFrame12 < +inf * > 1 \
+ brFrame13 < +inf * > 1 \
+ brFrame14 < +inf * > 1 \
+ brFrame15 < +inf * > 1 \
+ brFrame16 < +inf * > \
+ 5 < +inf > \
+ }
+
+ *brBRlayout.layout: horizontal { \
+ brBRdecrease \
+ brBRtext < +inf -100% * > \
+ brBRincrease \
+ }
+
+ *blink_panel*TextToggle.location: 0 0 110 23
+ *blink_panel*TextToggle.frameWidth: 1
+ *blink_panel*TextToggle.highlightColor: yellow
+ *blink_panel*TextToggle.offIcon: square0s
+ *blink_panel*TextToggle.onIcon: square1s
+ *blink_panel*TextToggle.outerOffset: 0
+ *blink_panel*TextToggle.innerOffset: 2
+ *blink_panel*Command.height: 23
+ *blink_panel*Arrow.width: 16
+ *blink_panel*Arrow.height: 20
+
+
+ *brFramesLabel.label: Frames:
+ *brFrame1.menuName: frame1Menu
+ *brFrame2.menuName: frame2Menu
+ *brFrame3.menuName: frame3Menu
+ *brFrame4.menuName: frame4Menu
+ *brFrame5.menuName: frame5Menu
+ *brFrame6.menuName: frame6Menu
+ *brFrame7.menuName: frame7Menu
+ *brFrame8.menuName: frame8Menu
+ *brFrame9.menuName: frame9Menu
+ *brFrame10.menuName: frame10Menu
+ *brFrame11.menuName: frame11Menu
+ *brFrame12.menuName: frame12Menu
+ *brFrame13.menuName: frame13Menu
+ *brFrame14.menuName: frame14Menu
+ *brFrame15.menuName: frame15Menu
+ *brFrame16.menuName: frame16Menu
+ *brReset.label: Reset
+
+ *brRateLabel.label: Rate:
+ *brBRframe.frameType: sunken
+ *brBRframe.frameWidth: 1
+ *brBRtext.width: 40
+ *brBRtext.height: 23
+ *brBRdecrease.direction: left
+ *brBRincrease.direction: right
+ *brRegButton.label: Register
+ *brMatchButton.label: Match LUTs
+ *brBlinkButton.label: Blink
+ *brAregButton.label: Auto-Register
+}
+
+
+set Resources(hdr_panel) { \
+
+ *hdr_panel.geometry: 550x600
+ *hdr_panel.title: Image Header
+
+ *hdr_panel*SimpleMenu.borderColor: black
+ *hdr_panel*SimpleMenu.borderWidth: 1
+ *hdr_panel*SimpleMenu.foreground: White
+ *hdr_panel*SimpleMenu.background: SteelBlue
+
+ *hdrMenuFrame.frameType: raised
+ *hdrMenuFrame.frameWidth: 2
+ *hdrLayout.layout: vertical { \
+ hdrMenuFrame < +inf -inf * > \
+ hdrObjGroup < +inf -inf * > \
+ hdrTabFrame < +inf -inf * +inf -inf> \
+ }
+
+ *hdrMenuBar*borderWidth: 0
+ *hdrMenuBar*Command.internalHeight: 5
+ *hdrMenuBar*Command.internalWidth: 12
+ *hdrMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> hdrClose 7 } \
+ 5 < -5 > \
+ }
+ *hdrClose.label: Dismiss
+
+ *hdrObjGroup.label:
+ *hdrObjGroup.outerOffset: 7
+ *hdrObjGroup.innerOffset: 4
+ *hdrObjLayout.borderWidth: 0
+ *hdrObjLayout.layout: vertical { \
+ horizontal { hdrObjLabel 2 hdrObjMenu < +inf -inf * > 2 } \
+ }
+ *hdrObjLabel.label: Image Name:
+ *hdrObjMenu.label:
+ *hdrObjMenu.justify: left
+ *hdrObjMenu.font: 7x13
+ *hdrObjMenu.menuName: objMenu
+ *hdrObjMenu.internalWidth: 5
+ *hdrObjMenu.internalHeight: 1
+ *hdrObjMenu.shadowWidth: 1
+
+ *hdrHdrGroup.tabLabel: Image Header
+ *hdrHdrGroup.label:
+ *hdrHdrGroup.outerOffset: 7
+ *hdrHdrGroup.innerOffset: 5
+ *hdrHdrLayout.borderWidth: 0
+ *hdrHdrLayout.layout: vertical { \
+ horizontal { \
+ hdrFilter 2 hFindFrame < +inf -inf * > 2 hdrFind 1 hdrClear \
+ } \
+ 5 \
+ hdrText < +inf -inf * +inf -inf > \
+ }
+ *hFindEntry*editType: edit
+ *hFindEntry*font: 7x13
+ *hFindEntry*displayCaret: True
+ *hFindEntry*width: 150
+ *hFindFrame.frameWidth: 1
+ *hFindFrame*borderWidth: 0
+ *hFindFrame.frameType: sunken
+ *hFindFrame.width: 150
+ *hFindFrame.height: 23
+ *hdrFilter.label: Keyword Filter
+ *hdrFind.label: Search
+ *hdrClear.label: Clear
+
+ ! Resources if the header text widget is AsciiText
+! *hdrText*scrollVertical: Always
+! *hdrText*scrollHorizontal: Always
+! *hdrText*editType: edit
+! *hdrText*font: 7x13
+! *hdrText*background: #c4c4c4
+! *hdrText*displayCaret: False
+! *hdrText*bottomMargin: 10
+! *hdrText*Scrollbar.width: 15
+! *hdrText*Scrollbar.height: 15
+
+ ! Resources if the header text widget is HTML
+ *hdrText.width: 600
+ *hdrText.height: 500
+ *hdrText.anchorUnderlines: 1
+ *hdrText.visitedAnchorUnderlines: 1
+ *hdrText.verticalScrollOnRight: True
+ *hdrText.plainFont: 7x13
+ *hdrText.marginWidth: 5
+ *hdrText.marginHeight: 5
+
+
+ *hdrWcsGroup.tabLabel: Image WCS Info
+ *hdrWcsGroup.label:
+ *hdrWcsGroup.outerOffset: 5
+ *hdrWcsGroup.innerOffset: 5
+ *hdrWcsGroup*Text*scrollVertical: whenNeeded
+ *hdrWcsGroup*Text*scrollHorizontal: whenNeeded
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*displayCaret: False
+ *hdrWcsGroup*Text*borderWidth: 0
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*font: 7x13
+ *hdrWcsGroup*Text*Scrollbar.width: 15
+ *hdrWcsGroup*Text*Scrollbar.height: 15
+ *hdrWcsLayout.borderWidth: 0
+ *hdrWcsLayout.layout: vertical { \
+ 2 < -2 > \
+ hdrInfoGroup < +inf -inf * > \
+ 2 < -2 > \
+ hdrKeywGroup < +inf -inf * +inf -inf > \
+ -4 \
+ }
+ *hdrInfoGroup.label: Basic WCS Information
+ *hdrInfoGroup.outerOffset: 7
+ *hdrInfoGroup.innerOffset: 0
+ *hdrIGFrame.frameType: sunken
+ *hdrIGFrame.frameWidth: 1
+ *hdrIGText.height: 130
+! *hdrIGText*background: black
+! *hdrIGText*foreground: yellow2
+ *hdrIGText*background: #adadad
+ *hdrIGText*foreground: black
+ *hdrWcsGroup*hdrIGText*scrollVertical: never
+ *hdrWcsGroup*hdrIGText*scrollHorizontal: never
+ *hdrWcsGroup*hdrIGText*font: 7x13
+ *hdrKeywGroup.label: WCS Header Keywords
+ *hdrKeywGroup.outerOffset: 7
+ *hdrKeywGroup.innerOffset: 5
+ *hdrKGFrame.frameType: sunken
+ *hdrKGFrame.frameWidth: 1
+ *hdrKGText*background: #c4c4c4
+ *hdrKGText*bottomMargin: 10
+
+ *hdrIGText*background: #c4c4c4
+ *hdrIGFrame.frameWidth: 0
+}
+
+
+set Resources(pixel_table) { \
+
+ *pixel_panel.title: Image Pixel Table
+ *pixel_panel*SimpleMenu.borderWidth: 1
+ *pixel_panel*SimpleMenu.borderColor: black
+ *pixel_panel*SimpleMenu.foreground: White
+ *pixel_panel*SimpleMenu.background: SteelBlue
+
+ *pixtabMenuBar*borderWidth: 0
+ *pixtabMenuBar*Command.internalHeight: 4
+ *pixtabMenuBar*Command.internalWidth: 12
+ *pixtabMenuBar.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ pixtabSize 10 < +inf -10> pixtabHelp 5 pixtabClose \
+ 7 \
+ } \
+ 5 \
+ }
+ *pixtabSize.label: Size
+ *pixtabSize.menuName: pixtabMenu
+ *pixtabHelp.label: Help
+ *pixtabHelp.sensitive: False
+ *pixtabClose.label: Dismiss
+
+ *pixtabMenuFrame.frameType: raised
+ *pixtabMenuFrame.frameWidth: 2
+ *pixel_table.layout: vertical { \
+ 1 \
+ pixtabMenuFrame < +inf -inf * > \
+ 1 \
+ pixtabFrame < +inf -inf * +inf -inf > \
+ 1 \
+ }
+
+
+ *pixtabFrame.frameType: raised
+ *pixtabFrame.frameWidth: 0
+ *pixtabFrame*borderWidth: 0
+ *pixtabFrame*font: 6x10
+ *pixtabFrame*MultiList.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*Label.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*TextToggle.font: -*-helvetica-medium-r-normal-*-10-*
+
+ *pixtabFrame*MultiList.forceColumns: True
+ *pixtabFrame*MultiList.defaultColumns: 5
+ *pixtabFrame*MultiList.shadeSurplus: False
+ *pixtabFrame*MultiList.borderWidth: 0
+ *pixtabFrame*MultiList.rowHeight: 25
+ *pixtabFrame*MultiList.rowSpacing: 7
+ *pixtabFrame*MultiList.internalWidth: 7
+ *pixtabFrame*MultiList.internalHeight: 4
+ *pixtabFrame*MultiList.width: 410
+ *pixtabFrame*MultiList.height: 160
+ *pixtabFrame*MultiList.columnWidth: 50
+ *pixtabFrame*MultiList.columnSpacing: 2
+ *pixtabFrame*MultiList.maxSelectable: 1
+ *pixtabFrame*MultiList.highlightForeground: red
+ *pixtabFrame*MultiList.highlightBackground: #c4c4c4
+ *pixtabFrame*MultiList.background: #c4c4c4
+ *pixtabFrame*TextToggle.background: #c4c4c4
+
+ *pixtabFrame*Label.width: 00
+ !*pixtabFrame*Label.resize: False
+
+ *meanFrame.frameWidth: 2
+ *meanFrame.frameType: chiseled
+ *meanFrame.outerOffset: 0
+ *meanFrame.width: 120
+ *meanLabel.label: Mean:
+ *meanValue.label:
+ *meanValue.resize: False
+
+ *sigFrame.frameWidth: 2
+ *sigFrame.frameType: chiseled
+ *sigFrame.outerOffset: 0
+ *sigFrame.width: 120
+ *sigLabel.label: Stdev:
+ *sigValue.label:
+ *sigValue.resize: False
+
+ *ptColFrame.frameWidth: 0
+ *ptColFrame.outerOffset: 0
+ *ptRowFrame.frameWidth: 0
+ *ptRowFrame.outerOffset: 0
+
+ *pixtabFrame*ptColLabs.width: 410
+ *pixtabFrame*ptColLabs.height: 23
+ *pixtabFrame*ptColLabs.defaultColumns: 5
+ *pixtabFrame*ptColLabs.forceColumns: True
+ *pixtabFrame*ptColLabs.columnWidth: 50
+ *pixtabFrame*ptColLabs.columnSpacing: 2
+ *pixtabFrame*ptRowLabs.width: 60
+ *pixtabFrame*ptRowLabs.height: 110
+ *pixtabFrame*ptRowLabs.defaultColumns: 1
+ *pixtabFrame*ptRowLabs.forceColumns: True
+ *pixtabFrame*ptRowLabs.verticalList: True
+ *pixtabFrame*ptRowLabs.columnWidth: 50
+ *pixtabFrame*ptRowLabs.columnSpacing: 2
+ *pixtabFrame*pixtab.verticalList: True
+
+ *ptFrame.outerOffset: 0
+ *ptFrame.innerOffset: 0
+ *ptFrame.borderWidth: 0
+ *ptFrame.frameWidth: 1
+ *ptFrame.frameType: sunken
+ *ptLayout.layout: vertical { \
+ 3 \
+ horizontal { 65 ptColFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { \
+ vertical { ptRowFrame< * +inf -inf > 5 } \
+ 1 \
+ vertical { ptFrame } \
+ 5 \
+ } \
+ 1 \
+ horizontal { \
+ 2 < +inf > \
+ meanLabel meanFrame < +inf -inf * > 2 \
+ sigLabel sigFrame < +inf -inf * > \
+ 10 \
+ } \
+ }
+}
+
+
+set Resources(help_panel) { \
+
+ !----------------------
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 500
+ *help_panel.height: 550
+ *helpLayout*borderWidth: 0
+ *helpLayout*Command.internalHeight: 4
+ *helpLayout*Command.internalWidth: 12
+ *helpLayout*HTML*shadowWidth: 1
+ *helpLayout*helpText*Scrollbar.shadowWidth: 1
+
+ *helpMenuGroup.label:
+ *helpMenuGroup.height: 45
+ *helpMenuGroup.outerOffset: 0
+ *helpMenuGroup.innerOffset: 0
+ *helpMenuGroup.frameType: raised
+ *helpMenubar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 20 < +inf -20 > helpClose 7 } \
+ 5 < -5 > \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Dismiss
+
+
+ *hfEntry*editType: edit
+ *hfEntry*font: 7x13
+ *hfEntry*displayCaret: True
+ *hfFrame.frameWidth: 1
+ *hfFrame.frameType: sunken
+ *hfFrame.width: 250
+ *hfFind.label: Search
+ *hfFind.shadowWidth: 1
+ *hfClear.label: Clear
+ *hfClear.shadowWidth: 1
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { helpMenuGroup < +inf -inf * > } \
+ 5 \
+ horizontal { \
+ 5 \
+ helpBack 2 helpForward 2 helpHome \
+ 20 < +inf -20 > \
+ hfFrame < +inf -inf * > 3 hfFind 1 hfClear \
+ 5 \
+ } \
+ 5 \
+ horizontal { helpTextFrame < +inf -inf * +inf -inf > } \
+ horizontal { helpInfoLayout < +inf -inf * > } \
+ -1 \
+ }
+ *helpTextFrame.frameWidth: 1
+ *helpTextFrame.frameType: sunken
+ *helpText.width: 600
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText*Scrollbar.shadowWidth: 1
+ *helpText.plainFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainboldFont: -adobe-courier-bold-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainitalicFont: -adobe-courier-medium-o-normal-*-12-*-*-*-*-*-*-*
+! *helpText.boldFont: 6x12bold
+
+
+ ! Contact info at the bottom of the panel.
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { 5 helpIRAFLogo 5 } \
+ 1 < +inf > \
+ vertical { \
+ 5 \
+ helpInfo1 < +inf -inf * +inf -inf > \
+ helpInfo2 < +inf -inf * +inf -inf > \
+ helpInfo3 < +inf -inf * +inf -inf > \
+ 5 \
+ } \
+ 1 < +inf > \
+ vertical { 5 helpNOAOLogo 5 } \
+ 5 \
+ }
+ *helpInfo1.label: XIMTOOL_VERSION
+ *helpInfo2.label: For help or questions: http://iraf.net
+ *helpInfo3.label: \
+ NOAO is operated by AURA under cooperative agreement with the NSF
+
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalHeight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: SteelBlue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalHeight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: SteelBlue
+ *helpInfoLayout.helpNOAOLogo.background: white
+}
+
+set Resources(tcl_panel) { \
+
+ !--------------------------------
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tcl_panel.width: 550
+ *tcl_panel.height: 180
+ *tcl_panel.title: Debug TCL Command Entry
+ *tclLayout*borderWidth: 0
+ *tclLayout*Frame.frameType: sunken
+ *tclLayout*Frame.frameWidth: 2
+ *tclLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ tclCmdGroup < +inf -inf * > \
+ tclFrame < +inf -inf * +inf -inf> \
+ 0 < +0 -0 > \
+ }
+ *tclEntry*foreground: black
+ *tclEntry*editType: edit
+ *tclEntry*type: string
+ *tclEntry*font: 7x13
+ *tclEntry*scrollVertical: Always
+ *tclEntry*scrollHorizontal: whenNeeded
+
+ *tclCmdGroup.label:
+ *tclCmdGroup.outerOffset: 0
+ *tclCmdGroup.innerOffset: 0
+ *tclCmd.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ tclClear 3 \
+ tclExecute \
+ 10 < +inf -10> \
+ tclDismiss \
+ 5 \
+ } \
+ 5 \
+ }
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclDismiss.label: Dismiss
+}
+
+
+set Resources(warning) { \
+
+ ! ---------------------
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 5 warnFrame < +inf * +inf > 5 } \
+ 5 < -5 > \
+ horizontal { \
+ 10 \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 10 \
+ } \
+ 5 < -5 > \
+ }
+ *warnOk.label: Okay
+ *warnCancel.label: Cancel
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { 5 < +inf -5 > warnIcon 5 < +inf -5 > } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnText.background: #c4c4c4
+}
+
+
+
+
+set Resources(gui) { \
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *showToolBar: False
+ *showPanelBar: False
+ *warnings: True
+ *centerBoxSize: 5
+ *peakCentroid: True
+}
+
+
+
+
+
+################################################################################
+# GUI Bootstrap Procedures
+################################################################################
+
+# Initialize the widget tree.
+proc InitWidgetTree args \
+{
+ global Objects Resources Version
+
+
+ # Add a new objects description for each of the panels found so we can
+ # create them by name later rather that with the defaults.
+
+ set guiResources ""
+ foreach obj [array names Objects] {
+ set guiResources \
+ [ format "%s\n\n*%s_objects:%s\n" \
+ $guiResources $obj $Objects($obj) ]
+ }
+
+ # Now append all the Resource strings, changing any version strings as
+ # needed.
+
+ foreach res [array names Resources] {
+ regsub -all XIMTOOL_VERSION $Resources($res) $Version ver
+ set guiResources [ format "%s\n\n%s\n\n" $guiResources $ver ]
+ }
+
+ # Define all of the GUI objects and resources.
+ appInitialize ximtool XImtool $guiResources
+}
+
+
+# Realize a window module, i.e. create it's objects.
+proc Realize { module args } \
+{
+ global Objects
+
+ # Create any widgets for the module. We only do this once and set a
+ # flag to indicate the objects have been created so we don't do it on
+ # subsequent realizations.
+ if { [info exists Objects($module)] } {
+ createObjects [format "%s_objects" $module]
+ reset-server
+ }
+}
+
+
+# Bootstrap up the GUI.
+InitWidgetTree
+Realize ximtool
+Realize parameters
+Realize panelShell
+Realize tcl_panel
+Realize pixel_table
+Realize hdr_panel
+Realize blink_panel
+Realize help_panel
+Realize xpan_panel
+Realize xmag_panel
+Realize warning
+
+reset-server
+
+# Set the gterm widget focus.
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+
+# Crank it up.
+activate
+
+
+
+
+##############################################################################
+# Utility Procedures.
+##############################################################################
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 2.0BETA"
+
+set winWidth [send imagewin get width ] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set appWidth [send display get width ] ;# application window width
+set appHeight [send display get height] ;# application window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set ruler none ;# selected ruler
+set ruleno 0 ;# used to name new rulers
+set blinkFrames "1 2" ;# list of blink frames
+set auto_reg 0
+
+set panel_up 0 ;# control panel mapped
+set help_up 0 ;# help panel mapped
+set ism_enable 0 ;# ISM is running
+set ism_capable 1 ;# Client is ISM capable
+set frameCache(0) "" ;# ISM frame cache
+
+set ctype "equatorial" ;# default coord type
+set eqtype "fk5" ;# default equatorial type
+
+# Global constants.
+set MAX_FRAMES 16 ;# max frame buffers
+
+# TCL constants
+set tcl_precision 8
+
+
+
+# Window resize callbacks.
+proc winResize {w width height} {
+ global winWidth winHeight
+
+ if {$width <= 1 || $height <= 1} \
+ return
+
+ set winWidth $width
+ set winHeight $height
+} ; send imagewin addCallback winResize resize
+
+proc appResize {w width height} \
+{
+ global doHcut doVcut cutXPos cutYPos
+ global appWidth appHeight
+
+ set appWidth $width
+ set appHeight $height
+
+ catch {
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ }
+} ; #send imagewin addCallback appResize resize
+
+
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { showToolBar }
+ { showPanelBar }
+ { warnings }
+ { centerBoxSize }
+ { peakCentroid }
+ { highlight }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set frameOffsetX($i) 0 ;# X register offset
+ set frameOffsetY($i) 0 ;# Y register offset
+ set enhancement($i) none ;# colortable enhancement
+}
+
+
+#trace variable frameOffsetX w debug_pvar ;# Debug stuff
+#trace variable frameOffsetY w debug_pvar
+#trace variable frameZoomX w debug_pvar
+#trace variable frameZoomY w debug_pvar
+#trace variable frameScaleX w debug_pvar
+#trace variable frameScaleY w debug_pvar
+
+proc debug_pvar { name element op } \
+{
+ if {$element != ""} {
+ set name ${name}($element)
+ }
+ upvar $name x
+ puts "Variable $name set to $x"
+}
+
+
+
+
+################################################################################
+# Cut-plot handling routines.
+################################################################################
+
+set doHcut 0
+set doVcut 0
+set hstate 0
+set vstate 0
+set plotSpeed 1 ; send plotSpeed set on True
+set curJump 1 ; send curJump set on True
+set curTrack 1 ; send curTrack set on True
+
+set cutXPos [expr "$winWidth / 2"]
+set cutYPos [expr "$winHeight / 2"]
+set cutXScale 1.0
+set cutYScale 1.0
+
+
+
+# Change the cursor to the crosshair when in the plot
+proc cutCursor { widget event args } \
+{
+ global doHcut doVcut curTrack
+
+ if {! $curTrack} \
+ return
+
+ if { $event == "enterNotify" } {
+ send $widget setCursorType ginMode
+
+ # Disable the update of the graph we're in while in the plot window.
+ if {$widget == "hcutPlot"} { set doHcut 0 } else { set doVcut 0 }
+ } elseif { $event == "leaveNotify" } {
+ send $widget setCursorType idle
+
+ # Enable the update of the graph we're leaving.
+ if {$widget == "hcutPlot"} { set doHcut 1 } else { set doVcut 1 }
+ }
+ cutPlotRefresh
+}
+foreach w {hcutPlot vcutPlot} {
+ send $w addEventHandler cutCursor enterWindowMask
+ send $w addEventHandler cutCursor leaveWindowMask
+}
+
+proc cutPlotRefresh args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+} ; send imagewin addEventHandler cutPlotRefresh enterWindowMask
+
+proc cutPlotRedraw args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+}
+
+
+# Disable the options when we first start up.
+#send plotOpts "set height 1 ; set width 1 ; unmap"
+foreach w {plotOpts hcutFrame vcutFrame} { send $w unmap }
+
+
+# Cut-Plot options callback.
+proc doPlotOpts { widget type state args } \
+{
+ global plotSpeed curJump curTrack doHcut doVcut
+ global cutXPos cutYPos
+
+ if {$state} { set not 0 } else { set not 1 }
+
+ switch $widget {
+ plotSpeed { if {$state} {
+ send plotAccurate set on 0 ; send plotImgPix set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotAccurate { if {$state} {
+ send plotImgPix set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotImgPix { if {$state} {
+ send plotAccurate set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ curJump { send curSmooth set on $not ; set curJump $state }
+ curSmooth { send curJump set on $not ; set curJump $not }
+ curTrack { set curTrack $state }
+ }
+
+ # Redraw the plots right away.
+ if {$widget == "plotSpeed" || $widget == "plotAccurate"} {
+ cutPlots $cutXPos $cutYPos
+ }
+}
+foreach w { plotSpeed plotAccurate plotImgPix curJump curSmooth curTrack } {
+ send $w addCallback doPlotOpts
+}
+
+
+# Toggle the display of the horizontal or vertical cut plot windows.
+
+proc cutPlotToggle { widget type state args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+ set debug 0
+
+ set hstate [send hcut get state]
+ set vstate [send vcut get state]
+ set w [send display get width]
+ set h [send display get height]
+
+ if {$debug} { print " " ; print [format "display: %d x %d\n" $w $h] }
+
+ if {$widget == "hcut"} {
+ set hfw [expr [send hcutFrame get width] - 4]
+ set hpw [send hcutPlot get width]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$vstate} {
+ send plotOpts set width 134
+ }
+ send hcutFrame "set width $hpw ; set height 132; map"
+ send hcutPlot "set width $hfw ; set height 128"
+ send display "set height [ expr ($h + 132) ]; set width $w"
+ drawHcutAxes 1
+ setHcutCursor 1
+ if {$vstate} {
+ send plotOpts "set height 134 ; map"
+ vcutInit
+ }
+ hcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setHcutCursor 0
+ drawHcutAxes 0
+ send hcutPlot clearScreen
+ send plotOpts "unmap; set height 4"
+ send hcutFrame "unmap; set width $hfw; set height 4"
+ send plotOpts "set width 4"
+ send display "set height [ expr ($h - 128) ] ; set width $w"
+ if {$vstate} {
+ vcutInit
+ }
+ }
+ set doHcut $state
+ } else {
+ set vfh [expr [send vcutFrame get height] - 4]
+ set vph [send vcutPlot get height]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$hstate} {
+ send plotOpts set height 134
+ }
+ send vcutFrame "set height $vph ; set width 132 ; map"
+ send vcutPlot "set height $vfh ; set width 128"
+ send display "set height $h; set width [ expr ($w + 132) ]"
+ drawVcutAxes 1
+ setVcutCursor 1
+ if {$hstate} {
+ send plotOpts "set height 134 ; set width 134; map"
+ hcutInit
+ }
+ vcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setVcutCursor 0
+ drawVcutAxes 0
+ send vcutPlot clearScreen
+ send plotOpts "unmap; set width 4"
+ send vcutFrame "unmap; set height $vfh; set width 4"
+ send plotOpts "set height 4"
+ send display "set width [ expr ($w - 128) ] ; set height $h"
+ if {$hstate} {
+ hcutInit
+ }
+ }
+ set doVcut $state
+ }
+
+ if {$debug} {
+ print [format " hFrame: %d x %d\n" \
+ [send hcutFrame get width] [send hcutFrame get height] ]
+ print [format " hPlot: %d x %d\n" \
+ [send hcutPlot get width] [send hcutPlot get height] ]
+ print [format " vFrame: %d x %d\n" \
+ [send vcutFrame get width] [send vcutFrame get height] ]
+ print [format " vPlot: %d x %d\n" \
+ [send vcutPlot get width] [send vcutPlot get height] ]
+ print [format "state: %d %d\n" $hstate $vstate]
+ print [format "display: %d x %d\n" $w $h]
+ }
+
+ cutPlots $cutXPos $cutYPos
+} ; foreach w { hcut vcut } { send $w addCallback cutPlotToggle }
+
+
+# Draw the cut plots.
+proc cutPlots { xpos ypos args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+
+ catch {
+ if {$doHcut} {
+ drawHcutIndicator $xpos
+ if {$hstate} { plotHcut $xpos $ypos }
+ }
+ if {$doVcut} {
+ drawVcutIndicator $xpos
+ if {$vstate} { plotVcut $xpos $ypos }
+ }
+ }
+
+ set cutXPos $xpos ; set cutYPos $ypos
+}
+
+
+################################################################################
+# Horizontal Cut-Plot Routines
+################################################################################
+
+set hcutVec {}
+
+# Initiailize the horizontal cut-plot
+proc hcutInit args \
+{
+ global logz cutXScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send hcutPlot getPhysRes xr yr
+ send hcutPlot setLogRes $xr $yr
+
+ set logx [send imagewin get width]
+ set logz [expr ($z2 - $z1)]
+ set cutXScale [expr ($xr * 1.0) / ($logx * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6"
+ drawHcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotHcut { xpos ypos } \
+{
+ global doHcut cutXScale
+ global hcutVec cutXPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doHcut } \
+ return
+
+ # Do the horizontal cut plot.
+ set width [send imagewin get width]
+ if {$plotSpeed} {
+ set pix [send client getPixels 0 $ypos $width 1 2 5 $cutXScale]
+ } else {
+ set pix [send client getPixels 0 $ypos $width 1 2 1 $cutXScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Erase the last plot rather than clear the screen and redraw
+ # the new vector.
+ send hcutPlot setColorIndex background
+ send hcutPlot drawPolyline $hcutVec
+ send hcutPlot setColorIndex foreground
+ send hcutPlot drawPolyline $vec
+ set hcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawHcutIndicator $xpos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$ypos % 3"] == 0} {
+ catch {
+ drawHcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send hcutAxes1 redraw ;# redraw the axes markers
+ send hcutAxes2 redraw
+ }
+}
+
+
+# Create markers to indicate axes on the horizontal cut-plot.
+proc drawHcutAxes { state } \
+{
+ if {$state} {
+ send hcutPlot createMarker hcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 60 \
+ height 30 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ send hcutPlot createMarker hcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ height 60 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send hcutAxes1 destroy ; send hcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setHcutCursor { state } \
+{
+ if {$state} {
+ set pts { {252 10} {260 10} {256 1} }
+
+ send hcutPlot createMarker hcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 256 \
+ y 12 \
+ width 8 \
+ height 10 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send hcutCursor setVertices $pts
+ send hcutCursor set visible True
+
+ } else {
+ send hcutCursor destroy
+ }
+}
+
+# Label the axes on the horizontal cut plot.
+proc drawHcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ send hcutPlot "setColorIndex 6 ; \
+ drawAlphaText 2 10 [format "%.1f" $z2] ; \
+ drawAlphaText 2 34 [format "%.1f" $high] ; \
+ drawAlphaText 2 64 [format "%.1f" $mid] ; \
+ drawAlphaText 2 94 [format "%.1f" $low] ; \
+ drawAlphaText 2 120 [format "%.1f" $z1]"
+}
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawHcutIndicator { xpos } \
+{
+ global cutXScale cutXPos
+
+ send hcutCursor move [expr ($xpos * $cutXScale)] 12
+ set cutXPos $xpos
+}
+
+# Track the cursor while in the cut-graph window.
+proc hcutWCSUpdate { x y args } \
+{
+ global cutYPos curTrack
+ if {$curTrack} {
+ wcsUpdate $x $cutYPos
+ }
+ drawHcutIndicator $x
+}
+
+
+
+
+################################################################################
+# Vertical Cut-Plot Routines
+################################################################################
+
+set vcutVec {}
+
+# Initiailize the vertical cut-plot
+proc vcutInit args \
+{
+ global cutYScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send vcutPlot getPhysRes xr yr
+ send vcutPlot setLogRes $xr $yr
+
+ set logy [send imagewin get height]
+ set logz [expr ($z2 - $z1)]
+ set cutYScale [expr ($yr * 1.0) / ($logy * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6; reset"
+ drawVcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotVcut { xpos ypos } \
+{
+ global doVcut cutYScale
+ global vcutVec cutXPos cutYPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doVcut } \
+ return
+
+ # Do the vertical cut plot.
+ set height [send imagewin get height]
+ if {$plotSpeed} {
+ set pix [send client getPixels $xpos 0 1 $height 3 5 $cutYScale]
+ } else {
+ set pix [send client getPixels $xpos 0 1 $height 3 1 $cutYScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Draw the vector.
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+ send vcutPlot drawPolyline $vec
+ set vcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawVcutIndicator $ypos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$xpos % 3"] == 0} {
+ catch {
+ drawVcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send vcutAxes1 redraw ;# redraw the axes markers
+ send vcutAxes2 redraw
+ }
+}
+
+# Erase the last plot rather than clear the screen and redraw it all. The
+# erase is done by redrawing the last vector in the the background color.
+proc eraseOldVcut args \
+{
+ global cutYPos vcutVec
+
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+}
+
+# Draw the horizontal cut-plot.
+# Create markers to indicate axes on the vertical cut-plot.
+proc drawVcutAxes { state } \
+{
+ if {$state} {
+ send vcutPlot createMarker vcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 60 \
+ y 1 \
+ height 4096 \
+ width 30 \
+ activated True \
+ visible True \
+ sensitive False
+ send vcutPlot createMarker vcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ width 60 \
+ height 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send vcutAxes1 destroy ; send vcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setVcutCursor { state } \
+{
+ if {$state} {
+ set pts { {10 252} {10 260} {1 256} }
+
+ send vcutPlot createMarker vcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 12 \
+ y 256 \
+ width 10 \
+ height 8 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send vcutCursor setVertices $pts
+ send vcutCursor set visible True
+
+ } else {
+ send vcutCursor destroy
+ }
+}
+
+# Label the axes on the vertical cut plot.
+proc drawVcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ # Initialize the label strings and positions.
+ set labels {}
+ foreach i [list $z2 $high $mid $low $z1] {
+ lappend labels [ format "%.1f" $i ]
+ }
+ set xposns { 2 28 58 88 112 }
+
+ send vcutPlot "setColorIndex 6"
+
+ # Draw each label vertically down the position since we can't rotate
+ # the text.
+ set xp 0
+ foreach lab $labels {
+ set chars [split $lab {} ]
+ set yp 12
+ set xpos [lindex $xposns $xp]
+ foreach ch $chars {
+ if {$ch == "."} { incr yp -4 }
+ send vcutPlot drawAlphaText $xpos $yp $ch
+ incr yp 10
+ }
+ incr xp
+ }
+}
+
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawVcutIndicator { ypos } \
+{
+ global cutYScale cutYPos
+
+ send vcutCursor move 12 [expr ($ypos * $cutYScale)]
+ set cutYPos $ypos
+}
+
+
+# Track the cursor while in the cut-graph window.
+proc vcutWCSUpdate { x y args } \
+{
+ global cutXPos curTrack
+ if {$curTrack} {
+ wcsUpdate $cutXPos $y
+ }
+ drawVcutIndicator $y
+}
+
+
+
+################################################################################
+# UTILITY ROUTINES
+################################################################################
+
+
+# TICSTEP -- Utility routine to compute nice ticmark steps in plots.
+# [ NOT CURRENTLY USED. ]
+
+proc ticstep { range nsteps } \
+{
+ set t2 0.301029996
+ set t5 0.698970004
+ set df [ expr "$range / double($nsteps + 1)" ]
+ if {$df > 0.0} {
+ set p1 [ expr "log10(double($df))" ]
+ } else {
+ set p1 [ expr "log10(double(-$df))" ]
+ }
+ set p2 [ expr "int($p1)" ]
+ set p3 [ expr "$p1 - $p2" ]
+
+ if { $p3 < 0.0 } {
+ set p3 [ expr "$p2 + 1.0" ]
+ set p2 [ expr "$p2 - 1.0" ]
+ }
+
+ if { $p3 < 1.0e-10 } {
+ set ticstep [ expr "pow(double(10.0),double($p2))" ]
+ } elseif { $p3 > 0. && $p3 <= $t2 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t2))" ]
+ } elseif { $p3 > $t2 && $p3 <= $t5 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t5))" ]
+ } elseif { $p3 > $t5 && $p3 <= 1.0 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + 1.))" ]
+ } else {
+ set ticstep $df
+ }
+
+ set logtic [ expr "int(log10($ticstep)) - 1" ]
+ set scale [ expr "pow(double(10.0),double($logtic))" ]
+ set ticstep [ expr "int( ($ticstep / $scale) * $scale)" ]
+
+ if {$ticstep < 0.1} { set ticstep 0.10 }
+
+ return $ticstep
+}
+
+
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } \
+{
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} \
+{
+ global frameMenuDescription nframes frames
+
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+
+ if {$nframes > 0} {
+
+ # Creates the Frames menu on the main image window.
+ set items { }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send client setFrame $i\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ editMenu frameMenu frameButton $items
+
+ # Create the menu for the blink frames list.
+ set items { }
+ for {set i 0} {$i <= $nframes} {incr i} {
+ set j [expr ($i + 1)]
+ if {$i == 0} {
+ set s "\"none\" f.exec \{send brFrameBTN set label \" \"\}"
+ lappend items $s
+ } else {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send brFrameBTN set label $l\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ regsub -all BTN $items $i nmenu
+ editMenu frame${i}Menu brFrame$i $nmenu
+ }
+
+ } else {
+ editMenu frameMenu frameButton $frameMenuDescription
+
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ editMenu frame${i}Menu brFrame$i $frameMenuDescription
+ }
+ }
+ }
+
+ for {set i 1} {$i <= 16} {incr i} {
+ if {$i <= $nframes} {
+ send frame$i map
+ } else {
+ send frame$i unmap
+ }
+ }
+
+ if {$nframes > 2} {
+ setAllTileFrames
+ }
+}; send nframes addCallback setNFrames
+
+
+# Set the default main window frame menu.
+set frameMenuDescription {
+ {" 1" f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ {" 2" f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ {" 3" f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ {" 4" f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+
+
+
+# Initialize the frame lists panels (blink panel and tile tab).
+for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label [format "%2d" $i]
+ send tFrame$i set label [format "%2d" $i]
+ if {$i <= 4} {
+ send brFrame$i setSensitive True
+ send tFrame$i "setSensitive True ; set state 1"
+ } else {
+ send brFrame$i setSensitive False
+ send tFrame$i "setSensitive False ; set state 0"
+ }
+ createMenu frame${i}Menu brFrame$i $frameMenuDescription
+}
+
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} \
+{
+ global frame
+
+ set frame $new
+ send frameButton set label [format "%2d" $frame]
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+ wcsFmtFBConfig
+ drawCompass
+}; send frame addCallback frameChanged
+
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} \
+{
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+
+ wcsFmtFBConfig
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frameOffsetX frameOffsetY
+ global frame auto_reg blinkFrames
+
+ # Update the position.
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+ set frameOffsetX($frame) [lindex $new 6]
+ set frameOffsetY($frame) [lindex $new 7]
+
+ # If auto-registering is enabled, do it now, but only when we're updating
+ # the current display frame, and only if that frame is in the framelist.
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+
+ foreach f $blinkFrames {
+ if {$f != $frame} {
+ set frameZoomX($f) $frameZoomX($frame)
+ set frameZoomY($f) $frameZoomY($frame)
+ set frameCenterX($f) $frameCenterX($frame)
+ set frameCenterY($f) $frameCenterY($frame)
+ set frameScaleX($f) $frameScaleX($frame)
+ set frameScaleY($f) $frameScaleY($frame)
+ }
+ }
+ }
+ deleteAllRulers
+
+}; send frameView addCallback setFrameView
+
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} \
+{
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} \
+{
+ set lab [string trimright $new]
+ send imageTitle set label $lab
+
+ set image [lindex [ split $lab '-'] 0 ]
+ wcsFmtImname $image
+
+ set title [lindex [ split $lab '-'] 1 ]
+ wcsFmtImtitle $title
+ deleteAllRulers
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send xflipButton set state [true $new]
+ } else {
+ send yflipButton set state [true $new]
+ }
+ deleteAllRulers
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+
+proc Quit args \
+{
+ global ism_enable
+
+ if {$ism_enable} {
+ catch { send wcspix quit }
+ }
+ send client Quit
+}
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x ; flipRegister }
+proc yflip args { send client flip y ; flipRegister }
+proc xyflip args { send client flip x y ; flipRegister }
+proc flipRegister args \
+{
+ global auto_reg frame blinkFrames
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+ }
+}
+
+
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00}
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00}
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f}
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00}
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap bar 10 10 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap dot 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+ 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap null 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+catch { send controlButton "set bitmap panel; addCallback panel" }
+catch { send helpButton "set bitmap qmark; addCallback Help" }
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+send blinkPanel "set bitmap panel"
+
+
+
+# WINDOW the current frame.
+set old_cm_x 0
+set old_cm_y 0
+
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ # For efficiency we won't compute the sqrt of the distance but instead
+ # just compare the square. Use a threshold of 6 pixels so when we
+ # narrow in on the ROI we refine the colormap more precisely.
+
+ set diff [expr (($old_cm_x - $x) * ($old_cm_x - $x)) + \
+ (($old_cm_y - $y) * ($old_cm_y - $y))]
+
+ # Keep the old position.
+ set old_cm_x $x
+ set old_cm_y $y
+ if {$diff > 36} {
+ return
+ }
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+proc updateColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ set old_cm_x $x
+ set old_cm_y $y
+ send client updateColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+ global auto_reg frame frameOffsetX frameOffsetY
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs \
+ $xmag $ymag $xcen $ycen \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+# Pan the display frame one width/height in a given direction.
+proc moveFrame { xs ys args } \
+{
+ global winWidth winHeight frame
+ global frameWidth frameHeight
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # Get the step size for the new position.
+ set xstep_size [ expr "$xs * $winWidth / $frameZoomX($frame)" ]
+ set ystep_size [ expr "$ys * $winHeight / $frameZoomY($frame)" ]
+
+ # Set the boundaries so we only move up to the edges.
+ set xl [ expr "($winWidth / $frameZoomX($frame)) / 2 + 1" ]
+ set yl [ expr "($winHeight / $frameZoomY($frame)) / 2 + 1" ]
+ set xu [ expr "$frameWidth - $xl" ]
+ set yu [ expr "$frameHeight - $yl" ]
+
+ # Set the new center position.
+ set nxc [ expr "$frameCenterX($frame) + $xstep_size" ]
+ set nyc [ expr "$frameCenterY($frame) + $ystep_size" ]
+ if {$nxc < $xl} { set nxc $xl }
+ if {$nxc > $xu} { set nxc $xu }
+ if {$nyc < $yl} { set nyc $yl }
+ if {$nyc > $yu} { set nyc $yu }
+
+ # Finally, send the command to move the frame.
+ send client zoomAbs \
+ $frameZoomX($frame) $frameZoomY($frame) $nxc $nyc \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+!Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.dblline }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.dblline }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+
+# WCSBOX -- Real time coordinate display.
+
+set track_enable 0
+set last_x 0
+set last_y 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame pixtab_up tabTop
+ global frameWidth frameHeight redraw_compass
+ global ism_enable wcsLabels last_x last_y
+ global ct_warn plotSpeed doHcut doVcut
+
+
+ # If the cursor was frozen release it now.
+ if {$ct_warn} {
+ curtrack_destroy
+ }
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ scan $text "%g %g %g" nx ny nz
+ } else {
+ set text [format " %7.2f %7.2f %9.1f " $rx $ry $rz]
+ set nx $rx ; set ny $ry ; set nz $rz
+ }
+
+ # Update the coords panel and pixel table.
+ wcsFmtSValue $nz
+ if {$pixtab_up} {
+ updatePixelTable $x $y $nx $ny
+ }
+
+ # If the ISM is running update the coords box with all the selected
+ # options, otherwise just write the one-line frame wcs coords.
+ if {$ism_enable} {
+ updateCoordsBox
+
+ } else {
+ # Update the on-screen marker.
+ if {$track_enable} {
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+
+ # Update the control panel readout (always done).
+ if {$wcsLabels} {
+ set ln [format " X: %12s Y: %12s WCS: Display" $nx $ny]
+ } else {
+ set ln [format " %12s %12s Display" $nx $ny]
+ }
+ send wtWcs1 set string $ln
+
+ if {$redraw_compass} \
+ drawCompass
+ }
+
+
+ # Update the cut-plots if enabled. If we're set for speed the don't
+ # track the really large cursor motions, wait till the differences are
+ # small indicating a finer motion.
+ if {$doHcut || $doVcut} {
+ set dist [ expr "sqrt(pow(($last_x - $x),2) + pow(($last_y - $y),2))" ]
+ if {($plotSpeed && $dist < 30) || ! $plotSpeed} {
+ cutPlots $x $y
+ }
+ }
+
+ # Save the position so we can track differences with last position.
+ set last_x $x
+ set last_y $y
+}
+
+
+proc setTrack {state} \
+{
+ global ism_enable track_enable wcsboxGeom
+ global winWidth winHeight up_todo
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 27ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ # Turn on the option toggles on the control panel.
+ foreach n {1 2 3 4} {
+ if {[send sysWcs$n get label] != "None"} {
+ send wiWcs$n set on True
+ }
+ }
+ if {$ism_enable} {
+ resizeCoordsBox $up_todo
+ }
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+
+ # Turn off the option toggles on the control panel.
+ foreach w {wiWcs1 wiWcs2 wiWcs3 wiWcs4} { send $w set on False }
+ resizeCoordsBox 0
+ }
+ updateCoordsBox
+}
+
+proc wcsboxDestroyCallback args \
+{
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args \
+{
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+ }
+}
+
+proc wcsboxMoved {marker event position} \
+{
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} \
+{
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+
+#---------------------
+# FRAME BLINK.
+#---------------------
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args \
+{
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args \
+{
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args \
+{
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args \
+{
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client updateColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec { panelTabToggle info_panel } }
+ { "Load" f.exec {
+ panelTabToggle load_panel
+ set panel_up 1
+ } }
+ { "Save" f.exec { Save } }
+ { "Save As..." f.exec { panelTabToggle save_panel } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec { panelTabToggle print_panel } }
+ { f.dblline }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Debug Panel" f.exec { tclPanel 1 } }
+ { "Quit" f.exec { Quit } }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.dblline }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.dblline }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.dblline }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Auto-Register" f.exec cpAutoRegister }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.dblline }
+ { "Control Panel" f.exec { panelTabToggle display_panel } }
+ { "Print Panel" f.exec { panelTabToggle print_panel } }
+ { "Load Panel" f.exec { panelTabToggle load_panel } }
+ { "Save Panel" f.exec { panelTabToggle save_panel } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+
+#-------------------------------
+# Frozen Cursor Warning Message
+#-------------------------------
+
+set ct_warn 0
+
+proc curtrack_msg { x y args } \
+{
+ global ct_warn last_x last_y winHeight winWidth
+
+
+ if {! $ct_warn == 0} {
+ return
+ }
+
+ send imagewin createMarker curtrack_warn {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 21
+ lineWidth 0
+ imageText true
+ textBgColor red
+ textColor yellow
+ visible true
+ sensitive true
+ activated true
+ x 5
+ y 5
+ }
+
+ send curtrack_warn "set text \{ CURSOR READOUT FROZEN \}"
+ set ypos [ expr ($winHeight - 25) ]
+ send curtrack_warn "markpos; setAttributes x 5 y $ypos; redraw"
+ send curtrack_warn "redraw noerase"
+ set ct_warn 1
+
+ # Mark the position of the cursor.
+ send imagewin createMarker x_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x 1 \
+ y $last_y \
+ width $winWidth \
+ height 1 \
+ activated True \
+ visible True \
+ sensitive False
+
+ send imagewin createMarker y_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $last_x \
+ y 1 \
+ width 1 \
+ height $winHeight \
+ activated True \
+ visible True \
+ sensitive False
+
+ # Raise the coordinate marker so we can see where we are.
+ send wcsbox raise
+}
+
+
+proc curtrack_destroy args \
+{
+ global ct_warn
+
+ if {$ct_warn} {
+ send curtrack_warn destroy
+ send x_curpos destroy
+ send y_curpos destroy
+ set ct_warn 0
+ }
+}
+
+
+################################################################################
+# CURSOR CENTEROID AND AUTO-REGISTER FUNCTIONS.
+################################################################################
+
+# Set the centroiding box size.
+set ctid 0
+set cid 0
+
+proc cbxDestroy args \
+{
+ global centerBoxSize cid ctid
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+}
+
+proc setCtrBoxSize { x y delta args } \
+{
+ global centerBoxSize cid ctid
+ global cpXscale cpYscale
+
+ incr centerBoxSize $delta
+ if {$centerBoxSize <= 1} { set centerBoxSize 1 }
+
+ # Kill off any old markers before drawing the new one.
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr cid
+ send imagewin createMarker cbm$cid \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $x \
+ y $y \
+ width [expr $cpXscale * $centerBoxSize] \
+ height [expr $cpXscale * $centerBoxSize] \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ctid [ postTimedCallback cbxDestroy 500]
+}
+
+
+# Box size is half-width of the marker size. Value is the slider value.
+set focusBoxSize $winWidth
+set focusValue 100.0
+set fid 0
+set ftid 0
+set moving 0
+
+proc setFocusBoxSize { sz args } \
+{
+ global focusBoxSize fid ftid focusValue moving
+ global winWidth winHeight
+
+
+ if { $moving == 0 } {
+ return done
+ }
+
+ if { $winWidth < $winHeight } {
+ set max [expr $winWidth / 2 - 64]
+ } else {
+ set max [expr $winHeight / 2 - 64]
+ }
+ set focusBoxSize [expr 64 + ($sz * $max) - 1]
+ #send client setOption cmfocus [expr ($focusBoxSize / 2)]
+ send client setOption cmfocus $focusBoxSize
+
+ # Destroy any existing markers.
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr fid
+ send imagewin createMarker fm$fid \
+ type box \
+ createMode noninteractive \
+ lineColor green \
+ lineWidth 4 \
+ x [expr $winWidth / 2] \
+ y [expr $winHeight / 2] \
+ width $focusBoxSize \
+ height $focusBoxSize \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ftid [ postTimedCallback fbxDestroy 500]
+ set moving 0
+}
+
+proc fbxDestroy args \
+{
+ global fid ftid moving
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+}
+
+proc setFocusSize { widget cbtype x y } \
+{
+ global focusValue ftid moving
+
+ # Only update once we've stopped the movement.
+ if { $x == $focusValue && $moving == 1 } {
+ set ftid [ postWorkProc setFocusBoxSize $x ]
+ } else {
+ set moving 1
+ }
+ set focusValue $x
+} ; send focusSlider addCallback setFocusSize scroll
+
+
+# Compute a centroid offset for the current position to peak-up on the
+# feature.
+
+proc centroid { x y type args } \
+{
+ global centerBoxSize
+ global cpXscale cpYscale
+
+ # Convert to image coords.
+ set sz [expr "int ($centerBoxSize * $cpXscale)"]
+
+ # Get the centroid position.
+ if {$type != "min"} {
+ if {[send peakupButton get on]} {
+ set center [ send client centroid $x $y $sz ]
+ } else {
+ set center [ send client centroid $x $y $sz max ]
+ }
+ } else {
+ set center [ send client centroid $x $y $sz min ]
+ }
+
+ # Now reposition the cursor.
+ set xoff [lindex $center 0 ]
+ set yoff [lindex $center 1 ]
+ move_cursor $xoff $yoff
+}
+
+
+# Set the auto-register center offset position
+proc offset { x y args } \
+{
+ global frame blinkFrames auto_reg
+ global frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # No-op of auto-register isn't on.
+ if { $auto_reg == 0 } {
+ Wexec client "Auto-Register is not enabled!"
+ return
+ }
+
+ # If we're not in the blink frames list ignore the request.
+ if { [string first $frame $blinkFrames] == -1 } {
+ Wexec client "Frame not in current\nregister list."
+ return
+ }
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set xoff [expr "int ($rx) - $frameCenterX($frame)" ]
+ set yoff [expr "int ($ry) - $frameCenterY($frame)" ]
+
+ set frameOffsetX($frame) $xoff
+ set frameOffsetY($frame) $yoff
+
+ # Adjust the display.
+ send client setOffset $xoff $yoff
+}
+
+
+
+################################################################################
+# MAIN CONTROL PANEL
+################################################################################
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args \
+{
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+#-----------------------------------------------------------------------------
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+send focusSlider "resizeThumb 0.1 1.0 ; moveThumb 1.0"
+
+
+# panel -- Toggle control panel display.
+proc panel args \
+{
+ global panel_up
+ if {$panel_up} {
+ send panelShell unmap
+ set panel_up 0
+ } else {
+ send panelShell map
+ set panel_up 1
+ }
+}
+
+proc pbTracePanel {name element op} \
+{
+ catch {
+ upvar $name panel_up
+ send controlButton set state $panel_up
+ }
+} ; trace variable panel_up w pbTracePanel
+
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} \
+{
+ global frame nframes frames
+ global displayPanner displayMagnifier displayCoords
+ global blinkFrames warnings peakCentroid
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+
+ # Initialize to hide the extra frames.
+ send frlistBox set width 30
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i {1 2 3 4} {
+ send blinkFrame$button set label $i
+ incr button
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ send peakupButton set on [true $peakCentroid]
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+
+# Control Panel Tabs widget procedures.
+#----------------------------------------
+
+set cpTabs { display_panel print_panel load_panel save_panel \
+ info_panel wcs_panel tile_panel}
+set tabTop "display_panel"
+
+
+# Resize the control panel depending on the Tab selected.
+proc cpResizeCB { widget event a b c d e args } \
+{
+ global tabTop fileList
+
+ # Handle only the first exposure event generated.
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ set tabTop $widget
+
+ switch $widget {
+ display_panel { send panel set height 595 }
+ print_panel { send panel set height 545 }
+ load_panel { send panel set height 485
+ if { [send browseHdrs get on] } {
+ send imageList setList $fileList resize
+ } else {
+ send client setLoadOption rescan
+ }
+ }
+ save_panel { send panel set height 325 }
+ info_panel { send panel set height 380 }
+ tile_panel { send panel set height 405 }
+ wcs_panel { setCoordPanelHeight }
+ }
+ }
+} ; foreach w $cpTabs { send $w addEventHandler cpResizeCB exposureMask }
+
+
+proc panelDismiss args \
+{
+ global panel_up
+ send panelShell unmap
+ set panel_up 0
+} ; send panelClose addCallback panelDismiss
+
+
+proc panelTabToggle { panel args } \
+{
+ global tabTop panel_up TabToWidget
+
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $TabToWidget($panel) set state 0
+ set panel_up 0
+
+ } else {
+ # Special cases for each panel.
+ if {$panel == "load_panel"} {
+ send client setLoadOption rescan
+ }
+
+ send panelTabs setTop $panel
+ set tabTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send panelShell map
+ set panel_up 1
+ }
+
+ }
+}
+
+proc displayPanel args { panelTabToggle display_panel }
+proc infoPanel args { panelTabToggle info_panel }
+proc loadPanel args { panelTabToggle load_panel }
+proc savePanel args { panelTabToggle save_panel }
+proc printPanel args { panelTabToggle print_panel }
+proc tilePanel args { panelTabToggle tile_panel }
+proc wcsPanel args { panelTabToggle wcs_panel }
+
+
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} \
+{
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} \
+{
+ global frameCache
+
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+
+ # Update the header panel object list.
+ catch {
+ # Only update when the header panel is open.
+ if {[info exists frameCache($new)] && [send imageHeader get on]} {
+ setHdrObjMenu $new
+ getHeader [lindex $frameCache($new) 0] [lindex $frameCache($new) 1]
+ }
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+for {set i 1} {$i <= 16} {incr i} {send frame$i addCallback cpSetFrame}
+
+# Initialize to hide the extra frames.
+send frlistBox set width 30
+
+proc blinkPanelCB { widget type state args } \
+{
+ if {$state} {
+ send blink_panel map
+ } else {
+ send blink_panel unmap
+ }
+} ; send blinkPanel addCallback blinkPanelCB
+
+proc blinkPanelClose args \
+{
+ send blink_panel unmap
+ send blinkPanel set state 0
+} ; send brClose addCallback blinkPanelClose
+
+
+
+# Frame buttons.
+proc cpFrameAction {widget args} \
+{
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args \
+{
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args \
+{
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+}
+
+proc initFitFrame { param old new } \
+{
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} \
+{
+ global frameZoomX frameZoomY zoomindex frame
+ global frameOffsetX frameOffsetY frameCenterX frameCenterY
+
+ if {$mode == "fixed"} {
+ #send client zoom $zoom_x $zoom_y
+ send client zoomAbs $zoom_x $zoom_y \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ #send client zoom \
+ # [expr $frameZoomX($frame) * $zoom_x] \
+ # [expr $frameZoomY($frame) * $zoom_y]
+ send client zoomAbs \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y] \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget { toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8 } {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+set cpXoff 0
+set cpYoff 0
+
+proc cpDisplayFrameData {name old new} \
+{
+ global cpFrame cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+ set xoff [lindex $new 6]; set yoff [lindex $new 7]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xoff != $cpXoff || $yoff != $cpYoff ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpXoff $xoff;
+ set cpYmag $ymag; set cpYoff $yoff;
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ set offset [format " Offset: (%0.1f,%0.1f)" $cpXoff $cpYoff]
+
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2 $offset \
+ ]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args \
+{
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args \
+{
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client updateColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} \
+{
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set colorTables {}
+
+proc cpSetColorList {param old new} \
+{
+ set colorTables $new
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc colorlistResize args \
+{
+ global colorTables
+ send colorlist setList $colorTables resize
+}; send colorlist addEventHandler colorlistResize ResizeRedirectMask
+
+proc cpSelectColor {widget cbtype selections indices} \
+{
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+send brBRtext set label $blinkRate
+
+proc cpSetBlinkRate {w args} \
+{
+ global blinkRate
+ if {$w == "BRincrease" || $w == "brBRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+}
+foreach w {BRincrease BRdecrease brBRincrease brBRdecrease} {
+ send $w addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} \
+{
+ global blinkFrames frames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i {1 2 3 4} {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send blinkButton set on False
+ send brBlinkButton set on False
+ blink
+ } elseif {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+} ; foreach w {blinkButton brBlinkButton} {send $w addCallback cpBlink}
+
+
+proc cpAutoRegister {widget type state args} \
+{
+ global auto_reg frame frames blinkFrames
+ global frameZoomX frameZoomY frameOffsetX frameOffsetY
+
+ set auto_reg $state
+ if {$auto_reg == 1} {
+ send autoregButton set on True
+ send brAregButton set on True
+ } else {
+ send autoregButton set on False
+ send brAregButton set on False
+ }
+
+ # Register the frames to zero the offsets.
+ send client registerFrames \{$blinkFrames\}
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+} ; foreach w {autoregButton brAregButton} {send $w addCallback cpAutoRegister}
+
+
+proc toggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ }
+}
+
+proc resetAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} \
+ toggleAutoReg
+}; send initialize addCallback resetAutoReg
+
+
+proc cpResetBlink args \
+{
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i {1 2 3 4} {
+ send blinkFrame$i set label " "
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+ set blinkIndex 0
+}
+send blinkReset addCallback cpResetBlink
+send brReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send blinkButton set on [expr $blinkId != 0]
+ send brBlinkButton set on [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} \
+{
+ global blinkFrames frames
+
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ for {set i 1} {$i <= $new} {incr i} {
+ if {$i <= 4} {
+ send blinkFrame$button set label $i
+ }
+ send brFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args \
+{
+ global frames blinkFrames
+ global frameOffsetX frameOffsetY
+
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+ send client registerFrames \{$blinkFrames\}
+}
+send registerButton addCallback cpRegisterFrames
+send brRegButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args \
+{
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}
+send matchButton addCallback cpMatchFrames
+send brMatchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} \
+{
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} \
+{
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} \
+{
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} \
+{
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args \
+{
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args \
+{
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} \
+{
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args \
+{
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} \
+{
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames { widget type state args } \
+{
+ global tile_frames tileOpt
+
+ set value [send tileFramesButton get on]
+ if {$value} {
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $tile_frames \}
+} ; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
+
+################################################################################
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+################################################################################
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+proc toggleMagnifier args \
+{
+ global magnifier_enable
+ if {$magnifier_enable} {
+ setMagnifier 0
+ } else {
+ setMagnifier 1
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args \
+{
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} \
+{
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args \
+{
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} \
+{
+ global magnifierGeom displayMagnifier
+
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args \
+{
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+# if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+# # For efficiency we won't compute the sqrt of the distance but instead
+# # just compare the square. Use a threshold of 6 pixels so when we
+# # narrow in on the ROI the magnifier is still (mostly) correct.
+# set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+# (($last_mag_y-$y) * ($last_mag_y-$y))]
+# if {$diff > 36} {
+# set last_mag_x $x
+# set last_mag_y $y
+# return
+# }
+# }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } \
+ return
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
+
+################################################################################
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+################################################################################
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_mag_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args \
+{
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global last_compass
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ autoRedraw true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Redraw the compass if necessary.
+ send compass "setSensitive True ; set on $last_compass"
+ if { $last_compass } \
+ drawCompass
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args \
+{
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+
+ # Disable the compass.
+ send compass "setSensitive False ; set on False"
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args \
+{
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} \
+{
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} \
+{
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+ global frame auto_reg frameOffsetX frameOffsetY
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ if {$auto_reg == 1} {
+ send client zoomAbs $xscale $yscale $x $y \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ send client zoom $xscale $yscale $x $y
+ }
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} \
+{
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} \
+{
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ drawCompass
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global frame
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+ drawCompass
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args \
+{
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global frame
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ eraseCompass
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+
+ drawCompass
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} \
+{
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
+
+################################################################################
+# Print Panel Functions.
+################################################################################
+
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args \
+{
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } \
+{
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ send titleButton setSensitive true
+ send colorbarButton setSensitive true
+ send bordersButton setSensitive true
+ send titleLabel setSensitive true
+ send titleString setSensitive true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ send titleButton setSensitive false
+ send colorbarButton setSensitive false
+ send bordersButton setSensitive false
+ send titleLabel setSensitive false
+ send titleString setSensitive false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ } elseif { $val == "B5" } {
+ send epsB5Button set on true
+ set page_size epsB5Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+ dotitle { if { $val == "True" } {
+ send titleButton set on true
+ } elseif { $val == "False" } {
+ send titleButton set on false
+ }
+ }
+ doborders { if { $val == "True" } {
+ send bordersButton set on true
+ } elseif { $val == "False" } {
+ send bordersButton set on false
+ }
+ }
+ docolorbar { if { $val == "True" } {
+ send colorbarButton set on true
+ } elseif { $val == "False" } {
+ send colorbarButton set on false
+ }
+ }
+ title { send titleString set string $val
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button epsB5Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+ titleButton bordersButton colorbarButton
+}
+
+proc prPrintCommand { widget cbtype args } \
+{
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prTitleString { widget cbtype args } \
+{
+ send client setPrintOption title $args
+}; send titleString addCallback prTitleString
+
+proc prOptionToggle { widget cbtype args } \
+{
+ global imageScale
+
+ # Handle the image scale widgets first.
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+ epsB5Button { send client setPrintOption papersize B5 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } \
+{
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+
+ titleButton { send client setPrintOption dotitle $val }
+ bordersButton { send client setPrintOption doborders $val }
+ colorbarButton { send client setPrintOption docolorbar $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set lprList {}
+
+proc psSetPrintList {param old new} \
+{
+ global lprList
+ set lprList $new
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc lprResize args \
+{
+ global lprList
+ send printlist setList $lprList resize
+ send printlist highlight 0
+}; send printlist addEventHandler lprResize ResizeRedirectMask
+
+proc psSelectPrint {widget cbtype selections indices} \
+{
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc Print args \
+{
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ set val [ send titleString get string ]
+ send client setPrintOption title $val
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } \
+{
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
+
+################################################################################
+# INFO box.
+################################################################################
+
+set infoMode infoOptFr
+
+
+# Current Frame information.
+proc infoFrameUpdate args \
+{
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if { [send infoOptWCS get on] } {
+ send client info wcs
+ return
+ } elseif {! [send infoOptFr get on]} \
+ return
+
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set cntr [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $cntr]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+ set line9 [format "Offset:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXoff $cpYoff]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8 $line9
+ ]
+ }
+}
+set params {frame frameView nframes frameSize frameTitle enhancement}
+foreach p $params { send $p addCallback infoFrameUpdate }
+
+
+# Server Program State information.
+proc infoOptToggle { widget type state args } \
+{
+ global infoMode ismInfoText
+
+ if {$state} { set not False } else { set not True }
+
+ send $infoMode set on $not
+ set infoMode $widget
+
+ switch $widget {
+ infoOptFr { infoFrameUpdate }
+ infoOptSvr { set bp [send imagewin get basePixel]
+ set mc [send imagewin get maxColors]
+ send client info server $bp $mc
+ }
+ infoOptIsm { send infoText set string $ismInfoText }
+ infoOptClients { send client info clients }
+ infoOptWCS { send client info wcs }
+ infoOptFB { send client info imtoolrc }
+ }
+}
+set iopts {infoOptFr infoOptSvr infoOptIsm infoOptClients infoOptWCS infoOptFB }
+foreach w $iopts { send $w addCallback infoOptToggle }
+
+
+proc infoSetText { param old new } \
+{
+ send infoText set string $new
+} ; send info addCallback infoSetText
+
+
+
+################################################################################
+# Image and objects list display and section
+################################################################################
+
+proc filesTextHighlight { widget event args } \
+{
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+foreach w {imtemplateText fnameText z1Value z2Value} {
+ send $w addEventHandler filesTextHighlight enterWindowMask
+ send $w addEventHandler filesTextHighlight leaveWindowMask
+}
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+set label \
+ [format "%-35.35s %6s %12s %12s"\
+ " Image" "Bitpix" " Size" " Title"]
+send imlistLabel set label $label
+send imlistLabel "set height 0 ; unmap"
+
+
+# Create the Frames menu on the load panel window.
+set loadItems { "Current f.exec \{send frameFrame set label Current\}"}
+for {set i 1} {$i <= $MAX_FRAMES} {incr i} {
+ lappend loadItems "\"\ \ $i\ \ \" f.exec \{send frameFrame set label $i\}"
+}; createMenu loadFrames frameFrame $loadItems
+
+
+
+
+
+# Filename pattern callback.
+proc setPattern { widget mode pattern args } \
+{
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+
+# Load options parameter callback.
+proc doLoadOptions { param old new } \
+{
+ global warnings panel_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format " Directory: %s" $val ] }
+ newfile { send fnameText set string $val }
+ status { send filesStatus set label $val
+ if { ! $panel_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayscale set on $val }
+ zscale { send zscale set on $val
+ if {$val} {
+ send zrange setSensitive False
+ } else {
+ send zrange setSensitive True
+ }
+ }
+ zrange { send zrange set on $val
+ if {$val} {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive False
+ }
+ } else {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive True
+ }
+ }
+ }
+ z1 { send z1Value set string [format "%s" $val ] }
+ z2 { send z2Value set string [format "%s" $val ] }
+ nsample { send nsampValue set string [format "%s" $val ] }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+# Option utility routines.
+proc toggleGraymap args \
+{
+ send client setLoadOption gray [ send grayscale get on ]
+} ; send grayscale addCallback toggleGraymap
+
+proc toggleHeaders args \
+{
+ if { [send browseHdrs get on] } {
+ send client setLoadOption headers
+ send rootButton setSensitive False
+ send homeButton setSensitive False
+ send upButton setSensitive False
+ send rescanButton setSensitive False
+ send imlistLabel "set height 10 ; map"
+ } else {
+ send client setLoadOption rescan
+ send rootButton setSensitive True
+ send homeButton setSensitive True
+ send upButton setSensitive True
+ send rescanButton setSensitive True
+ send imlistLabel "set height 0 ; unmap"
+ }
+} ; send browseHdrs addCallback toggleHeaders
+
+proc toggleZscale args \
+{
+ send client setLoadOption zscale [send zscale get on]
+} ; send zscale addCallback toggleZscale
+
+proc toggleZrange args \
+{
+ send client setLoadOption zrange [send zrange get on]
+} ; send zrange addCallback toggleZrange
+
+proc setZ1 { widget mode pattern args } \
+{
+ send client setLoadOption z1 $pattern
+} ; send z1Value addCallback setZ1
+
+proc setZ2 { widget mode pattern args } \
+{
+ send client setLoadOption z2 $pattern
+} ; send z2Value addCallback setZ2
+
+proc setNsamp { widget mode pattern args } \
+{
+ send client setLoadOption nsample $pattern
+} ; send nsampValue addCallback setNsamp
+
+proc fileLoad { widget mode fname args } \
+{
+ loadImage $fname
+} ; send fnameText addCallback fileLoad
+
+
+
+# Image list selection routines.
+
+set fileList {}
+
+proc setFileList { param old new } \
+{
+ global fileList
+ set fileList $new
+
+ # Get the max length of the strings so we can set
+ # the list columns appropriately.
+ set max 0
+ foreach n $new {
+ set len [string length $n]
+ if {$len > $max} { set max $len }
+ }
+
+ # Optimize the number of columns for the file list.
+ if {$max > 35} {
+ send imageList set defaultColumns 1
+ } elseif {$max > 21} {
+ send imageList set defaultColumns 2
+ } elseif {$max > 12} {
+ send imageList set defaultColumns 3
+ } elseif {$max > 5} {
+ send imageList set defaultColumns 4
+ } else {
+ send imageList set defaultColumns 5
+ }
+
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flResize args \
+{
+ global fileList
+ send imageList setList $fileList resize
+}; send imageList addEventHandler flResize ResizeRedirectMask
+
+proc flSelectPrint { widget cbtype selections args } \
+{
+ if {! [send autoload get on]} \
+ return
+
+ foreach selection $selections {
+ if { [send zrange get on] } {
+ loadImage [lindex $selection 0]
+ } else {
+ loadImage $selection
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+
+# Load the named image in the display.
+proc loadImage { name } \
+{
+ global frame
+
+ set fr [send frameFrame get label]
+
+ if { $fr == "Current" } { set fr $frame }
+
+ if { [fileSetOptions] >= 0 } {
+ send imagewin setCursorType busy
+ send client load $name $fr
+ send imagewin setCursorType idle
+ send fnameText set string $name
+ }
+}
+
+# Load button callback.
+proc fileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ loadImage $fname
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+
+# Send and selected options to the client before loading the image.
+proc fileSetOptions args \
+{
+ if { ![send zscale get on] && ![send zrange get on] } {
+ set z1 [send z1Value get string]
+ set z2 [send z2Value get string]
+
+ if {$z1 == $z2} {
+ Wexec client "z1/z2 values are not set properly"
+ return -1
+ } else {
+ send client setLoadOption z1 $z1
+ send client setLoadOption z2 $z2
+ }
+ }
+
+ return 0
+}
+
+
+################################################################################
+# Save panel functions.
+################################################################################
+
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button epsButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } \
+{
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ epsButton { send client setSaveOption format eps }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } \
+{
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } \
+{
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ eps { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format epsButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+
+proc Save args \
+{
+ global panel_up
+
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+} ; send okaySave addCallback Save
+
+
+
+################################################################################
+# TILE GEOMETRY
+################################################################################
+
+set tileSel 2
+set tileOpt 0
+set tileNcols 2
+set tileNrows 1
+set tile_frames {}
+
+proc selectTileOrientation { widget type select args } \
+{
+ global tileSel tileOpt
+
+ set w { nrowLab ncolLab nrdecrease nrincrease ncdecrease ncincrease }
+ if {$select == "Manual"} {
+ foreach p $w { send $p setSensitive True }
+ } elseif {$select != "none"} {
+ foreach p $w { send $p setSensitive False }
+ }
+
+ set w { byCols bottomUp labelFrames labelImname labelTitles }
+ if {$select == "Disabled"} {
+ foreach p $w { send $p setSensitive False }
+ } else {
+ foreach p $w { send $p setSensitive True }
+ }
+
+ switch $select {
+ Disabled { set tileSel 0 }
+ Manual { set tileSel 1
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+ set select [format "%dx%d" $nx $ny]
+ }
+ Best { set tileSel 2 }
+ Square { set tileSel 3 }
+ Horizontal { set tileSel 4 }
+ Vertical { set tileSel 5 }
+ "One Row" { set tileSel 6 }
+ "One Column" { set tileSel 7 }
+ none { send tileMode set selection $tileSel ; return }
+ }
+
+ # Reset the button in case we're called directly from elsewhere.
+ send tileMode set selection $tileSel
+
+ # Send the option to the client.
+ if {$tileSel > 0} {
+ setTileFrames
+ send client setOption tileFrames "True"
+ set tileOpt $tileSel
+ } else {
+ send client setOption tileFrames "False"
+ }
+
+} ; send tileMode addCallback selectTileOrientation
+
+proc tileSelToLabel { selection args } \
+{
+ switch $selection {
+ 0 { return "Disabled" }
+ 1 { return "Manual" }
+ 2 { return "Best" }
+ 3 { return "Square" }
+ 4 { return "Horizontal" }
+ 5 { return "Vertical" }
+ 6 { return "One Row" }
+ 7 { return "One Column" }
+ }
+ return "Best"
+}
+
+# Callback for the fill style options.
+proc selectFillStyle { widget type state args } \
+{
+ if {$state} { set not False } else { set not True }
+
+ switch $widget {
+ byCols { send client setOption tileByRows $not }
+ bottomUp { send client setOption tileTopDown $not }
+ }
+} ; foreach w {byCols bottomUp} { send $w addCallback selectFillStyle }
+
+# Callback for the tile labelling options.
+proc selectTileLabels { widget type state args } \
+{
+ if {$state} {
+ switch $widget {
+ labelFrames { send client setOption tileLabels 1 }
+ labelImname { send client setOption tileLabels 2 }
+ labelTitles { send client setOption tileLabels 3 }
+ }
+ } else {
+ send client setOption tileLabels 0
+ }
+ send $widget set on $state
+}
+foreach w {labelFrames labelImname labelTitles} {
+ send $w addCallback selectTileLabels
+}
+
+# Callback for the Tile Frame selection toggles.
+proc setTileFrames args \
+{
+ global tile_frames tileSel tileNcols tileNrows
+
+ # No-op if tiling isn't enabled.
+ if {$tileSel == 0} \
+ return
+
+ # Get the new tile frames list.
+ set tile_frames {}
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get state]} {
+ lappend tile_frames $i
+ }
+ }
+
+ # Reset the geometry.
+ set geom [format "%dx%d" $tileNcols $tileNrows]
+ switch $tileSel {
+ 1 { send client setOption tileGeom $geom \{ $tile_frames \} }
+ 2 { send client setOption tileGeom Best \{ $tile_frames \} }
+ 3 { send client setOption tileGeom Square \{ $tile_frames \} }
+ 4 { send client setOption tileGeom Horizontal \{ $tile_frames \} }
+ 5 { send client setOption tileGeom Vertical \{ $tile_frames \} }
+ 6 { send client setOption tileGeom Row \{ $tile_frames \} }
+ 7 { send client setOption tileGeom Column \{ $tile_frames \} }
+ }
+}; for {set i 1} {$i <= 16} {incr i} {send tFrame$i addCallback setTileFrames}
+
+proc setAllTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state True
+ }
+ }
+ setTileFrames
+} ; send tAll addCallback setAllTileFrames
+
+proc setNoTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state False
+ }
+ }
+ setTileFrames
+} ; send tNone addCallback setNoTileFrames
+
+proc tileOptions { param old new } \
+{
+ global tileNcols tileNrows
+
+ set tileNcols [lindex $new 0]
+ set tileNrows [lindex $new 1]
+
+ # Set the geometry.
+ send nctext set label $tileNcols
+ send nrtext set label $tileNrows
+ send tileGeometry set label [format \
+ "Tile Geometry: %-2dx%2d" $tileNcols $tileNrows]
+
+} ; send tileOptions addCallback tileOptions
+
+
+proc tileSetRows { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "nrdecrease" && [expr ($ny-1)] > 0} {
+ incr ny -1
+ } elseif {$widget == "nrincrease" && [expr ($ny+1)] <= $nframes} {
+ incr ny 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { nrdecrease nrincrease } { send $w addCallback tileSetRows }
+
+proc tileSetCols { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "ncdecrease" && [expr ($nx-1)] > 0} {
+ incr nx -1
+ } elseif {$widget == "ncincrease" && [expr ($nx+1)] <= $nframes} {
+ incr nx 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { ncdecrease ncincrease } { send $w addCallback tileSetCols }
+
+
+# Initialize the frame tiling.
+setAllTileFrames
+selectTileOrientation junk junk Disabled
+selectFillStyle byRows junk True
+selectFillStyle topDown junk True
+selectTileLabels labelImname junk False
+
+################################################################################
+# Coords Panel Callbacks.
+################################################################################
+
+# In case we need to change the values....
+#global wcsPHeight wcsPTxtHeight wcsPGrHeight wcsPOptHeight
+#set wcsPHeight 267
+#set wcsPTxtHeight 132
+#set wcsPGrHeight 175
+#set wcsPOptHeight 233
+#setCoordPanelHeight
+
+set wcsPHeight 267 ;# full panel no options
+set wcsPTxtHeight 132 ;# size of text area box
+set wcsPGrHeight 175 ;# size of text area group
+set wcsPOptHeight 233 ;# extra height for opts boxes
+
+# Set the WCS readout panel sensitivity depending on whether the ISM
+# is currently enabled.
+proc setCoordPanelSensitivity args \
+{
+ set widgets {
+ wpWcs2 wpWcs3 wpWcs4
+ wiWcs2 wiWcs3 wiWcs4
+ wlWcs2 wlWcs3 wlWcs4
+ sysWcs2 sysWcs3 sysWcs4
+ fmtWcs2 fmtWcs3 fmtWcs4
+ }
+
+ send sysWcs1 set label "Display"
+ send fmtWcs1 set label "Default"
+
+ for {set i 2} {$i <= 4} {incr i} {
+ send sysWcs$i set label "None" ; send fmtWcs$i set label "Default"
+ send wpWcs$i set on False ; send wiWcs$i set on False
+ send wtWcs$i set height 4
+ }
+
+ if {[send ismToggle get on]} {
+ send sysWcs2 set label "World" ; send fmtWcs2 set label "Default"
+ send wpWcs2 set on True ; send wiWcs2 set on True
+ send wtWcs2 set height 17
+
+ foreach w $widgets { send $w setSensitive True }
+ } else {
+ foreach w $widgets { send $w setSensitive False }
+ }
+}
+
+
+# Set the Coords Panel height depending on the option settings.
+proc setCoordPanelHeight args \
+{
+ global wcsPHeight wcsPOptHeight wcsPTxtHeight wcsPGrHeight
+ global tabTop
+
+ if {$tabTop != "wcs_panel"} \
+ return
+
+ # Get the height of the text area
+ set panel_h $wcsPHeight
+ set shrinkage 0
+ foreach w { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo } {
+ if {[send $w get on] == 0} {
+ incr shrinkage 13
+ }
+ }
+ if {[send woptTitles get on] == 0} {
+ incr shrinkage 26
+ }
+
+ set ph [expr ($wcsPHeight - $shrinkage)]
+ if {[send wcsOptions get on] == 1} {
+ incr ph $wcsPOptHeight
+ }
+
+ send wcsGroup set height [ expr ($wcsPGrHeight - $shrinkage) ]
+ send wcsFrame set height [ expr ($wcsPTxtHeight - $shrinkage) ]
+ send panel set height $ph
+}
+
+# Toggle the options display for the panel.
+proc wcsOptToggle { widget type state args } \
+{
+ global wcsPOptHeight
+ set h [ send panel get height ]
+ if {$state == 1} {
+ send panel set height [ expr ($h + $wcsPOptHeight) ]
+ } else {
+ send panel set height [ expr ($h - $wcsPOptHeight) ]
+ }
+} ; send wcsOptions addCallback wcsOptToggle
+
+# Handle the panel display toggles.
+proc wcsCoordsCB { widget type state args } \
+{
+
+ set hght [ expr (($state == 1) ? 17 : 4)]
+ switch $widget {
+ wpWcs1 { send wtWcs1 set height $hght }
+ wpWcs2 { send wtWcs2 set height $hght }
+ wpWcs3 { send wtWcs3 set height $hght }
+ wpWcs4 { send wtWcs4 set height $hght }
+ woptFBinfo { send wtFBCfg set height $hght }
+ woptTitles { send wtName set height $hght ; send wtTitle set height $hght }
+ }
+ setCoordPanelHeight
+}
+set wcValues { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo woptTitles }
+foreach w $wcValues { send $w addCallback wcsCoordsCB }
+
+
+# Handle WCS label string options.
+set wcsLabels 1
+proc wcsLabelsCB { widget type state args } \
+{
+ global up_todo wcsLabels
+ set wcsLabels $state
+ #resizeCoordsBox 0
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+} ; send woptLabels addCallback wcsLabelsCB
+
+
+# Toggle the BPM tracking state.
+proc wcsBPMCB { widget type state args } \
+{
+ global ism_enable
+ if ($ism_enable) { catch { send wcspix set bpm $state } }
+} ; send woptBPM addCallback wcsBPMCB
+
+
+# Procedures to format lines in the wcsText box.
+proc wcsFmtImname { name } \
+{
+ send wtName set string [format " Name: %s" [string trimleft $name]]
+}
+
+proc wcsFmtImtitle { title } \
+{
+ send wtTitle set string [format " Title: %s" [string trimleft $title]]
+}
+
+proc wcsFmtFBConfig args \
+{
+ global frameWidth frameHeight frame nframes
+ set buf [ format "%5d x %-5d" $frameWidth $frameHeight ]
+ set line [ format "Frame Buf: %-13s Frame: %d of %d" \
+ [string trimleft $buf] $frame $nframes ]
+ send wtFBCfg set string $line
+}
+
+proc wcsFmtIValue { value } \
+{
+ global coord
+ set line [ format " Pixel: %.11s" $value ]
+ send wtIPixval set string $line
+ if {[info exists coord(ival)]} {
+ set coord(ival) $value
+ updateCoordsBox
+ }
+}
+
+proc wcsFmtSValue { value } \
+{
+ global coord
+ set line [ format " Scaled: %.8s" $value ]
+ send wtSPixval set string $line
+ set coord(sval) [format "%s" $value]
+}
+
+proc wcsFmtBValue { value } \
+{
+ global coord
+
+ if { [send woptBPM get on] } {
+ set line [ format " BPM: %s" $value ]
+ set color [expr { ($value == 0) ? "black" : "red" } ]
+ set msg [format "set string \{%s\}; set background %s" $line $color ]
+ set coord(bval) [format "%s" $value]
+ } else {
+ set line [ format " BPM: (off)" ]
+ set msg [format "set string \{%s\}" $line]
+ }
+ send wtBPixval $msg
+}
+
+proc wcsFmtWcs { num wcsname x y xunit yunit args } \
+{
+ global coord coordLab wcsLabels
+
+ if {$wcsLabels} {
+ set line [ format "%4s: %12s %4s: %12s WCS: %s" \
+ $xunit $x $yunit $y [string trimleft $wcsname] ]
+ } else {
+ set line [ format "%4s %12s %4s %12s %s" \
+ " " $x " " $y [string trimleft $wcsname] ]
+ }
+ send wtWcs$num set string $line
+
+ if {[info exists coord(wcs$num)]} {
+ if {$num == 1} {
+ set coord(wcs1) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(sval) ]
+ } elseif {$num == 2} {
+ set coord(wcs2) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(ival) ]
+ } else {
+ set coord(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" $x $y $wcsname ]
+ }
+
+ set coordLab(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" \
+ $xunit $yunit [string trimleft $wcsname ] ]
+ updateCoordsBox
+ }
+}
+
+
+
+# Handle the wcsbox readout.
+#------------------------------
+set up_todo 2
+set up_done 0
+set coord(ival) 0.
+set coord(sval) 0.
+set coord(bval) 0
+set coord(wcs1) { 0. 0. 0. }
+set coord(wcs2) { 0. 0. 0. }
+set coord(wcs3) { 0. 0. 0. }
+set coord(wcs4) { 0. 0. 0. }
+
+proc wcsCoordB { widget type state args } \
+{
+ global coord up_todo
+
+ switch $widget {
+ wiWcs1 { set line wcs1 ;set coord($line) { 0. 0. "" } }
+ wiWcs2 { set line wcs2 ;set coord($line) { 0. 0. "" } }
+ wiWcs3 { set line wcs3 ;set coord($line) { 0. 0. "" } }
+ wiWcs4 { set line wcs4 ;set coord($line) { 0. 0. "" } }
+ }
+
+ if {$state} {
+ incr up_todo
+ } else {
+ unset coord($line)
+ incr up_todo -1
+ }
+
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+set wiValues { wiWcs1 wiWcs2 wiWcs3 wiWcs4 }
+foreach w $wiValues { send $w addCallback wcsCoordB }
+
+
+# Resize the coords box depending on the panel options.
+proc resizeCoordsBox { nlines } \
+{
+ global track_enable wcsLabels winWidth winHeight wcsboxGeom
+
+ if {! $track_enable} \
+ return
+
+ send wcsbox getAttributes width cur_w height cur_h
+ set defGeom [format "%sx%s-5-5" $cur_w $cur_h]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ set ew [expr (($wcsLabels == 1) ? 125 : 65)]
+
+ # Reset to the default geometry
+ if {$nlines == 0} {
+ set x [expr ($x + $ew)]
+ set y [expr ($y + $height - 17 + 1)]
+ set new_w 166
+ set new_h 17
+
+ } else {
+ if {$width > 166} { ;# not using default wcsbox
+ set new_w $width
+ } else {
+ set new_w [expr ($width + $ew)]
+ set x [expr ($x - $ew)]
+ if {$wcsLabels == 0} {
+ incr x 60
+ }
+ }
+ set new_h [ expr ($nlines * 17) ]
+ set y [expr ($y + $height - $new_h + 1)]
+ }
+
+ # Bounds checking.
+ if {$x < 5} {
+ set x 5
+ } elseif {$x > [expr ($winWidth - $new_w - 5)]} {
+ set x [expr ($winWidth - $new_w - 5)]
+ }
+ if {$y < 5} {
+ set y 5
+ } elseif {$y > [expr ($winHeight - $new_h - 5)]} {
+ set y [expr ($winHeight - $new_h - 5)]
+ }
+
+ # Finally redraw the marker.
+ send wcsbox "\
+ setAttributes \
+ width $new_w \
+ height $new_h \
+ x $x \
+ y $y; \
+ redraw"
+
+ set wcsboxGeom [send imagewin getGeometry $x $y $new_w $new_h]
+ send client encodewcs [expr ($winWidth / 2)] [expr ($winHeight / 2)]
+ updateCoordsBox
+}
+
+
+# Shortcuts for known WCS labels.
+set labels(display) "TV"
+set labels(logical) "Log"
+set labels(physical) "Phys"
+set labels(equatorial) "Eq"
+set labels(ecliptic) "Ecl"
+set labels(galactic) "Gal"
+set labels(supergalactic) "SGal"
+set labels(amplifier) "Amp"
+set labels(ccd) "CCD"
+set labels(detector) "Det"
+
+
+# Format the coords box marker with the selected output options.
+proc updateCoordsBox args \
+{
+ global ism_enable coord coordLab wcsLabels
+ global up_done up_todo labels track_enable
+ global coord
+
+ if {! $ism_enable} \
+ return
+
+ incr up_done
+
+ set text ""
+ foreach l {wcs1 wcs2 wcs3 wcs4} {
+ if {[info exists coord($l)]} {
+ set x [lindex $coord($l) 0]
+ set y [lindex $coord($l) 1]
+ set z [string tolower [string trimleft [lindex $coord($l) 2] ] ]
+ if {[info exists labels($z)]} {
+ set z $labels($z)
+ }
+
+ if {$wcsLabels && [info exists coordLab($l)]} {
+ set lx [lindex $coordLab($l) 0]
+ set ly [lindex $coordLab($l) 1]
+ append text [format " %4s %12.12s %4s %12.12s %9.9s \n" \
+ $lx $x $ly $y $z ]
+ } else {
+ append text [format " %12.12s %12.12s %9.9s \n" $x $y $z ]
+ }
+ }
+ }
+
+ # Now send the string.
+ if {$track_enable} {
+ set color [expr { ($coord(bval) == 0) ? "black" : "red" } ]
+ set txt [format "set text \{%s\}; set textBgColor %s; redraw noerase" \
+ $text $color ]
+ send wcsbox $txt
+ }
+
+ if {$up_done >= $up_todo} {
+ set up_done 0 ;# reset counter
+ }
+}
+
+
+# Create the WCS format menus.
+#------------------------------------
+proc setWcsFmt { format line } \
+{
+ catch { send wcspix set format $format $line }
+}
+
+for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ lappend items "\"Default\" f.exec \{setWcsFmt default $i\}"
+ lappend items "\"Sexigesimal\" f.exec \{setWcsFmt hms $i\}"
+ lappend items "\"Degrees\" f.exec \{setWcsFmt deg $i\}"
+ lappend items "\"Radians\" f.exec \{setWcsFmt rad $i\}"
+ editMenu fmtMenu$i fmtWcs$i $items
+}
+
+
+# Create the default WCS type menus.
+#------------------------------------
+
+set defaultWcsMenu {
+ { "None" f.exec {setWcsSys none WCS_LINE } }
+ { "Display" f.exec {setWcsSys display WCS_LINE } }
+ { "World" f.exec {setWcsSys world WCS_LINE } }
+ { "Logical" f.exec {setWcsSys logical WCS_LINE } }
+ { "Physical" f.exec {setWcsSys physical WCS_LINE } }
+ { f.dblline }
+}
+
+proc setWcsSys { sys line } \
+{
+ if {[string tolower $sys] == "none"} {
+ wcsCoordB wiWcs$line junk 0
+ send sysWcs$line set label "None"; send fmtWcs$line set label "Default"
+ send wpWcs$line set on False ; send wiWcs$line set on False
+ send wtWcs$line set height 4
+ setCoordPanelHeight
+
+ } else {
+ catch { send wcspix set wcs $sys $line }
+ }
+}
+
+proc resetDefaultWcsMenu args \
+{
+ global defaultWcsMenu
+
+ for {set i 1} {$i <= 4} {incr i} {
+ regsub -all WCS_LINE $defaultWcsMenu $i menu_def
+ editMenu sysMenu$i sysWcs$i $menu_def
+ }
+} ; resetDefaultWcsMenu
+
+
+# Initialize the coordinates panel.
+#------------------------------------
+
+proc initCoordsPanel args \
+{
+ #send wcLine set height 2 ;# kludge for label widget
+
+ # Initialize the display strings in the coords box.
+ wcsFmtImname ""
+ wcsFmtImtitle ""
+ wcsFmtFBConfig
+ wcsFmtIValue "0." ; wcsFmtSValue "0." ; wcsFmtBValue "0"
+ wcsFmtWcs 1 "" "" "" " X" " Y"
+ wcsFmtWcs 2 "" "" "" " X" " Y"
+ wcsFmtWcs 3 "" "" "" " X" " Y"
+ wcsFmtWcs 4 "" "" "" " X" " Y"
+
+ send fmtWcs1 set label Default
+ send wpWcs1 set on True ;send wiWcs1 set on True
+ send wpWcs2 set on True ;send wiWcs2 set on True
+ send wpWcs3 set on False ;send wiWcs3 set on False ;send wtWcs3 set height 4
+ send wpWcs4 set on False ;send wiWcs4 set on False ;send wtWcs4 set height 4
+
+ # Set the Coords Panel height.
+ set wcsPTxtHeight [send wcsText get height]
+ setCoordPanelHeight
+
+ # Set the WCS readout panel sensitivity.
+ setCoordPanelSensitivity
+
+} ; initCoordsPanel
+
+
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set north_x [lindex $Compass($id) 1]
+ set north_y [lindex $Compass($id) 2]
+ set east_x [lindex $Compass($id) 3]
+ set east_y [lindex $Compass($id) 4]
+ set transpose [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set north_x 0.0 ; set north_y 1.0
+ set east_x 1.0 ; set east_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set transpose 0
+ set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($north_y,$north_x)"]
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the drawing points.
+ set pts {}
+
+ set cpoints { }
+ lappend cpoints [list $east_x $east_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $north_x $north_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ set rpoints { }
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($transpose > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($transpose > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]
+
+ lappend rpoints [list $rx $ry]
+ }
+ foreach p $rpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+ set lpoints { }
+ lappend lpoints [list [expr "$east_x-0.2"] $east_y ]
+ lappend lpoints [list $north_x [expr "$north_y+0.2"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ # Draw the compass axes.
+ set compassPts [lrange $pts 0 5]
+ send imagewin setColorIndex $compassColor
+ send imagewin drawPolyline $compassPts
+
+
+ # Draw the compass pointer.
+ set head [lrange $pts 6 13]
+ send imagewin setFillType solid
+ send imagewin drawPolygon $head
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab
+ send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab
+
+ send imagewin setLogRes $sv_xl $sv_yl
+
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+# This is a kludge to redraw the compass after it is erased when displaying
+# a new image. Once the user moves the mouse back into the main window we'll
+# do the redraw.
+send imagewin addEventHandler drawCompass enterWindowMask
+
+
+
+proc createCompassMarker { pts args } \
+{
+ set cm_points { }
+ lappend cm_points [lrange $pts 0 1]
+ lappend cm_points [lrange $pts 2 3]
+ lappend cm_points [lrange $pts 4 5]
+
+ print [list $cm_points]
+
+}
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
+
+
+################################################################################
+# RULER MARKERS
+################################################################################
+
+set rulerX 0 ;# ruler start in screen coords
+set rulerY 0
+set rulerPts { {0 0} {0 0} {0 0} } ;# ruler vertices
+set rulerList { } ;# ruler list
+
+set rulerSticky { } ;# list of sticky rulers
+set isSticky "Sticky" ;# menu label
+
+set rulerWCS 0 ;# use WCS coords
+set rulerXWCS 0 ;# ruler start in WCS units
+set rulerYWCS 0
+set rulerXWCS2 0 ;# ruler end in WCS units
+set rulerYWCS2 0
+set rulerFmt pixel ;# ruler label format
+
+
+# Translations when pointer is inside marker.
+set rulerTranslations { \
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: call(deleteNamedRuler,NAME,$x,$y)
+ <Key>Delete: call(deleteNamedRuler,NAME,$x,$y)
+ <KeyPress>: m_input()
+ <Btn3Down>: call(setRulerMenu) popup(rulerMenu)
+ <Btn3Up>: popdown(rulerMenu)
+!Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(resizeRuler,$x,$y,0)
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y)
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+
+
+# Popup menu in effect when inside marker.
+set rulerMenuDescription {
+ { "Ruler" f.title }
+ { f.dblline }
+ { "$isSticky" f.exec {
+ toggleSticky $ruler
+ } }
+ { f.line }
+ { "Units" f.menu rulerUnits }
+ { "Color" f.menu rulerColor }
+ { f.line }
+ { "Draw into Frame" f.exec {
+ writeRuler $ruler
+ } sensitive False }
+ { f.line }
+ { "Destroy" f.exec {
+ scan $ruler "ruler%d" num
+ deleteNamedRuler $num x y
+ } }
+} ; createMenu rulerMenu imagewin $rulerMenuDescription
+
+set rulerUnitsDescription {
+ { Units f.title }
+ { f.dblline }
+ { "Pixels" f.exec { setUnits $ruler pixel } }
+ { "Arc Seconds" f.exec { setUnits $ruler arcsec
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Arc Minutes" f.exec { setUnits $ruler arcmin
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Degrees" f.exec { setUnits $ruler degrees
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+} ; createMenu rulerUnits rulerMenu $rulerUnitsDescription
+
+set rulerColorDescription {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "r_setColor $ruler black yellow"
+ bitmap solid foreground black }
+ { "" f.exec "r_setColor $ruler white black"
+ bitmap solid foreground white }
+ { "" f.exec "r_setColor $ruler red yellow"
+ bitmap solid foreground red }
+ { "" f.exec "r_setColor $ruler green black"
+ bitmap solid foreground green }
+ { "" f.exec "r_setColor $ruler blue white"
+ bitmap solid foreground blue }
+ { "" f.exec "r_setColor $ruler magenta black"
+ bitmap solid foreground magenta }
+ { "" f.exec "r_setColor $ruler cyan black"
+ bitmap solid foreground cyan }
+ { "" f.exec "r_setColor $ruler yellow black"
+ bitmap solid foreground yellow }
+} ; createMenu rulerColor rulerMenu $rulerColorDescription
+
+
+proc makeRuler {parent x y} \
+{
+ global rulerTranslations ruleno rulerWCS rulerXWCS rulerYWCS
+ global rulerPts rulerX rulerY rulerList
+ global isSticky rulerMenuDescription rulerUnitsDescription
+ global coord coordLab
+
+
+ incr ruleno ; set ruler ruler$ruleno
+
+ # Substitute so the marker translation will delete the marker
+ # by it's number rather than the default parent widget name.
+ regsub -all NAME $rulerTranslations $ruleno translations
+
+ # Create the polygon for the marker.
+ send $parent createMarker $ruler \
+ type polygon\
+ createMode noninteractive\
+ translations $translations\
+ lineColor yellow\
+ fill False\
+ highlightWidth 1\
+ highlightColor yellow\
+ knotSize 0\
+ activated True\
+ visible False\
+ sensitive True\
+ x $x\
+ y $y
+
+ # Define a callback so we can identify the ruler.
+ send $ruler addCallback selectRuler focusIn focusOut
+
+ # Create the text markers for the labels.
+ send $parent set markerTextFont 6x9
+ makeLabelMarker $parent rulerXlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerYlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerHlab$ruleno 8ch 1ch
+ send $parent set markerTextFont 6x13
+
+ set rulerX $x ;# save the reference point
+ set rulerY $y
+
+ set ref [ list $x $y ] ;# initialize the polygon
+ set rx [ list [expr "$x +1"] $y ]
+ set ry [ list $x [expr "$y +1"] ]
+ set rulerPts [list $ref $rx $ry ]
+
+ send $ruler setVertices $rulerPts ;# set attributes
+ send $ruler set visible True"
+ send $ruler setAttribute autoRedraw True
+
+ # See whether we have a WCS to use.
+ set rulerWCS 0
+ set rulerXWCS 0
+ set rulerYWCS 0
+ for {set num 1} {$num <= 4 && $rulerWCS == 0} {incr num} {
+ if { [info exists coordLab(wcs$num)] } {
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+ if {$xl==" ra" || $xl=="elon" || $xl=="glon" || $xl=="slon"} {
+ set rulerWCS $num
+ set rulerXWCS [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set rulerYWCS [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ }
+ }
+ }
+
+ # Edit the menus.
+ set isSticky "Sticky"
+ editMenu rulerMenu imagewin $rulerMenuDescription
+ editMenu rulerUnits imagewin $rulerUnitsDescription
+
+
+ lappend rulerList $ruleno
+}
+
+proc wcs2log { val label fmt} \
+{
+ set newval $val
+ if {$fmt == "sexigesimal" || $fmt == "default"} {
+ scan $val "%d:%d:%f" h m s
+ set newval [expr "double($h) + double($m) / 60.0 + double($s) / 3600.0"]
+ if {$label == " ra"} {
+ set newval [expr "double($newval * 15.0)"]
+ }
+ }
+ return [expr "double($newval)" ]
+}
+
+
+proc resizeRuler {x y redraw} \
+{
+ global rulerPts rulerX rulerY ruleno coord coordLab
+ global rulerWCS rulerXWCS rulerYWCS rulerFmt
+ global rulerXWCS2 rulerYWCS2
+
+
+ # Track the mouse.
+ set ref [ list $rulerX $rulerY ]
+ set rx [ list $x $rulerY ]
+ set ry [ list $x $y ]
+ set rulerPts [list $ref $rx $ry ]
+
+ # Compute the distances.
+ if {$rulerWCS > 0} {
+ set num $rulerWCS
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+
+ # Save the cursor coords in WCS so we can convert labels.
+ if {$redraw} {
+ set nx $rulerXWCS2
+ set ny $rulerYWCS2
+ } else {
+ set nx [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set ny [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ set rulerXWCS2 $nx
+ set rulerYWCS2 $ny
+ }
+ }
+
+ if {$rulerFmt == "pixel"} {
+ set xdist [ expr "abs($x - $rulerX)" ]
+ set ydist [ expr "abs($y - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ } else {
+ set xdist [ expr "abs($nx - $rulerXWCS)" ]
+ set ydist [ expr "abs($ny - $rulerYWCS)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ }
+
+ # Redraw the polygon.
+ send ruler$ruleno setVertices $rulerPts
+
+ # Label the distances.
+ setXRulerLabel $x $y $xdist
+ setYRulerLabel $x $y $ydist
+ setHRulerLabel $x $y $hdist
+}
+
+# Create a label marker for the ruler.
+proc makeLabelMarker { parent name width height } \
+{
+ send $parent createMarker $name \
+ type text \
+ createMode noninteractive \
+ width $width \
+ height $height \
+ lineWidth 0 \
+ imageText true \
+ textBgColor yellow \
+ textColor black \
+ activated true \
+ visible false
+}
+
+proc setXRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpXscale rulerFmt
+
+ send rulerXlab$ruleno set visible False
+
+ if {[expr "abs($cx - $rulerX)"] > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerXlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY - 14"]
+ } else {
+ set yp [expr "$rulerY + 2"]
+ }
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - 10"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - 10"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerXlab$ruleno "setAttributes x $xp y $yp"
+ send rulerXlab$ruleno "set text \{$text\}; redraw erase"
+
+ send rulerXlab$ruleno set visible True
+ }
+}
+
+proc setYRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale rulerFmt
+
+ send rulerYlab$ruleno set visible False
+
+ if {[expr "abs($cy - $rulerY)"] > 20} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpYscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerYlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$cx + 2"]
+ } else {
+ set xp [expr "$cx - $len * 6 - 5"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerYlab$ruleno "setAttributes x $xp y $yp"
+ send rulerYlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerYlab$ruleno set visible True
+ }
+}
+
+proc setHRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale cpXscale rulerFmt
+
+ send rulerHlab$ruleno set visible False
+
+ set xdist [ expr "abs($cx - $rulerX)" ]
+ set ydist [ expr "abs($cy - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+
+ if {$hdist > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerHlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - $len * 6"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - $len * 3"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerHlab$ruleno "setAttributes x $xp y $yp"
+ send rulerHlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerHlab$ruleno set visible True
+ } else {
+ send rulerHlab$ruleno set visible False
+ }
+}
+
+
+# Callback executed when a marker gets or loses the focus.
+proc selectRuler {active_ruler event event_data} \
+{
+ global ruler
+ switch $event {
+ focusIn { set ruler $active_ruler }
+ focusOut { }
+ }
+}
+
+# Reset the ruler format type.
+proc setUnits { ruler units } \
+{
+ global rulerFmt rulerX rulerY
+
+ send $ruler getVertices pts
+ set rulerX [lindex [lindex [lindex $pts 0] 0] 0]
+ set rulerY [lindex [lindex [lindex $pts 0] 0] 1]
+ set cx [lindex [lindex [lindex $pts 0] 1] 0] ; incr cx -1
+ set cy [lindex [lindex [lindex $pts 0] 2] 1] ; incr cy -1
+
+ set rulerFmt $units
+ resizeRuler $cx $cy 1
+}
+
+# Menu option toggle callbacks.
+proc toggleSticky { ruler } \
+{
+ global isSticky rulerSticky rulerMenuDescription
+
+ set index [ lsearch $rulerSticky $ruler]
+ if { $index >= 0 } {
+ # Remove it from the list.
+ set rulerSticky [lreplace $rulerSticky $index $index]
+ set isSticky "Sticky"
+ } else {
+ # Add it to the list.
+ lappend rulerSticky $ruler
+ set isSticky "UnSticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+proc setRulerMenu args \
+{
+ global ruler isSticky rulerSticky rulerMenuDescription
+
+ if { [lsearch $rulerSticky $ruler] >= 0 } {
+ set isSticky "UnSticky"
+ } else {
+ set isSticky "Sticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+
+# Draw the ruler to the frame buffer as a graphic.
+proc writeRuler { ruler } \
+{
+}
+
+# Change the color of the ruler.
+proc r_setColor {ruler bgcolor fgcolor} {
+
+ # Recolor the polygon.
+ send $ruler \
+ "markpos; set lineColor $bgcolor; set highlightColor $bgcolor; redraw"
+
+ # Recolor the labels.
+ scan $ruler "ruler%d" num
+ send rulerXlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerYlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerHlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+}
+
+
+# Delete the current ruler, called when we have a Btn1Up on the current ruler.
+proc deleteRuler {x y} { global ruleno ; deleteNamedRuler $ruleno $x $y }
+
+# Delete all rulers on the screen, usually called when the view changes.
+# We preserve the rulers marked as 'sticky'.
+proc deleteAllRulers args \
+{
+ global rulerList rulerSticky
+
+ foreach r $rulerList {
+ # Delete the ruler if it's not in the sticky list.
+ if { [lsearch $rulerSticky ruler$r] == -1 } {
+ deleteNamedRuler $r x y
+ }
+ }
+}
+
+# Delete a particular ruler, usually called from the translation table on
+# the marker itself.
+proc deleteNamedRuler {name x y} \
+{
+ global rulerList
+
+ catch {
+ send ruler$name destroy
+ send rulerXlab$name destroy
+ send rulerYlab$name destroy
+ send rulerHlab$name destroy
+ }
+
+ # Remove the ruler from the list.
+ set index [lsearch $rulerList $name]
+ set rulerList [lreplace $rulerList $index $index]
+}
+
+
+
+
+
+###############################################
+# Define procedure for the help panel
+###############################################
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+send helpInfo1 set label $version
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+proc Help args \
+{
+ global help_up
+ if {$help_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set help_up 0
+ }
+}
+
+proc helpPanel args \
+{
+ global help_up
+ if {$help_up} {
+ send help_panel unmap
+ set help_up 0
+ } else {
+ send help_panel map
+ set help_up 1
+ }
+}
+
+proc panelHelp args \
+{
+ Help
+} ; send panelHelp addCallback panelHelp
+
+proc helpQuit args \
+{
+ global help_up
+ send help_panel unmap
+ set help_up 0
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } \
+{
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} \
+{
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack setSensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward setSensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward setSensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} \
+{
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args \
+{
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ send helpBack setSensitive True
+ } else {
+ send helpBack setSensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args \
+{
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack setSensitive False }
+ if {$linkIndex >= 0} { send helpForward setSensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args \
+{
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward setSensitive False
+ send helpBack setSensitive False
+}; send helpHome addCallback hlpHome
+
+
+proc helpFind args \
+{
+ set phrase [send hfEntry get string]
+
+ if { $phrase != "" } {
+ if {[send helpText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send helpText gotoId $id
+ send helpText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hfEntry hfFind } { send $w addCallback helpFind }
+
+send hfClear addCallback { send hfEntry set string "" }
+
+
+################################################################################
+# Header Display Callbacks.
+################################################################################
+
+set hdrImage ""
+set hdrImageId ""
+set hdrKeywords "*"
+
+
+proc fitsHdrClose args \
+{
+ global hdr_up
+
+ send hdr_panel unmap
+ send imageHeader set on False
+ set hdr_up 0
+} ; send hdrClose addCallback fitsHdrClose
+
+proc ptFitsHeader {widget type state args} \
+{
+ global hdr_up
+
+ set hdr_up $state
+ if {$hdr_up == 1} {
+ send imageHeader set on True
+ send hdr_panel map
+ } else {
+ send imageHeader set on False
+ send hdr_panel unmap
+ }
+}; send imageHeader addCallback ptFitsHeader
+
+proc getHeader { name id } \
+{
+ global hdrImage hdrImageId hdrKeywords
+
+ set hdrImage $name
+ set hdrImageId $id
+ send hdrObjMenu set label $name
+ send hdrText setText ""
+ send hdrIGText set string ""
+ send hdrKGText set string ""
+
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+}
+
+proc hdrKeywFilter args \
+{
+ global hdrImageId hdrKeywords
+
+ set str [ send hFindEntry get string ]
+ if {$str != ""} {
+ set hdrKeywords $str
+ send hdrText setText ""
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+ }
+} ; send hdrFilter addCallback hdrKeywFilter
+
+
+# Set the image menu in the header panel.
+proc setHdrObjMenu { frame args } \
+{
+ global frameCache ism_enable
+
+ if {! $ism_enable} \
+ return
+
+ # Create the menu of images for the header panel.
+ set items { }
+ foreach i [list $frameCache($frame)] {
+ set l [lindex $i 0]
+ set lid [lindex $i 1]
+ regsub -all {[\[]} $l "\\\[" l2
+ catch {
+ lappend items [format "%s f.exec \{getHeader %s %d\}" $l $l2 $lid]
+ }
+ }
+ editMenu objMenu hdrObjMenu $items
+}
+
+
+# Search box for the header.
+proc hdrFind args \
+{
+ set phrase [send hFindEntry get string]
+
+ if { $phrase != "" } {
+ if {[send hdrText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send hdrText gotoId $id
+ send hdrText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }
+
+send hdrClear addCallback { send hFindEntry set string "" }
+
+
+################################################################################
+# Pixel Table Callbacks.
+################################################################################
+
+set psize 5
+set pixtab_up 0
+set hdr_up 0
+
+createMenu pixtabMenu pixtabSize {
+ { "3x3" f.exec { pixtabSetSize 3 } }
+ { "5x5" f.exec { pixtabSetSize 5 } }
+ { "7x7" f.exec { pixtabSetSize 7 } }
+ { "9x9" f.exec { pixtabSetSize 9 } }
+}
+
+
+proc updatePixelTable { cx cy wx wy args } \
+{
+ global psize pixtab_up ism_enable
+
+ if {! $pixtab_up} \
+ return
+ if {$ism_enable} \
+ return
+
+ set delta [expr int($psize / 2) ]
+ set x1 [expr ($wx - $delta) ]
+ set x2 [expr ($wx + $delta) ]
+ set y1 [expr ($wy - $delta) ]
+ set y2 [expr ($wy + $delta) ]
+ set c [ expr int($psize / 2) ]
+
+
+ # Update the table labels.
+ set x $x1 ; set xl {}
+ set y $y2 ; set yl {}
+ for {set i 0} {$i < $psize} {incr i} {
+ lappend xl [format " %10.1f " $x] ; set x [ expr ($x + 1.) ]
+ lappend yl [format " %10.1f " $y] ; set y [ expr ($y - 1.) ]
+ }
+ send ptColLabs setList $xl ; send ptColLabs highlight $c
+ send ptRowLabs setList $yl ; send ptRowLabs highlight $c
+
+ # Update the pixel table itself.
+ #set pix [ send client getPixels $cx $cy $psize True ]
+
+ set x0 [ expr int($cx - $psize / 2. + 0.5)]
+ set y0 [ expr int($cy - $psize / 2. + 0.5)]
+ set pix [ send client getPixels $x0 $y0 $psize $psize ]
+ send pixtab setList [ lrange $pix 4 end ]
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Update the pixtab stats.
+ set sum 0.0
+ set sum2 0.0
+ set npix [ expr ($psize * $psize) ]
+ set nend [ expr ($psize * $psize) + 4 ]
+ for {set i 4} {$i < $nend} {incr i} {
+ set val [lindex $pix $i]
+ catch {
+ set sum [ expr ($sum + $val) ]
+ set sum2 [ expr ($sum2 + $val * $val) ]
+ }
+ }
+
+ set mean [ expr ($sum / ($npix * 1.0)) ]
+ set var [ expr (($sum2 - $sum * $mean) / ($npix - 1)) ]
+ if {$var <= 0.0} {
+ set stdev 0.0
+ } else {
+ set stdev [ expr sqrt ($var) ]
+ }
+ send meanValue set label [ format "%10.2f" $mean ]
+ send sigValue set label [ format "%10.4f" $stdev ]
+}
+
+
+proc pixtabClose args \
+{
+ global pixtab_up
+
+ send pixel_panel unmap
+ send pixelTable set on False
+ set pixtab_up 0
+ catch { send wcspix set psize 0 }
+} ; send pixtabClose addCallback pixtabClose
+
+
+proc pixtabSetSize { size args } \
+{
+ global psize ism_enable
+
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Now reset the window size.
+ switch $size {
+ 3 { send pixel_panel "resize 265 175"
+ send pixtab "set width 180 ; set height 60"
+ }
+ 5 { send pixel_panel "resize 375 215"
+ send pixtab "set width 290 ; set height 105"
+ }
+ 7 { send pixel_panel "resize 495 265"
+ send pixtab "set width 410 ; set height 150"
+ }
+ 9 { send pixel_panel "resize 610 310"
+ send pixtab "set width 525 ; set height 195"
+ }
+ }
+
+ send pixtab set defaultColumns $size
+ send ptColLabs set defaultColumns $size
+ set psize $size
+
+ # Notify the ISM we've changed size.
+ if ($ism_enable) {
+ catch { send wcspix set psize $psize }
+ }
+
+ send imagewin getCursorPos xc yc
+ updatePixelTable $xc $yc $xc $yc
+
+} ; pixtabSetSize $psize
+
+
+proc ptPixelTable {widget type state args} \
+{
+ global pixtab_up psize
+
+ set pixtab_up $state
+ if {$pixtab_up == 1} {
+ send pixelTable set on True
+ send pixel_panel map
+ catch { send wcspix set psize $psize }
+ } else {
+ send pixelTable set on False
+ send pixel_panel unmap
+ catch { send wcspix set psize 0 }
+ }
+}; send pixelTable addCallback ptPixelTable
+
+
+################################################################################
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+################################################################################
+
+set W_object ""
+set W_ok_cmd ""
+set W_cancel_cmd ""
+
+proc Wexec {object msg args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ set W_object $object
+ set W_ok_cmd [lindex $args 0]
+ set W_cancel_cmd [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ switch $widget {
+ warnOk { if [llength $W_ok_cmd] { send $W_object $W_ok_cmd }
+ }
+ warnCancel { if [llength $W_cancel_cmd] { send $W_object $W_cancel_cmd }
+ }
+ }
+ send warning unmap
+}
+send warnOk addCallback Wbutton
+send warnCancel addCallback Wbutton
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} \
+{
+ Wexec client [lindex $new 0] [lindex $new 1]
+}; send alert addCallback setAlert
+
+
+
+################################################
+# Define some TCL debug procedures.
+################################################
+
+set tcl_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { tclPanel }
+proc tclOpen args \
+{
+ global tcl_up
+ send tcl_panel map
+ set tcl_up 1
+}
+
+proc tclPanel args \
+{
+ global tcl_up
+ if {$tcl_up} {
+ send tcl_panel unmap
+ set tcl_up 0
+ } else {
+ send tcl_panel map
+ set tcl_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclDismiss addCallback tclClose
+
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+#set Compass(0) { 0.0 1 1 0 X Y }
+set Compass(0) { 0.0 0.0 1.0 -1.0 0.0 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] ; drawCompass }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2] }
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+
+ #set xflip [lindex $argv 2]
+ #set yflip [lindex $argv 3]
+ #set transpose [lindex $argv 4]
+ #set xlab [lindex $argv 5]
+ #set ylab [lindex $argv 6]
+
+ set north_x [lindex $argv 2]
+ set north_y [lindex $argv 3]
+ set east_x [lindex $argv 4]
+ set east_y [lindex $argv 5]
+ set transpose [lindex $argv 6]
+ set xlab [lindex $argv 7]
+ set ylab [lindex $argv 8]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ #set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ set Compass($objid) [list $angle $north_x $north_y $east_x $east_y \
+ $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
diff --git a/vendor/x11iraf/ximtool/ximtool.c b/vendor/x11iraf/ximtool/ximtool.c
new file mode 100644
index 00000000..abb84d9e
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.c
@@ -0,0 +1,640 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <errno.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <X11/Xmu/Error.h>
+#include <Obm.h>
+
+#define XIMTOOL_MAIN
+#include "ximtool.h"
+
+/* The X11IRAF version. */
+char *ximtool_version[] = {
+# include "../version.h"
+ NULL
+};
+
+
+/*
+ * XIMTOOL -- X11 based image display server and standalone image display
+ * client. This program is based on the IRAF prototype widget server (object
+ * manager library or OBM) and the gterm-image widget.
+ */
+
+/* Compatibility hacks. */
+#ifdef AUX
+void *memmove(a,b,n) void *a; const void *b; size_t n; { bcopy(b,a,n); }
+#else
+#if defined(sun) && !defined(SVR4)
+void *memmove(a,b,n) void *a; void *b; size_t n; { bcopy(b,a,n); }
+#endif
+#endif
+
+/* Data. */
+XtAppContext app_context;
+static char server[] = "server";
+
+/* The builtin default GUI. */
+char *defgui_text[] = {
+# include "ximtool.gui.h"
+ NULL
+};
+
+
+#ifdef AUX
+#define SIGFUNC sigfunc_t
+#else
+typedef void (*SIGFUNC)();
+#endif
+
+void xim_onsig();
+
+
+/* MAIN -- XImtool main program. This is the only ximtool routine containing
+ * window system specific code.
+ */
+main (argc, argv)
+int argc;
+char *argv[];
+{
+ register XimDataPtr xim = &ximtool_data;
+ register int i;
+ register IsmModule ism;
+
+ Screen *screen;
+ Visual *visual;
+ Widget toplevel;
+ XtPointer obm;
+ char **sv_argv, *init_file = NULL, *str;
+ int sv_argc, ncolors, base;
+ int depth, tile = 0;
+
+ extern IsmModule ismNameToPtr();
+ int xerror(), xioerror();
+
+
+ /* Process the command line arguments. Scan the arglist first to see
+ * if we're requesting help or a printout of the default GUI, if so
+ * print these out and exit.
+ */
+ if (argc > 1) {
+ if (strcmp (argv[1], "-help") == 0) {
+ Usage ();
+ exit (1);
+
+ } else if (strcmp (argv[1], "-version") == 0) {
+ printf ("Version: %s\n", ximtool_version[0]);
+ exit (1);
+
+ } else if (strcmp (argv[1], "-defgui") == 0) {
+ register int i;
+ for (i=0; defgui_text[i]; i++)
+ printf ("%s\n", defgui_text[i]);
+ exit (0);
+ }
+ }
+
+
+ /* Loop over the command line options and preprocess the ones that
+ * are widget/GUI resources we want to make available more easily.
+ * To do this we'll tweak the argument list so it appears to be a
+ * "-xrm" resource setting, this means the X initialization code
+ * below will do all the real work.
+ */
+ for (i=1; i < argc; i++) {
+
+ if (strcmp (argv[i], "-cmapName") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*cmapName:%s\0", str);
+
+ } else if (strcmp (argv[i], "-maxColors") == 0) {
+ ncolors = atoi (argv[++i]);
+ ncolors = max (32, min (201, ncolors));
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*maxColors:%d\0", ncolors);
+
+ } else if (strcmp (argv[i], "-basePixel") == 0) {
+ base = atoi (argv[++i]);
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*basePixel:%d", base);
+
+ } else if (strcmp (argv[i], "-cmapInitialize") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*cmapInitialize:%s", str);
+
+ } else if (strcmp (argv[i], "-displayPanner") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayPanner:%s", str);
+
+ } else if (strcmp (argv[i], "-displayMagnifier") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayMagnifier:%s", str);
+
+ } else if (strcmp (argv[i], "-displayCoords") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*displayCoords:%s", str);
+
+ } else if (strcmp (argv[i], "-printConfig") == 0) {
+ str = argv[++i];
+ strcpy (argv[i-1], "-xrm\0");
+ argv[i] = (char *) malloc (256);
+ sprintf (argv[i], "XImtool*printConfig:%s", str);
+ }
+ }
+
+ /* Get local copy of argc and argv. */
+ if ((sv_argc = argc) > 0) {
+ sv_argv = (char **) XtMalloc (argc * sizeof(char *));
+ memmove (sv_argv, argv, argc * sizeof(char *));
+ } else
+ sv_argv = argv;
+
+ /* Initialize applications context. We don't use the top level
+ * shell created here, but we need to deal with it in order to
+ * get the application resources. The object manager opens its own
+ * connection to the display server and manages a separate window
+ * hierarchy with its own top level shell.
+ */
+ xim->toplevel = toplevel = XtAppInitialize (&app_context, "XImtool",
+ (XrmOptionDescList) NULL, 0, &sv_argc, sv_argv,
+ (String *) NULL, (ArgList) NULL, 0);
+
+ /* Free saved arglist. */
+ free ((char *)sv_argv);
+
+ /* Get application resources. */
+ XtVaGetApplicationResources (xim->toplevel, xim,
+ resources, XtNumber(resources),
+ /* Add any resource overrides here */
+ NULL);
+
+ /* Check to see if we have the correct visual to proceed, if not
+ * shut down more gracefully and informatively than the BadMatch
+ * error from X that awaits us.
+ */
+
+#ifdef PSEUDOCOLOR_ONLY
+ screen = XtScreen (toplevel);
+ visual = DefaultVisualOfScreen(screen);
+ depth = DefaultDepthOfScreen(screen);
+ if (depth != 8 || visual->class != PseudoColor)
+ xim_badVisual (depth, visual->class);
+#endif
+
+
+
+ /* Initialize the object manager. */
+ xim->obm = obm = (XtPointer) ObmOpen (app_context, argc, argv);
+ ObmAddCallback (obm, OBMCB_setGterm|OBMCB_preserve, xim_reset,
+ (XtPointer)xim);
+
+
+ /* Loop over the command line options. The default xim structure
+ * should be defined at this point so the command options can be
+ * used to override them.
+ */
+ for (i=1; i < argc; i++) {
+
+ /* Anything without a '-' is a file name to load at startup.
+ * Only use the first name defined.
+ */
+ if (argv[i][0] != '-') { /* File name */
+ if (!init_file) {
+ init_file = argv[i];
+ if (access (init_file, F_OK) < 0) {
+ fprintf (stderr, "%s: File does not exist: '%s'\n",
+ argv[0], init_file);
+ exit (1);
+ } else if (access (init_file, R_OK) < 0) {
+ fprintf (stderr,
+ "%s: File doesn't have read permission: '%s'\n",
+ argv[0], init_file);
+ exit (1);
+ }
+ }
+
+ } else if (strcmp (argv[i], "-gui") == 0) {
+ xim->gui = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmap1") == 0) {
+ xim->userCMap1 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmap2") == 0) {
+ xim->userCMap2 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmapDir1") == 0) {
+ xim->userCMapDir1 = argv[++i];
+
+ } else if (strcmp (argv[i], "-cmapDir2") == 0) {
+ xim->userCMapDir2 = argv[++i];
+
+ } else if (strcmp (argv[i], "-imtoolrc") == 0) {
+ xim->imtoolrc = argv[++i];
+
+ } else if (strcmp (argv[i], "-memModel") == 0) {
+ xim->memModel = argv[++i];
+
+ } else if (strcmp (argv[i], "-config") == 0) {
+ xim->def_config = atoi (argv[++i]);
+
+ } else if (strcmp (argv[i], "-nframes") == 0) {
+ i++;
+ xim->def_nframes = min (MAX_FRAMES, atoi (argv[i]));
+
+ } else if (strcmp (argv[i], "-tile") == 0) {
+ tile = ++xim->tileFrames;
+
+ } else if (strcmp (argv[i], "-invert") == 0) {
+ xim->invert++;
+
+ } else if (strcmp (argv[i], "-fifo") == 0) {
+ if (strcmp ("none", argv[i+1]) == 0) {
+ xim->input_fifo = "none";
+ } else {
+ xim->input_fifo = malloc (strlen(argv[++i])+2);
+ xim->output_fifo = malloc (strlen(argv[i])+2);
+ sprintf (xim->input_fifo, "%si", argv[i]);
+ sprintf (xim->output_fifo, "%so", argv[i]);
+ }
+
+ } else if (strcmp (argv[i], "-port") == 0) {
+ xim->port = atoi (argv[++i]);
+
+ } else if (strcmp (argv[i], "-nports") == 0) {
+ xim->nports = atoi (argv[++i]);
+
+ } else if (strcmp (argv[i], "-unix") == 0) {
+ xim->unixaddr = argv[++i];
+
+ } else if (strcmp (argv[i], "-fifo_only") == 0) {
+ xim->unixaddr = "none";
+ xim->port = 0;
+
+ } else if (strcmp (argv[i], "-inet_only") == 0 ||
+ strcmp (argv[i], "-port_only") == 0 ) {
+ xim->input_fifo = "";
+ xim->unixaddr = "none";
+
+ } else if (strcmp (argv[i], "-unix_only") == 0) {
+ xim->input_fifo = "";
+ xim->port = 0;
+
+ } else if (strcmp (argv[i], "-ismdev") == 0) {
+ if (strcmp ("none", xim->ism_addr) )
+ xim->ism_addr = argv[++i];
+ else
+ i++;
+
+
+ /* Skip any standard X toolkit flags, they're handled above.
+ */
+ } else if (strcmp (argv[i], "-bg") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-fg") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-iconic") == 0) {
+ ;
+ } else if (strcmp (argv[i], "-display") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-geometry") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-title") == 0) {
+ i++;
+ } else if (strcmp (argv[i], "-xrm") == 0) {
+ i++;
+
+ } else {
+ fprintf (stderr, "Unrecognized flag '%s'\n", argv[i]);
+ Usage();
+ exit (1);
+ }
+ }
+
+
+ /* Initialize the ximtool/obm client code. */
+ xim_clientOpen (xim);
+
+ /* Load the Ximtool GUI. If the GUI name is "default" the builtin
+ * default GUI is used. This is stored as an array of text lines,
+ * which we must append newlines to and concatenate together to
+ * form the GUI message.
+ */
+ if (strcmp (xim->gui, "default") == 0 ||
+ (ObmDeliverMsgFromFile (obm, server, xim->gui) != 0)) {
+
+ register char *ip, *op;
+ char *message;
+ int i;
+
+ message = (char *) malloc (409600);
+ for (i=0, op=message; ip = defgui_text[i]; i++) {
+ while (*ip)
+ *op++ = *ip++;
+ *op++ = '\n';
+ }
+ *op++ = '\0';
+
+ ObmDeliverMsg (obm, server, message);
+ free ((char *)message);
+
+ }
+
+ /* Activate the GUI. */
+ ObmActivate (obm);
+
+ /* Initialize the frame buffers and graphics pipeline. */
+ xim->tileFrames = tile;
+ xim_initialize (xim, xim->def_config, xim->def_nframes, 1);
+
+ /* Listen for a client connection. */
+ xim_iisOpen (xim);
+ xim_ismOpen (xim);
+
+ /* Display a pretty logo. */
+ xim_displayLogo (xim);
+
+ /* Initialize the hardcopy option and printer configuration. */
+ xim_initPrinterOps (xim);
+
+ /* Open the file Load/Save structures. */
+ xim_initLoad (xim);
+ xim_initSave (xim);
+
+ /* Load a file at startup if it was defined. */
+ if ( init_file != NULL )
+ xim_loadFile (xim, init_file, 1);
+
+ /* Lookup the ISM command for the WCSPIX task and start it.
+ */
+ if ((ism = ismNameToPtr ("wcspix"))) {
+ system (ism->command);
+ ism_message (ism, "wcspix", "initialize");
+ }
+
+ XSetErrorHandler(xerror);
+ XSetIOErrorHandler(xioerror);
+
+
+/* signal (SIGINT, (SIGFUNC)xim_onsig);*/
+
+ /* EXECUTE */
+ XtAppMainLoop (app_context);
+
+ xim_shutdown (xim);
+}
+
+
+/* XIM_SHUTDOWN -- Terminate ximtool.
+ */
+xim_shutdown (xim)
+register XimDataPtr xim;
+{
+ eps_close (xim->psim);
+ xim_loadClose (xim);
+ xim_saveClose (xim);
+ xim_clientClose (xim);
+ xim_iisClose (xim);
+ xim_ismClose (xim);
+ xim_close (xim);
+ ObmClose (xim->obm);
+ exit (0);
+}
+
+
+/* XIM_ADDINPUT -- Register a procedure to be called when there is input
+ * to be processed on the given input source. The ximtool code doesn't
+ * talk to X directly so we need to provide this interface routine.
+ */
+XtPointer
+xim_addInput (xim, input, proc, client_data)
+register XimDataPtr xim;
+int input;
+void (*proc)();
+XtPointer client_data;
+{
+ return ((XtPointer) XtAppAddInput (app_context, input,
+ (XtPointer)XtInputReadMask, *proc, client_data));
+}
+
+
+/* XIM_REMOVEINPUT -- Remove a callback previously posted with xim_addInput.
+ */
+void
+xim_removeInput (xim, id)
+register XimDataPtr xim;
+XtPointer id;
+{
+ XtRemoveInput ((XtInputId)id);
+}
+
+
+/* USAGE -- Print a list of command-line options.
+ */
+Usage ()
+{
+ fprintf (stderr, "Usage:\n\n");
+ printoption (" ximtool");
+ printoption ("[-basePixel <num>]"); /* base cmap pixel */
+ printoption ("[-cmap1 <file>]"); /* User cmap 1 */
+ printoption ("[-cmap2 <file>]"); /* User cmap 2 */
+ printoption ("[-cmapDir1 <dir>]"); /* User cmapDir 1 */
+ printoption ("[-cmapDir2 <dir>]"); /* User cmapDir 2 */
+ printoption ("[-cmapInitialize <bool>]"); /* initialize colormap */
+ printoption ("[-cmapName <name>]"); /* colormap name */
+ printoption ("[-config <num>]"); /* initial config */
+ printoption ("[-defgui]"); /* Print default GUI */
+ printoption ("[-displayPanner <bool>]"); /* display panner box */
+ printoption ("[-displayMagnifier <bool>]"); /* display magnifier box */
+ printoption ("[-displayCoords <bool>]"); /* display wcs coords box */
+ printoption ("[-fifo <pipe>]"); /* fifo pipe */
+ printoption ("[-fifo_only]"); /* use fifo only */
+ printoption ("[-gui <file>]"); /* GUI file */
+ printoption ("[-help]"); /* Print help */
+ printoption ("[-imtoolrc <file>]"); /* fbconfig file */
+ printoption ("[-inet_only | -port_only]"); /* use inet only */
+ printoption ("[-invert]"); /* invert colormap */
+ printoption ("[-ismdev <dev>]"); /* ISM device template */
+ printoption ("[-maxColors <num>]"); /* # of colors */
+ printoption ("[-memModel <type>]"); /* memory model */
+ printoption ("[-nframes <num>]"); /* # of frames */
+ printoption ("[-port <num>]"); /* inet port */
+ printoption ("[-printConfig <name>]"); /* printer config file */
+ printoption ("[-tile]"); /* tile frames */
+ printoption ("[-unix <name>]"); /* unix socket */
+ printoption ("[-unix_only]"); /* use unix only */
+ printoption ("[<file>]"); /* file to load */
+ fprintf (stderr,"\n");
+}
+
+
+/* PRINTOPTION -- Pretty-print an option string.
+ */
+static int cpos = 0;
+printoption(st)
+char *st;
+{
+ if (strlen(st) + cpos > 78) {
+ fprintf (stderr,"\n\t");
+ cpos = 8;
+ }
+ fprintf (stderr,"%s ",st);
+ cpos = cpos + strlen(st) + 1;
+}
+
+
+/* xim_badVisual -- A bad X visual has been detected for the screen which
+ * will cause us to crash with a BadMatch error. Instead, abort with a
+ * more informative message so the user can correct the visual.
+ */
+xim_badVisual (depth, class)
+int depth;
+int class;
+{
+ fprintf (stderr,
+ "\nERROR: Detected incorrect X visual: depth=%d class=", depth);
+ switch (class) {
+ case StaticGray: fprintf (stderr, "StaticGray\n") ; break;
+ case GrayScale: fprintf (stderr, "GrayScale\n") ; break;
+ case StaticColor: fprintf (stderr, "StaticColor\n") ; break;
+ case PseudoColor: fprintf (stderr, "PseudoColor\n") ; break;
+ case TrueColor: fprintf (stderr, "TrueColor\n") ; break;
+ case DirectColor: fprintf (stderr, "DirectColor\n") ; break;
+ default: fprintf (stderr, "DirectColor\n") ; break;
+ }
+
+ fprintf (stderr, "\n");
+ fprintf (stderr,
+ "XImtool currently requires an 8-bit PseudoColor visual in order\n");
+ fprintf (stderr,
+ "to operate properly. Unfortunately the only workaround for this\n");
+ fprintf (stderr,
+ "at present is to start an 8-bit server using commands such as\n\n");
+ fprintf (stderr,
+ " %% startx -- -bpp 8\t\t\t\t\t # XFree86 V3.x\n");
+ fprintf (stderr,
+ " %% startx -- -depth 8\t\t\t\t # XFree86 V4.x\n");
+ fprintf (stderr,
+ " %% Xsun :0 -dev /dev/fb defclass PseudoColor defdepth 8 # Sun\n");
+ fprintf (stderr,
+ " %% Xdec -vclass0 PseudoColor\t\t\t\t # Digital Unix\n");
+ fprintf (stderr,
+ "\nThe actual commands used will vary depending on the platform,\n");
+ fprintf (stderr,
+ "window manager/desktop used, and in some cases video hardware.\n");
+ fprintf (stderr,
+ "See the Xserver(1) and xinit(1) man page for details. Users should\n");
+ fprintf (stderr,
+ "also contact IRAF site support (iraf@noao.edu) with any questions\n");
+ fprintf (stderr,
+ "or problems.\n\n");
+
+ exit (1);
+}
+
+
+
+#define ERROR_XERROR 83 /* xerror: XError event */
+#define ERROR_XIOERROR 84 /* xioerror: X I/O error */
+
+/* XERROR -- Handle an XLIB server error. A standard X error message is
+ * printed and then the program either dumps core, exits, or ignores the error,
+ * depending upon the value of the environment variable XGXERROR, if defined.
+*/
+/*ARGSUSED*/
+xerror (display, event)
+Display *display;
+register XErrorEvent *event;
+{
+ static char *envvar = "XGXERROR";
+ static int nerrs = 0;
+ extern char *getenv();
+ char fname[128];
+ char *action;
+ int pid;
+
+ fprintf (stderr, "ximtool: warning, error event received:\n");
+ (void) XmuPrintDefaultErrorMessage (display, event, stderr);
+ if (nerrs++ > 50)
+ exit (ERROR_XERROR);
+
+ if (action = getenv (envvar)) {
+ if (strcmp (action, "dumpcore") == 0) {
+ if ((pid = fork()) >= 0) {
+ if (pid) {
+ fprintf (stderr, "dumping core... ");
+ fflush (stderr);
+ sprintf (fname, "core.%d", pid);
+ wait(NULL); rename ("core", fname);
+ fprintf (stderr, "core file core.%d written\n", pid);
+ fflush (stderr);
+ } else
+ kill (getpid(), 6);
+ } else
+ fprintf (stderr, "fork failed, no core dump produced\n");
+ } else if (strcmp (action, "exit") == 0) {
+ fprintf (stderr, "program terminated\n");
+ exit (ERROR_XERROR);
+ } else
+ fprintf (stderr, "%s: unknown action %s\n", envvar, action);
+ }
+ fflush (stderr);
+
+ return (0);
+}
+
+
+/*ARGSUSED*/
+xioerror(dpy)
+Display *dpy;
+{
+ char *SysErrorMsg();
+
+ (void) fprintf (stderr,
+ "ximtool: fatal IO error %d (%s) or KillClient on X server \"%s\"\r\n",
+ errno, SysErrorMsg (errno),
+ DisplayString (dpy));
+
+ exit (ERROR_XIOERROR);
+}
+
+void xt_error(message)
+ String message;
+{
+ (void) fprintf (stderr, "ximtool Xt error: %s\n", message);
+ exit (1);
+}
+
+
+char *SysErrorMsg (n)
+ int n;
+{
+ return((n >= 0) ? (char *)strerror(n) : "unknown error");
+}
+
+
+/* XIM_ONSIG -- Catch interrupt and shutdown gracefully.
+ */
+void
+xim_onsig (sig, code, scp)
+int sig; /* signal which was trapped */
+int *code; /* not used */
+int *scp; /* not used */
+{
+ xim_shutdown (&ximtool_data);
+}
+
diff --git a/vendor/x11iraf/ximtool/ximtool.gui b/vendor/x11iraf/ximtool/ximtool.gui
new file mode 100644
index 00000000..d9780811
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.gui
@@ -0,0 +1,11567 @@
+#!/usr/local/bin/obmsh
+#
+# XIMTOOL-ALT.GUI -- Default GUI for the Ximtool-alt image display server.
+#
+# Version 2.0 -- BETA VERSION
+
+set Version "NOAO/IRAF XImtool Version 2.0BETA"
+
+reset-server
+
+set Objects(ximtool) { \
+ toplevel Layout display\
+\
+ display Group menuGroup\
+ menuGroup Layout menubar\
+ menubar MenuButton fileButton\
+ menubar MenuButton viewButton\
+ menubar MenuButton optionsButton\
+ menubar Label imageTitle\
+ menubar Toggle mXflipButton\
+ menubar Toggle mYflipButton\
+ menubar Command mPrevButton\
+ menubar MenuButton mFrameButton\
+ menubar Command mNextButton\
+ menubar Toggle toolButton\
+ menubar Toggle panelButton\
+\
+ display Layout toolbar\
+ toolbar Command tbZoomIn\
+ toolbar Command tbZoom0\
+ toolbar Command tbZoomOut\
+ toolbar Command tbInvert\
+ toolbar Command tbNormalize\
+ toolbar Command tbMatchLUT\
+ toolbar Toggle tbAutoReg\
+ toolbar Command tbRegister\
+ toolbar Command tbCenter\
+ toolbar Command tbBlinkDec\
+ toolbar Toggle tbBlink\
+ toolbar Command tbBlinkInc\
+ toolbar Toggle xflipButton\
+ toolbar Toggle yflipButton\
+ toolbar Toggle tbTile\
+ toolbar Toggle tbCompass\
+ toolbar Command prevButton\
+ toolbar MenuButton frameButton\
+ toolbar Command nextButton\
+\
+ display Frame imageFrame\
+ imageFrame Gterm imagewin\
+ display Frame cbarFrame\
+ cbarFrame Gterm colorbar\
+ display Toggle hcut\
+ display Toggle vcut\
+ display Frame hcutFrame\
+ hcutFrame Gterm hcutPlot\
+ display Frame vcutFrame\
+ vcutFrame Gterm vcutPlot\
+ display Slider2d focusSlider\
+\
+ display Group plotOpts\
+ plotOpts Layout poptsLayout\
+ poptsLayout TextToggle plotSpeed\
+ poptsLayout TextToggle plotAccurate\
+ poptsLayout TextToggle plotImgPix\
+ poptsLayout Frame optLine\
+ poptsLayout TextToggle curJump\
+ poptsLayout TextToggle curSmooth\
+ poptsLayout TextToggle curTrack\
+\
+ display Layout panelbar\
+ panelbar Toggle pbDisplayP\
+ panelbar Toggle pbLoadP\
+ panelbar Toggle pbSaveP\
+ panelbar Toggle pbPrintP\
+ panelbar Toggle pbInfoP\
+ panelbar Toggle pbTileP\
+ panelbar Toggle pbCoordP\
+ panelbar Toggle pbPanM\
+ panelbar Toggle pbMagM\
+ panelbar Toggle pbWcsM\
+ panelbar Toggle pbIsm\
+ panelbar Toggle helpButton\
+ panelbar Command pbQuit\
+}
+
+
+set Objects(panelShell) { \
+ toplevel TopLevelShell panelShell\
+ panelShell Layout panel\
+\
+ panel Frame panelMenuFrame\
+ panelMenuFrame Layout panelMenuBar\
+ panelMenuBar Command panelHelp\
+ panelMenuBar Command panelClose\
+\
+ panel Frame tabFrame\
+ tabFrame Tabs panelTabs\
+ panelTabs Frame display_panel\
+ panelTabs Frame print_panel\
+ panelTabs Frame load_panel\
+ panelTabs Frame save_panel\
+ panelTabs Frame info_panel\
+ panelTabs Frame tile_panel\
+ panelTabs Frame wcs_panel\
+\
+\
+ display_panel Layout controlPanel\
+ controlPanel Group viewBox\
+ controlPanel Group enhancementBox\
+ controlPanel Group blinkBox\
+ controlPanel Group optionsBox\
+ controlPanel Frame controlBox\
+\
+ viewBox Layout view\
+ view Group frameSelect\
+ frameSelect Layout frameBox\
+ frameBox Box frlistBox\
+ frlistBox Viewport framePort\
+ framePort Layout frameList\
+ frameList TextToggle frame1\
+ frameList TextToggle frame2\
+ frameList TextToggle frame3\
+ frameList TextToggle frame4\
+ frameList TextToggle frame5\
+ frameList TextToggle frame6\
+ frameList TextToggle frame7\
+ frameList TextToggle frame8\
+ frameList TextToggle frame9\
+ frameList TextToggle frame10\
+ frameList TextToggle frame11\
+ frameList TextToggle frame12\
+ frameList TextToggle frame13\
+ frameList TextToggle frame14\
+ frameList TextToggle frame15\
+ frameList TextToggle frame16\
+ frameBox Command prevFrame\
+ frameBox Command nextFrame\
+ view Frame frameDataBox\
+ frameDataBox TextBox frameData\
+ view Group zoomBox\
+ zoomBox Layout zoom\
+ zoom TextButton toggleZoom\
+ zoom TextButton zoomIn\
+ zoom Command x1\
+ zoom Command z2\
+ zoom Command z3\
+ zoom Command z4\
+ zoom Command z5\
+ zoom Command z8\
+ zoom TextButton zoomOut\
+ zoom TextButton centerFrame\
+ zoom Command d2\
+ zoom Command d3\
+ zoom Command d4\
+ zoom Command d5\
+ zoom Command d8\
+ view Layout viewButtons\
+ viewButtons Command aspect\
+ viewButtons Command flipX\
+ viewButtons Command flipY\
+ viewButtons Command flipXY\
+ viewButtons Command clearFrame\
+ viewButtons Command fitFrame\
+\
+ enhancementBox Layout enhance\
+ enhance Frame colorlistFrame\
+ colorlistFrame Viewport colorlistView\
+ colorlistView MultiList colorlist\
+ enhance Frame colordataFrame\
+ colordataFrame TextBox colordata\
+ enhance Label contrastLabel\
+ enhance Slider2d contrastSlider\
+ enhance Label brightnessLabel\
+ enhance Slider2d brightnessSlider\
+ enhance Command invertButton\
+ enhance Command optimizeButton\
+\
+ blinkBox Layout blink\
+ blink Label blinkFramesLabel\
+ blink Command blinkFrame1\
+ blink Command blinkFrame2\
+ blink Command blinkFrame3\
+ blink Command blinkFrame4\
+ blink Toggle blinkPanel\
+ blink Command blinkReset\
+ blink Label blinkRateLabel\
+ blink Frame BRframe\
+ BRframe Layout BRlayout\
+ BRlayout Arrow BRdecrease\
+ BRlayout TextBox BRtext\
+ BRlayout Arrow BRincrease\
+ blink Command registerButton\
+ blink Command matchButton\
+ blink TextToggle blinkButton\
+ blink TextToggle autoregButton\
+\
+ optionsBox TextToggle pannerButton\
+ optionsBox TextToggle magnifierButton\
+ optionsBox TextToggle coordsBoxButton\
+ optionsBox TextToggle autoscaleButton\
+ optionsBox TextToggle antialiasButton\
+ optionsBox TextToggle tileFramesButton\
+ optionsBox TextToggle warningsButton\
+ optionsBox TextToggle peakupButton\
+\
+ controlBox Layout control\
+ control Command initializeButton\
+ control Command normalizeButton\
+\
+\
+ print_panel Layout printLayout\
+\
+ printLayout Group printCmdGroup\
+ printLayout Group optGroup\
+ printLayout Group cmdGroup\
+\
+ printCmdGroup Layout printCmdLayout\
+ printCmdLayout Layout labelLayout\
+ labelLayout Label toLabel\
+ labelLayout Label printerLabel\
+ printCmdLayout Layout inputLayout\
+ inputLayout TextToggle toPrinter\
+ inputLayout TextToggle toFile\
+ inputLayout Frame printcmdFrame\
+ printcmdFrame AsciiText printcmd\
+\
+ optGroup Layout optLayout\
+ optLayout Group epsPageGroup\
+ optLayout Group optionsGroup\
+ optLayout Group printColorGroup\
+ optLayout Group printerGroup\
+ optLayout Group annOptsGroup\
+\
+ epsPageGroup Layout epsPage\
+ epsPage Label epsOrientLabel\
+ epsPage TextToggle epsPortButton\
+ epsPage TextToggle epsLandButton\
+ epsPage TextToggle epsSquareButton\
+ epsPage Label epsSizeLabel\
+ epsPage TextToggle epsLetterButton\
+ epsPage TextToggle epsLegalButton\
+ epsPage TextToggle epsA4Button\
+ epsPage TextToggle epsB5Button\
+ epsPage Label epsScaleLabel\
+ epsPage Frame ScaleFrame\
+ ScaleFrame Layout ScaleLayout\
+ ScaleLayout Arrow SCdecrease\
+ ScaleLayout TextBox SCtext\
+ ScaleLayout Arrow SCincrease\
+\
+ optionsGroup Layout options\
+ options TextToggle epsscaleButton\
+ options TextToggle autorotateButton\
+ options TextToggle aspectButton\
+ options TextToggle compressButton\
+\
+ annOptsGroup Layout annOpts\
+ annOpts TextToggle annotateButton\
+ annOpts TextToggle colorbarButton\
+ annOpts TextToggle titleButton\
+ annOpts TextToggle bordersButton\
+ annOpts Label titleLabel\
+ annOpts Frame titleFrame\
+ titleFrame AsciiText titleString\
+\
+ printColorGroup Layout printColor\
+ printColor TextToggle prGrayButton\
+ printColor TextToggle prPseudoButton\
+ printColor TextToggle prRGBButton\
+\
+ printerGroup Layout printers\
+ printers Frame printlistFrame\
+ printlistFrame Viewport printlistView\
+ printlistView MultiList printlist\
+\
+ cmdGroup Layout cmdLayout\
+ cmdLayout Command okayPrint\
+ cmdLayout Label printStatus\
+\
+\
+ load_panel Layout filesLayout\
+ filesLayout Group imlistGroup\
+ imlistGroup Layout imlistLayout\
+ imlistLayout Command rootButton\
+ imlistLayout Command homeButton\
+ imlistLayout Command upButton\
+ imlistLayout Command rescanButton\
+ imlistLayout Label dirLabel\
+ imlistLayout Label fnameLabel\
+ imlistLayout Frame filnamFrame\
+ filnamFrame AsciiText fnameText\
+ imlistLayout Label imtemplateLabel\
+ imlistLayout Frame imtemplateFrame\
+ imtemplateFrame AsciiText imtemplateText\
+ imlistLayout Label imlistLabel\
+ imlistLayout Frame imlistFrame\
+ imlistFrame Viewport imlistView\
+ imlistView MultiList imageList\
+\
+ filesLayout Group imoptsGroup\
+ imoptsGroup Layout imoptsLayout\
+ imoptsLayout TextToggle grayscale\
+ imoptsLayout TextToggle autoload\
+ imoptsLayout TextToggle browseHdrs\
+ imoptsLayout TextToggle zscale\
+ imoptsLayout TextToggle zrange\
+ imoptsLayout Label z1Label\
+ imoptsLayout Frame z1Frame\
+ z1Frame AsciiText z1Value\
+ imoptsLayout Label z2Label\
+ imoptsLayout Frame z2Frame\
+ z2Frame AsciiText z2Value\
+ imoptsLayout Label nsampLabel\
+ imoptsLayout Frame nsampFrame\
+ nsampFrame AsciiText nsampValue\
+ imoptsLayout Label frameLabel\
+ imoptsLayout MenuButton frameFrame\
+\
+ filesLayout Group loadCmdGroup\
+ loadCmdGroup Layout loadCmdLayout\
+ loadCmdLayout Command filesLoadButton\
+ loadCmdLayout Label filesStatus\
+\
+\
+ save_panel Layout saveLayout\
+ saveLayout Group saveNameGroup\
+ saveNameGroup Layout saveNameLayout\
+ saveNameLayout Label saveLabel\
+ saveNameLayout Frame fnameFrame\
+ fnameFrame AsciiText saveFile\
+\
+ saveLayout Group saveOptGroup\
+ saveOptGroup Layout saveOptLayout\
+ saveOptLayout Group fmtGroup\
+ saveOptLayout Group saveColorGroup\
+ saveOptLayout Frame saveDataBox\
+ saveDataBox TextBox saveData\
+\
+ fmtGroup Layout formats\
+ formats TextToggle rasButton\
+ formats TextToggle gifButton\
+ formats TextToggle jpegButton\
+ formats TextToggle tiffButton\
+ formats TextToggle fitsButton\
+ formats TextToggle epsButton\
+ formats TextToggle x11Button\
+ formats TextToggle rawButton\
+\
+ saveColorGroup Layout saveColor\
+ saveColor TextToggle svGrayButton\
+ saveColor TextToggle svPseudoButton\
+ saveColor TextToggle svRGBButton\
+\
+ saveLayout Group saveCmdGroup\
+ saveCmdGroup Layout saveCmdLayout\
+ saveCmdLayout Command okaySave\
+ saveCmdLayout Label saveStatus\
+\
+\
+ info_panel Layout infoLayout\
+ infoLayout Group infoBox\
+ infoBox Layout infoBoxL\
+ infoBoxL Frame infoFrame\
+ infoFrame AsciiText infoText\
+ infoBoxL TextToggle infoOptFr\
+ infoBoxL TextToggle infoOptWCS\
+ infoBoxL TextToggle infoOptSvr\
+ infoBoxL TextToggle infoOptClients\
+ infoBoxL TextToggle infoOptIsm\
+ infoBoxL TextToggle infoOptFB\
+\
+\
+ wcs_panel Layout wcsLayout\
+ wcsLayout Group wcsGroup\
+ wcsGroup Layout wcsBox\
+\
+ wcsBox Frame wcsFrame\
+ wcsFrame Layout wcsText\
+ wcsText AsciiText wtName\
+ wcsText AsciiText wtTitle\
+ wcsText AsciiText wtFBCfg\
+ wcsText AsciiText wtIPixval\
+ wcsText AsciiText wtSPixval\
+ wcsText AsciiText wtBPixval\
+ wcsText AsciiText wtWcs1\
+ wcsText AsciiText wtWcs2\
+ wcsText AsciiText wtWcs3\
+ wcsText AsciiText wtWcs4\
+\
+ wcsBox TextToggle ismToggle\
+ wcsBox TextToggle pixelTable\
+ wcsBox TextToggle imageHeader\
+ wcsBox TextToggle compass\
+ wcsBox TextToggle wcsOptions\
+\
+\
+ wcsLayout Group wcsOptGroup\
+ wcsOptGroup Layout wcsOptLayout\
+\
+ wcsOptLayout Group wcsCoords\
+ wcsCoords Layout wcLayout\
+ wcLayout Label wcTitle\
+ wcLayout Frame wcLine\
+ wcLayout Label wlWcs1\
+ wcLayout Label wlWcs2\
+ wcLayout Label wlWcs3\
+ wcLayout Label wlWcs4\
+ wcLayout MenuButton sysWcs1\
+ wcLayout MenuButton sysWcs2\
+ wcLayout MenuButton sysWcs3\
+ wcLayout MenuButton sysWcs4\
+ wcLayout MenuButton fmtWcs1\
+ wcLayout MenuButton fmtWcs2\
+ wcLayout MenuButton fmtWcs3\
+ wcLayout MenuButton fmtWcs4\
+ wcLayout TextToggle wpWcs1\
+ wcLayout TextToggle wpWcs2\
+ wcLayout TextToggle wpWcs3\
+ wcLayout TextToggle wpWcs4\
+ wcLayout TextToggle wiWcs1\
+ wcLayout TextToggle wiWcs2\
+ wcLayout TextToggle wiWcs3\
+ wcLayout TextToggle wiWcs4\
+\
+ wcsOptLayout Group wcsOpts\
+ wcsOpts Layout woLayout\
+ woLayout TextToggle woptLabels\
+ woLayout TextToggle woptTitles\
+ woLayout TextToggle woptFBinfo\
+ woLayout TextToggle woptBPM\
+\
+ wcsOptLayout Group wcsIsmGroup\
+ wcsIsmGroup Layout wcsIsmLayout\
+ wcsIsmLayout Label wcsIsmLabel\
+ wcsIsmLayout Frame wcsIsmFrame\
+ wcsIsmFrame AsciiText wcsIsmCmd\
+ wcsIsmLayout Command wcsIsmInit\
+\
+\
+ tile_panel Frame tileOpts\
+ tileOpts Layout toptLayout\
+ toptLayout Group tFramesG\
+ toptLayout Group tileMode\
+ tileMode TextToggle tileDisabled\
+ tileMode TextToggle tileManual\
+ tileMode TextToggle tileBest\
+ tileMode TextToggle tileSquare\
+ tileMode TextToggle tileHorizontal\
+ tileMode TextToggle tileVertical\
+ tileMode TextToggle tileRow\
+ tileMode TextToggle tileCol\
+ toptLayout Group userOrientG\
+ toptLayout Group fillStyle\
+ fillStyle TextToggle byCols\
+ fillStyle TextToggle bottomUp\
+ toptLayout Group tileLabel\
+ tileLabel TextToggle labelImname\
+ tileLabel TextToggle labelTitles\
+ tileLabel TextToggle labelFrames\
+ toptLayout Frame geomFrame\
+ geomFrame Label tileGeometry\
+\
+ userOrientG Layout userOrientL\
+ userOrientL Label nrowLab\
+ userOrientL Frame nrFrame\
+ nrFrame Layout nrLayout\
+ nrLayout Arrow nrdecrease\
+ nrLayout Label nrtext\
+ nrLayout Arrow nrincrease\
+ userOrientL Label ncolLab\
+ userOrientL Frame ncFrame\
+ ncFrame Layout ncLayout\
+ ncLayout Arrow ncdecrease\
+ ncLayout Label nctext\
+ ncLayout Arrow ncincrease\
+\
+ tFramesG Layout tFrames\
+ tFrames Command tAll\
+ tFrames Command tNone\
+ tFrames Toggle tFrame1\
+ tFrames Toggle tFrame2\
+ tFrames Toggle tFrame3\
+ tFrames Toggle tFrame4\
+ tFrames Toggle tFrame5\
+ tFrames Toggle tFrame6\
+ tFrames Toggle tFrame7\
+ tFrames Toggle tFrame8\
+ tFrames Toggle tFrame9\
+ tFrames Toggle tFrame10\
+ tFrames Toggle tFrame11\
+ tFrames Toggle tFrame12\
+ tFrames Toggle tFrame13\
+ tFrames Toggle tFrame14\
+ tFrames Toggle tFrame15\
+ tFrames Toggle tFrame16\
+}
+
+
+set Objects(parameters) { \
+ toplevel Parameter ximtool\
+ ximtool Parameter alert\
+ ximtool Parameter initialize\
+ ximtool Parameter resize\
+ ximtool Parameter frame\
+ ximtool Parameter nframes\
+ ximtool Parameter frameSize\
+ ximtool Parameter frameRegion\
+ ximtool Parameter frameView\
+ ximtool Parameter frameTitle\
+ ximtool Parameter frameFit\
+ ximtool Parameter enhancement\
+ ximtool Parameter colortables\
+ ximtool Parameter cmfocus\
+ ximtool Parameter autoscale\
+ ximtool Parameter antialias\
+ ximtool Parameter tileFrames\
+ ximtool Parameter cursorMode\
+ ximtool Parameter xflip\
+ ximtool Parameter yflip\
+ ximtool Parameter printerList\
+ ximtool Parameter printOptions\
+ ximtool Parameter loadOptions\
+ ximtool Parameter saveOptions\
+ ximtool Parameter tileOptions\
+ ximtool Parameter filelist\
+ ximtool Parameter help\
+ ximtool Parameter info\
+ ximtool Parameter ism_msg\
+}
+
+
+set Objects(help_panel) { \
+ toplevel TopLevelShell help_panel\
+ help_panel Layout helpLayout\
+ helpLayout Group helpMenuGroup\
+ helpMenuGroup Layout helpMenubar\
+ helpLayout Layout helpInfoLayout\
+\
+ helpMenubar Command helpClose\
+\
+ helpLayout Command helpBack\
+ helpLayout Command helpForward\
+ helpLayout Command helpHome\
+ helpLayout Frame hfFrame\
+ hfFrame AsciiText hfEntry\
+ helpLayout Command hfFind\
+ helpLayout Command hfClear\
+ helpLayout Frame helpTextFrame\
+ helpTextFrame HTML helpText\
+\
+ helpInfoLayout Label helpIRAFLogo\
+ helpInfoLayout Label helpInfo1\
+ helpInfoLayout Label helpInfo2\
+ helpInfoLayout Label helpInfo3\
+ helpInfoLayout Label helpNOAOLogo\
+}
+
+
+set Objects(blink_panel) { \
+ toplevel TopLevelShell blink_panel\
+ blink_panel Layout bpLayout\
+\
+ bpLayout Frame brMenuFrame\
+ brMenuFrame Layout brMenuBar\
+ brMenuBar Command brClose\
+\
+ bpLayout Frame brFrame\
+ brFrame Layout brLayout\
+\
+ brLayout Group brFramesG\
+ brFramesG Layout brFrames\
+ brFrames MenuButton brFrame1\
+ brFrames MenuButton brFrame2\
+ brFrames MenuButton brFrame3\
+ brFrames MenuButton brFrame4\
+ brFrames MenuButton brFrame5\
+ brFrames MenuButton brFrame6\
+ brFrames MenuButton brFrame7\
+ brFrames MenuButton brFrame8\
+ brFrames MenuButton brFrame9\
+ brFrames MenuButton brFrame10\
+ brFrames MenuButton brFrame11\
+ brFrames MenuButton brFrame12\
+ brFrames MenuButton brFrame13\
+ brFrames MenuButton brFrame14\
+ brFrames MenuButton brFrame15\
+ brFrames MenuButton brFrame16\
+\
+ brLayout Group brCmdG\
+ brCmdG Layout brCmd\
+ brCmd Command brReset\
+ brCmd Label brRateLabel\
+ brCmd Frame brBRframe\
+ brBRframe Layout brBRlayout\
+ brBRlayout Arrow brBRdecrease\
+ brBRlayout TextBox brBRtext\
+ brBRlayout Arrow brBRincrease\
+ brCmd Command brRegButton\
+ brCmd Command brMatchButton\
+ brCmd TextToggle brBlinkButton\
+ brCmd TextToggle brAregButton\
+}
+
+
+set Objects(hdr_panel) { \
+ toplevel TopLevelShell hdr_panel\
+ hdr_panel Layout hdrLayout\
+\
+ hdrLayout Frame hdrMenuFrame\
+ hdrMenuFrame Layout hdrMenuBar\
+ hdrMenuBar Command hdrClose\
+\
+ hdrLayout Group hdrObjGroup\
+ hdrObjGroup Layout hdrObjLayout\
+ hdrObjLayout Label hdrObjLabel\
+ hdrObjLayout MenuButton hdrObjMenu\
+\
+ hdrLayout Frame hdrTabFrame\
+ hdrTabFrame Tabs hdrTabs\
+ hdrTabs Group hdrHdrGroup\
+ hdrTabs Group hdrWcsGroup\
+\
+ hdrHdrGroup Layout hdrHdrLayout\
+ hdrHdrLayout Frame hFindFrame\
+ hFindFrame AsciiText hFindEntry\
+ hdrHdrLayout Command hdrFilter\
+ hdrHdrLayout Command hdrFind\
+ hdrHdrLayout Command hdrClear\
+ hdrHdrLayout HTML hdrText\
+\
+ hdrWcsGroup Layout hdrWcsLayout\
+ hdrWcsLayout Group hdrInfoGroup\
+ hdrInfoGroup Frame hdrIGFrame\
+ hdrIGFrame AsciiText hdrIGText\
+ hdrWcsLayout Group hdrKeywGroup\
+ hdrKeywGroup Frame hdrKGFrame\
+ hdrKGFrame AsciiText hdrKGText\
+}
+
+
+set Objects(pixel_table) { \
+ toplevel TopLevelShell pixel_panel\
+\
+ pixel_panel Layout pixel_table\
+ pixel_table Frame pixtabMenuFrame\
+ pixtabMenuFrame Layout pixtabMenuBar\
+ pixtabMenuBar MenuButton pixtabSize\
+ pixtabMenuBar Command pixtabHelp\
+ pixtabMenuBar Command pixtabClose\
+\
+ pixel_table Frame pixtabFrame\
+ pixtabFrame Porthole ptPort\
+ ptPort Layout ptLayout\
+ ptLayout Frame ptColFrame\
+ ptColFrame MultiList ptColLabs\
+ ptLayout Frame ptRowFrame\
+ ptRowFrame MultiList ptRowLabs\
+ ptLayout Frame ptFrame\
+ ptFrame MultiList pixtab\
+\
+ ptLayout Label meanLabel\
+ ptLayout Frame meanFrame\
+ meanFrame Label meanValue\
+\
+ ptLayout Label sigLabel\
+ ptLayout Frame sigFrame\
+ sigFrame Label sigValue\
+}
+
+
+set Objects(tcl_panel) { \
+ toplevel TopLevelShell tcl_panel\
+ tcl_panel Layout tclLayout\
+ tclLayout Group tclCmdGroup\
+ tclCmdGroup Layout tclCmd\
+ tclCmd Command tclClear\
+ tclCmd Command tclExecute\
+ tclCmd Command tclDismiss\
+ tclLayout Frame tclFrame\
+ tclFrame AsciiText tclEntry\
+}
+
+
+set Objects(warning) { \
+ toplevel TransientShell warning\
+ warning Layout warn\
+ warn Frame warnFrame\
+ warnFrame Layout WFlayout\
+ WFlayout Icon warnIcon\
+ WFlayout TextBox warnText\
+ warn Command warnOk\
+ warn Command warnCancel\
+}
+
+
+set Resources(global) { \
+
+ !---------------------------------------------------------
+ ! Define some global widget resources for the main panels.
+ !---------------------------------------------------------
+ *shadowWidth: 1
+ *background: #c4c4c4
+! *foreground: black
+ *Arrow.width: 16
+ *Arrow.height: 25
+ *Text*height: 21
+ *Command.height: 21
+ *Command.highlightThickness: 1
+ *MenuButton.height: 21
+ *MenuButton.highlightThickness: 1
+ *Label.borderWidth: 0
+ *Label.shadowWidth: 0
+ *TextButton.shadowWidth: 0
+ *TextButton.highlightThickness: 1
+ *TextToggle*borderWidth: 0
+ *TextToggle.highlightThickness: 0
+ *Toggle.highlightThickness: 1
+ *Group.shrinkToFit: True
+
+ *Arrow.foreground: gray
+ *Arrow.background: #adadad
+ *Text*background: #adadad
+ *AsciiText*background: #adadad
+ *TextBox.background: #adadad
+ *MultiList*background: #adadad
+ *Slider2d.thumbColor: #c4c4c4
+
+
+ !-------------------------------------------------------------
+ ! Define resources to take advantage of the 3D scrollbar look.
+ !-------------------------------------------------------------
+ *Scrollbar*background: #c4c4c4
+ *Scrollbar*shadowWidth: 1
+ *Scrollbar*width: 15
+ *Scrollbar*height: 15
+ *Scrollbar*cursorName: top_left_arrow
+ *Scrollbar*pushThumb: true
+
+ *HTML.Scrollbar.shadowWidth: 1
+ *HTML*Scrollbar*width: 15
+ *HTML*Scrollbar*height: 15
+
+
+ !----------------------------------------
+ ! Menu resources giving a shadow effect.
+ !----------------------------------------
+ *SmeBSB.leftMargin: 10
+ *SmeBSB.rightMargin: 5
+ *SmeBSB.shadowWidth: 2
+ *SmeBSB.foreground: #e5e5e5
+ *SmeBSB.background: SteelBlue
+ *SimpleMenu.background: #c4c4c4
+ *SimpleMenu.borderWidth: 2
+ *SimpleMenu.borderColor: black
+ *SimpleMenu.line1.foreground: #9c9c9c
+ *SimpleMenu.line2.foreground: #e8e8e8
+ *SimpleMenu.line3.foreground: #9c9c9c
+ *SimpleMenu.line4.foreground: #e8e8e8
+ *SimpleMenu.line5.foreground: #9c9c9c
+ *SimpleMenu.line6.foreground: #e8e8e8
+ *SimpleMenu.line7.foreground: #9c9c9c
+ *SimpleMenu.line8.foreground: #e8e8e8
+ *SimpleMenu.line9.foreground: #9c9c9c
+ *SimpleMenu.line10.foreground: #e8e8e8
+ *SimpleMenu.line11.foreground: #9c9c9c
+ *SimpleMenu.line12.foreground: #e8e8e8
+ *SimpleMenu.line13.foreground: #9c9c9c
+ *SimpleMenu.line14.foreground: #e8e8e8
+ *SimpleMenu.line15.foreground: #9c9c9c
+ *SimpleMenu.line16.foreground: #e8e8e8
+ *SimpleMenu.line17.foreground: #9c9c9c
+ *SimpleMenu.line18.foreground: #e8e8e8
+ *SimpleMenu.line19.foreground: #9c9c9c
+ *SimpleMenu.line20.foreground: #e8e8e8
+ *SimpleMenu.line21.foreground: #9c9c9c
+ *SimpleMenu.line22.foreground: #e8e8e8
+ *SimpleMenu.line23.foreground: #9c9c9c
+ *SimpleMenu.line24.foreground: #e8e8e8
+ *SimpleMenu.line25.foreground: #9c9c9c
+ *SimpleMenu.line26.foreground: #e8e8e8
+ *SimpleMenu.line27.foreground: #9c9c9c
+ *SimpleMenu.line28.foreground: #e8e8e8
+ *SimpleMenu.line29.foreground: #9c9c9c
+ *SimpleMenu.line30.foreground: #e8e8e8
+ *SimpleMenu.line31.foreground: #9c9c9c
+ *SimpleMenu.line32.foreground: #e8e8e8
+ *SimpleMenu.line33.foreground: #9c9c9c
+ *SimpleMenu.line34.foreground: #e8e8e8
+ *SimpleMenu.line35.foreground: #9c9c9c
+ *SimpleMenu.line36.foreground: #e8e8e8
+ *SimpleMenu.line37.foreground: #9c9c9c
+ *SimpleMenu.line38.foreground: #e8e8e8
+ *SimpleMenu.line39.foreground: #9c9c9c
+ *SimpleMenu.line40.foreground: #e8e8e8
+
+
+ !---------------------------------------------
+ ! Fixups for 24-bit displays
+ !---------------------------------------------
+ *hFindEntry.background: #adadad
+ *hdrIGText.background: #adadad
+ *hdrKGText.background: #adadad
+ *hfEntry.background: #adadad
+ *printcmd.background: #adadad
+ *titleString.background: #adadad
+ *fnameText.background: #adadad
+ *imtemplateText.background: #adadad
+ *z1Value.background: #adadad
+ *z2Value.background: #adadad
+ *nsampValue.background: #adadad
+ *saveFile.background: #adadad
+ *infoText.background: #adadad
+ *wtName.background: #adadad
+ *wtTitle.background: #adadad
+ *wtFBCfg.background: #adadad
+ *wtIPixval.background: #adadad
+ *wtSPixval.background: #adadad
+ *wtBPixval.background: #adadad
+ *wtWcs1.background: #adadad
+ *wtWcs2.background: #adadad
+ *wtWcs3.background: #adadad
+ *wtWcs4.background: #adadad
+ *wcsIsmCmd.background: #adadad
+ *tclEntry.background: #adadad
+
+ *hFindEntry.foreground: #000000
+ *hdrIGText.foreground: #000000
+ *hdrKGText.foreground: #000000
+ *hfEntry.foreground: #000000
+ *printcmd.foreground: #000000
+ *titleString.foreground: #000000
+ *fnameText.foreground: #000000
+ *imtemplateText.foreground: #000000
+ *z1Value.foreground: #000000
+ *z2Value.foreground: #000000
+ *nsampValue.foreground: #000000
+ *saveFile.foreground: #000000
+ *infoText.foreground: #000000
+ *wtName.foreground: #000000
+ *wtTitle.foreground: #000000
+ *wtFBCfg.foreground: #000000
+ *wtIPixval.foreground: #000000
+ *wtSPixval.foreground: #000000
+ *wtBPixval.foreground: #000000
+ *wtWcs1.foreground: #000000
+ *wtWcs2.foreground: #000000
+ *wtWcs3.foreground: #000000
+ *wtWcs4.foreground: #000000
+ *wcsIsmCmd.foreground: #000000
+ *tclEntry.foreground: #000000
+}
+
+
+
+
+
+set Resources(ximtool) { \
+
+ ! Main image window resources.
+ ! -------------------------------
+ *allowShellResize: True
+ *beNiceToColormap: False
+ *menuLabel.foreground: Gold
+ *markerMenu.foreground: White
+ *rulerMenu.foreground: White
+ *display.imagewin.markerMenu.foreground: White
+ *display.imagewin.rulerMenu.foreground: White
+ *markerMenu.background: SteelBlue
+ *markerMenu*SimpleMenu.foreground: White
+ *markerMenu*SimpleMenu.background: SteelBlue
+ *rulerMenu.background: SteelBlue
+ *rulerMenu*SimpleMenu.foreground: White
+ *rulerMenu*SimpleMenu.background: SteelBlue
+ *rulerColor.SmeBSB.leftMargin: 16
+ *magzoomMenu.foreground: White
+ *magzoomMenu.background: SteelBlue
+ *magzoomMenu*SimpleMenu.foreground: White
+ *magzoomMenu*SimpleMenu.background: SteelBlue
+ *markerColor.SmeBSB.leftMargin: 64
+ *markerColor.SmeBSB.rightMargin: 0
+ *markerColor.menuLabel.leftMargin: 5
+ *markerColor.menuLabel.rightMargin: 5
+ *rulerColor.SmeBSB.leftMargin: 64
+ *rulerColor.SmeBSB.rightMargin: 0
+ *rulerColor.menuLabel.leftMargin: 5
+ *rulerColor.menuLabel.rightMargin: 5
+
+ *ximtool.title: XIMTOOL_VERSION
+
+ *display.borderWidth: 2
+ *display.layout: horizontal { \
+ -0 \
+ vertical { \
+ menuGroup < +inf -inf * > \
+ horizontal { 1 toolbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ horizontal { 1 panelbar < +inf -inf * > 1 } \
+ 1 < -1 > \
+ vertical { \
+ horizontal { \
+ imageFrame < +inf -inf * +inf -inf > \
+ -2 \
+ vcutFrame < * +inf -inf > \
+ } \
+ -3 \
+ horizontal { \
+ hcutFrame < +inf -inf * > 1 \
+ vertical { 4 horizontal { -4 plotOpts} -4 } \
+ } \
+ -3 \
+ horizontal { \
+ cbarFrame < +inf -inf * > \
+ focusSlider 2 hcut 2 vcut 15 \
+ } \
+ } \
+ } \
+ -0 \
+ }
+ *hcut.label: H
+ *hcut.font: *lucida-bold-r*10*
+ *vcut.label: V
+ *vcut.font: *lucida-bold-r*10*
+ *focusSlider.location: 0 0 100 15
+
+ *hcutFrame.frameType: sunken
+ *hcutFrame.frameWidth: 1
+ *hcutFrame.innerOffset: 1
+ *hcutFrame.outerOffset: 1
+ //*hcutPlot.color0: #c4c4c4
+ //*hcutPlot.color1: #000000
+ *hcutPlot.color0: #000000
+ *hcutPlot.color1: #ffffff
+ *hcutPlot.crosshairCursorColor: red
+ *hcutPlot.width: 512
+ *hcutPlot.height: 6
+ *hcutPlot.borderWidth: 0
+ *hcutPlot.alphaFont1: 6x10
+ *hcutPlot.alphaFont2: 6x10
+ *hcutPlot.alphaFont3: 6x10
+ *hcutPlot.alphaFont4: 6x10
+ *hcutPlot.alphaFont5: 6x10
+ *hcutPlot.alphaFont6: 6x10
+ *hcutPlot.alphaFont7: 6x10
+ *hcutPlot.alphaFont8: 6x10
+ *hcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)
+
+
+ *vcutFrame.frameType: sunken
+ *vcutFrame.frameWidth: 1
+ *vcutFrame.innerOffset: 0
+ *vcutFrame.outerOffset: 0
+ //*vcutPlot.color0: #c4c4c4
+ //*vcutPlot.color1: black
+ *vcutPlot.color0: #000000
+ *vcutPlot.color1: #ffffff
+ *vcutPlot.crosshairCursorColor: red
+ *vcutPlot.width: 6
+ *vcutPlot.height: 512
+ *vcutPlot.borderWidth: 0
+ *vcutPlot.alphaFont1: 6x10
+ *vcutPlot.alphaFont2: 6x10
+ *vcutPlot.alphaFont3: 6x10
+ *vcutPlot.alphaFont4: 6x10
+ *vcutPlot.alphaFont5: 6x10
+ *vcutPlot.alphaFont6: 6x10
+ *vcutPlot.alphaFont7: 6x10
+ *vcutPlot.alphaFont8: 6x10
+ *vcutPlot.translations: \
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)
+
+
+ *plotOpts.label: Options
+ !*plotOpts*location: 0 0 105 18
+ *plotOpts*location: 0 0 1 18
+ *plotOpts.shrinkToFit: True
+ *plotOpts.outerOffset: 5
+ *plotOpts.innerOffset: 3
+ *plotOpts.frameWidth: 2
+ *plotOpts*TextToggle.offIcon: square0s
+ *plotOpts*TextToggle.onIcon: square1s
+ *plotOpts*TextToggle.highlightColor: yellow
+ *plotOpts*TextToggle.outerOffset: 0
+ *plotOpts*TextToggle.frameWidth: 0
+ *plotOpts*TextToggle.selectionStyle: multi
+ *plotOpts*TextToggle.leftMargin: 3
+ *plotOpts*TextToggle.alignment: left
+
+ *poptsLayout.borderWidth: 0
+ *poptsLayout.layout: vertical { \
+ -1 \
+ plotSpeed plotAccurate plotImgPix \
+ 2 < -2 > \
+ horizontal { -4 optLine < +inf -inf * > -4 } \
+ 2 < -2 > \
+ curJump curSmooth curTrack \
+ -1 \
+ }
+ *plotSpeed.label: Better Speed
+ *plotSpeed.on: True
+ *plotAccurate.label: Better Accuracy
+ *plotAccurate.on: False
+ *plotImgPix.label: Image Pixels
+ *plotImgPix.on: False
+ *plotImgPix.sensitive: False
+ *optLine.height: 2
+ *optLine.width: 120
+ *optLine.outerOffset: 0
+ *optLine.innerOffset: 0
+ *optLine.frameWidth: 2
+ *optLine.frameType: chiseled
+ *curJump.label: Jump Cursor
+ *curJump.on: True
+ *curSmooth.label: Smooth Cursor
+ *curSmooth.on: False
+ *curTrack.label: Graphics Cursors
+ *curTrack.on: True
+
+
+ *menuGroup.label:
+ *menuGroup.height: 38
+ *menuGroup.width: 512
+ *menuGroup.frameType: raised
+ *menuGroup.frameWidth: 2
+ *menubar.layout: horizontal { \
+ 2 < -2 > \
+ fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \
+ 1 < -1 > \
+ imageTitle < +inff -inff * > \
+ 1 < -1 > \
+ mXflipButton 1 < -1 > mYflipButton \
+ 1 < -1 > \
+ mPrevButton 1 < -1 > mFrameButton 1 < -1 > mNextButton \
+ 1 < -1 > \
+ toolButton 1 < -1 > panelButton \
+ 2 < -2 > \
+ }
+
+ *menubar*SimpleMenu.foreground: Black
+ *menubar*SimpleMenu.borderWidth: 1
+ *menubar*SimpleMenu.foreground: White
+ *menubar*SimpleMenu.background: SteelBlue
+ *SmeBSB.vertSpace: 10
+
+ *menubar.width: 512
+ *menubar*borderWidth: 0
+ *menubar*Command.internalWidth: 0
+ *menubar*Command.borderWidth: 0
+ *menubar*Toggle.label: x
+ *menubar*Toggle.internalWidth: 0
+ *menubar*Toggle.borderWidth: 0
+
+ *toolbar.layout: horizontal { \
+ tbZoomIn < +inf -inf * > 1 < -1 > \
+ tbZoom0 < +inf -inf * > 1 < -1 > \
+ tbZoomOut < +inf -inf * > 1 < -1 > \
+ tbInvert < +inf -inf * > 1 < -1 > \
+ tbNormalize < +inf -inf * > 1 < -1 > \
+ tbMatchLUT < +inf -inf * > 1 < -1 > \
+ tbAutoReg < +inf -inf * > 1 < -1 > \
+ tbRegister < +inf -inf * > 1 < -1 > \
+ tbCenter < +inf -inf * > 1 < -1 > \
+ tbBlinkDec < +inf -inf * > 1 < -1 > \
+ tbBlink < +inf -inf * > 1 < -1 > \
+ tbBlinkInc < +inf -inf * > 1 < -1 > \
+ xflipButton < +inf -inf * > 1 < -1 > \
+ yflipButton < +inf -inf * > 1 < -1 > \
+ tbCompass < +inf -inf * > 1 < -1 > \
+ tbTile < +inf -inf * > 1 < -1 > \
+ prevButton < +inf -inf * > 1 < -1 > \
+ frameButton < +inf -inf * > 1 < -1 > \
+ nextButton < +inf -inf * > 1 < -1 > \
+ }
+ *toolbar.width: 512
+ *toolbar.height: 25
+ *toolbar*borderWidth: 0
+ *toolbar*Command.internalWidth: 3
+ *toolbar*Command.borderWidth: 0
+ *toolbar*Toggle.internalWidth: 2
+ *toolbar*Toggle.borderWidth: 0
+
+ *panelbar.layout: horizontal { \
+ pbDisplayP < +inf -inf * > 1 < -1 > \
+ pbPrintP < +inf -inf * > 1 < -1 > \
+ pbLoadP < +inf -inf * > 1 < -1 > \
+ pbSaveP < +inf -inf * > 1 < -1 > \
+ pbInfoP < +inf -inf * > 1 < -1 > \
+ pbTileP < +inf -inf * > 1 < -1 > \
+ pbCoordP < +inf -inf * > 1 < -1 > \
+ pbPanM < +inf -inf * > 1 < -1 > \
+ pbMagM < +inf -inf * > 1 < -1 > \
+ pbWcsM < +inf -inf * > 1 < -1 > \
+ pbIsm < +inf -inf * > 1 < -1 > \
+ helpButton < +inf -inf * > 1 < -1 > \
+ pbQuit < +inf -inf * > 1 < -1 > \
+ }
+ *panelbar*SimpleMenu.borderColor: Black
+ *panelbar*SimpleMenu.borderWidth: 1
+ *SmeBSB.vertSpace: 10
+
+ *panelbar.width: 12
+ *panelbar.height: 25
+ *panelbar*borderWidth: 0
+ *panelbar*Label.internalWidth: 4
+ *panelbar*Label.borderWidth: 0
+ *panelbar*Command.internalWidth: 4
+ *panelbar*Command.borderWidth: 0
+ *panelbar*Toggle.internalWidth: 3
+ *panelbar*Toggle.borderWidth: 0
+
+ *pbLoadP.label: Load
+ *pbDisplayP.label: Display
+ *pbSaveP.label: Save
+ *pbPrintP.label: Print
+ *pbInfoP.label: Info
+ *pbTileP.label: Tile
+ *pbCoordP.label: Coords
+ *pbPanM.label: Pan
+ *pbPanM.state: 1
+ *pbMagM.label: Mag
+ *pbMagM.state: 0
+ *pbWcsM.label: WCS
+ *pbWcsM.state: 1
+ *pbIsm.label: ISM
+ *pbIsm.state: 0
+ *helpButton.label:
+
+ *fileButton.label: File
+ *fileButton.menuName: fileMenu
+ *viewButton.label: View
+ *viewButton.menuName: viewMenu
+ *optionsButton.label: Options
+ *optionsButton.menuName: optionsMenu
+ *toolButton.label:
+ *toolButton.state: 0
+ *panelButton.label:
+ *panelButton.state: 0
+ *imageTitle*font: *times-bold-r*12*
+ *imageTitle.width: 40
+ *imageTitle.height: 20
+ *frameButton.menuName: frameMenu
+ *frameButton.label: 1
+ *frameButton.width: 20
+ *mFrameButton.menuName: mFrameMenu
+ *mFrameButton.label: 1
+ *mFrameButton.width: 20
+ *pbQuit.label: Quit
+ *tbZoom0.label: Mag
+ *tbBlink.label: Blink
+ *tbBlink.internalWidth: 3
+ *tbCenter.label: Cntr
+ *tbAutoReg.label: AReg
+ *tbRegister.label: Reg
+ *tbInvert.label: Inv
+ *tbNormalize.label: Norm
+ *tbMatchLUT.label: Match
+
+ *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *panelbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *toolbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+
+ *Gterm.cmapName: image
+ *Gterm.basePixel: 64
+ *imageFrame.frameType: sunken
+ *imageFrame.frameWidth: 1
+ *imageFrame.outerOffset: 0
+ *imageFrame.innerOffset: 0
+ *imageFrame.width: 512
+ *imageFrame.height: 512
+ *cbarFrame.frameType: sunken
+ *cbarFrame.frameWidth: 1
+ *cbarFrame.outerOffset: 0
+ *cbarFrame.innerOffset: 0
+ *cbarFrame.width: 512
+ *imagewin.warpCursor: true
+ *imagewin.raiseWindow: true
+ *imagewin.deiconifyWindow: true
+ *imagewin.idleCursor: crosshair
+ *imagewin.ginmodeCursor: circle
+ *imagewin.ginmodeBlinkInterval: 500
+ *imagewin.resizable: true
+ *imagewin.copyOnResize: false
+ *imagewin.width: 512
+ *imagewin.height: 512
+ *imagewin.maxMappings: 64
+ *imagewin.borderWidth: 0
+
+ *imagewin.translations: \
+ None<Key>Left: call(move_cursor,-1,0) \n\
+ None<Key>Down: call(move_cursor,0,1) \n\
+ None<Key>Up: call(move_cursor,0,-1) \n\
+ None<Key>Right: call(move_cursor,1,0) \n\
+ !Shift <Key>Left: call(move_cursor,-10,0) \n\
+ !Shift <Key>Down: call(move_cursor,0,10) \n\
+ !Shift <Key>Up: call(move_cursor,0,-10) \n\
+ !Shift <Key>Right: call(move_cursor,10,0) \n\
+ !Ctrl <Key>h: call(move_cursor,-1,0) \n\
+ !Ctrl <Key>j: call(move_cursor,0,1) \n\
+ !Ctrl <Key>k: call(move_cursor,0,-1) \n\
+ !Ctrl <Key>l: call(move_cursor,1,0) \n\
+ !Ctrl Shift <Key>h: call(move_cursor,-10,0) \n\
+ !Ctrl Shift <Key>j: call(move_cursor,0,10) \n\
+ !Ctrl Shift <Key>k: call(move_cursor,0,-10) \n\
+ !Ctrl Shift <Key>l: call(move_cursor,10,0) \n\
+ !Ctrl <Key>Left: call(moveFrame,-1,0) \n\
+ !Ctrl <Key>Down: call(moveFrame,0,1) \n\
+ !Ctrl <Key>Up: call(moveFrame,0,-1) \n\
+ !Ctrl <Key>Right: call(moveFrame,1,0) \n\
+ !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \n\
+ !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \n\
+ !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \n\
+ !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \n\
+ !Alt <Key>1: call(cpSetFrame,frame1) \n\
+ !Alt <Key>2: call(cpSetFrame,frame2) \n\
+ !Alt <Key>3: call(cpSetFrame,frame3) \n\
+ !Alt <Key>4: call(cpSetFrame,frame4) \n\
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed) \n\
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed) \n\
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed) \n\
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed) \n\
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed) \n\
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed) \n\
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed) \n\
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed) \n\
+ !Ctrl <Key>a: call(tbToggleAutoReg) \n\
+ !Ctrl <Key>b: call(prevFrame,$name) \n\
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame) \n\
+ !Ctrl <Key>f: call(nextFrame,$name) \n\
+ !Ctrl <Key>i: call(cpInvert) \n\
+ !Ctrl <Key>m: call(toggleMagnifier) \n\
+ !Ctrl <Key>n: call(normalize) \n\
+ !Ctrl <Key>o: call(offset,$x,$y) \n\
+ !Ctrl <Key>p: call(togglePanner) \n\
+ !Ctrl Alt <Key>q: call(Quit) \n\
+ !Ctrl <Key>r: call(cpRegisterFrames) \n\
+ !Ctrl <Key>s: call(cpMatchFrames) \n\
+ !Ctrl <Key>t: call(tbTileFramesToggle) \n\
+ !Ctrl <Key>u: call(cpZoom,1,1,fixed) \n\
+ !Ctrl <Key>x: call(cpFrameAction,flipX) \n\
+ !Ctrl <Key>y: call(cpFrameAction,flipY) \n\
+ Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \n\
+ Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \n\
+ !Ctrl Alt <Key>=: call(Print) \n\
+ Ctrl <Key>\<: call(cpSetBlinkRate,BRdecrease) \n\
+ Ctrl <Key>\>: call(cpSetBlinkRate,BRincrease) \n\
+ Ctrl <Key>\[: call(setCtrBoxSize,$x,$y,-1) \n\
+ Ctrl <Key>\]: call(setCtrBoxSize,$x,$y,1) \n\
+ !Ctrl <Key>0: call(centroid,$x,$y,peak) \n\
+ !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \n\
+ !Alt <Key>b: call(toggleBlink) \n\
+ !Alt <Key>c: call(displayPanel) \n\
+ !Ctrl Shift <Key>c: call(displayPanel) \n\
+ !Ctrl Alt <Key>f: call(fitFrame) \n\
+ !Alt <Key>h: call(Help) \n\
+ !Alt <Key>i: call(infoPanel) \n\
+ !Alt <Key>l: call(loadPanel) \n\
+ !Alt <Key>p: call(printPanel) \n\
+ !Alt <Key>s: call(savePanel) \n\
+ !Alt <Key>t: call(tclPanel) \n\
+ !Ctrl Shift <Key>t: call(tclPanel) \n\
+ !Shift<Btn1Down>: call(setDynamicMagnifier,1) \n\
+ !Shift<Btn1Up>: call(setDynamicMagnifier,0) \n\
+ !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \n\
+ !Shift <Btn2Down>: crosshair(on) \n\
+ !Shift <Btn2Motion>: crosshair(on) \n\
+ !Shift <Btn2Up>: crosshair(off) \n\
+ !<Btn2Up>: crosshair(off) \n\
+ !<Btn2Down>: call(zoom,$x,$y) \n\
+ !<Btn3Down>: call(windowColormap,$x,$y) \n\
+ !<Btn3Up>: call(updateColormap,$x,$y) \n\
+ !<Btn3Motion>: call(windowColormap,$x,$y) \n\
+ !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \n\
+ !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \n\
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \n\
+ <EnterWindow>: enter-window() \n\
+ <LeaveWindow>: leave-window() \n\
+ <KeyPress>: graphics-input() \n\
+ !Alt <Motion>: call(curtrack_msg,$x,$y) \n\
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+
+! The following translations can be used to enable windowing of the
+! individual RGB components of the colormap. It's not very useful but
+! included here for those that may wish to use it.
+!--------------------------------------------------------------------------
+! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \n\
+! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \n\
+! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \n\
+! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \n\
+! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \n\
+! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \n\
+
+
+ *colorbar.maxRasters: 1
+ *colorbar.maxMappings: 1
+ *colorbar.height: 17
+ *colorbar.width: 50
+ *colorbar.borderWidth: 0
+}
+
+
+set Resources(panelShell) { \
+
+ !================================
+ ! Main Integrated Control Panel
+ !================================
+ *panelShell.title: XImtool Control Panel
+ *panelShell.geometry: 480x630
+ *panelShell.maxWidth: 480
+ *panelShell.minWidth: 480
+ *panelTabs.internalHeight: 3
+ *panelTabs.internalWidth: 10
+
+ *Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *List.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *TextToggle.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+ *display_panel.tabLabel: Display
+ *display_panel.innerOffset: 5
+ *print_panel.tabLabel: Print
+ *print_panel.innerOffset: 5
+ *load_panel.tabLabel: Load
+ *load_panel.innerOffset: 5
+ *save_panel.tabLabel: Save
+ *save_panel.innerOffset: 5
+ *info_panel.tabLabel: Info
+ *info_panel.innerOffset: 5
+ *tile_panel.tabLabel: Tile
+ *tile_panel.innerOffset: 5
+ *wcs_panel.tabLabel: Coords
+ *wcs_panel.innerOffset: 5
+
+ *panelMenuBar*borderWidth: 0
+ *panelMenuBar*Command.internalHeight: 4
+ *panelMenuBar*Command.internalWidth: 15
+ *panelMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ 10 < +inf -10> \
+ panelHelp \
+ 3 < -3 > \
+ panelClose \
+ 7 < -7 > \
+ } \
+ 5 < -5 > \
+ }
+
+ *panelHelp.label: Help
+ *panelClose.label: Dismiss
+
+
+ *tabFrame.outerOffset: 3
+ *tabFrame.innerOffset: 0
+ *tabFrame.frameWidth: 0
+ *tabFrame.frameType: chiseled
+ *panelMenuFrame.outerOffset: 0
+ *panelMenuFrame.innerOffset: 1
+ *panelMenuFrame.frameType: raised
+ *panelMenuFrame.frameWidth: 2
+ *panel.layout: vertical { \
+ panelMenuFrame < +inf -inf * > \
+ 3 \
+ horizontal { tabFrame < +inf -inf * +inf -inf> } \
+ }
+}
+
+
+set Resources(display_panel) { \
+
+ !================================
+ ! Main Display Control Panel.
+ !================================
+ *controlPanel*internalWidth: 0
+ *controlPanel*borderWidth: 0
+
+ *TextBox.font: 7x13bold
+ *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Command.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1
+ *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
+ *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *zoom*Command.font: 7x13bold
+
+ *blinkFrame1.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame2.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame3.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkFrame4.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *matchButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *registerButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *blinkButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+ *autoregButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1
+
+ *controlPanel.layout: vertical { \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ viewBox < +inf -inf * > \
+ -1 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ -1 \
+ enhancementBox < +inf -inf * +inf -inf > \
+ -5 \
+ vertical { \
+ -1 \
+ blinkBox < * +inf - inf > \
+ 1 \
+ optionsBox < * +inff -inff > \
+ -1 \
+ } \
+ -1 \
+ } \
+ -5 \
+ controlBox < +inf * > \
+ -5 \
+ }
+
+ ! VIEW
+ ! ------------------
+ *viewBox.label: View
+ *viewBox.location: 0 0 410 0
+ *viewBox.shrinkToFit: True
+ *viewBox.outerOffset: 7
+
+ *view.layout: vertical { \
+ 5 < +inf -5 > \
+ horizontal { \
+ -1 \
+ frameSelect \
+ vertical { \
+ 3 < -3 > \
+ frameDataBox < +inff -100% * +inff -100% > \
+ 3 < -3 > \
+ } \
+ zoomBox \
+ -1 \
+ } \
+ 1 < +inf > \
+ viewButtons < +inf -inf * +inf -inf > \
+ 5 < +inf -5 > \
+ }
+
+ *frameDataBox.frameType: sunken
+ *frameDataBox.frameWidth: 1
+ *frameData.width: 150
+ *frameData.height: 50
+
+ *frameSelect.location: 0 0 72 0
+ *frameSelect.shrinkToFit: True
+ *frameSelect.outerOffset: 7
+ *frameSelect.innerOffset: 2
+ *frameSelect.frameWidth: 2
+ *frameSelect*offIcon: diamond0s
+ *frameSelect*onIcon: diamond1s
+ *frameSelect*highlightColor: blue
+ *frameSelect.label: Frame
+
+ *frameBox.layout: vertical { \
+ 3 \
+ horizontal { -2 frlistBox < * +inff -inff > } \
+ 3 < +inf -3 > \
+ horizontal { prevFrame < +inf -inf * > 4 nextFrame < +inf -inf * > } \
+ }
+ *framePort.allowVert: True
+ *framePort.allowHoriz: False
+ *framePort.useRight: True
+ *framePort.height: 80
+
+ *frameBox*alignment: left
+ *frameBox*frameWidth: 0
+ *frameBox*frame1.label: 1\ \
+ *frameBox*frame2.label: 2\ \
+ *frameBox*frame3.label: 3\ \
+ *frameBox*frame4.label: 4\ \
+
+ *frameBox*frame5.label: 5\ \
+ *frameBox*frame6.label: 6\ \
+ *frameBox*frame7.label: 7\ \
+ *frameBox*frame8.label: 8\ \
+ *frameBox*frame9.label: 9\ \
+ *frameBox*frame10.label: 10\
+ *frameBox*frame11.label: 11\
+ *frameBox*frame12.label: 12\
+ *frameBox*frame13.label: 13\
+ *frameBox*frame14.label: 14\
+ *frameBox*frame15.label: 15\
+ *frameBox*frame16.label: 16\
+ *frameBox*Command.width: 24
+ *frameBox*prevFrame.label: xxx
+ *frameBox*nextFrame.label: xxx
+
+ *frameList*location: 0 0 50 20
+ *frameList.layout: vertical { \
+ frame1 < +inf * >\
+ frame2 < +inf * >\
+ frame3 < +inf * >\
+ frame4 < +inf * >\
+ frame5 < +inf * >\
+ frame6 < +inf * >\
+ frame7 < +inf * >\
+ frame8 < +inf * >\
+ frame9 < +inf * >\
+ frame10 < +inf * >\
+ frame11 < +inf * >\
+ frame12 < +inf * >\
+ frame13 < +inf * >\
+ frame14 < +inf * >\
+ frame15 < +inf * >\
+ frame16 < +inf * >\
+ }
+
+
+ *zoomBox.label: Zoom:
+ *zoomBox.location: 0 0 160 127
+ *zoomBox.outerOffset: 7
+ *zoomBox.shrinkToFit: True
+ *zoomBox*TextButton.frameWidth: 1
+ *zoomBox*TextButton.outerOffset: 0
+
+ *controlPanel*zoom*internalWidth: 4
+ *zoom.layout: vertical { \
+ space = ((50% of width zoom) - (50% of width z5)) \
+ 1 < +inf > \
+ horizontal { \
+ vertical { toggleZoom < +inf * +inf > 1 } \
+ 1 \
+ vertical { 1 < +inf > z5 1 < +inf > z3 0 < +inf > } \
+ 1 \
+ vertical { zoomIn < +inf * +inf > 1 } \
+ } \
+ 1 \
+ horizontal { \
+ 1 < +inf > \
+ d8 1 d4 1 d2 1 x1 1 z2 1 z4 1 z8 \
+ 1 < +inf > \
+ } \
+ 1 \
+ horizontal { \
+ vertical { 1 zoomOut < +inf * +inf > } \
+ 1 \
+ vertical { 0 < +inf > d3 1 < +inf > d5 1 < +inf > } \
+ 1 \
+ vertical { 1 centerFrame < +inf * +inf > } \
+ } \
+ 1 < +inf > \
+ }
+
+ *toggleZoom.label: Toggle\nZoom
+ *toggleZoom.outerOffset: 2
+ *toggleZoom.width: 30
+ *toggleZoom.height: 25
+
+ *zoomIn.label: Zoom\nIn
+ *zoomIn.outerOffset: 2
+ *zoomIn.width: 30
+ *zoomIn.height: 25
+
+ *x1.label: 1
+ *z2.label: 2
+ *z3.label: 3
+ *z4.label: 4
+ *z5.label: 5
+ *z8.label: 8
+
+ *controlPanel*zoomIn.foreground: royalBlue3
+ *controlPanel*z4.foreground: royalBlue3
+ *controlPanel*z5.foreground: royalBlue3
+ *controlPanel*z8.foreground: royalBlue3
+ *controlPanel*z2.foreground: royalBlue3
+ *controlPanel*z3.foreground: royalBlue3
+
+ *zoomOut.label: Zoom\nOut
+ *zoomOut.outerOffset: 2
+ *zoomOut.width: 30
+ *zoomOut.height: 25
+
+ *centerFrame.label: Center
+ *centerFrame.outerOffset: 2
+ *centerFrame.width: 30
+ *centerFrame.height: 25
+
+ *d2.label: 2
+ *d3.label: 3
+ *d4.label: 4
+ *d5.label: 5
+ *d8.label: 8
+
+ *controlPanel*zoomOut.foreground: mediumVioletRed
+ *controlPanel*d2.foreground: mediumVioletRed
+ *controlPanel*d3.foreground: mediumVioletRed
+ *controlPanel*d4.foreground: mediumVioletRed
+ *controlPanel*d5.foreground: mediumVioletRed
+ *controlPanel*d8.foreground: mediumVioletRed
+
+ *viewButtons.location: 0 0 100 80
+ *viewButtons.layout: horizontal { \
+ 2 < -2 > \
+ aspect < +inf * > 2 \
+ flipX < +inf * > 2 \
+ flipY < +inf * > 2 \
+ flipXY < +inf * > 2 \
+ clearFrame < +inf * > 2 \
+ fitFrame < +inf * > \
+ 2 < -2 > \
+ }
+ *nextFrame.label: Next Frame
+ *prevFrame.label: Previous Frame
+ *fitFrame.label: Fit Frame
+ *aspect.label: Aspect
+ *clearFrame.label: Clear Frame
+ *flipX.label: Flip X
+ *flipY.label: Flip Y
+ *flipXY.label: Flip XY
+
+
+ ! ENHANCEMENT
+ ! ------------------
+ *enhancementBox.label: Enhancement
+ *enhancementBox.location: 0 0 110 0
+ *enhancementBox.shrinkToFit: True
+ *enhancementBox.outerOffset: 7
+
+ *enhance*Viewport.allowVert: True
+ *enhance*Viewport.allowHoriz: False
+ *enhance*Viewport.useRight: False
+ *enhance*Viewport.resizeable: True
+ *enhance*Scrollbar.width: 17
+ *enhance*Scrollbar.minimumThumb: 10
+ *enhance.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ colorlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 2 \
+ horizontal { \
+ 2 < -2 > \
+ colordataFrame < +inf -inf * +inf -inf > \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 2 < -2 > \
+ vertical { -1 contrastLabel 3 < -3 > brightnessLabel -1 } \
+ 3 < -3 > \
+ vertical { \
+ -1 \
+ contrastSlider < +inf -inf * > \
+ 3 < -3 > \
+ brightnessSlider < +inf -inf * > \
+ -1 \
+ } \
+ 2 < -2 > \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ 3 < -3 > \
+ invertButton < +inf -inf * > \
+ 5 < -5 > \
+ optimizeButton < +inf -inf * > \
+ 3 < -3 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *enhance*frameType: sunken
+ *enhance*frameWidth: 1
+ *enhance*BorderWidth: 0
+ *enhance*Label.ShadowWidth: 0
+
+ *colorlist.width: 100
+ *colorlist.height: 98
+ *colordata.width: 100
+ *colordata.height: 45
+ *enhance*colordata.frameWidth: 0
+ *contrastLabel.label: x
+ *contrastSlider.location: 0 0 100 17
+ *brightnessLabel.label: x
+ *brightnessSlider.location: 0 0 100 17
+ *invertButton.label: Invert
+ *optimizeButton.label: Optimize
+
+
+ ! ---------------------
+ ! BLINK/REGISTER
+ ! ---------------------
+ *blinkBox.label: Blink/Register
+ *blinkBox.location: 0 0 235 0
+ *blinkBox.shrinkToFit: True
+ *blinkBox.outerOffset: 7
+ *blinkBox*TextToggle.frameWidth: 1
+
+ *blink.layout: vertical { \
+ space = (width blinkFramesLabel - width blinkRateLabel) \
+ 3 < -3 > \
+ horizontal { \
+ 0 \
+ blinkFramesLabel \
+ 3 < +inf > \
+ blinkFrame1 < -50% * > \
+ blinkFrame2 < -50% * > \
+ blinkFrame3 < -50% * > \
+ blinkFrame4 < -50% * > \
+ 4 < +inf > \
+ blinkPanel < -50% * > \
+ blinkReset \
+ 2 \
+ } \
+ 5 < -5 > \
+ horizontal { \
+ $space \
+ blinkRateLabel \
+ 2 \
+ BRframe < +inf * > \
+ } \
+ 5 < +inf -100% > \
+ horizontal { \
+ vertical { \
+ 2 matchButton < +inf * > 4 < -4 > registerButton < +inf * > \
+ } \
+ 5 < -5 > \
+ vertical { \
+ 1 blinkButton < +inf * > 4 < -4 > autoregButton < +inf * > \
+ } \
+ } \
+ }
+
+ *BRlayout.layout: horizontal { \
+ BRdecrease \
+ BRtext < +inf -100% * > \
+ BRincrease \
+ }
+
+ *blink.Label.borderWidth: 0
+ *blink.Label.shadowWidth: 0
+ *controlPanel*blink*internalWidth: 4
+ *blink.TextToggle.location: 0 0 102 23
+ *blink.TextToggle.frameWidth: 1
+ *blink*TextToggle.highlightColor: yellow
+ *blink*TextToggle.offIcon: square0s
+ *blink*TextToggle.onIcon: square1s
+ *blink*TextToggle.outerOffset: 1
+ *blink*Command.height: 27
+ *blink*Arrow.width: 16
+ *blink*Arrow.height: 25
+
+
+ *blinkFramesLabel.label: Frames List:
+ *blinkFrame1.label: 1
+ *blinkFrame2.label: 2
+ *blinkFrame3.label: 3
+ *blinkFrame4.label: 4
+ *blinkPanel.label: x
+ *blinkPanel.width: 20
+ *blinkReset.label: Reset
+
+ *blinkRateLabel.label: Blink Rate:
+ *BRframe.frameType: sunken
+ *BRframe.frameWidth: 1
+ *BRtext.width: 40
+ *BRtext.height: 23
+ *BRdecrease.direction: left
+ *BRincrease.direction: right
+ *registerButton.label: Register
+ *matchButton.label: Match LUTs
+ *blinkButton.label: Blink
+ *autoregButton.label: Auto-Register
+
+ ! OPTIONS
+ ! ---------------------
+ *optionsBox.label: Options
+ *optionsBox.location: 0 0 220 0
+ *optionsBox.shrinkToFit: False
+ *optionsBox.outerOffset: 7
+ *optionsBox*offIcon: square0s
+ *optionsBox*onIcon: square1s
+ *optionsBox*selectionStyle: multi
+ *optionsBox*highlightColor: yellow
+ *optionsBox.TextToggle.location: 0 0 102 20
+ *optionsBox.TextToggle.frameWidth: 0
+ *optionsBox.TextToggle.highlightThickness: 0
+ *optionsBox*alignment: left
+
+ *pannerButton.label: Panner
+ *coordsBoxButton.label: Coords Box
+ *autoscaleButton.label: Autoscale
+ *antialiasButton.label: Antialias
+ *tileFramesButton.label: Tile Frames
+ *magnifierButton.label: Magnifier
+ *warningsButton.label: Warnings
+ *peakupButton.label: Centroid Peaks
+ *peakupButton.on: True
+
+ ! CONTROL
+ ! ----------------------
+ *controlBox.frameType: chiseled
+ *controlBox.frameWidth: 2
+ *controlBox.outerOffset: 7
+ *controlBox.innerOffset: 5
+ *controlBox.height: 30
+
+ *control.layout: horizontal { \
+ 1 \
+ initializeButton < +inf * > \
+ 5 < -5 > \
+ normalizeButton < +inf * > \
+ 80 < +inf -100% > \
+ }
+
+ *initializeButton.label: Initialize
+ *normalizeButton.label: Normalize
+}
+
+
+set Resources(print_panel) { \
+
+ !=====================================
+ ! Print Setup Panel resources. !
+ !=====================================
+ *print_panel*TextToggle.alignment: left
+ *print_panel*Arrow.width: 16
+ *print_panel*Arrow.height: 20
+ *print_panel*TextToggle.frameWidth: 0
+ *print_panel*TextToggle.height: 20
+ *print_panel*Label.borderWidth: 0
+ *print_panel*Label.shadowWidth: 0
+ *print_panel*TextButton.width: 40
+ *print_panel*TextButton.height: 25
+
+ *printLayout.borderWidth: 0
+ *printLayout.layout: vertical { \
+ -1 \
+ printCmdGroup < +inf * > \
+ -1 \
+ optGroup < +inf -inf * +inf -inf > \
+ -3 \
+ cmdGroup < +inf * > \
+ -1\
+ }
+
+
+ ! Print Group resources.
+ !----------------------------------
+ *printCmdGroup.borderWidth: 0
+ *printCmdGroup.outerOffset: 5
+ *printCmdGroup.label:
+ *printCmdGroup.location: 0 0 400 80
+ *printCmdGroup*offIcon: diamond0s
+ *printCmdGroup*onIcon: diamond1s
+ *printCmdGroup*highlightColor: cyan
+ *printCmdGroup*Frame.frameType: sunken
+ *printCmdGroup*Frame.frameWidth: 1
+ *printCmdGroup*Frame.width: 300
+ *printCmdGroup*Label.justify: right
+ *printCmdGroup*Text*editType: edit
+ *printCmdGroup*Text*height: 22
+ *printCmdGroup*TextToggle.width: 70
+ *printCmdGroup*shadowWidth: 0
+ *printCmdGroup*borderWidth: 0
+ *printCmdLayout.borderWidth: 0
+ *printCmdLayout.layout: horizontal { \
+ labelLayout 5 inputLayout < +inf -inf * > \
+ }
+ *labelLayout.borderWidth: 0
+ *labelLayout.layout: vertical { 5 toLabel 7 printerLabel }
+ *printerLabel.label: Print Command:
+ *toLabel.label: Print To:
+ *toPrinter.label: Printer
+ *toPrinter.on: True
+ *toFile.label: File
+
+ *inputLayout.borderWidth: 0
+ *inputLayout.layout: horizontal { \
+ 3 \
+ vertical { \
+ 5 \
+ horizontal { 5 toPrinter 5 toFile 5 < +inf -inf > } \
+ 5 \
+ printcmdFrame < +inf -inf * > \
+ 5 \
+ } \
+ 3 \
+ }
+ *printcmd*string: lpr
+ *printcmd*height: 22
+ *printcmd*Text*editType: edit
+
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *optGroup.frameWidth: 2
+ *optGroup.frameType: chiseled
+ *optGroup.label:
+ *optGroup.location: 0 0 400 330
+ *optGroup.outerOffset: 5
+ *optGroup.innerOffset: 2
+ *optLayout*borderWidth: 0
+ *optLayout.layout: vertical { \
+ -1 \
+ horizontal { \
+ vertical { \
+ 5 \
+ epsPageGroup < +inf -inf * > \
+ optionsGroup < +inf -inf * +inf -inf > \
+ -1 \
+ } \
+ vertical { \
+ 5 \
+ printColorGroup < +inf -inf * > \
+ printerGroup < +inf -inf * > \
+ -1 \
+ } \
+ -1 \
+ } \
+ 5 \
+ horizontal { annOptsGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+
+ ! Postscript Options group resources.
+ ! -----------------------------------
+ *epsPageGroup.label: Postscript Options
+ *epsPageGroup.outerOffset: 7
+ *epsPageGroup.innerOffset: 5
+ *epsPageGroup.location: 0 0 250 150
+ *epsPageGroup*offIcon: diamond0s
+ *epsPageGroup*onIcon: diamond1s
+ *epsPageGroup*highlightColor: cyan
+ *epsPage*Label.justify: left
+ *epsPage.layout: vertical { \
+ -1 \
+ epsOrientLabel 4 < -4 > \
+ horizontal { 25 epsPortButton epsLandButton epsSquareButton -1 } \
+ 4 \
+ epsSizeLabel -1 \
+ horizontal { \
+ 25 epsLetterButton epsLegalButton epsA4Button epsB5Button -1 \
+ } \
+ 10 \
+ horizontal { 5 epsScaleLabel 4 ScaleFrame < +inf -inf * > } \
+ -1 \
+ }
+
+
+ ! Page Layout resources.
+ ! -------------------------------
+ *epsOrientLabel.label: Orientation:
+ *epsPortButton.label: Portrait
+ *epsPortButton.width: 65
+ *epsLandButton.label: Landscape
+ *epsLandButton.width: 85
+ *epsSquareButton.label: Square
+ *epsSquareButton.width: 70
+ *epsSquareButton.sensitive: False
+
+ *epsSizeLabel.label: Paper Size:
+ *epsLetterButton.label: Letter
+ *epsLetterButton.width: 60
+ *epsLegalButton.label: Legal
+ *epsLegalButton.width: 60
+ *epsA4Button.label: A4
+ *epsA4Button.width: 50
+ *epsB5Button.label: B5
+ *epsB5Button.width: 50
+
+ ! Image scale box resources.
+ ! -------------------------------
+ *epsScaleLabel.label: Output Image Scale:
+ *epsScaleLabel.justify: right
+ *ScaleFrame.frameType: sunken
+ *ScaleFrame.frameWidth: 1
+ *ScaleFrame*shadowWidth: 0
+ *ScaleLayout.location: 0 0 100 35
+ *ScaleLayout.label:
+ *ScaleLayout.layout: horizontal { \
+ SCdecrease SCtext < +inf -100% * > SCincrease \
+ }
+ *SCdecrease.direction: left
+ *SCtext.width: 75
+ *SCtext.height: 22
+ *SCtext.label: 100 %
+ *SCincrease.direction: right
+
+
+ ! Miscellaneous print options box resources.
+ ! ------------------------------------
+ *optionsGroup.outerOffset: 7
+ *optionsGroup.innerOffset: 5
+ *optionsGroup*onIcon: square1s
+ *optionsGroup*offIcon: square0s
+ *optionsGroup.label: Processing Options
+ *optionsGroup*TextToggle.width: 125
+ *optionsGroup*TextToggle.highlightColor: yellow
+ *options.location: 0 0 250 60
+ *options.frameWidth: 2
+ *options.layout: horizontal { \
+ 5 \
+ vertical { -1 epsscaleButton 2 autorotateButton -1 } \
+ 3 \
+ vertical { -1 aspectButton 2 compressButton -1 } \
+ -1 \
+ }
+ *epsscaleButton.label: Auto Scale
+ *autorotateButton.label: Auto Rotate
+ *aspectButton.label: Max Aspect
+ *compressButton.label: RLE Compress
+ *compressButton.sensitive: False
+
+
+ ! Annotation options box resources.
+ ! ------------------------------------
+ *annOptsGroup.outerOffset: 7
+ *annOptsGroup.innerOffset: 5
+ *annOptsGroup*onIcon: square1s
+ *annOptsGroup*offIcon: square0s
+ *annOptsGroup.label: Annotation Options
+ *annOptsGroup*TextToggle.width: 90
+ *annOptsGroup*TextToggle.highlightColor: yellow
+ *annOptsGroup*Frame.frameType: sunken
+ *annOptsGroup*Frame.frameWidth: 1
+ *annOptsGroup*Frame.width: 300
+ *annOptsGroup*Text*editType: edit
+ *annOpts.frameWidth: 2
+ *annOpts.location: 0 0 400 70
+ *annOpts.layout: vertical { \
+ 2 \
+ horizontal { \
+ 5 annotateButton 2 titleButton 2 bordersButton 2 colorbarButton 5 \
+ } \
+ 3 \
+ horizontal { -1 titleLabel 2 titleFrame < +inf -inf * > -1 } \
+ -1 \
+ }
+ *annotateButton.label: \ Annotate
+ *titleButton.label: \ Title
+ *bordersButton.label: \ Borders
+ *colorbarButton.label: \ Colorbar
+ *titleLabel.label: Title String
+ *titleString*string: imtitle
+ *titleString*height: 23
+ *titleString*Text*editType: edit
+
+
+ ! Output color box resources.
+ ! ------------------------------
+ *printColorGroup.location: 0 0 150 90
+ *printColorGroup.outerOffset: 7
+ *printColorGroup.frameWidth: 2
+ *printColorGroup*offIcon: diamond0s
+ *printColorGroup*onIcon: diamond1s
+ *printColorGroup*highlightColor: cyan
+ *printColorGroup.innerOffset: 5
+ *printColorGroup.label: Output Color
+ *printColorGroup*TextToggle.width: 110
+ *printColor.frameWidth: 2
+ *printColor.location: 0 0 250 75
+ *printColor.layout: horizontal { \
+ 1 \
+ vertical { -1 prGrayButton 2 prPseudoButton 2 prRGBButton -1 } \
+ -1 \
+ }
+ *prGrayButton.label: Grayscale
+ *prPseudoButton.label: PseudoColor
+ *prRGBButton.label: RGB
+
+ ! Printer Selection.
+ ! --------------------------
+ *printerGroup.label: Printers
+ *printerGroup.location: 0 0 110 130
+ *printerGroup.shrinkToFit: True
+ *printerGroup.outerOffset: 7
+
+ *printers*Viewport.allowVert: True
+ *printers*Viewport.allowHoriz: False
+ *printers*Viewport.useRight: True
+ *printers*Viewport.resizeable: True
+ *printers*Scrollbar.width: 17
+ *printers*Scrollbar.minimumThumb: 10
+ *printers.layout: vertical { \
+ 3 < -3 > \
+ horizontal { \
+ 2 < -2 > \
+ printlistFrame < +inf -inf * +inff -inff > \
+ 2 < -2 > \
+ } \
+ 3 < -3 > \
+ }
+
+ *printers*frameType: sunken
+ *printers*frameWidth: 1
+ *printers*BorderWidth: 0
+ *printers*Label.ShadowWidth: 0
+
+ *printlist.width: 100
+ *printlist.height: 78
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *cmdGroup.frameType: chiseled
+ *cmdGroup.frameWidth: 2
+ *cmdGroup.outerOffset: 5
+ *cmdGroup.innerOffset: 5
+ *cmdGroup.label:
+ *cmdGroup.location: 0 0 150 50
+ *cmdLayout.borderWidth: 0
+ *cmdLayout*Command.internalWidth: 12
+ *cmdLayout.layout: horizontal { \
+ 2 \
+ okayPrint 1 < +inf > printStatus < +inf -inf * +inf -inf > \
+ 2 \
+ }
+ *cmdGroup*TextButton*location: 0 0 80 0
+ *okayPrint.label: Print
+}
+
+
+set Resources(info_panel) { \
+
+ !--------------------
+ ! Information Panel
+ !--------------------
+ *infoLayout*borderWidth: 0
+ *infoLayout*Frame.frameType: sunken
+ *infoLayout*Frame.frameWidth: 1
+ *infoLayout*Command.internalWidth: 12
+ *infoLayout*Text*editType: read
+ *infoLayout*Text*scrollVertical: whenNeeded
+ *infoLayout*Text*scrollHorizontal: whenNeeded
+ *infoLayout*Text*displayCaret: False
+ *infoLayout*Scrollbar.background: #c4c4c4
+ *infoLayout*Scrollbar.width: 17
+ *infoLayout*Scrollbar.height: 17
+
+ *infoText.height: 240
+ *infoText*font: 6x13
+ *infoLayout.layout: vertical { \
+ infoBox < +inf -inf * > \
+ }
+
+ *infoBox.label:
+ *infoBox.outerOffset: 0
+ *infoBox.innerOffset: 3
+ *infoBoxL*TextToggle.frameType: raised
+ *infoBoxL*TextToggle.frameWidth: 1
+ *infoBoxL*TextToggle*outerOffset: 0
+ *infoBoxL*TextToggle*innerOffset: 1
+ *infoBoxL*TextToggle.location: 0 0 100 25
+ *infoBoxL*TextToggle*onIcon: square1s
+ *infoBoxL*TextToggle*offIcon: square0s
+ *infoBoxL*TextToggle*highlightColor: cyan
+ *infoBoxL.layout: vertical { \
+ infoFrame < +inf -inf * +inf -inf > 1 \
+ 4 \
+ horizontal { \
+ infoOptFr < +inf -inf * > 1 \
+ infoOptSvr < +inf -inf * > 1 \
+ infoOptClients < +inf -inf * > 1 \
+ infoOptWCS < +inf -inf * > 1 \
+ infoOptIsm < +inf -inf * > 1 \
+ infoOptFB < +inf -inf * > \
+ }\
+ 2 \
+ }
+ *infoOptFr.label: Frame
+ *infoOptFr.on: True
+ *infoOptSvr.label: Server
+ *infoOptWCS.label: WCS
+ *infoOptIsm.label: ISM
+ *infoOptClients.label: Clients
+ *infoOptFB.label: Imtoolrc
+}
+
+
+
+set Resources(load_panel) { \
+
+ !-------------------------------
+ ! File Load Control Panel.
+ !-------------------------------
+ *filesLayout*borderWidth: 0
+ *filesLayout*Group.shrinkToFit: True
+ *filesLayout*Group.frameType: chiseled
+ *filesLayout*Frame*frameType: sunken
+ *filesLayout*Frame*frameWidth: 1
+ *filesLayout*TextToggle.frameWidth: 0
+ *filesLayout*TextToggle.height: 28
+ *filesLayout*TextToggle.alignment: left
+ *filesLayout*TextToggle.ledtMargin: 3
+ *filesLayout*SimpleMenu.borderWidth: 1
+ *filesLayout*SimpleMenu.borderColor: black
+ *filesLayout*SimpleMenu.foreground: White
+ *filesLayout*SimpleMenu.background: SteelBlue
+ *filesLayout*Label.borderWidth: 0
+ *filesLayout*Label.shadowWidth: 0
+ *filesLayout.layout: vertical { \
+ imlistGroup < +inf -inf * > \
+ 3 \
+ horizontal { -5 imoptsGroup < +inf -inf * > -5 } \
+ -1 \
+ loadCmdGroup < +inf -inf * > \
+ }
+
+ *imlistGroup.label:
+ *imlistGroup.frameWidth: 2
+ *imlistGroup.outerOffset: 2
+ *imlistLayout*Label.shadowWidth: 0
+ *imlistLayout*Label.justify: left
+ *imlistLayout*Command.width: 90
+ *imlistLayout*Command.height: 23
+ *imlistLayout*Command.shadowWidth: 1
+ *imlistLayout*Viewport.allowVert: True
+ *imlistLayout*Viewport.allowHoriz True
+ *imlistLayout*Viewport.useRight: True
+ *imlistLayout*Viewport.useBottom: True
+ *imlistLayout*Viewport.resizeable: True
+ *imlistLayout*Scrollbar.height: 17
+ *imlistLayout*Scrollbar.width: 17
+ *imlistLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ rootButton < +inf -inf * > 1 \
+ homeButton < +inf -inf * > 1 \
+ upButton < +inf -inf * > 1 \
+ rescanButton < +inf -inf * > \
+ 3 \
+ imtemplateLabel 3 imtemplateFrame < +inf -inf * > \
+ 3 \
+ } \
+ 5 \
+ horizontal { 1 imlistLabel < +inf -inf * > 1 } \
+ imlistFrame < +inf -inf * +inf -inf > \
+ 3 \
+ dirLabel < +inf -inf * > \
+ 3 \
+ horizontal { 5 fnameLabel 5 filnamFrame < +inf -inf * > } \
+ 3 \
+ }
+ *imtemplateLabel.label: Filter:
+ *imtemplateText*editType: edit
+ *imtemplateText*height: 23
+ *imtemplateText*font: 7x13
+ !*imageList.width: 100
+ *imageList*height: 140
+ *imageList.shadeSurplus: False
+ *imageList.defaultColumns: 3
+ *imageList.font: 7x13
+ *imlistView.resizeable: True
+ *imlistLabel.height: 0
+ *imlistLabel.label: xxx
+ *imlistLabel.justify: left
+ *imlistLabel.font: *lucida-bold-r*10*
+ *upButton.label: Up
+ *rootButton.label: Root
+ *homeButton.label: Home
+ *rescanButton.label: Rescan
+ *dirLabel.label: \ \ Directory:
+ *dirLabel.alignment: left
+ *fnameLabel.label: Load File:
+ *fnameText*editType: edit
+ *fnameText.height: 22
+
+ *imoptsGroup.label: Options
+ *imoptsGroup.frameWidth: 2
+ *imoptsGroup.outerOffset: 7
+ *imoptsGroup*offIcon: square0s
+ *imoptsGroup*onIcon: square1s
+ *imoptsGroup*highlightColor: yellow
+ *imoptsLayout*Label.shadowWidth: 0
+ *imoptsLayout*Label.justify: left
+ *imoptsLayout.layout: vertical { \
+ 3 \
+ horizontal { \
+ 3 \
+ autoload 6 grayscale \
+ 3 < +inf > \
+ browseHdrs \
+ 3 < +inf > \
+ frameLabel 2 frameFrame \
+ 3 \
+ } \
+ 6 \
+ horizontal { \
+ 3 \
+ zscale 6 zrange \
+ 3 \
+ z1Label z1Frame < +inf * > 2 \
+ z2Label z2Frame < +inf * > 2 \
+ nsampLabel nsampFrame < +inf * > \
+ 3 \
+ } \
+ 3 \
+ }
+ *grayscale.label: Auto Grayscale
+ *grayscale.location: 0 0 100 22
+ *autoload.label: Auto Load
+ *autoload.location: 0 0 80 22
+ *autoload.on: True
+ *browseHdrs.label: List Image Headers
+ *browseHdrs.location: 0 0 120 22
+ *browseHdrs.on: False
+ *zscale.label: Zscale
+ *zscale.location: 0 0 60 22
+ *zrange.label: Zrange
+ *zrange.location: 0 0 60 22
+ *z1Label.label: z1
+ *z1Value*width: 60
+ *z1Value*height: 22
+ *z1Value*editType: edit
+ *z2Label.label: z2
+ *z2Value*width: 60
+ *z2Value*height: 22
+ *z2Value*editType: edit
+ *nsampLabel.label: Nsample
+ *nsampValue*width: 60
+ *nsampValue*height: 22
+ *nsampValue*editType: edit
+ *frameLabel.label: Frame:\
+ *frameFrame.width: 50
+ *frameFrame.resize: False
+ *frameFrame.label: Current
+ *frameFrame.font: 6x13
+ *frameFrame.menuName: loadFrames
+
+
+ *loadCmdGroup.label:
+ *loadCmdGroup*frameWidth: 2
+ *loadCmdGroup*outerOffset: 5
+ *loadCmdGroup.outerOffset: 2
+ *loadCmdGroup*innerOffset: 5
+ *loadCmdGroup.frameType: sunken
+ *loadCmdGroup.label:
+ *loadCmdGroup.location: 0 0 400 45
+ *loadCmdLayout*Command.internalWidth: 12
+ *loadCmdLayout.layout: horizontal { \
+ 2 \
+ filesLoadButton \
+ 1 < +inf > \
+ filesStatus \
+ 2 \
+ }
+ *filesLoadButton.label: Load
+ *filesStatus.label:
+}
+
+
+
+set Resources(save_panel) { \
+
+ !=====================================
+ ! Save Setup Panel resources. !
+ !=====================================
+ *save_panel*TextToggle.alignment: left
+ *save_panel*TextToggle.frameWidth: 0
+ *save_panel*TextToggle.height: 20
+ *save_panel*Label.borderWidth: 0
+ *save_panel*Label.shadowWidth: 0
+ *save_panel*TextButton.width: 80
+
+ *saveLayout.borderWidth: 0
+ *saveLayout.layout: vertical { \
+ saveNameGroup < +inf * > \
+ saveOptGroup < +inf -inf * > -3 \
+ saveCmdGroup < +inf * > \
+ }
+
+ ! Save Name Group resources.
+ !----------------------------------
+ *saveNameGroup.borderWidth: 0
+ *saveNameGroup.outerOffset: 5
+ *saveNameGroup.label:
+ *saveNameGroup.location: 0 0 400 50
+ *saveNameGroup*offIcon: diamond0s
+ *saveNameGroup*onIcon: diamond1s
+ *saveNameGroup*highlightColor: cyan
+ *saveNameGroup*Frame.frameType: sunken
+ *saveNameGroup*Frame.frameWidth: 1
+ *saveNameGroup*Label.justify: right
+ *saveNameGroup*Text*editType: edit
+ *saveNameGroup*shadowWidth: 0
+ *saveNameGroup*borderWidth: 0
+ *saveNameLayout.borderWidth: 0
+ *saveNameLayout.layout: vertical { \
+ 2 \
+ horizontal { 5 saveLabel 5 fnameFrame < +inf -inf * > 5 } \
+ 2 \
+ }
+ *saveLabel.label: File Name:
+ *saveFile.height: 22
+
+ ! Main options groups layout resources.
+ !---------------------------------------
+ *saveOptGroup.frameWidth: 2
+ *saveOptGroup.frameType: chiseled
+ *saveOptGroup.label:
+ *saveOptGroup.location: 0 0 400 140
+ *saveOptGroup.outerOffset: 5
+ *saveOptGroup.innerOffset: 0
+ *saveOptLayout*borderWidth: 0
+ *saveOptLayout.layout: horizontal { \
+ -1 \
+ vertical { 5 < -5 > fmtGroup < +inf * +inf > -1 } \
+ -1 \
+ vertical { \
+ 10 < -10 > \
+ saveDataBox < +inff -inff * +inff -inff > \
+ 5 < -5 > \
+ } \
+ -1 \
+ vertical { 5 < -5 > saveColorGroup < +inf * +inf > -1 } \
+ -1 \
+ }
+
+ ! Output color box resources.
+ ! ------------------------------
+ *saveColorGroup.location: 0 0 140 120
+ *saveColorGroup.outerOffset: 7
+ *saveColorGroup.frameWidth: 2
+ *saveColorGroup*offIcon: diamond0s
+ *saveColorGroup*onIcon: diamond1s
+ *saveColorGroup*highlightColor: cyan
+ *saveColorGroup.innerOffset: 5
+ *saveColorGroup.label: Output Color
+ *saveColorGroup*TextToggle.width: 110
+ *saveColor.frameWidth: 2
+ *saveColor.layout: horizontal { \
+ 3 \
+ vertical { 5 svGrayButton 2 svPseudoButton 2 svRGBButton -1 } \
+ -1 \
+ }
+ *svGrayButton.label: Grayscale
+ *svPseudoButton.label: PseudoColor
+ *svRGBButton.label: RGB
+
+ *saveDataBox.frameType: sunken
+ *saveDataBox.frameWidth: 1
+
+
+ ! Output format box resources.
+ ! -----------------------------------
+ *fmtGroup.location: 0 0 140 120
+ *fmtGroup.outerOffset: 7
+ *fmtGroup.frameWidth: 2
+ *fmtGroup*offIcon: diamond0s
+ *fmtGroup*onIcon: diamond1s
+ *fmtGroup*TextToggle.width: 55
+ *fmtGroup*highlightColor: cyan
+ *fmtGroup.label: File Format
+ *formats.layout: horizontal { \
+ 3 \
+ vertical { 5 fitsButton 2 gifButton 2 tiffButton 2 rawButton 1 } \
+ 2 < -2 > \
+ vertical { 5 epsButton 2 rasButton 2 x11Button 2 jpegButton 1 } \
+ -1 \
+ }
+ *rasButton.label: RAS
+ *gifButton.label: GIF
+ *jpegButton.label: JPEG
+ *tiffButton.label: TIFF
+ *fitsButton.label: FITS
+ *x11Button.label: X11
+ *epsButton.label: EPS
+ *rawButton.label: Raw
+
+ ! Change the sensitivity once these formats are implemented. !
+ !-------------------------------------------------------------
+ *jpegButton.sensitive: False
+ *x11Button.sensitive: False
+ *rawButton.sensitive: False
+
+
+ ! Panel command resources.
+ ! ------------------------------
+ *saveCmdLayout.borderWidth: 0
+ *saveCmdGroup.frameType: chiseled
+ *saveCmdGroup.frameWidth: 2
+ *saveCmdGroup.outerOffset: 5
+ *saveCmdGroup.innerOffset: 5
+ *saveCmdGroup.label:
+ *saveCmdGroup.location: 0 0 400 50
+ *saveCmdLayout*Command.internalWidth: 12
+ *saveCmdLayout.layout: horizontal { \
+ 2 \
+ okaySave 1 < +inf -1 > saveStatus < +inf -inf * > \
+ 2 \
+ }
+ *okaySave.label: Save
+}
+
+
+set Resources(tile_panel) { \
+
+ *tileOpts.frameType: chiseled
+ *tileOpts.frameWidth: 2
+ *tileOpts.outerOffset: 5
+ *tileOpts.innerOffset: 7
+ *tileOpts*shrinkToFit: True
+ *tileOpts*borderWidth: 0
+
+ *toptLayout.layout: vertical { \
+ horizontal { -6 tFramesG < +inf -inf * > -6 } \
+ horizontal { \
+ -1 \
+ horizontal { -6 tileMode < * +inf -inf > -6 } \
+ vertical { \
+ horizontal { -3 userOrientG < +inf -inf * > -3 } \
+ horizontal { -3 fillStyle < +inf -inf * > -3 } \
+ horizontal { -3 tileLabel < +inf -inf * > -3 } \
+ -7 \
+ horizontal { -3 geomFrame < +inf -inf * > -3 } \
+ } \
+ -1 \
+ } \
+ -4 \
+ }
+ *tileMode.label: Tile Mode
+ *tileMode.outerOffset: 7
+ *tileMode.innerOffset: 5
+ *tileMode*location: 0 0 150 20
+ *tileMode*TextToggle.outerOffset: 2
+ *tileMode*TextToggle.innerOffset: 1
+ *tileMode*TextToggle.frameWidth: 0
+ *tileMode*TextToggle.leftMargin: 10
+ *tileMode*TextToggle.rightMargin: 20
+ *tileMode*TextToggle.onIcon: diamond1s
+ *tileMode*TextToggle.offIcon: diamond0s
+ *tileMode*TextToggle.highlightColor: yellow
+
+ *tileDisabled.label: Disabled
+ *tileManual.label: Manual
+ *tileBest.label: Best
+ *tileSquare.label: Square
+ *tileHorizontal.label: Horizontal
+ *tileVertical.label: Vertical
+ *tileRow.label: One Row
+ *tileCol.label: One Column
+
+ *fillStyle.label: Fill Style
+ *fillStyle.location: 0 0 160 30
+ *fillStyle.outerOffset: 7
+ *fillStyle.innerOffset: 5
+ *fillStyle.rows: 1
+ *fillStyle*selectionStyle: multi
+ *fillStyle*outerOffset: 0
+ *fillStyle*innerOffset: 1
+ *fillStyle*leftMargin: 7
+ *fillStyle*onIcon: square1s
+ *fillStyle*offIcon: square0s
+ *fillStyle*highlightColor: yellow
+ *fillStyle.TextToggle.frameWidth: 0
+ *fillStyle.TextToggle.location: 0 0 85 23
+ *byCols.label: Fill by Columns
+ *bottomUp.label: Fill from Bottom
+
+ *tileLabel.label: Tile Labels
+ *tileLabel.location: 0 0 175 30
+ *tileLabel.outerOffset: 7
+ *tileLabel.innerOffset: 5
+ *tileLabel.rows: 1
+ *tileLabel*selection: -1
+ *tileLabel*outerOffset: 0
+ *tileLabel*innerOffset: 1
+ *tileLabel*leftMargin: 7
+ *tileLabel*onIcon: square1s
+ *tileLabel*offIcon: square0s
+ *tileLabel*highlightColor: yellow
+ *tileLabel.TextToggle.frameWidth: 0
+ *tileLabel.TextToggle.location: 0 0 85 23
+ *labelFrames.label: Frameno
+ *labelImname.label: Img Name
+ *labelTitles.label: Img Title
+
+ *geomFrame.frameWidth: 0
+ *geomFrame.frameType: sunken
+ *geomFrame.outerOffset: 7
+ *geomFrame.innerOffset: 4
+ *tileGeometry.width: 220
+ *tileGeometry.height; 37
+ *tileGeometry.background: #c4c4c4
+ *tileGeometry.font: 7x13bold
+ *tileGeometry.label: Tile Geometry: 1 x 2
+
+ *userOrientG.label: Manual Configuration
+ *userOrientG.height: 90
+ *userOrientG.width: 220
+ *userOrientG.outerOffset: 7
+ *userOrientG.innerOffset: 5
+ *userOrientG.shrinkToFit: True
+ *userOrientG*Frame.frameWidth: 1
+ *userOrientG*Frame.frameType: sunken
+ *userOrientG*Text.height: 21
+ *userOrientG*Text*editType: edit
+ *userOrientL.borderWidth: 0
+ *userOrientL.layout: vertical { \
+ 1 \
+ horizontal { 18 nrowLab < +50% -inf * > nrFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { ncolLab < +50% -inf * > ncFrame < +inf -inf * > 5 } \
+ }
+ *nrowLab.justify: right
+ *ncolLab.justify: right
+
+ *nrLayout.layout: horizontal {nrdecrease nrtext < +inf -inf * > nrincrease}
+ *nrdecrease.direction: left
+ *nrincrease.direction: right
+ *nrowLab.label: Tile Rows:
+ *nrtext.background: #adadad
+ *nrtext.justify: center
+ *nrtext.font: 7x13bold
+ *nrtext.label: 1
+
+ *ncLayout.layout: horizontal {ncdecrease nctext < +inf -inf * > ncincrease}
+ *ncdecrease.direction: left
+ *ncincrease.direction: right
+ *ncolLab.label: Tile Columns:
+ *nctext.background: #adadad
+ *nctext.justify: center
+ *nctext.font: 7x13bold
+ *nctext.label: 2
+
+ *tFramesG.label: Tile Frames
+ *tFramesG.outerOffset: 7
+ *tFramesG.innerOffset: 7
+ *tFrames.borderWidth: 0
+ *tFrames*Toggle.height: 17
+ *tFrames.layout: horizontal { \
+ tAll \
+ 2 \
+ tFrame1 tFrame2 tFrame3 tFrame4 tFrame5 \
+ tFrame6 tFrame7 tFrame8 tFrame9 tFrame10 \
+ tFrame11 tFrame12 tFrame13 tFrame14 tFrame15 tFrame16 \
+ 2 \
+ tNone \
+ }
+ *tAll.label: All\
+ *tNone.label: None
+}
+
+
+set Resources(wcs_panel) { \
+
+ !--------------------
+ ! WCS Readout Panel
+ !--------------------
+ *wcsGroup*TextToggle.offIcon: square0s
+ *wcsGroup*TextToggle.onIcon: square1s
+
+ !*wcsLayout*TextToggle.location: 0 0 160 23
+ *wcsLayout*TextToggle.height: 23
+ *wcsLayout*TextToggle.outerOffset: 0
+ *wcsLayout*Layout.borderWidth: 0
+ *wcsLayout.borderWidth: 0
+ *wcsLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ wcsGroup < +inf -inf * > \
+ 5 \
+ horizontal { -1 wcsOptGroup < +inf -inf * > -1 } \
+ -2 \
+ }
+
+ *wcsOptGroup.label:
+ *wcsOptGroup.outerOffset: 0
+ *wcsOptGroup.innerOffset: 5
+ *wcsOptGroup.frameType: chiseled
+ *wcsOptGroup.frameWidth: 0
+ *wcsOptLayout.layout: vertical { \
+ horizontal { -9 wcsCoords < +inf -inf * > -9 } \
+ -3 \
+ horizontal { -5 wcsOpts < +inf -inf * > -5 } \
+ horizontal { -5 wcsIsmGroup < +inf -inf * > -5 } \
+ 1 \
+ }
+
+ *wcsOpts.label:
+ *wcsOpts.width: 265
+ *wcsOpts.height: 40
+ *wcsOpts.outerOffset: 3
+ *wcsOpts.innerOffset: 3
+ *woLayout*TextToggle.frameWidth: 0
+ *woLayout*TextToggle.onIcon: square1s
+ *woLayout*TextToggle.offIcon: square0s
+ *woLayout*TextToggle.highlightColor: cyan
+ *woLayout*TextToggle.alignment: left
+ *woLayout*TextToggle.leftMargin: 5
+ *woLayout.layout: horizontal { \
+ 3 \
+ woptLabels < +inf -inf * > 2 \
+ woptTitles < +inf -inf * > 2 \
+ woptFBinfo < +inf -inf * > 2 \
+ woptBPM < +inf -inf * > \
+ 3 \
+ }
+ *woptLabels.label: WCS Labels
+ *woptLabels.on: True
+ *woptTitles.label: Image Titles
+ *woptTitles.on: True
+ *woptFBinfo.label: Frame Buffer Info
+ *woptFBinfo.on: True
+ *woptBPM.label: BPM Data
+ *woptBPM.on: False
+ *woptLabels.location: 0 0 150 21
+ *woptTitles.location: 0 0 150 21
+ *woptFBinfo.location: 0 0 175 21
+ *woptBPM.location: 0 0 120 21
+
+
+ *wcsCoords.label: Readout Values
+ *wcsCoords.width: 265
+ *wcsCoords.height: 135
+ *wcsCoords.outerOffset: 7
+ *wcsCoords.innerOffset: 3
+ *wcLayout*TextToggle.offIcon: diamond0s
+ *wcLayout*TextToggle.onIcon: diamond1s
+ *wcLayout*TextToggle.highlightColor: yellow2
+ *wcLayout*TextToggle.shrinkToFit: True
+ *wcLayout*TextToggle.frameWidth: 0
+ *wcLayout*TextToggle.label:
+ *wcLayout*TextToggle.on: True
+ *wcLayout*Label.justify: right
+ *wcLayout*Label.font: 7x13bold
+ *wcLayout*SimpleMenu.borderColor: black
+ *wcLayout*SimpleMenu.borderWidth: 1
+ *wcLayout*SimpleMenu.foreground: White
+ *wcLayout*SimpleMenu.background: SteelBlue
+ *wcLayout*MenuButton.shadowWidth: 1
+ *wcLayout*MenuButton.resize: False
+ *wcLayout.layout: vertical {\
+ 1 \
+ horizontal { 20 < -20 > wcTitle < +inf -inf * > 20 < -20 > }\
+ 1 \
+ horizontal { 5 wcLine < +inf -inf * > 5 } \
+ 5 \
+ horizontal { \
+ 10 \
+ vertical { 2 wlWcs1 2 wlWcs2 2 wlWcs3 2 wlWcs4 2 } 5 \
+ vertical { 1 sysWcs1 1 sysWcs2 1 sysWcs3 1 sysWcs4 1 } 5 \
+ vertical { 1 fmtWcs1 1 fmtWcs2 1 fmtWcs3 1 fmtWcs4 1 } 20 \
+ vertical { 1 wpWcs1 3 wpWcs2 3 wpWcs3 3 wpWcs4 3 } 20 \
+ vertical { 1 wiWcs1 3 wiWcs2 3 wiWcs3 3 wiWcs4 3 } 15 \
+ } \
+ 3 \
+ }
+ *wcTitle.label: Type\ \ \ \ \ \ \ \ \ \ Format\ \ \ \ \ \ Panel\ ImgWin
+
+ *wcLine.height: 2
+ *wcLine.frameWidth: 2
+ *wcLine.frameType: ledged
+
+ *wlWcs1.label: First WCS
+ *wlWcs2.label: Second WCS
+ *wlWcs3.label: Third WCS
+ *wlWcs4.label: Fourth WCS
+ *sysWcs1.label: \ Image Display\
+ *sysWcs1.menuName: sysMenu1
+ *sysWcs2.label: None
+ *sysWcs2.menuName: sysMenu2
+ *sysWcs3.label: None
+ *sysWcs3.menuName: sysMenu3
+ *sysWcs4.label: None
+ *sysWcs4.menuName: sysMenu4
+ *fmtWcs1.label: \ Sexigesimal\
+ *fmtWcs1.menuName: fmtMenu1
+ *fmtWcs2.label: None
+ *fmtWcs2.menuName: fmtMenu2
+ *fmtWcs3.label: None
+ *fmtWcs3.menuName: fmtMenu3
+ *fmtWcs4.label: None
+ *fmtWcs4.menuName: fmtMenu4
+
+ *editMenu fmtWcsMenu$i fmtWcs$i $items
+
+ *wcsIsmGroup.label:
+ *wcsIsmGroup.width: 395
+ *wcsIsmGroup.height: 50
+ *wcsIsmGroup.outerOffset: 3
+ *wcsIsmGroup.innerOffset: 5
+ *wcsIsmGroup*borderWidth: 0
+ *wcsIsmLayout.layout: horizontal { \
+ wcsIsmLabel 1 wcsIsmFrame < +inf -inf * > 3 wcsIsmInit 1 \
+ }
+ *wcsIsmLabel.label: ISM Command
+ *wcsIsmFrame.frameType: sunken
+ *wcsIsmFrame.frameWidth: 1
+ *wcsIsmFrame.outerOffset: 1
+ *wcsIsmFrame*height: 23
+ *wcsIsmCmd*editType: edit
+ *wcsIsmCmd.displayCaret: True
+ *wcsIsmInit.label: Initialize
+ *wcsIsmInit.internalWidth: 7
+
+ *wcsBox*borderWidth: 0
+ *wcsBox*TextToggle.frameType: raised
+ *wcsBox*TextToggle.frameWidth: 1
+ *wcsBox*TextToggle.leftMargin: 2
+ *wcsBox*borderWidth: 0
+ *wcsBox.layout: vertical { \
+ wcsFrame < +inf -inf * > \
+ 2 \
+ horizontal { \
+ 2 \
+ ismToggle < +inf -inf * > 2 \
+ pixelTable < +inf -inf * > 2 \
+ imageHeader < +inf -inf * > 2 \
+ compass < +inf -inf * > 2 \
+ wcsOptions < +inf -inf * > \
+ 2 \
+ } \
+ }
+ *ismToggle.label: ISM Mod
+ *ismToggle.label: WCS/Pix
+ *pixelTable.label: Pix Table
+ *imageHeader.label: Header
+ *imageHeader.sensitive: False
+ *compass.label: Compass
+ *wcsOptions.label: Options
+
+ *wcsGroup.label:
+ *wcsGroup.outerOffset: 0
+ *wcsGroup.innerOffset: 5
+ *wcsGroup.frameType: chiseled
+ *wcsGroup.frameWidth: 2
+ *wcsGroup*Text*width: 260
+ *wcsGroup*Text*height: 17
+ *wcsGroup*Text*font: 7x13
+ *wcsGroup*Text*displayCaret: False
+ *wcsGroup*Text*editType: read
+ *wcsGroup*Text*background: black
+ *wcsGroup*Text*foreground: yellow2
+ *wcsGroup*TextToggle.highlightColor: cyan
+ *wcsFrame.frameType: sunken
+ *wcsFrame.frameWidth: 1
+ *wcsText*background: yellow4
+ *wcsText.layout: vertical { \
+ wtName < +inf -inf * > -3 \
+ wtTitle < +inf -inf * > -3 \
+ wtFBCfg < +inf -inf * > \
+ 1 < -1 > \
+ wtWcs1 < +inf -inf * > -3 \
+ wtWcs2 < +inf -inf * > -3 \
+ wtWcs3 < +inf -inf * > -3 \
+ wtWcs4 < +inf -inf * > \
+ 1 < -1 > \
+ horizontal { \
+ wtIPixval < +inf -inf * +inf > 1 \
+ wtSPixval < +inf -inf * +inf > 1 \
+ wtBPixval < +inf -inf * +inf > \
+ } \
+ }
+}
+
+
+set Resources(blink_panel) { \
+
+ *blink_panel.geometry: 425x200
+ *blink_panel.title: Blink/Register Frames
+
+ *brMenuBar*Command.internalHeight: 4
+ *brMenuBar*Command.internalWidth: 12
+ *brMenuBar*Command.height: 27
+ *brMenuBar*borderWidth: 0
+
+ *brMenuBar*Label.font: 7x13bold
+ *brLayout*Command.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brRegButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brReset.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brMatchButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brBlinkButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+ *brAregButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1
+
+
+ *brMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> brClose 5 } \
+ 5 < -5 > \
+ }
+ *brClose.label: Dismiss
+
+ *brMenuFrame.frameType: raised
+ *brMenuFrame.frameWidth: 2
+ *bpLayout.layout: vertical { \
+ brMenuFrame < +inf -inf * > \
+ 1 < -1 > \
+ brFrame < +inf -inf * +inf -inf > \
+ }
+
+ *brFrame.frameType: chiseled
+ *brFrame.frameWidth: 2
+ *brFrame.outerOffset: 4
+ *brFrame.innerOffset: 4
+
+ *brLayout.borderWidth: 0
+ *brLayout.layout: vertical { \
+ 3 < -3 > \
+ horizontal { -3 brFramesG < +inf -inf * > -3 } \
+ -5 \
+ horizontal { -3 brCmdG < +inf -inf * +inf -inf > -3 } \
+ -5 \
+ }
+
+ *brCmdG.label:
+ *brCmdG.outerOffset: 7
+ *brCmdG.innerOffset: 7
+ *brCmdG*borderWidth: 0
+ *brCmd.layout: horizontal { \
+ 2 \
+ vertical { \
+ 2 \
+ horizontal { \
+ 2 \
+ brRateLabel \
+ 2 \
+ brBRframe < +inf -inf * >\
+ 4 \
+ brReset \
+ 2 \
+ } \
+ 8 < -8 > \
+ horizontal { \
+ 4 \
+ brMatchButton < +inf -inf * > \
+ 5 < -5 > \
+ brRegButton < +inf -inf * > \
+ 2 \
+ } \
+ 1 < +inf > \
+ } \
+ 10 \
+ vertical { \
+ 2 \
+ brBlinkButton < +inf * > \
+ 10 < -10 > \
+ brAregButton < +inf * > \
+ 1 < +inf > \
+ } \
+ 2 \
+ }
+
+ *brFramesG.label: Frames List
+ *brFramesG.outerOffset: 7
+ *brFramesG.innerOffset: 7
+ *brFramesG*SimpleMenu.borderColor: black
+ *brFramesG*SimpleMenu.borderWidth: 1
+ *brFramesG*SimpleMenu.foreground: White
+ *brFramesG*SimpleMenu.background: SteelBlue
+
+ *brFrames.borderWidth: 0
+ *brFrames.layout: horizontal { \
+ 5 < +inf > \
+ brFrame1 < +inf * > 1 \
+ brFrame2 < +inf * > 1 \
+ brFrame3 < +inf * > 1 \
+ brFrame4 < +inf * > 1 \
+ brFrame5 < +inf * > 1 \
+ brFrame6 < +inf * > 1 \
+ brFrame7 < +inf * > 1 \
+ brFrame8 < +inf * > 1 \
+ brFrame9 < +inf * > 1 \
+ brFrame10 < +inf * > 1 \
+ brFrame11 < +inf * > 1 \
+ brFrame12 < +inf * > 1 \
+ brFrame13 < +inf * > 1 \
+ brFrame14 < +inf * > 1 \
+ brFrame15 < +inf * > 1 \
+ brFrame16 < +inf * > \
+ 5 < +inf > \
+ }
+
+ *brBRlayout.layout: horizontal { \
+ brBRdecrease \
+ brBRtext < +inf -100% * > \
+ brBRincrease \
+ }
+
+ *blink_panel*TextToggle.location: 0 0 110 23
+ *blink_panel*TextToggle.frameWidth: 1
+ *blink_panel*TextToggle.highlightColor: yellow
+ *blink_panel*TextToggle.offIcon: square0s
+ *blink_panel*TextToggle.onIcon: square1s
+ *blink_panel*TextToggle.outerOffset: 0
+ *blink_panel*TextToggle.innerOffset: 2
+ *blink_panel*Command.height: 23
+ *blink_panel*Arrow.width: 16
+ *blink_panel*Arrow.height: 20
+
+
+ *brFramesLabel.label: Frames:
+ *brFrame1.menuName: frame1Menu
+ *brFrame2.menuName: frame2Menu
+ *brFrame3.menuName: frame3Menu
+ *brFrame4.menuName: frame4Menu
+ *brFrame5.menuName: frame5Menu
+ *brFrame6.menuName: frame6Menu
+ *brFrame7.menuName: frame7Menu
+ *brFrame8.menuName: frame8Menu
+ *brFrame9.menuName: frame9Menu
+ *brFrame10.menuName: frame10Menu
+ *brFrame11.menuName: frame11Menu
+ *brFrame12.menuName: frame12Menu
+ *brFrame13.menuName: frame13Menu
+ *brFrame14.menuName: frame14Menu
+ *brFrame15.menuName: frame15Menu
+ *brFrame16.menuName: frame16Menu
+ *brReset.label: Reset
+
+ *brRateLabel.label: Rate:
+ *brBRframe.frameType: sunken
+ *brBRframe.frameWidth: 1
+ *brBRtext.width: 40
+ *brBRtext.height: 23
+ *brBRdecrease.direction: left
+ *brBRincrease.direction: right
+ *brRegButton.label: Register
+ *brMatchButton.label: Match LUTs
+ *brBlinkButton.label: Blink
+ *brAregButton.label: Auto-Register
+}
+
+
+set Resources(hdr_panel) { \
+
+ *hdr_panel.geometry: 550x600
+ *hdr_panel.title: Image Header
+
+ *hdr_panel*SimpleMenu.borderColor: black
+ *hdr_panel*SimpleMenu.borderWidth: 1
+ *hdr_panel*SimpleMenu.foreground: White
+ *hdr_panel*SimpleMenu.background: SteelBlue
+
+ *hdrMenuFrame.frameType: raised
+ *hdrMenuFrame.frameWidth: 2
+ *hdrLayout.layout: vertical { \
+ hdrMenuFrame < +inf -inf * > \
+ hdrObjGroup < +inf -inf * > \
+ hdrTabFrame < +inf -inf * +inf -inf> \
+ }
+
+ *hdrMenuBar*borderWidth: 0
+ *hdrMenuBar*Command.internalHeight: 5
+ *hdrMenuBar*Command.internalWidth: 12
+ *hdrMenuBar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 10 < +inf -10> hdrClose 7 } \
+ 5 < -5 > \
+ }
+ *hdrClose.label: Dismiss
+
+ *hdrObjGroup.label:
+ *hdrObjGroup.outerOffset: 7
+ *hdrObjGroup.innerOffset: 4
+ *hdrObjLayout.borderWidth: 0
+ *hdrObjLayout.layout: vertical { \
+ horizontal { hdrObjLabel 2 hdrObjMenu < +inf -inf * > 2 } \
+ }
+ *hdrObjLabel.label: Image Name:
+ *hdrObjMenu.label:
+ *hdrObjMenu.justify: left
+ *hdrObjMenu.font: 7x13
+ *hdrObjMenu.menuName: objMenu
+ *hdrObjMenu.internalWidth: 5
+ *hdrObjMenu.internalHeight: 1
+ *hdrObjMenu.shadowWidth: 1
+
+ *hdrHdrGroup.tabLabel: Image Header
+ *hdrHdrGroup.label:
+ *hdrHdrGroup.outerOffset: 7
+ *hdrHdrGroup.innerOffset: 5
+ *hdrHdrLayout.borderWidth: 0
+ *hdrHdrLayout.layout: vertical { \
+ horizontal { \
+ hdrFilter 2 hFindFrame < +inf -inf * > 2 hdrFind 1 hdrClear \
+ } \
+ 5 \
+ hdrText < +inf -inf * +inf -inf > \
+ }
+ *hFindEntry*editType: edit
+ *hFindEntry*font: 7x13
+ *hFindEntry*displayCaret: True
+ *hFindEntry*width: 150
+ *hFindFrame.frameWidth: 1
+ *hFindFrame*borderWidth: 0
+ *hFindFrame.frameType: sunken
+ *hFindFrame.width: 150
+ *hFindFrame.height: 23
+ *hdrFilter.label: Keyword Filter
+ *hdrFind.label: Search
+ *hdrClear.label: Clear
+
+ ! Resources if the header text widget is AsciiText
+! *hdrText*scrollVertical: Always
+! *hdrText*scrollHorizontal: Always
+! *hdrText*editType: edit
+! *hdrText*font: 7x13
+! *hdrText*background: #c4c4c4
+! *hdrText*displayCaret: False
+! *hdrText*bottomMargin: 10
+! *hdrText*Scrollbar.width: 15
+! *hdrText*Scrollbar.height: 15
+
+ ! Resources if the header text widget is HTML
+ *hdrText.width: 600
+ *hdrText.height: 500
+ *hdrText.anchorUnderlines: 1
+ *hdrText.visitedAnchorUnderlines: 1
+ *hdrText.verticalScrollOnRight: True
+ *hdrText.plainFont: 7x13
+ *hdrText.marginWidth: 5
+ *hdrText.marginHeight: 5
+
+
+ *hdrWcsGroup.tabLabel: Image WCS Info
+ *hdrWcsGroup.label:
+ *hdrWcsGroup.outerOffset: 5
+ *hdrWcsGroup.innerOffset: 5
+ *hdrWcsGroup*Text*scrollVertical: whenNeeded
+ *hdrWcsGroup*Text*scrollHorizontal: whenNeeded
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*displayCaret: False
+ *hdrWcsGroup*Text*borderWidth: 0
+ *hdrWcsGroup*Text*editType: edit
+ *hdrWcsGroup*Text*font: 7x13
+ *hdrWcsGroup*Text*Scrollbar.width: 15
+ *hdrWcsGroup*Text*Scrollbar.height: 15
+ *hdrWcsLayout.borderWidth: 0
+ *hdrWcsLayout.layout: vertical { \
+ 2 < -2 > \
+ hdrInfoGroup < +inf -inf * > \
+ 2 < -2 > \
+ hdrKeywGroup < +inf -inf * +inf -inf > \
+ -4 \
+ }
+ *hdrInfoGroup.label: Basic WCS Information
+ *hdrInfoGroup.outerOffset: 7
+ *hdrInfoGroup.innerOffset: 0
+ *hdrIGFrame.frameType: sunken
+ *hdrIGFrame.frameWidth: 1
+ *hdrIGText.height: 130
+! *hdrIGText*background: black
+! *hdrIGText*foreground: yellow2
+ *hdrIGText*background: #adadad
+ *hdrIGText*foreground: black
+ *hdrWcsGroup*hdrIGText*scrollVertical: never
+ *hdrWcsGroup*hdrIGText*scrollHorizontal: never
+ *hdrWcsGroup*hdrIGText*font: 7x13
+ *hdrKeywGroup.label: WCS Header Keywords
+ *hdrKeywGroup.outerOffset: 7
+ *hdrKeywGroup.innerOffset: 5
+ *hdrKGFrame.frameType: sunken
+ *hdrKGFrame.frameWidth: 1
+ *hdrKGText*background: #c4c4c4
+ *hdrKGText*bottomMargin: 10
+
+ *hdrIGText*background: #c4c4c4
+ *hdrIGFrame.frameWidth: 0
+}
+
+
+set Resources(pixel_table) { \
+
+ *pixel_panel.title: Image Pixel Table
+ *pixel_panel*SimpleMenu.borderWidth: 1
+ *pixel_panel*SimpleMenu.borderColor: black
+ *pixel_panel*SimpleMenu.foreground: White
+ *pixel_panel*SimpleMenu.background: SteelBlue
+
+ *pixtabMenuBar*borderWidth: 0
+ *pixtabMenuBar*Command.internalHeight: 4
+ *pixtabMenuBar*Command.internalWidth: 12
+ *pixtabMenuBar.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ pixtabSize 10 < +inf -10> pixtabHelp 5 pixtabClose \
+ 7 \
+ } \
+ 5 \
+ }
+ *pixtabSize.label: Size
+ *pixtabSize.menuName: pixtabMenu
+ *pixtabHelp.label: Help
+ *pixtabHelp.sensitive: False
+ *pixtabClose.label: Dismiss
+
+ *pixtabMenuFrame.frameType: raised
+ *pixtabMenuFrame.frameWidth: 2
+ *pixel_table.layout: vertical { \
+ 1 \
+ pixtabMenuFrame < +inf -inf * > \
+ 1 \
+ pixtabFrame < +inf -inf * +inf -inf > \
+ 1 \
+ }
+
+
+ *pixtabFrame.frameType: raised
+ *pixtabFrame.frameWidth: 0
+ *pixtabFrame*borderWidth: 0
+ *pixtabFrame*font: 6x10
+ *pixtabFrame*MultiList.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*Label.font: -*-helvetica-medium-r-normal-*-10-*
+ *pixtabFrame*TextToggle.font: -*-helvetica-medium-r-normal-*-10-*
+
+ *pixtabFrame*MultiList.forceColumns: True
+ *pixtabFrame*MultiList.defaultColumns: 5
+ *pixtabFrame*MultiList.shadeSurplus: False
+ *pixtabFrame*MultiList.borderWidth: 0
+ *pixtabFrame*MultiList.rowHeight: 25
+ *pixtabFrame*MultiList.rowSpacing: 7
+ *pixtabFrame*MultiList.internalWidth: 7
+ *pixtabFrame*MultiList.internalHeight: 4
+ *pixtabFrame*MultiList.width: 410
+ *pixtabFrame*MultiList.height: 160
+ *pixtabFrame*MultiList.columnWidth: 50
+ *pixtabFrame*MultiList.columnSpacing: 2
+ *pixtabFrame*MultiList.maxSelectable: 1
+ *pixtabFrame*MultiList.highlightForeground: red
+ *pixtabFrame*MultiList.highlightBackground: #c4c4c4
+ *pixtabFrame*MultiList.background: #c4c4c4
+ *pixtabFrame*TextToggle.background: #c4c4c4
+
+ *pixtabFrame*Label.width: 00
+ !*pixtabFrame*Label.resize: False
+
+ *meanFrame.frameWidth: 2
+ *meanFrame.frameType: chiseled
+ *meanFrame.outerOffset: 0
+ *meanFrame.width: 120
+ *meanLabel.label: Mean:
+ *meanValue.label:
+ *meanValue.resize: False
+
+ *sigFrame.frameWidth: 2
+ *sigFrame.frameType: chiseled
+ *sigFrame.outerOffset: 0
+ *sigFrame.width: 120
+ *sigLabel.label: Stdev:
+ *sigValue.label:
+ *sigValue.resize: False
+
+ *ptColFrame.frameWidth: 0
+ *ptColFrame.outerOffset: 0
+ *ptRowFrame.frameWidth: 0
+ *ptRowFrame.outerOffset: 0
+
+ *pixtabFrame*ptColLabs.width: 410
+ *pixtabFrame*ptColLabs.height: 23
+ *pixtabFrame*ptColLabs.defaultColumns: 5
+ *pixtabFrame*ptColLabs.forceColumns: True
+ *pixtabFrame*ptColLabs.columnWidth: 50
+ *pixtabFrame*ptColLabs.columnSpacing: 2
+ *pixtabFrame*ptRowLabs.width: 60
+ *pixtabFrame*ptRowLabs.height: 110
+ *pixtabFrame*ptRowLabs.defaultColumns: 1
+ *pixtabFrame*ptRowLabs.forceColumns: True
+ *pixtabFrame*ptRowLabs.verticalList: True
+ *pixtabFrame*ptRowLabs.columnWidth: 50
+ *pixtabFrame*ptRowLabs.columnSpacing: 2
+ *pixtabFrame*pixtab.verticalList: True
+
+ *ptFrame.outerOffset: 0
+ *ptFrame.innerOffset: 0
+ *ptFrame.borderWidth: 0
+ *ptFrame.frameWidth: 1
+ *ptFrame.frameType: sunken
+ *ptLayout.layout: vertical { \
+ 3 \
+ horizontal { 65 ptColFrame < +inf -inf * > 5 } \
+ 1 \
+ horizontal { \
+ vertical { ptRowFrame< * +inf -inf > 5 } \
+ 1 \
+ vertical { ptFrame } \
+ 5 \
+ } \
+ 1 \
+ horizontal { \
+ 2 < +inf > \
+ meanLabel meanFrame < +inf -inf * > 2 \
+ sigLabel sigFrame < +inf -inf * > \
+ 10 \
+ } \
+ }
+}
+
+
+set Resources(help_panel) { \
+
+ !----------------------
+ ! Help panel resources.
+ !----------------------
+ *help_panel.title: XImtool Help Summary
+ *help_panel.width: 500
+ *help_panel.height: 550
+ *helpLayout*borderWidth: 0
+ *helpLayout*Command.internalHeight: 4
+ *helpLayout*Command.internalWidth: 12
+ *helpLayout*HTML*shadowWidth: 1
+ *helpLayout*helpText*Scrollbar.shadowWidth: 1
+
+ *helpMenuGroup.label:
+ *helpMenuGroup.height: 45
+ *helpMenuGroup.outerOffset: 0
+ *helpMenuGroup.innerOffset: 0
+ *helpMenuGroup.frameType: raised
+ *helpMenubar.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 20 < +inf -20 > helpClose 7 } \
+ 5 < -5 > \
+ }
+ *helpBack.label: Back
+ *helpBack.sensitive: False
+ *helpForward.label: Forward
+ *helpForward.sensitive: False
+ *helpHome.label: Home
+ *helpClose.label: Dismiss
+
+
+ *hfEntry*editType: edit
+ *hfEntry*font: 7x13
+ *hfEntry*displayCaret: True
+ *hfFrame.frameWidth: 1
+ *hfFrame.frameType: sunken
+ *hfFrame.width: 250
+ *hfFind.label: Search
+ *hfFind.shadowWidth: 1
+ *hfClear.label: Clear
+ *hfClear.shadowWidth: 1
+
+ *helpLayout.layout: vertical { \
+ -1 \
+ horizontal { helpMenuGroup < +inf -inf * > } \
+ 5 \
+ horizontal { \
+ 5 \
+ helpBack 2 helpForward 2 helpHome \
+ 20 < +inf -20 > \
+ hfFrame < +inf -inf * > 3 hfFind 1 hfClear \
+ 5 \
+ } \
+ 5 \
+ horizontal { helpTextFrame < +inf -inf * +inf -inf > } \
+ horizontal { helpInfoLayout < +inf -inf * > } \
+ -1 \
+ }
+ *helpTextFrame.frameWidth: 1
+ *helpTextFrame.frameType: sunken
+ *helpText.width: 600
+ *helpText.height: 500
+ *helpText.anchorUnderlines: 1
+ *helpText.visitedAnchorUnderlines: 1
+ *helpText.verticalScrollOnRight: true
+ *helpText*Scrollbar.shadowWidth: 1
+ *helpText.plainFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainboldFont: -adobe-courier-bold-r-normal-*-12-*-*-*-*-*-*-*
+ *helpText.plainitalicFont: -adobe-courier-medium-o-normal-*-12-*-*-*-*-*-*-*
+! *helpText.boldFont: 6x12bold
+
+
+ ! Contact info at the bottom of the panel.
+ *helpInfoLayout*Label.justify: center
+ *helpInfoLayout*Label.internalHeight: 0
+ *helpInfoLayout.layout: horizontal { \
+ 5 \
+ vertical { 5 helpIRAFLogo 5 } \
+ 1 < +inf > \
+ vertical { \
+ 5 \
+ helpInfo1 < +inf -inf * +inf -inf > \
+ helpInfo2 < +inf -inf * +inf -inf > \
+ helpInfo3 < +inf -inf * +inf -inf > \
+ 5 \
+ } \
+ 1 < +inf > \
+ vertical { 5 helpNOAOLogo 5 } \
+ 5 \
+ }
+ *helpInfo1.label: XIMTOOL_VERSION
+ *helpInfo2.label: For help or questions: http://iraf.net
+ *helpInfo3.label: \
+ NOAO is operated by AURA under cooperative agreement with the NSF
+
+ *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*
+ *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*
+
+ *helpInfoLayout.helpIRAFLogo.internalWidth: 0
+ *helpInfoLayout.helpIRAFLogo.internalHeight: 0
+ *helpInfoLayout.helpIRAFLogo.foreground: SteelBlue
+ *helpInfoLayout.helpIRAFLogo.background: white
+ *helpInfoLayout.helpNOAOLogo.internalWidth: 0
+ *helpInfoLayout.helpNOAOLogo.internalHeight: 0
+ *helpInfoLayout.helpNOAOLogo.foreground: SteelBlue
+ *helpInfoLayout.helpNOAOLogo.background: white
+}
+
+set Resources(tcl_panel) { \
+
+ !--------------------------------
+ ! Define a debug Tcl shell.
+ !--------------------------------
+ *tcl_panel.width: 550
+ *tcl_panel.height: 180
+ *tcl_panel.title: Debug TCL Command Entry
+ *tclLayout*borderWidth: 0
+ *tclLayout*Frame.frameType: sunken
+ *tclLayout*Frame.frameWidth: 2
+ *tclLayout.layout: vertical { \
+ 0 < +0 -0 > \
+ tclCmdGroup < +inf -inf * > \
+ tclFrame < +inf -inf * +inf -inf> \
+ 0 < +0 -0 > \
+ }
+ *tclEntry*foreground: black
+ *tclEntry*editType: edit
+ *tclEntry*type: string
+ *tclEntry*font: 7x13
+ *tclEntry*scrollVertical: Always
+ *tclEntry*scrollHorizontal: whenNeeded
+
+ *tclCmdGroup.label:
+ *tclCmdGroup.outerOffset: 0
+ *tclCmdGroup.innerOffset: 0
+ *tclCmd.layout: vertical { \
+ 5 \
+ horizontal { \
+ 5 \
+ tclClear 3 \
+ tclExecute \
+ 10 < +inf -10> \
+ tclDismiss \
+ 5 \
+ } \
+ 5 \
+ }
+ *tclClear.label: Clear
+ *tclExecute.label: Execute
+ *tclDismiss.label: Dismiss
+}
+
+
+set Resources(warning) { \
+
+ ! ---------------------
+ ! WARNING dialog.
+ ! ---------------------
+ *warning.geometry: +400+300
+ *warning*borderWidth: 0
+ *warning*TextBox.frameWidth: 0
+
+ *warn.layout: vertical { \
+ 5 < -5 > \
+ horizontal { 5 warnFrame < +inf * +inf > 5 } \
+ 5 < -5 > \
+ horizontal { \
+ 10 \
+ warnOk < +inf * > \
+ 5 < +inf -5 > \
+ warnCancel < +inf * > \
+ 10 \
+ } \
+ 5 < -5 > \
+ }
+ *warnOk.label: Okay
+ *warnCancel.label: Cancel
+
+ *WFlayout.layout: horizontal { \
+ 5 < -5 > \
+ vertical { 5 < +inf -5 > warnIcon 5 < +inf -5 > } \
+ 5 < -5 > \
+ warnText < +inf -inf * +inf -inf > \
+ 5 < -5 > \
+ }
+
+ *warnLabel.label: Warning
+ *warnLabel.width: 300
+ *warnLabel.height: 20
+ *warnFrame.frameType: sunken
+ *warnFrame.frameWidth: 2
+ *warnIcon.location: 0 0 40 40
+ *warnIcon.image: WARNING
+ *warnText.label: generic warning text
+ *warnText.width: 270
+ *warnText.height: 60
+ *warnText.background: #c4c4c4
+}
+
+
+
+
+set Resources(gui) { \
+
+ ! GUI resources.
+ ! ------------------------------
+ *autoscale: True
+ *zoomfactors: 1 2 4 8
+ *displayCoords: True
+ *displayPanner: True
+ *displayMagnifier: False
+ *blinkRate: 1.0
+ *pannerArea: 150*150
+ *pannerGeom: -5+5
+ *magnifierArea: 100*100
+ *magnifierGeom: +5+5
+ *wcsboxGeom: -5-5
+ *maxContrast: 5.0
+ *showToolBar: False
+ *showPanelBar: False
+ *warnings: True
+ *centerBoxSize: 5
+ *peakCentroid: True
+}
+
+
+
+
+
+################################################################################
+# GUI Bootstrap Procedures
+################################################################################
+
+# Initialize the widget tree.
+proc InitWidgetTree args \
+{
+ global Objects Resources Version
+
+
+ # Add a new objects description for each of the panels found so we can
+ # create them by name later rather that with the defaults.
+
+ set guiResources ""
+ foreach obj [array names Objects] {
+ set guiResources \
+ [ format "%s\n\n*%s_objects:%s\n" \
+ $guiResources $obj $Objects($obj) ]
+ }
+
+ # Now append all the Resource strings, changing any version strings as
+ # needed.
+
+ foreach res [array names Resources] {
+ regsub -all XIMTOOL_VERSION $Resources($res) $Version ver
+ set guiResources [ format "%s\n\n%s\n\n" $guiResources $ver ]
+ }
+
+ # Define all of the GUI objects and resources.
+ appInitialize ximtool XImtool $guiResources
+}
+
+
+# Realize a window module, i.e. create it's objects.
+proc Realize { module args } \
+{
+ global Objects
+
+ # Create any widgets for the module. We only do this once and set a
+ # flag to indicate the objects have been created so we don't do it on
+ # subsequent realizations.
+ if { [info exists Objects($module)] } {
+ createObjects [format "%s_objects" $module]
+ reset-server
+ }
+}
+
+
+# Bootstrap up the GUI.
+InitWidgetTree
+Realize ximtool
+Realize parameters
+Realize panelShell
+Realize tcl_panel
+Realize pixel_table
+Realize hdr_panel
+Realize blink_panel
+Realize help_panel
+Realize xpan_panel
+Realize xmag_panel
+Realize warning
+
+reset-server
+
+# Set the gterm widget focus.
+send colorbar setGterm ; send colorbar activate
+send imagewin setGterm ; send imagewin activate
+
+# Crank it up.
+activate
+
+
+
+
+##############################################################################
+# Utility Procedures.
+##############################################################################
+
+# Utility procedure to test True/False strings in resources.
+proc true {v} {expr {$v == "true" || $v == "True" || $v == "TRUE"}}
+
+# Utility functions.
+proc min {a b} { expr {($a < $b) ? $a : $b} }
+proc max {a b} { expr {($a > $b) ? $a : $b} }
+
+# Global variables.
+set version "NOAO/IRAF XImtool Version 2.0BETA"
+
+set winWidth [send imagewin get width ] ;# display window width
+set winHeight [send imagewin get height] ;# display window height
+set appWidth [send display get width ] ;# application window width
+set appHeight [send display get height] ;# application window height
+set marker none ;# selected marker
+set markno 0 ;# used to name new markers
+set ruler none ;# selected ruler
+set ruleno 0 ;# used to name new rulers
+set blinkFrames "1 2" ;# list of blink frames
+set auto_reg 0
+
+set panel_up 0 ;# control panel mapped
+set help_up 0 ;# help panel mapped
+set ism_enable 0 ;# ISM is running
+set ism_capable 1 ;# Client is ISM capable
+set frameCache(0) "" ;# ISM frame cache
+
+set ctype "equatorial" ;# default coord type
+set eqtype "fk5" ;# default equatorial type
+
+# Global constants.
+set MAX_FRAMES 16 ;# max frame buffers
+
+# TCL constants
+set tcl_precision 8
+
+
+
+# Window resize callbacks.
+proc winResize {w width height} {
+ global winWidth winHeight
+
+ if {$width <= 1 || $height <= 1} \
+ return
+
+ set winWidth $width
+ set winHeight $height
+} ; send imagewin addCallback winResize resize
+
+proc appResize {w width height} \
+{
+ global doHcut doVcut cutXPos cutYPos
+ global appWidth appHeight
+
+ set appWidth $width
+ set appHeight $height
+
+ catch {
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ }
+} ; #send imagewin addCallback appResize resize
+
+
+
+# Additional global variables, taking default values from resources.
+getResources {
+ { zoomfactors }
+ { displayCoords }
+ { displayPanner }
+ { displayMagnifier }
+ { blinkRate }
+ { pannerArea }
+ { pannerGeom }
+ { magnifierArea }
+ { magnifierGeom }
+ { wcsboxGeom }
+ { maxContrast }
+ { showToolBar }
+ { showPanelBar }
+ { warnings }
+ { centerBoxSize }
+ { peakCentroid }
+ { highlight }
+}
+
+set warnings [true $warnings]
+set defaultBlinkRate $blinkRate
+
+# Client state variables (UI parameter objects). Certain of these parameters
+# we mirror in Tcl variables here, updating the values with a callback when
+# the parameter value changes. Others require special callbacks.
+
+set frame 1 ;# current display frame
+set nframes 0 ;# number of frame buffers
+set frames {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} ;# list of image frames
+set frameWidth 0 ;# frame buffer width, pixels
+set frameHeight 0 ;# frame buffer height, pixels
+set frameDepth 8 ;# frame buffer pixel size, bits
+set cursorMode 0 ;# true when cursor read pending
+
+foreach i $frames {
+ set frameZoomX($i) 0 ;# X zoom factor
+ set frameZoomY($i) 0 ;# Y zoom factor
+ set frameCenterX($i) 0 ;# X center of field
+ set frameCenterY($i) 0 ;# Y center of field
+ set frameScaleX($i) 0 ;# X scale factor
+ set frameScaleY($i) 0 ;# Y scale factor
+ set frameOffsetX($i) 0 ;# X register offset
+ set frameOffsetY($i) 0 ;# Y register offset
+ set enhancement($i) none ;# colortable enhancement
+}
+
+
+#trace variable frameOffsetX w debug_pvar ;# Debug stuff
+#trace variable frameOffsetY w debug_pvar
+#trace variable frameZoomX w debug_pvar
+#trace variable frameZoomY w debug_pvar
+#trace variable frameScaleX w debug_pvar
+#trace variable frameScaleY w debug_pvar
+
+proc debug_pvar { name element op } \
+{
+ if {$element != ""} {
+ set name ${name}($element)
+ }
+ upvar $name x
+ puts "Variable $name set to $x"
+}
+
+
+
+
+################################################################################
+# Cut-plot handling routines.
+################################################################################
+
+set doHcut 0
+set doVcut 0
+set hstate 0
+set vstate 0
+set plotSpeed 1 ; send plotSpeed set on True
+set curJump 1 ; send curJump set on True
+set curTrack 1 ; send curTrack set on True
+
+set cutXPos [expr "$winWidth / 2"]
+set cutYPos [expr "$winHeight / 2"]
+set cutXScale 1.0
+set cutYScale 1.0
+
+
+
+# Change the cursor to the crosshair when in the plot
+proc cutCursor { widget event args } \
+{
+ global doHcut doVcut curTrack
+
+ if {! $curTrack} \
+ return
+
+ if { $event == "enterNotify" } {
+ send $widget setCursorType ginMode
+
+ # Disable the update of the graph we're in while in the plot window.
+ if {$widget == "hcutPlot"} { set doHcut 0 } else { set doVcut 0 }
+ } elseif { $event == "leaveNotify" } {
+ send $widget setCursorType idle
+
+ # Enable the update of the graph we're leaving.
+ if {$widget == "hcutPlot"} { set doHcut 1 } else { set doVcut 1 }
+ }
+ cutPlotRefresh
+}
+foreach w {hcutPlot vcutPlot} {
+ send $w addEventHandler cutCursor enterWindowMask
+ send $w addEventHandler cutCursor leaveWindowMask
+}
+
+proc cutPlotRefresh args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutPlot clearScreen
+ hcutInit
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutPlot clearScreen
+ vcutInit
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+} ; send imagewin addEventHandler cutPlotRefresh enterWindowMask
+
+proc cutPlotRedraw args \
+{
+ global doHcut doVcut cutXPos cutYPos
+
+ if {$doHcut} {
+ send hcutAxes1 redraw ; send hcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+ if {$doVcut} {
+ send vcutAxes1 redraw ; send vcutAxes2 redraw
+ cutPlots $cutXPos $cutYPos
+ }
+}
+
+
+# Disable the options when we first start up.
+#send plotOpts "set height 1 ; set width 1 ; unmap"
+foreach w {plotOpts hcutFrame vcutFrame} { send $w unmap }
+
+
+# Cut-Plot options callback.
+proc doPlotOpts { widget type state args } \
+{
+ global plotSpeed curJump curTrack doHcut doVcut
+ global cutXPos cutYPos
+
+ if {$state} { set not 0 } else { set not 1 }
+
+ switch $widget {
+ plotSpeed { if {$state} {
+ send plotAccurate set on 0 ; send plotImgPix set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotAccurate { if {$state} {
+ send plotImgPix set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ plotImgPix { if {$state} {
+ send plotAccurate set on 0 ; send plotSpeed set on 0
+ } else {
+ send plotSpeed set on True ;
+ }
+ set plotSpeed $not
+ }
+ curJump { send curSmooth set on $not ; set curJump $state }
+ curSmooth { send curJump set on $not ; set curJump $not }
+ curTrack { set curTrack $state }
+ }
+
+ # Redraw the plots right away.
+ if {$widget == "plotSpeed" || $widget == "plotAccurate"} {
+ cutPlots $cutXPos $cutYPos
+ }
+}
+foreach w { plotSpeed plotAccurate plotImgPix curJump curSmooth curTrack } {
+ send $w addCallback doPlotOpts
+}
+
+
+# Toggle the display of the horizontal or vertical cut plot windows.
+
+proc cutPlotToggle { widget type state args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+ set debug 0
+
+ set hstate [send hcut get state]
+ set vstate [send vcut get state]
+ set w [send display get width]
+ set h [send display get height]
+
+ if {$debug} { print " " ; print [format "display: %d x %d\n" $w $h] }
+
+ if {$widget == "hcut"} {
+ set hfw [expr [send hcutFrame get width] - 4]
+ set hpw [send hcutPlot get width]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$vstate} {
+ send plotOpts set width 134
+ }
+ send hcutFrame "set width $hpw ; set height 132; map"
+ send hcutPlot "set width $hfw ; set height 128"
+ send display "set height [ expr ($h + 132) ]; set width $w"
+ drawHcutAxes 1
+ setHcutCursor 1
+ if {$vstate} {
+ send plotOpts "set height 134 ; map"
+ vcutInit
+ }
+ hcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setHcutCursor 0
+ drawHcutAxes 0
+ send hcutPlot clearScreen
+ send plotOpts "unmap; set height 4"
+ send hcutFrame "unmap; set width $hfw; set height 4"
+ send plotOpts "set width 4"
+ send display "set height [ expr ($h - 128) ] ; set width $w"
+ if {$vstate} {
+ vcutInit
+ }
+ }
+ set doHcut $state
+ } else {
+ set vfh [expr [send vcutFrame get height] - 4]
+ set vph [send vcutPlot get height]
+ if {$state} {
+ # Enable the plot and resize the main window
+ if {$hstate} {
+ send plotOpts set height 134
+ }
+ send vcutFrame "set height $vph ; set width 132 ; map"
+ send vcutPlot "set height $vfh ; set width 128"
+ send display "set height $h; set width [ expr ($w + 132) ]"
+ drawVcutAxes 1
+ setVcutCursor 1
+ if {$hstate} {
+ send plotOpts "set height 134 ; set width 134; map"
+ hcutInit
+ }
+ vcutInit ;# Initialize the plot.
+ } else {
+ # Disable the plot and resize the main window
+ setVcutCursor 0
+ drawVcutAxes 0
+ send vcutPlot clearScreen
+ send plotOpts "unmap; set width 4"
+ send vcutFrame "unmap; set height $vfh; set width 4"
+ send plotOpts "set height 4"
+ send display "set width [ expr ($w - 128) ] ; set height $h"
+ if {$hstate} {
+ hcutInit
+ }
+ }
+ set doVcut $state
+ }
+
+ if {$debug} {
+ print [format " hFrame: %d x %d\n" \
+ [send hcutFrame get width] [send hcutFrame get height] ]
+ print [format " hPlot: %d x %d\n" \
+ [send hcutPlot get width] [send hcutPlot get height] ]
+ print [format " vFrame: %d x %d\n" \
+ [send vcutFrame get width] [send vcutFrame get height] ]
+ print [format " vPlot: %d x %d\n" \
+ [send vcutPlot get width] [send vcutPlot get height] ]
+ print [format "state: %d %d\n" $hstate $vstate]
+ print [format "display: %d x %d\n" $w $h]
+ }
+
+ cutPlots $cutXPos $cutYPos
+} ; foreach w { hcut vcut } { send $w addCallback cutPlotToggle }
+
+
+# Draw the cut plots.
+proc cutPlots { xpos ypos args } \
+{
+ global doHcut doVcut cutXPos cutYPos hstate vstate
+
+ catch {
+ if {$doHcut} {
+ drawHcutIndicator $xpos
+ if {$hstate} { plotHcut $xpos $ypos }
+ }
+ if {$doVcut} {
+ drawVcutIndicator $xpos
+ if {$vstate} { plotVcut $xpos $ypos }
+ }
+ }
+
+ set cutXPos $xpos ; set cutYPos $ypos
+}
+
+
+################################################################################
+# Horizontal Cut-Plot Routines
+################################################################################
+
+set hcutVec {}
+
+# Initiailize the horizontal cut-plot
+proc hcutInit args \
+{
+ global logz cutXScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send hcutPlot getPhysRes xr yr
+ send hcutPlot setLogRes $xr $yr
+
+ set logx [send imagewin get width]
+ set logz [expr ($z2 - $z1)]
+ set cutXScale [expr ($xr * 1.0) / ($logx * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6"
+ drawHcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotHcut { xpos ypos } \
+{
+ global doHcut cutXScale
+ global hcutVec cutXPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doHcut } \
+ return
+
+ # Do the horizontal cut plot.
+ set width [send imagewin get width]
+ if {$plotSpeed} {
+ set pix [send client getPixels 0 $ypos $width 1 2 5 $cutXScale]
+ } else {
+ set pix [send client getPixels 0 $ypos $width 1 2 1 $cutXScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Erase the last plot rather than clear the screen and redraw
+ # the new vector.
+ send hcutPlot setColorIndex background
+ send hcutPlot drawPolyline $hcutVec
+ send hcutPlot setColorIndex foreground
+ send hcutPlot drawPolyline $vec
+ set hcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawHcutIndicator $xpos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$ypos % 3"] == 0} {
+ catch {
+ drawHcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send hcutAxes1 redraw ;# redraw the axes markers
+ send hcutAxes2 redraw
+ }
+}
+
+
+# Create markers to indicate axes on the horizontal cut-plot.
+proc drawHcutAxes { state } \
+{
+ if {$state} {
+ send hcutPlot createMarker hcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 60 \
+ height 30 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ send hcutPlot createMarker hcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ height 60 \
+ width 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send hcutAxes1 destroy ; send hcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setHcutCursor { state } \
+{
+ if {$state} {
+ set pts { {252 10} {260 10} {256 1} }
+
+ send hcutPlot createMarker hcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 256 \
+ y 12 \
+ width 8 \
+ height 10 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send hcutCursor setVertices $pts
+ send hcutCursor set visible True
+
+ } else {
+ send hcutCursor destroy
+ }
+}
+
+# Label the axes on the horizontal cut plot.
+proc drawHcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ send hcutPlot "setColorIndex 6 ; \
+ drawAlphaText 2 10 [format "%.1f" $z2] ; \
+ drawAlphaText 2 34 [format "%.1f" $high] ; \
+ drawAlphaText 2 64 [format "%.1f" $mid] ; \
+ drawAlphaText 2 94 [format "%.1f" $low] ; \
+ drawAlphaText 2 120 [format "%.1f" $z1]"
+}
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawHcutIndicator { xpos } \
+{
+ global cutXScale cutXPos
+
+ send hcutCursor move [expr ($xpos * $cutXScale)] 12
+ set cutXPos $xpos
+}
+
+# Track the cursor while in the cut-graph window.
+proc hcutWCSUpdate { x y args } \
+{
+ global cutYPos curTrack
+ if {$curTrack} {
+ wcsUpdate $x $cutYPos
+ }
+ drawHcutIndicator $x
+}
+
+
+
+
+################################################################################
+# Vertical Cut-Plot Routines
+################################################################################
+
+set vcutVec {}
+
+# Initiailize the vertical cut-plot
+proc vcutInit args \
+{
+ global cutYScale winWidth cutXPos cutYPos
+
+ # Just get some dummy pixels, we only want the z1/z2 values so we can
+ # initialize the labels.
+ set xp [expr [send imagewin get width] / 2 ]
+ set yp [expr [send imagewin get height] / 2 ]
+ set pix [send client getPixels $xp $yp 2 2 ]
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+
+ send vcutPlot getPhysRes xr yr
+ send vcutPlot setLogRes $xr $yr
+
+ set logy [send imagewin get height]
+ set logz [expr ($z2 - $z1)]
+ set cutYScale [expr ($yr * 1.0) / ($logy * 1.0)]
+
+ # Initialize the labels.
+ send vcutPlot "setColorIndex 6; reset"
+ drawVcutLabels $z1 $z2
+}
+
+# Draw the horizontal cut-plot.
+proc plotVcut { xpos ypos } \
+{
+ global doVcut cutYScale
+ global vcutVec cutXPos cutYPos plotSpeed
+
+
+ if { ($xpos == 0 && $ypos == 0) || ! $doVcut } \
+ return
+
+ # Do the vertical cut plot.
+ set height [send imagewin get height]
+ if {$plotSpeed} {
+ set pix [send client getPixels $xpos 0 1 $height 3 5 $cutYScale]
+ } else {
+ set pix [send client getPixels $xpos 0 1 $height 3 1 $cutYScale]
+ }
+ set z1 [lindex $pix 0]
+ set z2 [lindex $pix 1]
+ set vec [lrange $pix 2 end]
+
+ # Draw the vector.
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+ send vcutPlot drawPolyline $vec
+ set vcutVec $vec ;# save for later erasure
+
+ # Mark the cursor position.
+ drawVcutIndicator $ypos
+
+ # Minimize the screen refreshes to speed things up.
+ if { [expr "$xpos % 3"] == 0} {
+ catch {
+ drawVcutLabels $z1 $z2 ;# redraw the labels
+ }
+ send vcutAxes1 redraw ;# redraw the axes markers
+ send vcutAxes2 redraw
+ }
+}
+
+# Erase the last plot rather than clear the screen and redraw it all. The
+# erase is done by redrawing the last vector in the the background color.
+proc eraseOldVcut args \
+{
+ global cutYPos vcutVec
+
+ send vcutPlot setColorIndex background
+ send vcutPlot drawPolyline $vcutVec
+ send vcutPlot setColorIndex foreground
+}
+
+# Draw the horizontal cut-plot.
+# Create markers to indicate axes on the vertical cut-plot.
+proc drawVcutAxes { state } \
+{
+ if {$state} {
+ send vcutPlot createMarker vcutAxes1 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 60 \
+ y 1 \
+ height 4096 \
+ width 30 \
+ activated True \
+ visible True \
+ sensitive False
+ send vcutPlot createMarker vcutAxes2 \
+ type box \
+ createMode noninteractive \
+ lineColor gray60 \
+ lineStyle 0 \
+ x 1 \
+ y 1 \
+ width 60 \
+ height 4096 \
+ activated True \
+ visible True \
+ sensitive False
+ } else {
+ send vcutAxes1 destroy ; send vcutAxes2 destroy
+ }
+}
+
+# Create a marker to be used as the cursor indicator.
+proc setVcutCursor { state } \
+{
+ if {$state} {
+ set pts { {10 252} {10 260} {1 256} }
+
+ send vcutPlot createMarker vcutCursor \
+ type polygon \
+ createMode noninteractive \
+ lineColor black \
+ fill True \
+ fillColor yellow \
+ x 12 \
+ y 256 \
+ width 10 \
+ height 8 \
+ knotSize 0 \
+ activated True \
+ visible False \
+ sensitive False
+ send vcutCursor setVertices $pts
+ send vcutCursor set visible True
+
+ } else {
+ send vcutCursor destroy
+ }
+}
+
+# Label the axes on the vertical cut plot.
+proc drawVcutLabels { z1 z2 } \
+{
+ set mid [expr "($z2-$z1)/2.0+$z1"]
+ set low [expr "($mid-$z1)/2.0+$z1"]
+ set high [expr "($z2-$mid)/2.0+$mid"]
+
+ # Initialize the label strings and positions.
+ set labels {}
+ foreach i [list $z2 $high $mid $low $z1] {
+ lappend labels [ format "%.1f" $i ]
+ }
+ set xposns { 2 28 58 88 112 }
+
+ send vcutPlot "setColorIndex 6"
+
+ # Draw each label vertically down the position since we can't rotate
+ # the text.
+ set xp 0
+ foreach lab $labels {
+ set chars [split $lab {} ]
+ set yp 12
+ set xpos [lindex $xposns $xp]
+ foreach ch $chars {
+ if {$ch == "."} { incr yp -4 }
+ send vcutPlot drawAlphaText $xpos $yp $ch
+ incr yp 10
+ }
+ incr xp
+ }
+}
+
+
+# Draw the cursor position indicator on the horizontal cut plot.
+proc drawVcutIndicator { ypos } \
+{
+ global cutYScale cutYPos
+
+ send vcutCursor move 12 [expr ($ypos * $cutYScale)]
+ set cutYPos $ypos
+}
+
+
+# Track the cursor while in the cut-graph window.
+proc vcutWCSUpdate { x y args } \
+{
+ global cutXPos curTrack
+ if {$curTrack} {
+ wcsUpdate $cutXPos $y
+ }
+ drawVcutIndicator $y
+}
+
+
+
+################################################################################
+# UTILITY ROUTINES
+################################################################################
+
+
+# TICSTEP -- Utility routine to compute nice ticmark steps in plots.
+# [ NOT CURRENTLY USED. ]
+
+proc ticstep { range nsteps } \
+{
+ set t2 0.301029996
+ set t5 0.698970004
+ set df [ expr "$range / double($nsteps + 1)" ]
+ if {$df > 0.0} {
+ set p1 [ expr "log10(double($df))" ]
+ } else {
+ set p1 [ expr "log10(double(-$df))" ]
+ }
+ set p2 [ expr "int($p1)" ]
+ set p3 [ expr "$p1 - $p2" ]
+
+ if { $p3 < 0.0 } {
+ set p3 [ expr "$p2 + 1.0" ]
+ set p2 [ expr "$p2 - 1.0" ]
+ }
+
+ if { $p3 < 1.0e-10 } {
+ set ticstep [ expr "pow(double(10.0),double($p2))" ]
+ } elseif { $p3 > 0. && $p3 <= $t2 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t2))" ]
+ } elseif { $p3 > $t2 && $p3 <= $t5 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + $t5))" ]
+ } elseif { $p3 > $t5 && $p3 <= 1.0 } {
+ set ticstep [ expr "pow(double(10.0),double($p2 + 1.))" ]
+ } else {
+ set ticstep $df
+ }
+
+ set logtic [ expr "int(log10($ticstep)) - 1" ]
+ set scale [ expr "pow(double(10.0),double($logtic))" ]
+ set ticstep [ expr "int( ($ticstep / $scale) * $scale)" ]
+
+ if {$ticstep < 0.1} { set ticstep 0.10 }
+
+ return $ticstep
+}
+
+
+
+# Cursor positioning routines
+#----------------------------
+
+proc move_cursor { xstep ystep args } \
+{
+ set raster 0
+ send imagewin getCursorPos rx ry
+ send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster
+}
+
+
+# Called when the number of frames changes.
+proc setNFrames {param old new} \
+{
+ global frameMenuDescription nframes frames
+
+ set nframes $new
+ if {$old != $new} {
+ foreach i {prevButton nextButton} {
+ send $i set sensitive [expr "$nframes > 1"]
+ }
+
+ if {$nframes > 0} {
+
+ # Creates the Frames menu on the main image window.
+ set items { }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send client setFrame $i\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ editMenu frameMenu frameButton $items
+
+ # Create the menu for the blink frames list.
+ set items { }
+ for {set i 0} {$i <= $nframes} {incr i} {
+ set j [expr ($i + 1)]
+ if {$i == 0} {
+ set s "\"none\" f.exec \{send brFrameBTN set label \" \"\}"
+ lappend items $s
+ } else {
+ set l [format "%2d" $i]
+ lappend items "$l f.exec \{send brFrameBTN set label $l\} sensitive \{[expr \"$nframes >= $i\"]\}"
+ }
+ }
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ regsub -all BTN $items $i nmenu
+ editMenu frame${i}Menu brFrame$i $nmenu
+ }
+
+ } else {
+ editMenu frameMenu frameButton $frameMenuDescription
+
+ for {set i 1} {$i <= $nframes} {incr i} {
+ send brFrame$i setSensitive True
+ send tFrame$i setSensitive True
+ editMenu frame${i}Menu brFrame$i $frameMenuDescription
+ }
+ }
+ }
+
+ for {set i 1} {$i <= 16} {incr i} {
+ if {$i <= $nframes} {
+ send frame$i map
+ } else {
+ send frame$i unmap
+ }
+ }
+
+ if {$nframes > 2} {
+ setAllTileFrames
+ }
+}; send nframes addCallback setNFrames
+
+
+# Set the default main window frame menu.
+set frameMenuDescription {
+ {" 1" f.exec "send client setFrame 1" sensitive {[expr "$nframes >= 1"]} }
+ {" 2" f.exec "send client setFrame 2" sensitive {[expr "$nframes >= 2"]} }
+ {" 3" f.exec "send client setFrame 3" sensitive {[expr "$nframes >= 3"]} }
+ {" 4" f.exec "send client setFrame 4" sensitive {[expr "$nframes >= 4"]} }
+}; createMenu frameMenu frameButton $frameMenuDescription
+
+
+
+
+# Initialize the frame lists panels (blink panel and tile tab).
+for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label [format "%2d" $i]
+ send tFrame$i set label [format "%2d" $i]
+ if {$i <= 4} {
+ send brFrame$i setSensitive True
+ send tFrame$i "setSensitive True ; set state 1"
+ } else {
+ send brFrame$i setSensitive False
+ send tFrame$i "setSensitive False ; set state 0"
+ }
+ createMenu frame${i}Menu brFrame$i $frameMenuDescription
+}
+
+
+# Called when the frame being displayed changes.
+proc frameChanged {param old new} \
+{
+ global frame
+
+ set frame $new
+ send frameButton set label [format "%2d" $frame]
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+ wcsFmtFBConfig
+ drawCompass
+}; send frame addCallback frameChanged
+
+
+# Called when the frame buffer configuration changes.
+proc setFrameSize {param old new} \
+{
+ global frameWidth frameHeight frameDepth
+ set frameWidth [lindex $new 0]
+ set frameHeight [lindex $new 1]
+ set frameDepth [lindex $new 2]
+
+ wcsFmtFBConfig
+}; send frameSize addCallback setFrameSize
+
+# Called when the current frame is zoomed or panned.
+proc setFrameView {param old new} \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameScaleX frameScaleY frameOffsetX frameOffsetY
+ global frame auto_reg blinkFrames
+
+ # Update the position.
+ set frameZoomX($frame) [lindex $new 0]
+ set frameZoomY($frame) [lindex $new 1]
+ set frameCenterX($frame) [lindex $new 2]
+ set frameCenterY($frame) [lindex $new 3]
+ set frameScaleX($frame) [lindex $new 4]
+ set frameScaleY($frame) [lindex $new 5]
+ set frameOffsetX($frame) [lindex $new 6]
+ set frameOffsetY($frame) [lindex $new 7]
+
+ # If auto-registering is enabled, do it now, but only when we're updating
+ # the current display frame, and only if that frame is in the framelist.
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+
+ foreach f $blinkFrames {
+ if {$f != $frame} {
+ set frameZoomX($f) $frameZoomX($frame)
+ set frameZoomY($f) $frameZoomY($frame)
+ set frameCenterX($f) $frameCenterX($frame)
+ set frameCenterY($f) $frameCenterY($frame)
+ set frameScaleX($f) $frameScaleX($frame)
+ set frameScaleY($f) $frameScaleY($frame)
+ }
+ }
+ }
+ deleteAllRulers
+
+}; send frameView addCallback setFrameView
+
+
+# Called when the color enhancement for a frame changes.
+proc setEnhancement {param old new} \
+{
+ global enhancement
+ set enhancement([lindex $new 0]) [lrange $new 1 end]
+}; send enhancement addCallback setEnhancement
+
+# Called when the frame title changes (e.g. frame change or new frame loaded).
+proc setTitle {param old new} \
+{
+ set lab [string trimright $new]
+ send imageTitle set label $lab
+
+ set image [lindex [ split $lab '-'] 0 ]
+ wcsFmtImname $image
+
+ set title [lindex [ split $lab '-'] 1 ]
+ wcsFmtImtitle $title
+ deleteAllRulers
+}; send frameTitle addCallback setTitle
+
+# Called when the image is flipped in an axis.
+proc setFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send xflipButton set state [true $new]
+ } else {
+ send yflipButton set state [true $new]
+ }
+ deleteAllRulers
+}; foreach i {xflip yflip} { send $i addCallback setFlip }
+
+
+# Various general callbacks.
+
+proc Quit args \
+{
+ global ism_enable
+
+ if {$ism_enable} {
+ catch { send wcspix quit }
+ }
+ send client Quit
+}
+proc nextFrame args { send client nextFrame }
+proc prevFrame args { send client prevFrame }
+proc setColormap { mapno } { send client setColormap $mapno }
+proc xflip args { send client flip x ; flipRegister }
+proc yflip args { send client flip y ; flipRegister }
+proc xyflip args { send client flip x y ; flipRegister }
+proc flipRegister args \
+{
+ global auto_reg frame blinkFrames
+
+ if {$auto_reg == 1 && $frame == [send frameButton get label]} {
+ if {[string first $frame $blinkFrames] != -1} {
+ send client offsetRegister \{$blinkFrames\}
+ }
+ }
+}
+
+
+
+# Initialize bitmaps.
+createBitmap xflip 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,
+ 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap yflip 16 16 {
+ 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,
+ 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,
+ 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}
+
+createBitmap qmark 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,
+ 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
+ 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap larrow 16 16 {
+ 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,
+ 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,
+ 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00}
+
+createBitmap rarrow 16 16 {
+ 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,
+ 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,
+ 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00}
+
+createBitmap panel 16 16 {
+ 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+ 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f}
+
+createBitmap brightness 15 15 {
+ 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,
+ 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,
+ 0x84, 0x10, 0x80, 0x00, 0x00, 0x00}
+
+createBitmap contrast 15 15 {
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,
+ 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap bar 10 10 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap dot 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,
+ 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap null 16 16 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap solid 64 24 {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+
+catch { send controlButton "set bitmap panel; addCallback panel" }
+catch { send helpButton "set bitmap qmark; addCallback Help" }
+send xflipButton "set bitmap xflip; addCallback xflip"
+send yflipButton "set bitmap yflip; addCallback yflip"
+send prevButton "set bitmap larrow; addCallback prevFrame"
+send nextButton "set bitmap rarrow; addCallback nextFrame"
+send blinkPanel "set bitmap panel"
+
+
+
+# WINDOW the current frame.
+set old_cm_x 0
+set old_cm_y 0
+
+proc windowColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ # For efficiency we won't compute the sqrt of the distance but instead
+ # just compare the square. Use a threshold of 6 pixels so when we
+ # narrow in on the ROI we refine the colormap more precisely.
+
+ set diff [expr (($old_cm_x - $x) * ($old_cm_x - $x)) + \
+ (($old_cm_y - $y) * ($old_cm_y - $y))]
+
+ # Keep the old position.
+ set old_cm_x $x
+ set old_cm_y $y
+ if {$diff > 36} {
+ return
+ }
+
+ send client windowColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+proc updateColormap {x y} \
+{
+ global winWidth winHeight maxContrast old_cm_x old_cm_y
+
+ set old_cm_x $x
+ set old_cm_y $y
+ send client updateColormap \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"]
+}
+
+
+
+# WINDOW the current frame, but only one color at a time.
+proc windowRGB {color x y save_flag} \
+{
+ global winWidth winHeight maxContrast
+
+ send client windowRGB $color \
+ [expr "double($x) / $winWidth"] \
+ [expr "(double($y) - $winHeight / 2.0) / $winHeight * \
+ $maxContrast * 2.0"] $save_flag
+}
+
+
+# ZOOM and PAN.
+set xcen 0
+set ycen 0
+foreach i $frames {set zoomindex($i) 0}
+set nzoomfactors 0
+foreach i $zoomfactors {
+ set zoomfactor($nzoomfactors) $i
+ incr nzoomfactors
+}
+
+# Zoom or pan image at given center.
+proc zoom {x y} \
+{
+ global xcen ycen frame
+ global zoomindex zoomfactor
+ global nzoomfactors
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set rx [expr "int ($rx)"]
+ set ry [expr "int ($ry)"]
+
+ # If the pointer did not move (much) zoom the image, otherwise
+ # pan it.
+
+ send imagewin setCursorType busy
+ if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {
+ set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $rx $ry
+ } else {
+ send client pan $rx $ry
+ set xcen $x
+ set ycen $y
+ }
+
+ # Move the pointer so that it tracks the object feature the user
+ # selected.
+
+ send imagewin setCursorPos $rx $ry $raster
+ send imagewin getCursorPos xcen ycen
+ send imagewin setCursorType idle
+}
+
+
+# Zoom using a marker to indicate the region to be displayed.
+proc zoomMarker {marker aspect} \
+{
+ global xcen ycen frame
+ global winWidth winHeight
+ global zoomindex nzoomfactors
+ global auto_reg frame frameOffsetX frameOffsetY
+
+ # getRegion returns: "rectangle raster x y width height rotangle".
+ set region [send $marker getRegion unmap]
+
+ set raster [lindex $region 1]
+ set xcen [expr "int([lindex $region 2]) + 0.5"]
+ set ycen [expr "int([lindex $region 3]) + 0.5"]
+ set snx [expr "[lindex $region 4] * 2"]
+ set sny [expr "[lindex $region 5] * 2"]
+
+ # Compute the magnification ratio.
+ set xmag [expr "$winWidth / $snx"]
+ set ymag [expr "$winHeight / $sny"]
+ if {$aspect == "equal"} {
+ set mag [expr "($xmag < $ymag) ? $xmag : $ymag"]
+ set xmag $mag; set ymag $mag
+ }
+
+ # Zoom the image.
+ send client zoomAbs \
+ $xmag $ymag $xcen $ycen \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+
+ # The following causes a button2 to redisplay the full image.
+ send imagewin setCursorPos $xcen $ycen $raster
+ send imagewin getCursorPos xcen ycen
+ set zoomindex($frame) [expr "$nzoomfactors - 1"]
+}
+
+# Pan the display frame one width/height in a given direction.
+proc moveFrame { xs ys args } \
+{
+ global winWidth winHeight frame
+ global frameWidth frameHeight
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # Get the step size for the new position.
+ set xstep_size [ expr "$xs * $winWidth / $frameZoomX($frame)" ]
+ set ystep_size [ expr "$ys * $winHeight / $frameZoomY($frame)" ]
+
+ # Set the boundaries so we only move up to the edges.
+ set xl [ expr "($winWidth / $frameZoomX($frame)) / 2 + 1" ]
+ set yl [ expr "($winHeight / $frameZoomY($frame)) / 2 + 1" ]
+ set xu [ expr "$frameWidth - $xl" ]
+ set yu [ expr "$frameHeight - $yl" ]
+
+ # Set the new center position.
+ set nxc [ expr "$frameCenterX($frame) + $xstep_size" ]
+ set nyc [ expr "$frameCenterY($frame) + $ystep_size" ]
+ if {$nxc < $xl} { set nxc $xl }
+ if {$nxc > $xu} { set nxc $xu }
+ if {$nyc < $yl} { set nyc $yl }
+ if {$nyc > $yu} { set nyc $yu }
+
+ # Finally, send the command to move the frame.
+ send client zoomAbs \
+ $frameZoomX($frame) $frameZoomY($frame) $nxc $nyc \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+}
+
+proc resetView {param old new} {
+ global zoomindex xcen ycen frames
+ global frameWidth frameHeight
+
+ if {$new == "done"} {
+ foreach i $frames {
+ send client setFrame $i
+ set xcen [expr $frameWidth / 2]
+ set ycen [expr $frameHeight / 2]
+ send client zoom 1 1 $xcen $ycen
+ set zoomindex($i) 0
+ send client setColormap Grayscale
+ normalize
+ }
+ send client setFrame 1
+ }
+}; #send initialize addCallback resetView
+
+
+# CURSOR READ stuff.
+proc setCursorMode {param old new} \
+{
+ global cursorMode
+
+ if {$new == "on"} {
+ send imagewin "activate; setCursorType ginMode"
+ set cursorMode 1
+ } elseif {$new == "off"} {
+ send imagewin "setCursorType idle; deactivate"
+ set cursorMode 0
+ }
+}
+
+proc keyInput {widget event sx sy data} \
+{
+ global cursorMode frame
+
+ if {!$cursorMode || $event != "keyPress"} \
+ return
+ if {[lindex $data 0] == "??"} \
+ return
+
+ # Convert raw screen coordinates to raster pixel coordinates.
+ send imagewin unmapPixel $sx $sy raster rx ry
+
+ # Return the cursor value and exit cursor mode.
+ send client retCursorVal $rx $ry $frame 1 [lindex $data 0]
+}
+
+proc resetCursorMode args {
+ global cursorMode frame
+ if {$cursorMode} {
+ send imagewin getCursorPos x y
+ send client retCursorVal $x $y $frame 1 ^D
+ }
+}; send initialize addCallback resetCursorMode
+
+send cursorMode addCallback setCursorMode
+send imagewin addCallback keyInput input
+
+
+# MARKER stuff. The active marker is determined by the global variable
+# "marker", which is the marker the pointer is in, or which the pointer
+# was most recently in.
+
+# Translations when pointer is inside marker.
+set markerTranslations { \
+!Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(markerMenu)
+ <Btn3Up>: popdown(markerMenu)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: m_input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+# Popup menu in effect when inside marker.
+createMenu markerMenu imagewin {
+ { Marker f.title }
+ { f.dblline }
+ { Zoom f.exec {
+ zoomMarker $marker equal
+ send $marker destroy
+ } }
+ { Fill f.exec {
+ zoomMarker $marker fill
+ send $marker destroy
+ } }
+ { Print f.exec {
+ send $marker getRect interior x0 y0 nx ny
+ setPrintCorners $x0 [expr $y0 + $ny -1] \
+ [expr $x0 + $nx -1] $y0
+ send client print $x0 $y0 $nx $ny
+ } }
+ { Save f.exec {
+ send imagewin setCursorType busy
+ send $marker getRect interior x0 y0 nx ny
+ send client save $x0 $y0 $nx $ny
+ send imagewin setCursorType idle
+ } }
+ { Info f.exec {
+ send infoText append \
+ [format "%s\n" [send $marker getRegion unmap]]
+ } }
+ { Unrotate f.exec {
+ send $marker setAttribute rotangle 0
+ } }
+ { f.dblline }
+ { Color f.menu markerColor }
+ { Type f.menu markerType }
+ { f.dblline }
+ { Destroy f.exec {
+ send $marker destroy
+ } }
+}
+
+createMenu markerType markerMenu {
+ { Type f.title }
+ { f.dblline }
+ { Rectangle f.exec "m_setType $marker rectangle" }
+ { Box f.exec "m_setType $marker box" }
+ { Circle f.exec "m_setType $marker circle" }
+ { Ellipse f.exec "m_setType $marker ellipse" }
+ { Polygon f.exec "m_setType $marker polygon" }
+}
+
+createMenu markerColor markerMenu {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "m_setColor $marker black"
+ bitmap solid foreground black }
+ { "" f.exec "m_setColor $marker white"
+ bitmap solid foreground white }
+ { "" f.exec "m_setColor $marker red"
+ bitmap solid foreground red }
+ { "" f.exec "m_setColor $marker green"
+ bitmap solid foreground green }
+ { "" f.exec "m_setColor $marker blue"
+ bitmap solid foreground blue }
+ { "" f.exec "m_setColor $marker magenta"
+ bitmap solid foreground magenta }
+ { "" f.exec "m_setColor $marker cyan"
+ bitmap solid foreground cyan }
+ { "" f.exec "m_setColor $marker yellow"
+ bitmap solid foreground yellow }
+}
+
+proc m_setType {marker type} {
+ send $marker "markpos; set type $type; redraw"
+}
+proc m_setColor {marker color} {
+ send $marker "markpos;
+ set lineColor $color; set highlightColor $color; redraw"
+}
+
+# Callback executed when a marker gets or loses the focus.
+proc selectMarker {active_marker event event_data} \
+{
+ global marker
+ switch $event {
+ focusIn { set marker $active_marker }
+ focusOut { }
+ }
+}
+
+# Create marker action. Makes a new marker.
+proc makeMarker {parent x y} \
+{
+ global markerTranslations markno
+ set marker marker$markno; incr markno
+
+ send $parent createMarker $marker \
+ type rectangle \
+ createMode interactive \
+ translations $markerTranslations \
+ x $x \
+ y $y
+
+ send $marker addCallback selectMarker focusIn focusOut
+}
+
+
+
+# WCSBOX -- Real time coordinate display.
+
+set track_enable 0
+set last_x 0
+set last_y 0
+
+proc wcsUpdate {x y} \
+{
+ global track_enable frame pixtab_up tabTop
+ global frameWidth frameHeight redraw_compass
+ global ism_enable wcsLabels last_x last_y
+ global ct_warn plotSpeed doHcut doVcut
+
+
+ # If the cursor was frozen release it now.
+ if {$ct_warn} {
+ curtrack_destroy
+ }
+
+ # Convert screen coords to raster pixel.
+ send imagewin unmapPixel $x $y raster rx ry rz
+
+ # Set the current frame to the frame the pointer is within.
+ if {$frame && $raster} {
+ set track_frame [send client getFrame $raster]
+ if {$frame != $track_frame} {
+ send client setFrame $track_frame
+ }
+ }
+
+ # Update coords box.
+ if {$raster} {
+ set text [send client encodewcs $rx $ry $rz]
+ scan $text "%g %g %g" nx ny nz
+ } else {
+ set text [format " %7.2f %7.2f %9.1f " $rx $ry $rz]
+ set nx $rx ; set ny $ry ; set nz $rz
+ }
+
+ # Update the coords panel and pixel table.
+ wcsFmtSValue $nz
+ if {$pixtab_up} {
+ updatePixelTable $x $y $nx $ny
+ }
+
+ # If the ISM is running update the coords box with all the selected
+ # options, otherwise just write the one-line frame wcs coords.
+ if {$ism_enable} {
+ updateCoordsBox
+
+ } else {
+ # Update the on-screen marker.
+ if {$track_enable} {
+ send wcsbox "set text \{$text\}; redraw noerase"
+ }
+
+ # Update the control panel readout (always done).
+ if {$wcsLabels} {
+ set ln [format " X: %12s Y: %12s WCS: Display" $nx $ny]
+ } else {
+ set ln [format " %12s %12s Display" $nx $ny]
+ }
+ send wtWcs1 set string $ln
+
+ if {$redraw_compass} \
+ drawCompass
+ }
+
+
+ # Update the cut-plots if enabled. If we're set for speed the don't
+ # track the really large cursor motions, wait till the differences are
+ # small indicating a finer motion.
+ if {$doHcut || $doVcut} {
+ set dist [ expr "sqrt(pow(($last_x - $x),2) + pow(($last_y - $y),2))" ]
+ if {($plotSpeed && $dist < 30) || ! $plotSpeed} {
+ cutPlots $x $y
+ }
+ }
+
+ # Save the position so we can track differences with last position.
+ set last_x $x
+ set last_y $y
+}
+
+
+proc setTrack {state} \
+{
+ global ism_enable track_enable wcsboxGeom
+ global winWidth winHeight up_todo
+
+ if {$state} {
+ if {$track_enable} \
+ return
+
+ send imagewin createMarker wcsbox {
+ type text
+ createMode noninteractive
+ width 27ch
+ height 1ch
+ lineWidth 0
+ imageText true
+ textBgColor black
+ textColor yellow
+ visible false
+ }
+
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ send wcsbox setAttributes \
+ x $x \
+ y $y \
+ activated true \
+ visible true \
+ sensitive true
+
+ send wcsbox {
+ addCallback wcsboxDestroyCallback destroy
+ addCallback wcsboxMoved moveResize
+ }
+
+ send imagewin addCallback wcsboxWindowResize resize
+ set track_enable 1
+ send imagewin getCursorPos x y
+ wcsUpdate $x $y
+ magnifierMapImage $x $y
+
+ # Turn on the option toggles on the control panel.
+ foreach n {1 2 3 4} {
+ if {[send sysWcs$n get label] != "None"} {
+ send wiWcs$n set on True
+ }
+ }
+ if {$ism_enable} {
+ resizeCoordsBox $up_todo
+ }
+
+ } elseif {$track_enable} {
+ set track_enable 0
+ send wcsbox destroy
+
+ # Turn off the option toggles on the control panel.
+ foreach w {wiWcs1 wiWcs2 wiWcs3 wiWcs4} { send $w set on False }
+ resizeCoordsBox 0
+ }
+ updateCoordsBox
+}
+
+proc wcsboxDestroyCallback args \
+{
+ global track_enable
+ send imagewin deleteCallback wcsboxWindowResize
+ set track_enable 0
+}
+
+# If the window is resized make the wcsbox track the corner.
+proc wcsboxWindowResize args \
+{
+ global track_enable
+ global wcsboxGeom
+
+ if {$track_enable} {
+ # Get new location.
+ set box_width [send wcsbox get width]
+ set box_height [send wcsbox get height]
+ set defGeom [format "%sx%s-5-5" $box_width $box_height]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ # Move the marker.
+ send wcsbox "\
+ deleteCallback wcsboxMoved; \
+ markpos; setAttributes x $x y $y; redraw; \
+ addCallback wcsboxMoved moveResize"
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+ }
+}
+
+proc wcsboxMoved {marker event position} \
+{
+ global wcsboxGeom
+ send wcsbox getRect boundary x y width height
+ set wcsboxGeom [send imagewin getGeometry $x $y $width $height]
+}
+
+proc resetWcsbox {param old new} \
+{
+ global track_enable wcsboxGeom displayCoords
+ if {$new == "done"} {
+ setTrack [true $displayCoords]
+ } elseif {$track_enable} {
+ setTrack 0
+ if {$new == "restart"} {
+ set wcsboxGeom -5-5
+ }
+ }
+}; send initialize addCallback resetWcsbox
+
+
+
+#---------------------
+# FRAME BLINK.
+#---------------------
+set blinkId 0
+set blinkIndex 0
+
+proc toggleBlink args \
+{
+ global blinkId blinkRate blinkIndex
+ global optionsMenuDescription
+
+ if {$blinkId} {
+ deleteTimedCallback $blinkId
+ set blinkId 0
+ } else {
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+ }
+
+ set blinkIndex 0
+ editMenu optionsMenu viewButton $optionsMenuDescription
+}
+
+proc blink args \
+{
+ global blinkId blinkRate blinkFrames blinkIndex
+
+ send client setFrame [lindex $blinkFrames $blinkIndex]
+ incr blinkIndex
+ if {$blinkIndex >= [llength $blinkFrames]} {
+ set blinkIndex 0
+ }
+
+ set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]
+}
+
+proc resetBlink args \
+{
+ global blinkId
+ if {$blinkId} \
+ toggleBlink
+}; send initialize addCallback resetBlink
+
+
+
+# Normalize -- Reset the view parameters for the current frame.
+proc normalize args \
+{
+ global zoomindex zoomfactor
+ global frameWidth frameHeight
+ global xcen ycen frame
+
+ #set zoomindex($frame) 0
+ #set xcen [expr $frameWidth / 2]
+ #set ycen [expr $frameHeight / 2]
+ #send client zoom 1 1 $xcen $ycen
+ send client updateColormap 0.5 1.0
+}
+
+
+# Popdown menus.
+createMenu fileMenu fileButton {
+ { "Info" f.exec { panelTabToggle info_panel } }
+ { "Load" f.exec {
+ panelTabToggle load_panel
+ set panel_up 1
+ } }
+ { "Save" f.exec { Save } }
+ { "Save As..." f.exec { panelTabToggle save_panel } }
+ { "Print" f.exec {
+ send imagewin setCursorType busy
+ Print
+ send imagewin setCursorType idle
+ } }
+ { "Print Setup" f.exec { panelTabToggle print_panel } }
+ { f.dblline }
+ { "Reset" f.exec {
+ # Do a hard reset.
+ send client Reset
+ #resetView initialize done done
+ } }
+ { "Debug Panel" f.exec { tclPanel 1 } }
+ { "Quit" f.exec { Quit } }
+}
+
+createMenu viewMenu viewButton {
+ { "Next frame" f.exec nextFrame }
+ { "Prev frame" f.exec prevFrame }
+ { f.dblline }
+ { "Colormap" f.menu cmapMenu }
+ { "Flip" f.menu flipMenu }
+ { f.dblline }
+ { "Equal aspect" f.exec {
+ set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr ($xmag + $ymag) / 2.0]
+ cpZoom $zoom $zoom fixed
+ } }
+ { "Integer zoom" f.exec {
+ set xmag [expr round ($frameZoomX($frame))]
+ set ymag [expr round ($frameZoomY($frame))]
+ cpZoom $xmag $ymag fixed
+ } }
+ { "Toggle zoom" f.exec toggleZoom }
+ { "Unzoom" f.exec {
+ set zoomindex($frame) 0
+ set mag $zoomfactor($zoomindex($frame))
+ send client zoom $mag $mag $xcen $ycen
+ } }
+}
+
+createMenu cmapMenu viewMenu {
+ { "Normalize" f.exec normalize }
+ { "Invert" f.exec cpInvert }
+ { "Optimize" f.exec cpOptimize sensitive false }
+ { f.dblline }
+ { "Grayscale" f.exec "send client setColormap Grayscale" }
+ { "Color" f.exec "send client setColormap Color" }
+ { "Heat" f.exec "send client setColormap Heat" }
+ { "HSV" f.exec "send client setColormap HSV" }
+ { "AIPS0" f.exec "send client setColormap AIPS0" }
+ { "Halley" f.exec "send client setColormap Halley" }
+ { "Ramp" f.exec "send client setColormap Ramp" }
+ { "Standard" f.exec "send client setColormap Standard" }
+ { "Staircase" f.exec "send client setColormap Staircase" }
+ { "Rainbow1" f.exec "send client setColormap Rainbow1" }
+ { "Rainbow2" f.exec "send client setColormap Rainbow2" }
+ { "Random8" f.exec "send client setColormap Random8" }
+}
+
+createMenu flipMenu viewMenu {
+ { "Flip X" f.exec xflip }
+ { "Flip Y" f.exec yflip }
+ { "Flip XY" f.exec xyflip }
+}
+
+set optionsMenuDescription {
+ { "Autoscale" f.exec {
+ set value [send autoscaleButton get on]
+ send autoscaleButton set on [expr !$value]
+ cpSetAutoscale
+ } }
+ { "Antialias" f.exec {
+ set value [send antialiasButton get on]
+ send antialiasButton set on [expr !$value]
+ cpSetAntialias
+ } }
+ { "Panner" f.exec { setPanner [expr !$panner_enable] } }
+ { "Magnifier" f.exec { setMagnifier [expr !$magnifier_enable] }}
+ { "Coords box" f.exec { setTrack [expr !$track_enable] } }
+ { "Tile frames" f.exec {
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+ } }
+ { "Clear frame" f.exec clearFrame }
+ { "Fit frame" f.exec fitFrame }
+ { "Match LUTs" f.exec cpMatchFrames }
+ { "Auto-Register" f.exec cpAutoRegister }
+ { "Register" f.exec cpRegisterFrames }
+ { {$blinkId ? "Stop blink" : "Blink frames"}
+ f.exec toggleBlink }
+ { f.dblline }
+ { "Control Panel" f.exec { panelTabToggle display_panel } }
+ { "Print Panel" f.exec { panelTabToggle print_panel } }
+ { "Load Panel" f.exec { panelTabToggle load_panel } }
+ { "Save Panel" f.exec { panelTabToggle save_panel } }
+}; createMenu optionsMenu optionsButton $optionsMenuDescription
+
+
+
+#-------------------------------
+# Frozen Cursor Warning Message
+#-------------------------------
+
+set ct_warn 0
+
+proc curtrack_msg { x y args } \
+{
+ global ct_warn last_x last_y winHeight winWidth
+
+
+ if {! $ct_warn == 0} {
+ return
+ }
+
+ send imagewin createMarker curtrack_warn {
+ type text
+ createMode noninteractive
+ width 25ch
+ height 21
+ lineWidth 0
+ imageText true
+ textBgColor red
+ textColor yellow
+ visible true
+ sensitive true
+ activated true
+ x 5
+ y 5
+ }
+
+ send curtrack_warn "set text \{ CURSOR READOUT FROZEN \}"
+ set ypos [ expr ($winHeight - 25) ]
+ send curtrack_warn "markpos; setAttributes x 5 y $ypos; redraw"
+ send curtrack_warn "redraw noerase"
+ set ct_warn 1
+
+ # Mark the position of the cursor.
+ send imagewin createMarker x_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x 1 \
+ y $last_y \
+ width $winWidth \
+ height 1 \
+ activated True \
+ visible True \
+ sensitive False
+
+ send imagewin createMarker y_curpos \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $last_x \
+ y 1 \
+ width 1 \
+ height $winHeight \
+ activated True \
+ visible True \
+ sensitive False
+
+ # Raise the coordinate marker so we can see where we are.
+ send wcsbox raise
+}
+
+
+proc curtrack_destroy args \
+{
+ global ct_warn
+
+ if {$ct_warn} {
+ send curtrack_warn destroy
+ send x_curpos destroy
+ send y_curpos destroy
+ set ct_warn 0
+ }
+}
+
+
+################################################################################
+# CURSOR CENTEROID AND AUTO-REGISTER FUNCTIONS.
+################################################################################
+
+# Set the centroiding box size.
+set ctid 0
+set cid 0
+
+proc cbxDestroy args \
+{
+ global centerBoxSize cid ctid
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+}
+
+proc setCtrBoxSize { x y delta args } \
+{
+ global centerBoxSize cid ctid
+ global cpXscale cpYscale
+
+ incr centerBoxSize $delta
+ if {$centerBoxSize <= 1} { set centerBoxSize 1 }
+
+ # Kill off any old markers before drawing the new one.
+ catch {
+ if {$ctid != 0} {
+ send cbm$cid destroy
+ deleteTimedCallback $ctid
+ set ctid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr cid
+ send imagewin createMarker cbm$cid \
+ type box \
+ createMode noninteractive \
+ lineColor red \
+ x $x \
+ y $y \
+ width [expr $cpXscale * $centerBoxSize] \
+ height [expr $cpXscale * $centerBoxSize] \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ctid [ postTimedCallback cbxDestroy 500]
+}
+
+
+# Box size is half-width of the marker size. Value is the slider value.
+set focusBoxSize $winWidth
+set focusValue 100.0
+set fid 0
+set ftid 0
+set moving 0
+
+proc setFocusBoxSize { sz args } \
+{
+ global focusBoxSize fid ftid focusValue moving
+ global winWidth winHeight
+
+
+ if { $moving == 0 } {
+ return done
+ }
+
+ if { $winWidth < $winHeight } {
+ set max [expr $winWidth / 2 - 64]
+ } else {
+ set max [expr $winHeight / 2 - 64]
+ }
+ set focusBoxSize [expr 64 + ($sz * $max) - 1]
+ #send client setOption cmfocus [expr ($focusBoxSize / 2)]
+ send client setOption cmfocus $focusBoxSize
+
+ # Destroy any existing markers.
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+
+ # create a transient marker indicating the centering box and post a
+ # callback to delete it in about a second.
+ incr fid
+ send imagewin createMarker fm$fid \
+ type box \
+ createMode noninteractive \
+ lineColor green \
+ lineWidth 4 \
+ x [expr $winWidth / 2] \
+ y [expr $winHeight / 2] \
+ width $focusBoxSize \
+ height $focusBoxSize \
+ activated True \
+ visible True \
+ sensitive False
+
+ set ftid [ postTimedCallback fbxDestroy 500]
+ set moving 0
+}
+
+proc fbxDestroy args \
+{
+ global fid ftid moving
+ catch {
+ if {$ftid != 0} {
+ send fm$fid destroy
+ set ftid 0
+ }
+ }
+}
+
+proc setFocusSize { widget cbtype x y } \
+{
+ global focusValue ftid moving
+
+ # Only update once we've stopped the movement.
+ if { $x == $focusValue && $moving == 1 } {
+ set ftid [ postWorkProc setFocusBoxSize $x ]
+ } else {
+ set moving 1
+ }
+ set focusValue $x
+} ; send focusSlider addCallback setFocusSize scroll
+
+
+# Compute a centroid offset for the current position to peak-up on the
+# feature.
+
+proc centroid { x y type args } \
+{
+ global centerBoxSize
+ global cpXscale cpYscale
+
+ # Convert to image coords.
+ set sz [expr "int ($centerBoxSize * $cpXscale)"]
+
+ # Get the centroid position.
+ if {$type != "min"} {
+ if {[send peakupButton get on]} {
+ set center [ send client centroid $x $y $sz ]
+ } else {
+ set center [ send client centroid $x $y $sz max ]
+ }
+ } else {
+ set center [ send client centroid $x $y $sz min ]
+ }
+
+ # Now reposition the cursor.
+ set xoff [lindex $center 0 ]
+ set yoff [lindex $center 1 ]
+ move_cursor $xoff $yoff
+}
+
+
+# Set the auto-register center offset position
+proc offset { x y args } \
+{
+ global frame blinkFrames auto_reg
+ global frameCenterX frameCenterY
+ global frameOffsetX frameOffsetY
+
+ # No-op of auto-register isn't on.
+ if { $auto_reg == 0 } {
+ Wexec client "Auto-Register is not enabled!"
+ return
+ }
+
+ # If we're not in the blink frames list ignore the request.
+ if { [string first $frame $blinkFrames] == -1 } {
+ Wexec client "Frame not in current\nregister list."
+ return
+ }
+
+ set rx $x; set ry $y
+ set raster 0
+
+ # Convert raw screen coordinates to frame buffer raster coordinates.
+ send imagewin unmapPixel $x $y raster rx ry
+
+ # Select a pixel.
+ set xoff [expr "int ($rx) - $frameCenterX($frame)" ]
+ set yoff [expr "int ($ry) - $frameCenterY($frame)" ]
+
+ set frameOffsetX($frame) $xoff
+ set frameOffsetY($frame) $yoff
+
+ # Adjust the display.
+ send client setOffset $xoff $yoff
+}
+
+
+
+################################################################################
+# MAIN CONTROL PANEL
+################################################################################
+
+
+# Global control panel buttons.
+# -------------------------------
+proc cpInitialize args \
+{
+ send imagewin setCursorType busy
+ send client initialize
+ send imagewin setCursorType idle
+}
+send initializeButton addCallback cpInitialize
+send normalizeButton addCallback normalize
+
+# Temporarily deactivate some buttons.
+send optimizeButton setSensitive false
+
+#-----------------------------------------------------------------------------
+
+foreach i $frames {set saveView($i) "1 1"}
+
+send prevFrame set bitmap larrow
+send nextFrame set bitmap rarrow
+send contrastLabel set bitmap contrast
+send brightnessLabel set bitmap brightness
+send contrastSlider resizeThumb 0.1 1.0
+send brightnessSlider resizeThumb 0.1 1.0
+send focusSlider "resizeThumb 0.1 1.0 ; moveThumb 1.0"
+
+
+# panel -- Toggle control panel display.
+proc panel args \
+{
+ global panel_up
+ if {$panel_up} {
+ send panelShell unmap
+ set panel_up 0
+ } else {
+ send panelShell map
+ set panel_up 1
+ }
+}
+
+proc pbTracePanel {name element op} \
+{
+ catch {
+ upvar $name panel_up
+ send controlButton set state $panel_up
+ }
+} ; trace variable panel_up w pbTracePanel
+
+
+# resetPanel -- Calling during startup or in an initialize, to reset things.
+proc resetPanel {param old new} \
+{
+ global frame nframes frames
+ global displayPanner displayMagnifier displayCoords
+ global blinkFrames warnings peakCentroid
+
+ switch $new {
+ startup {
+ }
+ restart { foreach i $frames {
+ send frame$frame set on 0
+ }
+
+ # Initialize to hide the extra frames.
+ send frlistBox set width 30
+ }
+ done { if {$frame} {
+ send frame$frame set on 1
+ }
+
+ cpResetBlink
+ set button 1
+ foreach i {1 2 3 4} {
+ send blinkFrame$button set label $i
+ incr button
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+
+ cpResetEnhance
+ send pannerButton set on [true $displayPanner]
+ send magnifierButton set on [true $displayMagnifier]
+ send coordsBoxButton set on [true $displayCoords]
+ send warningsButton set on $warnings
+ send peakupButton set on [true $peakCentroid]
+ }
+ }
+}; send initialize addCallback resetPanel
+
+
+
+# Control Panel Tabs widget procedures.
+#----------------------------------------
+
+set cpTabs { display_panel print_panel load_panel save_panel \
+ info_panel wcs_panel tile_panel}
+set tabTop "display_panel"
+
+
+# Resize the control panel depending on the Tab selected.
+proc cpResizeCB { widget event a b c d e args } \
+{
+ global tabTop fileList
+
+ # Handle only the first exposure event generated.
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ set tabTop $widget
+
+ switch $widget {
+ display_panel { send panel set height 595 }
+ print_panel { send panel set height 545 }
+ load_panel { send panel set height 485
+ if { [send browseHdrs get on] } {
+ send imageList setList $fileList resize
+ } else {
+ send client setLoadOption rescan
+ }
+ }
+ save_panel { send panel set height 325 }
+ info_panel { send panel set height 380 }
+ tile_panel { send panel set height 405 }
+ wcs_panel { setCoordPanelHeight }
+ }
+ }
+} ; foreach w $cpTabs { send $w addEventHandler cpResizeCB exposureMask }
+
+
+proc panelDismiss args \
+{
+ global panel_up
+ send panelShell unmap
+ set panel_up 0
+} ; send panelClose addCallback panelDismiss
+
+
+proc panelTabToggle { panel args } \
+{
+ global tabTop panel_up TabToWidget
+
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $TabToWidget($panel) set state 0
+ set panel_up 0
+
+ } else {
+ # Special cases for each panel.
+ if {$panel == "load_panel"} {
+ send client setLoadOption rescan
+ }
+
+ send panelTabs setTop $panel
+ set tabTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send panelShell map
+ set panel_up 1
+ }
+
+ }
+}
+
+proc displayPanel args { panelTabToggle display_panel }
+proc infoPanel args { panelTabToggle info_panel }
+proc loadPanel args { panelTabToggle load_panel }
+proc savePanel args { panelTabToggle save_panel }
+proc printPanel args { panelTabToggle print_panel }
+proc tilePanel args { panelTabToggle tile_panel }
+proc wcsPanel args { panelTabToggle wcs_panel }
+
+
+
+
+# Frame selection.
+# -------------------------------
+proc cpSetFrame {widget args} \
+{
+ send $widget set on 0
+ send client setFrame [send $widget get label]
+}
+
+proc cpFrameChanged {param old new} \
+{
+ global frameCache
+
+ if {$old > 0} {
+ send frame$old set on 0
+ }
+ if {$new > 0} {
+ send frame$new set on 1
+ }
+
+ # The first time we request frame 5 or higher reset
+ # the extra frame buttons on the control panel to make
+ # them visible.
+ if {$new >= 5} {
+ send frlistBox set width 49
+ }
+
+ # Update the header panel object list.
+ catch {
+ # Only update when the header panel is open.
+ if {[info exists frameCache($new)] && [send imageHeader get on]} {
+ setHdrObjMenu $new
+ getHeader [lindex $frameCache($new) 0] [lindex $frameCache($new) 1]
+ }
+ }
+}
+
+send prevFrame addCallback prevFrame
+send nextFrame addCallback nextFrame
+send frame addCallback cpFrameChanged
+for {set i 1} {$i <= 16} {incr i} {send frame$i addCallback cpSetFrame}
+
+# Initialize to hide the extra frames.
+send frlistBox set width 30
+
+proc blinkPanelCB { widget type state args } \
+{
+ if {$state} {
+ send blink_panel map
+ } else {
+ send blink_panel unmap
+ }
+} ; send blinkPanel addCallback blinkPanelCB
+
+proc blinkPanelClose args \
+{
+ send blink_panel unmap
+ send blinkPanel set state 0
+} ; send brClose addCallback blinkPanelClose
+
+
+
+# Frame buttons.
+proc cpFrameAction {widget args} \
+{
+ global frameZoomX frameZoomY frame
+ switch $widget {
+ aspect { set xmag $frameZoomX($frame)
+ set ymag $frameZoomY($frame)
+ set zoom [expr round (($xmag + $ymag) / 2.0)]
+ cpZoom $zoom $zoom fixed
+ }
+ flipX { send client flip x }
+ flipY { send client flip y }
+ flipXY { send client flip x y }
+ clearFrame { clearFrame }
+ fitFrame { fitFrame }
+ }
+}
+foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {
+ send $widget addCallback cpFrameAction
+}
+
+# clearFrame -- Clear the current display frame.
+proc clearFrame args \
+{
+ global warnings
+ if {$warnings} {
+ Wexec client \
+ "Clearing the frame will destroy\n\
+ all data in the frame" \
+ clearFrame
+ } else {
+ send client clearFrame
+ }
+}
+
+# fitFrame -- Resize the display window to fit the frame buffer.
+proc fitFrame args \
+{
+ global frameWidth frameHeight winWidth winHeight
+ set dw [expr [send display get width] - $winWidth]
+ set dh [expr [send display get height] - $winHeight]
+ send display "resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]"
+}
+
+proc initFitFrame { param old new } \
+{
+ if { [lindex $new 0] == "resize"} {
+ fitFrame
+ }
+ pannerMapImage init
+}; send frameFit addCallback initFitFrame
+
+
+
+# Zoom and pan buttons.
+# -------------------------------
+proc cpZoomAction {widget args} \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ x1 { cpZoom 1 1 fixed }
+ z2 { cpZoom 2 2 fixed }
+ z3 { cpZoom 3 3 fixed }
+ z4 { cpZoom 4 4 fixed }
+ z5 { cpZoom 5 5 fixed }
+ z8 { cpZoom 8 8 fixed }
+
+ d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }
+ d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }
+ d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }
+ d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }
+ d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }
+
+ zoomIn { cpZoom 2.0 2.0 relative }
+ zoomOut { cpZoom 0.5 0.5 relative }
+
+ centerFrame { send client pan \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ }
+ toggleZoom { toggleZoom }
+ }
+}
+
+proc cpZoom {zoom_x zoom_y mode} \
+{
+ global frameZoomX frameZoomY zoomindex frame
+ global frameOffsetX frameOffsetY frameCenterX frameCenterY
+
+ if {$mode == "fixed"} {
+ #send client zoom $zoom_x $zoom_y
+ send client zoomAbs $zoom_x $zoom_y \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ #send client zoom \
+ # [expr $frameZoomX($frame) * $zoom_x] \
+ # [expr $frameZoomY($frame) * $zoom_y]
+ send client zoomAbs \
+ [expr $frameZoomX($frame) * $zoom_x] \
+ [expr $frameZoomY($frame) * $zoom_y] \
+ $frameCenterX($frame) $frameCenterY($frame) \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ }
+
+ set zoomindex($frame) 0
+}
+
+proc toggleZoom args \
+{
+ global frameZoomX frameZoomY frameCenterX frameCenterY
+ global frameWidth frameHeight saveView frame
+
+ if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {
+ set saveView($frame) \
+ "$frameZoomX($frame) $frameZoomY($frame) \
+ $frameCenterX($frame) $frameCenterY($frame)"
+ send client zoom 1 1 \
+ [expr $frameWidth/2.0] \
+ [expr $frameHeight/2.0]
+ } else {
+ send client zoom $saveView($frame)
+ }
+}
+
+foreach widget { toggleZoom centerFrame zoomIn zoomOut \
+ x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8 } {
+ send $widget addCallback cpZoomAction
+}
+
+# Frame data display.
+# -------------------------------
+set cpFrame 0
+set cpXcen 0
+set cpYcen 0
+set cpXmag 0
+set cpYmag 0
+set cpXscale 0
+set cpYscale 0
+set cpXoff 0
+set cpYoff 0
+
+proc cpDisplayFrameData {name old new} \
+{
+ global cpFrame cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ set update 0
+ switch $name {
+ frame { if {$new != $cpFrame} {
+ set cpFrame $new
+ set update 1
+ }
+ }
+ frameView { # Parse the frameView input.
+ set xmag [lindex $new 0]; set ymag [lindex $new 1]
+ set xcen [lindex $new 2]; set ycen [lindex $new 3]
+ set xnorm [lindex $new 4]; set ynorm [lindex $new 5]
+ set xoff [lindex $new 6]; set yoff [lindex $new 7]
+
+ # We need client coords and the overall scale factors.
+ set text [send client encodewcs $xcen $ycen]
+ set xcen [lindex $text 0]
+ set ycen [lindex $text 1]
+ set xscale [expr $xmag * $xnorm]
+ set yscale [expr $ymag * $ynorm]
+
+ if {$xcen != $cpXcen || $ycen != $cpYcen ||
+ $xmag != $cpXmag || $ymag != $cpYmag ||
+ $xoff != $cpXoff || $yoff != $cpYoff ||
+ $xscale != $cpXscale || $yscale != $cpYscale} {
+
+ set cpXcen $xcen; set cpXscale $xscale
+ set cpYcen $ycen; set cpYscale $yscale
+ set cpXmag $xmag; set cpXoff $xoff;
+ set cpYmag $ymag; set cpYoff $yoff;
+ set update 1
+ }
+ }
+ }
+
+ if {$update} {
+ set header [format "-- Frame %d --" $cpFrame]
+ set center [format "X center: %0.1f\nY center: %0.1f" $cpXcen $cpYcen]
+ if {int($cpXmag) >= 10} {
+ set zoom1 [format " X zoom: %0.1f" $cpXmag]
+ set zoom2 [format " Y zoom: %0.1f" $cpYmag]
+ } else {
+ set zoom1 [format "X zoom: %0.1f" $cpXmag]
+ set zoom2 [format "Y zoom: %0.1f" $cpYmag]
+ }
+ if {int($cpXscale) >= 10} {
+ set scale1 [format "X scale: %0.1f" $cpXscale]
+ set scale2 [format "Y scale: %0.1f" $cpYscale]
+ } else {
+ set scale1 [format "X scale: %0.2f" $cpXscale]
+ set scale2 [format "Y scale: %0.2f" $cpYscale]
+ }
+ set offset [format " Offset: (%0.1f,%0.1f)" $cpXoff $cpYoff]
+
+ send frameData set label [format "%s\n%s\n%s\n%s\n%s\n%s\n%s" \
+ $header $center $scale1 $scale2 $zoom1 $zoom2 $offset \
+ ]
+ }
+}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}
+
+
+# Frame enhancement.
+# -------------------------------
+set cpEnhanceDisable 0
+set cpEnhanceId 0
+set cpEnhanceMode none
+set cpEnhanceVal 0
+set cpListItem none
+
+# Windowing the colormap is slow when the mouse is not in the image window,
+# so it is necessary to execute the windowColormap in a work procedure.
+# This allows any number of slider motion events to be processed for each
+# windowColormap, preventing slider events from queueing up.
+
+proc cpResetEnhance args \
+{
+ global cpListItem cpEnhanceId
+ set cpListItem none
+ set cpEnhanceId 0
+}
+
+proc cpSetEnhancement {widget cbtype x y} \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable
+ set cpEnhanceMode $widget
+ set cpEnhanceVal $x
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceId [postWorkProc cpEnhanceProc]
+ }
+}
+proc cpEnhanceProc args \
+{
+ global cpEnhanceMode cpEnhanceVal cpEnhanceId
+ global enhancement frame maxContrast
+ set val $cpEnhanceVal
+
+ if {$cpEnhanceMode == "contrastSlider"} {
+ set contrast [lindex $enhancement($frame) 2]
+ send client windowColormap [lindex $enhancement($frame) 1] \
+ [expr (($contrast < 0) ? -$val : $val) * $maxContrast]
+ } else {
+ send client windowColormap $val
+ }
+
+ set cpEnhanceId 0
+ return done
+}
+
+proc cpInvert args \
+{
+ global enhancement frame
+ set contrast [lindex $enhancement($frame) 2]
+ send client updateColormap [lindex $enhancement($frame) 1] \
+ [expr -1.0 * $contrast]
+}
+
+proc cpDisplayEnhancement {param old new} \
+{
+ global cpEnhanceId maxContrast cpEnhanceDisable
+ global cpListItem enhancement frame
+
+ if {!$frame} \
+ return
+ set enhance $enhancement($frame)
+ if {[llength $enhance] < 3} \
+ return
+
+ set colortable [lindex $enhance 0]
+ set offset [lindex $enhance 1]
+ set scale [lindex $enhance 2]
+
+ send colordata set label [format "-- %s --\nCon %0.2f Brt %0.2f" \
+ $colortable $scale $offset]
+
+ if {$colortable != $cpListItem} {
+ send colorlist highlight $colortable
+ set cpListItem $colortable
+ }
+
+ if {!$cpEnhanceId && !$cpEnhanceDisable} {
+ set cpEnhanceDisable 1
+ send contrastSlider moveThumb [expr abs($scale) / $maxContrast]
+ send brightnessSlider moveThumb $offset
+ set cpEnhanceDisable 0
+ }
+}
+
+foreach i {enhancement frame} {
+ send $i addCallback cpDisplayEnhancement
+}
+send contrastSlider addCallback cpSetEnhancement scroll
+send brightnessSlider addCallback cpSetEnhancement scroll
+send invertButton addCallback cpInvert
+
+
+# Colortable display and selection.
+# -------------------------------
+set colorTables {}
+
+proc cpSetColorList {param old new} \
+{
+ set colorTables $new
+ send colorlist setList $new resize
+}; send colortables addCallback cpSetColorList
+
+proc colorlistResize args \
+{
+ global colorTables
+ send colorlist setList $colorTables resize
+}; send colorlist addEventHandler colorlistResize ResizeRedirectMask
+
+proc cpSelectColor {widget cbtype selections indices} \
+{
+ global colortable
+ foreach selection $selections {
+ send client setColormap $selection
+ }
+}; send colorlist addCallback cpSelectColor
+
+
+# Frame blink.
+# -------------------------------
+send BRtext set label $blinkRate
+send brBRtext set label $blinkRate
+
+proc cpSetBlinkRate {w args} \
+{
+ global blinkRate
+ if {$w == "BRincrease" || $w == "brBRincrease"} {
+ if {$blinkRate < 0.01} {
+ set blinkRate 0.125
+ } else {
+ set blinkRate [expr $blinkRate * 2.0]
+ }
+ } else {
+ set blinkRate [expr $blinkRate / 2.0]
+ if {$blinkRate < 0.01} {
+ set blinkRate 0
+ }
+ }
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+}
+foreach w {BRincrease BRdecrease brBRincrease brBRdecrease} {
+ send $w addCallback cpSetBlinkRate
+}
+
+proc cpSetBlinkFrame {widget args} \
+{
+ global blinkFrames frames nframes
+
+ set frame [send $widget get label]
+ if {$frame == " "} {
+ set frame 1
+ } else {
+ incr frame
+ if {$frame > $nframes} {
+ set frame " "
+ }
+ }
+ send $widget set label $frame
+
+ set blinkFrames {}
+ foreach i {1 2 3 4} {
+ set frame [send blinkFrame$i get label]
+ if {$frame != " "} {
+ lappend blinkFrames $frame
+ }
+ }
+}; foreach i {1 2 3 4} {send blinkFrame$i addCallback cpSetBlinkFrame}
+
+proc cpBlink {widget args} \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send blinkButton set on False
+ send brBlinkButton set on False
+ blink
+ } elseif {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+} ; foreach w {blinkButton brBlinkButton} {send $w addCallback cpBlink}
+
+
+proc cpAutoRegister {widget type state args} \
+{
+ global auto_reg frame frames blinkFrames
+ global frameZoomX frameZoomY frameOffsetX frameOffsetY
+
+ set auto_reg $state
+ if {$auto_reg == 1} {
+ send autoregButton set on True
+ send brAregButton set on True
+ } else {
+ send autoregButton set on False
+ send brAregButton set on False
+ }
+
+ # Register the frames to zero the offsets.
+ send client registerFrames \{$blinkFrames\}
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+} ; foreach w {autoregButton brAregButton} {send $w addCallback cpAutoRegister}
+
+
+proc toggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ }
+}
+
+proc resetAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} \
+ toggleAutoReg
+}; send initialize addCallback resetAutoReg
+
+
+proc cpResetBlink args \
+{
+ global blinkRate blinkFrames blinkIndex frames
+ global defaultBlinkRate
+
+ foreach i {1 2 3 4} {
+ send blinkFrame$i set label " "
+ }
+ for {set i 1} {$i <= 16} {incr i} {
+ send brFrame$i set label $i
+ }
+ set blinkRate $defaultBlinkRate
+ send BRtext set label $blinkRate
+ send brBRtext set label $blinkRate
+ set blinkIndex 0
+}
+send blinkReset addCallback cpResetBlink
+send brReset addCallback cpResetBlink
+
+proc cpTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send blinkButton set on [expr $blinkId != 0]
+ send brBlinkButton set on [expr $blinkId != 0]
+}; trace variable blinkId w cpTraceBlink
+
+proc cpSetBlinkFrames {param old new} \
+{
+ global blinkFrames frames
+
+ set blinkFrames {}
+ foreach i $frames {
+ if {$i <= $new} {
+ lappend blinkFrames $i
+ }
+ }
+ cpResetBlink
+ set button 1
+ for {set i 1} {$i <= $new} {incr i} {
+ if {$i <= 4} {
+ send blinkFrame$button set label $i
+ }
+ send brFrame$button set label $i
+ incr button
+ }
+}; send nframes addCallback cpSetBlinkFrames
+
+proc cpRegisterFrames args \
+{
+ global frames blinkFrames
+ global frameOffsetX frameOffsetY
+
+ foreach f $frames {
+ set frameOffsetX($f) 0
+ set frameOffsetY($f) 0
+ }
+ send client registerFrames \{$blinkFrames\}
+}
+send registerButton addCallback cpRegisterFrames
+send brRegButton addCallback cpRegisterFrames
+
+proc cpMatchFrames args \
+{
+ global blinkFrames
+ send client matchFrames \{$blinkFrames\}
+}
+send matchButton addCallback cpMatchFrames
+send brMatchButton addCallback cpMatchFrames
+
+
+# Options buttons.
+# -------------------------------
+proc cpSetPanner {widget args} \
+{
+ setPanner [send $widget get on]
+}; send pannerButton addCallback cpSetPanner
+
+proc cpTracePanner {name element op} \
+{
+ upvar $name panner_enable
+ send pannerButton set on $panner_enable
+}; trace variable panner_enable w cpTracePanner
+
+proc cpSetMagnifier {widget args} \
+{
+ setMagnifier [send $widget get on]
+}; send magnifierButton addCallback cpSetMagnifier
+
+proc cpTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send magnifierButton set on $magnifier_enable
+}; trace variable magnifier_enable w cpTraceMagnifier
+
+proc cpSetCoordsBox {widget args} \
+{
+ setTrack [send $widget get on]
+}; send coordsBoxButton addCallback cpSetCoordsBox
+
+proc cpTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send coordsBoxButton set on $track_enable
+}; trace variable track_enable w cpTraceCoordsBox
+
+proc cpSetWarnings args \
+{
+ global warnings
+ set warnings [send warningsButton get on]
+}; send warningsButton addCallback cpSetWarnings
+
+proc cpSetAutoscale args \
+{
+ set value [send autoscaleButton get on]
+ send client setOption autoscale [expr {$value ? "True" : "False"}]
+}; send autoscaleButton addCallback cpSetAutoscale
+
+proc cpTrackAutoscale {param old new} \
+{
+ send autoscaleButton set on [true $new]
+}; send autoscale addCallback cpTrackAutoscale
+
+proc cpSetAntialias args \
+{
+ set value [send antialiasButton get on]
+ send client setOption antialias [expr {$value ? "True" : "False"}]
+}; send antialiasButton addCallback cpSetAntialias
+
+proc cpTrackAntialias {param old new} \
+{
+ send antialiasButton set on [true $new]
+}; send antialias addCallback cpTrackAntialias
+
+proc cpSetTileFrames { widget type state args } \
+{
+ global tile_frames tileOpt
+
+ set value [send tileFramesButton get on]
+ if {$value} {
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+ send client setOption tileFrames \
+ [expr {$value ? "True" : "False"}] \{ $tile_frames \}
+} ; send tileFramesButton addCallback cpSetTileFrames
+
+proc cpTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+}; send tileFrames addCallback cpTrackTileFrames
+
+proc tileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ send tileFramesButton set on [expr !$value]
+ cpSetTileFrames
+}
+
+
+################################################################################
+# MAGNIFIER. A subraster around the cursor in the main image window is
+# displayed at a high resolution in a marker (known as the magnifier window)
+# within the main image window.
+################################################################################
+
+set magnifier_x 0
+set magnifier_y 0
+set magnifier_width 0
+set magnifier_height 0
+set mrm_width 0
+set mrm_height 0
+
+set magnifier_enable 0
+set magnifier_mag_enable 0
+set magnifier_mapping 0
+
+createMenu magzoomMenu imagewin {
+ { "Zoom Factors" f.title }
+ { f.dblline }
+ { "Zoom 1" f.exec "setMagnifierZoom 1" }
+ { "Zoom 2" f.exec "setMagnifierZoom 2" }
+ { "Zoom 4" f.exec "setMagnifierZoom 4" }
+ { "Zoom 8" f.exec "setMagnifierZoom 8" }
+ { "Zoom 16" f.exec "setMagnifierZoom 16" }
+}
+
+# Magnifier window translations.
+set magnifierWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn3Down>: popup(magzoomMenu)
+ <Btn3Up>: popdown(magzoomMenu)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setMagnifier -- Turn the magnifier on or off.
+
+set magAlreadyOn 0
+
+proc setDynamicMagnifier {state} \
+{
+ global magAlreadyOn magnifier_enable
+
+ if {$state} {
+ set magAlreadyOn $magnifier_enable
+ }
+ if {$magAlreadyOn} {
+ return
+ } else {
+ setMagnifier $state
+ }
+}
+
+proc toggleMagnifier args \
+{
+ global magnifier_enable
+ if {$magnifier_enable} {
+ setMagnifier 0
+ } else {
+ setMagnifier 1
+ }
+}
+
+
+proc setMagnifier {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame magnifier_mapping magnifierWinTranslations magnifierArea
+ global magnifier_enable magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$state} {
+ if {$magnifier_enable} \
+ return
+
+ # Determine where to place the magnifier.
+ set scale [expr sqrt(double($magnifierArea) / (512 * 512))]
+ set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Create the main magnifier window (marker).
+ send imagewin createMarker magnifierWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $magnifierWinTranslations \
+ visible true \
+ sensitive true \
+ activated true
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Register callbacks.
+ send imagewin addCallback magnifierImagewinResized resize
+ send resize addCallback magnifierImagewinResized
+ send magnifierWin addCallback magnifierMovedMapImage moveResize
+
+ send magnifierWin {
+ addCallback magnifierMoved moveResize;
+ addCallback magnifierDestroy destroy;
+ addCallback magnifierWinConstraint constraint;
+ }
+
+ # Map display frame to magnifier window.
+ set magnifier_enable 1
+ set magnifier_mapping [send imagewin nextMapping]
+ send imagewin refreshMapping $magnifier_mapping
+
+ # create cross-hair
+ send imagewin createMarker magPointer \
+ type rectangle \
+ createMode noninteractive \
+ width 3 \
+ height 3 \
+ lineWidth 3 \
+ lineColor green \
+ highlightcolor green \
+ activated true \
+ visible true
+
+ # set its position and size
+ setMagPointerPosition
+ magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]
+
+ } elseif {$magnifier_enable} {
+ magnifierDestroy
+ }
+}
+
+
+# magnifierDestroy -- Delete the magnifier.
+
+proc magnifierDestroy args \
+{
+ global magnifier_enable
+ global magnifier_mapping
+
+ if {$magnifier_enable} {
+ set magnifier_enable 0
+
+ send imagewin freeMapping $magnifier_mapping
+ send imagewin deleteCallback magnifierImagewinResized
+ send resize deleteCallback magnifierImagewinResized
+ send frame deleteCallback magnifierMapImage
+
+ if [send server queryObject magnifierWin] {
+ send magnifierWin destroy
+ }
+ if [send server queryObject magPointer] {
+ send magPointer destroy
+ }
+ }
+}
+
+
+# magnifierMoved -- Called when the user moves the magnifier window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc magnifierMoved {marker event position} \
+{
+ global winWidth winHeight magnifierGeom frame
+ global magnifier_x magnifier_y magnifier_width magnifier_height
+
+ # Move the region marker to the new location.
+ send client getSource raster sx sy snx sny
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+}
+
+
+# magnifierWinConstraint -- Called when the magnifier window is moved, resized,
+# or rotated. Constrain the magnifier window to remain within the image window;
+# rotation is not permitted.
+
+proc magnifierWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global magnifier_width magnifier_height
+
+ set width $magnifier_width
+ set height $magnifier_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierRegionConstraint -- Called when the region marker in the magnifier
+# window is moved, resized, or rotated.
+
+proc magnifierRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+
+ set constraints [list {}]
+ send magnifierWin getRect interior p_x p_y p_width p_height
+
+ # Since the magnifier region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# magnifierImagewinResized -- If the display window is resized make the
+# magnifier track the corner.
+
+proc magnifierImagewinResized args \
+{
+ global magnifier_enable magnifier_mapping magnifier_height
+ global magnifierGeom magnifier_x magnifier_y magnifier_width
+
+ if {$magnifier_enable} {
+ set old_x $magnifier_x; set old_width $magnifier_width
+ set old_y $magnifier_y; set old_height $magnifier_height
+
+ # Get new location of magnifier window.
+ set defGeom [format "%sx%s+5+5" $magnifier_width $magnifier_height]
+ send imagewin parseGeometry $magnifierGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send magnifierWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the magnifier window position variables so that it comes up
+ # in the same place the next time.
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set magnifierGeom [send imagewin getGeometry \
+ $magnifier_x $magnifier_y $magnifier_width $magnifier_height]
+
+ # Make sure the magnifier window is on top.
+ send imagewin raiseMapping $magnifier_mapping
+
+ # Refresh the magnifier window if it did not move.
+ if {$magnifier_x == $old_x && $magnifier_y == $old_y &&
+ $magnifier_width == $old_width && $magnifier_height == $old_height} {
+ send imagewin refreshMapping $magnifier_mapping
+ }
+ }
+}
+
+
+# resetMagnifier -- Reinitialize the magnifier.
+
+proc resetMagnifier {param old new} \
+{
+ global magnifierGeom displayMagnifier
+
+ if {$new == "done"} {
+ setMagnifier [true $displayMagnifier]
+ } else {
+ setMagnifier 0
+ if {$new != "startup"} {
+ set magnifierGeom +5+5
+ }
+ }
+}; send initialize addCallback resetMagnifier
+
+
+set last_mag_x [expr $winWidth / 2]
+set last_mag_y [expr $winHeight / 2]
+
+# magnifierMovedMapImage -- Front end to magnifierMapImage, called when
+# magnifier window is moved or resized.
+
+proc magnifierMovedMapImage args \
+{
+ global last_mag_x last_mag_y
+
+ magnifierMapImage $last_mag_x $last_mag_y
+ setMagPointerPosition
+}
+
+# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO
+#--------------------------------------------------------------------------
+
+# globals for magnifier
+set mag_w 0
+set mag_h 0
+
+#
+# setMagnifierZoom -- set the zoom factor for the magnifier
+#
+proc setMagnifierZoom { zoom } \
+{
+ global mag_w mag_h
+
+ send magnifierWin getRect boundary \
+ magnifier_x magnifier_y magnifier_width magnifier_height
+ set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]
+ set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]
+
+ #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]
+ #if { $mw < 4 } { set mw 4 }
+ #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]
+ #if { $mh < 4 } { set mh 4 }
+ #send magPointer "setAttributes width $mw height $mh; redraw"
+}
+
+# magnifierMapImage -- Map the of the current display frame centered on the
+# pointer into the magnifier window. Called when the frame changes, the
+# pointer moves in the main image window, or (via magnifierMovedMapImage)
+# the magnifier window is moved or resized.
+
+set magnifierROP 0
+
+proc magnifierMapImage {x y} \
+{
+ global magnifier_enable frame
+ global last_mag_x last_mag_y
+ global magnifier_mapping
+ global winWidth winHeight
+ global mag_w mag_h
+ global magnifierROP
+
+ if {!$magnifier_enable || $frame == 0} \
+ return
+
+# if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {
+# # For efficiency we won't compute the sqrt of the distance but instead
+# # just compare the square. Use a threshold of 6 pixels so when we
+# # narrow in on the ROI the magnifier is still (mostly) correct.
+# set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \
+# (($last_mag_y-$y) * ($last_mag_y-$y))]
+# if {$diff > 36} {
+# set last_mag_x $x
+# set last_mag_y $y
+# return
+# }
+# }
+
+ set last_mag_x $x
+ set last_mag_y $y
+
+ send magnifierWin getRect interior dx dy dnx dny
+ if [send imagewin activeMapping $magnifier_mapping] {
+ send imagewin raiseMapping $magnifier_mapping
+ }
+
+ # initialize the magnifier zoom factor, if necessary
+ if { !$mag_w || !$mag_h } {
+ setMagnifierZoom 4
+ }
+
+ set sx [expr $x - $mag_w / 2 ]
+ set sy [expr $y - $mag_h / 2 ]
+
+ # Constrain the source rectangle within the main image window
+ # (not overlapping an edge or the magnifier window).
+
+ if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] &&
+ $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {
+
+ # The source rectangle would overlap the magnifier window; fix that.
+
+ set dist(l) [expr $sx - ($dx - $mag_w)]
+ set dist(b) [expr $dy + $dny - $sy]
+ set dist(r) [expr $dx + $dnx - $sx]
+ set dist(t) [expr $sy - ($dy - $mag_h)]
+
+ # Put the distances in order.
+
+ foreach j [array names dist] {
+ set alreadyset($j) 0
+ }
+
+ for {set i 0} {$i < 4} {incr i} {
+ set candidate ""
+ foreach j [array names dist] {
+ if {!$alreadyset($j)} {
+ if {$candidate == ""} {
+ set candidate $j
+ set minsofar $dist($j)
+ } elseif {$dist($j) < $minsofar} {
+ set candidate $j
+ set minsofar $dist($j)
+ }
+ }
+ }
+ set order($i) $candidate
+ set alreadyset($candidate) 1
+ }
+
+ # Try the sides in order, using the first one where there's room.
+
+ for {set i 0} {$i < 4} {incr i} {
+ if {$order($i) == "l"} {
+ if {$dx >= $mag_w} {
+ set sx [expr $dx - $mag_w]
+ break
+ }
+ } elseif {$order($i) == "b"} {
+ if {$winHeight >= $dy + $dny + $mag_h} {
+ set sy [expr $dy + $dny]
+ break
+ }
+ } elseif {$order($i) == "r"} {
+ if {$winWidth >= $dx + $dnx + $mag_w} {
+ set sx [expr $dx + $dnx]
+ break
+ }
+ } elseif {$order($i) == "t"} {
+ if {$dy >= $mag_h} {
+ set sy [expr $dy - $mag_h]
+ break
+ }
+ }
+ }
+ }
+
+ # Make sure we don't go beyond an edge of the main window.
+
+ if {$sx < 0} {
+ set sx 0
+ } else {
+ set sxmax [expr $winWidth - $mag_w]
+ if {$sx > $sxmax} {
+ set sx $sxmax
+ }
+ }
+
+ if {$sy < 0} {
+ set sy 0
+ } else {
+ set symax [expr $winHeight - $mag_h]
+ if {$sy > $symax} {
+ set sy $symax
+ }
+ }
+
+ # Map 32 x 32 centered on pointer in main window.
+ set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \
+ 0 pixel $sx $sy $mag_w $mag_h \
+ 0 pixel $dx $dy $dnx $dny}]
+ if { $err != 0 } {
+ Print "There was a problem setting up the magnifier ... recovering"
+ }
+}
+
+
+# set the position of the magnifier marker in the center of the mag window
+proc setMagPointerPosition args \
+{
+ global magnifier_enable
+
+ if { !$magnifier_enable } \
+ return
+
+ send magnifierWin "getAttributes x x y y"
+ set xpos [expr $x + 1]
+ set ypos [expr $y + 1]
+
+ send magPointer "setAttributes x $xpos y $ypos visible true; redraw"
+}
+
+
+
+################################################################################
+# PANNER. The full frame mapped into the main image window is displayed at a
+# reduced resolution in a marker (known as the panner window) within the main
+# image window. The currently displayed region of the frame is indicated
+# using a small marker within the panner window. This small marker may be
+# moved or resized to pan or zoom the image in the main display window.
+################################################################################
+
+set panner_x 0
+set panner_y 0
+set panner_width 0
+set panner_height 0
+set prm_width 0
+set prm_height 0
+
+set panner_enable 0
+set panner_pan_enable 0
+set panner_mag_enable 0
+set panner_region_enable 0
+set panner_mapping 0
+
+# Panner window translations.
+set pannerWinTranslations { \
+ !Shift <Btn1Motion>: m_rotateResize()
+ <Btn1Motion>: m_moveResize()
+ !Shift <Btn1Down>: m_raise() m_markpos()
+ <Btn1Down>: m_raise() m_markposAdd()
+ <Btn1Up>: m_redraw() m_destroyNull()
+ <Btn2Down>: m_lower()
+ <Btn2Up>: call(pannerPanXY,$x,$y)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(toggleMagnifier)
+ !Ctrl <Key>p: call(togglePanner)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>s: call(cpMatchFrames)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: m_deleteDestroy()
+ <Key>Delete: m_deleteDestroy()
+ <KeyPress>: graphics-input()
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y)
+}
+
+
+# setPanner -- Turn the panner on or off.
+
+proc togglePanner args \
+{
+ global panner_enable
+
+ if {$panner_enable} {
+ setPanner 0
+ } else {
+ setPanner 1
+ }
+}
+
+
+proc setPanner {state} \
+{
+ global winWidth winHeight frameWidth frameHeight
+ global frame panner_mapping pannerWinTranslations pannerArea
+ global panner_enable panner_region_enable panner_pan_enable
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global last_compass
+
+ if {$state} {
+ if {$panner_enable} \
+ return
+
+ # Determine where to place the panner.
+ set scale \
+ [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]
+ set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]
+ set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]
+ set defGeom [format "%sx%s-5+5" $scaled_width $scaled_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Create the main panner window (marker).
+ send imagewin createMarker pannerWin \
+ type rectangle \
+ createMode noninteractive \
+ width [expr $width / 2] \
+ height [expr $height / 2] \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ lineColor 8 \
+ highlightColor 8 \
+ translations $pannerWinTranslations \
+ visible true \
+ sensitive true \
+ autoRedraw true \
+ activated true
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Register callbacks.
+ send frame addCallback pannerMapImage
+ send frameRegion addCallback pannerSetRegion
+ send imagewin addCallback pannerImagewinResized resize
+ send resize addCallback pannerImagewinResized
+
+ send pannerWin {
+ addCallback pannerMapImage moveResize;
+ addCallback pannerMoved moveResize;
+ addCallback pannerDestroy destroy;
+ addCallback pannerWinConstraint constraint;
+ }
+
+ # Map display frame to panner window.
+ set panner_enable 1
+ set panner_region_enable 1
+ set panner_mapping [send imagewin nextMapping]
+ pannerMapImage init; send imagewin refreshMapping $panner_mapping
+
+ # Redraw the compass if necessary.
+ send compass "setSensitive True ; set on $last_compass"
+ if { $last_compass } \
+ drawCompass
+
+ # Draw a marker in the panner window outlining displayed region.
+ send imagewin createMarker pannerRegionMarker \
+ type box \
+ createMode noninteractive \
+ translations $pannerWinTranslations \
+ lineColor green \
+ highlightColor green \
+ sensitive true
+
+ # Fire up the panner region marker.
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ send pannerRegionMarker "\
+ addCallback pannerPanImage moveResize; \
+ addCallback pannerDestroy destroy; \
+ addCallback pannerRegionConstraint constraint; \
+ setAttributes visible true activated true; \
+ redraw"
+ set panner_pan_enable 1
+
+ } elseif {$panner_enable} {
+ pannerDestroy
+ }
+}
+
+
+# pannerDestroy -- Delete the panner.
+
+proc pannerDestroy args \
+{
+ global panner_enable panner_region_enable panner_pan_enable
+ global panner_mapping
+
+ if {$panner_enable} {
+ set panner_enable 0
+ set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send imagewin freeMapping $panner_mapping
+ send imagewin deleteCallback pannerImagewinResized
+ send resize deleteCallback pannerImagewinResized
+ send frame deleteCallback pannerMapImage
+ send frameRegion deleteCallback pannerSetRegion
+
+ if [send server queryObject pannerRegionMarker] {
+ send pannerRegionMarker destroy
+ }
+ if [send server queryObject pannerWin] {
+ send pannerWin destroy
+ }
+
+ # Disable the compass.
+ send compass "setSensitive False ; set on False"
+ }
+}
+
+
+# pannerMapImage -- Map the current display frame into the panner window.
+# Called when the frame changes or the panner window is moved or resized.
+# The panner window displays a small dezoomed version of the full frame.
+
+proc pannerMapImage args \
+{
+ global panner_enable frame
+ global panner_mapping
+
+ if {!$panner_enable || $frame == 0} \
+ return
+
+ set raster [send client getRaster]
+ send pannerWin getRect interior dx dy dnx dny
+ send imagewin queryRaster $raster width height
+
+ if [send imagewin activeMapping $panner_mapping] {
+ send imagewin raiseMapping $panner_mapping
+ }
+ send imagewin setMapping $panner_mapping 0 \
+ $raster pixel 0 0 $width $height \
+ 0 pixel $dx $dy $dnx $dny
+}
+
+
+# pannerSetRegion -- Adjust the pannerWin region marker to outline the
+# region displayed in the main display window. This is called in response
+# to a frameRegion event when the main display mapping changes, e.g. when
+# the frame changes or the user zooms or pans the main window. The region
+# marker is moved and resized to reflect the new view.
+
+proc pannerSetRegion {param old new} \
+{
+ global panner_enable panner_region_marker
+ global panner_region_enable panner_pan_enable
+ global frame frameWidth frameHeight prm_width prm_height
+
+ if {!$panner_enable || !$panner_region_enable || $frame == 0} \
+ return
+
+ # new: frame sx sy snx sny
+ set src_frame [lindex $new 0]
+ set sx [lindex $new 1]; set snx [lindex $new 3]
+ set sy [lindex $new 2]; set sny [lindex $new 4]
+
+ if {$src_frame != $frame} \
+ return
+
+ send pannerWin getRect interior px py pnx pny
+
+ set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]
+ set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]
+ set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]
+ set height [expr ($sny/2.0) / $frameHeight * $pny + 1]
+
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ set panner_region_enable 0
+
+ send pannerRegionMarker "\
+ markpos; \
+ setAttributes x $x y $y width $width height $height; \
+ redraw; raise"
+ send pannerRegionMarker getAttributes width prm_width height prm_height
+
+ set panner_region_enable 1
+ set panner_pan_enable $pan_save
+}
+
+
+# pannerPanImage -- Pan or zoom the image in the main image window. This is
+# called when the user moves the region marker within the panner window.
+
+proc pannerPanImage {marker event position} \
+{
+ global panner_pan_enable
+ global winWidth winHeight
+ global prm_width prm_height
+ global frame auto_reg frameOffsetX frameOffsetY
+
+ if {!$panner_pan_enable} \
+ return
+
+ # position: x y width height.
+ set new_width [lindex $position 2]
+ set new_height [lindex $position 3]
+
+ # region: type raster x y width height.
+ set region [send pannerRegionMarker getRegion unmap]
+ set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]
+ set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]
+
+ set panner_pan_enable 0
+ if {$new_width == $prm_width && $new_height == $prm_height} {
+ send client pan $x $y
+ } else {
+ set xscale [expr ($winWidth / 2.0) / $width]
+ set yscale [expr ($winHeight / 2.0) / $height]
+ if {$auto_reg == 1} {
+ send client zoomAbs $xscale $yscale $x $y \
+ $frameOffsetX($frame) $frameOffsetY($frame)
+ } else {
+ send client zoom $xscale $yscale $x $y
+ }
+ }
+ set panner_pan_enable 1
+}
+
+
+# pannerPanXY -- Pan to the point X,Y in the panner window coordinate
+# system. Called when the user clicks MB2 in the panner window.
+
+proc pannerPanXY {x y} \
+{
+ send imagewin unmapPixel $x $y raster rx ry
+ send client pan $rx $ry
+}
+
+
+# pannerMoved -- Called when the user moves the panner window. We need to
+# move the region marker to the new window location and record the new location
+# so that the window will come up in the same place if closed and reopened.
+
+proc pannerMoved {marker event position} \
+{
+ global winWidth winHeight
+ global frame panner_pan_enable pannerGeom
+ global panner_x panner_y panner_width panner_height
+
+ # Move the region marker to the new location.
+ set pan_save $panner_pan_enable; set panner_pan_enable 0
+ send client getSource raster sx sy snx sny
+ pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]
+ set panner_pan_enable $pan_save
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ drawCompass
+
+ send pannerRegionMarker raise
+}
+
+
+# pannerWinConstraint -- Called when the panner window is moved, resized, or
+# rotated. Constrain the panner window to remain within the image window;
+# rotation is not permitted.
+
+proc pannerWinConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global panner_width panner_height
+
+ set width $panner_width
+ set height $panner_height
+ set constraints [list {}]
+
+ # Check the width and height first as we need these below.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww} {
+ lappend constraints "width $ww"
+ set width $ww
+ } else {
+ set width $new
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh} {
+ lappend constraints "height $wh"
+ set height $wh
+ } else {
+ set height $new
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+
+ # Constrain X and Y.
+ foreach i $attributes {
+ set new [lindex $i 2]
+ switch [lindex $i 0] {
+ x { set pw [expr $width / 2]
+ if {$new < $pw} {
+ lappend constraints "x $pw"
+ } elseif {$new > $winWidth - $pw} {
+ lappend constraints "x [expr $winWidth - $pw]"
+ }
+ }
+ y { set ph [expr $height / 2]
+ if {$new < $ph} {
+ lappend constraints "y $ph"
+ } elseif {$new > $winHeight - $ph} {
+ lappend constraints "y [expr $winHeight - $ph]"
+ }
+ }
+ }
+ }
+
+ return $constraints
+}
+
+
+# pannerRegionConstraint -- Called when the region marker in the panner
+# window is moved, resized, or rotated.
+
+proc pannerRegionConstraint {marker event attributes} \
+{
+ global winWidth winHeight
+ global frame
+
+ set constraints [list {}]
+ send pannerWin getRect interior p_x p_y p_width p_height
+ send pannerRegionMarker getAttributes width rwidth height rheight
+
+ # Since the panner region marker is a box marker x,y and width,height
+ # will not both change in the same call, so we can process them all
+ # independently.
+
+ foreach i $attributes {
+ set new [lindex $i 2]
+
+ switch [lindex $i 0] {
+ x { set left [expr $p_x + $rwidth + 1]
+ set right [expr $p_x + $p_width - $rwidth - 1]
+ if {$new < $left} {
+ lappend constraints "x $left"
+ } elseif {$new > $right} {
+ lappend constraints "x $right"
+ }
+ }
+ y { set top [expr $p_y + $rheight + 1]
+ set bottom [expr $p_y + $p_height - $rheight - 1]
+ if {$new < $top} {
+ lappend constraints "y $top"
+ } elseif {$new > $bottom} {
+ lappend constraints "y $bottom"
+ }
+ }
+ width { set ww [expr $winWidth / 2]
+ if {$new > $ww / 2} {
+ lappend constraints "width $ww"
+ }
+ }
+ height { set wh [expr $winHeight / 2]
+ if {$new > $wh / 2} {
+ lappend constraints "height $wh"
+ }
+ }
+ rotangle { lappend constraints "rotangle 0"
+ }
+ }
+ }
+ drawCompass
+
+ return $constraints
+}
+
+
+# pannerImagewinResized -- If the display window is resized make the panner
+# track the corner.
+
+proc pannerImagewinResized args \
+{
+ global panner_enable panner_mapping
+ global pannerGeom panner_x panner_y panner_width panner_height
+ global frame
+
+ if {$panner_enable} {
+ set old_x $panner_x; set old_width $panner_width
+ set old_y $panner_y; set old_height $panner_height
+
+ eraseCompass
+
+ # Get new location of panner window.
+ set defGeom [format "%sx%s-5+5" $panner_width $panner_height]
+ send imagewin parseGeometry $pannerGeom $defGeom x y width height
+
+ # Reposition the marker.
+ send pannerWin "\
+ markpos; \
+ setAttributes \
+ x [expr $x + $width / 2] \
+ y [expr $y + $height / 2] \
+ width [expr $width / 2] \
+ height [expr $height / 2]; \
+ redraw"
+
+ # Update the panner window position variables so that it comes up
+ # in the same place the next time.
+ send pannerWin getRect boundary \
+ panner_x panner_y panner_width panner_height
+ set pannerGeom [send imagewin getGeometry \
+ $panner_x $panner_y $panner_width $panner_height]
+
+ # Make sure the panner window is on top.
+ send imagewin raiseMapping $panner_mapping
+
+ # Refresh the panner window if it did not move.
+ if {$panner_x == $old_x && $panner_y == $old_y &&
+ $panner_width == $old_width && $panner_height == $old_height} {
+ send imagewin refreshMapping $panner_mapping
+ }
+
+ drawCompass
+ }
+}
+
+
+# resetPanner -- Reinitialize the panner.
+
+proc resetPanner {param old new} \
+{
+ global pannerGeom displayPanner
+ if {$new == "done"} {
+ setPanner [true $displayPanner]
+ } else {
+ setPanner 0
+ if {$new != "startup"} {
+ set pannerGeom -5+5
+ }
+ }
+}; send initialize addCallback resetPanner
+
+
+
+################################################################################
+# Print Panel Functions.
+################################################################################
+
+# Global variables needed for the print setup panel
+
+set printColor prGrayButton
+set orientation epsPortButton
+set page_size epsLetterButton
+set imageScale 100
+
+set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel
+ epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button
+ ScaleFrame SCdecrease SCtext SCincrease
+}
+
+
+proc psetup_init args \
+{
+ global printColor orientation page_size imageScale #format
+
+ set_printer toPrinter callback 1
+ send SCtext set label [ format "%d %%" $imageScale ]
+ send $printColor set on true
+ send $orientation set on true
+ send $page_size set on true
+}
+
+
+proc doPrintOptions { param old new } \
+{
+ global imageScale page_size orientation imageScale printColor
+ global warnings
+
+ send printStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ # print [format "doPrintOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ autoscale { if { $val == "True" } {
+ send epsscaleButton set on true
+ } elseif { $val == "False" } {
+ send epsscaleButton set on false
+ }
+ }
+ autorotate { if { $val == "True" } {
+ send autorotateButton set on true
+ } elseif { $val == "False" } {
+ send autorotateButton set on false
+ }
+ }
+ maxaspect { if { $val == "True" } {
+ send aspectButton set on true
+ } elseif { $val == "False" } {
+ send aspectButton set on false
+ }
+ }
+ annotate { if { $val == "True" } {
+ send annotateButton set on true
+ send titleButton setSensitive true
+ send colorbarButton setSensitive true
+ send bordersButton setSensitive true
+ send titleLabel setSensitive true
+ send titleString setSensitive true
+ } elseif { $val == "False" } {
+ send annotateButton set on false
+ send titleButton setSensitive false
+ send colorbarButton setSensitive false
+ send bordersButton setSensitive false
+ send titleLabel setSensitive false
+ send titleString setSensitive false
+ }
+ }
+ compress { if { $val == "True" } {
+ send compressButton set on true
+ } elseif { $val == "False" } {
+ send compressButton set on false
+ }
+ }
+ orientation { send $orientation set on false
+ if { $val == "portrait" } {
+ send epsPortButton set on true
+ set orientation epsPortButton
+ } elseif { $val == "landscape" } {
+ send epsPortButton set on false
+ set orientation epsLandButton
+ }
+ }
+ papersize { send $page_size set on false
+ if { $val == "letter" } {
+ send epsLetterButton set on true
+ set page_size epsLetterButton
+ } elseif { $val == "legal" } {
+ send epsLegalButton set on true
+ set page_size epsLegalButton
+ } elseif { $val == "A4" } {
+ send epsA4Button set on true
+ set page_size epsA4Button
+ } elseif { $val == "B5" } {
+ send epsB5Button set on true
+ set page_size epsB5Button
+ }
+ }
+ imscale { set imageScale $val
+ send SCtext set label [ format "%d %%" $imageScale ]
+ }
+ colortype { send $printColor set on false
+ if { $val == "gray" } {
+ send prGrayButton set on true
+ set printColor prGrayButton
+ } elseif { $val == "pseudo" } {
+ send prPseudoButton set on true
+ set printColor prPseudoButton
+ } elseif { $val == "rgb" } {
+ send prRGBButton set on true
+ set printColor prRGBButton
+ }
+ }
+ printerName { if [send toPrinter get on] {
+ send printlist highlight $val
+ }
+ }
+ printCmd { if [send toPrinter get on] {
+ send printcmd set string $val
+ }
+ }
+ printFile { if [send toFile get on] {
+ send printcmd set string $val
+ }
+ }
+ deviceType { if { $val == "Printer" } {
+ send printerLabel set label "Print Command:"
+ send toPrinter set on true
+ send toFile set on false
+ } elseif { $val == "File" } {
+ send printerLabel set label "File Name:"
+ send toPrinter set on false
+ send toFile set on true
+ send printlist unhighlight
+ }
+ }
+ dotitle { if { $val == "True" } {
+ send titleButton set on true
+ } elseif { $val == "False" } {
+ send titleButton set on false
+ }
+ }
+ doborders { if { $val == "True" } {
+ send bordersButton set on true
+ } elseif { $val == "False" } {
+ send bordersButton set on false
+ }
+ }
+ docolorbar { if { $val == "True" } {
+ send colorbarButton set on true
+ } elseif { $val == "False" } {
+ send colorbarButton set on false
+ }
+ }
+ title { send titleString set string $val
+ }
+
+ status { send printStatus set label $val
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+}; send printOptions addCallback doPrintOptions
+
+
+# Print options procedures.
+# -------------------------------
+
+set prOptsWidgets {
+ toPrinter toFile
+ prGrayButton prPseudoButton prRGBButton
+ epsLandButton epsPortButton
+ epsLetterButton epsLegalButton epsA4Button epsB5Button
+ SCincrease SCdecrease
+}
+set prSimpleOptions {
+ epsscaleButton autorotateButton aspectButton annotateButton compressButton
+ titleButton bordersButton colorbarButton
+}
+
+proc prPrintCommand { widget cbtype args } \
+{
+ if [send toFile get on] {
+ send client setPrintOption printfile $args
+ send printStatus set label [format "output file set to %s" $args]
+ } else {
+ send client setPrintOption printcmd $args
+ send printStatus set label [format "print command set to %s" $args]
+ }
+}; send printcmd addCallback prPrintCommand
+
+proc prTitleString { widget cbtype args } \
+{
+ send client setPrintOption title $args
+}; send titleString addCallback prTitleString
+
+proc prOptionToggle { widget cbtype args } \
+{
+ global imageScale
+
+ # Handle the image scale widgets first.
+ switch $widget {
+ SCincrease { set scale [expr $imageScale + 5]
+ send client setPrintOption imscale $scale
+ return
+ }
+ SCdecrease { set scale [ expr $imageScale - 5 ]
+ send client setPrintOption imscale $scale
+ return
+ }
+ }
+
+ # If it's not one of those it must be one of the radio toggles.
+ set val [ send $widget get on ]
+ #print [ format "prOptionToggle %s = %s" $widget $val ]
+ if { $val == 1 } {
+ switch $widget {
+ toPrinter { send client setPrintOption devicetype printer }
+ toFile { send client setPrintOption devicetype file }
+
+ epsLandButton { send client setPrintOption orientation landscape }
+ epsPortButton { send client setPrintOption orientation portrait }
+
+ epsLetterButton { send client setPrintOption papersize letter }
+ epsLegalButton { send client setPrintOption papersize legal }
+ epsA4Button { send client setPrintOption papersize A4 }
+ epsB5Button { send client setPrintOption papersize B5 }
+
+ prGrayButton { send client setPrintOption colortype gray }
+ prPseudoButton { send client setPrintOption colortype pseudo }
+ prRGBButton { send client setPrintOption colortype rgb }
+ }
+ } else {
+ send $widget set on true
+ }
+
+} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }
+
+proc prSimpleOptionToggle { widget args } \
+{
+ set val [ send $widget get on ]
+ #print [ format "prSimpleOptionToggle %s = %s" $widget $val ]
+
+ switch $widget {
+ epsscaleButton { send client setPrintOption autoscale $val }
+ autorotateButton { send client setPrintOption autorotate $val }
+ aspectButton { send client setPrintOption maxaspect $val }
+ annotateButton { send client setPrintOption annotate $val }
+ compressButton { send client setPrintOption compress $val }
+
+ titleButton { send client setPrintOption dotitle $val }
+ bordersButton { send client setPrintOption doborders $val }
+ colorbarButton { send client setPrintOption docolorbar $val }
+ }
+} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }
+
+
+
+# Printer display and selection.
+# -------------------------------
+set lprList {}
+
+proc psSetPrintList {param old new} \
+{
+ global lprList
+ set lprList $new
+ send printlist setList $new resize
+ send printlist highlight 0
+}; send printerList addCallback psSetPrintList
+
+proc lprResize args \
+{
+ global lprList
+ send printlist setList $lprList resize
+ send printlist highlight 0
+}; send printlist addEventHandler lprResize ResizeRedirectMask
+
+proc psSelectPrint {widget cbtype selections indices} \
+{
+ global printerlist
+ foreach selection $selections {
+ send client setPrintOption printername $selection
+ }
+}; send printlist addCallback psSelectPrint
+
+
+proc Print args \
+{
+ global winWidth winHeight
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send printcmd get string ]
+ if [send toFile get on] {
+ send client setPrintOption printfile $val
+ } else {
+ send client setPrintOption printcmd $val
+ }
+ set val [ send titleString get string ]
+ send client setPrintOption title $val
+ setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0
+
+ send client print
+ send imagewin setCursorType idle
+} ; send okayPrint addCallback Print
+
+
+
+# setPrintCorners -- Tell the client the WCS of the image being printed.
+
+proc setPrintCorners { lx ly ux uy args } \
+{
+ global winWidth winHeight
+
+ # Convert raw corner screen coordinates to frame buffer raster coords.
+ send imagewin unmapPixel $lx $ly raster llx lly
+ set llx [expr "int ($llx)"]
+ set lly [expr "int ($lly)"]
+ set str [send client encodewcs $llx $lly]
+ scan $str "%g %g %g" llx_r lly_r z
+ set llx_i [expr "int ($llx_r)"]
+ set lly_i [expr "int ($lly_r)"]
+
+ send imagewin unmapPixel $ux $uy raster urx ury
+ set urx [expr "int ($urx)"]
+ set ury [expr "int ($ury)"]
+ set str [send client encodewcs $urx $ury]
+ scan $str "%g %g %g" urx_r ury_r z
+ set urx_i [expr "int ($urx_r)"]
+ set ury_i [expr "int ($ury_r)"]
+
+ send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i
+}
+
+
+
+################################################################################
+# INFO box.
+################################################################################
+
+set infoMode infoOptFr
+
+
+# Current Frame information.
+proc infoFrameUpdate args \
+{
+ global version frame nframes
+ global frameWidth frameHeight frameDepth
+ global enhancement
+ global cpXcen cpYcen cpXoff cpYoff
+ global cpXmag cpYmag cpXscale cpYscale
+
+ if { [send infoOptWCS get on] } {
+ send client info wcs
+ return
+ } elseif {! [send infoOptFr get on]} \
+ return
+
+
+ if {$frame == 0} {
+ send infoText set string "initializing display..."
+ } else {
+ set line1 $version
+ set line2 [format "Image:\t\t%s" [send imageTitle get label]]
+ set line3 [format "Frame %d of %d:\t%d x %d" \
+ $frame $nframes $frameWidth $frameHeight]
+ set cmap [lindex $enhancement($frame) 0]
+ set brt [lindex $enhancement($frame) 1]
+ set con [lindex $enhancement($frame) 2]
+ set line4 [format "Colormap:\t%s" $cmap]
+ set line5 [format "Enhancement:\tBrt=%s Cont=%s" $brt $con]
+
+ set cntr [format "X: %0.1f\n\t\tY: %0.1f" $cpXcen $cpYcen]
+ set line6 [format "Center:\t\t%s" $cntr]
+
+ set line7 [format "Zoom:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXmag $cpYmag]
+ set line8 [format "Scale:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXscale $cpYscale]
+ set line9 [format "Offset:\t\tX: %0.2f\n\t\tY: %0.2f" $cpXoff $cpYoff]
+
+ send infoText set string [
+ format "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \
+ $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8 $line9
+ ]
+ }
+}
+set params {frame frameView nframes frameSize frameTitle enhancement}
+foreach p $params { send $p addCallback infoFrameUpdate }
+
+
+# Server Program State information.
+proc infoOptToggle { widget type state args } \
+{
+ global infoMode ismInfoText
+
+ if {$state} { set not False } else { set not True }
+
+ send $infoMode set on $not
+ set infoMode $widget
+
+ switch $widget {
+ infoOptFr { infoFrameUpdate }
+ infoOptSvr { set bp [send imagewin get basePixel]
+ set mc [send imagewin get maxColors]
+ send client info server $bp $mc
+ }
+ infoOptIsm { send infoText set string $ismInfoText }
+ infoOptClients { send client info clients }
+ infoOptWCS { send client info wcs }
+ infoOptFB { send client info imtoolrc }
+ }
+}
+set iopts {infoOptFr infoOptSvr infoOptIsm infoOptClients infoOptWCS infoOptFB }
+foreach w $iopts { send $w addCallback infoOptToggle }
+
+
+proc infoSetText { param old new } \
+{
+ send infoText set string $new
+} ; send info addCallback infoSetText
+
+
+
+################################################################################
+# Image and objects list display and section
+################################################################################
+
+proc filesTextHighlight { widget event args } \
+{
+ if { $event == "enterNotify" } {
+ send $widget set displayCaret True
+ } elseif { $event == "leaveNotify" } {
+ send $widget set displayCaret False
+ }
+}
+foreach w {imtemplateText fnameText z1Value z2Value} {
+ send $w addEventHandler filesTextHighlight enterWindowMask
+ send $w addEventHandler filesTextHighlight leaveWindowMask
+}
+
+send rootButton addCallback "send client setLoadOption root"
+send homeButton addCallback "send client setLoadOption home"
+send upButton addCallback "send client setLoadOption up"
+send rescanButton addCallback "send client setLoadOption rescan"
+
+set label \
+ [format "%-35.35s %6s %12s %12s"\
+ " Image" "Bitpix" " Size" " Title"]
+send imlistLabel set label $label
+send imlistLabel "set height 0 ; unmap"
+
+
+# Create the Frames menu on the load panel window.
+set loadItems { "Current f.exec \{send frameFrame set label Current\}"}
+for {set i 1} {$i <= $MAX_FRAMES} {incr i} {
+ lappend loadItems "\"\ \ $i\ \ \" f.exec \{send frameFrame set label $i\}"
+}; createMenu loadFrames frameFrame $loadItems
+
+
+
+
+
+# Filename pattern callback.
+proc setPattern { widget mode pattern args } \
+{
+ send client setLoadOption pattern $pattern
+} ; send imtemplateText addCallback setPattern
+
+
+# Load options parameter callback.
+proc doLoadOptions { param old new } \
+{
+ global warnings panel_up
+
+ set val [ join [lrange $new 1 end] " " ]
+
+ switch [lindex $new 0] {
+ pattern { send imtemplateText set string [format "%s" $val ] }
+ curdir { send dirLabel set label [format " Directory: %s" $val ] }
+ newfile { send fnameText set string $val }
+ status { send filesStatus set label $val
+ if { ! $panel_up } { send imageTitle set label $val }
+ send server synchronize
+ }
+ warning { if {$warnings} { Wexec server $val } }
+ gray { send grayscale set on $val }
+ zscale { send zscale set on $val
+ if {$val} {
+ send zrange setSensitive False
+ } else {
+ send zrange setSensitive True
+ }
+ }
+ zrange { send zrange set on $val
+ if {$val} {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive False
+ }
+ } else {
+ foreach w {z1Label z1Value z2Label z2Value} {
+ send $w setSensitive True
+ }
+ }
+ }
+ z1 { send z1Value set string [format "%s" $val ] }
+ z2 { send z2Value set string [format "%s" $val ] }
+ nsample { send nsampValue set string [format "%s" $val ] }
+ }
+} ; send loadOptions addCallback doLoadOptions
+
+# Option utility routines.
+proc toggleGraymap args \
+{
+ send client setLoadOption gray [ send grayscale get on ]
+} ; send grayscale addCallback toggleGraymap
+
+proc toggleHeaders args \
+{
+ if { [send browseHdrs get on] } {
+ send client setLoadOption headers
+ send rootButton setSensitive False
+ send homeButton setSensitive False
+ send upButton setSensitive False
+ send rescanButton setSensitive False
+ send imlistLabel "set height 10 ; map"
+ } else {
+ send client setLoadOption rescan
+ send rootButton setSensitive True
+ send homeButton setSensitive True
+ send upButton setSensitive True
+ send rescanButton setSensitive True
+ send imlistLabel "set height 0 ; unmap"
+ }
+} ; send browseHdrs addCallback toggleHeaders
+
+proc toggleZscale args \
+{
+ send client setLoadOption zscale [send zscale get on]
+} ; send zscale addCallback toggleZscale
+
+proc toggleZrange args \
+{
+ send client setLoadOption zrange [send zrange get on]
+} ; send zrange addCallback toggleZrange
+
+proc setZ1 { widget mode pattern args } \
+{
+ send client setLoadOption z1 $pattern
+} ; send z1Value addCallback setZ1
+
+proc setZ2 { widget mode pattern args } \
+{
+ send client setLoadOption z2 $pattern
+} ; send z2Value addCallback setZ2
+
+proc setNsamp { widget mode pattern args } \
+{
+ send client setLoadOption nsample $pattern
+} ; send nsampValue addCallback setNsamp
+
+proc fileLoad { widget mode fname args } \
+{
+ loadImage $fname
+} ; send fnameText addCallback fileLoad
+
+
+
+# Image list selection routines.
+
+set fileList {}
+
+proc setFileList { param old new } \
+{
+ global fileList
+ set fileList $new
+
+ # Get the max length of the strings so we can set
+ # the list columns appropriately.
+ set max 0
+ foreach n $new {
+ set len [string length $n]
+ if {$len > $max} { set max $len }
+ }
+
+ # Optimize the number of columns for the file list.
+ if {$max > 35} {
+ send imageList set defaultColumns 1
+ } elseif {$max > 21} {
+ send imageList set defaultColumns 2
+ } elseif {$max > 12} {
+ send imageList set defaultColumns 3
+ } elseif {$max > 5} {
+ send imageList set defaultColumns 4
+ } else {
+ send imageList set defaultColumns 5
+ }
+
+ send imageList setList $new resize
+}; send filelist addCallback setFileList
+
+proc flResize args \
+{
+ global fileList
+ send imageList setList $fileList resize
+}; send imageList addEventHandler flResize ResizeRedirectMask
+
+proc flSelectPrint { widget cbtype selections args } \
+{
+ if {! [send autoload get on]} \
+ return
+
+ foreach selection $selections {
+ if { [send zrange get on] } {
+ loadImage [lindex $selection 0]
+ } else {
+ loadImage $selection
+ }
+ }
+}; send imageList addCallback flSelectPrint
+
+
+# Load the named image in the display.
+proc loadImage { name } \
+{
+ global frame
+
+ set fr [send frameFrame get label]
+
+ if { $fr == "Current" } { set fr $frame }
+
+ if { [fileSetOptions] >= 0 } {
+ send imagewin setCursorType busy
+ send client load $name $fr
+ send imagewin setCursorType idle
+ send fnameText set string $name
+ }
+}
+
+# Load button callback.
+proc fileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname == ""} {
+ Wexec client "No image name specified"
+ } else {
+ loadImage $fname
+ }
+} ; send filesLoadButton addCallback fileLoadB
+
+
+# Send and selected options to the client before loading the image.
+proc fileSetOptions args \
+{
+ if { ![send zscale get on] && ![send zrange get on] } {
+ set z1 [send z1Value get string]
+ set z2 [send z2Value get string]
+
+ if {$z1 == $z2} {
+ Wexec client "z1/z2 values are not set properly"
+ return -1
+ } else {
+ send client setLoadOption z1 $z1
+ send client setLoadOption z2 $z2
+ }
+ }
+
+ return 0
+}
+
+
+################################################################################
+# Save panel functions.
+################################################################################
+
+# Global variables needed for the save setup panel
+
+set format rasButton
+set saveColor svPseudoButton
+
+set fileFmtButtons {
+ rasButton gifButton jpegButton tiffButton
+ fitsButton x11Button epsButton rawButton
+}
+
+
+# Format group procedures.
+#---------------------------------
+
+# Select a format.
+
+proc set_format { widget func state args } \
+{
+ global format saveColor
+
+ send $format set on false
+ if {$widget == $format} {
+ send $widget set on true
+ } else {
+ switch $widget {
+ rasButton { send client setSaveOption format ras }
+ gifButton { send client setSaveOption format gif }
+ jpegButton { send client setSaveOption format jpeg }
+ tiffButton { send client setSaveOption format tiff }
+ fitsButton { send client setSaveOption format fits }
+ x11Button { send client setSaveOption format x11 }
+ epsButton { send client setSaveOption format eps }
+ rawButton { send client setSaveOption format raw }
+ }
+ }
+} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }
+
+proc setSaveFile { widget cbtype args } \
+{
+ send client setSaveOption fname $args
+ send saveStatus set label [format "output file set to %s" $args]
+}; send saveFile addCallback setSaveFile
+
+
+proc doSaveOptions { param old new } \
+{
+ global format saveColor
+ global warnings
+
+ send saveStatus set label {}
+ set val [join [lrange $new 1 end] " "]
+
+ #print [format "doSaveOptions %s = %s" [lindex $new 0] $val]
+ switch [lindex $new 0] {
+ format {
+ # Now (de)sensitize the color options depending on the format,
+ # force the color choice when needed.
+ send $format set on false
+ switch [lindex $val 0] {
+ ras { #send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format rasButton
+ }
+ gif { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ if {$saveColor == "svRGBButton"} {
+ send $saveColor set on false
+ send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ set format gifButton
+ }
+ jpeg { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format jpegButton
+ }
+ tiff { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive true
+ set format tiffButton
+ }
+ fits { send svRGBButton setSensitive false
+ send svPseudoButton setSensitive false
+ send $saveColor set on false
+ send svGrayButton set on true
+ set saveColor svGrayButton
+ set format fitsButton
+ }
+ x11 { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format x11Button
+ }
+ eps { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format epsButton
+ }
+ raw { send svRGBButton setSensitive true
+ send svPseudoButton setSensitive true
+ set format rawButton
+ }
+ }
+ send $format set on true
+ }
+ color { send $saveColor set on false
+ switch [lindex $val 0] {
+ grayscale { send svGrayButton set on true
+ set saveColor svGrayButton
+ }
+ pseudocolor { send svPseudoButton set on true
+ set saveColor svPseudoButton
+ }
+ rgb { send svRGBButton set on true
+ set saveColor svRGBButton
+ }
+ }
+ }
+ fname { send saveFile set string $val
+ }
+ status { send saveStatus set label $val
+ send server synchronize
+ }
+ text { send saveData set label $val
+ }
+ warning { if {$warnings} { Wexec server $val }
+ }
+ }
+} ; send saveOptions addCallback doSaveOptions
+
+
+# Color group procedures.
+#---------------------------------
+send svGrayButton addCallback "send client setSaveOption color grayscale"
+send svPseudoButton addCallback "send client setSaveOption color pseudocolor"
+send svRGBButton addCallback "send client setSaveOption color rgb"
+
+
+proc Save args \
+{
+ global panel_up
+
+ send imagewin setCursorType busy
+
+ # Get the print command or file template if not previous reset.
+ set val [ send saveFile get string ]
+ send client setSaveOption fname $val
+ send saveStatus set label [format "output file set to %s" $args]
+
+ send client save
+ send imagewin setCursorType idle
+} ; send okaySave addCallback Save
+
+
+
+################################################################################
+# TILE GEOMETRY
+################################################################################
+
+set tileSel 2
+set tileOpt 0
+set tileNcols 2
+set tileNrows 1
+set tile_frames {}
+
+proc selectTileOrientation { widget type select args } \
+{
+ global tileSel tileOpt
+
+ set w { nrowLab ncolLab nrdecrease nrincrease ncdecrease ncincrease }
+ if {$select == "Manual"} {
+ foreach p $w { send $p setSensitive True }
+ } elseif {$select != "none"} {
+ foreach p $w { send $p setSensitive False }
+ }
+
+ set w { byCols bottomUp labelFrames labelImname labelTitles }
+ if {$select == "Disabled"} {
+ foreach p $w { send $p setSensitive False }
+ } else {
+ foreach p $w { send $p setSensitive True }
+ }
+
+ switch $select {
+ Disabled { set tileSel 0 }
+ Manual { set tileSel 1
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+ set select [format "%dx%d" $nx $ny]
+ }
+ Best { set tileSel 2 }
+ Square { set tileSel 3 }
+ Horizontal { set tileSel 4 }
+ Vertical { set tileSel 5 }
+ "One Row" { set tileSel 6 }
+ "One Column" { set tileSel 7 }
+ none { send tileMode set selection $tileSel ; return }
+ }
+
+ # Reset the button in case we're called directly from elsewhere.
+ send tileMode set selection $tileSel
+
+ # Send the option to the client.
+ if {$tileSel > 0} {
+ setTileFrames
+ send client setOption tileFrames "True"
+ set tileOpt $tileSel
+ } else {
+ send client setOption tileFrames "False"
+ }
+
+} ; send tileMode addCallback selectTileOrientation
+
+proc tileSelToLabel { selection args } \
+{
+ switch $selection {
+ 0 { return "Disabled" }
+ 1 { return "Manual" }
+ 2 { return "Best" }
+ 3 { return "Square" }
+ 4 { return "Horizontal" }
+ 5 { return "Vertical" }
+ 6 { return "One Row" }
+ 7 { return "One Column" }
+ }
+ return "Best"
+}
+
+# Callback for the fill style options.
+proc selectFillStyle { widget type state args } \
+{
+ if {$state} { set not False } else { set not True }
+
+ switch $widget {
+ byCols { send client setOption tileByRows $not }
+ bottomUp { send client setOption tileTopDown $not }
+ }
+} ; foreach w {byCols bottomUp} { send $w addCallback selectFillStyle }
+
+# Callback for the tile labelling options.
+proc selectTileLabels { widget type state args } \
+{
+ if {$state} {
+ switch $widget {
+ labelFrames { send client setOption tileLabels 1 }
+ labelImname { send client setOption tileLabels 2 }
+ labelTitles { send client setOption tileLabels 3 }
+ }
+ } else {
+ send client setOption tileLabels 0
+ }
+ send $widget set on $state
+}
+foreach w {labelFrames labelImname labelTitles} {
+ send $w addCallback selectTileLabels
+}
+
+# Callback for the Tile Frame selection toggles.
+proc setTileFrames args \
+{
+ global tile_frames tileSel tileNcols tileNrows
+
+ # No-op if tiling isn't enabled.
+ if {$tileSel == 0} \
+ return
+
+ # Get the new tile frames list.
+ set tile_frames {}
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get state]} {
+ lappend tile_frames $i
+ }
+ }
+
+ # Reset the geometry.
+ set geom [format "%dx%d" $tileNcols $tileNrows]
+ switch $tileSel {
+ 1 { send client setOption tileGeom $geom \{ $tile_frames \} }
+ 2 { send client setOption tileGeom Best \{ $tile_frames \} }
+ 3 { send client setOption tileGeom Square \{ $tile_frames \} }
+ 4 { send client setOption tileGeom Horizontal \{ $tile_frames \} }
+ 5 { send client setOption tileGeom Vertical \{ $tile_frames \} }
+ 6 { send client setOption tileGeom Row \{ $tile_frames \} }
+ 7 { send client setOption tileGeom Column \{ $tile_frames \} }
+ }
+}; for {set i 1} {$i <= 16} {incr i} {send tFrame$i addCallback setTileFrames}
+
+proc setAllTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state True
+ }
+ }
+ setTileFrames
+} ; send tAll addCallback setAllTileFrames
+
+proc setNoTileFrames args \
+{
+ global tileNcols tileNrows
+ for {set i 1} {$i <= 16} {incr i} {
+ if {[send tFrame$i get sensitive]} {
+ send tFrame$i set state False
+ }
+ }
+ setTileFrames
+} ; send tNone addCallback setNoTileFrames
+
+proc tileOptions { param old new } \
+{
+ global tileNcols tileNrows
+
+ set tileNcols [lindex $new 0]
+ set tileNrows [lindex $new 1]
+
+ # Set the geometry.
+ send nctext set label $tileNcols
+ send nrtext set label $tileNrows
+ send tileGeometry set label [format \
+ "Tile Geometry: %-2dx%2d" $tileNcols $tileNrows]
+
+} ; send tileOptions addCallback tileOptions
+
+
+proc tileSetRows { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "nrdecrease" && [expr ($ny-1)] > 0} {
+ incr ny -1
+ } elseif {$widget == "nrincrease" && [expr ($ny+1)] <= $nframes} {
+ incr ny 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { nrdecrease nrincrease } { send $w addCallback tileSetRows }
+
+proc tileSetCols { widget args } \
+{
+ global nframes tile_frames
+
+ set nx [send nctext get label]
+ set ny [send nrtext get label]
+
+ if {$widget == "ncdecrease" && [expr ($nx-1)] > 0} {
+ incr nx -1
+ } elseif {$widget == "ncincrease" && [expr ($nx+1)] <= $nframes} {
+ incr nx 1
+ } else {
+ return
+ }
+ set geom [format "%dx%d" $nx $ny]
+ send client setOption tileGeom $geom $tile_frames
+} ; foreach w { ncdecrease ncincrease } { send $w addCallback tileSetCols }
+
+
+# Initialize the frame tiling.
+setAllTileFrames
+selectTileOrientation junk junk Disabled
+selectFillStyle byRows junk True
+selectFillStyle topDown junk True
+selectTileLabels labelImname junk False
+
+################################################################################
+# Coords Panel Callbacks.
+################################################################################
+
+# In case we need to change the values....
+#global wcsPHeight wcsPTxtHeight wcsPGrHeight wcsPOptHeight
+#set wcsPHeight 267
+#set wcsPTxtHeight 132
+#set wcsPGrHeight 175
+#set wcsPOptHeight 233
+#setCoordPanelHeight
+
+set wcsPHeight 267 ;# full panel no options
+set wcsPTxtHeight 132 ;# size of text area box
+set wcsPGrHeight 175 ;# size of text area group
+set wcsPOptHeight 233 ;# extra height for opts boxes
+
+# Set the WCS readout panel sensitivity depending on whether the ISM
+# is currently enabled.
+proc setCoordPanelSensitivity args \
+{
+ set widgets {
+ wpWcs2 wpWcs3 wpWcs4
+ wiWcs2 wiWcs3 wiWcs4
+ wlWcs2 wlWcs3 wlWcs4
+ sysWcs2 sysWcs3 sysWcs4
+ fmtWcs2 fmtWcs3 fmtWcs4
+ }
+
+ send sysWcs1 set label "Display"
+ send fmtWcs1 set label "Default"
+
+ for {set i 2} {$i <= 4} {incr i} {
+ send sysWcs$i set label "None" ; send fmtWcs$i set label "Default"
+ send wpWcs$i set on False ; send wiWcs$i set on False
+ send wtWcs$i set height 4
+ }
+
+ if {[send ismToggle get on]} {
+ send sysWcs2 set label "World" ; send fmtWcs2 set label "Default"
+ send wpWcs2 set on True ; send wiWcs2 set on True
+ send wtWcs2 set height 17
+
+ foreach w $widgets { send $w setSensitive True }
+ } else {
+ foreach w $widgets { send $w setSensitive False }
+ }
+}
+
+
+# Set the Coords Panel height depending on the option settings.
+proc setCoordPanelHeight args \
+{
+ global wcsPHeight wcsPOptHeight wcsPTxtHeight wcsPGrHeight
+ global tabTop
+
+ if {$tabTop != "wcs_panel"} \
+ return
+
+ # Get the height of the text area
+ set panel_h $wcsPHeight
+ set shrinkage 0
+ foreach w { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo } {
+ if {[send $w get on] == 0} {
+ incr shrinkage 13
+ }
+ }
+ if {[send woptTitles get on] == 0} {
+ incr shrinkage 26
+ }
+
+ set ph [expr ($wcsPHeight - $shrinkage)]
+ if {[send wcsOptions get on] == 1} {
+ incr ph $wcsPOptHeight
+ }
+
+ send wcsGroup set height [ expr ($wcsPGrHeight - $shrinkage) ]
+ send wcsFrame set height [ expr ($wcsPTxtHeight - $shrinkage) ]
+ send panel set height $ph
+}
+
+# Toggle the options display for the panel.
+proc wcsOptToggle { widget type state args } \
+{
+ global wcsPOptHeight
+ set h [ send panel get height ]
+ if {$state == 1} {
+ send panel set height [ expr ($h + $wcsPOptHeight) ]
+ } else {
+ send panel set height [ expr ($h - $wcsPOptHeight) ]
+ }
+} ; send wcsOptions addCallback wcsOptToggle
+
+# Handle the panel display toggles.
+proc wcsCoordsCB { widget type state args } \
+{
+
+ set hght [ expr (($state == 1) ? 17 : 4)]
+ switch $widget {
+ wpWcs1 { send wtWcs1 set height $hght }
+ wpWcs2 { send wtWcs2 set height $hght }
+ wpWcs3 { send wtWcs3 set height $hght }
+ wpWcs4 { send wtWcs4 set height $hght }
+ woptFBinfo { send wtFBCfg set height $hght }
+ woptTitles { send wtName set height $hght ; send wtTitle set height $hght }
+ }
+ setCoordPanelHeight
+}
+set wcValues { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo woptTitles }
+foreach w $wcValues { send $w addCallback wcsCoordsCB }
+
+
+# Handle WCS label string options.
+set wcsLabels 1
+proc wcsLabelsCB { widget type state args } \
+{
+ global up_todo wcsLabels
+ set wcsLabels $state
+ #resizeCoordsBox 0
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+} ; send woptLabels addCallback wcsLabelsCB
+
+
+# Toggle the BPM tracking state.
+proc wcsBPMCB { widget type state args } \
+{
+ global ism_enable
+ if ($ism_enable) { catch { send wcspix set bpm $state } }
+} ; send woptBPM addCallback wcsBPMCB
+
+
+# Procedures to format lines in the wcsText box.
+proc wcsFmtImname { name } \
+{
+ send wtName set string [format " Name: %s" [string trimleft $name]]
+}
+
+proc wcsFmtImtitle { title } \
+{
+ send wtTitle set string [format " Title: %s" [string trimleft $title]]
+}
+
+proc wcsFmtFBConfig args \
+{
+ global frameWidth frameHeight frame nframes
+ set buf [ format "%5d x %-5d" $frameWidth $frameHeight ]
+ set line [ format "Frame Buf: %-13s Frame: %d of %d" \
+ [string trimleft $buf] $frame $nframes ]
+ send wtFBCfg set string $line
+}
+
+proc wcsFmtIValue { value } \
+{
+ global coord
+ set line [ format " Pixel: %.11s" $value ]
+ send wtIPixval set string $line
+ if {[info exists coord(ival)]} {
+ set coord(ival) $value
+ updateCoordsBox
+ }
+}
+
+proc wcsFmtSValue { value } \
+{
+ global coord
+ set line [ format " Scaled: %.8s" $value ]
+ send wtSPixval set string $line
+ set coord(sval) [format "%s" $value]
+}
+
+proc wcsFmtBValue { value } \
+{
+ global coord
+
+ if { [send woptBPM get on] } {
+ set line [ format " BPM: %s" $value ]
+ set color [expr { ($value == 0) ? "black" : "red" } ]
+ set msg [format "set string \{%s\}; set background %s" $line $color ]
+ set coord(bval) [format "%s" $value]
+ } else {
+ set line [ format " BPM: (off)" ]
+ set msg [format "set string \{%s\}" $line]
+ }
+ send wtBPixval $msg
+}
+
+proc wcsFmtWcs { num wcsname x y xunit yunit args } \
+{
+ global coord coordLab wcsLabels
+
+ if {$wcsLabels} {
+ set line [ format "%4s: %12s %4s: %12s WCS: %s" \
+ $xunit $x $yunit $y [string trimleft $wcsname] ]
+ } else {
+ set line [ format "%4s %12s %4s %12s %s" \
+ " " $x " " $y [string trimleft $wcsname] ]
+ }
+ send wtWcs$num set string $line
+
+ if {[info exists coord(wcs$num)]} {
+ if {$num == 1} {
+ set coord(wcs1) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(sval) ]
+ } elseif {$num == 2} {
+ set coord(wcs2) [ format "\{%s\} \{%s\} \{%s\}" $x $y $coord(ival) ]
+ } else {
+ set coord(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" $x $y $wcsname ]
+ }
+
+ set coordLab(wcs$num) [ format "\{%s\} \{%s\} \{%s\}" \
+ $xunit $yunit [string trimleft $wcsname ] ]
+ updateCoordsBox
+ }
+}
+
+
+
+# Handle the wcsbox readout.
+#------------------------------
+set up_todo 2
+set up_done 0
+set coord(ival) 0.
+set coord(sval) 0.
+set coord(bval) 0
+set coord(wcs1) { 0. 0. 0. }
+set coord(wcs2) { 0. 0. 0. }
+set coord(wcs3) { 0. 0. 0. }
+set coord(wcs4) { 0. 0. 0. }
+
+proc wcsCoordB { widget type state args } \
+{
+ global coord up_todo
+
+ switch $widget {
+ wiWcs1 { set line wcs1 ;set coord($line) { 0. 0. "" } }
+ wiWcs2 { set line wcs2 ;set coord($line) { 0. 0. "" } }
+ wiWcs3 { set line wcs3 ;set coord($line) { 0. 0. "" } }
+ wiWcs4 { set line wcs4 ;set coord($line) { 0. 0. "" } }
+ }
+
+ if {$state} {
+ incr up_todo
+ } else {
+ unset coord($line)
+ incr up_todo -1
+ }
+
+ resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+set wiValues { wiWcs1 wiWcs2 wiWcs3 wiWcs4 }
+foreach w $wiValues { send $w addCallback wcsCoordB }
+
+
+# Resize the coords box depending on the panel options.
+proc resizeCoordsBox { nlines } \
+{
+ global track_enable wcsLabels winWidth winHeight wcsboxGeom
+
+ if {! $track_enable} \
+ return
+
+ send wcsbox getAttributes width cur_w height cur_h
+ set defGeom [format "%sx%s-5-5" $cur_w $cur_h]
+ send imagewin parseGeometry $wcsboxGeom $defGeom x y width height
+
+ set ew [expr (($wcsLabels == 1) ? 125 : 65)]
+
+ # Reset to the default geometry
+ if {$nlines == 0} {
+ set x [expr ($x + $ew)]
+ set y [expr ($y + $height - 17 + 1)]
+ set new_w 166
+ set new_h 17
+
+ } else {
+ if {$width > 166} { ;# not using default wcsbox
+ set new_w $width
+ } else {
+ set new_w [expr ($width + $ew)]
+ set x [expr ($x - $ew)]
+ if {$wcsLabels == 0} {
+ incr x 60
+ }
+ }
+ set new_h [ expr ($nlines * 17) ]
+ set y [expr ($y + $height - $new_h + 1)]
+ }
+
+ # Bounds checking.
+ if {$x < 5} {
+ set x 5
+ } elseif {$x > [expr ($winWidth - $new_w - 5)]} {
+ set x [expr ($winWidth - $new_w - 5)]
+ }
+ if {$y < 5} {
+ set y 5
+ } elseif {$y > [expr ($winHeight - $new_h - 5)]} {
+ set y [expr ($winHeight - $new_h - 5)]
+ }
+
+ # Finally redraw the marker.
+ send wcsbox "\
+ setAttributes \
+ width $new_w \
+ height $new_h \
+ x $x \
+ y $y; \
+ redraw"
+
+ set wcsboxGeom [send imagewin getGeometry $x $y $new_w $new_h]
+ send client encodewcs [expr ($winWidth / 2)] [expr ($winHeight / 2)]
+ updateCoordsBox
+}
+
+
+# Shortcuts for known WCS labels.
+set labels(display) "TV"
+set labels(logical) "Log"
+set labels(physical) "Phys"
+set labels(equatorial) "Eq"
+set labels(ecliptic) "Ecl"
+set labels(galactic) "Gal"
+set labels(supergalactic) "SGal"
+set labels(amplifier) "Amp"
+set labels(ccd) "CCD"
+set labels(detector) "Det"
+
+
+# Format the coords box marker with the selected output options.
+proc updateCoordsBox args \
+{
+ global ism_enable coord coordLab wcsLabels
+ global up_done up_todo labels track_enable
+ global coord
+
+ if {! $ism_enable} \
+ return
+
+ incr up_done
+
+ set text ""
+ foreach l {wcs1 wcs2 wcs3 wcs4} {
+ if {[info exists coord($l)]} {
+ set x [lindex $coord($l) 0]
+ set y [lindex $coord($l) 1]
+ set z [string tolower [string trimleft [lindex $coord($l) 2] ] ]
+ if {[info exists labels($z)]} {
+ set z $labels($z)
+ }
+
+ if {$wcsLabels && [info exists coordLab($l)]} {
+ set lx [lindex $coordLab($l) 0]
+ set ly [lindex $coordLab($l) 1]
+ append text [format " %4s %12.12s %4s %12.12s %9.9s \n" \
+ $lx $x $ly $y $z ]
+ } else {
+ append text [format " %12.12s %12.12s %9.9s \n" $x $y $z ]
+ }
+ }
+ }
+
+ # Now send the string.
+ if {$track_enable} {
+ set color [expr { ($coord(bval) == 0) ? "black" : "red" } ]
+ set txt [format "set text \{%s\}; set textBgColor %s; redraw noerase" \
+ $text $color ]
+ send wcsbox $txt
+ }
+
+ if {$up_done >= $up_todo} {
+ set up_done 0 ;# reset counter
+ }
+}
+
+
+# Create the WCS format menus.
+#------------------------------------
+proc setWcsFmt { format line } \
+{
+ catch { send wcspix set format $format $line }
+}
+
+for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ lappend items "\"Default\" f.exec \{setWcsFmt default $i\}"
+ lappend items "\"Sexigesimal\" f.exec \{setWcsFmt hms $i\}"
+ lappend items "\"Degrees\" f.exec \{setWcsFmt deg $i\}"
+ lappend items "\"Radians\" f.exec \{setWcsFmt rad $i\}"
+ editMenu fmtMenu$i fmtWcs$i $items
+}
+
+
+# Create the default WCS type menus.
+#------------------------------------
+
+set defaultWcsMenu {
+ { "None" f.exec {setWcsSys none WCS_LINE } }
+ { "Display" f.exec {setWcsSys display WCS_LINE } }
+ { "World" f.exec {setWcsSys world WCS_LINE } }
+ { "Logical" f.exec {setWcsSys logical WCS_LINE } }
+ { "Physical" f.exec {setWcsSys physical WCS_LINE } }
+ { f.dblline }
+}
+
+proc setWcsSys { sys line } \
+{
+ if {[string tolower $sys] == "none"} {
+ wcsCoordB wiWcs$line junk 0
+ send sysWcs$line set label "None"; send fmtWcs$line set label "Default"
+ send wpWcs$line set on False ; send wiWcs$line set on False
+ send wtWcs$line set height 4
+ setCoordPanelHeight
+
+ } else {
+ catch { send wcspix set wcs $sys $line }
+ }
+}
+
+proc resetDefaultWcsMenu args \
+{
+ global defaultWcsMenu
+
+ for {set i 1} {$i <= 4} {incr i} {
+ regsub -all WCS_LINE $defaultWcsMenu $i menu_def
+ editMenu sysMenu$i sysWcs$i $menu_def
+ }
+} ; resetDefaultWcsMenu
+
+
+# Initialize the coordinates panel.
+#------------------------------------
+
+proc initCoordsPanel args \
+{
+ #send wcLine set height 2 ;# kludge for label widget
+
+ # Initialize the display strings in the coords box.
+ wcsFmtImname ""
+ wcsFmtImtitle ""
+ wcsFmtFBConfig
+ wcsFmtIValue "0." ; wcsFmtSValue "0." ; wcsFmtBValue "0"
+ wcsFmtWcs 1 "" "" "" " X" " Y"
+ wcsFmtWcs 2 "" "" "" " X" " Y"
+ wcsFmtWcs 3 "" "" "" " X" " Y"
+ wcsFmtWcs 4 "" "" "" " X" " Y"
+
+ send fmtWcs1 set label Default
+ send wpWcs1 set on True ;send wiWcs1 set on True
+ send wpWcs2 set on True ;send wiWcs2 set on True
+ send wpWcs3 set on False ;send wiWcs3 set on False ;send wtWcs3 set height 4
+ send wpWcs4 set on False ;send wiWcs4 set on False ;send wtWcs4 set height 4
+
+ # Set the Coords Panel height.
+ set wcsPTxtHeight [send wcsText get height]
+ setCoordPanelHeight
+
+ # Set the WCS readout panel sensitivity.
+ setCoordPanelSensitivity
+
+} ; initCoordsPanel
+
+
+
+
+################################################################################
+# Compass indicator procedures.
+################################################################################
+
+set compassColor 207 ;# normally this is yellow
+set last_compass [send compass get on] ;# save compass state
+
+proc drawCompass args \
+{
+ global ism_enable frame frameCache compassColor Compass Orient
+ global panner_x panner_y panner_width panner_height cur_objid
+ global redraw_compass last_compass
+
+
+ if {! [send compass get on]} \
+ return
+
+ eraseCompass ;# erase the old compass
+
+ if {! [info exists frameCache($frame)] } {
+ set id -1
+ } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {
+ set id [lindex $frameCache($frame) 1]
+ } else {
+ set id $cur_objid
+ }
+
+ if { [info exists Compass($id)] } {
+ set angle [lindex $Compass($id) 0]
+ set north_x [lindex $Compass($id) 1]
+ set north_y [lindex $Compass($id) 2]
+ set east_x [lindex $Compass($id) 3]
+ set east_y [lindex $Compass($id) 4]
+ set transpose [lindex $Compass($id) 5]
+ set xlab [lindex $Compass($id) 6]
+ set ylab [lindex $Compass($id) 7]
+ } else {
+ set north_x 0.0 ; set north_y 1.0
+ set east_x 1.0 ; set east_y 0.0
+ set xlab X ; set ylab Y
+ set angle 0.0 ; set transpose 0
+ set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }
+ }
+ set xflip 1
+ set yflip 1
+
+ # Adjust the compass for the display orientation (e.g. image sections
+ # used to flip an image during display).
+ if { [info exists Orient($id)] } {
+ set xflip [expr $xflip * [lindex $Orient($id) 1] ]
+ set yflip [expr $yflip * [lindex $Orient($id) 2] ]
+ }
+
+ # Get the panner center position.
+ set pcx [expr ($panner_x + $panner_width / 2)]
+ set pcy [expr ($panner_y + $panner_height / 2)]
+
+ # Setup for the overlay.
+ send imagewin getLogRes sv_xl sv_yl
+ send imagewin getPhysRes sv_xp sv_yp
+ send imagewin setLogRes $sv_xp $sv_yp
+ send imagewin setLineWidth 2
+
+ set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]
+ set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]
+
+ # Normalized compass points. The first row are the axes, second is
+ # the pointer head, and last are the X/Y label coords. Assumes a
+ # zero rotation with North up and East left, or standard X/Y orientation.
+ set cpoints {
+ {-1 0} {0 0} {0 -1}
+ {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}
+ {-1.2 0} {0 -1.2}
+ }
+
+
+ # Get rotation and scale factors.
+ set angle [expr "atan2($north_y,$north_x)"]
+ set coso [expr "cos (-$angle)"]
+ set sino [expr "sin (-$angle)"]
+ set scale [expr ([min $panner_width $panner_height] * 0.3)]
+
+ # Initialize the drawing points.
+ set pts {}
+
+ set cpoints { }
+ lappend cpoints [list $east_x $east_y ]
+ lappend cpoints [list 0 0]
+ lappend cpoints [list $north_x $north_y]
+ foreach p $cpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ set rpoints { }
+ set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }
+ foreach p $hpoints {
+ # Break out the position.
+ set sx [lindex $p [expr "($transpose > 0) ? 1 : 0"]]
+ set sy [lindex $p [expr "($transpose > 0) ? 0 : 1"]]
+
+ # Do the rotation of the head at the origin.
+ set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]
+ set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]
+
+ lappend rpoints [list $rx $ry]
+ }
+ foreach p $rpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy + 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+ set lpoints { }
+ lappend lpoints [list [expr "$east_x-0.2"] $east_y ]
+ lappend lpoints [list $north_x [expr "$north_y+0.2"] ]
+ foreach p $lpoints {
+ # Get the scaled position.
+ set sx [expr ($scale * [lindex $p [expr "($transpose > 0) ? 1 : 0"]])]
+ set sy [expr ($scale * [lindex $p [expr "($transpose > 0) ? 0 : 1"]])]
+
+ # Translate to the scaled position.
+ set rx [expr int($pcx + $sx + 0.5)]
+ set ry [expr int($pcy - $sy - 0.5)]
+
+ # Now handle the axis flip.
+ set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]
+ set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]
+ lappend pts $rx $ry
+ }
+
+
+ # Draw the compass axes.
+ set compassPts [lrange $pts 0 5]
+ send imagewin setColorIndex $compassColor
+ send imagewin drawPolyline $compassPts
+
+
+ # Draw the compass pointer.
+ set head [lrange $pts 6 13]
+ send imagewin setFillType solid
+ send imagewin drawPolygon $head
+
+ # Draw the labels.
+ send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab
+ send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab
+
+ send imagewin setLogRes $sv_xl $sv_yl
+
+ set redraw_compass 0
+
+} ; foreach w {xflip yflip} { send $w addCallback drawCompass }
+
+
+# This is a kludge to redraw the compass after it is erased when displaying
+# a new image. Once the user moves the mouse back into the main window we'll
+# do the redraw.
+send imagewin addEventHandler drawCompass enterWindowMask
+
+
+
+proc createCompassMarker { pts args } \
+{
+ set cm_points { }
+ lappend cm_points [lrange $pts 0 1]
+ lappend cm_points [lrange $pts 2 3]
+ lappend cm_points [lrange $pts 4 5]
+
+ print [list $cm_points]
+
+}
+
+
+proc eraseCompass args \
+{
+ global panner_mapping
+ send imagewin refreshMapping $panner_mapping
+}
+
+proc toggleCompass { widget type state args } \
+{
+ global last_compass
+
+ if {$state} {
+ drawCompass
+ set last_compass True
+ } else {
+ eraseCompass
+ set last_compass False
+ }
+} ; send compass addCallback toggleCompass
+
+
+
+
+################################################################################
+# RULER MARKERS
+################################################################################
+
+set rulerX 0 ;# ruler start in screen coords
+set rulerY 0
+set rulerPts { {0 0} {0 0} {0 0} } ;# ruler vertices
+set rulerList { } ;# ruler list
+
+set rulerSticky { } ;# list of sticky rulers
+set isSticky "Sticky" ;# menu label
+
+set rulerWCS 0 ;# use WCS coords
+set rulerXWCS 0 ;# ruler start in WCS units
+set rulerYWCS 0
+set rulerXWCS2 0 ;# ruler end in WCS units
+set rulerYWCS2 0
+set rulerFmt pixel ;# ruler label format
+
+
+# Translations when pointer is inside marker.
+set rulerTranslations { \
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>b: call(prevFrame,$name)
+ !Ctrl <Key>f: call(nextFrame,$name)
+ !Ctrl <Key>h: call(move_cursor,-1,0)
+ !Ctrl <Key>j: call(move_cursor,0,1)
+ !Ctrl <Key>k: call(move_cursor,0,-1)
+ !Ctrl <Key>l: call(move_cursor,1,0)
+ !Ctrl <Key>n: call(normalize)
+ !Ctrl <Key>c: call(cpZoomAction,centerFrame)
+ !Ctrl <Key>i: call(cpInvert)
+ !Ctrl <Key>m: call(cpMatchFrames)
+ !Ctrl <Key>r: call(cpRegisterFrames)
+ !Ctrl <Key>p: call(togglePanner)
+ !Alt <Key>1: call(cpSetFrame,frame1)
+ !Alt <Key>2: call(cpSetFrame,frame2)
+ !Alt <Key>3: call(cpSetFrame,frame3)
+ !Alt <Key>4: call(cpSetFrame,frame4)
+ !Ctrl <Key>1: call(cpZoom,1,1,fixed)
+ !Ctrl <Key>2: call(cpZoom,2,2,fixed)
+ !Ctrl <Key>3: call(cpZoom,3,3,fixed)
+ !Ctrl <Key>4: call(cpZoom,4,4,fixed)
+ !Ctrl <Key>5: call(cpZoom,5,5,fixed)
+ !Ctrl <Key>6: call(cpZoom,6,6,fixed)
+ !Ctrl <Key>7: call(cpZoom,7,7,fixed)
+ !Ctrl <Key>8: call(cpZoom,8,8,fixed)
+ !Ctrl <Key>9: call(cpZoom,9,9,fixed)
+ <Key>BackSpace: call(deleteNamedRuler,NAME,$x,$y)
+ <Key>Delete: call(deleteNamedRuler,NAME,$x,$y)
+ <KeyPress>: m_input()
+ <Btn3Down>: call(setRulerMenu) popup(rulerMenu)
+ <Btn3Up>: popdown(rulerMenu)
+!Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(resizeRuler,$x,$y,0)
+ !Ctrl <Btn1Up>: call(deleteRuler,$x,$y)
+ <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)
+}
+
+
+
+# Popup menu in effect when inside marker.
+set rulerMenuDescription {
+ { "Ruler" f.title }
+ { f.dblline }
+ { "$isSticky" f.exec {
+ toggleSticky $ruler
+ } }
+ { f.line }
+ { "Units" f.menu rulerUnits }
+ { "Color" f.menu rulerColor }
+ { f.line }
+ { "Draw into Frame" f.exec {
+ writeRuler $ruler
+ } sensitive False }
+ { f.line }
+ { "Destroy" f.exec {
+ scan $ruler "ruler%d" num
+ deleteNamedRuler $num x y
+ } }
+} ; createMenu rulerMenu imagewin $rulerMenuDescription
+
+set rulerUnitsDescription {
+ { Units f.title }
+ { f.dblline }
+ { "Pixels" f.exec { setUnits $ruler pixel } }
+ { "Arc Seconds" f.exec { setUnits $ruler arcsec
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Arc Minutes" f.exec { setUnits $ruler arcmin
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+ { "Degrees" f.exec { setUnits $ruler degrees
+ } sensitive { ($rulerWCS > 0) ? "True" : "False"} }
+} ; createMenu rulerUnits rulerMenu $rulerUnitsDescription
+
+set rulerColorDescription {
+ { Color f.title }
+ { f.dblline }
+ { "" f.exec "r_setColor $ruler black yellow"
+ bitmap solid foreground black }
+ { "" f.exec "r_setColor $ruler white black"
+ bitmap solid foreground white }
+ { "" f.exec "r_setColor $ruler red yellow"
+ bitmap solid foreground red }
+ { "" f.exec "r_setColor $ruler green black"
+ bitmap solid foreground green }
+ { "" f.exec "r_setColor $ruler blue white"
+ bitmap solid foreground blue }
+ { "" f.exec "r_setColor $ruler magenta black"
+ bitmap solid foreground magenta }
+ { "" f.exec "r_setColor $ruler cyan black"
+ bitmap solid foreground cyan }
+ { "" f.exec "r_setColor $ruler yellow black"
+ bitmap solid foreground yellow }
+} ; createMenu rulerColor rulerMenu $rulerColorDescription
+
+
+proc makeRuler {parent x y} \
+{
+ global rulerTranslations ruleno rulerWCS rulerXWCS rulerYWCS
+ global rulerPts rulerX rulerY rulerList
+ global isSticky rulerMenuDescription rulerUnitsDescription
+ global coord coordLab
+
+
+ incr ruleno ; set ruler ruler$ruleno
+
+ # Substitute so the marker translation will delete the marker
+ # by it's number rather than the default parent widget name.
+ regsub -all NAME $rulerTranslations $ruleno translations
+
+ # Create the polygon for the marker.
+ send $parent createMarker $ruler \
+ type polygon\
+ createMode noninteractive\
+ translations $translations\
+ lineColor yellow\
+ fill False\
+ highlightWidth 1\
+ highlightColor yellow\
+ knotSize 0\
+ activated True\
+ visible False\
+ sensitive True\
+ x $x\
+ y $y
+
+ # Define a callback so we can identify the ruler.
+ send $ruler addCallback selectRuler focusIn focusOut
+
+ # Create the text markers for the labels.
+ send $parent set markerTextFont 6x9
+ makeLabelMarker $parent rulerXlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerYlab$ruleno 5ch 1ch
+ makeLabelMarker $parent rulerHlab$ruleno 8ch 1ch
+ send $parent set markerTextFont 6x13
+
+ set rulerX $x ;# save the reference point
+ set rulerY $y
+
+ set ref [ list $x $y ] ;# initialize the polygon
+ set rx [ list [expr "$x +1"] $y ]
+ set ry [ list $x [expr "$y +1"] ]
+ set rulerPts [list $ref $rx $ry ]
+
+ send $ruler setVertices $rulerPts ;# set attributes
+ send $ruler set visible True"
+ send $ruler setAttribute autoRedraw True
+
+ # See whether we have a WCS to use.
+ set rulerWCS 0
+ set rulerXWCS 0
+ set rulerYWCS 0
+ for {set num 1} {$num <= 4 && $rulerWCS == 0} {incr num} {
+ if { [info exists coordLab(wcs$num)] } {
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+ if {$xl==" ra" || $xl=="elon" || $xl=="glon" || $xl=="slon"} {
+ set rulerWCS $num
+ set rulerXWCS [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set rulerYWCS [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ }
+ }
+ }
+
+ # Edit the menus.
+ set isSticky "Sticky"
+ editMenu rulerMenu imagewin $rulerMenuDescription
+ editMenu rulerUnits imagewin $rulerUnitsDescription
+
+
+ lappend rulerList $ruleno
+}
+
+proc wcs2log { val label fmt} \
+{
+ set newval $val
+ if {$fmt == "sexigesimal" || $fmt == "default"} {
+ scan $val "%d:%d:%f" h m s
+ set newval [expr "double($h) + double($m) / 60.0 + double($s) / 3600.0"]
+ if {$label == " ra"} {
+ set newval [expr "double($newval * 15.0)"]
+ }
+ }
+ return [expr "double($newval)" ]
+}
+
+
+proc resizeRuler {x y redraw} \
+{
+ global rulerPts rulerX rulerY ruleno coord coordLab
+ global rulerWCS rulerXWCS rulerYWCS rulerFmt
+ global rulerXWCS2 rulerYWCS2
+
+
+ # Track the mouse.
+ set ref [ list $rulerX $rulerY ]
+ set rx [ list $x $rulerY ]
+ set ry [ list $x $y ]
+ set rulerPts [list $ref $rx $ry ]
+
+ # Compute the distances.
+ if {$rulerWCS > 0} {
+ set num $rulerWCS
+ set xl [string tolower [lindex $coordLab(wcs$num) 0]]
+ set yl [string tolower [lindex $coordLab(wcs$num) 1]]
+ set fmt [string tolower [send fmtWcs$num get label] ]
+
+ # Save the cursor coords in WCS so we can convert labels.
+ if {$redraw} {
+ set nx $rulerXWCS2
+ set ny $rulerYWCS2
+ } else {
+ set nx [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]
+ set ny [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]
+ set rulerXWCS2 $nx
+ set rulerYWCS2 $ny
+ }
+ }
+
+ if {$rulerFmt == "pixel"} {
+ set xdist [ expr "abs($x - $rulerX)" ]
+ set ydist [ expr "abs($y - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ } else {
+ set xdist [ expr "abs($nx - $rulerXWCS)" ]
+ set ydist [ expr "abs($ny - $rulerYWCS)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+ }
+
+ # Redraw the polygon.
+ send ruler$ruleno setVertices $rulerPts
+
+ # Label the distances.
+ setXRulerLabel $x $y $xdist
+ setYRulerLabel $x $y $ydist
+ setHRulerLabel $x $y $hdist
+}
+
+# Create a label marker for the ruler.
+proc makeLabelMarker { parent name width height } \
+{
+ send $parent createMarker $name \
+ type text \
+ createMode noninteractive \
+ width $width \
+ height $height \
+ lineWidth 0 \
+ imageText true \
+ textBgColor yellow \
+ textColor black \
+ activated true \
+ visible false
+}
+
+proc setXRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpXscale rulerFmt
+
+ send rulerXlab$ruleno set visible False
+
+ if {[expr "abs($cx - $rulerX)"] > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerXlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY - 14"]
+ } else {
+ set yp [expr "$rulerY + 2"]
+ }
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - 10"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - 10"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerXlab$ruleno "setAttributes x $xp y $yp"
+ send rulerXlab$ruleno "set text \{$text\}; redraw erase"
+
+ send rulerXlab$ruleno set visible True
+ }
+}
+
+proc setYRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale rulerFmt
+
+ send rulerYlab$ruleno set visible False
+
+ if {[expr "abs($cy - $rulerY)"] > 20} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpYscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerYlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$cx + 2"]
+ } else {
+ set xp [expr "$cx - $len * 6 - 5"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerYlab$ruleno "setAttributes x $xp y $yp"
+ send rulerYlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerYlab$ruleno set visible True
+ }
+}
+
+proc setHRulerLabel { cx cy dist } \
+{
+ global rulerX rulerY ruleno winWidth winHeight
+ global cpYscale cpXscale rulerFmt
+
+ send rulerHlab$ruleno set visible False
+
+ set xdist [ expr "abs($cx - $rulerX)" ]
+ set ydist [ expr "abs($cy - $rulerY)" ]
+ set hdist [ expr "sqrt($xdist * $xdist + $ydist * $ydist)" ]
+
+ if {$hdist > 30} {
+ switch $rulerFmt {
+ pixel { set text [format "%.1f" [expr "$dist / $cpXscale"] ] }
+ arcsec { set text [format "%.2f\"" [expr "$dist * 3600.0"] ] }
+ arcmin { set text [format "%.2f\'" [expr "$dist * 60.0"] ] }
+ degrees { set text [format "%.2fd" "$dist" ] }
+ }
+ set len [expr [string length $text] + 1]
+ send rulerHlab$ruleno "set width ${len}ch"
+
+ # Compute the placement of the label marker.
+ if {$cx > $rulerX} {
+ set xp [expr "$rulerX + abs($cx - $rulerX)/2 - $len * 6"]
+ } else {
+ set xp [expr "$rulerX - abs($cx - $rulerX)/2 - $len * 3"]
+ }
+ if {$cy > $rulerY} {
+ set yp [expr "$rulerY + abs($cy - $rulerY)/2"]
+ } else {
+ set yp [expr "$rulerY - abs($cy - $rulerY)/2"]
+ }
+
+ # Bounds checking.
+ if {$xp < 0} { set xp 1 }
+ if {$yp < 0} { set yp 1 }
+ if {$xp > $winWidth} { set xp [expr "$winWidth - 20" }
+ if {$yp > $winHeight} { set yp [expr "$winHeight - 20" }
+
+ send rulerHlab$ruleno "setAttributes x $xp y $yp"
+ send rulerHlab$ruleno "set text \{$text\}; redraw erase"
+ send rulerHlab$ruleno set visible True
+ } else {
+ send rulerHlab$ruleno set visible False
+ }
+}
+
+
+# Callback executed when a marker gets or loses the focus.
+proc selectRuler {active_ruler event event_data} \
+{
+ global ruler
+ switch $event {
+ focusIn { set ruler $active_ruler }
+ focusOut { }
+ }
+}
+
+# Reset the ruler format type.
+proc setUnits { ruler units } \
+{
+ global rulerFmt rulerX rulerY
+
+ send $ruler getVertices pts
+ set rulerX [lindex [lindex [lindex $pts 0] 0] 0]
+ set rulerY [lindex [lindex [lindex $pts 0] 0] 1]
+ set cx [lindex [lindex [lindex $pts 0] 1] 0] ; incr cx -1
+ set cy [lindex [lindex [lindex $pts 0] 2] 1] ; incr cy -1
+
+ set rulerFmt $units
+ resizeRuler $cx $cy 1
+}
+
+# Menu option toggle callbacks.
+proc toggleSticky { ruler } \
+{
+ global isSticky rulerSticky rulerMenuDescription
+
+ set index [ lsearch $rulerSticky $ruler]
+ if { $index >= 0 } {
+ # Remove it from the list.
+ set rulerSticky [lreplace $rulerSticky $index $index]
+ set isSticky "Sticky"
+ } else {
+ # Add it to the list.
+ lappend rulerSticky $ruler
+ set isSticky "UnSticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+proc setRulerMenu args \
+{
+ global ruler isSticky rulerSticky rulerMenuDescription
+
+ if { [lsearch $rulerSticky $ruler] >= 0 } {
+ set isSticky "UnSticky"
+ } else {
+ set isSticky "Sticky"
+ }
+ editMenu rulerMenu imagewin $rulerMenuDescription
+}
+
+
+# Draw the ruler to the frame buffer as a graphic.
+proc writeRuler { ruler } \
+{
+}
+
+# Change the color of the ruler.
+proc r_setColor {ruler bgcolor fgcolor} {
+
+ # Recolor the polygon.
+ send $ruler \
+ "markpos; set lineColor $bgcolor; set highlightColor $bgcolor; redraw"
+
+ # Recolor the labels.
+ scan $ruler "ruler%d" num
+ send rulerXlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerYlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+ send rulerHlab$num \
+ "markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw"
+}
+
+
+# Delete the current ruler, called when we have a Btn1Up on the current ruler.
+proc deleteRuler {x y} { global ruleno ; deleteNamedRuler $ruleno $x $y }
+
+# Delete all rulers on the screen, usually called when the view changes.
+# We preserve the rulers marked as 'sticky'.
+proc deleteAllRulers args \
+{
+ global rulerList rulerSticky
+
+ foreach r $rulerList {
+ # Delete the ruler if it's not in the sticky list.
+ if { [lsearch $rulerSticky ruler$r] == -1 } {
+ deleteNamedRuler $r x y
+ }
+ }
+}
+
+# Delete a particular ruler, usually called from the translation table on
+# the marker itself.
+proc deleteNamedRuler {name x y} \
+{
+ global rulerList
+
+ catch {
+ send ruler$name destroy
+ send rulerXlab$name destroy
+ send rulerYlab$name destroy
+ send rulerHlab$name destroy
+ }
+
+ # Remove the ruler from the list.
+ set index [lsearch $rulerList $name]
+ set rulerList [lreplace $rulerList $index $index]
+}
+
+
+
+
+
+###############################################
+# Define procedure for the help panel
+###############################################
+
+# Help Panel Bitmaps
+#-------------------
+createBitmap iraf_logo 45 45 {
+0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,
+0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,
+0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,
+0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,
+0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,
+0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,
+0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,
+0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,
+0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,
+0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,
+0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,
+0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,
+0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,
+0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,
+0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,
+0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,
+0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,
+0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,
+0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo "set bitmap iraf_logo"
+
+createBitmap noao_logo 45 45 {
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,
+0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,
+0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,
+0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,
+0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
+0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,
+0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,
+0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,
+0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo "set bitmap noao_logo"
+
+send helpInfo1 set label $version
+
+# Stuff for keeping track of visited anchors.
+set links { 0 }
+set linkIndex 0
+set visited(0) empty
+
+proc Help args \
+{
+ global help_up
+ if {$help_up == 0} {
+ send client help
+ } else {
+ send help_panel unmap
+ set help_up 0
+ }
+}
+
+proc helpPanel args \
+{
+ global help_up
+ if {$help_up} {
+ send help_panel unmap
+ set help_up 0
+ } else {
+ send help_panel map
+ set help_up 1
+ }
+}
+
+proc panelHelp args \
+{
+ Help
+} ; send panelHelp addCallback panelHelp
+
+proc helpQuit args \
+{
+ global help_up
+ send help_panel unmap
+ set help_up 0
+}; send helpClose addCallback helpQuit
+
+proc getHelpText { param old new } \
+{
+ send helpText setText $new
+ helpPanel
+}; send help addCallback getHelpText
+
+proc anchorSelected {widget cbtype event text href args} \
+{
+ global visited links linkIndex
+ set anchID [send helpText anchorToId $href]
+ set visited($href) 1
+ if {$linkIndex == 0} {
+ send helpBack setSensitive True
+ if {[lindex $links 1] != $anchID} {
+ set links { 0 }
+ send helpForward setSensitive False
+ }
+ }
+ if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {
+ set links [lrange $links 0 $linkIndex]
+ }
+ if {[lindex $links [expr $linkIndex + 1]] != $anchID} {
+ lappend links $anchID
+ incr linkIndex
+ } else {
+ send helpForward setSensitive False
+ incr linkIndex
+ }
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ }
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+}; send helpText addCallback anchorSelected anchor
+
+proc testAnchor {widget cbtype href} \
+{
+ global visited
+ return [info exists visited($href)]
+}; send helpText addCallback testAnchor testAnchor
+
+
+# Callbacks to position forwards and backwards in link list.
+proc hlpForward args \
+{
+ global links linkIndex
+ incr linkIndex
+ if {$linkIndex <= [llength $links]} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == [expr [llength $links] - 1]} {
+ send helpForward setSensitive False
+ send helpBack setSensitive True
+ } else {
+ send helpBack setSensitive True
+ }
+ } else {
+ incr linkIndex -1
+ }
+}; send helpForward addCallback hlpForward
+
+proc hlpBack args \
+{
+ global links linkIndex
+ incr linkIndex -1
+ if {$linkIndex >= 0} {
+ set anchID [lindex $links $linkIndex]
+ send helpText gotoId $anchID
+ send helpText retestAnchors
+ if {$linkIndex == 0} { send helpBack setSensitive False }
+ if {$linkIndex >= 0} { send helpForward setSensitive True }
+ } else {
+ incr linkIndex 1
+ }
+}; send helpBack addCallback hlpBack
+
+proc hlpHome args \
+{
+ global links linkIndex
+ set links { 0 }
+ set linkIndex 0
+ send helpText gotoId 0
+ send helpForward setSensitive False
+ send helpBack setSensitive False
+}; send helpHome addCallback hlpHome
+
+
+proc helpFind args \
+{
+ set phrase [send hfEntry get string]
+
+ if { $phrase != "" } {
+ if {[send helpText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send helpText gotoId $id
+ send helpText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hfEntry hfFind } { send $w addCallback helpFind }
+
+send hfClear addCallback { send hfEntry set string "" }
+
+
+################################################################################
+# Header Display Callbacks.
+################################################################################
+
+set hdrImage ""
+set hdrImageId ""
+set hdrKeywords "*"
+
+
+proc fitsHdrClose args \
+{
+ global hdr_up
+
+ send hdr_panel unmap
+ send imageHeader set on False
+ set hdr_up 0
+} ; send hdrClose addCallback fitsHdrClose
+
+proc ptFitsHeader {widget type state args} \
+{
+ global hdr_up
+
+ set hdr_up $state
+ if {$hdr_up == 1} {
+ send imageHeader set on True
+ send hdr_panel map
+ } else {
+ send imageHeader set on False
+ send hdr_panel unmap
+ }
+}; send imageHeader addCallback ptFitsHeader
+
+proc getHeader { name id } \
+{
+ global hdrImage hdrImageId hdrKeywords
+
+ set hdrImage $name
+ set hdrImageId $id
+ send hdrObjMenu set label $name
+ send hdrText setText ""
+ send hdrIGText set string ""
+ send hdrKGText set string ""
+
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+}
+
+proc hdrKeywFilter args \
+{
+ global hdrImageId hdrKeywords
+
+ set str [ send hFindEntry get string ]
+ if {$str != ""} {
+ set hdrKeywords $str
+ send hdrText setText ""
+ catch { send wcspix objinfo $hdrImageId $hdrKeywords }
+ }
+} ; send hdrFilter addCallback hdrKeywFilter
+
+
+# Set the image menu in the header panel.
+proc setHdrObjMenu { frame args } \
+{
+ global frameCache ism_enable
+
+ if {! $ism_enable} \
+ return
+
+ # Create the menu of images for the header panel.
+ set items { }
+ foreach i [list $frameCache($frame)] {
+ set l [lindex $i 0]
+ set lid [lindex $i 1]
+ regsub -all {[\[]} $l "\\\[" l2
+ catch {
+ lappend items [format "%s f.exec \{getHeader %s %d\}" $l $l2 $lid]
+ }
+ }
+ editMenu objMenu hdrObjMenu $items
+}
+
+
+# Search box for the header.
+proc hdrFind args \
+{
+ set phrase [send hFindEntry get string]
+
+ if { $phrase != "" } {
+ if {[send hdrText searchText $phrase start end forward caseless] > 0} {
+ set elid [lindex [lindex $start 0] 0]
+ set id [max 1 [expr $elid - 10] ]
+ send hdrText gotoId $id
+ send hdrText setSelection $start $end
+ } else {
+ send warnText set label "Search string not found."
+ send warning map
+ }
+ } else {
+ send warnText set label "Warning: No search phrase entered."
+ send warning map
+ }
+} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }
+
+send hdrClear addCallback { send hFindEntry set string "" }
+
+
+################################################################################
+# Pixel Table Callbacks.
+################################################################################
+
+set psize 5
+set pixtab_up 0
+set hdr_up 0
+
+createMenu pixtabMenu pixtabSize {
+ { "3x3" f.exec { pixtabSetSize 3 } }
+ { "5x5" f.exec { pixtabSetSize 5 } }
+ { "7x7" f.exec { pixtabSetSize 7 } }
+ { "9x9" f.exec { pixtabSetSize 9 } }
+}
+
+
+proc updatePixelTable { cx cy wx wy args } \
+{
+ global psize pixtab_up ism_enable
+
+ if {! $pixtab_up} \
+ return
+ if {$ism_enable} \
+ return
+
+ set delta [expr int($psize / 2) ]
+ set x1 [expr ($wx - $delta) ]
+ set x2 [expr ($wx + $delta) ]
+ set y1 [expr ($wy - $delta) ]
+ set y2 [expr ($wy + $delta) ]
+ set c [ expr int($psize / 2) ]
+
+
+ # Update the table labels.
+ set x $x1 ; set xl {}
+ set y $y2 ; set yl {}
+ for {set i 0} {$i < $psize} {incr i} {
+ lappend xl [format " %10.1f " $x] ; set x [ expr ($x + 1.) ]
+ lappend yl [format " %10.1f " $y] ; set y [ expr ($y - 1.) ]
+ }
+ send ptColLabs setList $xl ; send ptColLabs highlight $c
+ send ptRowLabs setList $yl ; send ptRowLabs highlight $c
+
+ # Update the pixel table itself.
+ #set pix [ send client getPixels $cx $cy $psize True ]
+
+ set x0 [ expr int($cx - $psize / 2. + 0.5)]
+ set y0 [ expr int($cy - $psize / 2. + 0.5)]
+ set pix [ send client getPixels $x0 $y0 $psize $psize ]
+ send pixtab setList [ lrange $pix 4 end ]
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Update the pixtab stats.
+ set sum 0.0
+ set sum2 0.0
+ set npix [ expr ($psize * $psize) ]
+ set nend [ expr ($psize * $psize) + 4 ]
+ for {set i 4} {$i < $nend} {incr i} {
+ set val [lindex $pix $i]
+ catch {
+ set sum [ expr ($sum + $val) ]
+ set sum2 [ expr ($sum2 + $val * $val) ]
+ }
+ }
+
+ set mean [ expr ($sum / ($npix * 1.0)) ]
+ set var [ expr (($sum2 - $sum * $mean) / ($npix - 1)) ]
+ if {$var <= 0.0} {
+ set stdev 0.0
+ } else {
+ set stdev [ expr sqrt ($var) ]
+ }
+ send meanValue set label [ format "%10.2f" $mean ]
+ send sigValue set label [ format "%10.4f" $stdev ]
+}
+
+
+proc pixtabClose args \
+{
+ global pixtab_up
+
+ send pixel_panel unmap
+ send pixelTable set on False
+ set pixtab_up 0
+ catch { send wcspix set psize 0 }
+} ; send pixtabClose addCallback pixtabClose
+
+
+proc pixtabSetSize { size args } \
+{
+ global psize ism_enable
+
+ set c [ expr int(($psize * $psize) / 2) ]
+ send pixtab highlight $c
+
+ # Now reset the window size.
+ switch $size {
+ 3 { send pixel_panel "resize 265 175"
+ send pixtab "set width 180 ; set height 60"
+ }
+ 5 { send pixel_panel "resize 375 215"
+ send pixtab "set width 290 ; set height 105"
+ }
+ 7 { send pixel_panel "resize 495 265"
+ send pixtab "set width 410 ; set height 150"
+ }
+ 9 { send pixel_panel "resize 610 310"
+ send pixtab "set width 525 ; set height 195"
+ }
+ }
+
+ send pixtab set defaultColumns $size
+ send ptColLabs set defaultColumns $size
+ set psize $size
+
+ # Notify the ISM we've changed size.
+ if ($ism_enable) {
+ catch { send wcspix set psize $psize }
+ }
+
+ send imagewin getCursorPos xc yc
+ updatePixelTable $xc $yc $xc $yc
+
+} ; pixtabSetSize $psize
+
+
+proc ptPixelTable {widget type state args} \
+{
+ global pixtab_up psize
+
+ set pixtab_up $state
+ if {$pixtab_up == 1} {
+ send pixelTable set on True
+ send pixel_panel map
+ catch { send wcspix set psize $psize }
+ } else {
+ send pixelTable set on False
+ send pixel_panel unmap
+ catch { send wcspix set psize 0 }
+ }
+}; send pixelTable addCallback ptPixelTable
+
+
+################################################################################
+# Warning dialog. This pops up a dialog box with the given warning message,
+# and executes the given command if the user pushes OK.
+#
+# Usage: Wexec object message [ok_action [cancel_action]]
+#
+# The message text is displayed in a popup and the user hits the ok or
+# cancel button to close the popup. If an action has been posted for the
+# button selected then it is sent to the named object. Only one alert can
+# be in effect at a time; posting another alert before the first has
+# completed causes the new alert to override the first.
+################################################################################
+
+set W_object ""
+set W_ok_cmd ""
+set W_cancel_cmd ""
+
+proc Wexec {object msg args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ set W_object $object
+ set W_ok_cmd [lindex $args 0]
+ set W_cancel_cmd [lindex $args 1]
+ send warnText set label $msg
+ send warning map
+}
+
+proc Wbutton {widget args} \
+{
+ global W_object W_ok_cmd W_cancel_cmd
+ switch $widget {
+ warnOk { if [llength $W_ok_cmd] { send $W_object $W_ok_cmd }
+ }
+ warnCancel { if [llength $W_cancel_cmd] { send $W_object $W_cancel_cmd }
+ }
+ }
+ send warning unmap
+}
+send warnOk addCallback Wbutton
+send warnCancel addCallback Wbutton
+
+# The parameter "alert" is used to forward alerts from the client.
+proc setAlert {param old new} \
+{
+ Wexec client [lindex $new 0] [lindex $new 1]
+}; send alert addCallback setAlert
+
+
+
+################################################
+# Define some TCL debug procedures.
+################################################
+
+set tcl_up 0
+
+proc tclCommandClear {widget args} { send tclEntry set string "" }
+proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]
+}
+proc tclCommand {widget mode command args} { send server $command }
+proc tclClose {widget args} { tclPanel }
+proc tclOpen args \
+{
+ global tcl_up
+ send tcl_panel map
+ set tcl_up 1
+}
+
+proc tclPanel args \
+{
+ global tcl_up
+ if {$tcl_up} {
+ send tcl_panel unmap
+ set tcl_up 0
+ } else {
+ send tcl_panel map
+ set tcl_up 1
+ }
+}
+
+send tclClear addCallback tclCommandClear
+send tclExecute addCallback tclCommandExecute
+send tclEntry addCallback tclCommand
+send tclDismiss addCallback tclClose
+
+
+
+################################################
+# ISM Module support routines.
+################################################
+
+
+# Turn the ISM on or off.
+proc ismToggle { widget type state args } \
+{
+ global ism_enable ism_capable psize
+
+ set ism_enable $state
+
+ # Set the coord-panel header option availability.
+ if {$ism_enable == 1 && $ism_capable} {
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ catch { send client ism_start wcspix }
+ } else {
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ catch { send client ism_stop wcspix }
+ send hdr_panel unmap
+ }
+ setCoordPanelSensitivity
+
+} ; send ismToggle addCallback ismToggle
+
+
+
+# Handle messages from ISM clients and pass them on to the appropiate
+# callback.
+
+proc ism_msg { param old new } \
+{
+ global ism_enable
+
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ source { source [lindex $new 1] }
+ alert { Wexec client [lindex $new 1] }
+ deliver { ${ism}_msg $argc $argv }
+ info { ism_info $ism }
+ }
+} ; send ism_msg addCallback ism_msg
+
+
+
+# Log a client message to the info panel
+set ismInfoText " "
+
+proc ism_info { text } \
+{
+ global infoMode ismInfoText
+
+ set ismInfoText [format "%s\n%s" $ismInfoText $text]
+ if {$infoMode == "infoOptIsm"} {
+ send infoText set string $ismInfoText
+ }
+}
+
+# Initialize the text.
+proc ismInitInfoText args \
+{
+ global ismInfoText
+
+ set ismInfoText ""
+ ism_info "\t ISM Client Message Logs"
+ ism_info "\t -----------------------"
+ ism_info " "
+} ; ismInitInfoText
+
+
+
+################################################
+# WPIX module support routines.
+################################################
+
+set cur_objid 0
+set cur_regid 0
+set redraw_compass 0
+#set Compass(0) { 0.0 1 1 0 X Y }
+set Compass(0) { 0.0 0.0 1.0 -1.0 0.0 0 X Y }
+set Orient(0) { 1 1 1 }
+
+set wcspix_debug 0
+
+proc wcspix_msg { argc argv } \
+{
+ global wcspix_debug
+
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+
+ if {$wcspix_debug} { print "wcspix_msg: $cmd" }
+
+
+ switch $cmd {
+ startup { wcspix_startup }
+ shutdown { wcspix_shutdown }
+ disable { wcspix_disable }
+ capable { wcspix_capable }
+
+ cache { wcspix_cache [lrange $arg 1 end] }
+ uncache { wcspix_uncache [lrange $arg 1 end] }
+ wcstran { wcspix_wcstran [lrange $arg 1 end] }
+ wcslist { wcspix_wcslist [lrange $arg 1 end] }
+
+ imghdr { send hdrText \
+ setText [format "<pre>%s\n%s</pre>" \
+ [string trimright [send hdrText getText simple] "\n"]\
+ [lindex $arg 1] ]
+ }
+ wcshdr { send hdrKGText append [lindex $arg 1] }
+
+ wcsinfo { send hdrIGText append [lindex $arg 1]
+ send hdrText gotoId 0
+ send hdrKGText set insertPosition 0
+ }
+
+ compass { wcspix_compass [lrange $arg 1 end] ; drawCompass }
+ orient { wcspix_orient [lrange $arg 1 end] }
+ wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2] }
+ wcsfmt { set num [lindex $arg 2]
+ send fmtWcs$num set label [lindex $arg 1] }
+
+ wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }
+
+ pixtab { set tab [lindex [lindex $arg 1] 0]
+ set col [lindex [lindex $arg 1] 1]
+ set row [lindex [lindex $arg 1] 2]
+ set stat [lindex [lindex $arg 1] 3]
+ wcspix_pixtab $tab $col $row $stat
+ }
+ }
+}
+
+
+# Startup and initialize the wcspix module with the GUI state.
+proc wcspix_startup args \
+{
+ global ism_enable frame
+ global up_todo psize pixtab_up frameCache
+
+ set ism_enable 1
+ send ismToggle set on True
+ send imageHeader setSensitive True
+ send woptBPM setSensitive True
+ setCoordPanelSensitivity
+ ismInitInfoText
+
+ if {$up_todo < 3} {
+ resizeCoordsBox $up_todo
+ }
+ updateCoordsBox
+ drawCompass
+
+ # Initialize the frame cache.
+ foreach c [array names frameCache] {
+ if {$c != "0"} { unset frameCache($c) }
+ }
+
+ catch {
+ if {$pixtab_up} { send wcspix set psize $psize }
+ for {set i 1} {$i <= 4} {incr i} {
+ send wcspix set wcs [send sysWcs$i get label] $i
+ send wcspix set format [send fmtWcs$i get label] $i
+ }
+ }
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+# Shutdown the WPIX module.
+proc wcspix_shutdown args \
+{
+ global ism_enable frame
+
+ set ism_enable 0
+ send ismToggle set on False
+ send imageHeader setSensitive False
+ send woptBPM set on False
+ send woptBPM setSensitive False
+ setCoordPanelSensitivity
+ setCoordPanelHeight
+
+ wcsFmtIValue "N/A"
+ wcsFmtBValue "0"
+
+ resizeCoordsBox 0
+ drawCompass
+
+ if { [send infoOptClients get on] } {
+ send client info clients
+ }
+}
+
+
+# Disable the WPIX module. We are only called when a display client has
+# indicated it doesn't use the new mapping facilities and having the WPIX
+# ISM visible will only confuse the user.
+
+proc wcspix_disable args \
+{
+ global ism_enable ism_capable rulerWCS
+
+ if {$ism_enable} {
+ send wcspix quit
+ }
+ set ism_capable 0
+ set rulerWCS 0
+ wcspix_shutdown
+ send ismToggle setSensitive False
+}
+
+
+# Client connected is capable of using the ISM, but don't necessarily turn
+# it on at this point.
+
+proc wcspix_capable args \
+{
+ global ism_capable
+
+ set ism_capable 1
+ wcsFmtIValue "0"
+ wcsFmtBValue "0"
+ send ismToggle setSensitive True
+}
+
+
+# Cache an image in the GUI.
+proc wcspix_cache { argv } \
+{
+ global frameCache redraw_compass cur_objid
+
+ set name [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set id [lindex $argv 2]
+
+ # Store the image name and id in a local cache.
+ lappend frameCache($frame) $name $id
+ send hdrObjMenu set label $name
+
+ # Automatically get the header.
+ regsub -all {[\[]} $name "\\\[" image
+ catch { getHeader $image $id }
+
+ setHdrObjMenu $frame
+
+ set cur_objid $id
+ set redraw_compass 1
+}
+
+# Uncache an image in the GUI.
+proc wcspix_uncache { argv } \
+{
+ global frameCache Compass
+
+ set id [lindex $argv 0]
+ foreach c [array names frameCache] {
+ set i1 0
+ set i2 1
+ set new { }
+ while { $i2 < [llength $frameCache($c)] } {
+ if {[lindex $frameCache($c) $i2] != $id} {
+ lappend new [lindex $frameCache($c) $i1]
+ lappend new [lindex $frameCache($c) $i2]
+ }
+ incr i1 2
+ incr i2 2
+ }
+ set frameCache($c) $new
+ }
+ if [info exists Compass($id)] {
+ unset Compass($id)
+ }
+}
+
+# Format the results of the WCSTRAN method.
+proc wcspix_wcstran { argv } \
+{
+ global frameCache cur_objid cur_regid redraw_compass
+
+ set objid [ lindex [lindex $argv 0] 1]
+ set regid [ lindex [lindex $argv 1] 1]
+ set pixval [ lindex [lindex $argv 2] 1]
+ set bpmval [ lindex [lindex $argv 3] 1]
+
+ wcsFmtIValue $pixval
+ wcsFmtBValue $bpmval
+
+ set args [lrange $argv 4 end]
+ set nargs [llength $args]
+ for {set i 0} {$i < 4} {incr i} {
+ set coord [lindex $args $i]
+ set wcsname [lindex $coord 1]
+ set xval [lindex $coord 2]
+ set yval [lindex $coord 3]
+ set xunits [lindex $coord 4]
+ set yunits [lindex $coord 5]
+ wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits
+ }
+
+ set cur_objid $objid
+ set cur_regid $regid
+
+ if {$redraw_compass} \
+ drawCompass
+}
+
+# Save the object compass information.
+proc wcspix_compass { argv } \
+{
+ global Compass
+
+ set objid [lindex $argv 0]
+ set angle [lindex $argv 1]
+
+ #set xflip [lindex $argv 2]
+ #set yflip [lindex $argv 3]
+ #set transpose [lindex $argv 4]
+ #set xlab [lindex $argv 5]
+ #set ylab [lindex $argv 6]
+
+ set north_x [lindex $argv 2]
+ set north_y [lindex $argv 3]
+ set east_x [lindex $argv 4]
+ set east_y [lindex $argv 5]
+ set transpose [lindex $argv 6]
+ set xlab [lindex $argv 7]
+ set ylab [lindex $argv 8]
+
+ #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab
+ #set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]
+ set Compass($objid) [list $angle $north_x $north_y $east_x $east_y \
+ $transpose $xlab $ylab]
+ drawCompass
+}
+
+# Save the image display orientation information.
+proc wcspix_orient { argv } \
+{
+ global Orient
+
+ set objid [lindex $argv 0]
+ set frame [lindex $argv 1]
+ set xflip [lindex $argv 2]
+ set yflip [lindex $argv 3]
+
+ set Orient($objid) [list $frame $xflip $yflip]
+}
+
+
+# Handle the list of WCSs available for the current image.
+proc wcspix_wcslist { argv } \
+{
+ set wcslist [lindex $argv 0]
+
+ for {set i 1} {$i <= 4} {incr i} {
+ set items {}
+ foreach nam $wcslist {
+ if {[string tolower $nam] == "line"} {
+ lappend items "f.dblline"
+ } else {
+ lappend items "\"$nam\" f.exec \{setWcsSys $nam $i\}"
+ }
+ }
+ editMenu sysMenu$i sysWcs$i $items
+ }
+}
+
+# Set the type of the WCS.
+proc wcspix_wcstype { label num } \
+{
+ global up_todo
+
+ send sysWcs$num set label $label
+ if {[string tolower $label] == "none"} {
+ send wpWcs$num "set on False ; setSensitive False"
+ send wiWcs$num "set on False ; setSensitive False"
+ send fmtWcs$num setSensitive False
+ set hght 4
+ } else {
+ send wpWcs$num "set on True ; setSensitive True"
+ send wiWcs$num setSensitive True
+ send fmtWcs$num setSensitive True
+ set hght 17
+ }
+ send wtWcs$num set height $hght
+ setCoordPanelHeight
+
+ #resizeCoordsBox $up_todo
+ updateCoordsBox
+}
+
+# Display the pixel table.
+proc wcspix_pixtab { tab col row stat } \
+{
+ global psize
+
+ # Update the pixel table.
+ send pixtab setList [lindex $tab 1]
+ send pixtab highlight [expr int(($psize * $psize) / 2)]
+
+ # Update the table labels.
+ set c [ expr int($psize / 2) ]
+ send ptColLabs setList $col ; send ptColLabs highlight $c
+ send ptRowLabs setList $row ; send ptRowLabs highlight $c
+
+ # Update the pixtab stats.
+ send meanValue set label [ format "%10.2f" [lindex $stat 0] ]
+ send sigValue set label [ format "%10.4f" [lindex $stat 1] ]
+}
+
+
+
+
+################################################################################
+#
+# XIMTOOL-ALT -- Procedures and declarations for the ALT GUI.
+#
+################################################################################
+
+# Creat the bitmaps needed for the alternate optional bars.
+
+createBitmap tools 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf,
+ 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap control 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xe3, 0xc7, 0xe3, 0xcf, 0x33, 0xcc,
+ 0x33, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x33, 0xcc, 0xf3, 0xcf,
+ 0xe3, 0xc7, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap tile 16 16 {
+ 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,
+ 0x83, 0xc1, 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff};
+
+createBitmap compass 16 16 {
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0x00, 0x07,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xfc, 0x07,
+ 0xfc, 0x07, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00}
+
+createBitmap plus 11 11 {
+ 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00};
+
+createBitmap minus 11 11 {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03,
+ 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+createBitmap disk 16 16 {
+ 0xfe,0x1f,0x11,0x25,0x11,0x45,0x11,0x44,0xf1,0x47,0x01,0x40,0x01,0x40,0xf9,
+ 0x4f,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0xff,0x7f,
+ 0x00,0x00};
+
+createBitmap printer 32 16 {
+ 0x00, 0xfe, 0x07, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x12, 0x00,
+ 0x00, 0x02, 0x22, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x02, 0x20, 0x00,
+ 0x00, 0x02, 0x20, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x10, 0x03, 0xe0, 0x06,
+ 0x08, 0xff, 0x7f, 0x09, 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f,
+ 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x08,
+ 0xf8, 0xff, 0xff, 0x0f};
+
+
+send tbBlinkDec "set bitmap larrow" ;# Assign the bitmaps to the buttons.
+send tbBlinkInc "set bitmap rarrow"
+send tbZoomIn "set bitmap plus"
+send tbZoomOut "set bitmap minus"
+send tbTile "set bitmap tile"
+send tbCompass "set bitmap compass; addCallback toggleCompass"
+#send helpButton "set bitmap qmark; addCallback Help"
+send mXflipButton "set bitmap xflip; addCallback xflip"
+send mYflipButton "set bitmap yflip; addCallback yflip"
+send mNextButton "set bitmap rarrow; addCallback nextFrame"
+send mPrevButton "set bitmap larrow; addCallback prevFrame"
+
+
+# toolBox -- Toggle the toolbox and panelbar display.
+
+set toolbox_up [ true $showToolBar ]
+set panelbar_up [ true $showPanelBar ]
+
+proc toolBoxToggle args \
+{
+ global toolbox_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$toolbox_up} {
+ send toolbar set height 0
+ send toolButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w; set height $nh"
+ set toolbox_up 0
+ send mXflipButton map
+ send mYflipButton map
+ send mPrevButton map
+ send mFrameButton map
+ send mNextButton map
+ } else {
+ send toolbar set height 25
+ send toolButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set toolbox_up 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+ }
+}
+
+proc panelBarToggle args \
+{
+ global panelbar_up
+
+ set w [send display get width] ; set h [send display get height]
+ set iw [send imagewin get width] ; set ih [send imagewin get height]
+
+ if {$panelbar_up} {
+ send panelbar set height 0
+ send panelButton set state 0
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h - 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 0
+ } else {
+ send panelbar set height 25
+ send panelButton set state 1
+ send imagewin "set width $iw; set height $ih"
+ set nh [expr $h + 25]
+ send display "set width $w ; set height $nh"
+ set panelbar_up 1
+ }
+}
+
+
+
+# Initialize the bars to be displayed if the resource was set.
+
+send toolButton "set bitmap tools; addCallback toolBoxToggle"
+if { ! [ true $showToolBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send toolbar set height 0
+ send toolButton set state 0
+} else {
+ send toolButton set state 1
+ send mXflipButton unmap
+ send mYflipButton unmap
+ send mPrevButton unmap
+ send mFrameButton unmap
+ send mNextButton unmap
+}
+
+send panelButton "deleteCallback panel"
+send panelButton "set bitmap control; addCallback panelBarToggle"
+
+if { ! [ true $showPanelBar ] } {
+ send display set height [expr [send display get height] - 25]
+ send panelbar set height 0
+ send panelButton set state 0
+} else {
+ send panelButton set state 1
+}
+
+
+##############################################
+# Panelbar callbacks.
+##############################################
+
+send pbQuit addCallback Quit
+send helpClose addCallback "send helpButton set state 0"
+
+
+# Control Panel.
+#------------------------------------------------------
+proc pbToggleControl {name element op} \
+{
+ upvar $name panel_up
+ send pbDisplayP set state [expr !($panel_up)]
+} ; #trace variable panel_up w pbToggleControl
+
+proc pbResetPanel {param old new} \
+{
+ global displayPanner displayMagnifier displayCoords
+ switch $new {
+ done { send pbPanM set state [true $displayPanner]
+ send pbMagM set state [true $displayMagnifier]
+ send pbWcsM set state [true $displayCoords]
+ }
+ }
+} ; send initialize addCallback pbResetPanel
+
+set WidgetToTab(pbDisplayP) display_panel
+set WidgetToTab(pbInfoP) info_panel
+set WidgetToTab(pbLoadP) load_panel
+set WidgetToTab(pbPrintP) print_panel
+set WidgetToTab(pbSaveP) save_panel
+set WidgetToTab(pbTileP) tile_panel
+set WidgetToTab(pbCoordP) wcs_panel
+
+set TabToWidget(display_panel) pbDisplayP
+set TabToWidget(print_panel) pbPrintP
+set TabToWidget(load_panel) pbLoadP
+set TabToWidget(save_panel) pbSaveP
+set TabToWidget(info_panel) pbInfoP
+set TabToWidget(tile_panel) pbTileP
+set TabToWidget(wcs_panel) pbCoordP
+
+set pbTabTop "pbDisplayP"
+
+proc pbPanelDismiss args \
+{
+ global tabTop TabToWidget WidgetToTab
+ set panel $TabToWidget($tabTop)
+ send $panel set state 0
+} ; send panelClose addCallback pbPanelDismiss
+
+proc pbResizeCB {widget event a b c d e args} \
+{
+ global pbTabTop TabToWidget WidgetToTab
+ if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {
+ send $pbTabTop set state 0
+ set new $TabToWidget($widget)
+ send $new set state 1
+ set pbTabTop $new
+ }
+} ; foreach w $cpTabs {send $w addEventHandler pbResizeCB exposureMask}
+
+proc pbPanelTabs { widget type state args } \
+{
+ global pbTabTop tabTop panel_up
+ global TabToWidget WidgetToTab
+
+ set panel $WidgetToTab($widget)
+ if {$tabTop == $panel && $panel_up} {
+ send panelShell unmap
+ send $widget set state 0
+ set panel_up 0
+ return
+ }
+
+ send $TabToWidget($tabTop) set state 0
+ set tabTop $panel
+ set pbTabTop $TabToWidget($panel)
+ send panelTabs setTop $panel
+
+ # Now fire it up if it's not already open.
+ if {$panel_up == 0} {
+ send $widget set state 1
+ send panelShell map
+ set panel_up 1
+ }
+}
+foreach w { pbDisplayP pbInfoP pbLoadP pbPrintP pbSaveP pbTileP pbCoordP } {
+ send $w addCallback pbPanelTabs
+}
+
+
+
+# Load Panel. (Really need to clean this up.)
+#------------------------------------------------------
+proc pbDoLoadOptions { param old new } \
+{
+ set val [ join [lrange $new 1 end] " " ]
+ switch [lindex $new 0] {
+ newfile { send fnameText set string $val }
+ }
+} ; send loadOptions addCallback pbDoLoadOptions
+
+proc pbFileLoad { widget mode fname args } \
+{
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ send imagewin setCursorType idle
+} ; send fnameText addCallback pbFileLoad
+
+proc pbflSelectPrint {widget cbtype selections args} \
+{
+ foreach selection $selections {
+ ;
+ }
+}; #send imageList addCallback pbflSelectPrint
+
+proc pbFileLoadB args \
+{
+ set fname [send fnameText get string]
+ if {$fname != ""} {
+ set fpath [format "%s/%s" \
+ [string range [send dirLabel get label] 12 end] $fname ]
+ }
+} ; send filesLoadButton addCallback pbFileLoadB
+
+
+# Panner Marker.
+#------------------------------------------------------
+proc pbTracePanner {name element op} \
+{
+ global last_compass
+
+ catch {
+ upvar $name panner_enable
+ send pbPanM set state $panner_enable
+
+ if { $panner_enable } {
+ send tbCompass "setSensitive True ; set state $last_compass"
+ drawCompass
+ } else {
+ send tbCompass "setSensitive False ; set state False"
+ eraseCompass
+ }
+ }
+} ; trace variable panner_enable w pbTracePanner
+
+proc pannerPanel args \
+{
+ global panner_enable displayPanner
+
+ setPanner [expr !$panner_enable]
+ send pannerButton set on [expr $panner_enable]
+}; send pbPanM addCallback pannerPanel
+
+
+# Magnifier Marker.
+#------------------------------------------------------
+proc pbTraceMagnifier {name element op} \
+{
+ upvar $name magnifier_enable
+ send pbMagM set state $magnifier_enable
+} ; trace variable magnifier_enable w pbTraceMagnifier
+
+proc magnifierPanel args \
+{
+ global magnifier_enable displayMagnifier
+ setMagnifier [expr !$magnifier_enable]
+ send magnifierButton set on [expr $magnifier_enable]
+}; send pbMagM addCallback magnifierPanel
+
+
+# CoordsBox Marker.
+#------------------------------------------------------
+proc pbTraceCoordsBox {name element op} \
+{
+ upvar $name track_enable
+ send pbWcsM set state $track_enable
+} ; trace variable track_enable w pbTraceCoordsBox
+
+proc wcsPanel args \
+{
+ global track_enable
+ setTrack [expr !$track_enable]
+}; send pbWcsM addCallback wcsPanel
+
+
+
+# WPIX ISM Callbacks.
+#------------------------------------------------------
+
+proc altIsmToggle { widget type state args } \
+{
+ ismToggle pbIsm junk $state
+} ; send pbIsm addCallback altIsmToggle
+
+proc pbTraceIsm {name element op} \
+{
+ upvar $name ism_enable
+ send pbIsm set state $ism_enable
+} ; trace variable ism_enable w pbTraceIsm
+
+
+proc altIsmMsgCB { param old new } \
+{
+ set cmd [lindex $new 0] ;# command name
+ set ism [lindex $new 1] ;# determine ISM name
+ set argv [lrange $new 2 end] ;# get args
+ set argc [llength $argv]
+
+ switch $cmd {
+ deliver { ${ism}_alt_msg $argc $argv }
+ }
+} ; send ism_msg addCallback altIsmMsgCB
+
+
+proc wcspix_alt_msg { argc argv } \
+{
+ set arg [string trimleft [ string trimright [lindex $argv 0] ] ]
+ set cmd [lindex $arg 0]
+ switch $cmd {
+ startup { }
+ shutdown { }
+ disable { send pbIsm "set state False ; setSensitive False" }
+ capable { send pbIsm "setSensitive True" }
+ }
+}
+
+
+
+##############################################
+# Toolbar callbacks.
+##############################################
+
+send tbNormalize addCallback normalize
+send tbInvert addCallback cpInvert
+send tbRegister addCallback cpRegisterFrames
+send tbMatchLUT addCallback cpMatchFrames
+
+
+# Frame Selection.
+#------------------
+createMenu mFrameMenu mFrameButton $frameMenuDescription
+
+proc altFrameChanged {param old new} \
+{
+ send mFrameButton set label $new
+} ; send frame addCallback altFrameChanged
+
+
+# Image Flipping.
+#------------------------------------------------------
+proc tbSetFlip {param old new} \
+{
+ if {$param == "xflip"} {
+ send mXflipButton set state [true $new]
+ } else {
+ send mYflipButton set state [true $new]
+ }
+}; foreach i {xflip yflip} { send $i addCallback tbSetFlip }
+
+
+# Zoom/Pan buttons.
+#------------------------------------------------------
+proc tbZoomAction { widget args } \
+{
+ global frameWidth frameHeight
+
+ switch $widget {
+ tbZoom0 { cpZoom 1 1 fixed }
+ tbZoomIn { cpZoom 2.0 2.0 relative }
+ tbZoomOut { cpZoom 0.5 0.5 relative }
+ tbCenter { send client pan [expr $frameWidth/2.0] [expr $frameHeight/2.0] }
+ }
+}
+foreach widget { tbCenter tbZoomIn tbZoom0 tbZoomOut } {
+ send $widget addCallback tbZoomAction
+}
+
+
+# Frame Blink.
+#------------------------------------------------------
+proc tbSetBlinkRate {w args} \
+{
+ if {$w == "tbBlinkInc"} {
+ cpSetBlinkRate BRincrease
+ } else {
+ cpSetBlinkRate BRdeccrease
+ }
+}
+foreach w {tbBlinkDec tbBlinkInc} { send $w addCallback tbSetBlinkRate }
+
+proc tbBlink { widget args } \
+{
+ global blinkRate blinkId
+
+ if {$blinkRate < 0.01} {
+ send tbBlink set state 0
+ } else {
+ if {$widget != "tbBlink"} {
+ if {($blinkId != 0) != [send $widget get on]} {
+ toggleBlink
+ }
+ } else {
+ if {($blinkId != 0) != [send $widget get state]} {
+ toggleBlink
+ }
+ }
+ }
+} ; send tbBlink addCallback tbBlink
+
+proc tbTraceBlink {name element op} \
+{
+ upvar $name blinkId
+ send tbBlink set state [expr $blinkId != 0]
+} ; trace variable blinkId w tbTraceBlink
+
+
+# Auto-register.
+#------------------------------------------------------
+proc tbAutoRegister { widget type state args } \
+{
+ send tbAutoReg set state $state
+}
+foreach w {autoregButton brAregButton tbAutoReg} {
+ send $w addCallback cpAutoRegister
+}
+
+proc tbToggleAutoReg args \
+{
+ global auto_reg
+ if {$auto_reg} {
+ cpAutoRegister autoregButton dummy 0
+ set auto_reg 0
+ send tbAutoReg set state 0
+ } else {
+ cpAutoRegister autoregButton dummy 1
+ set auto_reg 1
+ send tbAutoReg set state 1
+ }
+}
+
+
+# Frame Tiles.
+#------------------------------------------------------
+proc tbSetTileFrames args \
+{
+ global tileOpt
+
+ # Send the option to the client.
+ if {[send tbTile get state ]} {
+ if {$tileOpt == 0} {
+ # If mode is disabled, turn on the tile selection.
+ selectTileOrientation junk junk Best
+ } else {
+ # Otherwise, turn on in current mode.
+ selectTileOrientation junk junk [tileSelToLabel $tileOpt]
+ }
+ } else {
+ selectTileOrientation junk junk Disabled
+ }
+}; send tbTile addCallback tbSetTileFrames
+
+proc tbTrackTileFrames {param old new} \
+{
+ send tileFramesButton set on [true $new]
+ send tbTile set state $new
+}; send tileFrames addCallback tbTrackTileFrames
+
+proc tbTileFramesToggle args \
+{
+ set value [send tileFramesButton get on]
+ if {$value} { set not 0 } else { set not 1 }
+
+ send tileFramesButton set on $not
+ send tbTile set state $not
+ cpSetTileFrames tbTile junk $not
+}
+
+
+# Compass Indicator.
+#------------------------------------------------------
+proc tbToggleCompass { widget type state args } \
+{
+ global frame
+
+ if {$state} {
+ send compass set on True
+ send tbCompass set state 1
+ drawCompass
+ } else {
+ send compass set on False
+ send tbCompass set state 0
+ eraseCompass
+ }
+} ; foreach w {compass tbCompass} { send $w addCallback tbToggleCompass }
+
+
diff --git a/vendor/x11iraf/ximtool/ximtool.gui.h b/vendor/x11iraf/ximtool/ximtool.gui.h
new file mode 100644
index 00000000..dcda45e8
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.gui.h
@@ -0,0 +1,11567 @@
+"#!/usr/local/bin/obmsh",
+"#",
+"# XIMTOOL-ALT.GUI -- Default GUI for the Ximtool-alt image display server.",
+"#",
+"# Version 2.0 -- BETA VERSION",
+"",
+"set Version \"NOAO/IRAF XImtool Version 2.0BETA\"",
+"",
+"reset-server",
+"",
+"set Objects(ximtool) { \\",
+" toplevel Layout display\\",
+"\\",
+" display Group menuGroup\\",
+" menuGroup Layout menubar\\",
+" menubar MenuButton fileButton\\",
+" menubar MenuButton viewButton\\",
+" menubar MenuButton optionsButton\\",
+" menubar Label imageTitle\\",
+" menubar Toggle mXflipButton\\",
+" menubar Toggle mYflipButton\\",
+" menubar Command mPrevButton\\",
+" menubar MenuButton mFrameButton\\",
+" menubar Command mNextButton\\",
+" menubar Toggle toolButton\\",
+" menubar Toggle panelButton\\",
+"\\",
+" display Layout toolbar\\",
+" toolbar Command tbZoomIn\\",
+" toolbar Command tbZoom0\\",
+" toolbar Command tbZoomOut\\",
+" toolbar Command tbInvert\\",
+" toolbar Command tbNormalize\\",
+" toolbar Command tbMatchLUT\\",
+" toolbar Toggle tbAutoReg\\",
+" toolbar Command tbRegister\\",
+" toolbar Command tbCenter\\",
+" toolbar Command tbBlinkDec\\",
+" toolbar Toggle tbBlink\\",
+" toolbar Command tbBlinkInc\\",
+" toolbar Toggle xflipButton\\",
+" toolbar Toggle yflipButton\\",
+" toolbar Toggle tbTile\\",
+" toolbar Toggle tbCompass\\",
+" toolbar Command prevButton\\",
+" toolbar MenuButton frameButton\\",
+" toolbar Command nextButton\\",
+"\\",
+" display Frame imageFrame\\",
+" imageFrame Gterm imagewin\\",
+" display Frame cbarFrame\\",
+" cbarFrame Gterm colorbar\\",
+" display Toggle hcut\\",
+" display Toggle vcut\\",
+" display Frame hcutFrame\\",
+" hcutFrame Gterm hcutPlot\\",
+" display Frame vcutFrame\\",
+" vcutFrame Gterm vcutPlot\\",
+" display Slider2d focusSlider\\",
+"\\",
+" display Group plotOpts\\",
+" plotOpts Layout poptsLayout\\",
+" poptsLayout TextToggle plotSpeed\\",
+" poptsLayout TextToggle plotAccurate\\",
+" poptsLayout TextToggle plotImgPix\\",
+" poptsLayout Frame optLine\\",
+" poptsLayout TextToggle curJump\\",
+" poptsLayout TextToggle curSmooth\\",
+" poptsLayout TextToggle curTrack\\",
+"\\",
+" display Layout panelbar\\",
+" panelbar Toggle pbDisplayP\\",
+" panelbar Toggle pbLoadP\\",
+" panelbar Toggle pbSaveP\\",
+" panelbar Toggle pbPrintP\\",
+" panelbar Toggle pbInfoP\\",
+" panelbar Toggle pbTileP\\",
+" panelbar Toggle pbCoordP\\",
+" panelbar Toggle pbPanM\\",
+" panelbar Toggle pbMagM\\",
+" panelbar Toggle pbWcsM\\",
+" panelbar Toggle pbIsm\\",
+" panelbar Toggle helpButton\\",
+" panelbar Command pbQuit\\",
+"}",
+"",
+"",
+"set Objects(panelShell) { \\",
+" toplevel TopLevelShell panelShell\\",
+" panelShell Layout panel\\",
+"\\",
+" panel Frame panelMenuFrame\\",
+" panelMenuFrame Layout panelMenuBar\\",
+" panelMenuBar Command panelHelp\\",
+" panelMenuBar Command panelClose\\",
+"\\",
+" panel Frame tabFrame\\",
+" tabFrame Tabs panelTabs\\",
+" panelTabs Frame display_panel\\",
+" panelTabs Frame print_panel\\",
+" panelTabs Frame load_panel\\",
+" panelTabs Frame save_panel\\",
+" panelTabs Frame info_panel\\",
+" panelTabs Frame tile_panel\\",
+" panelTabs Frame wcs_panel\\",
+"\\",
+"\\",
+" display_panel Layout controlPanel\\",
+" controlPanel Group viewBox\\",
+" controlPanel Group enhancementBox\\",
+" controlPanel Group blinkBox\\",
+" controlPanel Group optionsBox\\",
+" controlPanel Frame controlBox\\",
+"\\",
+" viewBox Layout view\\",
+" view Group frameSelect\\",
+" frameSelect Layout frameBox\\",
+" frameBox Box frlistBox\\",
+" frlistBox Viewport framePort\\",
+" framePort Layout frameList\\",
+" frameList TextToggle frame1\\",
+" frameList TextToggle frame2\\",
+" frameList TextToggle frame3\\",
+" frameList TextToggle frame4\\",
+" frameList TextToggle frame5\\",
+" frameList TextToggle frame6\\",
+" frameList TextToggle frame7\\",
+" frameList TextToggle frame8\\",
+" frameList TextToggle frame9\\",
+" frameList TextToggle frame10\\",
+" frameList TextToggle frame11\\",
+" frameList TextToggle frame12\\",
+" frameList TextToggle frame13\\",
+" frameList TextToggle frame14\\",
+" frameList TextToggle frame15\\",
+" frameList TextToggle frame16\\",
+" frameBox Command prevFrame\\",
+" frameBox Command nextFrame\\",
+" view Frame frameDataBox\\",
+" frameDataBox TextBox frameData\\",
+" view Group zoomBox\\",
+" zoomBox Layout zoom\\",
+" zoom TextButton toggleZoom\\",
+" zoom TextButton zoomIn\\",
+" zoom Command x1\\",
+" zoom Command z2\\",
+" zoom Command z3\\",
+" zoom Command z4\\",
+" zoom Command z5\\",
+" zoom Command z8\\",
+" zoom TextButton zoomOut\\",
+" zoom TextButton centerFrame\\",
+" zoom Command d2\\",
+" zoom Command d3\\",
+" zoom Command d4\\",
+" zoom Command d5\\",
+" zoom Command d8\\",
+" view Layout viewButtons\\",
+" viewButtons Command aspect\\",
+" viewButtons Command flipX\\",
+" viewButtons Command flipY\\",
+" viewButtons Command flipXY\\",
+" viewButtons Command clearFrame\\",
+" viewButtons Command fitFrame\\",
+"\\",
+" enhancementBox Layout enhance\\",
+" enhance Frame colorlistFrame\\",
+" colorlistFrame Viewport colorlistView\\",
+" colorlistView MultiList colorlist\\",
+" enhance Frame colordataFrame\\",
+" colordataFrame TextBox colordata\\",
+" enhance Label contrastLabel\\",
+" enhance Slider2d contrastSlider\\",
+" enhance Label brightnessLabel\\",
+" enhance Slider2d brightnessSlider\\",
+" enhance Command invertButton\\",
+" enhance Command optimizeButton\\",
+"\\",
+" blinkBox Layout blink\\",
+" blink Label blinkFramesLabel\\",
+" blink Command blinkFrame1\\",
+" blink Command blinkFrame2\\",
+" blink Command blinkFrame3\\",
+" blink Command blinkFrame4\\",
+" blink Toggle blinkPanel\\",
+" blink Command blinkReset\\",
+" blink Label blinkRateLabel\\",
+" blink Frame BRframe\\",
+" BRframe Layout BRlayout\\",
+" BRlayout Arrow BRdecrease\\",
+" BRlayout TextBox BRtext\\",
+" BRlayout Arrow BRincrease\\",
+" blink Command registerButton\\",
+" blink Command matchButton\\",
+" blink TextToggle blinkButton\\",
+" blink TextToggle autoregButton\\",
+"\\",
+" optionsBox TextToggle pannerButton\\",
+" optionsBox TextToggle magnifierButton\\",
+" optionsBox TextToggle coordsBoxButton\\",
+" optionsBox TextToggle autoscaleButton\\",
+" optionsBox TextToggle antialiasButton\\",
+" optionsBox TextToggle tileFramesButton\\",
+" optionsBox TextToggle warningsButton\\",
+" optionsBox TextToggle peakupButton\\",
+"\\",
+" controlBox Layout control\\",
+" control Command initializeButton\\",
+" control Command normalizeButton\\",
+"\\",
+"\\",
+" print_panel Layout printLayout\\",
+"\\",
+" printLayout Group printCmdGroup\\",
+" printLayout Group optGroup\\",
+" printLayout Group cmdGroup\\",
+"\\",
+" printCmdGroup Layout printCmdLayout\\",
+" printCmdLayout Layout labelLayout\\",
+" labelLayout Label toLabel\\",
+" labelLayout Label printerLabel\\",
+" printCmdLayout Layout inputLayout\\",
+" inputLayout TextToggle toPrinter\\",
+" inputLayout TextToggle toFile\\",
+" inputLayout Frame printcmdFrame\\",
+" printcmdFrame AsciiText printcmd\\",
+"\\",
+" optGroup Layout optLayout\\",
+" optLayout Group epsPageGroup\\",
+" optLayout Group optionsGroup\\",
+" optLayout Group printColorGroup\\",
+" optLayout Group printerGroup\\",
+" optLayout Group annOptsGroup\\",
+"\\",
+" epsPageGroup Layout epsPage\\",
+" epsPage Label epsOrientLabel\\",
+" epsPage TextToggle epsPortButton\\",
+" epsPage TextToggle epsLandButton\\",
+" epsPage TextToggle epsSquareButton\\",
+" epsPage Label epsSizeLabel\\",
+" epsPage TextToggle epsLetterButton\\",
+" epsPage TextToggle epsLegalButton\\",
+" epsPage TextToggle epsA4Button\\",
+" epsPage TextToggle epsB5Button\\",
+" epsPage Label epsScaleLabel\\",
+" epsPage Frame ScaleFrame\\",
+" ScaleFrame Layout ScaleLayout\\",
+" ScaleLayout Arrow SCdecrease\\",
+" ScaleLayout TextBox SCtext\\",
+" ScaleLayout Arrow SCincrease\\",
+"\\",
+" optionsGroup Layout options\\",
+" options TextToggle epsscaleButton\\",
+" options TextToggle autorotateButton\\",
+" options TextToggle aspectButton\\",
+" options TextToggle compressButton\\",
+"\\",
+" annOptsGroup Layout annOpts\\",
+" annOpts TextToggle annotateButton\\",
+" annOpts TextToggle colorbarButton\\",
+" annOpts TextToggle titleButton\\",
+" annOpts TextToggle bordersButton\\",
+" annOpts Label titleLabel\\",
+" annOpts Frame titleFrame\\",
+" titleFrame AsciiText titleString\\",
+"\\",
+" printColorGroup Layout printColor\\",
+" printColor TextToggle prGrayButton\\",
+" printColor TextToggle prPseudoButton\\",
+" printColor TextToggle prRGBButton\\",
+"\\",
+" printerGroup Layout printers\\",
+" printers Frame printlistFrame\\",
+" printlistFrame Viewport printlistView\\",
+" printlistView MultiList printlist\\",
+"\\",
+" cmdGroup Layout cmdLayout\\",
+" cmdLayout Command okayPrint\\",
+" cmdLayout Label printStatus\\",
+"\\",
+"\\",
+" load_panel Layout filesLayout\\",
+" filesLayout Group imlistGroup\\",
+" imlistGroup Layout imlistLayout\\",
+" imlistLayout Command rootButton\\",
+" imlistLayout Command homeButton\\",
+" imlistLayout Command upButton\\",
+" imlistLayout Command rescanButton\\",
+" imlistLayout Label dirLabel\\",
+" imlistLayout Label fnameLabel\\",
+" imlistLayout Frame filnamFrame\\",
+" filnamFrame AsciiText fnameText\\",
+" imlistLayout Label imtemplateLabel\\",
+" imlistLayout Frame imtemplateFrame\\",
+" imtemplateFrame AsciiText imtemplateText\\",
+" imlistLayout Label imlistLabel\\",
+" imlistLayout Frame imlistFrame\\",
+" imlistFrame Viewport imlistView\\",
+" imlistView MultiList imageList\\",
+"\\",
+" filesLayout Group imoptsGroup\\",
+" imoptsGroup Layout imoptsLayout\\",
+" imoptsLayout TextToggle grayscale\\",
+" imoptsLayout TextToggle autoload\\",
+" imoptsLayout TextToggle browseHdrs\\",
+" imoptsLayout TextToggle zscale\\",
+" imoptsLayout TextToggle zrange\\",
+" imoptsLayout Label z1Label\\",
+" imoptsLayout Frame z1Frame\\",
+" z1Frame AsciiText z1Value\\",
+" imoptsLayout Label z2Label\\",
+" imoptsLayout Frame z2Frame\\",
+" z2Frame AsciiText z2Value\\",
+" imoptsLayout Label nsampLabel\\",
+" imoptsLayout Frame nsampFrame\\",
+" nsampFrame AsciiText nsampValue\\",
+" imoptsLayout Label frameLabel\\",
+" imoptsLayout MenuButton frameFrame\\",
+"\\",
+" filesLayout Group loadCmdGroup\\",
+" loadCmdGroup Layout loadCmdLayout\\",
+" loadCmdLayout Command filesLoadButton\\",
+" loadCmdLayout Label filesStatus\\",
+"\\",
+"\\",
+" save_panel Layout saveLayout\\",
+" saveLayout Group saveNameGroup\\",
+" saveNameGroup Layout saveNameLayout\\",
+" saveNameLayout Label saveLabel\\",
+" saveNameLayout Frame fnameFrame\\",
+" fnameFrame AsciiText saveFile\\",
+"\\",
+" saveLayout Group saveOptGroup\\",
+" saveOptGroup Layout saveOptLayout\\",
+" saveOptLayout Group fmtGroup\\",
+" saveOptLayout Group saveColorGroup\\",
+" saveOptLayout Frame saveDataBox\\",
+" saveDataBox TextBox saveData\\",
+"\\",
+" fmtGroup Layout formats\\",
+" formats TextToggle rasButton\\",
+" formats TextToggle gifButton\\",
+" formats TextToggle jpegButton\\",
+" formats TextToggle tiffButton\\",
+" formats TextToggle fitsButton\\",
+" formats TextToggle epsButton\\",
+" formats TextToggle x11Button\\",
+" formats TextToggle rawButton\\",
+"\\",
+" saveColorGroup Layout saveColor\\",
+" saveColor TextToggle svGrayButton\\",
+" saveColor TextToggle svPseudoButton\\",
+" saveColor TextToggle svRGBButton\\",
+"\\",
+" saveLayout Group saveCmdGroup\\",
+" saveCmdGroup Layout saveCmdLayout\\",
+" saveCmdLayout Command okaySave\\",
+" saveCmdLayout Label saveStatus\\",
+"\\",
+"\\",
+" info_panel Layout infoLayout\\",
+" infoLayout Group infoBox\\",
+" infoBox Layout infoBoxL\\",
+" infoBoxL Frame infoFrame\\",
+" infoFrame AsciiText infoText\\",
+" infoBoxL TextToggle infoOptFr\\",
+" infoBoxL TextToggle infoOptWCS\\",
+" infoBoxL TextToggle infoOptSvr\\",
+" infoBoxL TextToggle infoOptClients\\",
+" infoBoxL TextToggle infoOptIsm\\",
+" infoBoxL TextToggle infoOptFB\\",
+"\\",
+"\\",
+" wcs_panel Layout wcsLayout\\",
+" wcsLayout Group wcsGroup\\",
+" wcsGroup Layout wcsBox\\",
+"\\",
+" wcsBox Frame wcsFrame\\",
+" wcsFrame Layout wcsText\\",
+" wcsText AsciiText wtName\\",
+" wcsText AsciiText wtTitle\\",
+" wcsText AsciiText wtFBCfg\\",
+" wcsText AsciiText wtIPixval\\",
+" wcsText AsciiText wtSPixval\\",
+" wcsText AsciiText wtBPixval\\",
+" wcsText AsciiText wtWcs1\\",
+" wcsText AsciiText wtWcs2\\",
+" wcsText AsciiText wtWcs3\\",
+" wcsText AsciiText wtWcs4\\",
+"\\",
+" wcsBox TextToggle ismToggle\\",
+" wcsBox TextToggle pixelTable\\",
+" wcsBox TextToggle imageHeader\\",
+" wcsBox TextToggle compass\\",
+" wcsBox TextToggle wcsOptions\\",
+"\\",
+"\\",
+" wcsLayout Group wcsOptGroup\\",
+" wcsOptGroup Layout wcsOptLayout\\",
+"\\",
+" wcsOptLayout Group wcsCoords\\",
+" wcsCoords Layout wcLayout\\",
+" wcLayout Label wcTitle\\",
+" wcLayout Frame wcLine\\",
+" wcLayout Label wlWcs1\\",
+" wcLayout Label wlWcs2\\",
+" wcLayout Label wlWcs3\\",
+" wcLayout Label wlWcs4\\",
+" wcLayout MenuButton sysWcs1\\",
+" wcLayout MenuButton sysWcs2\\",
+" wcLayout MenuButton sysWcs3\\",
+" wcLayout MenuButton sysWcs4\\",
+" wcLayout MenuButton fmtWcs1\\",
+" wcLayout MenuButton fmtWcs2\\",
+" wcLayout MenuButton fmtWcs3\\",
+" wcLayout MenuButton fmtWcs4\\",
+" wcLayout TextToggle wpWcs1\\",
+" wcLayout TextToggle wpWcs2\\",
+" wcLayout TextToggle wpWcs3\\",
+" wcLayout TextToggle wpWcs4\\",
+" wcLayout TextToggle wiWcs1\\",
+" wcLayout TextToggle wiWcs2\\",
+" wcLayout TextToggle wiWcs3\\",
+" wcLayout TextToggle wiWcs4\\",
+"\\",
+" wcsOptLayout Group wcsOpts\\",
+" wcsOpts Layout woLayout\\",
+" woLayout TextToggle woptLabels\\",
+" woLayout TextToggle woptTitles\\",
+" woLayout TextToggle woptFBinfo\\",
+" woLayout TextToggle woptBPM\\",
+"\\",
+" wcsOptLayout Group wcsIsmGroup\\",
+" wcsIsmGroup Layout wcsIsmLayout\\",
+" wcsIsmLayout Label wcsIsmLabel\\",
+" wcsIsmLayout Frame wcsIsmFrame\\",
+" wcsIsmFrame AsciiText wcsIsmCmd\\",
+" wcsIsmLayout Command wcsIsmInit\\",
+"\\",
+"\\",
+" tile_panel Frame tileOpts\\",
+" tileOpts Layout toptLayout\\",
+" toptLayout Group tFramesG\\",
+" toptLayout Group tileMode\\",
+" tileMode TextToggle tileDisabled\\",
+" tileMode TextToggle tileManual\\",
+" tileMode TextToggle tileBest\\",
+" tileMode TextToggle tileSquare\\",
+" tileMode TextToggle tileHorizontal\\",
+" tileMode TextToggle tileVertical\\",
+" tileMode TextToggle tileRow\\",
+" tileMode TextToggle tileCol\\",
+" toptLayout Group userOrientG\\",
+" toptLayout Group fillStyle\\",
+" fillStyle TextToggle byCols\\",
+" fillStyle TextToggle bottomUp\\",
+" toptLayout Group tileLabel\\",
+" tileLabel TextToggle labelImname\\",
+" tileLabel TextToggle labelTitles\\",
+" tileLabel TextToggle labelFrames\\",
+" toptLayout Frame geomFrame\\",
+" geomFrame Label tileGeometry\\",
+"\\",
+" userOrientG Layout userOrientL\\",
+" userOrientL Label nrowLab\\",
+" userOrientL Frame nrFrame\\",
+" nrFrame Layout nrLayout\\",
+" nrLayout Arrow nrdecrease\\",
+" nrLayout Label nrtext\\",
+" nrLayout Arrow nrincrease\\",
+" userOrientL Label ncolLab\\",
+" userOrientL Frame ncFrame\\",
+" ncFrame Layout ncLayout\\",
+" ncLayout Arrow ncdecrease\\",
+" ncLayout Label nctext\\",
+" ncLayout Arrow ncincrease\\",
+"\\",
+" tFramesG Layout tFrames\\",
+" tFrames Command tAll\\",
+" tFrames Command tNone\\",
+" tFrames Toggle tFrame1\\",
+" tFrames Toggle tFrame2\\",
+" tFrames Toggle tFrame3\\",
+" tFrames Toggle tFrame4\\",
+" tFrames Toggle tFrame5\\",
+" tFrames Toggle tFrame6\\",
+" tFrames Toggle tFrame7\\",
+" tFrames Toggle tFrame8\\",
+" tFrames Toggle tFrame9\\",
+" tFrames Toggle tFrame10\\",
+" tFrames Toggle tFrame11\\",
+" tFrames Toggle tFrame12\\",
+" tFrames Toggle tFrame13\\",
+" tFrames Toggle tFrame14\\",
+" tFrames Toggle tFrame15\\",
+" tFrames Toggle tFrame16\\",
+"}",
+"",
+"",
+"set Objects(parameters) { \\",
+" toplevel Parameter ximtool\\",
+" ximtool Parameter alert\\",
+" ximtool Parameter initialize\\",
+" ximtool Parameter resize\\",
+" ximtool Parameter frame\\",
+" ximtool Parameter nframes\\",
+" ximtool Parameter frameSize\\",
+" ximtool Parameter frameRegion\\",
+" ximtool Parameter frameView\\",
+" ximtool Parameter frameTitle\\",
+" ximtool Parameter frameFit\\",
+" ximtool Parameter enhancement\\",
+" ximtool Parameter colortables\\",
+" ximtool Parameter cmfocus\\",
+" ximtool Parameter autoscale\\",
+" ximtool Parameter antialias\\",
+" ximtool Parameter tileFrames\\",
+" ximtool Parameter cursorMode\\",
+" ximtool Parameter xflip\\",
+" ximtool Parameter yflip\\",
+" ximtool Parameter printerList\\",
+" ximtool Parameter printOptions\\",
+" ximtool Parameter loadOptions\\",
+" ximtool Parameter saveOptions\\",
+" ximtool Parameter tileOptions\\",
+" ximtool Parameter filelist\\",
+" ximtool Parameter help\\",
+" ximtool Parameter info\\",
+" ximtool Parameter ism_msg\\",
+"}",
+"",
+"",
+"set Objects(help_panel) { \\",
+" toplevel TopLevelShell help_panel\\",
+" help_panel Layout helpLayout\\",
+" helpLayout Group helpMenuGroup\\",
+" helpMenuGroup Layout helpMenubar\\",
+" helpLayout Layout helpInfoLayout\\",
+"\\",
+" helpMenubar Command helpClose\\",
+"\\",
+" helpLayout Command helpBack\\",
+" helpLayout Command helpForward\\",
+" helpLayout Command helpHome\\",
+" helpLayout Frame hfFrame\\",
+" hfFrame AsciiText hfEntry\\",
+" helpLayout Command hfFind\\",
+" helpLayout Command hfClear\\",
+" helpLayout Frame helpTextFrame\\",
+" helpTextFrame HTML helpText\\",
+"\\",
+" helpInfoLayout Label helpIRAFLogo\\",
+" helpInfoLayout Label helpInfo1\\",
+" helpInfoLayout Label helpInfo2\\",
+" helpInfoLayout Label helpInfo3\\",
+" helpInfoLayout Label helpNOAOLogo\\",
+"}",
+"",
+"",
+"set Objects(blink_panel) { \\",
+" toplevel TopLevelShell blink_panel\\",
+" blink_panel Layout bpLayout\\",
+"\\",
+" bpLayout Frame brMenuFrame\\",
+" brMenuFrame Layout brMenuBar\\",
+" brMenuBar Command brClose\\",
+"\\",
+" bpLayout Frame brFrame\\",
+" brFrame Layout brLayout\\",
+"\\",
+" brLayout Group brFramesG\\",
+" brFramesG Layout brFrames\\",
+" brFrames MenuButton brFrame1\\",
+" brFrames MenuButton brFrame2\\",
+" brFrames MenuButton brFrame3\\",
+" brFrames MenuButton brFrame4\\",
+" brFrames MenuButton brFrame5\\",
+" brFrames MenuButton brFrame6\\",
+" brFrames MenuButton brFrame7\\",
+" brFrames MenuButton brFrame8\\",
+" brFrames MenuButton brFrame9\\",
+" brFrames MenuButton brFrame10\\",
+" brFrames MenuButton brFrame11\\",
+" brFrames MenuButton brFrame12\\",
+" brFrames MenuButton brFrame13\\",
+" brFrames MenuButton brFrame14\\",
+" brFrames MenuButton brFrame15\\",
+" brFrames MenuButton brFrame16\\",
+"\\",
+" brLayout Group brCmdG\\",
+" brCmdG Layout brCmd\\",
+" brCmd Command brReset\\",
+" brCmd Label brRateLabel\\",
+" brCmd Frame brBRframe\\",
+" brBRframe Layout brBRlayout\\",
+" brBRlayout Arrow brBRdecrease\\",
+" brBRlayout TextBox brBRtext\\",
+" brBRlayout Arrow brBRincrease\\",
+" brCmd Command brRegButton\\",
+" brCmd Command brMatchButton\\",
+" brCmd TextToggle brBlinkButton\\",
+" brCmd TextToggle brAregButton\\",
+"}",
+"",
+"",
+"set Objects(hdr_panel) { \\",
+" toplevel TopLevelShell hdr_panel\\",
+" hdr_panel Layout hdrLayout\\",
+"\\",
+" hdrLayout Frame hdrMenuFrame\\",
+" hdrMenuFrame Layout hdrMenuBar\\",
+" hdrMenuBar Command hdrClose\\",
+"\\",
+" hdrLayout Group hdrObjGroup\\",
+" hdrObjGroup Layout hdrObjLayout\\",
+" hdrObjLayout Label hdrObjLabel\\",
+" hdrObjLayout MenuButton hdrObjMenu\\",
+"\\",
+" hdrLayout Frame hdrTabFrame\\",
+" hdrTabFrame Tabs hdrTabs\\",
+" hdrTabs Group hdrHdrGroup\\",
+" hdrTabs Group hdrWcsGroup\\",
+"\\",
+" hdrHdrGroup Layout hdrHdrLayout\\",
+" hdrHdrLayout Frame hFindFrame\\",
+" hFindFrame AsciiText hFindEntry\\",
+" hdrHdrLayout Command hdrFilter\\",
+" hdrHdrLayout Command hdrFind\\",
+" hdrHdrLayout Command hdrClear\\",
+" hdrHdrLayout HTML hdrText\\",
+"\\",
+" hdrWcsGroup Layout hdrWcsLayout\\",
+" hdrWcsLayout Group hdrInfoGroup\\",
+" hdrInfoGroup Frame hdrIGFrame\\",
+" hdrIGFrame AsciiText hdrIGText\\",
+" hdrWcsLayout Group hdrKeywGroup\\",
+" hdrKeywGroup Frame hdrKGFrame\\",
+" hdrKGFrame AsciiText hdrKGText\\",
+"}",
+"",
+"",
+"set Objects(pixel_table) { \\",
+" toplevel TopLevelShell pixel_panel\\",
+"\\",
+" pixel_panel Layout pixel_table\\",
+" pixel_table Frame pixtabMenuFrame\\",
+" pixtabMenuFrame Layout pixtabMenuBar\\",
+" pixtabMenuBar MenuButton pixtabSize\\",
+" pixtabMenuBar Command pixtabHelp\\",
+" pixtabMenuBar Command pixtabClose\\",
+"\\",
+" pixel_table Frame pixtabFrame\\",
+" pixtabFrame Porthole ptPort\\",
+" ptPort Layout ptLayout\\",
+" ptLayout Frame ptColFrame\\",
+" ptColFrame MultiList ptColLabs\\",
+" ptLayout Frame ptRowFrame\\",
+" ptRowFrame MultiList ptRowLabs\\",
+" ptLayout Frame ptFrame\\",
+" ptFrame MultiList pixtab\\",
+"\\",
+" ptLayout Label meanLabel\\",
+" ptLayout Frame meanFrame\\",
+" meanFrame Label meanValue\\",
+"\\",
+" ptLayout Label sigLabel\\",
+" ptLayout Frame sigFrame\\",
+" sigFrame Label sigValue\\",
+"}",
+"",
+"",
+"set Objects(tcl_panel) { \\",
+" toplevel TopLevelShell tcl_panel\\",
+" tcl_panel Layout tclLayout\\",
+" tclLayout Group tclCmdGroup\\",
+" tclCmdGroup Layout tclCmd\\",
+" tclCmd Command tclClear\\",
+" tclCmd Command tclExecute\\",
+" tclCmd Command tclDismiss\\",
+" tclLayout Frame tclFrame\\",
+" tclFrame AsciiText tclEntry\\",
+"}",
+"",
+"",
+"set Objects(warning) { \\",
+" toplevel TransientShell warning\\",
+" warning Layout warn\\",
+" warn Frame warnFrame\\",
+" warnFrame Layout WFlayout\\",
+" WFlayout Icon warnIcon\\",
+" WFlayout TextBox warnText\\",
+" warn Command warnOk\\",
+" warn Command warnCancel\\",
+"}",
+"",
+"",
+"set Resources(global) { \\",
+"",
+" !---------------------------------------------------------",
+" ! Define some global widget resources for the main panels.",
+" !---------------------------------------------------------",
+" *shadowWidth: 1",
+" *background: #c4c4c4",
+"! *foreground: black",
+" *Arrow.width: 16",
+" *Arrow.height: 25",
+" *Text*height: 21",
+" *Command.height: 21",
+" *Command.highlightThickness: 1",
+" *MenuButton.height: 21",
+" *MenuButton.highlightThickness: 1",
+" *Label.borderWidth: 0",
+" *Label.shadowWidth: 0",
+" *TextButton.shadowWidth: 0",
+" *TextButton.highlightThickness: 1",
+" *TextToggle*borderWidth: 0",
+" *TextToggle.highlightThickness: 0",
+" *Toggle.highlightThickness: 1",
+" *Group.shrinkToFit: True",
+"",
+" *Arrow.foreground: gray",
+" *Arrow.background: #adadad",
+" *Text*background: #adadad",
+" *AsciiText*background: #adadad",
+" *TextBox.background: #adadad",
+" *MultiList*background: #adadad",
+" *Slider2d.thumbColor: #c4c4c4",
+"",
+"",
+" !-------------------------------------------------------------",
+" ! Define resources to take advantage of the 3D scrollbar look.",
+" !-------------------------------------------------------------",
+" *Scrollbar*background: #c4c4c4",
+" *Scrollbar*shadowWidth: 1",
+" *Scrollbar*width: 15",
+" *Scrollbar*height: 15",
+" *Scrollbar*cursorName: top_left_arrow",
+" *Scrollbar*pushThumb: true",
+"",
+" *HTML.Scrollbar.shadowWidth: 1",
+" *HTML*Scrollbar*width: 15",
+" *HTML*Scrollbar*height: 15",
+"",
+"",
+" !----------------------------------------",
+" ! Menu resources giving a shadow effect.",
+" !----------------------------------------",
+" *SmeBSB.leftMargin: 10",
+" *SmeBSB.rightMargin: 5",
+" *SmeBSB.shadowWidth: 2",
+" *SmeBSB.foreground: #e5e5e5",
+" *SmeBSB.background: SteelBlue",
+" *SimpleMenu.background: #c4c4c4",
+" *SimpleMenu.borderWidth: 2",
+" *SimpleMenu.borderColor: black",
+" *SimpleMenu.line1.foreground: #9c9c9c",
+" *SimpleMenu.line2.foreground: #e8e8e8",
+" *SimpleMenu.line3.foreground: #9c9c9c",
+" *SimpleMenu.line4.foreground: #e8e8e8",
+" *SimpleMenu.line5.foreground: #9c9c9c",
+" *SimpleMenu.line6.foreground: #e8e8e8",
+" *SimpleMenu.line7.foreground: #9c9c9c",
+" *SimpleMenu.line8.foreground: #e8e8e8",
+" *SimpleMenu.line9.foreground: #9c9c9c",
+" *SimpleMenu.line10.foreground: #e8e8e8",
+" *SimpleMenu.line11.foreground: #9c9c9c",
+" *SimpleMenu.line12.foreground: #e8e8e8",
+" *SimpleMenu.line13.foreground: #9c9c9c",
+" *SimpleMenu.line14.foreground: #e8e8e8",
+" *SimpleMenu.line15.foreground: #9c9c9c",
+" *SimpleMenu.line16.foreground: #e8e8e8",
+" *SimpleMenu.line17.foreground: #9c9c9c",
+" *SimpleMenu.line18.foreground: #e8e8e8",
+" *SimpleMenu.line19.foreground: #9c9c9c",
+" *SimpleMenu.line20.foreground: #e8e8e8",
+" *SimpleMenu.line21.foreground: #9c9c9c",
+" *SimpleMenu.line22.foreground: #e8e8e8",
+" *SimpleMenu.line23.foreground: #9c9c9c",
+" *SimpleMenu.line24.foreground: #e8e8e8",
+" *SimpleMenu.line25.foreground: #9c9c9c",
+" *SimpleMenu.line26.foreground: #e8e8e8",
+" *SimpleMenu.line27.foreground: #9c9c9c",
+" *SimpleMenu.line28.foreground: #e8e8e8",
+" *SimpleMenu.line29.foreground: #9c9c9c",
+" *SimpleMenu.line30.foreground: #e8e8e8",
+" *SimpleMenu.line31.foreground: #9c9c9c",
+" *SimpleMenu.line32.foreground: #e8e8e8",
+" *SimpleMenu.line33.foreground: #9c9c9c",
+" *SimpleMenu.line34.foreground: #e8e8e8",
+" *SimpleMenu.line35.foreground: #9c9c9c",
+" *SimpleMenu.line36.foreground: #e8e8e8",
+" *SimpleMenu.line37.foreground: #9c9c9c",
+" *SimpleMenu.line38.foreground: #e8e8e8",
+" *SimpleMenu.line39.foreground: #9c9c9c",
+" *SimpleMenu.line40.foreground: #e8e8e8",
+"",
+"",
+" !---------------------------------------------",
+" ! Fixups for 24-bit displays",
+" !---------------------------------------------",
+" *hFindEntry.background: #adadad",
+" *hdrIGText.background: #adadad",
+" *hdrKGText.background: #adadad",
+" *hfEntry.background: #adadad",
+" *printcmd.background: #adadad",
+" *titleString.background: #adadad",
+" *fnameText.background: #adadad",
+" *imtemplateText.background: #adadad",
+" *z1Value.background: #adadad",
+" *z2Value.background: #adadad",
+" *nsampValue.background: #adadad",
+" *saveFile.background: #adadad",
+" *infoText.background: #adadad",
+" *wtName.background: #adadad",
+" *wtTitle.background: #adadad",
+" *wtFBCfg.background: #adadad",
+" *wtIPixval.background: #adadad",
+" *wtSPixval.background: #adadad",
+" *wtBPixval.background: #adadad",
+" *wtWcs1.background: #adadad",
+" *wtWcs2.background: #adadad",
+" *wtWcs3.background: #adadad",
+" *wtWcs4.background: #adadad",
+" *wcsIsmCmd.background: #adadad",
+" *tclEntry.background: #adadad",
+"",
+" *hFindEntry.foreground: #000000",
+" *hdrIGText.foreground: #000000",
+" *hdrKGText.foreground: #000000",
+" *hfEntry.foreground: #000000",
+" *printcmd.foreground: #000000",
+" *titleString.foreground: #000000",
+" *fnameText.foreground: #000000",
+" *imtemplateText.foreground: #000000",
+" *z1Value.foreground: #000000",
+" *z2Value.foreground: #000000",
+" *nsampValue.foreground: #000000",
+" *saveFile.foreground: #000000",
+" *infoText.foreground: #000000",
+" *wtName.foreground: #000000",
+" *wtTitle.foreground: #000000",
+" *wtFBCfg.foreground: #000000",
+" *wtIPixval.foreground: #000000",
+" *wtSPixval.foreground: #000000",
+" *wtBPixval.foreground: #000000",
+" *wtWcs1.foreground: #000000",
+" *wtWcs2.foreground: #000000",
+" *wtWcs3.foreground: #000000",
+" *wtWcs4.foreground: #000000",
+" *wcsIsmCmd.foreground: #000000",
+" *tclEntry.foreground: #000000",
+"}",
+" ",
+" ",
+" ",
+" ",
+"",
+"set Resources(ximtool) { \\",
+"",
+" ! Main image window resources.",
+" ! -------------------------------",
+" *allowShellResize: True",
+" *beNiceToColormap: False",
+" *menuLabel.foreground: Gold",
+" *markerMenu.foreground: White",
+" *rulerMenu.foreground: White",
+" *display.imagewin.markerMenu.foreground: White",
+" *display.imagewin.rulerMenu.foreground: White",
+" *markerMenu.background: SteelBlue",
+" *markerMenu*SimpleMenu.foreground: White",
+" *markerMenu*SimpleMenu.background: SteelBlue",
+" *rulerMenu.background: SteelBlue",
+" *rulerMenu*SimpleMenu.foreground: White",
+" *rulerMenu*SimpleMenu.background: SteelBlue",
+" *rulerColor.SmeBSB.leftMargin: 16",
+" *magzoomMenu.foreground: White",
+" *magzoomMenu.background: SteelBlue",
+" *magzoomMenu*SimpleMenu.foreground: White",
+" *magzoomMenu*SimpleMenu.background: SteelBlue",
+" *markerColor.SmeBSB.leftMargin: 64",
+" *markerColor.SmeBSB.rightMargin: 0",
+" *markerColor.menuLabel.leftMargin: 5",
+" *markerColor.menuLabel.rightMargin: 5",
+" *rulerColor.SmeBSB.leftMargin: 64",
+" *rulerColor.SmeBSB.rightMargin: 0",
+" *rulerColor.menuLabel.leftMargin: 5",
+" *rulerColor.menuLabel.rightMargin: 5",
+"",
+" *ximtool.title: XIMTOOL_VERSION",
+"",
+" *display.borderWidth: 2",
+" *display.layout: horizontal { \\",
+" -0 \\",
+" vertical { \\",
+" menuGroup < +inf -inf * > \\",
+" horizontal { 1 toolbar < +inf -inf * > 1 } \\",
+" 1 < -1 > \\",
+" horizontal { 1 panelbar < +inf -inf * > 1 } \\",
+" 1 < -1 > \\",
+" vertical { \\",
+" horizontal { \\",
+" imageFrame < +inf -inf * +inf -inf > \\",
+" -2 \\",
+" vcutFrame < * +inf -inf > \\",
+" } \\",
+" -3 \\",
+" horizontal { \\",
+" hcutFrame < +inf -inf * > 1 \\",
+" vertical { 4 horizontal { -4 plotOpts} -4 } \\",
+" } \\",
+" -3 \\",
+" horizontal { \\",
+" cbarFrame < +inf -inf * > \\",
+" focusSlider 2 hcut 2 vcut 15 \\",
+" } \\",
+" } \\",
+" } \\",
+" -0 \\",
+" }",
+" *hcut.label: H",
+" *hcut.font: *lucida-bold-r*10*",
+" *vcut.label: V",
+" *vcut.font: *lucida-bold-r*10*",
+" *focusSlider.location: 0 0 100 15",
+"",
+" *hcutFrame.frameType: sunken",
+" *hcutFrame.frameWidth: 1",
+" *hcutFrame.innerOffset: 1",
+" *hcutFrame.outerOffset: 1",
+" //*hcutPlot.color0: #c4c4c4",
+" //*hcutPlot.color1: #000000",
+" *hcutPlot.color0: #000000",
+" *hcutPlot.color1: #ffffff",
+" *hcutPlot.crosshairCursorColor: red",
+" *hcutPlot.width: 512",
+" *hcutPlot.height: 6",
+" *hcutPlot.borderWidth: 0",
+" *hcutPlot.alphaFont1: 6x10",
+" *hcutPlot.alphaFont2: 6x10",
+" *hcutPlot.alphaFont3: 6x10",
+" *hcutPlot.alphaFont4: 6x10",
+" *hcutPlot.alphaFont5: 6x10",
+" *hcutPlot.alphaFont6: 6x10",
+" *hcutPlot.alphaFont7: 6x10",
+" *hcutPlot.alphaFont8: 6x10",
+" *hcutPlot.translations: \\",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed) \\n\\",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed) \\n\\",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed) \\n\\",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed) \\n\\",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed) \\n\\",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed) \\n\\",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed) \\n\\",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed) \\n\\",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed) \\n\\",
+" !Ctrl <Key>b: call(prevFrame,$name) \\n\\",
+" !Ctrl <Key>f: call(nextFrame,$name) \\n\\",
+" !Ctrl <Key>i: call(cpInvert) \\n\\",
+" !Ctrl <Key>m: call(toggleMagnifier) \\n\\",
+" !Ctrl <Key>n: call(normalize) \\n\\",
+" !Ctrl <Key>p: call(togglePanner) \\n\\",
+" !Ctrl Alt <Key>q: call(Quit) \\n\\",
+" !Ctrl <Key>r: call(cpRegisterFrames) \\n\\",
+" !Ctrl <Key>s: call(cpMatchFrames) \\n\\",
+" !Ctrl <Key>u: call(cpZoom,1,1,fixed) \\n\\",
+" Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \\n\\",
+" Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \\n\\",
+" Ctrl <Key>\\<: call(cpSetBlinkRate,BRdecrease) \\n\\",
+" Ctrl <Key>\\>: call(cpSetBlinkRate,BRincrease) \\n\\",
+" !Alt <Key>b: call(toggleBlink) \\n\\",
+" !Alt <Key>c: call(displayPanel) \\n\\",
+" !Alt <Key>h: call(Help) \\n\\",
+" !Alt <Key>i: call(infoPanel) \\n\\",
+" !Ctrl Alt <Key>f: call(fitFrame) \\n\\",
+" !Alt <Key>l: call(loadPanel) \\n\\",
+" !Alt <Key>p: call(printPanel) \\n\\",
+" !Alt <Key>s: call(savePanel) \\n\\",
+" !Alt <Key>t: call(tclPanel) \\n\\",
+" !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \\n\\",
+" <EnterWindow>: enter-window() \\n\\",
+" <LeaveWindow>: leave-window() \\n\\",
+" <KeyPress>: graphics-input() \\n\\",
+" !Alt <Motion>: call(curtrack_msg,$x,$y) \\n\\",
+" <Motion>: track-cursor() call(hcutWCSUpdate,$x,$y)",
+"",
+"",
+" *vcutFrame.frameType: sunken",
+" *vcutFrame.frameWidth: 1",
+" *vcutFrame.innerOffset: 0",
+" *vcutFrame.outerOffset: 0",
+" //*vcutPlot.color0: #c4c4c4",
+" //*vcutPlot.color1: black",
+" *vcutPlot.color0: #000000",
+" *vcutPlot.color1: #ffffff",
+" *vcutPlot.crosshairCursorColor: red",
+" *vcutPlot.width: 6",
+" *vcutPlot.height: 512",
+" *vcutPlot.borderWidth: 0",
+" *vcutPlot.alphaFont1: 6x10",
+" *vcutPlot.alphaFont2: 6x10",
+" *vcutPlot.alphaFont3: 6x10",
+" *vcutPlot.alphaFont4: 6x10",
+" *vcutPlot.alphaFont5: 6x10",
+" *vcutPlot.alphaFont6: 6x10",
+" *vcutPlot.alphaFont7: 6x10",
+" *vcutPlot.alphaFont8: 6x10",
+" *vcutPlot.translations: \\",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed) \\n\\",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed) \\n\\",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed) \\n\\",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed) \\n\\",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed) \\n\\",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed) \\n\\",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed) \\n\\",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed) \\n\\",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed) \\n\\",
+" !Ctrl <Key>b: call(prevFrame,$name) \\n\\",
+" !Ctrl <Key>f: call(nextFrame,$name) \\n\\",
+" !Ctrl <Key>i: call(cpInvert) \\n\\",
+" !Ctrl <Key>m: call(toggleMagnifier) \\n\\",
+" !Ctrl <Key>n: call(normalize) \\n\\",
+" !Ctrl <Key>p: call(togglePanner) \\n\\",
+" !Ctrl Alt <Key>q: call(Quit) \\n\\",
+" !Ctrl <Key>r: call(cpRegisterFrames) \\n\\",
+" !Ctrl <Key>s: call(cpMatchFrames) \\n\\",
+" !Ctrl <Key>u: call(cpZoom,1,1,fixed) \\n\\",
+" Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \\n\\",
+" Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \\n\\",
+" Ctrl <Key>\\<: call(cpSetBlinkRate,BRdecrease) \\n\\",
+" Ctrl <Key>\\>: call(cpSetBlinkRate,BRincrease) \\n\\",
+" !Alt <Key>b: call(toggleBlink) \\n\\",
+" !Alt <Key>c: call(displayPanel) \\n\\",
+" !Alt <Key>h: call(Help) \\n\\",
+" !Alt <Key>i: call(infoPanel) \\n\\",
+" !Ctrl Alt <Key>f: call(fitFrame) \\n\\",
+" !Alt <Key>l: call(loadPanel) \\n\\",
+" !Alt <Key>p: call(printPanel) \\n\\",
+" !Alt <Key>s: call(savePanel) \\n\\",
+" !Alt <Key>t: call(tclPanel) \\n\\",
+" !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \\n\\",
+" <EnterWindow>: enter-window() \\n\\",
+" <LeaveWindow>: leave-window() \\n\\",
+" <KeyPress>: graphics-input() \\n\\",
+" !Alt <Motion>: call(curtrack_msg,$x,$y) \\n\\",
+" <Motion>: track-cursor() call(vcutWCSUpdate,$x,$y)",
+"",
+"",
+" *plotOpts.label: Options",
+" !*plotOpts*location: 0 0 105 18",
+" *plotOpts*location: 0 0 1 18",
+" *plotOpts.shrinkToFit: True",
+" *plotOpts.outerOffset: 5",
+" *plotOpts.innerOffset: 3",
+" *plotOpts.frameWidth: 2",
+" *plotOpts*TextToggle.offIcon: square0s",
+" *plotOpts*TextToggle.onIcon: square1s",
+" *plotOpts*TextToggle.highlightColor: yellow",
+" *plotOpts*TextToggle.outerOffset: 0",
+" *plotOpts*TextToggle.frameWidth: 0",
+" *plotOpts*TextToggle.selectionStyle: multi",
+" *plotOpts*TextToggle.leftMargin: 3",
+" *plotOpts*TextToggle.alignment: left",
+"",
+" *poptsLayout.borderWidth: 0",
+" *poptsLayout.layout: vertical { \\",
+" -1 \\",
+" plotSpeed plotAccurate plotImgPix \\",
+" 2 < -2 > \\",
+" horizontal { -4 optLine < +inf -inf * > -4 } \\",
+" 2 < -2 > \\",
+" curJump curSmooth curTrack \\",
+" -1 \\",
+" }",
+" *plotSpeed.label: Better Speed",
+" *plotSpeed.on: True",
+" *plotAccurate.label: Better Accuracy",
+" *plotAccurate.on: False",
+" *plotImgPix.label: Image Pixels",
+" *plotImgPix.on: False",
+" *plotImgPix.sensitive: False",
+" *optLine.height: 2",
+" *optLine.width: 120",
+" *optLine.outerOffset: 0",
+" *optLine.innerOffset: 0",
+" *optLine.frameWidth: 2",
+" *optLine.frameType: chiseled",
+" *curJump.label: Jump Cursor",
+" *curJump.on: True",
+" *curSmooth.label: Smooth Cursor",
+" *curSmooth.on: False",
+" *curTrack.label: Graphics Cursors",
+" *curTrack.on: True",
+"",
+"",
+" *menuGroup.label: ",
+" *menuGroup.height: 38",
+" *menuGroup.width: 512",
+" *menuGroup.frameType: raised",
+" *menuGroup.frameWidth: 2",
+" *menubar.layout: horizontal { \\",
+" 2 < -2 > \\",
+" fileButton 1 < -1 > viewButton 1 < -1 > optionsButton \\",
+" 1 < -1 > \\",
+" imageTitle < +inff -inff * > \\",
+" 1 < -1 > \\",
+" mXflipButton 1 < -1 > mYflipButton \\",
+" 1 < -1 > \\",
+" mPrevButton 1 < -1 > mFrameButton 1 < -1 > mNextButton \\",
+" 1 < -1 > \\",
+" toolButton 1 < -1 > panelButton \\",
+" 2 < -2 > \\",
+" }",
+"",
+" *menubar*SimpleMenu.foreground: Black",
+" *menubar*SimpleMenu.borderWidth: 1",
+" *menubar*SimpleMenu.foreground: White",
+" *menubar*SimpleMenu.background: SteelBlue",
+" *SmeBSB.vertSpace: 10",
+"",
+" *menubar.width: 512",
+" *menubar*borderWidth: 0",
+" *menubar*Command.internalWidth: 0",
+" *menubar*Command.borderWidth: 0",
+" *menubar*Toggle.label: x",
+" *menubar*Toggle.internalWidth: 0",
+" *menubar*Toggle.borderWidth: 0",
+"",
+" *toolbar.layout: horizontal { \\",
+" tbZoomIn < +inf -inf * > 1 < -1 > \\",
+" tbZoom0 < +inf -inf * > 1 < -1 > \\",
+" tbZoomOut < +inf -inf * > 1 < -1 > \\",
+" tbInvert < +inf -inf * > 1 < -1 > \\",
+" tbNormalize < +inf -inf * > 1 < -1 > \\",
+" tbMatchLUT < +inf -inf * > 1 < -1 > \\",
+" tbAutoReg < +inf -inf * > 1 < -1 > \\",
+" tbRegister < +inf -inf * > 1 < -1 > \\",
+" tbCenter < +inf -inf * > 1 < -1 > \\",
+" tbBlinkDec < +inf -inf * > 1 < -1 > \\",
+" tbBlink < +inf -inf * > 1 < -1 > \\",
+" tbBlinkInc < +inf -inf * > 1 < -1 > \\",
+" xflipButton < +inf -inf * > 1 < -1 > \\",
+" yflipButton < +inf -inf * > 1 < -1 > \\",
+" tbCompass < +inf -inf * > 1 < -1 > \\",
+" tbTile < +inf -inf * > 1 < -1 > \\",
+" prevButton < +inf -inf * > 1 < -1 > \\",
+" frameButton < +inf -inf * > 1 < -1 > \\",
+" nextButton < +inf -inf * > 1 < -1 > \\",
+" }",
+" *toolbar.width: 512",
+" *toolbar.height: 25",
+" *toolbar*borderWidth: 0",
+" *toolbar*Command.internalWidth: 3",
+" *toolbar*Command.borderWidth: 0",
+" *toolbar*Toggle.internalWidth: 2",
+" *toolbar*Toggle.borderWidth: 0",
+"",
+" *panelbar.layout: horizontal { \\",
+" pbDisplayP < +inf -inf * > 1 < -1 > \\",
+" pbPrintP < +inf -inf * > 1 < -1 > \\",
+" pbLoadP < +inf -inf * > 1 < -1 > \\",
+" pbSaveP < +inf -inf * > 1 < -1 > \\",
+" pbInfoP < +inf -inf * > 1 < -1 > \\",
+" pbTileP < +inf -inf * > 1 < -1 > \\",
+" pbCoordP < +inf -inf * > 1 < -1 > \\",
+" pbPanM < +inf -inf * > 1 < -1 > \\",
+" pbMagM < +inf -inf * > 1 < -1 > \\",
+" pbWcsM < +inf -inf * > 1 < -1 > \\",
+" pbIsm < +inf -inf * > 1 < -1 > \\",
+" helpButton < +inf -inf * > 1 < -1 > \\",
+" pbQuit < +inf -inf * > 1 < -1 > \\",
+" }",
+" *panelbar*SimpleMenu.borderColor: Black",
+" *panelbar*SimpleMenu.borderWidth: 1",
+" *SmeBSB.vertSpace: 10",
+"",
+" *panelbar.width: 12",
+" *panelbar.height: 25",
+" *panelbar*borderWidth: 0",
+" *panelbar*Label.internalWidth: 4",
+" *panelbar*Label.borderWidth: 0",
+" *panelbar*Command.internalWidth: 4",
+" *panelbar*Command.borderWidth: 0",
+" *panelbar*Toggle.internalWidth: 3",
+" *panelbar*Toggle.borderWidth: 0",
+"",
+" *pbLoadP.label: Load",
+" *pbDisplayP.label: Display",
+" *pbSaveP.label: Save",
+" *pbPrintP.label: Print",
+" *pbInfoP.label: Info",
+" *pbTileP.label: Tile",
+" *pbCoordP.label: Coords",
+" *pbPanM.label: Pan",
+" *pbPanM.state: 1",
+" *pbMagM.label: Mag",
+" *pbMagM.state: 0",
+" *pbWcsM.label: WCS",
+" *pbWcsM.state: 1",
+" *pbIsm.label: ISM",
+" *pbIsm.state: 0",
+" *helpButton.label: ",
+"",
+" *fileButton.label: File",
+" *fileButton.menuName: fileMenu",
+" *viewButton.label: View",
+" *viewButton.menuName: viewMenu",
+" *optionsButton.label: Options",
+" *optionsButton.menuName: optionsMenu",
+" *toolButton.label: ",
+" *toolButton.state: 0",
+" *panelButton.label: ",
+" *panelButton.state: 0",
+" *imageTitle*font: *times-bold-r*12*",
+" *imageTitle.width: 40",
+" *imageTitle.height: 20",
+" *frameButton.menuName: frameMenu",
+" *frameButton.label: 1",
+" *frameButton.width: 20",
+" *mFrameButton.menuName: mFrameMenu",
+" *mFrameButton.label: 1",
+" *mFrameButton.width: 20",
+" *pbQuit.label: Quit",
+" *tbZoom0.label: Mag",
+" *tbBlink.label: Blink",
+" *tbBlink.internalWidth: 3",
+" *tbCenter.label: Cntr",
+" *tbAutoReg.label: AReg",
+" *tbRegister.label: Reg",
+" *tbInvert.label: Inv",
+" *tbNormalize.label: Norm",
+" *tbMatchLUT.label: Match",
+"",
+" *SimpleMenu*font: -adobe-times-bold-r-normal-*-12-*-*-*-*-*-iso8859-1",
+" *fileButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+" *optionsButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+" *viewButton.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+" *panelbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+" *toolbar*font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+"",
+" *Gterm.cmapName: image",
+" *Gterm.basePixel: 64",
+" *imageFrame.frameType: sunken",
+" *imageFrame.frameWidth: 1",
+" *imageFrame.outerOffset: 0",
+" *imageFrame.innerOffset: 0",
+" *imageFrame.width: 512",
+" *imageFrame.height: 512",
+" *cbarFrame.frameType: sunken",
+" *cbarFrame.frameWidth: 1",
+" *cbarFrame.outerOffset: 0",
+" *cbarFrame.innerOffset: 0",
+" *cbarFrame.width: 512",
+" *imagewin.warpCursor: true",
+" *imagewin.raiseWindow: true",
+" *imagewin.deiconifyWindow: true",
+" *imagewin.idleCursor: crosshair",
+" *imagewin.ginmodeCursor: circle",
+" *imagewin.ginmodeBlinkInterval: 500",
+" *imagewin.resizable: true",
+" *imagewin.copyOnResize: false",
+" *imagewin.width: 512",
+" *imagewin.height: 512",
+" *imagewin.maxMappings: 64",
+" *imagewin.borderWidth: 0",
+"",
+" *imagewin.translations: \\",
+" None<Key>Left: call(move_cursor,-1,0) \\n\\",
+" None<Key>Down: call(move_cursor,0,1) \\n\\",
+" None<Key>Up: call(move_cursor,0,-1) \\n\\",
+" None<Key>Right: call(move_cursor,1,0) \\n\\",
+" !Shift <Key>Left: call(move_cursor,-10,0) \\n\\",
+" !Shift <Key>Down: call(move_cursor,0,10) \\n\\",
+" !Shift <Key>Up: call(move_cursor,0,-10) \\n\\",
+" !Shift <Key>Right: call(move_cursor,10,0) \\n\\",
+" !Ctrl <Key>h: call(move_cursor,-1,0) \\n\\",
+" !Ctrl <Key>j: call(move_cursor,0,1) \\n\\",
+" !Ctrl <Key>k: call(move_cursor,0,-1) \\n\\",
+" !Ctrl <Key>l: call(move_cursor,1,0) \\n\\",
+" !Ctrl Shift <Key>h: call(move_cursor,-10,0) \\n\\",
+" !Ctrl Shift <Key>j: call(move_cursor,0,10) \\n\\",
+" !Ctrl Shift <Key>k: call(move_cursor,0,-10) \\n\\",
+" !Ctrl Shift <Key>l: call(move_cursor,10,0) \\n\\",
+" !Ctrl <Key>Left: call(moveFrame,-1,0) \\n\\",
+" !Ctrl <Key>Down: call(moveFrame,0,1) \\n\\",
+" !Ctrl <Key>Up: call(moveFrame,0,-1) \\n\\",
+" !Ctrl <Key>Right: call(moveFrame,1,0) \\n\\",
+" !Ctrl Alt <Key>Left: call(moveFrame,-0.5,0) \\n\\",
+" !Ctrl Alt <Key>Down: call(moveFrame,0,0.5) \\n\\",
+" !Ctrl Alt <Key>Up: call(moveFrame,0,-0.5) \\n\\",
+" !Ctrl Alt <Key>Right: call(moveFrame,0.5,0) \\n\\",
+" !Alt <Key>1: call(cpSetFrame,frame1) \\n\\",
+" !Alt <Key>2: call(cpSetFrame,frame2) \\n\\",
+" !Alt <Key>3: call(cpSetFrame,frame3) \\n\\",
+" !Alt <Key>4: call(cpSetFrame,frame4) \\n\\",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed) \\n\\",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed) \\n\\",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed) \\n\\",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed) \\n\\",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed) \\n\\",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed) \\n\\",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed) \\n\\",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed) \\n\\",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed) \\n\\",
+" !Ctrl <Key>a: call(tbToggleAutoReg) \\n\\",
+" !Ctrl <Key>b: call(prevFrame,$name) \\n\\",
+" !Ctrl <Key>c: call(cpZoomAction,centerFrame) \\n\\",
+" !Ctrl <Key>f: call(nextFrame,$name) \\n\\",
+" !Ctrl <Key>i: call(cpInvert) \\n\\",
+" !Ctrl <Key>m: call(toggleMagnifier) \\n\\",
+" !Ctrl <Key>n: call(normalize) \\n\\",
+" !Ctrl <Key>o: call(offset,$x,$y) \\n\\",
+" !Ctrl <Key>p: call(togglePanner) \\n\\",
+" !Ctrl Alt <Key>q: call(Quit) \\n\\",
+" !Ctrl <Key>r: call(cpRegisterFrames) \\n\\",
+" !Ctrl <Key>s: call(cpMatchFrames) \\n\\",
+" !Ctrl <Key>t: call(tbTileFramesToggle) \\n\\",
+" !Ctrl <Key>u: call(cpZoom,1,1,fixed) \\n\\",
+" !Ctrl <Key>x: call(cpFrameAction,flipX) \\n\\",
+" !Ctrl <Key>y: call(cpFrameAction,flipY) \\n\\",
+" Ctrl <Key>+: call(cpZoom,2.0,2.0,relative) \\n\\",
+" Ctrl <Key>-: call(cpZoom,0.5,0.5,relative) \\n\\",
+" !Ctrl Alt <Key>=: call(Print) \\n\\",
+" Ctrl <Key>\\<: call(cpSetBlinkRate,BRdecrease) \\n\\",
+" Ctrl <Key>\\>: call(cpSetBlinkRate,BRincrease) \\n\\",
+" Ctrl <Key>\\[: call(setCtrBoxSize,$x,$y,-1) \\n\\",
+" Ctrl <Key>\\]: call(setCtrBoxSize,$x,$y,1) \\n\\",
+" !Ctrl <Key>0: call(centroid,$x,$y,peak) \\n\\",
+" !Ctrl Alt <Key>0: call(centroid,$x,$y,min) \\n\\",
+" !Alt <Key>b: call(toggleBlink) \\n\\",
+" !Alt <Key>c: call(displayPanel) \\n\\",
+" !Ctrl Shift <Key>c: call(displayPanel) \\n\\",
+" !Ctrl Alt <Key>f: call(fitFrame) \\n\\",
+" !Alt <Key>h: call(Help) \\n\\",
+" !Alt <Key>i: call(infoPanel) \\n\\",
+" !Alt <Key>l: call(loadPanel) \\n\\",
+" !Alt <Key>p: call(printPanel) \\n\\",
+" !Alt <Key>s: call(savePanel) \\n\\",
+" !Alt <Key>t: call(tclPanel) \\n\\",
+" !Ctrl Shift <Key>t: call(tclPanel) \\n\\",
+" !Shift<Btn1Down>: call(setDynamicMagnifier,1) \\n\\",
+" !Shift<Btn1Up>: call(setDynamicMagnifier,0) \\n\\",
+" !<Btn1Down>: call(makeMarker,$name,$x,$y) m_create() \\n\\",
+" !Shift <Btn2Down>: crosshair(on) \\n\\",
+" !Shift <Btn2Motion>: crosshair(on) \\n\\",
+" !Shift <Btn2Up>: crosshair(off) \\n\\",
+" !<Btn2Up>: crosshair(off) \\n\\",
+" !<Btn2Down>: call(zoom,$x,$y) \\n\\",
+" !<Btn3Down>: call(windowColormap,$x,$y) \\n\\",
+" !<Btn3Up>: call(updateColormap,$x,$y) \\n\\",
+" !<Btn3Motion>: call(windowColormap,$x,$y) \\n\\",
+" !Ctrl <Btn1Down>: call(makeRuler,$name,$x,$y) \\n\\",
+" !Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y) call(resizeRuler,$x,$y,0) \\n\\",
+" !Ctrl <Btn1Up>: call(deleteRuler,$x,$y) \\n\\",
+" <EnterWindow>: enter-window() \\n\\",
+" <LeaveWindow>: leave-window() \\n\\",
+" <KeyPress>: graphics-input() \\n\\",
+" !Alt <Motion>: call(curtrack_msg,$x,$y) \\n\\",
+" <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)",
+"",
+"! The following translations can be used to enable windowing of the",
+"! individual RGB components of the colormap. It's not very useful but",
+"! included here for those that may wish to use it.",
+"!--------------------------------------------------------------------------",
+"! !Ctrl <Btn1Down>: call(windowRGB,1,$x,$y,0) \\n\\",
+"! !Ctrl <Btn1Motion>: call(windowRGB,1,$x,$y,0) \\n\\",
+"! !Ctrl <Btn1Up>: call(windowRGB,1,$x,$y,1) \\n\\",
+"! !Ctrl <Btn2Down>: call(windowRGB,2,$x,$y,0) \\n\\",
+"! !Ctrl <Btn2Motion>: call(windowRGB,2,$x,$y,0) \\n\\",
+"! !Ctrl <Btn2Up>: call(windowRGB,2,$x,$y,1) \\n\\",
+"! !Ctrl <Btn3Down>: call(windowRGB,3,$x,$y,0) \\n\\",
+"! !Ctrl <Btn3Motion>: call(windowRGB,3,$x,$y,0) \\n\\",
+"! !Ctrl <Btn3Up>: call(windowRGB,3,$x,$y,1) \\n\\",
+"",
+"",
+" *colorbar.maxRasters: 1",
+" *colorbar.maxMappings: 1",
+" *colorbar.height: 17",
+" *colorbar.width: 50",
+" *colorbar.borderWidth: 0",
+"}",
+"",
+"",
+"set Resources(panelShell) { \\",
+"",
+" !================================",
+" ! Main Integrated Control Panel",
+" !================================",
+" *panelShell.title: XImtool Control Panel",
+" *panelShell.geometry: 480x630",
+" *panelShell.maxWidth: 480",
+" *panelShell.minWidth: 480",
+" *panelTabs.internalHeight: 3",
+" *panelTabs.internalWidth: 10",
+"",
+" *Text*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *TextBox*font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *List.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *MultiList.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *TextButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *TextToggle.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+"",
+" *display_panel.tabLabel: Display",
+" *display_panel.innerOffset: 5",
+" *print_panel.tabLabel: Print",
+" *print_panel.innerOffset: 5",
+" *load_panel.tabLabel: Load",
+" *load_panel.innerOffset: 5",
+" *save_panel.tabLabel: Save",
+" *save_panel.innerOffset: 5",
+" *info_panel.tabLabel: Info",
+" *info_panel.innerOffset: 5",
+" *tile_panel.tabLabel: Tile",
+" *tile_panel.innerOffset: 5",
+" *wcs_panel.tabLabel: Coords",
+" *wcs_panel.innerOffset: 5",
+"",
+" *panelMenuBar*borderWidth: 0",
+" *panelMenuBar*Command.internalHeight: 4",
+" *panelMenuBar*Command.internalWidth: 15",
+" *panelMenuBar.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" 10 < +inf -10> \\",
+" panelHelp \\",
+" 3 < -3 > \\",
+" panelClose \\",
+" 7 < -7 > \\",
+" } \\",
+" 5 < -5 > \\",
+" }",
+"",
+" *panelHelp.label: Help",
+" *panelClose.label: Dismiss",
+"",
+"",
+" *tabFrame.outerOffset: 3",
+" *tabFrame.innerOffset: 0",
+" *tabFrame.frameWidth: 0",
+" *tabFrame.frameType: chiseled",
+" *panelMenuFrame.outerOffset: 0",
+" *panelMenuFrame.innerOffset: 1",
+" *panelMenuFrame.frameType: raised",
+" *panelMenuFrame.frameWidth: 2",
+" *panel.layout: vertical { \\",
+" panelMenuFrame < +inf -inf * > \\",
+" 3 \\",
+" horizontal { tabFrame < +inf -inf * +inf -inf> } \\",
+" }",
+"} ",
+"",
+"",
+"set Resources(display_panel) { \\",
+"",
+" !================================",
+" ! Main Display Control Panel.",
+" !================================",
+" *controlPanel*internalWidth: 0",
+" *controlPanel*borderWidth: 0",
+"",
+" *TextBox.font: 7x13bold",
+" *TextToggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1",
+" *Command.font: -adobe-times-bold-i-normal-*-12-*-*-*-*-*-iso8859-1",
+" *Toggle.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1",
+" *Label.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *MultiList.font: -adobe-times-medium-r-normal-*-12-*-*-*-*-*-iso8859-1",
+" *toggleZoom.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *centerFrame.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *zoom*Command.font: 7x13bold",
+"",
+" *blinkFrame1.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *blinkFrame2.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *blinkFrame3.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *blinkFrame4.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *matchButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *registerButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *blinkButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+" *autoregButton.font: -adobe-times-medium-r-normal-*-12-*-iso8859-1",
+"",
+" *controlPanel.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" -1 \\",
+" viewBox < +inf -inf * > \\",
+" -1 \\",
+" } \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" -1 \\",
+" enhancementBox < +inf -inf * +inf -inf > \\",
+" -5 \\",
+" vertical { \\",
+" -1 \\",
+" blinkBox < * +inf - inf > \\",
+" 1 \\",
+" optionsBox < * +inff -inff > \\",
+" -1 \\",
+" } \\",
+" -1 \\",
+" } \\",
+" -5 \\",
+" controlBox < +inf * > \\",
+" -5 \\",
+" }",
+"",
+" ! VIEW",
+" ! ------------------",
+" *viewBox.label: View",
+" *viewBox.location: 0 0 410 0",
+" *viewBox.shrinkToFit: True",
+" *viewBox.outerOffset: 7",
+"",
+" *view.layout: vertical { \\",
+" 5 < +inf -5 > \\",
+" horizontal { \\",
+" -1 \\",
+" frameSelect \\",
+" vertical { \\",
+" 3 < -3 > \\",
+" frameDataBox < +inff -100% * +inff -100% > \\",
+" 3 < -3 > \\",
+" } \\",
+" zoomBox \\",
+" -1 \\",
+" } \\",
+" 1 < +inf > \\",
+" viewButtons < +inf -inf * +inf -inf > \\",
+" 5 < +inf -5 > \\",
+" }",
+"",
+" *frameDataBox.frameType: sunken",
+" *frameDataBox.frameWidth: 1",
+" *frameData.width: 150",
+" *frameData.height: 50",
+"",
+" *frameSelect.location: 0 0 72 0",
+" *frameSelect.shrinkToFit: True",
+" *frameSelect.outerOffset: 7",
+" *frameSelect.innerOffset: 2",
+" *frameSelect.frameWidth: 2",
+" *frameSelect*offIcon: diamond0s",
+" *frameSelect*onIcon: diamond1s",
+" *frameSelect*highlightColor: blue",
+" *frameSelect.label: Frame",
+"",
+" *frameBox.layout: vertical { \\",
+" 3 \\",
+" horizontal { -2 frlistBox < * +inff -inff > } \\",
+" 3 < +inf -3 > \\",
+" horizontal { prevFrame < +inf -inf * > 4 nextFrame < +inf -inf * > } \\",
+" }",
+" *framePort.allowVert: True",
+" *framePort.allowHoriz: False",
+" *framePort.useRight: True",
+" *framePort.height: 80",
+"",
+" *frameBox*alignment: left",
+" *frameBox*frameWidth: 0",
+" *frameBox*frame1.label: 1\\ \\ ",
+" *frameBox*frame2.label: 2\\ \\ ",
+" *frameBox*frame3.label: 3\\ \\ ",
+" *frameBox*frame4.label: 4\\ \\ ",
+"",
+" *frameBox*frame5.label: 5\\ \\ ",
+" *frameBox*frame6.label: 6\\ \\ ",
+" *frameBox*frame7.label: 7\\ \\ ",
+" *frameBox*frame8.label: 8\\ \\ ",
+" *frameBox*frame9.label: 9\\ \\ ",
+" *frameBox*frame10.label: 10\\ ",
+" *frameBox*frame11.label: 11\\ ",
+" *frameBox*frame12.label: 12\\ ",
+" *frameBox*frame13.label: 13\\ ",
+" *frameBox*frame14.label: 14\\ ",
+" *frameBox*frame15.label: 15\\ ",
+" *frameBox*frame16.label: 16\\ ",
+" *frameBox*Command.width: 24",
+" *frameBox*prevFrame.label: xxx",
+" *frameBox*nextFrame.label: xxx",
+"",
+" *frameList*location: 0 0 50 20",
+" *frameList.layout: vertical { \\",
+" frame1 < +inf * >\\",
+" frame2 < +inf * >\\",
+" frame3 < +inf * >\\",
+" frame4 < +inf * >\\",
+" frame5 < +inf * >\\",
+" frame6 < +inf * >\\",
+" frame7 < +inf * >\\",
+" frame8 < +inf * >\\",
+" frame9 < +inf * >\\",
+" frame10 < +inf * >\\",
+" frame11 < +inf * >\\",
+" frame12 < +inf * >\\",
+" frame13 < +inf * >\\",
+" frame14 < +inf * >\\",
+" frame15 < +inf * >\\",
+" frame16 < +inf * >\\",
+" }",
+"",
+"",
+" *zoomBox.label: Zoom:",
+" *zoomBox.location: 0 0 160 127",
+" *zoomBox.outerOffset: 7",
+" *zoomBox.shrinkToFit: True",
+" *zoomBox*TextButton.frameWidth: 1",
+" *zoomBox*TextButton.outerOffset: 0",
+"",
+" *controlPanel*zoom*internalWidth: 4",
+" *zoom.layout: vertical { \\",
+" space = ((50% of width zoom) - (50% of width z5)) \\",
+" 1 < +inf > \\",
+" horizontal { \\",
+" vertical { toggleZoom < +inf * +inf > 1 } \\",
+" 1 \\",
+" vertical { 1 < +inf > z5 1 < +inf > z3 0 < +inf > } \\",
+" 1 \\",
+" vertical { zoomIn < +inf * +inf > 1 } \\",
+" } \\",
+" 1 \\",
+" horizontal { \\",
+" 1 < +inf > \\",
+" d8 1 d4 1 d2 1 x1 1 z2 1 z4 1 z8 \\",
+" 1 < +inf > \\",
+" } \\",
+" 1 \\",
+" horizontal { \\",
+" vertical { 1 zoomOut < +inf * +inf > } \\",
+" 1 \\",
+" vertical { 0 < +inf > d3 1 < +inf > d5 1 < +inf > } \\",
+" 1 \\",
+" vertical { 1 centerFrame < +inf * +inf > } \\",
+" } \\",
+" 1 < +inf > \\",
+" }",
+"",
+" *toggleZoom.label: Toggle\\nZoom",
+" *toggleZoom.outerOffset: 2",
+" *toggleZoom.width: 30",
+" *toggleZoom.height: 25",
+"",
+" *zoomIn.label: Zoom\\nIn",
+" *zoomIn.outerOffset: 2",
+" *zoomIn.width: 30",
+" *zoomIn.height: 25",
+"",
+" *x1.label: 1",
+" *z2.label: 2",
+" *z3.label: 3",
+" *z4.label: 4",
+" *z5.label: 5",
+" *z8.label: 8",
+"",
+" *controlPanel*zoomIn.foreground: royalBlue3",
+" *controlPanel*z4.foreground: royalBlue3",
+" *controlPanel*z5.foreground: royalBlue3",
+" *controlPanel*z8.foreground: royalBlue3",
+" *controlPanel*z2.foreground: royalBlue3",
+" *controlPanel*z3.foreground: royalBlue3",
+"",
+" *zoomOut.label: Zoom\\nOut",
+" *zoomOut.outerOffset: 2",
+" *zoomOut.width: 30",
+" *zoomOut.height: 25",
+"",
+" *centerFrame.label: Center",
+" *centerFrame.outerOffset: 2",
+" *centerFrame.width: 30",
+" *centerFrame.height: 25",
+"",
+" *d2.label: 2",
+" *d3.label: 3",
+" *d4.label: 4",
+" *d5.label: 5",
+" *d8.label: 8",
+"",
+" *controlPanel*zoomOut.foreground: mediumVioletRed",
+" *controlPanel*d2.foreground: mediumVioletRed",
+" *controlPanel*d3.foreground: mediumVioletRed",
+" *controlPanel*d4.foreground: mediumVioletRed",
+" *controlPanel*d5.foreground: mediumVioletRed",
+" *controlPanel*d8.foreground: mediumVioletRed",
+"",
+" *viewButtons.location: 0 0 100 80",
+" *viewButtons.layout: horizontal { \\",
+" 2 < -2 > \\",
+" aspect < +inf * > 2 \\",
+" flipX < +inf * > 2 \\",
+" flipY < +inf * > 2 \\",
+" flipXY < +inf * > 2 \\",
+" clearFrame < +inf * > 2 \\",
+" fitFrame < +inf * > \\",
+" 2 < -2 > \\",
+" }",
+" *nextFrame.label: Next Frame",
+" *prevFrame.label: Previous Frame",
+" *fitFrame.label: Fit Frame",
+" *aspect.label: Aspect",
+" *clearFrame.label: Clear Frame",
+" *flipX.label: Flip X",
+" *flipY.label: Flip Y",
+" *flipXY.label: Flip XY",
+"",
+"",
+" ! ENHANCEMENT",
+" ! ------------------",
+" *enhancementBox.label: Enhancement",
+" *enhancementBox.location: 0 0 110 0",
+" *enhancementBox.shrinkToFit: True",
+" *enhancementBox.outerOffset: 7",
+"",
+" *enhance*Viewport.allowVert: True",
+" *enhance*Viewport.allowHoriz: False",
+" *enhance*Viewport.useRight: False",
+" *enhance*Viewport.resizeable: True",
+" *enhance*Scrollbar.width: 17",
+" *enhance*Scrollbar.minimumThumb: 10",
+" *enhance.layout: vertical { \\",
+" 3 < -3 > \\",
+" horizontal { \\",
+" 2 < -2 > \\",
+" colorlistFrame < +inf -inf * +inff -inff > \\",
+" 2 < -2 > \\",
+" } \\",
+" 2 \\",
+" horizontal { \\",
+" 2 < -2 > \\",
+" colordataFrame < +inf -inf * +inf -inf > \\",
+" 2 < -2 > \\",
+" } \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" 2 < -2 > \\",
+" vertical { -1 contrastLabel 3 < -3 > brightnessLabel -1 } \\",
+" 3 < -3 > \\",
+" vertical { \\",
+" -1 \\",
+" contrastSlider < +inf -inf * > \\",
+" 3 < -3 > \\",
+" brightnessSlider < +inf -inf * > \\",
+" -1 \\",
+" } \\",
+" 2 < -2 > \\",
+" } \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" 3 < -3 > \\",
+" invertButton < +inf -inf * > \\",
+" 5 < -5 > \\",
+" optimizeButton < +inf -inf * > \\",
+" 3 < -3 > \\",
+" } \\",
+" 3 < -3 > \\",
+" }",
+"",
+" *enhance*frameType: sunken",
+" *enhance*frameWidth: 1",
+" *enhance*BorderWidth: 0",
+" *enhance*Label.ShadowWidth: 0",
+"",
+" *colorlist.width: 100",
+" *colorlist.height: 98",
+" *colordata.width: 100",
+" *colordata.height: 45",
+" *enhance*colordata.frameWidth: 0",
+" *contrastLabel.label: x",
+" *contrastSlider.location: 0 0 100 17",
+" *brightnessLabel.label: x",
+" *brightnessSlider.location: 0 0 100 17",
+" *invertButton.label: Invert",
+" *optimizeButton.label: Optimize",
+"",
+"",
+" ! ---------------------",
+" ! BLINK/REGISTER",
+" ! ---------------------",
+" *blinkBox.label: Blink/Register",
+" *blinkBox.location: 0 0 235 0",
+" *blinkBox.shrinkToFit: True",
+" *blinkBox.outerOffset: 7",
+" *blinkBox*TextToggle.frameWidth: 1",
+"",
+" *blink.layout: vertical { \\",
+" space = (width blinkFramesLabel - width blinkRateLabel) \\",
+" 3 < -3 > \\",
+" horizontal { \\",
+" 0 \\",
+" blinkFramesLabel \\",
+" 3 < +inf > \\",
+" blinkFrame1 < -50% * > \\",
+" blinkFrame2 < -50% * > \\",
+" blinkFrame3 < -50% * > \\",
+" blinkFrame4 < -50% * > \\",
+" 4 < +inf > \\",
+" blinkPanel < -50% * > \\",
+" blinkReset \\",
+" 2 \\",
+" } \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" $space \\",
+" blinkRateLabel \\",
+" 2 \\",
+" BRframe < +inf * > \\",
+" } \\",
+" 5 < +inf -100% > \\",
+" horizontal { \\",
+" vertical { \\",
+" 2 matchButton < +inf * > 4 < -4 > registerButton < +inf * > \\",
+" } \\",
+" 5 < -5 > \\",
+" vertical { \\",
+" 1 blinkButton < +inf * > 4 < -4 > autoregButton < +inf * > \\",
+" } \\",
+" } \\",
+" }",
+"",
+" *BRlayout.layout: horizontal { \\",
+" BRdecrease \\",
+" BRtext < +inf -100% * > \\",
+" BRincrease \\",
+" }",
+"",
+" *blink.Label.borderWidth: 0",
+" *blink.Label.shadowWidth: 0",
+" *controlPanel*blink*internalWidth: 4",
+" *blink.TextToggle.location: 0 0 102 23",
+" *blink.TextToggle.frameWidth: 1",
+" *blink*TextToggle.highlightColor: yellow",
+" *blink*TextToggle.offIcon: square0s",
+" *blink*TextToggle.onIcon: square1s",
+" *blink*TextToggle.outerOffset: 1",
+" *blink*Command.height: 27",
+" *blink*Arrow.width: 16",
+" *blink*Arrow.height: 25",
+"",
+"",
+" *blinkFramesLabel.label: Frames List:",
+" *blinkFrame1.label: 1",
+" *blinkFrame2.label: 2",
+" *blinkFrame3.label: 3",
+" *blinkFrame4.label: 4",
+" *blinkPanel.label: x",
+" *blinkPanel.width: 20",
+" *blinkReset.label: Reset",
+"",
+" *blinkRateLabel.label: Blink Rate:",
+" *BRframe.frameType: sunken",
+" *BRframe.frameWidth: 1",
+" *BRtext.width: 40",
+" *BRtext.height: 23",
+" *BRdecrease.direction: left",
+" *BRincrease.direction: right",
+" *registerButton.label: Register",
+" *matchButton.label: Match LUTs",
+" *blinkButton.label: Blink",
+" *autoregButton.label: Auto-Register",
+"",
+" ! OPTIONS",
+" ! ---------------------",
+" *optionsBox.label: Options",
+" *optionsBox.location: 0 0 220 0",
+" *optionsBox.shrinkToFit: False",
+" *optionsBox.outerOffset: 7",
+" *optionsBox*offIcon: square0s",
+" *optionsBox*onIcon: square1s",
+" *optionsBox*selectionStyle: multi",
+" *optionsBox*highlightColor: yellow",
+" *optionsBox.TextToggle.location: 0 0 102 20",
+" *optionsBox.TextToggle.frameWidth: 0",
+" *optionsBox.TextToggle.highlightThickness: 0",
+" *optionsBox*alignment: left",
+"",
+" *pannerButton.label: Panner",
+" *coordsBoxButton.label: Coords Box",
+" *autoscaleButton.label: Autoscale",
+" *antialiasButton.label: Antialias",
+" *tileFramesButton.label: Tile Frames",
+" *magnifierButton.label: Magnifier",
+" *warningsButton.label: Warnings",
+" *peakupButton.label: Centroid Peaks",
+" *peakupButton.on: True",
+"",
+" ! CONTROL",
+" ! ----------------------",
+" *controlBox.frameType: chiseled",
+" *controlBox.frameWidth: 2",
+" *controlBox.outerOffset: 7",
+" *controlBox.innerOffset: 5",
+" *controlBox.height: 30",
+"",
+" *control.layout: horizontal { \\",
+" 1 \\",
+" initializeButton < +inf * > \\",
+" 5 < -5 > \\",
+" normalizeButton < +inf * > \\",
+" 80 < +inf -100% > \\",
+" }",
+"",
+" *initializeButton.label: Initialize",
+" *normalizeButton.label: Normalize",
+"}",
+"",
+"",
+"set Resources(print_panel) { \\",
+"",
+" !=====================================",
+" ! Print Setup Panel resources. !",
+" !=====================================",
+" *print_panel*TextToggle.alignment: left",
+" *print_panel*Arrow.width: 16",
+" *print_panel*Arrow.height: 20",
+" *print_panel*TextToggle.frameWidth: 0",
+" *print_panel*TextToggle.height: 20",
+" *print_panel*Label.borderWidth: 0",
+" *print_panel*Label.shadowWidth: 0",
+" *print_panel*TextButton.width: 40",
+" *print_panel*TextButton.height: 25",
+"",
+" *printLayout.borderWidth: 0",
+" *printLayout.layout: vertical { \\",
+" -1 \\",
+" printCmdGroup < +inf * > \\",
+" -1 \\",
+" optGroup < +inf -inf * +inf -inf > \\",
+" -3 \\",
+" cmdGroup < +inf * > \\",
+" -1\\",
+" }",
+"",
+"",
+" ! Print Group resources.",
+" !----------------------------------",
+" *printCmdGroup.borderWidth: 0",
+" *printCmdGroup.outerOffset: 5",
+" *printCmdGroup.label: ",
+" *printCmdGroup.location: 0 0 400 80",
+" *printCmdGroup*offIcon: diamond0s",
+" *printCmdGroup*onIcon: diamond1s",
+" *printCmdGroup*highlightColor: cyan",
+" *printCmdGroup*Frame.frameType: sunken",
+" *printCmdGroup*Frame.frameWidth: 1",
+" *printCmdGroup*Frame.width: 300",
+" *printCmdGroup*Label.justify: right",
+" *printCmdGroup*Text*editType: edit",
+" *printCmdGroup*Text*height: 22",
+" *printCmdGroup*TextToggle.width: 70",
+" *printCmdGroup*shadowWidth: 0",
+" *printCmdGroup*borderWidth: 0",
+" *printCmdLayout.borderWidth: 0",
+" *printCmdLayout.layout: horizontal { \\",
+" labelLayout 5 inputLayout < +inf -inf * > \\",
+" }",
+" *labelLayout.borderWidth: 0",
+" *labelLayout.layout: vertical { 5 toLabel 7 printerLabel }",
+" *printerLabel.label: Print Command:",
+" *toLabel.label: Print To:",
+" *toPrinter.label: Printer",
+" *toPrinter.on: True",
+" *toFile.label: File",
+"",
+" *inputLayout.borderWidth: 0",
+" *inputLayout.layout: horizontal { \\",
+" 3 \\",
+" vertical { \\",
+" 5 \\",
+" horizontal { 5 toPrinter 5 toFile 5 < +inf -inf > } \\",
+" 5 \\",
+" printcmdFrame < +inf -inf * > \\",
+" 5 \\",
+" } \\",
+" 3 \\",
+" }",
+" *printcmd*string: lpr",
+" *printcmd*height: 22",
+" *printcmd*Text*editType: edit",
+"",
+"",
+" ! Main options groups layout resources.",
+" !---------------------------------------",
+" *optGroup.frameWidth: 2",
+" *optGroup.frameType: chiseled",
+" *optGroup.label: ",
+" *optGroup.location: 0 0 400 330",
+" *optGroup.outerOffset: 5",
+" *optGroup.innerOffset: 2",
+" *optLayout*borderWidth: 0",
+" *optLayout.layout: vertical { \\",
+" -1 \\",
+" horizontal { \\",
+" vertical { \\",
+" 5 \\",
+" epsPageGroup < +inf -inf * > \\",
+" optionsGroup < +inf -inf * +inf -inf > \\",
+" -1 \\",
+" } \\",
+" vertical { \\",
+" 5 \\",
+" printColorGroup < +inf -inf * > \\",
+" printerGroup < +inf -inf * > \\",
+" -1 \\",
+" } \\",
+" -1 \\",
+" } \\",
+" 5 \\",
+" horizontal { annOptsGroup < +inf * +inf > -1 } \\",
+" -1 \\",
+" }",
+"",
+"",
+" ! Postscript Options group resources.",
+" ! -----------------------------------",
+" *epsPageGroup.label: Postscript Options",
+" *epsPageGroup.outerOffset: 7",
+" *epsPageGroup.innerOffset: 5",
+" *epsPageGroup.location: 0 0 250 150",
+" *epsPageGroup*offIcon: diamond0s",
+" *epsPageGroup*onIcon: diamond1s",
+" *epsPageGroup*highlightColor: cyan",
+" *epsPage*Label.justify: left",
+" *epsPage.layout: vertical { \\",
+" -1 \\",
+" epsOrientLabel 4 < -4 > \\",
+" horizontal { 25 epsPortButton epsLandButton epsSquareButton -1 } \\",
+" 4 \\",
+" epsSizeLabel -1 \\",
+" horizontal { \\",
+" 25 epsLetterButton epsLegalButton epsA4Button epsB5Button -1 \\",
+" } \\",
+" 10 \\",
+" horizontal { 5 epsScaleLabel 4 ScaleFrame < +inf -inf * > } \\",
+" -1 \\",
+" }",
+"",
+"",
+" ! Page Layout resources.",
+" ! -------------------------------",
+" *epsOrientLabel.label: Orientation:",
+" *epsPortButton.label: Portrait",
+" *epsPortButton.width: 65",
+" *epsLandButton.label: Landscape",
+" *epsLandButton.width: 85",
+" *epsSquareButton.label: Square",
+" *epsSquareButton.width: 70",
+" *epsSquareButton.sensitive: False",
+"",
+" *epsSizeLabel.label: Paper Size:",
+" *epsLetterButton.label: Letter",
+" *epsLetterButton.width: 60",
+" *epsLegalButton.label: Legal",
+" *epsLegalButton.width: 60",
+" *epsA4Button.label: A4",
+" *epsA4Button.width: 50",
+" *epsB5Button.label: B5",
+" *epsB5Button.width: 50",
+"",
+" ! Image scale box resources.",
+" ! -------------------------------",
+" *epsScaleLabel.label: Output Image Scale:",
+" *epsScaleLabel.justify: right",
+" *ScaleFrame.frameType: sunken",
+" *ScaleFrame.frameWidth: 1",
+" *ScaleFrame*shadowWidth: 0",
+" *ScaleLayout.location: 0 0 100 35",
+" *ScaleLayout.label: ",
+" *ScaleLayout.layout: horizontal { \\",
+" SCdecrease SCtext < +inf -100% * > SCincrease \\",
+" }",
+" *SCdecrease.direction: left",
+" *SCtext.width: 75",
+" *SCtext.height: 22",
+" *SCtext.label: 100 %",
+" *SCincrease.direction: right",
+"",
+"",
+" ! Miscellaneous print options box resources.",
+" ! ------------------------------------",
+" *optionsGroup.outerOffset: 7",
+" *optionsGroup.innerOffset: 5",
+" *optionsGroup*onIcon: square1s",
+" *optionsGroup*offIcon: square0s",
+" *optionsGroup.label: Processing Options",
+" *optionsGroup*TextToggle.width: 125",
+" *optionsGroup*TextToggle.highlightColor: yellow",
+" *options.location: 0 0 250 60",
+" *options.frameWidth: 2",
+" *options.layout: horizontal { \\",
+" 5 \\",
+" vertical { -1 epsscaleButton 2 autorotateButton -1 } \\",
+" 3 \\",
+" vertical { -1 aspectButton 2 compressButton -1 } \\",
+" -1 \\",
+" }",
+" *epsscaleButton.label: Auto Scale",
+" *autorotateButton.label: Auto Rotate",
+" *aspectButton.label: Max Aspect",
+" *compressButton.label: RLE Compress",
+" *compressButton.sensitive: False",
+"",
+"",
+" ! Annotation options box resources.",
+" ! ------------------------------------",
+" *annOptsGroup.outerOffset: 7",
+" *annOptsGroup.innerOffset: 5",
+" *annOptsGroup*onIcon: square1s",
+" *annOptsGroup*offIcon: square0s",
+" *annOptsGroup.label: Annotation Options",
+" *annOptsGroup*TextToggle.width: 90",
+" *annOptsGroup*TextToggle.highlightColor: yellow",
+" *annOptsGroup*Frame.frameType: sunken",
+" *annOptsGroup*Frame.frameWidth: 1",
+" *annOptsGroup*Frame.width: 300",
+" *annOptsGroup*Text*editType: edit",
+" *annOpts.frameWidth: 2",
+" *annOpts.location: 0 0 400 70",
+" *annOpts.layout: vertical { \\",
+" 2 \\",
+" horizontal { \\",
+" 5 annotateButton 2 titleButton 2 bordersButton 2 colorbarButton 5 \\",
+" } \\",
+" 3 \\",
+" horizontal { -1 titleLabel 2 titleFrame < +inf -inf * > -1 } \\",
+" -1 \\",
+" }",
+" *annotateButton.label: \\ Annotate",
+" *titleButton.label: \\ Title",
+" *bordersButton.label: \\ Borders",
+" *colorbarButton.label: \\ Colorbar",
+" *titleLabel.label: Title String",
+" *titleString*string: imtitle",
+" *titleString*height: 23",
+" *titleString*Text*editType: edit",
+"",
+"",
+" ! Output color box resources.",
+" ! ------------------------------",
+" *printColorGroup.location: 0 0 150 90",
+" *printColorGroup.outerOffset: 7",
+" *printColorGroup.frameWidth: 2",
+" *printColorGroup*offIcon: diamond0s",
+" *printColorGroup*onIcon: diamond1s",
+" *printColorGroup*highlightColor: cyan",
+" *printColorGroup.innerOffset: 5",
+" *printColorGroup.label: Output Color",
+" *printColorGroup*TextToggle.width: 110",
+" *printColor.frameWidth: 2",
+" *printColor.location: 0 0 250 75",
+" *printColor.layout: horizontal { \\",
+" 1 \\",
+" vertical { -1 prGrayButton 2 prPseudoButton 2 prRGBButton -1 } \\",
+" -1 \\",
+" }",
+" *prGrayButton.label: Grayscale",
+" *prPseudoButton.label: PseudoColor",
+" *prRGBButton.label: RGB",
+"",
+" ! Printer Selection.",
+" ! --------------------------",
+" *printerGroup.label: Printers",
+" *printerGroup.location: 0 0 110 130",
+" *printerGroup.shrinkToFit: True",
+" *printerGroup.outerOffset: 7",
+"",
+" *printers*Viewport.allowVert: True",
+" *printers*Viewport.allowHoriz: False",
+" *printers*Viewport.useRight: True",
+" *printers*Viewport.resizeable: True",
+" *printers*Scrollbar.width: 17",
+" *printers*Scrollbar.minimumThumb: 10",
+" *printers.layout: vertical { \\",
+" 3 < -3 > \\",
+" horizontal { \\",
+" 2 < -2 > \\",
+" printlistFrame < +inf -inf * +inff -inff > \\",
+" 2 < -2 > \\",
+" } \\",
+" 3 < -3 > \\",
+" }",
+"",
+" *printers*frameType: sunken",
+" *printers*frameWidth: 1",
+" *printers*BorderWidth: 0",
+" *printers*Label.ShadowWidth: 0",
+"",
+" *printlist.width: 100",
+" *printlist.height: 78",
+"",
+"",
+" ! Panel command resources.",
+" ! ------------------------------",
+" *cmdGroup.frameType: chiseled",
+" *cmdGroup.frameWidth: 2",
+" *cmdGroup.outerOffset: 5",
+" *cmdGroup.innerOffset: 5",
+" *cmdGroup.label:",
+" *cmdGroup.location: 0 0 150 50",
+" *cmdLayout.borderWidth: 0",
+" *cmdLayout*Command.internalWidth: 12",
+" *cmdLayout.layout: horizontal { \\",
+" 2 \\",
+" okayPrint 1 < +inf > printStatus < +inf -inf * +inf -inf > \\",
+" 2 \\",
+" }",
+" *cmdGroup*TextButton*location: 0 0 80 0",
+" *okayPrint.label: Print",
+"}",
+"",
+"",
+"set Resources(info_panel) { \\",
+"",
+" !--------------------",
+" ! Information Panel",
+" !--------------------",
+" *infoLayout*borderWidth: 0",
+" *infoLayout*Frame.frameType: sunken",
+" *infoLayout*Frame.frameWidth: 1",
+" *infoLayout*Command.internalWidth: 12",
+" *infoLayout*Text*editType: read",
+" *infoLayout*Text*scrollVertical: whenNeeded",
+" *infoLayout*Text*scrollHorizontal: whenNeeded",
+" *infoLayout*Text*displayCaret: False",
+" *infoLayout*Scrollbar.background: #c4c4c4",
+" *infoLayout*Scrollbar.width: 17",
+" *infoLayout*Scrollbar.height: 17",
+"",
+" *infoText.height: 240",
+" *infoText*font: 6x13",
+" *infoLayout.layout: vertical { \\",
+" infoBox < +inf -inf * > \\",
+" }",
+"",
+" *infoBox.label:",
+" *infoBox.outerOffset: 0",
+" *infoBox.innerOffset: 3",
+" *infoBoxL*TextToggle.frameType: raised",
+" *infoBoxL*TextToggle.frameWidth: 1",
+" *infoBoxL*TextToggle*outerOffset: 0",
+" *infoBoxL*TextToggle*innerOffset: 1",
+" *infoBoxL*TextToggle.location: 0 0 100 25",
+" *infoBoxL*TextToggle*onIcon: square1s",
+" *infoBoxL*TextToggle*offIcon: square0s",
+" *infoBoxL*TextToggle*highlightColor: cyan",
+" *infoBoxL.layout: vertical { \\",
+" infoFrame < +inf -inf * +inf -inf > 1 \\",
+" 4 \\",
+" horizontal { \\",
+" infoOptFr < +inf -inf * > 1 \\",
+" infoOptSvr < +inf -inf * > 1 \\",
+" infoOptClients < +inf -inf * > 1 \\",
+" infoOptWCS < +inf -inf * > 1 \\",
+" infoOptIsm < +inf -inf * > 1 \\",
+" infoOptFB < +inf -inf * > \\",
+" }\\",
+" 2 \\",
+" }",
+" *infoOptFr.label: Frame",
+" *infoOptFr.on: True",
+" *infoOptSvr.label: Server",
+" *infoOptWCS.label: WCS",
+" *infoOptIsm.label: ISM",
+" *infoOptClients.label: Clients",
+" *infoOptFB.label: Imtoolrc",
+"}",
+"",
+"",
+"",
+"set Resources(load_panel) { \\",
+"",
+" !-------------------------------",
+" ! File Load Control Panel.",
+" !-------------------------------",
+" *filesLayout*borderWidth: 0",
+" *filesLayout*Group.shrinkToFit: True",
+" *filesLayout*Group.frameType: chiseled",
+" *filesLayout*Frame*frameType: sunken",
+" *filesLayout*Frame*frameWidth: 1",
+" *filesLayout*TextToggle.frameWidth: 0",
+" *filesLayout*TextToggle.height: 28",
+" *filesLayout*TextToggle.alignment: left",
+" *filesLayout*TextToggle.ledtMargin: 3",
+" *filesLayout*SimpleMenu.borderWidth: 1",
+" *filesLayout*SimpleMenu.borderColor: black",
+" *filesLayout*SimpleMenu.foreground: White",
+" *filesLayout*SimpleMenu.background: SteelBlue",
+" *filesLayout*Label.borderWidth: 0",
+" *filesLayout*Label.shadowWidth: 0",
+" *filesLayout.layout: vertical { \\",
+" imlistGroup < +inf -inf * > \\",
+" 3 \\",
+" horizontal { -5 imoptsGroup < +inf -inf * > -5 } \\",
+" -1 \\",
+" loadCmdGroup < +inf -inf * > \\",
+" }",
+"",
+" *imlistGroup.label:",
+" *imlistGroup.frameWidth: 2",
+" *imlistGroup.outerOffset: 2",
+" *imlistLayout*Label.shadowWidth: 0",
+" *imlistLayout*Label.justify: left",
+" *imlistLayout*Command.width: 90",
+" *imlistLayout*Command.height: 23",
+" *imlistLayout*Command.shadowWidth: 1",
+" *imlistLayout*Viewport.allowVert: True",
+" *imlistLayout*Viewport.allowHoriz True",
+" *imlistLayout*Viewport.useRight: True",
+" *imlistLayout*Viewport.useBottom: True",
+" *imlistLayout*Viewport.resizeable: True",
+" *imlistLayout*Scrollbar.height: 17",
+" *imlistLayout*Scrollbar.width: 17",
+" *imlistLayout.layout: vertical { \\",
+" 3 \\",
+" horizontal { \\",
+" 3 \\",
+" rootButton < +inf -inf * > 1 \\",
+" homeButton < +inf -inf * > 1 \\",
+" upButton < +inf -inf * > 1 \\",
+" rescanButton < +inf -inf * > \\",
+" 3 \\",
+" imtemplateLabel 3 imtemplateFrame < +inf -inf * > \\",
+" 3 \\",
+" } \\",
+" 5 \\",
+" horizontal { 1 imlistLabel < +inf -inf * > 1 } \\",
+" imlistFrame < +inf -inf * +inf -inf > \\",
+" 3 \\",
+" dirLabel < +inf -inf * > \\",
+" 3 \\",
+" horizontal { 5 fnameLabel 5 filnamFrame < +inf -inf * > } \\",
+" 3 \\",
+" }",
+" *imtemplateLabel.label: Filter:",
+" *imtemplateText*editType: edit",
+" *imtemplateText*height: 23",
+" *imtemplateText*font: 7x13",
+" !*imageList.width: 100",
+" *imageList*height: 140",
+" *imageList.shadeSurplus: False",
+" *imageList.defaultColumns: 3",
+" *imageList.font: 7x13",
+" *imlistView.resizeable: True",
+" *imlistLabel.height: 0",
+" *imlistLabel.label: xxx",
+" *imlistLabel.justify: left",
+" *imlistLabel.font: *lucida-bold-r*10*",
+" *upButton.label: Up",
+" *rootButton.label: Root",
+" *homeButton.label: Home",
+" *rescanButton.label: Rescan",
+" *dirLabel.label: \\ \\ Directory:",
+" *dirLabel.alignment: left",
+" *fnameLabel.label: Load File:",
+" *fnameText*editType: edit",
+" *fnameText.height: 22",
+"",
+" *imoptsGroup.label: Options",
+" *imoptsGroup.frameWidth: 2",
+" *imoptsGroup.outerOffset: 7",
+" *imoptsGroup*offIcon: square0s",
+" *imoptsGroup*onIcon: square1s",
+" *imoptsGroup*highlightColor: yellow",
+" *imoptsLayout*Label.shadowWidth: 0",
+" *imoptsLayout*Label.justify: left",
+" *imoptsLayout.layout: vertical { \\",
+" 3 \\",
+" horizontal { \\",
+" 3 \\",
+" autoload 6 grayscale \\",
+" 3 < +inf > \\",
+" browseHdrs \\",
+" 3 < +inf > \\",
+" frameLabel 2 frameFrame \\",
+" 3 \\",
+" } \\",
+" 6 \\",
+" horizontal { \\",
+" 3 \\",
+" zscale 6 zrange \\",
+" 3 \\",
+" z1Label z1Frame < +inf * > 2 \\",
+" z2Label z2Frame < +inf * > 2 \\",
+" nsampLabel nsampFrame < +inf * > \\",
+" 3 \\",
+" } \\",
+" 3 \\",
+" }",
+" *grayscale.label: Auto Grayscale",
+" *grayscale.location: 0 0 100 22",
+" *autoload.label: Auto Load",
+" *autoload.location: 0 0 80 22",
+" *autoload.on: True",
+" *browseHdrs.label: List Image Headers",
+" *browseHdrs.location: 0 0 120 22",
+" *browseHdrs.on: False",
+" *zscale.label: Zscale",
+" *zscale.location: 0 0 60 22",
+" *zrange.label: Zrange",
+" *zrange.location: 0 0 60 22",
+" *z1Label.label: z1",
+" *z1Value*width: 60",
+" *z1Value*height: 22",
+" *z1Value*editType: edit",
+" *z2Label.label: z2",
+" *z2Value*width: 60",
+" *z2Value*height: 22",
+" *z2Value*editType: edit",
+" *nsampLabel.label: Nsample",
+" *nsampValue*width: 60",
+" *nsampValue*height: 22",
+" *nsampValue*editType: edit",
+" *frameLabel.label: Frame:\\ ",
+" *frameFrame.width: 50",
+" *frameFrame.resize: False",
+" *frameFrame.label: Current",
+" *frameFrame.font: 6x13",
+" *frameFrame.menuName: loadFrames",
+"",
+"",
+" *loadCmdGroup.label:",
+" *loadCmdGroup*frameWidth: 2",
+" *loadCmdGroup*outerOffset: 5",
+" *loadCmdGroup.outerOffset: 2",
+" *loadCmdGroup*innerOffset: 5",
+" *loadCmdGroup.frameType: sunken",
+" *loadCmdGroup.label:",
+" *loadCmdGroup.location: 0 0 400 45",
+" *loadCmdLayout*Command.internalWidth: 12",
+" *loadCmdLayout.layout: horizontal { \\",
+" 2 \\",
+" filesLoadButton \\",
+" 1 < +inf > \\",
+" filesStatus \\",
+" 2 \\",
+" }",
+" *filesLoadButton.label: Load",
+" *filesStatus.label:",
+"}",
+"",
+"",
+"",
+"set Resources(save_panel) { \\",
+"",
+" !=====================================",
+" ! Save Setup Panel resources. !",
+" !=====================================",
+" *save_panel*TextToggle.alignment: left",
+" *save_panel*TextToggle.frameWidth: 0",
+" *save_panel*TextToggle.height: 20",
+" *save_panel*Label.borderWidth: 0",
+" *save_panel*Label.shadowWidth: 0",
+" *save_panel*TextButton.width: 80",
+"",
+" *saveLayout.borderWidth: 0",
+" *saveLayout.layout: vertical { \\",
+" saveNameGroup < +inf * > \\",
+" saveOptGroup < +inf -inf * > -3 \\",
+" saveCmdGroup < +inf * > \\",
+" }",
+"",
+" ! Save Name Group resources.",
+" !----------------------------------",
+" *saveNameGroup.borderWidth: 0",
+" *saveNameGroup.outerOffset: 5",
+" *saveNameGroup.label:",
+" *saveNameGroup.location: 0 0 400 50",
+" *saveNameGroup*offIcon: diamond0s",
+" *saveNameGroup*onIcon: diamond1s",
+" *saveNameGroup*highlightColor: cyan",
+" *saveNameGroup*Frame.frameType: sunken",
+" *saveNameGroup*Frame.frameWidth: 1",
+" *saveNameGroup*Label.justify: right",
+" *saveNameGroup*Text*editType: edit",
+" *saveNameGroup*shadowWidth: 0",
+" *saveNameGroup*borderWidth: 0",
+" *saveNameLayout.borderWidth: 0",
+" *saveNameLayout.layout: vertical { \\",
+" 2 \\",
+" horizontal { 5 saveLabel 5 fnameFrame < +inf -inf * > 5 } \\",
+" 2 \\",
+" }",
+" *saveLabel.label: File Name:",
+" *saveFile.height: 22",
+"",
+" ! Main options groups layout resources.",
+" !---------------------------------------",
+" *saveOptGroup.frameWidth: 2",
+" *saveOptGroup.frameType: chiseled",
+" *saveOptGroup.label:",
+" *saveOptGroup.location: 0 0 400 140",
+" *saveOptGroup.outerOffset: 5",
+" *saveOptGroup.innerOffset: 0",
+" *saveOptLayout*borderWidth: 0",
+" *saveOptLayout.layout: horizontal { \\",
+" -1 \\",
+" vertical { 5 < -5 > fmtGroup < +inf * +inf > -1 } \\",
+" -1 \\",
+" vertical { \\",
+" 10 < -10 > \\",
+" saveDataBox < +inff -inff * +inff -inff > \\",
+" 5 < -5 > \\",
+" } \\",
+" -1 \\",
+" vertical { 5 < -5 > saveColorGroup < +inf * +inf > -1 } \\",
+" -1 \\",
+" }",
+"",
+" ! Output color box resources.",
+" ! ------------------------------",
+" *saveColorGroup.location: 0 0 140 120",
+" *saveColorGroup.outerOffset: 7",
+" *saveColorGroup.frameWidth: 2",
+" *saveColorGroup*offIcon: diamond0s",
+" *saveColorGroup*onIcon: diamond1s",
+" *saveColorGroup*highlightColor: cyan",
+" *saveColorGroup.innerOffset: 5",
+" *saveColorGroup.label: Output Color",
+" *saveColorGroup*TextToggle.width: 110",
+" *saveColor.frameWidth: 2",
+" *saveColor.layout: horizontal { \\",
+" 3 \\",
+" vertical { 5 svGrayButton 2 svPseudoButton 2 svRGBButton -1 } \\",
+" -1 \\",
+" }",
+" *svGrayButton.label: Grayscale",
+" *svPseudoButton.label: PseudoColor",
+" *svRGBButton.label: RGB",
+"",
+" *saveDataBox.frameType: sunken",
+" *saveDataBox.frameWidth: 1",
+"",
+"",
+" ! Output format box resources.",
+" ! -----------------------------------",
+" *fmtGroup.location: 0 0 140 120",
+" *fmtGroup.outerOffset: 7",
+" *fmtGroup.frameWidth: 2",
+" *fmtGroup*offIcon: diamond0s",
+" *fmtGroup*onIcon: diamond1s",
+" *fmtGroup*TextToggle.width: 55",
+" *fmtGroup*highlightColor: cyan",
+" *fmtGroup.label: File Format",
+" *formats.layout: horizontal { \\",
+" 3 \\",
+" vertical { 5 fitsButton 2 gifButton 2 tiffButton 2 rawButton 1 } \\",
+" 2 < -2 > \\",
+" vertical { 5 epsButton 2 rasButton 2 x11Button 2 jpegButton 1 } \\",
+" -1 \\",
+" }",
+" *rasButton.label: RAS",
+" *gifButton.label: GIF",
+" *jpegButton.label: JPEG",
+" *tiffButton.label: TIFF",
+" *fitsButton.label: FITS",
+" *x11Button.label: X11",
+" *epsButton.label: EPS",
+" *rawButton.label: Raw",
+"",
+" ! Change the sensitivity once these formats are implemented. !",
+" !-------------------------------------------------------------",
+" *jpegButton.sensitive: False",
+" *x11Button.sensitive: False",
+" *rawButton.sensitive: False",
+"",
+"",
+" ! Panel command resources.",
+" ! ------------------------------",
+" *saveCmdLayout.borderWidth: 0",
+" *saveCmdGroup.frameType: chiseled",
+" *saveCmdGroup.frameWidth: 2",
+" *saveCmdGroup.outerOffset: 5",
+" *saveCmdGroup.innerOffset: 5",
+" *saveCmdGroup.label:",
+" *saveCmdGroup.location: 0 0 400 50",
+" *saveCmdLayout*Command.internalWidth: 12",
+" *saveCmdLayout.layout: horizontal { \\",
+" 2 \\",
+" okaySave 1 < +inf -1 > saveStatus < +inf -inf * > \\",
+" 2 \\",
+" }",
+" *okaySave.label: Save",
+"}",
+"",
+"",
+"set Resources(tile_panel) { \\",
+"",
+" *tileOpts.frameType: chiseled",
+" *tileOpts.frameWidth: 2",
+" *tileOpts.outerOffset: 5",
+" *tileOpts.innerOffset: 7",
+" *tileOpts*shrinkToFit: True",
+" *tileOpts*borderWidth: 0",
+"",
+" *toptLayout.layout: vertical { \\",
+" horizontal { -6 tFramesG < +inf -inf * > -6 } \\",
+" horizontal { \\",
+" -1 \\",
+" horizontal { -6 tileMode < * +inf -inf > -6 } \\",
+" vertical { \\",
+" horizontal { -3 userOrientG < +inf -inf * > -3 } \\",
+" horizontal { -3 fillStyle < +inf -inf * > -3 } \\",
+" horizontal { -3 tileLabel < +inf -inf * > -3 } \\",
+" -7 \\",
+" horizontal { -3 geomFrame < +inf -inf * > -3 } \\",
+" } \\",
+" -1 \\",
+" } \\",
+" -4 \\",
+" }",
+" *tileMode.label: Tile Mode",
+" *tileMode.outerOffset: 7",
+" *tileMode.innerOffset: 5",
+" *tileMode*location: 0 0 150 20",
+" *tileMode*TextToggle.outerOffset: 2",
+" *tileMode*TextToggle.innerOffset: 1",
+" *tileMode*TextToggle.frameWidth: 0",
+" *tileMode*TextToggle.leftMargin: 10",
+" *tileMode*TextToggle.rightMargin: 20",
+" *tileMode*TextToggle.onIcon: diamond1s",
+" *tileMode*TextToggle.offIcon: diamond0s",
+" *tileMode*TextToggle.highlightColor: yellow",
+"",
+" *tileDisabled.label: Disabled",
+" *tileManual.label: Manual",
+" *tileBest.label: Best",
+" *tileSquare.label: Square",
+" *tileHorizontal.label: Horizontal",
+" *tileVertical.label: Vertical",
+" *tileRow.label: One Row",
+" *tileCol.label: One Column",
+"",
+" *fillStyle.label: Fill Style",
+" *fillStyle.location: 0 0 160 30",
+" *fillStyle.outerOffset: 7",
+" *fillStyle.innerOffset: 5",
+" *fillStyle.rows: 1",
+" *fillStyle*selectionStyle: multi",
+" *fillStyle*outerOffset: 0",
+" *fillStyle*innerOffset: 1",
+" *fillStyle*leftMargin: 7",
+" *fillStyle*onIcon: square1s",
+" *fillStyle*offIcon: square0s",
+" *fillStyle*highlightColor: yellow",
+" *fillStyle.TextToggle.frameWidth: 0",
+" *fillStyle.TextToggle.location: 0 0 85 23",
+" *byCols.label: Fill by Columns",
+" *bottomUp.label: Fill from Bottom",
+"",
+" *tileLabel.label: Tile Labels",
+" *tileLabel.location: 0 0 175 30",
+" *tileLabel.outerOffset: 7",
+" *tileLabel.innerOffset: 5",
+" *tileLabel.rows: 1",
+" *tileLabel*selection: -1",
+" *tileLabel*outerOffset: 0",
+" *tileLabel*innerOffset: 1",
+" *tileLabel*leftMargin: 7",
+" *tileLabel*onIcon: square1s",
+" *tileLabel*offIcon: square0s",
+" *tileLabel*highlightColor: yellow",
+" *tileLabel.TextToggle.frameWidth: 0",
+" *tileLabel.TextToggle.location: 0 0 85 23",
+" *labelFrames.label: Frameno",
+" *labelImname.label: Img Name",
+" *labelTitles.label: Img Title",
+"",
+" *geomFrame.frameWidth: 0",
+" *geomFrame.frameType: sunken",
+" *geomFrame.outerOffset: 7",
+" *geomFrame.innerOffset: 4",
+" *tileGeometry.width: 220",
+" *tileGeometry.height; 37",
+" *tileGeometry.background: #c4c4c4",
+" *tileGeometry.font: 7x13bold",
+" *tileGeometry.label: Tile Geometry: 1 x 2",
+"",
+" *userOrientG.label: Manual Configuration",
+" *userOrientG.height: 90",
+" *userOrientG.width: 220",
+" *userOrientG.outerOffset: 7",
+" *userOrientG.innerOffset: 5",
+" *userOrientG.shrinkToFit: True",
+" *userOrientG*Frame.frameWidth: 1",
+" *userOrientG*Frame.frameType: sunken",
+" *userOrientG*Text.height: 21",
+" *userOrientG*Text*editType: edit",
+" *userOrientL.borderWidth: 0",
+" *userOrientL.layout: vertical { \\",
+" 1 \\",
+" horizontal { 18 nrowLab < +50% -inf * > nrFrame < +inf -inf * > 5 } \\",
+" 1 \\",
+" horizontal { ncolLab < +50% -inf * > ncFrame < +inf -inf * > 5 } \\",
+" }",
+" *nrowLab.justify: right",
+" *ncolLab.justify: right",
+"",
+" *nrLayout.layout: horizontal {nrdecrease nrtext < +inf -inf * > nrincrease}",
+" *nrdecrease.direction: left",
+" *nrincrease.direction: right",
+" *nrowLab.label: Tile Rows:",
+" *nrtext.background: #adadad",
+" *nrtext.justify: center",
+" *nrtext.font: 7x13bold",
+" *nrtext.label: 1",
+"",
+" *ncLayout.layout: horizontal {ncdecrease nctext < +inf -inf * > ncincrease}",
+" *ncdecrease.direction: left",
+" *ncincrease.direction: right",
+" *ncolLab.label: Tile Columns:",
+" *nctext.background: #adadad",
+" *nctext.justify: center",
+" *nctext.font: 7x13bold",
+" *nctext.label: 2",
+"",
+" *tFramesG.label: Tile Frames",
+" *tFramesG.outerOffset: 7",
+" *tFramesG.innerOffset: 7",
+" *tFrames.borderWidth: 0",
+" *tFrames*Toggle.height: 17",
+" *tFrames.layout: horizontal { \\",
+" tAll \\",
+" 2 \\",
+" tFrame1 tFrame2 tFrame3 tFrame4 tFrame5 \\",
+" tFrame6 tFrame7 tFrame8 tFrame9 tFrame10 \\",
+" tFrame11 tFrame12 tFrame13 tFrame14 tFrame15 tFrame16 \\",
+" 2 \\",
+" tNone \\",
+" }",
+" *tAll.label: All\\ ",
+" *tNone.label: None",
+"}",
+"",
+"",
+"set Resources(wcs_panel) { \\",
+"",
+" !--------------------",
+" ! WCS Readout Panel",
+" !--------------------",
+" *wcsGroup*TextToggle.offIcon: square0s",
+" *wcsGroup*TextToggle.onIcon: square1s",
+"",
+" !*wcsLayout*TextToggle.location: 0 0 160 23",
+" *wcsLayout*TextToggle.height: 23",
+" *wcsLayout*TextToggle.outerOffset: 0",
+" *wcsLayout*Layout.borderWidth: 0",
+" *wcsLayout.borderWidth: 0",
+" *wcsLayout.layout: vertical { \\",
+" 0 < +0 -0 > \\",
+" wcsGroup < +inf -inf * > \\",
+" 5 \\",
+" horizontal { -1 wcsOptGroup < +inf -inf * > -1 } \\",
+" -2 \\",
+" }",
+"",
+" *wcsOptGroup.label:",
+" *wcsOptGroup.outerOffset: 0",
+" *wcsOptGroup.innerOffset: 5",
+" *wcsOptGroup.frameType: chiseled",
+" *wcsOptGroup.frameWidth: 0",
+" *wcsOptLayout.layout: vertical { \\",
+" horizontal { -9 wcsCoords < +inf -inf * > -9 } \\",
+" -3 \\",
+" horizontal { -5 wcsOpts < +inf -inf * > -5 } \\",
+" horizontal { -5 wcsIsmGroup < +inf -inf * > -5 } \\",
+" 1 \\",
+" }",
+"",
+" *wcsOpts.label:",
+" *wcsOpts.width: 265",
+" *wcsOpts.height: 40",
+" *wcsOpts.outerOffset: 3",
+" *wcsOpts.innerOffset: 3",
+" *woLayout*TextToggle.frameWidth: 0",
+" *woLayout*TextToggle.onIcon: square1s",
+" *woLayout*TextToggle.offIcon: square0s",
+" *woLayout*TextToggle.highlightColor: cyan",
+" *woLayout*TextToggle.alignment: left",
+" *woLayout*TextToggle.leftMargin: 5",
+" *woLayout.layout: horizontal { \\",
+" 3 \\",
+" woptLabels < +inf -inf * > 2 \\",
+" woptTitles < +inf -inf * > 2 \\",
+" woptFBinfo < +inf -inf * > 2 \\",
+" woptBPM < +inf -inf * > \\",
+" 3 \\",
+" }",
+" *woptLabels.label: WCS Labels",
+" *woptLabels.on: True",
+" *woptTitles.label: Image Titles",
+" *woptTitles.on: True",
+" *woptFBinfo.label: Frame Buffer Info",
+" *woptFBinfo.on: True",
+" *woptBPM.label: BPM Data",
+" *woptBPM.on: False",
+" *woptLabels.location: 0 0 150 21",
+" *woptTitles.location: 0 0 150 21",
+" *woptFBinfo.location: 0 0 175 21",
+" *woptBPM.location: 0 0 120 21",
+"",
+"",
+" *wcsCoords.label: Readout Values",
+" *wcsCoords.width: 265",
+" *wcsCoords.height: 135",
+" *wcsCoords.outerOffset: 7",
+" *wcsCoords.innerOffset: 3",
+" *wcLayout*TextToggle.offIcon: diamond0s",
+" *wcLayout*TextToggle.onIcon: diamond1s",
+" *wcLayout*TextToggle.highlightColor: yellow2",
+" *wcLayout*TextToggle.shrinkToFit: True",
+" *wcLayout*TextToggle.frameWidth: 0",
+" *wcLayout*TextToggle.label:",
+" *wcLayout*TextToggle.on: True",
+" *wcLayout*Label.justify: right",
+" *wcLayout*Label.font: 7x13bold",
+" *wcLayout*SimpleMenu.borderColor: black",
+" *wcLayout*SimpleMenu.borderWidth: 1",
+" *wcLayout*SimpleMenu.foreground: White",
+" *wcLayout*SimpleMenu.background: SteelBlue",
+" *wcLayout*MenuButton.shadowWidth: 1",
+" *wcLayout*MenuButton.resize: False",
+" *wcLayout.layout: vertical {\\",
+" 1 \\",
+" horizontal { 20 < -20 > wcTitle < +inf -inf * > 20 < -20 > }\\",
+" 1 \\",
+" horizontal { 5 wcLine < +inf -inf * > 5 } \\",
+" 5 \\",
+" horizontal { \\",
+" 10 \\",
+" vertical { 2 wlWcs1 2 wlWcs2 2 wlWcs3 2 wlWcs4 2 } 5 \\",
+" vertical { 1 sysWcs1 1 sysWcs2 1 sysWcs3 1 sysWcs4 1 } 5 \\",
+" vertical { 1 fmtWcs1 1 fmtWcs2 1 fmtWcs3 1 fmtWcs4 1 } 20 \\",
+" vertical { 1 wpWcs1 3 wpWcs2 3 wpWcs3 3 wpWcs4 3 } 20 \\",
+" vertical { 1 wiWcs1 3 wiWcs2 3 wiWcs3 3 wiWcs4 3 } 15 \\",
+" } \\",
+" 3 \\",
+" }",
+" *wcTitle.label: Type\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ Format\\ \\ \\ \\ \\ \\ Panel\\ ImgWin",
+"",
+" *wcLine.height: 2",
+" *wcLine.frameWidth: 2",
+" *wcLine.frameType: ledged",
+"",
+" *wlWcs1.label: First WCS",
+" *wlWcs2.label: Second WCS",
+" *wlWcs3.label: Third WCS",
+" *wlWcs4.label: Fourth WCS",
+" *sysWcs1.label: \\ Image Display\\ ",
+" *sysWcs1.menuName: sysMenu1",
+" *sysWcs2.label: None",
+" *sysWcs2.menuName: sysMenu2",
+" *sysWcs3.label: None",
+" *sysWcs3.menuName: sysMenu3",
+" *sysWcs4.label: None",
+" *sysWcs4.menuName: sysMenu4",
+" *fmtWcs1.label: \\ Sexigesimal\\ ",
+" *fmtWcs1.menuName: fmtMenu1",
+" *fmtWcs2.label: None",
+" *fmtWcs2.menuName: fmtMenu2",
+" *fmtWcs3.label: None",
+" *fmtWcs3.menuName: fmtMenu3",
+" *fmtWcs4.label: None",
+" *fmtWcs4.menuName: fmtMenu4",
+"",
+" *editMenu fmtWcsMenu$i fmtWcs$i $items",
+"",
+" *wcsIsmGroup.label:",
+" *wcsIsmGroup.width: 395",
+" *wcsIsmGroup.height: 50",
+" *wcsIsmGroup.outerOffset: 3",
+" *wcsIsmGroup.innerOffset: 5",
+" *wcsIsmGroup*borderWidth: 0",
+" *wcsIsmLayout.layout: horizontal { \\",
+" wcsIsmLabel 1 wcsIsmFrame < +inf -inf * > 3 wcsIsmInit 1 \\",
+" }",
+" *wcsIsmLabel.label: ISM Command",
+" *wcsIsmFrame.frameType: sunken",
+" *wcsIsmFrame.frameWidth: 1",
+" *wcsIsmFrame.outerOffset: 1",
+" *wcsIsmFrame*height: 23",
+" *wcsIsmCmd*editType: edit",
+" *wcsIsmCmd.displayCaret: True",
+" *wcsIsmInit.label: Initialize",
+" *wcsIsmInit.internalWidth: 7",
+"",
+" *wcsBox*borderWidth: 0",
+" *wcsBox*TextToggle.frameType: raised",
+" *wcsBox*TextToggle.frameWidth: 1",
+" *wcsBox*TextToggle.leftMargin: 2",
+" *wcsBox*borderWidth: 0",
+" *wcsBox.layout: vertical { \\",
+" wcsFrame < +inf -inf * > \\",
+" 2 \\",
+" horizontal { \\",
+" 2 \\",
+" ismToggle < +inf -inf * > 2 \\",
+" pixelTable < +inf -inf * > 2 \\",
+" imageHeader < +inf -inf * > 2 \\",
+" compass < +inf -inf * > 2 \\",
+" wcsOptions < +inf -inf * > \\",
+" 2 \\",
+" } \\",
+" }",
+" *ismToggle.label: ISM Mod",
+" *ismToggle.label: WCS/Pix",
+" *pixelTable.label: Pix Table",
+" *imageHeader.label: Header",
+" *imageHeader.sensitive: False",
+" *compass.label: Compass",
+" *wcsOptions.label: Options",
+"",
+" *wcsGroup.label:",
+" *wcsGroup.outerOffset: 0",
+" *wcsGroup.innerOffset: 5",
+" *wcsGroup.frameType: chiseled",
+" *wcsGroup.frameWidth: 2",
+" *wcsGroup*Text*width: 260",
+" *wcsGroup*Text*height: 17",
+" *wcsGroup*Text*font: 7x13",
+" *wcsGroup*Text*displayCaret: False",
+" *wcsGroup*Text*editType: read",
+" *wcsGroup*Text*background: black",
+" *wcsGroup*Text*foreground: yellow2",
+" *wcsGroup*TextToggle.highlightColor: cyan",
+" *wcsFrame.frameType: sunken",
+" *wcsFrame.frameWidth: 1",
+" *wcsText*background: yellow4",
+" *wcsText.layout: vertical { \\",
+" wtName < +inf -inf * > -3 \\",
+" wtTitle < +inf -inf * > -3 \\",
+" wtFBCfg < +inf -inf * > \\",
+" 1 < -1 > \\",
+" wtWcs1 < +inf -inf * > -3 \\",
+" wtWcs2 < +inf -inf * > -3 \\",
+" wtWcs3 < +inf -inf * > -3 \\",
+" wtWcs4 < +inf -inf * > \\",
+" 1 < -1 > \\",
+" horizontal { \\",
+" wtIPixval < +inf -inf * +inf > 1 \\",
+" wtSPixval < +inf -inf * +inf > 1 \\",
+" wtBPixval < +inf -inf * +inf > \\",
+" } \\",
+" }",
+"}",
+"",
+"",
+"set Resources(blink_panel) { \\",
+"",
+" *blink_panel.geometry: 425x200",
+" *blink_panel.title: Blink/Register Frames",
+"",
+" *brMenuBar*Command.internalHeight: 4",
+" *brMenuBar*Command.internalWidth: 12",
+" *brMenuBar*Command.height: 27",
+" *brMenuBar*borderWidth: 0",
+"",
+" *brMenuBar*Label.font: 7x13bold",
+" *brLayout*Command.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *brRegButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *brReset.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *brMatchButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *brBlinkButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+" *brAregButton.font: -*-helvetica-medium-r-normal-*-12-*-iso8859-1",
+"",
+"",
+" *brMenuBar.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { 10 < +inf -10> brClose 5 } \\",
+" 5 < -5 > \\",
+" }",
+" *brClose.label: Dismiss",
+"",
+" *brMenuFrame.frameType: raised",
+" *brMenuFrame.frameWidth: 2",
+" *bpLayout.layout: vertical { \\",
+" brMenuFrame < +inf -inf * > \\",
+" 1 < -1 > \\",
+" brFrame < +inf -inf * +inf -inf > \\",
+" }",
+"",
+" *brFrame.frameType: chiseled",
+" *brFrame.frameWidth: 2",
+" *brFrame.outerOffset: 4",
+" *brFrame.innerOffset: 4",
+"",
+" *brLayout.borderWidth: 0",
+" *brLayout.layout: vertical { \\",
+" 3 < -3 > \\",
+" horizontal { -3 brFramesG < +inf -inf * > -3 } \\",
+" -5 \\",
+" horizontal { -3 brCmdG < +inf -inf * +inf -inf > -3 } \\",
+" -5 \\",
+" }",
+"",
+" *brCmdG.label:",
+" *brCmdG.outerOffset: 7",
+" *brCmdG.innerOffset: 7",
+" *brCmdG*borderWidth: 0",
+" *brCmd.layout: horizontal { \\",
+" 2 \\",
+" vertical { \\",
+" 2 \\",
+" horizontal { \\",
+" 2 \\",
+" brRateLabel \\",
+" 2 \\",
+" brBRframe < +inf -inf * >\\",
+" 4 \\",
+" brReset \\",
+" 2 \\",
+" } \\",
+" 8 < -8 > \\",
+" horizontal { \\",
+" 4 \\",
+" brMatchButton < +inf -inf * > \\",
+" 5 < -5 > \\",
+" brRegButton < +inf -inf * > \\",
+" 2 \\",
+" } \\",
+" 1 < +inf > \\",
+" } \\",
+" 10 \\",
+" vertical { \\",
+" 2 \\",
+" brBlinkButton < +inf * > \\",
+" 10 < -10 > \\",
+" brAregButton < +inf * > \\",
+" 1 < +inf > \\",
+" } \\",
+" 2 \\",
+" }",
+"",
+" *brFramesG.label: Frames List",
+" *brFramesG.outerOffset: 7",
+" *brFramesG.innerOffset: 7",
+" *brFramesG*SimpleMenu.borderColor: black",
+" *brFramesG*SimpleMenu.borderWidth: 1",
+" *brFramesG*SimpleMenu.foreground: White",
+" *brFramesG*SimpleMenu.background: SteelBlue",
+"",
+" *brFrames.borderWidth: 0",
+" *brFrames.layout: horizontal { \\",
+" 5 < +inf > \\",
+" brFrame1 < +inf * > 1 \\",
+" brFrame2 < +inf * > 1 \\",
+" brFrame3 < +inf * > 1 \\",
+" brFrame4 < +inf * > 1 \\",
+" brFrame5 < +inf * > 1 \\",
+" brFrame6 < +inf * > 1 \\",
+" brFrame7 < +inf * > 1 \\",
+" brFrame8 < +inf * > 1 \\",
+" brFrame9 < +inf * > 1 \\",
+" brFrame10 < +inf * > 1 \\",
+" brFrame11 < +inf * > 1 \\",
+" brFrame12 < +inf * > 1 \\",
+" brFrame13 < +inf * > 1 \\",
+" brFrame14 < +inf * > 1 \\",
+" brFrame15 < +inf * > 1 \\",
+" brFrame16 < +inf * > \\",
+" 5 < +inf > \\",
+" }",
+"",
+" *brBRlayout.layout: horizontal { \\",
+" brBRdecrease \\",
+" brBRtext < +inf -100% * > \\",
+" brBRincrease \\",
+" }",
+"",
+" *blink_panel*TextToggle.location: 0 0 110 23",
+" *blink_panel*TextToggle.frameWidth: 1",
+" *blink_panel*TextToggle.highlightColor: yellow",
+" *blink_panel*TextToggle.offIcon: square0s",
+" *blink_panel*TextToggle.onIcon: square1s",
+" *blink_panel*TextToggle.outerOffset: 0",
+" *blink_panel*TextToggle.innerOffset: 2",
+" *blink_panel*Command.height: 23",
+" *blink_panel*Arrow.width: 16",
+" *blink_panel*Arrow.height: 20",
+"",
+"",
+" *brFramesLabel.label: Frames:",
+" *brFrame1.menuName: frame1Menu",
+" *brFrame2.menuName: frame2Menu",
+" *brFrame3.menuName: frame3Menu",
+" *brFrame4.menuName: frame4Menu",
+" *brFrame5.menuName: frame5Menu",
+" *brFrame6.menuName: frame6Menu",
+" *brFrame7.menuName: frame7Menu",
+" *brFrame8.menuName: frame8Menu",
+" *brFrame9.menuName: frame9Menu",
+" *brFrame10.menuName: frame10Menu",
+" *brFrame11.menuName: frame11Menu",
+" *brFrame12.menuName: frame12Menu",
+" *brFrame13.menuName: frame13Menu",
+" *brFrame14.menuName: frame14Menu",
+" *brFrame15.menuName: frame15Menu",
+" *brFrame16.menuName: frame16Menu",
+" *brReset.label: Reset",
+"",
+" *brRateLabel.label: Rate:",
+" *brBRframe.frameType: sunken",
+" *brBRframe.frameWidth: 1",
+" *brBRtext.width: 40",
+" *brBRtext.height: 23",
+" *brBRdecrease.direction: left",
+" *brBRincrease.direction: right",
+" *brRegButton.label: Register",
+" *brMatchButton.label: Match LUTs",
+" *brBlinkButton.label: Blink",
+" *brAregButton.label: Auto-Register",
+"}",
+"",
+"",
+"set Resources(hdr_panel) { \\",
+"",
+" *hdr_panel.geometry: 550x600",
+" *hdr_panel.title: Image Header",
+"",
+" *hdr_panel*SimpleMenu.borderColor: black",
+" *hdr_panel*SimpleMenu.borderWidth: 1",
+" *hdr_panel*SimpleMenu.foreground: White",
+" *hdr_panel*SimpleMenu.background: SteelBlue",
+"",
+" *hdrMenuFrame.frameType: raised",
+" *hdrMenuFrame.frameWidth: 2",
+" *hdrLayout.layout: vertical { \\",
+" hdrMenuFrame < +inf -inf * > \\",
+" hdrObjGroup < +inf -inf * > \\",
+" hdrTabFrame < +inf -inf * +inf -inf> \\",
+" }",
+"",
+" *hdrMenuBar*borderWidth: 0",
+" *hdrMenuBar*Command.internalHeight: 5",
+" *hdrMenuBar*Command.internalWidth: 12",
+" *hdrMenuBar.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { 10 < +inf -10> hdrClose 7 } \\",
+" 5 < -5 > \\",
+" }",
+" *hdrClose.label: Dismiss",
+"",
+" *hdrObjGroup.label:",
+" *hdrObjGroup.outerOffset: 7",
+" *hdrObjGroup.innerOffset: 4",
+" *hdrObjLayout.borderWidth: 0",
+" *hdrObjLayout.layout: vertical { \\",
+" horizontal { hdrObjLabel 2 hdrObjMenu < +inf -inf * > 2 } \\",
+" }",
+" *hdrObjLabel.label: Image Name:",
+" *hdrObjMenu.label:",
+" *hdrObjMenu.justify: left",
+" *hdrObjMenu.font: 7x13",
+" *hdrObjMenu.menuName: objMenu",
+" *hdrObjMenu.internalWidth: 5",
+" *hdrObjMenu.internalHeight: 1",
+" *hdrObjMenu.shadowWidth: 1",
+"",
+" *hdrHdrGroup.tabLabel: Image Header",
+" *hdrHdrGroup.label:",
+" *hdrHdrGroup.outerOffset: 7",
+" *hdrHdrGroup.innerOffset: 5",
+" *hdrHdrLayout.borderWidth: 0",
+" *hdrHdrLayout.layout: vertical { \\",
+" horizontal { \\",
+" hdrFilter 2 hFindFrame < +inf -inf * > 2 hdrFind 1 hdrClear \\",
+" } \\",
+" 5 \\",
+" hdrText < +inf -inf * +inf -inf > \\",
+" }",
+" *hFindEntry*editType: edit",
+" *hFindEntry*font: 7x13",
+" *hFindEntry*displayCaret: True",
+" *hFindEntry*width: 150",
+" *hFindFrame.frameWidth: 1",
+" *hFindFrame*borderWidth: 0",
+" *hFindFrame.frameType: sunken",
+" *hFindFrame.width: 150",
+" *hFindFrame.height: 23",
+" *hdrFilter.label: Keyword Filter",
+" *hdrFind.label: Search",
+" *hdrClear.label: Clear",
+"",
+" ! Resources if the header text widget is AsciiText",
+"! *hdrText*scrollVertical: Always",
+"! *hdrText*scrollHorizontal: Always",
+"! *hdrText*editType: edit",
+"! *hdrText*font: 7x13",
+"! *hdrText*background: #c4c4c4",
+"! *hdrText*displayCaret: False",
+"! *hdrText*bottomMargin: 10",
+"! *hdrText*Scrollbar.width: 15",
+"! *hdrText*Scrollbar.height: 15",
+"",
+" ! Resources if the header text widget is HTML",
+" *hdrText.width: 600",
+" *hdrText.height: 500",
+" *hdrText.anchorUnderlines: 1",
+" *hdrText.visitedAnchorUnderlines: 1",
+" *hdrText.verticalScrollOnRight: True",
+" *hdrText.plainFont: 7x13",
+" *hdrText.marginWidth: 5",
+" *hdrText.marginHeight: 5",
+"",
+"",
+" *hdrWcsGroup.tabLabel: Image WCS Info",
+" *hdrWcsGroup.label:",
+" *hdrWcsGroup.outerOffset: 5",
+" *hdrWcsGroup.innerOffset: 5",
+" *hdrWcsGroup*Text*scrollVertical: whenNeeded",
+" *hdrWcsGroup*Text*scrollHorizontal: whenNeeded",
+" *hdrWcsGroup*Text*editType: edit",
+" *hdrWcsGroup*Text*displayCaret: False",
+" *hdrWcsGroup*Text*borderWidth: 0",
+" *hdrWcsGroup*Text*editType: edit",
+" *hdrWcsGroup*Text*font: 7x13",
+" *hdrWcsGroup*Text*Scrollbar.width: 15",
+" *hdrWcsGroup*Text*Scrollbar.height: 15",
+" *hdrWcsLayout.borderWidth: 0",
+" *hdrWcsLayout.layout: vertical { \\",
+" 2 < -2 > \\",
+" hdrInfoGroup < +inf -inf * > \\",
+" 2 < -2 > \\",
+" hdrKeywGroup < +inf -inf * +inf -inf > \\",
+" -4 \\",
+" }",
+" *hdrInfoGroup.label: Basic WCS Information",
+" *hdrInfoGroup.outerOffset: 7",
+" *hdrInfoGroup.innerOffset: 0",
+" *hdrIGFrame.frameType: sunken",
+" *hdrIGFrame.frameWidth: 1",
+" *hdrIGText.height: 130",
+"! *hdrIGText*background: black",
+"! *hdrIGText*foreground: yellow2",
+" *hdrIGText*background: #adadad",
+" *hdrIGText*foreground: black",
+" *hdrWcsGroup*hdrIGText*scrollVertical: never",
+" *hdrWcsGroup*hdrIGText*scrollHorizontal: never",
+" *hdrWcsGroup*hdrIGText*font: 7x13",
+" *hdrKeywGroup.label: WCS Header Keywords",
+" *hdrKeywGroup.outerOffset: 7",
+" *hdrKeywGroup.innerOffset: 5",
+" *hdrKGFrame.frameType: sunken",
+" *hdrKGFrame.frameWidth: 1",
+" *hdrKGText*background: #c4c4c4",
+" *hdrKGText*bottomMargin: 10",
+"",
+" *hdrIGText*background: #c4c4c4",
+" *hdrIGFrame.frameWidth: 0",
+"}",
+"",
+"",
+"set Resources(pixel_table) { \\",
+"",
+" *pixel_panel.title: Image Pixel Table",
+" *pixel_panel*SimpleMenu.borderWidth: 1",
+" *pixel_panel*SimpleMenu.borderColor: black",
+" *pixel_panel*SimpleMenu.foreground: White",
+" *pixel_panel*SimpleMenu.background: SteelBlue",
+"",
+" *pixtabMenuBar*borderWidth: 0",
+" *pixtabMenuBar*Command.internalHeight: 4",
+" *pixtabMenuBar*Command.internalWidth: 12",
+" *pixtabMenuBar.layout: vertical { \\",
+" 5 \\",
+" horizontal { \\",
+" 5 \\",
+" pixtabSize 10 < +inf -10> pixtabHelp 5 pixtabClose \\",
+" 7 \\",
+" } \\",
+" 5 \\",
+" }",
+" *pixtabSize.label: Size",
+" *pixtabSize.menuName: pixtabMenu",
+" *pixtabHelp.label: Help",
+" *pixtabHelp.sensitive: False",
+" *pixtabClose.label: Dismiss",
+"",
+" *pixtabMenuFrame.frameType: raised",
+" *pixtabMenuFrame.frameWidth: 2",
+" *pixel_table.layout: vertical { \\",
+" 1 \\",
+" pixtabMenuFrame < +inf -inf * > \\",
+" 1 \\",
+" pixtabFrame < +inf -inf * +inf -inf > \\",
+" 1 \\",
+" }",
+" ",
+"",
+" *pixtabFrame.frameType: raised",
+" *pixtabFrame.frameWidth: 0",
+" *pixtabFrame*borderWidth: 0",
+" *pixtabFrame*font: 6x10",
+" *pixtabFrame*MultiList.font: -*-helvetica-medium-r-normal-*-10-*",
+" *pixtabFrame*Label.font: -*-helvetica-medium-r-normal-*-10-*",
+" *pixtabFrame*TextToggle.font: -*-helvetica-medium-r-normal-*-10-*",
+"",
+" *pixtabFrame*MultiList.forceColumns: True",
+" *pixtabFrame*MultiList.defaultColumns: 5",
+" *pixtabFrame*MultiList.shadeSurplus: False",
+" *pixtabFrame*MultiList.borderWidth: 0",
+" *pixtabFrame*MultiList.rowHeight: 25",
+" *pixtabFrame*MultiList.rowSpacing: 7",
+" *pixtabFrame*MultiList.internalWidth: 7",
+" *pixtabFrame*MultiList.internalHeight: 4",
+" *pixtabFrame*MultiList.width: 410",
+" *pixtabFrame*MultiList.height: 160",
+" *pixtabFrame*MultiList.columnWidth: 50",
+" *pixtabFrame*MultiList.columnSpacing: 2",
+" *pixtabFrame*MultiList.maxSelectable: 1",
+" *pixtabFrame*MultiList.highlightForeground: red",
+" *pixtabFrame*MultiList.highlightBackground: #c4c4c4",
+" *pixtabFrame*MultiList.background: #c4c4c4",
+" *pixtabFrame*TextToggle.background: #c4c4c4",
+"",
+" *pixtabFrame*Label.width: 00",
+" !*pixtabFrame*Label.resize: False",
+"",
+" *meanFrame.frameWidth: 2",
+" *meanFrame.frameType: chiseled",
+" *meanFrame.outerOffset: 0",
+" *meanFrame.width: 120",
+" *meanLabel.label: Mean:",
+" *meanValue.label:",
+" *meanValue.resize: False",
+"",
+" *sigFrame.frameWidth: 2",
+" *sigFrame.frameType: chiseled",
+" *sigFrame.outerOffset: 0",
+" *sigFrame.width: 120",
+" *sigLabel.label: Stdev:",
+" *sigValue.label:",
+" *sigValue.resize: False",
+"",
+" *ptColFrame.frameWidth: 0",
+" *ptColFrame.outerOffset: 0",
+" *ptRowFrame.frameWidth: 0",
+" *ptRowFrame.outerOffset: 0",
+"",
+" *pixtabFrame*ptColLabs.width: 410",
+" *pixtabFrame*ptColLabs.height: 23",
+" *pixtabFrame*ptColLabs.defaultColumns: 5",
+" *pixtabFrame*ptColLabs.forceColumns: True",
+" *pixtabFrame*ptColLabs.columnWidth: 50",
+" *pixtabFrame*ptColLabs.columnSpacing: 2",
+" *pixtabFrame*ptRowLabs.width: 60",
+" *pixtabFrame*ptRowLabs.height: 110",
+" *pixtabFrame*ptRowLabs.defaultColumns: 1",
+" *pixtabFrame*ptRowLabs.forceColumns: True",
+" *pixtabFrame*ptRowLabs.verticalList: True",
+" *pixtabFrame*ptRowLabs.columnWidth: 50",
+" *pixtabFrame*ptRowLabs.columnSpacing: 2",
+" *pixtabFrame*pixtab.verticalList: True",
+"",
+" *ptFrame.outerOffset: 0",
+" *ptFrame.innerOffset: 0",
+" *ptFrame.borderWidth: 0",
+" *ptFrame.frameWidth: 1",
+" *ptFrame.frameType: sunken",
+" *ptLayout.layout: vertical { \\",
+" 3 \\",
+" horizontal { 65 ptColFrame < +inf -inf * > 5 } \\",
+" 1 \\",
+" horizontal { \\",
+" vertical { ptRowFrame< * +inf -inf > 5 } \\",
+" 1 \\",
+" vertical { ptFrame } \\",
+" 5 \\",
+" } \\",
+" 1 \\",
+" horizontal { \\",
+" 2 < +inf > \\",
+" meanLabel meanFrame < +inf -inf * > 2 \\",
+" sigLabel sigFrame < +inf -inf * > \\",
+" 10 \\",
+" } \\",
+" }",
+"}",
+"",
+"",
+"set Resources(help_panel) { \\",
+"",
+" !----------------------",
+" ! Help panel resources.",
+" !----------------------",
+" *help_panel.title: XImtool Help Summary",
+" *help_panel.width: 500",
+" *help_panel.height: 550",
+" *helpLayout*borderWidth: 0",
+" *helpLayout*Command.internalHeight: 4",
+" *helpLayout*Command.internalWidth: 12",
+" *helpLayout*HTML*shadowWidth: 1",
+" *helpLayout*helpText*Scrollbar.shadowWidth: 1",
+"",
+" *helpMenuGroup.label: ",
+" *helpMenuGroup.height: 45",
+" *helpMenuGroup.outerOffset: 0",
+" *helpMenuGroup.innerOffset: 0",
+" *helpMenuGroup.frameType: raised",
+" *helpMenubar.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { 20 < +inf -20 > helpClose 7 } \\",
+" 5 < -5 > \\",
+" }",
+" *helpBack.label: Back",
+" *helpBack.sensitive: False",
+" *helpForward.label: Forward",
+" *helpForward.sensitive: False",
+" *helpHome.label: Home",
+" *helpClose.label: Dismiss",
+"",
+"",
+" *hfEntry*editType: edit",
+" *hfEntry*font: 7x13",
+" *hfEntry*displayCaret: True",
+" *hfFrame.frameWidth: 1",
+" *hfFrame.frameType: sunken",
+" *hfFrame.width: 250",
+" *hfFind.label: Search",
+" *hfFind.shadowWidth: 1",
+" *hfClear.label: Clear",
+" *hfClear.shadowWidth: 1",
+"",
+" *helpLayout.layout: vertical { \\",
+" -1 \\",
+" horizontal { helpMenuGroup < +inf -inf * > } \\",
+" 5 \\",
+" horizontal { \\",
+" 5 \\",
+" helpBack 2 helpForward 2 helpHome \\",
+" 20 < +inf -20 > \\",
+" hfFrame < +inf -inf * > 3 hfFind 1 hfClear \\",
+" 5 \\",
+" } \\",
+" 5 \\",
+" horizontal { helpTextFrame < +inf -inf * +inf -inf > } \\",
+" horizontal { helpInfoLayout < +inf -inf * > } \\",
+" -1 \\",
+" }",
+" *helpTextFrame.frameWidth: 1",
+" *helpTextFrame.frameType: sunken",
+" *helpText.width: 600",
+" *helpText.height: 500",
+" *helpText.anchorUnderlines: 1",
+" *helpText.visitedAnchorUnderlines: 1",
+" *helpText.verticalScrollOnRight: true",
+" *helpText*Scrollbar.shadowWidth: 1",
+" *helpText.plainFont: -adobe-courier-medium-r-normal-*-12-*-*-*-*-*-*-*",
+" *helpText.plainboldFont: -adobe-courier-bold-r-normal-*-12-*-*-*-*-*-*-*",
+" *helpText.plainitalicFont: -adobe-courier-medium-o-normal-*-12-*-*-*-*-*-*-*",
+"! *helpText.boldFont: 6x12bold",
+"",
+"",
+" ! Contact info at the bottom of the panel.",
+" *helpInfoLayout*Label.justify: center",
+" *helpInfoLayout*Label.internalHeight: 0",
+" *helpInfoLayout.layout: horizontal { \\",
+" 5 \\",
+" vertical { 5 helpIRAFLogo 5 } \\",
+" 1 < +inf > \\",
+" vertical { \\",
+" 5 \\",
+" helpInfo1 < +inf -inf * +inf -inf > \\",
+" helpInfo2 < +inf -inf * +inf -inf > \\",
+" helpInfo3 < +inf -inf * +inf -inf > \\",
+" 5 \\",
+" } \\",
+" 1 < +inf > \\",
+" vertical { 5 helpNOAOLogo 5 } \\",
+" 5 \\",
+" }",
+" *helpInfo1.label: XIMTOOL_VERSION",
+" *helpInfo2.label: For help or questions: http://iraf.net",
+" *helpInfo3.label: \\",
+" NOAO is operated by AURA under cooperative agreement with the NSF",
+"",
+" *helpInfoLayout*helpInfo1.font: -*-helvetica-medium-r-normal-*-12-*-*-*",
+" *helpInfoLayout*helpInfo2.font: -*-helvetica-medium-r-normal-*-12-*-*-*",
+" *helpInfoLayout*helpInfo3.font: -*-helvetica-medium-r-normal-*-10-*-*-*",
+"",
+" *helpInfoLayout.helpIRAFLogo.internalWidth: 0",
+" *helpInfoLayout.helpIRAFLogo.internalHeight: 0",
+" *helpInfoLayout.helpIRAFLogo.foreground: SteelBlue",
+" *helpInfoLayout.helpIRAFLogo.background: white",
+" *helpInfoLayout.helpNOAOLogo.internalWidth: 0",
+" *helpInfoLayout.helpNOAOLogo.internalHeight: 0",
+" *helpInfoLayout.helpNOAOLogo.foreground: SteelBlue",
+" *helpInfoLayout.helpNOAOLogo.background: white",
+"}",
+"",
+"set Resources(tcl_panel) { \\",
+"",
+" !--------------------------------",
+" ! Define a debug Tcl shell.",
+" !--------------------------------",
+" *tcl_panel.width: 550",
+" *tcl_panel.height: 180",
+" *tcl_panel.title: Debug TCL Command Entry",
+" *tclLayout*borderWidth: 0",
+" *tclLayout*Frame.frameType: sunken",
+" *tclLayout*Frame.frameWidth: 2",
+" *tclLayout.layout: vertical { \\",
+" 0 < +0 -0 > \\",
+" tclCmdGroup < +inf -inf * > \\",
+" tclFrame < +inf -inf * +inf -inf> \\",
+" 0 < +0 -0 > \\",
+" }",
+" *tclEntry*foreground: black",
+" *tclEntry*editType: edit",
+" *tclEntry*type: string",
+" *tclEntry*font: 7x13",
+" *tclEntry*scrollVertical: Always",
+" *tclEntry*scrollHorizontal: whenNeeded",
+"",
+" *tclCmdGroup.label: ",
+" *tclCmdGroup.outerOffset: 0",
+" *tclCmdGroup.innerOffset: 0",
+" *tclCmd.layout: vertical { \\",
+" 5 \\",
+" horizontal { \\",
+" 5 \\",
+" tclClear 3 \\",
+" tclExecute \\",
+" 10 < +inf -10> \\",
+" tclDismiss \\",
+" 5 \\",
+" } \\",
+" 5 \\",
+" }",
+" *tclClear.label: Clear",
+" *tclExecute.label: Execute",
+" *tclDismiss.label: Dismiss",
+"}",
+"",
+"",
+"set Resources(warning) { \\",
+"",
+" ! ---------------------",
+" ! WARNING dialog.",
+" ! ---------------------",
+" *warning.geometry: +400+300",
+" *warning*borderWidth: 0",
+" *warning*TextBox.frameWidth: 0",
+"",
+" *warn.layout: vertical { \\",
+" 5 < -5 > \\",
+" horizontal { 5 warnFrame < +inf * +inf > 5 } \\",
+" 5 < -5 > \\",
+" horizontal { \\",
+" 10 \\",
+" warnOk < +inf * > \\",
+" 5 < +inf -5 > \\",
+" warnCancel < +inf * > \\",
+" 10 \\",
+" } \\",
+" 5 < -5 > \\",
+" }",
+" *warnOk.label: Okay",
+" *warnCancel.label: Cancel",
+"",
+" *WFlayout.layout: horizontal { \\",
+" 5 < -5 > \\",
+" vertical { 5 < +inf -5 > warnIcon 5 < +inf -5 > } \\",
+" 5 < -5 > \\",
+" warnText < +inf -inf * +inf -inf > \\",
+" 5 < -5 > \\",
+" }",
+"",
+" *warnLabel.label: Warning",
+" *warnLabel.width: 300",
+" *warnLabel.height: 20",
+" *warnFrame.frameType: sunken",
+" *warnFrame.frameWidth: 2",
+" *warnIcon.location: 0 0 40 40",
+" *warnIcon.image: WARNING",
+" *warnText.label: generic warning text",
+" *warnText.width: 270",
+" *warnText.height: 60",
+" *warnText.background: #c4c4c4",
+"}",
+"",
+"",
+"",
+"",
+"set Resources(gui) { \\",
+"",
+" ! GUI resources.",
+" ! ------------------------------",
+" *autoscale: True",
+" *zoomfactors: 1 2 4 8",
+" *displayCoords: True",
+" *displayPanner: True",
+" *displayMagnifier: False",
+" *blinkRate: 1.0",
+" *pannerArea: 150*150",
+" *pannerGeom: -5+5",
+" *magnifierArea: 100*100",
+" *magnifierGeom: +5+5",
+" *wcsboxGeom: -5-5",
+" *maxContrast: 5.0",
+" *showToolBar: False",
+" *showPanelBar: False",
+" *warnings: True",
+" *centerBoxSize: 5",
+" *peakCentroid: True",
+"}",
+"",
+"",
+"",
+"",
+"",
+"################################################################################",
+"# GUI Bootstrap Procedures",
+"################################################################################",
+"",
+"# Initialize the widget tree.",
+"proc InitWidgetTree args \\",
+"{",
+" global Objects Resources Version",
+"",
+"",
+" # Add a new objects description for each of the panels found so we can",
+" # create them by name later rather that with the defaults.",
+"",
+" set guiResources \"\"",
+" foreach obj [array names Objects] {",
+" set guiResources \\",
+" [ format \"%s\\n\\n*%s_objects:%s\\n\" \\",
+" $guiResources $obj $Objects($obj) ]",
+" }",
+"",
+" # Now append all the Resource strings, changing any version strings as",
+" # needed.",
+"",
+" foreach res [array names Resources] {",
+" regsub -all XIMTOOL_VERSION $Resources($res) $Version ver",
+" set guiResources [ format \"%s\\n\\n%s\\n\\n\" $guiResources $ver ]",
+" }",
+"",
+" # Define all of the GUI objects and resources.",
+" appInitialize ximtool XImtool $guiResources",
+"}",
+"",
+"",
+"# Realize a window module, i.e. create it's objects.",
+"proc Realize { module args } \\",
+"{",
+" global Objects",
+"",
+" # Create any widgets for the module. We only do this once and set a",
+" # flag to indicate the objects have been created so we don't do it on",
+" # subsequent realizations.",
+" if { [info exists Objects($module)] } {",
+" createObjects [format \"%s_objects\" $module]",
+" reset-server",
+" }",
+"}",
+"",
+"",
+"# Bootstrap up the GUI.",
+"InitWidgetTree",
+"Realize ximtool",
+"Realize parameters",
+"Realize panelShell",
+"Realize tcl_panel",
+"Realize pixel_table",
+"Realize hdr_panel",
+"Realize blink_panel",
+"Realize help_panel",
+"Realize xpan_panel",
+"Realize xmag_panel",
+"Realize warning",
+"",
+"reset-server",
+"",
+"# Set the gterm widget focus.",
+"send colorbar setGterm ; send colorbar activate",
+"send imagewin setGterm ; send imagewin activate",
+"",
+"# Crank it up.",
+"activate",
+"",
+"",
+"",
+"",
+"##############################################################################",
+"# Utility Procedures.",
+"##############################################################################",
+"",
+"# Utility procedure to test True/False strings in resources.",
+"proc true {v} {expr {$v == \"true\" || $v == \"True\" || $v == \"TRUE\"}}",
+"",
+"# Utility functions.",
+"proc min {a b} { expr {($a < $b) ? $a : $b} }",
+"proc max {a b} { expr {($a > $b) ? $a : $b} }",
+"",
+"# Global variables.",
+"set version \"NOAO/IRAF XImtool Version 2.0BETA\"",
+"",
+"set winWidth [send imagewin get width ] ;# display window width",
+"set winHeight [send imagewin get height] ;# display window height",
+"set appWidth [send display get width ] ;# application window width",
+"set appHeight [send display get height] ;# application window height",
+"set marker none ;# selected marker",
+"set markno 0 ;# used to name new markers",
+"set ruler none ;# selected ruler",
+"set ruleno 0 ;# used to name new rulers",
+"set blinkFrames \"1 2\" ;# list of blink frames",
+"set auto_reg 0",
+"",
+"set panel_up 0 ;# control panel mapped",
+"set help_up 0 ;# help panel mapped",
+"set ism_enable 0 ;# ISM is running",
+"set ism_capable 1 ;# Client is ISM capable",
+"set frameCache(0) \"\" ;# ISM frame cache",
+"",
+"set ctype \"equatorial\" ;# default coord type",
+"set eqtype \"fk5\" ;# default equatorial type",
+"",
+"# Global constants.",
+"set MAX_FRAMES 16 ;# max frame buffers",
+"",
+"# TCL constants",
+"set tcl_precision 8",
+"",
+"",
+"",
+"# Window resize callbacks.",
+"proc winResize {w width height} { ",
+" global winWidth winHeight",
+"",
+" if {$width <= 1 || $height <= 1} \\",
+" return",
+"",
+" set winWidth $width",
+" set winHeight $height ",
+"} ; send imagewin addCallback winResize resize",
+"",
+"proc appResize {w width height} \\",
+"{",
+" global doHcut doVcut cutXPos cutYPos",
+" global appWidth appHeight",
+"",
+" set appWidth $width",
+" set appHeight $height ",
+"",
+" catch {",
+" if {$doHcut} { ",
+" send hcutPlot clearScreen",
+" hcutInit",
+" send hcutAxes1 redraw ; send hcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos ",
+" }",
+" if {$doVcut} { ",
+" send vcutPlot clearScreen",
+" vcutInit",
+" send vcutAxes1 redraw ; send vcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos ",
+" }",
+" }",
+"} ; #send imagewin addCallback appResize resize",
+"",
+"",
+"",
+"# Additional global variables, taking default values from resources.",
+"getResources {",
+" { zoomfactors }",
+" { displayCoords }",
+" { displayPanner }",
+" { displayMagnifier }",
+" { blinkRate }",
+" { pannerArea }",
+" { pannerGeom }",
+" { magnifierArea }",
+" { magnifierGeom }",
+" { wcsboxGeom }",
+" { maxContrast }",
+" { showToolBar }",
+" { showPanelBar }",
+" { warnings }",
+" { centerBoxSize }",
+" { peakCentroid }",
+" { highlight }",
+"}",
+"",
+"set warnings [true $warnings]",
+"set defaultBlinkRate $blinkRate",
+"",
+"# Client state variables (UI parameter objects). Certain of these parameters",
+"# we mirror in Tcl variables here, updating the values with a callback when",
+"# the parameter value changes. Others require special callbacks.",
+"",
+"set frame 1 ;# current display frame",
+"set nframes 0 ;# number of frame buffers",
+"set frames {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} ;# list of image frames",
+"set frameWidth 0 ;# frame buffer width, pixels",
+"set frameHeight 0 ;# frame buffer height, pixels",
+"set frameDepth 8 ;# frame buffer pixel size, bits",
+"set cursorMode 0 ;# true when cursor read pending",
+"",
+"foreach i $frames {",
+" set frameZoomX($i) 0 ;# X zoom factor",
+" set frameZoomY($i) 0 ;# Y zoom factor",
+" set frameCenterX($i) 0 ;# X center of field",
+" set frameCenterY($i) 0 ;# Y center of field",
+" set frameScaleX($i) 0 ;# X scale factor",
+" set frameScaleY($i) 0 ;# Y scale factor",
+" set frameOffsetX($i) 0 ;# X register offset",
+" set frameOffsetY($i) 0 ;# Y register offset",
+" set enhancement($i) none ;# colortable enhancement",
+"}",
+"",
+"",
+"#trace variable frameOffsetX w debug_pvar ;# Debug stuff",
+"#trace variable frameOffsetY w debug_pvar",
+"#trace variable frameZoomX w debug_pvar",
+"#trace variable frameZoomY w debug_pvar",
+"#trace variable frameScaleX w debug_pvar",
+"#trace variable frameScaleY w debug_pvar",
+"",
+"proc debug_pvar { name element op } \\",
+"{",
+" if {$element != \"\"} {",
+" set name ${name}($element)",
+" }",
+" upvar $name x",
+" puts \"Variable $name set to $x\"",
+"}",
+"",
+"",
+"",
+"",
+"################################################################################",
+"# Cut-plot handling routines.",
+"################################################################################",
+"",
+"set doHcut 0",
+"set doVcut 0",
+"set hstate 0",
+"set vstate 0",
+"set plotSpeed 1 ; send plotSpeed set on True",
+"set curJump 1 ; send curJump set on True",
+"set curTrack 1 ; send curTrack set on True",
+"",
+"set cutXPos [expr \"$winWidth / 2\"]",
+"set cutYPos [expr \"$winHeight / 2\"]",
+"set cutXScale 1.0",
+"set cutYScale 1.0",
+"",
+"",
+"",
+"# Change the cursor to the crosshair when in the plot",
+"proc cutCursor { widget event args } \\",
+"{",
+" global doHcut doVcut curTrack",
+"",
+" if {! $curTrack} \\",
+" return",
+"",
+" if { $event == \"enterNotify\" } {",
+" send $widget setCursorType ginMode",
+"",
+" # Disable the update of the graph we're in while in the plot window.",
+" if {$widget == \"hcutPlot\"} { set doHcut 0 } else { set doVcut 0 }",
+" } elseif { $event == \"leaveNotify\" } {",
+" send $widget setCursorType idle",
+"",
+" # Enable the update of the graph we're leaving.",
+" if {$widget == \"hcutPlot\"} { set doHcut 1 } else { set doVcut 1 }",
+" }",
+" cutPlotRefresh",
+"}",
+"foreach w {hcutPlot vcutPlot} {",
+" send $w addEventHandler cutCursor enterWindowMask",
+" send $w addEventHandler cutCursor leaveWindowMask",
+"}",
+"",
+"proc cutPlotRefresh args \\",
+"{",
+" global doHcut doVcut cutXPos cutYPos",
+"",
+" if {$doHcut} {",
+" send hcutPlot clearScreen",
+" hcutInit",
+" send hcutAxes1 redraw ; send hcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos",
+" }",
+" if {$doVcut} {",
+" send vcutPlot clearScreen",
+" vcutInit",
+" send vcutAxes1 redraw ; send vcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos",
+" }",
+"} ; send imagewin addEventHandler cutPlotRefresh enterWindowMask",
+"",
+"proc cutPlotRedraw args \\",
+"{",
+" global doHcut doVcut cutXPos cutYPos",
+"",
+" if {$doHcut} {",
+" send hcutAxes1 redraw ; send hcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos",
+" }",
+" if {$doVcut} {",
+" send vcutAxes1 redraw ; send vcutAxes2 redraw",
+" cutPlots $cutXPos $cutYPos",
+" }",
+"}",
+"",
+"",
+"# Disable the options when we first start up.",
+"#send plotOpts \"set height 1 ; set width 1 ; unmap\"",
+"foreach w {plotOpts hcutFrame vcutFrame} { send $w unmap }",
+"",
+"",
+"# Cut-Plot options callback.",
+"proc doPlotOpts { widget type state args } \\",
+"{",
+" global plotSpeed curJump curTrack doHcut doVcut",
+" global cutXPos cutYPos",
+"",
+" if {$state} { set not 0 } else { set not 1 }",
+"",
+" switch $widget {",
+" plotSpeed { if {$state} {",
+" send plotAccurate set on 0 ; send plotImgPix set on 0",
+" } else {",
+" send plotSpeed set on True ; ",
+" }",
+" set plotSpeed $not",
+" }",
+" plotAccurate { if {$state} {",
+" send plotImgPix set on 0 ; send plotSpeed set on 0",
+" } else {",
+" send plotSpeed set on True ; ",
+" }",
+" set plotSpeed $not",
+" }",
+" plotImgPix { if {$state} {",
+" send plotAccurate set on 0 ; send plotSpeed set on 0",
+" } else {",
+" send plotSpeed set on True ; ",
+" }",
+" set plotSpeed $not",
+" }",
+" curJump { send curSmooth set on $not ; set curJump $state }",
+" curSmooth { send curJump set on $not ; set curJump $not }",
+" curTrack { set curTrack $state }",
+" }",
+"",
+" # Redraw the plots right away.",
+" if {$widget == \"plotSpeed\" || $widget == \"plotAccurate\"} { ",
+" cutPlots $cutXPos $cutYPos",
+" }",
+"}",
+"foreach w { plotSpeed plotAccurate plotImgPix curJump curSmooth curTrack } {",
+" send $w addCallback doPlotOpts ",
+"}",
+"",
+"",
+"# Toggle the display of the horizontal or vertical cut plot windows.",
+"",
+"proc cutPlotToggle { widget type state args } \\",
+"{",
+" global doHcut doVcut cutXPos cutYPos hstate vstate",
+" set debug 0",
+"",
+" set hstate [send hcut get state]",
+" set vstate [send vcut get state]",
+" set w [send display get width]",
+" set h [send display get height]",
+"",
+" if {$debug} { print \" \" ; print [format \"display: %d x %d\\n\" $w $h] }",
+"",
+" if {$widget == \"hcut\"} {",
+" set hfw [expr [send hcutFrame get width] - 4]",
+" set hpw [send hcutPlot get width]",
+" if {$state} {",
+" # Enable the plot and resize the main window",
+" if {$vstate} { ",
+" send plotOpts set width 134 ",
+" }",
+" send hcutFrame \"set width $hpw ; set height 132; map\"",
+" send hcutPlot \"set width $hfw ; set height 128\"",
+" send display \"set height [ expr ($h + 132) ]; set width $w\"",
+" drawHcutAxes 1",
+" setHcutCursor 1",
+" if {$vstate} { ",
+" send plotOpts \"set height 134 ; map\"",
+" vcutInit",
+" }",
+" hcutInit ;# Initialize the plot.",
+" } else {",
+" # Disable the plot and resize the main window",
+" setHcutCursor 0",
+" drawHcutAxes 0",
+" send hcutPlot clearScreen",
+" send plotOpts \"unmap; set height 4\"",
+" send hcutFrame \"unmap; set width $hfw; set height 4\"",
+" send plotOpts \"set width 4\"",
+" send display \"set height [ expr ($h - 128) ] ; set width $w\"",
+" if {$vstate} { ",
+" vcutInit",
+" }",
+" }",
+" set doHcut $state",
+" } else {",
+" set vfh [expr [send vcutFrame get height] - 4]",
+" set vph [send vcutPlot get height]",
+" if {$state} {",
+" # Enable the plot and resize the main window",
+" if {$hstate} { ",
+" send plotOpts set height 134",
+" }",
+" send vcutFrame \"set height $vph ; set width 132 ; map\"",
+" send vcutPlot \"set height $vfh ; set width 128\"",
+" send display \"set height $h; set width [ expr ($w + 132) ]\"",
+" drawVcutAxes 1",
+" setVcutCursor 1",
+" if {$hstate} { ",
+" send plotOpts \"set height 134 ; set width 134; map\"",
+" hcutInit",
+" }",
+" vcutInit ;# Initialize the plot.",
+" } else {",
+" # Disable the plot and resize the main window",
+" setVcutCursor 0",
+" drawVcutAxes 0",
+" send vcutPlot clearScreen",
+" send plotOpts \"unmap; set width 4\"",
+" send vcutFrame \"unmap; set height $vfh; set width 4\"",
+" send plotOpts \"set height 4\"",
+" send display \"set width [ expr ($w - 128) ] ; set height $h\"",
+" if {$hstate} { ",
+" hcutInit",
+" }",
+" }",
+" set doVcut $state",
+" }",
+" ",
+" if {$debug} {",
+" print [format \" hFrame: %d x %d\\n\" \\",
+" [send hcutFrame get width] [send hcutFrame get height] ]",
+" print [format \" hPlot: %d x %d\\n\" \\",
+" [send hcutPlot get width] [send hcutPlot get height] ]",
+" print [format \" vFrame: %d x %d\\n\" \\",
+" [send vcutFrame get width] [send vcutFrame get height] ]",
+" print [format \" vPlot: %d x %d\\n\" \\",
+" [send vcutPlot get width] [send vcutPlot get height] ]",
+" print [format \"state: %d %d\\n\" $hstate $vstate]",
+" print [format \"display: %d x %d\\n\" $w $h]",
+" }",
+"",
+" cutPlots $cutXPos $cutYPos",
+"} ; foreach w { hcut vcut } { send $w addCallback cutPlotToggle }",
+"",
+"",
+"# Draw the cut plots.",
+"proc cutPlots { xpos ypos args } \\",
+"{",
+" global doHcut doVcut cutXPos cutYPos hstate vstate",
+"",
+" catch {",
+" if {$doHcut} {",
+" drawHcutIndicator $xpos",
+" if {$hstate} { plotHcut $xpos $ypos }",
+" }",
+" if {$doVcut} {",
+" drawVcutIndicator $xpos",
+" if {$vstate} { plotVcut $xpos $ypos }",
+" }",
+" }",
+"",
+" set cutXPos $xpos ; set cutYPos $ypos",
+"}",
+"",
+"",
+"################################################################################",
+"# Horizontal Cut-Plot Routines",
+"################################################################################",
+"",
+"set hcutVec {}",
+"",
+"# Initiailize the horizontal cut-plot",
+"proc hcutInit args \\",
+"{",
+" global logz cutXScale winWidth cutXPos cutYPos",
+"",
+" # Just get some dummy pixels, we only want the z1/z2 values so we can ",
+" # initialize the labels.",
+" set xp [expr [send imagewin get width] / 2 ]",
+" set yp [expr [send imagewin get height] / 2 ]",
+" set pix [send client getPixels $xp $yp 2 2 ]",
+" set z1 [lindex $pix 0]",
+" set z2 [lindex $pix 1]",
+"",
+" send hcutPlot getPhysRes xr yr",
+" send hcutPlot setLogRes $xr $yr",
+"",
+" set logx [send imagewin get width]",
+" set logz [expr ($z2 - $z1)]",
+" set cutXScale [expr ($xr * 1.0) / ($logx * 1.0)]",
+"",
+" # Initialize the labels.",
+" send vcutPlot \"setColorIndex 6\"",
+" drawHcutLabels $z1 $z2",
+"}",
+"",
+"# Draw the horizontal cut-plot.",
+"proc plotHcut { xpos ypos } \\",
+"{",
+" global doHcut cutXScale",
+" global hcutVec cutXPos plotSpeed",
+"",
+"",
+" if { ($xpos == 0 && $ypos == 0) || ! $doHcut } \\",
+" return",
+"",
+" # Do the horizontal cut plot.",
+" set width [send imagewin get width]",
+" if {$plotSpeed} {",
+" set pix [send client getPixels 0 $ypos $width 1 2 5 $cutXScale]",
+" } else {",
+" set pix [send client getPixels 0 $ypos $width 1 2 1 $cutXScale]",
+" }",
+" set z1 [lindex $pix 0]",
+" set z2 [lindex $pix 1]",
+" set vec [lrange $pix 2 end]",
+"",
+" # Erase the last plot rather than clear the screen and redraw ",
+" # the new vector.",
+" send hcutPlot setColorIndex background",
+" send hcutPlot drawPolyline $hcutVec",
+" send hcutPlot setColorIndex foreground",
+" send hcutPlot drawPolyline $vec",
+" set hcutVec $vec ;# save for later erasure",
+"",
+" # Mark the cursor position.",
+" drawHcutIndicator $xpos",
+"",
+" # Minimize the screen refreshes to speed things up.",
+" if { [expr \"$ypos % 3\"] == 0} {",
+" catch {",
+" drawHcutLabels $z1 $z2 ;# redraw the labels",
+" }",
+" send hcutAxes1 redraw ;# redraw the axes markers",
+" send hcutAxes2 redraw",
+" }",
+"}",
+"",
+"",
+"# Create markers to indicate axes on the horizontal cut-plot.",
+"proc drawHcutAxes { state } \\",
+"{",
+" if {$state} {",
+" send hcutPlot createMarker hcutAxes1 \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor gray60 \\",
+" lineStyle 0 \\",
+" x 1 \\",
+" y 60 \\",
+" height 30 \\",
+" width 4096 \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+" send hcutPlot createMarker hcutAxes2 \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor gray60 \\",
+" lineStyle 0 \\",
+" x 1 \\",
+" y 1 \\",
+" height 60 \\",
+" width 4096 \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+" } else {",
+" send hcutAxes1 destroy ; send hcutAxes2 destroy",
+" }",
+"}",
+"",
+"# Create a marker to be used as the cursor indicator.",
+"proc setHcutCursor { state } \\",
+"{",
+" if {$state} {",
+" set pts { {252 10} {260 10} {256 1} }",
+"",
+" send hcutPlot createMarker hcutCursor \\",
+" type polygon \\",
+" createMode noninteractive \\",
+" lineColor black \\",
+" fill True \\",
+" fillColor yellow \\",
+" x 256 \\",
+" y 12 \\",
+" width 8 \\",
+" height 10 \\",
+" knotSize 0 \\",
+" activated True \\",
+" visible False \\",
+" sensitive False",
+" send hcutCursor setVertices $pts",
+" send hcutCursor set visible True",
+"",
+" } else {",
+" send hcutCursor destroy",
+" }",
+"}",
+"",
+"# Label the axes on the horizontal cut plot.",
+"proc drawHcutLabels { z1 z2 } \\",
+"{",
+" set mid [expr \"($z2-$z1)/2.0+$z1\"]",
+" set low [expr \"($mid-$z1)/2.0+$z1\"]",
+" set high [expr \"($z2-$mid)/2.0+$mid\"]",
+"",
+" send hcutPlot \"setColorIndex 6 ; \\",
+" drawAlphaText 2 10 [format \"%.1f\" $z2] ; \\",
+" drawAlphaText 2 34 [format \"%.1f\" $high] ; \\",
+" drawAlphaText 2 64 [format \"%.1f\" $mid] ; \\",
+" drawAlphaText 2 94 [format \"%.1f\" $low] ; \\",
+" drawAlphaText 2 120 [format \"%.1f\" $z1]\"",
+"}",
+"",
+"# Draw the cursor position indicator on the horizontal cut plot.",
+"proc drawHcutIndicator { xpos } \\",
+"{",
+" global cutXScale cutXPos",
+"",
+" send hcutCursor move [expr ($xpos * $cutXScale)] 12",
+" set cutXPos $xpos",
+"}",
+"",
+"# Track the cursor while in the cut-graph window.",
+"proc hcutWCSUpdate { x y args } \\",
+"{",
+" global cutYPos curTrack",
+" if {$curTrack} { ",
+" wcsUpdate $x $cutYPos ",
+" }",
+" drawHcutIndicator $x",
+"}",
+"",
+"",
+"",
+"",
+"################################################################################",
+"# Vertical Cut-Plot Routines",
+"################################################################################",
+"",
+"set vcutVec {}",
+"",
+"# Initiailize the vertical cut-plot",
+"proc vcutInit args \\",
+"{",
+" global cutYScale winWidth cutXPos cutYPos",
+"",
+" # Just get some dummy pixels, we only want the z1/z2 values so we can ",
+" # initialize the labels.",
+" set xp [expr [send imagewin get width] / 2 ]",
+" set yp [expr [send imagewin get height] / 2 ]",
+" set pix [send client getPixels $xp $yp 2 2 ]",
+" set z1 [lindex $pix 0]",
+" set z2 [lindex $pix 1]",
+"",
+" send vcutPlot getPhysRes xr yr",
+" send vcutPlot setLogRes $xr $yr",
+"",
+" set logy [send imagewin get height]",
+" set logz [expr ($z2 - $z1)]",
+" set cutYScale [expr ($yr * 1.0) / ($logy * 1.0)]",
+"",
+" # Initialize the labels.",
+" send vcutPlot \"setColorIndex 6; reset\"",
+" drawVcutLabels $z1 $z2",
+"}",
+"",
+"# Draw the horizontal cut-plot.",
+"proc plotVcut { xpos ypos } \\",
+"{",
+" global doVcut cutYScale",
+" global vcutVec cutXPos cutYPos plotSpeed",
+"",
+"",
+" if { ($xpos == 0 && $ypos == 0) || ! $doVcut } \\",
+" return",
+"",
+" # Do the vertical cut plot.",
+" set height [send imagewin get height]",
+" if {$plotSpeed} {",
+" set pix [send client getPixels $xpos 0 1 $height 3 5 $cutYScale]",
+" } else {",
+" set pix [send client getPixels $xpos 0 1 $height 3 1 $cutYScale]",
+" }",
+" set z1 [lindex $pix 0]",
+" set z2 [lindex $pix 1]",
+" set vec [lrange $pix 2 end]",
+"",
+" # Draw the vector.",
+" send vcutPlot setColorIndex background",
+" send vcutPlot drawPolyline $vcutVec",
+" send vcutPlot setColorIndex foreground",
+" send vcutPlot drawPolyline $vec",
+" set vcutVec $vec ;# save for later erasure",
+"",
+" # Mark the cursor position.",
+" drawVcutIndicator $ypos",
+"",
+" # Minimize the screen refreshes to speed things up.",
+" if { [expr \"$xpos % 3\"] == 0} {",
+" catch {",
+" drawVcutLabels $z1 $z2 ;# redraw the labels",
+" }",
+" send vcutAxes1 redraw ;# redraw the axes markers",
+" send vcutAxes2 redraw",
+" }",
+"}",
+"",
+"# Erase the last plot rather than clear the screen and redraw it all. The",
+"# erase is done by redrawing the last vector in the the background color.",
+"proc eraseOldVcut args \\",
+"{",
+" global cutYPos vcutVec",
+"",
+" send vcutPlot setColorIndex background",
+" send vcutPlot drawPolyline $vcutVec",
+" send vcutPlot setColorIndex foreground",
+"}",
+"",
+"# Draw the horizontal cut-plot.",
+"# Create markers to indicate axes on the vertical cut-plot.",
+"proc drawVcutAxes { state } \\",
+"{",
+" if {$state} {",
+" send vcutPlot createMarker vcutAxes1 \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor gray60 \\",
+" lineStyle 0 \\",
+" x 60 \\",
+" y 1 \\",
+" height 4096 \\",
+" width 30 \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+" send vcutPlot createMarker vcutAxes2 \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor gray60 \\",
+" lineStyle 0 \\",
+" x 1 \\",
+" y 1 \\",
+" width 60 \\",
+" height 4096 \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+" } else {",
+" send vcutAxes1 destroy ; send vcutAxes2 destroy",
+" }",
+"}",
+"",
+"# Create a marker to be used as the cursor indicator.",
+"proc setVcutCursor { state } \\",
+"{",
+" if {$state} {",
+" set pts { {10 252} {10 260} {1 256} }",
+"",
+" send vcutPlot createMarker vcutCursor \\",
+" type polygon \\",
+" createMode noninteractive \\",
+" lineColor black \\",
+" fill True \\",
+" fillColor yellow \\",
+" x 12 \\",
+" y 256 \\",
+" width 10 \\",
+" height 8 \\",
+" knotSize 0 \\",
+" activated True \\",
+" visible False \\",
+" sensitive False",
+" send vcutCursor setVertices $pts",
+" send vcutCursor set visible True",
+"",
+" } else {",
+" send vcutCursor destroy",
+" }",
+"}",
+"",
+"# Label the axes on the vertical cut plot.",
+"proc drawVcutLabels { z1 z2 } \\",
+"{",
+" set mid [expr \"($z2-$z1)/2.0+$z1\"]",
+" set low [expr \"($mid-$z1)/2.0+$z1\"]",
+" set high [expr \"($z2-$mid)/2.0+$mid\"]",
+"",
+" # Initialize the label strings and positions.",
+" set labels {}",
+" foreach i [list $z2 $high $mid $low $z1] {",
+" lappend labels [ format \"%.1f\" $i ]",
+" }",
+" set xposns { 2 28 58 88 112 }",
+"",
+" send vcutPlot \"setColorIndex 6\"",
+"",
+" # Draw each label vertically down the position since we can't rotate",
+" # the text.",
+" set xp 0",
+" foreach lab $labels {",
+" set chars [split $lab {} ]",
+" set yp 12",
+" set xpos [lindex $xposns $xp]",
+" foreach ch $chars {",
+" if {$ch == \".\"} { incr yp -4 }",
+" send vcutPlot drawAlphaText $xpos $yp $ch",
+" incr yp 10",
+" }",
+" incr xp",
+" }",
+"}",
+"",
+"",
+"# Draw the cursor position indicator on the horizontal cut plot.",
+"proc drawVcutIndicator { ypos } \\",
+"{",
+" global cutYScale cutYPos",
+"",
+" send vcutCursor move 12 [expr ($ypos * $cutYScale)]",
+" set cutYPos $ypos",
+"}",
+"",
+"",
+"# Track the cursor while in the cut-graph window.",
+"proc vcutWCSUpdate { x y args } \\",
+"{",
+" global cutXPos curTrack",
+" if {$curTrack} { ",
+" wcsUpdate $cutXPos $y ",
+" }",
+" drawVcutIndicator $y",
+"}",
+"",
+"",
+"",
+"################################################################################",
+"# UTILITY ROUTINES",
+"################################################################################",
+"",
+"",
+"# TICSTEP -- Utility routine to compute nice ticmark steps in plots.",
+"# [ NOT CURRENTLY USED. ]",
+"",
+"proc ticstep { range nsteps } \\",
+"{",
+" set t2 0.301029996",
+" set t5 0.698970004",
+" set df [ expr \"$range / double($nsteps + 1)\" ]",
+" if {$df > 0.0} {",
+" set p1 [ expr \"log10(double($df))\" ]",
+" } else {",
+" set p1 [ expr \"log10(double(-$df))\" ]",
+" }",
+" set p2 [ expr \"int($p1)\" ]",
+" set p3 [ expr \"$p1 - $p2\" ]",
+"",
+" if { $p3 < 0.0 } {",
+" set p3 [ expr \"$p2 + 1.0\" ]",
+" set p2 [ expr \"$p2 - 1.0\" ]",
+" }",
+"",
+" if { $p3 < 1.0e-10 } {",
+" set ticstep [ expr \"pow(double(10.0),double($p2))\" ]",
+" } elseif { $p3 > 0. && $p3 <= $t2 } {",
+" set ticstep [ expr \"pow(double(10.0),double($p2 + $t2))\" ]",
+" } elseif { $p3 > $t2 && $p3 <= $t5 } {",
+" set ticstep [ expr \"pow(double(10.0),double($p2 + $t5))\" ]",
+" } elseif { $p3 > $t5 && $p3 <= 1.0 } {",
+" set ticstep [ expr \"pow(double(10.0),double($p2 + 1.))\" ]",
+" } else {",
+" set ticstep $df",
+" }",
+"",
+" set logtic [ expr \"int(log10($ticstep)) - 1\" ]",
+" set scale [ expr \"pow(double(10.0),double($logtic))\" ]",
+" set ticstep [ expr \"int( ($ticstep / $scale) * $scale)\" ]",
+"",
+" if {$ticstep < 0.1} { set ticstep 0.10 }",
+"",
+" return $ticstep",
+"}",
+"",
+"",
+"",
+"# Cursor positioning routines",
+"#----------------------------",
+"",
+"proc move_cursor { xstep ystep args } \\",
+"{",
+" set raster 0",
+" send imagewin getCursorPos rx ry",
+" send imagewin setCursorPos [expr $rx + $xstep] [expr $ry + $ystep] $raster",
+"}",
+"",
+"",
+"# Called when the number of frames changes.",
+"proc setNFrames {param old new} \\",
+"{",
+" global frameMenuDescription nframes frames",
+"",
+" set nframes $new",
+" if {$old != $new} {",
+" foreach i {prevButton nextButton} {",
+" send $i set sensitive [expr \"$nframes > 1\"]",
+" }",
+"",
+" if {$nframes > 0} {",
+"",
+" # Creates the Frames menu on the main image window.",
+" set items { }",
+" for {set i 1} {$i <= $nframes} {incr i} {",
+" set l [format \"%2d\" $i]",
+" lappend items \"$l f.exec \\{send client setFrame $i\\} sensitive \\{[expr \\\"$nframes >= $i\\\"]\\}\"",
+" }",
+" editMenu frameMenu frameButton $items",
+"",
+" # Create the menu for the blink frames list.",
+" set items { }",
+" for {set i 0} {$i <= $nframes} {incr i} {",
+" set j [expr ($i + 1)]",
+" if {$i == 0} {",
+" set s \"\\\"none\\\" f.exec \\{send brFrameBTN set label \\\" \\\"\\}\"",
+" lappend items $s",
+" } else {",
+" set l [format \"%2d\" $i]",
+" lappend items \"$l f.exec \\{send brFrameBTN set label $l\\} sensitive \\{[expr \\\"$nframes >= $i\\\"]\\}\"",
+" }",
+" }",
+" for {set i 1} {$i <= $nframes} {incr i} {",
+" send brFrame$i setSensitive True",
+" send tFrame$i setSensitive True",
+" regsub -all BTN $items $i nmenu",
+" editMenu frame${i}Menu brFrame$i $nmenu",
+" }",
+"",
+" } else {",
+" editMenu frameMenu frameButton $frameMenuDescription",
+"",
+" for {set i 1} {$i <= $nframes} {incr i} {",
+" send brFrame$i setSensitive True",
+" send tFrame$i setSensitive True",
+" editMenu frame${i}Menu brFrame$i $frameMenuDescription",
+" }",
+" }",
+" }",
+"",
+" for {set i 1} {$i <= 16} {incr i} {",
+" if {$i <= $nframes} {",
+" send frame$i map",
+" } else {",
+" send frame$i unmap",
+" }",
+" }",
+"",
+" if {$nframes > 2} {",
+" setAllTileFrames",
+" }",
+"}; send nframes addCallback setNFrames",
+"",
+"",
+"# Set the default main window frame menu.",
+"set frameMenuDescription {",
+" {\" 1\" f.exec \"send client setFrame 1\" sensitive {[expr \"$nframes >= 1\"]} }",
+" {\" 2\" f.exec \"send client setFrame 2\" sensitive {[expr \"$nframes >= 2\"]} }",
+" {\" 3\" f.exec \"send client setFrame 3\" sensitive {[expr \"$nframes >= 3\"]} }",
+" {\" 4\" f.exec \"send client setFrame 4\" sensitive {[expr \"$nframes >= 4\"]} }",
+"}; createMenu frameMenu frameButton $frameMenuDescription",
+"",
+"",
+"",
+"",
+"# Initialize the frame lists panels (blink panel and tile tab).",
+"for {set i 1} {$i <= 16} {incr i} {",
+" send brFrame$i set label [format \"%2d\" $i]",
+" send tFrame$i set label [format \"%2d\" $i]",
+" if {$i <= 4} {",
+" send brFrame$i setSensitive True",
+" send tFrame$i \"setSensitive True ; set state 1\"",
+" } else {",
+" send brFrame$i setSensitive False",
+" send tFrame$i \"setSensitive False ; set state 0\"",
+" }",
+" createMenu frame${i}Menu brFrame$i $frameMenuDescription",
+"}",
+"",
+"",
+"# Called when the frame being displayed changes.",
+"proc frameChanged {param old new} \\",
+"{",
+" global frame",
+"",
+" set frame $new",
+" send frameButton set label [format \"%2d\" $frame]",
+"",
+" # The first time we request frame 5 or higher reset ",
+" # the extra frame buttons on the control panel to make",
+" # them visible.",
+" if {$new >= 5} {",
+" send frlistBox set width 49",
+" }",
+" wcsFmtFBConfig",
+" drawCompass",
+"}; send frame addCallback frameChanged",
+"",
+"",
+"# Called when the frame buffer configuration changes.",
+"proc setFrameSize {param old new} \\",
+"{",
+" global frameWidth frameHeight frameDepth",
+" set frameWidth [lindex $new 0]",
+" set frameHeight [lindex $new 1]",
+" set frameDepth [lindex $new 2]",
+"",
+" wcsFmtFBConfig",
+"}; send frameSize addCallback setFrameSize",
+"",
+"# Called when the current frame is zoomed or panned.",
+"proc setFrameView {param old new} \\",
+"{",
+" global frameZoomX frameZoomY frameCenterX frameCenterY",
+" global frameScaleX frameScaleY frameOffsetX frameOffsetY",
+" global frame auto_reg blinkFrames",
+"",
+" # Update the position.",
+" set frameZoomX($frame) [lindex $new 0]",
+" set frameZoomY($frame) [lindex $new 1]",
+" set frameCenterX($frame) [lindex $new 2]",
+" set frameCenterY($frame) [lindex $new 3]",
+" set frameScaleX($frame) [lindex $new 4]",
+" set frameScaleY($frame) [lindex $new 5]",
+" set frameOffsetX($frame) [lindex $new 6]",
+" set frameOffsetY($frame) [lindex $new 7]",
+"",
+" # If auto-registering is enabled, do it now, but only when we're updating",
+" # the current display frame, and only if that frame is in the framelist.",
+"",
+" if {$auto_reg == 1 && $frame == [send frameButton get label]} {",
+" if {[string first $frame $blinkFrames] != -1} {",
+" send client offsetRegister \\{$blinkFrames\\}",
+" }",
+"",
+" foreach f $blinkFrames {",
+" if {$f != $frame} {",
+" set frameZoomX($f) $frameZoomX($frame)",
+" set frameZoomY($f) $frameZoomY($frame)",
+" set frameCenterX($f) $frameCenterX($frame)",
+" set frameCenterY($f) $frameCenterY($frame)",
+" set frameScaleX($f) $frameScaleX($frame)",
+" set frameScaleY($f) $frameScaleY($frame)",
+" }",
+" }",
+" }",
+" deleteAllRulers",
+"",
+"}; send frameView addCallback setFrameView",
+"",
+"",
+"# Called when the color enhancement for a frame changes.",
+"proc setEnhancement {param old new} \\",
+"{",
+" global enhancement",
+" set enhancement([lindex $new 0]) [lrange $new 1 end]",
+"}; send enhancement addCallback setEnhancement",
+"",
+"# Called when the frame title changes (e.g. frame change or new frame loaded).",
+"proc setTitle {param old new} \\",
+"{",
+" set lab [string trimright $new]",
+" send imageTitle set label $lab",
+"",
+" set image [lindex [ split $lab '-'] 0 ]",
+" wcsFmtImname $image",
+"",
+" set title [lindex [ split $lab '-'] 1 ]",
+" wcsFmtImtitle $title",
+" deleteAllRulers",
+"}; send frameTitle addCallback setTitle",
+"",
+"# Called when the image is flipped in an axis.",
+"proc setFlip {param old new} \\",
+"{",
+" if {$param == \"xflip\"} { ",
+" send xflipButton set state [true $new]",
+" } else {",
+" send yflipButton set state [true $new]",
+" }",
+" deleteAllRulers",
+"}; foreach i {xflip yflip} { send $i addCallback setFlip }",
+"",
+"",
+"# Various general callbacks.",
+"",
+"proc Quit args \\",
+"{",
+" global ism_enable",
+"",
+" if {$ism_enable} {",
+" catch { send wcspix quit }",
+" }",
+" send client Quit ",
+"}",
+"proc nextFrame args { send client nextFrame }",
+"proc prevFrame args { send client prevFrame }",
+"proc setColormap { mapno } { send client setColormap $mapno }",
+"proc xflip args { send client flip x ; flipRegister }",
+"proc yflip args { send client flip y ; flipRegister }",
+"proc xyflip args { send client flip x y ; flipRegister }",
+"proc flipRegister args \\",
+"{",
+" global auto_reg frame blinkFrames",
+"",
+" if {$auto_reg == 1 && $frame == [send frameButton get label]} {",
+" if {[string first $frame $blinkFrames] != -1} {",
+" send client offsetRegister \\{$blinkFrames\\}",
+" }",
+" }",
+"}",
+"",
+"",
+"",
+"# Initialize bitmaps.",
+"createBitmap xflip 16 16 {",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x18, 0x18,",
+" 0x1c, 0x38, 0xfe, 0x7f, 0xfe, 0x7f, 0x1c, 0x38, 0x18, 0x18, 0x10, 0x08,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap yflip 16 16 {",
+" 0x00, 0x00, 0x80, 0x01, 0xc0, 0x03, 0xe0, 0x07, 0xf0, 0x0f, 0x80, 0x01,",
+" 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xf0, 0x0f,",
+" 0xe0, 0x07, 0xc0, 0x03, 0x80, 0x01, 0x00, 0x00}",
+"",
+"createBitmap qmark 16 16 {",
+" 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xf8, 0x0f, 0x18, 0x0c, 0x18, 0x0c,",
+" 0x18, 0x0e, 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,",
+" 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap larrow 16 16 {",
+" 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0xc0, 0x03, 0xe0, 0x1e, 0x70, 0x1e,",
+" 0x38, 0x18, 0x1c, 0x18, 0x1c, 0x18, 0x38, 0x18, 0x70, 0x1e, 0xe0, 0x1e,",
+" 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00}",
+"",
+"createBitmap rarrow 16 16 {",
+" 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x78, 0x07, 0x78, 0x0e,",
+" 0x18, 0x1c, 0x18, 0x38, 0x18, 0x38, 0x18, 0x1c, 0x78, 0x0e, 0x78, 0x07,",
+" 0xc0, 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00}",
+"",
+"createBitmap panel 16 16 {",
+" 0x00, 0x00, 0xf8, 0x1f, 0xf8, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,",
+" 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x98, 0x19, 0x18, 0x18,",
+" 0x18, 0x18, 0x18, 0x18, 0xf8, 0x1f, 0xf8, 0x1f}",
+"",
+"createBitmap brightness 15 15 {",
+" 0x00, 0x00, 0x80, 0x00, 0x84, 0x10, 0xe8, 0x0b, 0x10, 0x04, 0x08, 0x08,",
+" 0x08, 0x08, 0x0e, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x04, 0xe8, 0x0b,",
+" 0x84, 0x10, 0x80, 0x00, 0x00, 0x00}",
+"",
+"createBitmap contrast 15 15 {",
+" 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x30, 0x07, 0x08, 0x0f, 0x08, 0x0f,",
+" 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x08, 0x0f, 0x08, 0x0f, 0x30, 0x07,",
+" 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap bar 10 10 {",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x42, 0x00, 0x7e, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap dot 16 16 {",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01,",
+" 0xe0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap null 16 16 {",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap solid 64 24 {",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}",
+"",
+"catch { send controlButton \"set bitmap panel; addCallback panel\" }",
+"catch { send helpButton \"set bitmap qmark; addCallback Help\" }",
+"send xflipButton \"set bitmap xflip; addCallback xflip\"",
+"send yflipButton \"set bitmap yflip; addCallback yflip\"",
+"send prevButton \"set bitmap larrow; addCallback prevFrame\"",
+"send nextButton \"set bitmap rarrow; addCallback nextFrame\"",
+"send blinkPanel \"set bitmap panel\"",
+"",
+"",
+"",
+"# WINDOW the current frame.",
+"set old_cm_x 0",
+"set old_cm_y 0",
+"",
+"proc windowColormap {x y} \\",
+"{",
+" global winWidth winHeight maxContrast old_cm_x old_cm_y",
+"",
+" # For efficiency we won't compute the sqrt of the distance but instead",
+" # just compare the square. Use a threshold of 6 pixels so when we",
+" # narrow in on the ROI we refine the colormap more precisely.",
+"",
+" set diff [expr (($old_cm_x - $x) * ($old_cm_x - $x)) + \\",
+" (($old_cm_y - $y) * ($old_cm_y - $y))]",
+"",
+" # Keep the old position.",
+" set old_cm_x $x",
+" set old_cm_y $y",
+" if {$diff > 36} {",
+" return",
+" }",
+"",
+" send client windowColormap \\",
+" [expr \"double($x) / $winWidth\"] \\",
+" [expr \"(double($y) - $winHeight / 2.0) / $winHeight * \\",
+" $maxContrast * 2.0\"]",
+"}",
+"",
+"proc updateColormap {x y} \\",
+"{",
+" global winWidth winHeight maxContrast old_cm_x old_cm_y",
+"",
+" set old_cm_x $x",
+" set old_cm_y $y",
+" send client updateColormap \\",
+" [expr \"double($x) / $winWidth\"] \\",
+" [expr \"(double($y) - $winHeight / 2.0) / $winHeight * \\",
+" $maxContrast * 2.0\"]",
+"}",
+"",
+"",
+"",
+"# WINDOW the current frame, but only one color at a time.",
+"proc windowRGB {color x y save_flag} \\",
+"{",
+" global winWidth winHeight maxContrast",
+"",
+" send client windowRGB $color \\",
+" [expr \"double($x) / $winWidth\"] \\",
+" [expr \"(double($y) - $winHeight / 2.0) / $winHeight * \\",
+" $maxContrast * 2.0\"] $save_flag",
+"}",
+"",
+"",
+"# ZOOM and PAN.",
+"set xcen 0",
+"set ycen 0",
+"foreach i $frames {set zoomindex($i) 0}",
+"set nzoomfactors 0",
+"foreach i $zoomfactors {",
+" set zoomfactor($nzoomfactors) $i",
+" incr nzoomfactors",
+"}",
+"",
+"# Zoom or pan image at given center.",
+"proc zoom {x y} \\",
+"{",
+" global xcen ycen frame",
+" global zoomindex zoomfactor",
+" global nzoomfactors",
+"",
+" set rx $x; set ry $y",
+" set raster 0",
+"",
+" # Convert raw screen coordinates to frame buffer raster coordinates.",
+" send imagewin unmapPixel $x $y raster rx ry",
+"",
+" # Select a pixel.",
+" set rx [expr \"int ($rx)\"]",
+" set ry [expr \"int ($ry)\"]",
+"",
+" # If the pointer did not move (much) zoom the image, otherwise",
+" # pan it.",
+"",
+" send imagewin setCursorType busy",
+" if {sqrt(pow($x-$xcen, 2) + pow($y-$ycen, 2)) < 4} {",
+" set zoomindex($frame) [expr [incr zoomindex($frame)] % $nzoomfactors]",
+" set mag $zoomfactor($zoomindex($frame))",
+" send client zoom $mag $mag $rx $ry",
+" } else {",
+" send client pan $rx $ry",
+" set xcen $x",
+" set ycen $y",
+" }",
+"",
+" # Move the pointer so that it tracks the object feature the user",
+" # selected.",
+"",
+" send imagewin setCursorPos $rx $ry $raster",
+" send imagewin getCursorPos xcen ycen",
+" send imagewin setCursorType idle",
+"}",
+"",
+"",
+"# Zoom using a marker to indicate the region to be displayed.",
+"proc zoomMarker {marker aspect} \\",
+"{",
+" global xcen ycen frame",
+" global winWidth winHeight",
+" global zoomindex nzoomfactors",
+" global auto_reg frame frameOffsetX frameOffsetY",
+"",
+" # getRegion returns: \"rectangle raster x y width height rotangle\".",
+" set region [send $marker getRegion unmap]",
+"",
+" set raster [lindex $region 1]",
+" set xcen [expr \"int([lindex $region 2]) + 0.5\"]",
+" set ycen [expr \"int([lindex $region 3]) + 0.5\"]",
+" set snx [expr \"[lindex $region 4] * 2\"]",
+" set sny [expr \"[lindex $region 5] * 2\"]",
+"",
+" # Compute the magnification ratio.",
+" set xmag [expr \"$winWidth / $snx\"]",
+" set ymag [expr \"$winHeight / $sny\"]",
+" if {$aspect == \"equal\"} {",
+" set mag [expr \"($xmag < $ymag) ? $xmag : $ymag\"]",
+" set xmag $mag; set ymag $mag",
+" }",
+"",
+" # Zoom the image.",
+" send client zoomAbs \\",
+" $xmag $ymag $xcen $ycen \\",
+" $frameOffsetX($frame) $frameOffsetY($frame)",
+"",
+" # The following causes a button2 to redisplay the full image.",
+" send imagewin setCursorPos $xcen $ycen $raster",
+" send imagewin getCursorPos xcen ycen",
+" set zoomindex($frame) [expr \"$nzoomfactors - 1\"]",
+"}",
+"",
+"# Pan the display frame one width/height in a given direction.",
+"proc moveFrame { xs ys args } \\",
+"{",
+" global winWidth winHeight frame",
+" global frameWidth frameHeight",
+" global frameZoomX frameZoomY frameCenterX frameCenterY",
+" global frameOffsetX frameOffsetY",
+"",
+" # Get the step size for the new position.",
+" set xstep_size [ expr \"$xs * $winWidth / $frameZoomX($frame)\" ]",
+" set ystep_size [ expr \"$ys * $winHeight / $frameZoomY($frame)\" ]",
+"",
+" # Set the boundaries so we only move up to the edges.",
+" set xl [ expr \"($winWidth / $frameZoomX($frame)) / 2 + 1\" ]",
+" set yl [ expr \"($winHeight / $frameZoomY($frame)) / 2 + 1\" ]",
+" set xu [ expr \"$frameWidth - $xl\" ]",
+" set yu [ expr \"$frameHeight - $yl\" ]",
+"",
+" # Set the new center position.",
+" set nxc [ expr \"$frameCenterX($frame) + $xstep_size\" ]",
+" set nyc [ expr \"$frameCenterY($frame) + $ystep_size\" ]",
+" if {$nxc < $xl} { set nxc $xl }",
+" if {$nxc > $xu} { set nxc $xu }",
+" if {$nyc < $yl} { set nyc $yl }",
+" if {$nyc > $yu} { set nyc $yu }",
+"",
+" # Finally, send the command to move the frame.",
+" send client zoomAbs \\",
+" $frameZoomX($frame) $frameZoomY($frame) $nxc $nyc \\",
+" $frameOffsetX($frame) $frameOffsetY($frame)",
+"}",
+"",
+"proc resetView {param old new} {",
+" global zoomindex xcen ycen frames",
+" global frameWidth frameHeight",
+"",
+" if {$new == \"done\"} {",
+" foreach i $frames {",
+" send client setFrame $i",
+" set xcen [expr $frameWidth / 2]",
+" set ycen [expr $frameHeight / 2]",
+" send client zoom 1 1 $xcen $ycen",
+" set zoomindex($i) 0",
+" send client setColormap Grayscale",
+" normalize",
+" }",
+" send client setFrame 1",
+" }",
+"}; #send initialize addCallback resetView",
+"",
+"",
+"# CURSOR READ stuff.",
+"proc setCursorMode {param old new} \\",
+"{",
+" global cursorMode",
+"",
+" if {$new == \"on\"} {",
+" send imagewin \"activate; setCursorType ginMode\"",
+" set cursorMode 1",
+" } elseif {$new == \"off\"} {",
+" send imagewin \"setCursorType idle; deactivate\"",
+" set cursorMode 0",
+" }",
+"}",
+"",
+"proc keyInput {widget event sx sy data} \\",
+"{",
+" global cursorMode frame",
+"",
+" if {!$cursorMode || $event != \"keyPress\"} \\",
+" return",
+" if {[lindex $data 0] == \"??\"} \\",
+" return",
+"",
+" # Convert raw screen coordinates to raster pixel coordinates.",
+" send imagewin unmapPixel $sx $sy raster rx ry",
+"",
+" # Return the cursor value and exit cursor mode.",
+" send client retCursorVal $rx $ry $frame 1 [lindex $data 0]",
+"}",
+"",
+"proc resetCursorMode args {",
+" global cursorMode frame",
+" if {$cursorMode} {",
+" send imagewin getCursorPos x y",
+" send client retCursorVal $x $y $frame 1 ^D",
+" }",
+"}; send initialize addCallback resetCursorMode",
+"",
+"send cursorMode addCallback setCursorMode",
+"send imagewin addCallback keyInput input",
+"",
+"",
+"# MARKER stuff. The active marker is determined by the global variable",
+"# \"marker\", which is the marker the pointer is in, or which the pointer",
+"# was most recently in.",
+"",
+"# Translations when pointer is inside marker.",
+"set markerTranslations { \\",
+"!Shift <Btn1Motion>: m_rotateResize()",
+" <Btn1Motion>: m_moveResize()",
+" !Shift <Btn1Down>: m_raise() m_markpos()",
+" <Btn1Down>: m_raise() m_markposAdd()",
+" <Btn1Up>: m_redraw() m_destroyNull()",
+" <Btn2Down>: m_lower()",
+" <Btn3Down>: popup(markerMenu)",
+" <Btn3Up>: popdown(markerMenu)",
+" !Ctrl <Key>b: call(prevFrame,$name)",
+" !Ctrl <Key>f: call(nextFrame,$name)",
+" !Ctrl <Key>h: call(move_cursor,-1,0)",
+" !Ctrl <Key>j: call(move_cursor,0,1)",
+" !Ctrl <Key>k: call(move_cursor,0,-1)",
+" !Ctrl <Key>l: call(move_cursor,1,0)",
+" !Ctrl <Key>n: call(normalize)",
+" !Ctrl <Key>c: call(cpZoomAction,centerFrame)",
+" !Ctrl <Key>i: call(cpInvert)",
+" !Ctrl <Key>m: call(cpMatchFrames)",
+" !Ctrl <Key>r: call(cpRegisterFrames)",
+" !Ctrl <Key>p: call(togglePanner)",
+" !Alt <Key>1: call(cpSetFrame,frame1)",
+" !Alt <Key>2: call(cpSetFrame,frame2)",
+" !Alt <Key>3: call(cpSetFrame,frame3)",
+" !Alt <Key>4: call(cpSetFrame,frame4)",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed)",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed)",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed)",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed)",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed)",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed)",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed)",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed)",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed)",
+" <Key>BackSpace: m_deleteDestroy()",
+" <Key>Delete: m_deleteDestroy()",
+" <KeyPress>: m_input()",
+" <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)",
+"}",
+"",
+"# Popup menu in effect when inside marker.",
+"createMenu markerMenu imagewin {",
+" { Marker f.title }",
+" { f.dblline }",
+" { Zoom f.exec {",
+" zoomMarker $marker equal",
+" send $marker destroy",
+" } }",
+" { Fill f.exec {",
+" zoomMarker $marker fill",
+" send $marker destroy",
+" } }",
+" { Print f.exec {",
+" send $marker getRect interior x0 y0 nx ny",
+" setPrintCorners $x0 [expr $y0 + $ny -1] \\",
+" [expr $x0 + $nx -1] $y0",
+" send client print $x0 $y0 $nx $ny",
+" } }",
+" { Save f.exec {",
+" send imagewin setCursorType busy",
+" send $marker getRect interior x0 y0 nx ny",
+" send client save $x0 $y0 $nx $ny",
+" send imagewin setCursorType idle",
+" } }",
+" { Info f.exec {",
+" send infoText append \\",
+" [format \"%s\\n\" [send $marker getRegion unmap]]",
+" } }",
+" { Unrotate f.exec {",
+" send $marker setAttribute rotangle 0",
+" } }",
+" { f.dblline }",
+" { Color f.menu markerColor }",
+" { Type f.menu markerType }",
+" { f.dblline }",
+" { Destroy f.exec {",
+" send $marker destroy",
+" } }",
+"}",
+"",
+"createMenu markerType markerMenu {",
+" { Type f.title }",
+" { f.dblline }",
+" { Rectangle f.exec \"m_setType $marker rectangle\" }",
+" { Box f.exec \"m_setType $marker box\" }",
+" { Circle f.exec \"m_setType $marker circle\" }",
+" { Ellipse f.exec \"m_setType $marker ellipse\" }",
+" { Polygon f.exec \"m_setType $marker polygon\" }",
+"}",
+"",
+"createMenu markerColor markerMenu {",
+" { Color f.title }",
+" { f.dblline }",
+" { \"\" f.exec \"m_setColor $marker black\"",
+" bitmap solid foreground black }",
+" { \"\" f.exec \"m_setColor $marker white\" ",
+" bitmap solid foreground white }",
+" { \"\" f.exec \"m_setColor $marker red\" ",
+" bitmap solid foreground red }",
+" { \"\" f.exec \"m_setColor $marker green\" ",
+" bitmap solid foreground green }",
+" { \"\" f.exec \"m_setColor $marker blue\" ",
+" bitmap solid foreground blue }",
+" { \"\" f.exec \"m_setColor $marker magenta\" ",
+" bitmap solid foreground magenta }",
+" { \"\" f.exec \"m_setColor $marker cyan\" ",
+" bitmap solid foreground cyan }",
+" { \"\" f.exec \"m_setColor $marker yellow\" ",
+" bitmap solid foreground yellow }",
+"}",
+"",
+"proc m_setType {marker type} {",
+" send $marker \"markpos; set type $type; redraw\"",
+"}",
+"proc m_setColor {marker color} {",
+" send $marker \"markpos;",
+" set lineColor $color; set highlightColor $color; redraw\"",
+"}",
+"",
+"# Callback executed when a marker gets or loses the focus.",
+"proc selectMarker {active_marker event event_data} \\",
+"{",
+" global marker",
+" switch $event {",
+" focusIn { set marker $active_marker }",
+" focusOut { }",
+" }",
+"}",
+"",
+"# Create marker action. Makes a new marker.",
+"proc makeMarker {parent x y} \\",
+"{",
+" global markerTranslations markno",
+" set marker marker$markno; incr markno",
+"",
+" send $parent createMarker $marker \\",
+" type rectangle \\",
+" createMode interactive \\",
+" translations $markerTranslations \\",
+" x $x \\",
+" y $y",
+"",
+" send $marker addCallback selectMarker focusIn focusOut",
+"}",
+"",
+"",
+" ",
+"# WCSBOX -- Real time coordinate display.",
+"",
+"set track_enable 0",
+"set last_x 0",
+"set last_y 0",
+"",
+"proc wcsUpdate {x y} \\",
+"{",
+" global track_enable frame pixtab_up tabTop",
+" global frameWidth frameHeight redraw_compass",
+" global ism_enable wcsLabels last_x last_y",
+" global ct_warn plotSpeed doHcut doVcut",
+"",
+"",
+" # If the cursor was frozen release it now.",
+" if {$ct_warn} {",
+" curtrack_destroy",
+" }",
+"",
+" # Convert screen coords to raster pixel.",
+" send imagewin unmapPixel $x $y raster rx ry rz",
+"",
+" # Set the current frame to the frame the pointer is within.",
+" if {$frame && $raster} {",
+" set track_frame [send client getFrame $raster]",
+" if {$frame != $track_frame} {",
+" send client setFrame $track_frame",
+" }",
+" }",
+"",
+" # Update coords box.",
+" if {$raster} {",
+" set text [send client encodewcs $rx $ry $rz]",
+" scan $text \"%g %g %g\" nx ny nz",
+" } else {",
+" set text [format \" %7.2f %7.2f %9.1f \" $rx $ry $rz]",
+" set nx $rx ; set ny $ry ; set nz $rz",
+" }",
+" ",
+" # Update the coords panel and pixel table.",
+" wcsFmtSValue $nz",
+" if {$pixtab_up} {",
+" updatePixelTable $x $y $nx $ny",
+" }",
+"",
+" # If the ISM is running update the coords box with all the selected",
+" # options, otherwise just write the one-line frame wcs coords.",
+" if {$ism_enable} {",
+" updateCoordsBox",
+"",
+" } else {",
+" # Update the on-screen marker.",
+" if {$track_enable} {",
+" send wcsbox \"set text \\{$text\\}; redraw noerase\"",
+" }",
+"",
+" # Update the control panel readout (always done).",
+" if {$wcsLabels} {",
+" set ln [format \" X: %12s Y: %12s WCS: Display\" $nx $ny]",
+" } else {",
+" set ln [format \" %12s %12s Display\" $nx $ny]",
+" }",
+" send wtWcs1 set string $ln",
+"",
+" if {$redraw_compass} \\",
+" drawCompass",
+" }",
+"",
+"",
+" # Update the cut-plots if enabled. If we're set for speed the don't ",
+" # track the really large cursor motions, wait till the differences are",
+" # small indicating a finer motion. ",
+" if {$doHcut || $doVcut} {",
+" set dist [ expr \"sqrt(pow(($last_x - $x),2) + pow(($last_y - $y),2))\" ]",
+" if {($plotSpeed && $dist < 30) || ! $plotSpeed} {",
+" cutPlots $x $y",
+" }",
+" }",
+"",
+" # Save the position so we can track differences with last position.",
+" set last_x $x",
+" set last_y $y",
+"}",
+"",
+"",
+"proc setTrack {state} \\",
+"{",
+" global ism_enable track_enable wcsboxGeom",
+" global winWidth winHeight up_todo",
+"",
+" if {$state} {",
+" if {$track_enable} \\",
+" return",
+"",
+" send imagewin createMarker wcsbox {",
+" type text",
+" createMode noninteractive",
+" width 27ch",
+" height 1ch",
+" lineWidth 0",
+" imageText true",
+" textBgColor black",
+" textColor yellow",
+" visible false",
+" }",
+"",
+" set box_width [send wcsbox get width]",
+" set box_height [send wcsbox get height]",
+" set defGeom [format \"%sx%s-5-5\" $box_width $box_height]",
+" send imagewin parseGeometry $wcsboxGeom $defGeom x y width height",
+"",
+" send wcsbox setAttributes \\",
+" x $x \\",
+" y $y \\",
+" activated true \\",
+" visible true \\",
+" sensitive true",
+"",
+" send wcsbox {",
+" addCallback wcsboxDestroyCallback destroy",
+" addCallback wcsboxMoved moveResize",
+" }",
+"",
+" send imagewin addCallback wcsboxWindowResize resize",
+" set track_enable 1",
+" send imagewin getCursorPos x y",
+" wcsUpdate $x $y",
+" magnifierMapImage $x $y",
+"",
+" # Turn on the option toggles on the control panel.",
+" foreach n {1 2 3 4} { ",
+" if {[send sysWcs$n get label] != \"None\"} {",
+" send wiWcs$n set on True",
+" }",
+" }",
+" if {$ism_enable} {",
+" resizeCoordsBox $up_todo",
+" }",
+"",
+" } elseif {$track_enable} {",
+" set track_enable 0",
+" send wcsbox destroy",
+"",
+" # Turn off the option toggles on the control panel.",
+" foreach w {wiWcs1 wiWcs2 wiWcs3 wiWcs4} { send $w set on False }",
+" resizeCoordsBox 0",
+" }",
+" updateCoordsBox",
+"}",
+"",
+"proc wcsboxDestroyCallback args \\",
+"{",
+" global track_enable",
+" send imagewin deleteCallback wcsboxWindowResize",
+" set track_enable 0",
+"}",
+"",
+"# If the window is resized make the wcsbox track the corner.",
+"proc wcsboxWindowResize args \\",
+"{",
+" global track_enable",
+" global wcsboxGeom",
+"",
+" if {$track_enable} {",
+" # Get new location.",
+" set box_width [send wcsbox get width]",
+" set box_height [send wcsbox get height]",
+" set defGeom [format \"%sx%s-5-5\" $box_width $box_height]",
+" send imagewin parseGeometry $wcsboxGeom $defGeom x y width height",
+"",
+" # Move the marker.",
+" send wcsbox \"\\",
+" deleteCallback wcsboxMoved; \\",
+" markpos; setAttributes x $x y $y; redraw; \\",
+" addCallback wcsboxMoved moveResize\"",
+" set wcsboxGeom [send imagewin getGeometry $x $y $width $height]",
+" }",
+"}",
+"",
+"proc wcsboxMoved {marker event position} \\",
+"{",
+" global wcsboxGeom",
+" send wcsbox getRect boundary x y width height",
+" set wcsboxGeom [send imagewin getGeometry $x $y $width $height]",
+"}",
+"",
+"proc resetWcsbox {param old new} \\",
+"{",
+" global track_enable wcsboxGeom displayCoords",
+" if {$new == \"done\"} {",
+" setTrack [true $displayCoords]",
+" } elseif {$track_enable} {",
+" setTrack 0",
+" if {$new == \"restart\"} {",
+" set wcsboxGeom -5-5",
+" }",
+" }",
+"}; send initialize addCallback resetWcsbox",
+"",
+"",
+"",
+"#---------------------",
+"# FRAME BLINK.",
+"#---------------------",
+"set blinkId 0",
+"set blinkIndex 0",
+"",
+"proc toggleBlink args \\",
+"{",
+" global blinkId blinkRate blinkIndex",
+" global optionsMenuDescription",
+"",
+" if {$blinkId} {",
+" deleteTimedCallback $blinkId",
+" set blinkId 0",
+" } else {",
+" set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]",
+" }",
+"",
+" set blinkIndex 0",
+" editMenu optionsMenu viewButton $optionsMenuDescription",
+"}",
+"",
+"proc blink args \\",
+"{",
+" global blinkId blinkRate blinkFrames blinkIndex",
+"",
+" send client setFrame [lindex $blinkFrames $blinkIndex]",
+" incr blinkIndex",
+" if {$blinkIndex >= [llength $blinkFrames]} {",
+" set blinkIndex 0",
+" }",
+"",
+" set blinkId [postTimedCallback blink [expr int($blinkRate * 1000)]]",
+"}",
+"",
+"proc resetBlink args \\",
+"{",
+" global blinkId",
+" if {$blinkId} \\",
+" toggleBlink",
+"}; send initialize addCallback resetBlink",
+"",
+"",
+"",
+"# Normalize -- Reset the view parameters for the current frame.",
+"proc normalize args \\",
+"{",
+" global zoomindex zoomfactor",
+" global frameWidth frameHeight",
+" global xcen ycen frame",
+"",
+" #set zoomindex($frame) 0",
+" #set xcen [expr $frameWidth / 2]",
+" #set ycen [expr $frameHeight / 2]",
+" #send client zoom 1 1 $xcen $ycen",
+" send client updateColormap 0.5 1.0",
+"}",
+"",
+"",
+"# Popdown menus.",
+"createMenu fileMenu fileButton {",
+" { \"Info\" f.exec { panelTabToggle info_panel } }",
+" { \"Load\" f.exec {",
+" panelTabToggle load_panel",
+" set panel_up 1",
+" } }",
+" { \"Save\" f.exec { Save } }",
+" { \"Save As...\" f.exec { panelTabToggle save_panel } }",
+" { \"Print\" f.exec { ",
+" send imagewin setCursorType busy",
+" Print",
+" send imagewin setCursorType idle",
+" } }",
+" { \"Print Setup\" f.exec { panelTabToggle print_panel } }",
+" { f.dblline }",
+" { \"Reset\" f.exec {",
+" # Do a hard reset.",
+" send client Reset",
+" #resetView initialize done done",
+" } }",
+" { \"Debug Panel\" f.exec { tclPanel 1 } }",
+" { \"Quit\" f.exec { Quit } }",
+"}",
+"",
+"createMenu viewMenu viewButton {",
+" { \"Next frame\" f.exec nextFrame }",
+" { \"Prev frame\" f.exec prevFrame }",
+" { f.dblline }",
+" { \"Colormap\" f.menu cmapMenu }",
+" { \"Flip\" f.menu flipMenu }",
+" { f.dblline }",
+" { \"Equal aspect\" f.exec {",
+" set xmag $frameZoomX($frame)",
+" set ymag $frameZoomY($frame)",
+" set zoom [expr ($xmag + $ymag) / 2.0]",
+" cpZoom $zoom $zoom fixed",
+" } }",
+" { \"Integer zoom\" f.exec {",
+" set xmag [expr round ($frameZoomX($frame))]",
+" set ymag [expr round ($frameZoomY($frame))]",
+" cpZoom $xmag $ymag fixed",
+" } }",
+" { \"Toggle zoom\" f.exec toggleZoom }",
+" { \"Unzoom\" f.exec {",
+" set zoomindex($frame) 0",
+" set mag $zoomfactor($zoomindex($frame))",
+" send client zoom $mag $mag $xcen $ycen",
+" } }",
+"}",
+"",
+"createMenu cmapMenu viewMenu {",
+" { \"Normalize\" f.exec normalize }",
+" { \"Invert\" f.exec cpInvert }",
+" { \"Optimize\" f.exec cpOptimize sensitive false }",
+" { f.dblline }",
+" { \"Grayscale\" f.exec \"send client setColormap Grayscale\" }",
+" { \"Color\" f.exec \"send client setColormap Color\" }",
+" { \"Heat\" f.exec \"send client setColormap Heat\" }",
+" { \"HSV\" f.exec \"send client setColormap HSV\" }",
+" { \"AIPS0\" f.exec \"send client setColormap AIPS0\" }",
+" { \"Halley\" f.exec \"send client setColormap Halley\" }",
+" { \"Ramp\" f.exec \"send client setColormap Ramp\" }",
+" { \"Standard\" f.exec \"send client setColormap Standard\" }",
+" { \"Staircase\" f.exec \"send client setColormap Staircase\" }",
+" { \"Rainbow1\" f.exec \"send client setColormap Rainbow1\" }",
+" { \"Rainbow2\" f.exec \"send client setColormap Rainbow2\" }",
+" { \"Random8\" f.exec \"send client setColormap Random8\" }",
+"}",
+"",
+"createMenu flipMenu viewMenu {",
+" { \"Flip X\" f.exec xflip }",
+" { \"Flip Y\" f.exec yflip }",
+" { \"Flip XY\" f.exec xyflip }",
+"}",
+"",
+"set optionsMenuDescription {",
+" { \"Autoscale\" f.exec {",
+" set value [send autoscaleButton get on]",
+" send autoscaleButton set on [expr !$value]",
+" cpSetAutoscale",
+" } }",
+" { \"Antialias\" f.exec {",
+" set value [send antialiasButton get on]",
+" send antialiasButton set on [expr !$value]",
+" cpSetAntialias",
+" } }",
+" { \"Panner\" f.exec { setPanner [expr !$panner_enable] } }",
+" { \"Magnifier\" f.exec { setMagnifier [expr !$magnifier_enable] }}",
+" { \"Coords box\" f.exec { setTrack [expr !$track_enable] } }",
+" { \"Tile frames\" f.exec {",
+" set value [send tileFramesButton get on]",
+" send tileFramesButton set on [expr !$value]",
+" cpSetTileFrames",
+" } }",
+" { \"Clear frame\" f.exec clearFrame }",
+" { \"Fit frame\" f.exec fitFrame }",
+" { \"Match LUTs\" f.exec cpMatchFrames }",
+" { \"Auto-Register\" f.exec cpAutoRegister }",
+" { \"Register\" f.exec cpRegisterFrames }",
+" { {$blinkId ? \"Stop blink\" : \"Blink frames\"}",
+" f.exec toggleBlink }",
+" { f.dblline }",
+" { \"Control Panel\" f.exec { panelTabToggle display_panel } }",
+" { \"Print Panel\" f.exec { panelTabToggle print_panel } }",
+" { \"Load Panel\" f.exec { panelTabToggle load_panel } }",
+" { \"Save Panel\" f.exec { panelTabToggle save_panel } }",
+"}; createMenu optionsMenu optionsButton $optionsMenuDescription",
+"",
+"",
+"",
+"#-------------------------------",
+"# Frozen Cursor Warning Message",
+"#-------------------------------",
+"",
+"set ct_warn 0",
+"",
+"proc curtrack_msg { x y args } \\",
+"{",
+" global ct_warn last_x last_y winHeight winWidth",
+"",
+"",
+" if {! $ct_warn == 0} {",
+" return",
+" }",
+" ",
+" send imagewin createMarker curtrack_warn {",
+" type text",
+" createMode noninteractive",
+" width 25ch",
+" height 21",
+" lineWidth 0",
+" imageText true",
+" textBgColor red",
+" textColor yellow",
+" visible true",
+" sensitive true",
+" activated true",
+" x 5",
+" y 5",
+" }",
+"",
+" send curtrack_warn \"set text \\{ CURSOR READOUT FROZEN \\}\"",
+" set ypos [ expr ($winHeight - 25) ]",
+" send curtrack_warn \"markpos; setAttributes x 5 y $ypos; redraw\"",
+" send curtrack_warn \"redraw noerase\"",
+" set ct_warn 1",
+"",
+" # Mark the position of the cursor.",
+" send imagewin createMarker x_curpos \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor red \\",
+" x 1 \\",
+" y $last_y \\",
+" width $winWidth \\",
+" height 1 \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+"",
+" send imagewin createMarker y_curpos \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor red \\",
+" x $last_x \\",
+" y 1 \\",
+" width 1 \\",
+" height $winHeight \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+"",
+" # Raise the coordinate marker so we can see where we are.",
+" send wcsbox raise",
+"}",
+"",
+"",
+"proc curtrack_destroy args \\",
+"{",
+" global ct_warn",
+"",
+" if {$ct_warn} {",
+" send curtrack_warn destroy",
+" send x_curpos destroy",
+" send y_curpos destroy",
+" set ct_warn 0",
+" }",
+"}",
+"",
+"",
+"################################################################################",
+"# CURSOR CENTEROID AND AUTO-REGISTER FUNCTIONS.",
+"################################################################################",
+"",
+"# Set the centroiding box size.",
+"set ctid 0",
+"set cid 0",
+"",
+"proc cbxDestroy args \\",
+"{",
+" global centerBoxSize cid ctid",
+" catch { ",
+" if {$ctid != 0} {",
+" send cbm$cid destroy ",
+" deleteTimedCallback $ctid",
+" set ctid 0",
+" }",
+" }",
+"}",
+"",
+"proc setCtrBoxSize { x y delta args } \\",
+"{",
+" global centerBoxSize cid ctid",
+" global cpXscale cpYscale",
+"",
+" incr centerBoxSize $delta",
+" if {$centerBoxSize <= 1} { set centerBoxSize 1 }",
+"",
+" # Kill off any old markers before drawing the new one.",
+" catch { ",
+" if {$ctid != 0} {",
+" send cbm$cid destroy ",
+" deleteTimedCallback $ctid",
+" set ctid 0",
+" }",
+" }",
+"",
+" # create a transient marker indicating the centering box and post a",
+" # callback to delete it in about a second.",
+" incr cid",
+" send imagewin createMarker cbm$cid \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor red \\",
+" x $x \\",
+" y $y \\",
+" width [expr $cpXscale * $centerBoxSize] \\",
+" height [expr $cpXscale * $centerBoxSize] \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+"",
+" set ctid [ postTimedCallback cbxDestroy 500]",
+"}",
+"",
+"",
+"# Box size is half-width of the marker size. Value is the slider value.",
+"set focusBoxSize $winWidth ",
+"set focusValue 100.0",
+"set fid 0",
+"set ftid 0",
+"set moving 0",
+"",
+"proc setFocusBoxSize { sz args } \\",
+"{",
+" global focusBoxSize fid ftid focusValue moving",
+" global winWidth winHeight",
+"",
+"",
+" if { $moving == 0 } {",
+" return done",
+" }",
+"",
+" if { $winWidth < $winHeight } {",
+" set max [expr $winWidth / 2 - 64]",
+" } else {",
+" set max [expr $winHeight / 2 - 64]",
+" }",
+" set focusBoxSize [expr 64 + ($sz * $max) - 1]",
+" #send client setOption cmfocus [expr ($focusBoxSize / 2)]",
+" send client setOption cmfocus $focusBoxSize",
+"",
+" # Destroy any existing markers.",
+" catch { ",
+" if {$ftid != 0} {",
+" send fm$fid destroy ",
+" set ftid 0",
+" }",
+" }",
+"",
+" # create a transient marker indicating the centering box and post a",
+" # callback to delete it in about a second.",
+" incr fid",
+" send imagewin createMarker fm$fid \\",
+" type box \\",
+" createMode noninteractive \\",
+" lineColor green \\",
+" lineWidth 4 \\",
+" x [expr $winWidth / 2] \\",
+" y [expr $winHeight / 2] \\",
+" width $focusBoxSize \\",
+" height $focusBoxSize \\",
+" activated True \\",
+" visible True \\",
+" sensitive False",
+"",
+" set ftid [ postTimedCallback fbxDestroy 500]",
+" set moving 0",
+"}",
+"",
+"proc fbxDestroy args \\",
+"{",
+" global fid ftid moving",
+" catch { ",
+" if {$ftid != 0} {",
+" send fm$fid destroy ",
+" set ftid 0",
+" }",
+" }",
+"}",
+"",
+"proc setFocusSize { widget cbtype x y } \\",
+"{",
+" global focusValue ftid moving",
+"",
+" # Only update once we've stopped the movement.",
+" if { $x == $focusValue && $moving == 1 } {",
+" set ftid [ postWorkProc setFocusBoxSize $x ]",
+" } else {",
+" set moving 1",
+" }",
+" set focusValue $x",
+"} ; send focusSlider addCallback setFocusSize scroll",
+"",
+"",
+"# Compute a centroid offset for the current position to peak-up on the",
+"# feature.",
+"",
+"proc centroid { x y type args } \\",
+"{",
+" global centerBoxSize",
+" global cpXscale cpYscale",
+"",
+" # Convert to image coords.",
+" set sz [expr \"int ($centerBoxSize * $cpXscale)\"]",
+"",
+" # Get the centroid position.",
+" if {$type != \"min\"} {",
+" if {[send peakupButton get on]} {",
+" set center [ send client centroid $x $y $sz ]",
+" } else {",
+" set center [ send client centroid $x $y $sz max ]",
+" }",
+" } else {",
+" set center [ send client centroid $x $y $sz min ]",
+" }",
+"",
+" # Now reposition the cursor.",
+" set xoff [lindex $center 0 ]",
+" set yoff [lindex $center 1 ]",
+" move_cursor $xoff $yoff",
+"}",
+"",
+"",
+"# Set the auto-register center offset position",
+"proc offset { x y args } \\",
+"{",
+" global frame blinkFrames auto_reg",
+" global frameCenterX frameCenterY",
+" global frameOffsetX frameOffsetY",
+"",
+" # No-op of auto-register isn't on.",
+" if { $auto_reg == 0 } {",
+" Wexec client \"Auto-Register is not enabled!\"",
+" return",
+" }",
+"",
+" # If we're not in the blink frames list ignore the request.",
+" if { [string first $frame $blinkFrames] == -1 } {",
+" Wexec client \"Frame not in current\\nregister list.\"",
+" return",
+" }",
+"",
+" set rx $x; set ry $y",
+" set raster 0",
+"",
+" # Convert raw screen coordinates to frame buffer raster coordinates.",
+" send imagewin unmapPixel $x $y raster rx ry",
+"",
+" # Select a pixel.",
+" set xoff [expr \"int ($rx) - $frameCenterX($frame)\" ]",
+" set yoff [expr \"int ($ry) - $frameCenterY($frame)\" ]",
+"",
+" set frameOffsetX($frame) $xoff",
+" set frameOffsetY($frame) $yoff",
+"",
+" # Adjust the display.",
+" send client setOffset $xoff $yoff",
+"}",
+"",
+"",
+"",
+"################################################################################",
+"# MAIN CONTROL PANEL",
+"################################################################################",
+"",
+"",
+"# Global control panel buttons.",
+"# -------------------------------",
+"proc cpInitialize args \\",
+"{",
+" send imagewin setCursorType busy",
+" send client initialize",
+" send imagewin setCursorType idle",
+"}",
+"send initializeButton addCallback cpInitialize",
+"send normalizeButton addCallback normalize",
+"",
+"# Temporarily deactivate some buttons.",
+"send optimizeButton setSensitive false",
+"",
+"#-----------------------------------------------------------------------------",
+"",
+"foreach i $frames {set saveView($i) \"1 1\"}",
+"",
+"send prevFrame set bitmap larrow",
+"send nextFrame set bitmap rarrow",
+"send contrastLabel set bitmap contrast",
+"send brightnessLabel set bitmap brightness",
+"send contrastSlider resizeThumb 0.1 1.0",
+"send brightnessSlider resizeThumb 0.1 1.0",
+"send focusSlider \"resizeThumb 0.1 1.0 ; moveThumb 1.0\"",
+"",
+"",
+"# panel -- Toggle control panel display.",
+"proc panel args \\",
+"{",
+" global panel_up",
+" if {$panel_up} {",
+" send panelShell unmap",
+" set panel_up 0",
+" } else {",
+" send panelShell map",
+" set panel_up 1",
+" }",
+"}",
+"",
+"proc pbTracePanel {name element op} \\",
+"{",
+" catch {",
+" upvar $name panel_up",
+" send controlButton set state $panel_up",
+" }",
+"} ; trace variable panel_up w pbTracePanel",
+"",
+"",
+"# resetPanel -- Calling during startup or in an initialize, to reset things.",
+"proc resetPanel {param old new} \\",
+"{",
+" global frame nframes frames",
+" global displayPanner displayMagnifier displayCoords",
+" global blinkFrames warnings peakCentroid",
+"",
+" switch $new {",
+" startup {",
+" }",
+" restart { foreach i $frames {",
+" send frame$frame set on 0",
+" }",
+"",
+" # Initialize to hide the extra frames.",
+" send frlistBox set width 30",
+" }",
+" done { if {$frame} {",
+" send frame$frame set on 1",
+" }",
+"",
+" cpResetBlink",
+" set button 1",
+" foreach i {1 2 3 4} {",
+" send blinkFrame$button set label $i",
+" incr button",
+" }",
+" for {set i 1} {$i <= 16} {incr i} {",
+" send brFrame$i set label $i",
+" }",
+"",
+" cpResetEnhance",
+" send pannerButton set on [true $displayPanner]",
+" send magnifierButton set on [true $displayMagnifier]",
+" send coordsBoxButton set on [true $displayCoords]",
+" send warningsButton set on $warnings",
+" send peakupButton set on [true $peakCentroid]",
+" }",
+" }",
+"}; send initialize addCallback resetPanel",
+"",
+"",
+"",
+"# Control Panel Tabs widget procedures.",
+"#----------------------------------------",
+"",
+"set cpTabs { display_panel print_panel load_panel save_panel \\",
+" info_panel wcs_panel tile_panel}",
+"set tabTop \"display_panel\"",
+"",
+"",
+"# Resize the control panel depending on the Tab selected.",
+"proc cpResizeCB { widget event a b c d e args } \\",
+"{",
+" global tabTop fileList",
+"",
+" # Handle only the first exposure event generated.",
+" if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {",
+" set tabTop $widget",
+"",
+" switch $widget {",
+" display_panel { send panel set height 595 }",
+" print_panel { send panel set height 545 }",
+" load_panel { send panel set height 485 ",
+" if { [send browseHdrs get on] } {",
+" send imageList setList $fileList resize",
+" } else {",
+" send client setLoadOption rescan",
+" }",
+" }",
+" save_panel { send panel set height 325 }",
+" info_panel { send panel set height 380 }",
+" tile_panel { send panel set height 405 }",
+" wcs_panel { setCoordPanelHeight }",
+" }",
+" }",
+"} ; foreach w $cpTabs { send $w addEventHandler cpResizeCB exposureMask }",
+"",
+"",
+"proc panelDismiss args \\",
+"{",
+" global panel_up",
+" send panelShell unmap",
+" set panel_up 0",
+"} ; send panelClose addCallback panelDismiss",
+"",
+"",
+"proc panelTabToggle { panel args } \\",
+"{",
+" global tabTop panel_up TabToWidget",
+"",
+" if {$tabTop == $panel && $panel_up} {",
+" send panelShell unmap",
+" send $TabToWidget($panel) set state 0",
+" set panel_up 0",
+"",
+" } else {",
+" # Special cases for each panel.",
+" if {$panel == \"load_panel\"} {",
+" send client setLoadOption rescan",
+" }",
+"",
+" send panelTabs setTop $panel",
+" set tabTop $panel",
+"",
+" # Now fire it up if it's not already open.",
+" if {$panel_up == 0} {",
+" send panelShell map",
+" set panel_up 1",
+" }",
+"",
+" }",
+"}",
+"",
+"proc displayPanel args { panelTabToggle display_panel }",
+"proc infoPanel args { panelTabToggle info_panel }",
+"proc loadPanel args { panelTabToggle load_panel }",
+"proc savePanel args { panelTabToggle save_panel }",
+"proc printPanel args { panelTabToggle print_panel }",
+"proc tilePanel args { panelTabToggle tile_panel }",
+"proc wcsPanel args { panelTabToggle wcs_panel }",
+"",
+"",
+"",
+"",
+"# Frame selection.",
+"# -------------------------------",
+"proc cpSetFrame {widget args} \\",
+"{",
+" send $widget set on 0",
+" send client setFrame [send $widget get label]",
+"}",
+"",
+"proc cpFrameChanged {param old new} \\",
+"{",
+" global frameCache",
+"",
+" if {$old > 0} {",
+" send frame$old set on 0",
+" }",
+" if {$new > 0} {",
+" send frame$new set on 1",
+" }",
+"",
+" # The first time we request frame 5 or higher reset ",
+" # the extra frame buttons on the control panel to make",
+" # them visible.",
+" if {$new >= 5} {",
+" send frlistBox set width 49",
+" }",
+"",
+" # Update the header panel object list.",
+" catch {",
+" # Only update when the header panel is open.",
+" if {[info exists frameCache($new)] && [send imageHeader get on]} {",
+" setHdrObjMenu $new",
+" getHeader [lindex $frameCache($new) 0] [lindex $frameCache($new) 1]",
+" }",
+" }",
+"}",
+"",
+"send prevFrame addCallback prevFrame",
+"send nextFrame addCallback nextFrame",
+"send frame addCallback cpFrameChanged",
+"for {set i 1} {$i <= 16} {incr i} {send frame$i addCallback cpSetFrame}",
+"",
+"# Initialize to hide the extra frames.",
+"send frlistBox set width 30",
+"",
+"proc blinkPanelCB { widget type state args } \\",
+"{",
+" if {$state} {",
+" send blink_panel map",
+" } else {",
+" send blink_panel unmap",
+" }",
+"} ; send blinkPanel addCallback blinkPanelCB",
+"",
+"proc blinkPanelClose args \\",
+"{",
+" send blink_panel unmap",
+" send blinkPanel set state 0",
+"} ; send brClose addCallback blinkPanelClose",
+"",
+"",
+"",
+"# Frame buttons.",
+"proc cpFrameAction {widget args} \\",
+"{",
+" global frameZoomX frameZoomY frame",
+" switch $widget {",
+" aspect { set xmag $frameZoomX($frame)",
+" set ymag $frameZoomY($frame)",
+" set zoom [expr round (($xmag + $ymag) / 2.0)]",
+" cpZoom $zoom $zoom fixed",
+" }",
+" flipX { send client flip x }",
+" flipY { send client flip y }",
+" flipXY { send client flip x y }",
+" clearFrame { clearFrame }",
+" fitFrame { fitFrame }",
+" }",
+"}",
+"foreach widget {aspect flipX flipY flipXY clearFrame fitFrame} {",
+" send $widget addCallback cpFrameAction",
+"}",
+"",
+"# clearFrame -- Clear the current display frame.",
+"proc clearFrame args \\",
+"{",
+" global warnings",
+" if {$warnings} {",
+" Wexec client \\",
+" \"Clearing the frame will destroy\\n\\",
+" all data in the frame\" \\",
+" clearFrame",
+" } else {",
+" send client clearFrame",
+" }",
+"}",
+"",
+"# fitFrame -- Resize the display window to fit the frame buffer.",
+"proc fitFrame args \\",
+"{",
+" global frameWidth frameHeight winWidth winHeight",
+" set dw [expr [send display get width] - $winWidth]",
+" set dh [expr [send display get height] - $winHeight]",
+" send display \"resize [expr $frameWidth + $dw] [expr $frameHeight + $dh]\"",
+"}",
+"",
+"proc initFitFrame { param old new } \\",
+"{",
+" if { [lindex $new 0] == \"resize\"} {",
+" fitFrame",
+" }",
+" pannerMapImage init",
+"}; send frameFit addCallback initFitFrame",
+"",
+"",
+"",
+"# Zoom and pan buttons.",
+"# -------------------------------",
+"proc cpZoomAction {widget args} \\",
+"{",
+" global frameWidth frameHeight",
+"",
+" switch $widget {",
+" x1 { cpZoom 1 1 fixed }",
+" z2 { cpZoom 2 2 fixed }",
+" z3 { cpZoom 3 3 fixed }",
+" z4 { cpZoom 4 4 fixed }",
+" z5 { cpZoom 5 5 fixed }",
+" z8 { cpZoom 8 8 fixed }",
+"",
+" d2 { cpZoom [expr 1.0/2] [expr 1.0/2] fixed }",
+" d3 { cpZoom [expr 1.0/3] [expr 1.0/3] fixed }",
+" d4 { cpZoom [expr 1.0/4] [expr 1.0/4] fixed }",
+" d5 { cpZoom [expr 1.0/5] [expr 1.0/5] fixed }",
+" d8 { cpZoom [expr 1.0/8] [expr 1.0/8] fixed }",
+"",
+" zoomIn { cpZoom 2.0 2.0 relative }",
+" zoomOut { cpZoom 0.5 0.5 relative }",
+"",
+" centerFrame { send client pan \\",
+" [expr $frameWidth/2.0] \\",
+" [expr $frameHeight/2.0]",
+" }",
+" toggleZoom { toggleZoom }",
+" }",
+"}",
+"",
+"proc cpZoom {zoom_x zoom_y mode} \\",
+"{",
+" global frameZoomX frameZoomY zoomindex frame",
+" global frameOffsetX frameOffsetY frameCenterX frameCenterY",
+"",
+" if {$mode == \"fixed\"} {",
+" #send client zoom $zoom_x $zoom_y",
+" send client zoomAbs $zoom_x $zoom_y \\",
+" $frameCenterX($frame) $frameCenterY($frame) \\",
+" $frameOffsetX($frame) $frameOffsetY($frame)",
+" } else {",
+" #send client zoom \\",
+" # [expr $frameZoomX($frame) * $zoom_x] \\",
+" # [expr $frameZoomY($frame) * $zoom_y]",
+" send client zoomAbs \\",
+" [expr $frameZoomX($frame) * $zoom_x] \\",
+" [expr $frameZoomY($frame) * $zoom_y] \\",
+" $frameCenterX($frame) $frameCenterY($frame) \\",
+" $frameOffsetX($frame) $frameOffsetY($frame)",
+" }",
+"",
+" set zoomindex($frame) 0",
+"}",
+"",
+"proc toggleZoom args \\",
+"{",
+" global frameZoomX frameZoomY frameCenterX frameCenterY",
+" global frameWidth frameHeight saveView frame",
+"",
+" if {$frameZoomX($frame) != 1 && $frameZoomY($frame) != 1} {",
+" set saveView($frame) \\",
+" \"$frameZoomX($frame) $frameZoomY($frame) \\",
+" $frameCenterX($frame) $frameCenterY($frame)\"",
+" send client zoom 1 1 \\",
+" [expr $frameWidth/2.0] \\",
+" [expr $frameHeight/2.0]",
+" } else {",
+" send client zoom $saveView($frame)",
+" }",
+"}",
+"",
+"foreach widget { toggleZoom centerFrame zoomIn zoomOut \\",
+" x1 z2 z3 z4 z5 z8 d2 d3 d4 d5 d8 } {",
+" send $widget addCallback cpZoomAction",
+"}",
+"",
+"# Frame data display.",
+"# -------------------------------",
+"set cpFrame 0",
+"set cpXcen 0",
+"set cpYcen 0",
+"set cpXmag 0",
+"set cpYmag 0",
+"set cpXscale 0",
+"set cpYscale 0",
+"set cpXoff 0",
+"set cpYoff 0",
+"",
+"proc cpDisplayFrameData {name old new} \\",
+"{",
+" global cpFrame cpXcen cpYcen cpXoff cpYoff",
+" global cpXmag cpYmag cpXscale cpYscale",
+"",
+" set update 0",
+" switch $name {",
+" frame { if {$new != $cpFrame} {",
+" set cpFrame $new",
+" set update 1",
+" }",
+" }",
+" frameView { # Parse the frameView input.",
+" set xmag [lindex $new 0]; set ymag [lindex $new 1]",
+" set xcen [lindex $new 2]; set ycen [lindex $new 3]",
+" set xnorm [lindex $new 4]; set ynorm [lindex $new 5]",
+" set xoff [lindex $new 6]; set yoff [lindex $new 7]",
+"",
+" # We need client coords and the overall scale factors.",
+" set text [send client encodewcs $xcen $ycen]",
+" set xcen [lindex $text 0]",
+" set ycen [lindex $text 1]",
+" set xscale [expr $xmag * $xnorm]",
+" set yscale [expr $ymag * $ynorm]",
+"",
+" if {$xcen != $cpXcen || $ycen != $cpYcen ||",
+" $xmag != $cpXmag || $ymag != $cpYmag ||",
+" $xoff != $cpXoff || $yoff != $cpYoff ||",
+" $xscale != $cpXscale || $yscale != $cpYscale} {",
+"",
+" set cpXcen $xcen; set cpXscale $xscale",
+" set cpYcen $ycen; set cpYscale $yscale",
+" set cpXmag $xmag; set cpXoff $xoff; ",
+" set cpYmag $ymag; set cpYoff $yoff;",
+" set update 1",
+" }",
+" }",
+" }",
+"",
+" if {$update} {",
+" set header [format \"-- Frame %d --\" $cpFrame]",
+" set center [format \"X center: %0.1f\\nY center: %0.1f\" $cpXcen $cpYcen]",
+" if {int($cpXmag) >= 10} {",
+" set zoom1 [format \" X zoom: %0.1f\" $cpXmag]",
+" set zoom2 [format \" Y zoom: %0.1f\" $cpYmag]",
+" } else {",
+" set zoom1 [format \"X zoom: %0.1f\" $cpXmag]",
+" set zoom2 [format \"Y zoom: %0.1f\" $cpYmag]",
+" }",
+" if {int($cpXscale) >= 10} {",
+" set scale1 [format \"X scale: %0.1f\" $cpXscale]",
+" set scale2 [format \"Y scale: %0.1f\" $cpYscale]",
+" } else {",
+" set scale1 [format \"X scale: %0.2f\" $cpXscale]",
+" set scale2 [format \"Y scale: %0.2f\" $cpYscale]",
+" }",
+" set offset [format \" Offset: (%0.1f,%0.1f)\" $cpXoff $cpYoff]",
+"",
+" send frameData set label [format \"%s\\n%s\\n%s\\n%s\\n%s\\n%s\\n%s\" \\",
+" $header $center $scale1 $scale2 $zoom1 $zoom2 $offset \\",
+" ]",
+" }",
+"}; foreach p {frame frameView} {send $p addCallback cpDisplayFrameData}",
+"",
+"",
+"# Frame enhancement.",
+"# -------------------------------",
+"set cpEnhanceDisable 0",
+"set cpEnhanceId 0",
+"set cpEnhanceMode none",
+"set cpEnhanceVal 0",
+"set cpListItem none",
+"",
+"# Windowing the colormap is slow when the mouse is not in the image window,",
+"# so it is necessary to execute the windowColormap in a work procedure.",
+"# This allows any number of slider motion events to be processed for each",
+"# windowColormap, preventing slider events from queueing up.",
+"",
+"proc cpResetEnhance args \\",
+"{",
+" global cpListItem cpEnhanceId",
+" set cpListItem none",
+" set cpEnhanceId 0",
+"}",
+"",
+"proc cpSetEnhancement {widget cbtype x y} \\",
+"{",
+" global cpEnhanceMode cpEnhanceVal cpEnhanceId cpEnhanceDisable",
+" set cpEnhanceMode $widget",
+" set cpEnhanceVal $x",
+" if {!$cpEnhanceId && !$cpEnhanceDisable} {",
+" set cpEnhanceId [postWorkProc cpEnhanceProc]",
+" }",
+"}",
+"proc cpEnhanceProc args \\",
+"{",
+" global cpEnhanceMode cpEnhanceVal cpEnhanceId",
+" global enhancement frame maxContrast",
+" set val $cpEnhanceVal",
+"",
+" if {$cpEnhanceMode == \"contrastSlider\"} {",
+" set contrast [lindex $enhancement($frame) 2]",
+" send client windowColormap [lindex $enhancement($frame) 1] \\",
+" [expr (($contrast < 0) ? -$val : $val) * $maxContrast] ",
+" } else {",
+" send client windowColormap $val",
+" }",
+"",
+" set cpEnhanceId 0",
+" return done",
+"}",
+"",
+"proc cpInvert args \\",
+"{",
+" global enhancement frame",
+" set contrast [lindex $enhancement($frame) 2]",
+" send client updateColormap [lindex $enhancement($frame) 1] \\",
+" [expr -1.0 * $contrast]",
+"}",
+"",
+"proc cpDisplayEnhancement {param old new} \\",
+"{",
+" global cpEnhanceId maxContrast cpEnhanceDisable",
+" global cpListItem enhancement frame",
+"",
+" if {!$frame} \\",
+" return",
+" set enhance $enhancement($frame)",
+" if {[llength $enhance] < 3} \\",
+" return",
+"",
+" set colortable [lindex $enhance 0]",
+" set offset [lindex $enhance 1]",
+" set scale [lindex $enhance 2]",
+"",
+" send colordata set label [format \"-- %s --\\nCon %0.2f Brt %0.2f\" \\",
+" $colortable $scale $offset]",
+"",
+" if {$colortable != $cpListItem} {",
+" send colorlist highlight $colortable",
+" set cpListItem $colortable",
+" }",
+"",
+" if {!$cpEnhanceId && !$cpEnhanceDisable} {",
+" set cpEnhanceDisable 1",
+" send contrastSlider moveThumb [expr abs($scale) / $maxContrast]",
+" send brightnessSlider moveThumb $offset",
+" set cpEnhanceDisable 0",
+" }",
+"}",
+"",
+"foreach i {enhancement frame} {",
+" send $i addCallback cpDisplayEnhancement",
+"}",
+"send contrastSlider addCallback cpSetEnhancement scroll",
+"send brightnessSlider addCallback cpSetEnhancement scroll",
+"send invertButton addCallback cpInvert",
+"",
+"",
+"# Colortable display and selection.",
+"# -------------------------------",
+"set colorTables {}",
+"",
+"proc cpSetColorList {param old new} \\",
+"{",
+" set colorTables $new",
+" send colorlist setList $new resize",
+"}; send colortables addCallback cpSetColorList",
+"",
+"proc colorlistResize args \\",
+"{",
+" global colorTables",
+" send colorlist setList $colorTables resize",
+"}; send colorlist addEventHandler colorlistResize ResizeRedirectMask",
+"",
+"proc cpSelectColor {widget cbtype selections indices} \\",
+"{",
+" global colortable",
+" foreach selection $selections {",
+" send client setColormap $selection",
+" }",
+"}; send colorlist addCallback cpSelectColor",
+" ",
+"",
+"# Frame blink.",
+"# -------------------------------",
+"send BRtext set label $blinkRate",
+"send brBRtext set label $blinkRate",
+"",
+"proc cpSetBlinkRate {w args} \\",
+"{",
+" global blinkRate",
+" if {$w == \"BRincrease\" || $w == \"brBRincrease\"} {",
+" if {$blinkRate < 0.01} {",
+" set blinkRate 0.125",
+" } else {",
+" set blinkRate [expr $blinkRate * 2.0]",
+" }",
+" } else {",
+" set blinkRate [expr $blinkRate / 2.0]",
+" if {$blinkRate < 0.01} {",
+" set blinkRate 0",
+" }",
+" }",
+" send BRtext set label $blinkRate",
+" send brBRtext set label $blinkRate",
+"}",
+"foreach w {BRincrease BRdecrease brBRincrease brBRdecrease} {",
+" send $w addCallback cpSetBlinkRate",
+"}",
+"",
+"proc cpSetBlinkFrame {widget args} \\",
+"{",
+" global blinkFrames frames nframes",
+"",
+" set frame [send $widget get label]",
+" if {$frame == \" \"} {",
+" set frame 1",
+" } else {",
+" incr frame",
+" if {$frame > $nframes} {",
+" set frame \" \"",
+" }",
+" }",
+" send $widget set label $frame",
+"",
+" set blinkFrames {}",
+" foreach i {1 2 3 4} {",
+" set frame [send blinkFrame$i get label]",
+" if {$frame != \" \"} {",
+" lappend blinkFrames $frame",
+" }",
+" }",
+"}; foreach i {1 2 3 4} {send blinkFrame$i addCallback cpSetBlinkFrame}",
+"",
+"proc cpBlink {widget args} \\",
+"{",
+" global blinkRate blinkId",
+"",
+" if {$blinkRate < 0.01} {",
+" send blinkButton set on False",
+" send brBlinkButton set on False",
+" blink",
+" } elseif {($blinkId != 0) != [send $widget get on]} {",
+" toggleBlink",
+" }",
+"} ; foreach w {blinkButton brBlinkButton} {send $w addCallback cpBlink}",
+"",
+"",
+"proc cpAutoRegister {widget type state args} \\",
+"{",
+" global auto_reg frame frames blinkFrames",
+" global frameZoomX frameZoomY frameOffsetX frameOffsetY",
+"",
+" set auto_reg $state",
+" if {$auto_reg == 1} {",
+" send autoregButton set on True",
+" send brAregButton set on True",
+" } else {",
+" send autoregButton set on False",
+" send brAregButton set on False",
+" }",
+"",
+" # Register the frames to zero the offsets.",
+" send client registerFrames \\{$blinkFrames\\}",
+" foreach f $frames {",
+" set frameOffsetX($f) 0",
+" set frameOffsetY($f) 0",
+" }",
+"} ; foreach w {autoregButton brAregButton} {send $w addCallback cpAutoRegister}",
+"",
+"",
+"proc toggleAutoReg args \\",
+"{",
+" global auto_reg",
+" if {$auto_reg} {",
+" cpAutoRegister autoregButton dummy 0 ",
+" set auto_reg 0",
+" } else {",
+" cpAutoRegister autoregButton dummy 1 ",
+" set auto_reg 1",
+" }",
+"}",
+"",
+"proc resetAutoReg args \\",
+"{",
+" global auto_reg",
+" if {$auto_reg} \\",
+" toggleAutoReg",
+"}; send initialize addCallback resetAutoReg",
+"",
+"",
+"proc cpResetBlink args \\",
+"{",
+" global blinkRate blinkFrames blinkIndex frames",
+" global defaultBlinkRate",
+"",
+" foreach i {1 2 3 4} {",
+" send blinkFrame$i set label \" \"",
+" }",
+" for {set i 1} {$i <= 16} {incr i} {",
+" send brFrame$i set label $i",
+" }",
+" set blinkRate $defaultBlinkRate",
+" send BRtext set label $blinkRate",
+" send brBRtext set label $blinkRate",
+" set blinkIndex 0",
+"} ",
+"send blinkReset addCallback cpResetBlink",
+"send brReset addCallback cpResetBlink",
+"",
+"proc cpTraceBlink {name element op} \\",
+"{",
+" upvar $name blinkId",
+" send blinkButton set on [expr $blinkId != 0]",
+" send brBlinkButton set on [expr $blinkId != 0]",
+"}; trace variable blinkId w cpTraceBlink",
+"",
+"proc cpSetBlinkFrames {param old new} \\",
+"{",
+" global blinkFrames frames",
+"",
+" set blinkFrames {}",
+" foreach i $frames {",
+" if {$i <= $new} {",
+" lappend blinkFrames $i",
+" }",
+" }",
+" cpResetBlink",
+" set button 1",
+" for {set i 1} {$i <= $new} {incr i} {",
+" if {$i <= 4} {",
+" send blinkFrame$button set label $i",
+" }",
+" send brFrame$button set label $i",
+" incr button",
+" }",
+"}; send nframes addCallback cpSetBlinkFrames",
+"",
+"proc cpRegisterFrames args \\",
+"{",
+" global frames blinkFrames",
+" global frameOffsetX frameOffsetY",
+"",
+" foreach f $frames {",
+" set frameOffsetX($f) 0",
+" set frameOffsetY($f) 0",
+" }",
+" send client registerFrames \\{$blinkFrames\\}",
+"}",
+"send registerButton addCallback cpRegisterFrames",
+"send brRegButton addCallback cpRegisterFrames",
+"",
+"proc cpMatchFrames args \\",
+"{",
+" global blinkFrames",
+" send client matchFrames \\{$blinkFrames\\}",
+"}",
+"send matchButton addCallback cpMatchFrames",
+"send brMatchButton addCallback cpMatchFrames",
+"",
+"",
+"# Options buttons.",
+"# -------------------------------",
+"proc cpSetPanner {widget args} \\",
+"{",
+" setPanner [send $widget get on]",
+"}; send pannerButton addCallback cpSetPanner",
+"",
+"proc cpTracePanner {name element op} \\",
+"{",
+" upvar $name panner_enable",
+" send pannerButton set on $panner_enable",
+"}; trace variable panner_enable w cpTracePanner",
+"",
+"proc cpSetMagnifier {widget args} \\",
+"{",
+" setMagnifier [send $widget get on]",
+"}; send magnifierButton addCallback cpSetMagnifier",
+"",
+"proc cpTraceMagnifier {name element op} \\",
+"{",
+" upvar $name magnifier_enable",
+" send magnifierButton set on $magnifier_enable",
+"}; trace variable magnifier_enable w cpTraceMagnifier",
+"",
+"proc cpSetCoordsBox {widget args} \\",
+"{",
+" setTrack [send $widget get on]",
+"}; send coordsBoxButton addCallback cpSetCoordsBox",
+"",
+"proc cpTraceCoordsBox {name element op} \\",
+"{",
+" upvar $name track_enable",
+" send coordsBoxButton set on $track_enable",
+"}; trace variable track_enable w cpTraceCoordsBox",
+"",
+"proc cpSetWarnings args \\",
+"{",
+" global warnings",
+" set warnings [send warningsButton get on]",
+"}; send warningsButton addCallback cpSetWarnings",
+"",
+"proc cpSetAutoscale args \\",
+"{",
+" set value [send autoscaleButton get on]",
+" send client setOption autoscale [expr {$value ? \"True\" : \"False\"}]",
+"}; send autoscaleButton addCallback cpSetAutoscale",
+"",
+"proc cpTrackAutoscale {param old new} \\",
+"{",
+" send autoscaleButton set on [true $new]",
+"}; send autoscale addCallback cpTrackAutoscale",
+"",
+"proc cpSetAntialias args \\",
+"{",
+" set value [send antialiasButton get on]",
+" send client setOption antialias [expr {$value ? \"True\" : \"False\"}]",
+"}; send antialiasButton addCallback cpSetAntialias",
+"",
+"proc cpTrackAntialias {param old new} \\",
+"{",
+" send antialiasButton set on [true $new]",
+"}; send antialias addCallback cpTrackAntialias",
+"",
+"proc cpSetTileFrames { widget type state args } \\",
+"{",
+" global tile_frames tileOpt",
+"",
+" set value [send tileFramesButton get on]",
+" if {$value} {",
+" selectTileOrientation junk junk [tileSelToLabel $tileOpt]",
+" } else {",
+" selectTileOrientation junk junk Disabled",
+" }",
+" send client setOption tileFrames \\",
+" [expr {$value ? \"True\" : \"False\"}] \\{ $tile_frames \\}",
+"} ; send tileFramesButton addCallback cpSetTileFrames",
+"",
+"proc cpTrackTileFrames {param old new} \\",
+"{",
+" send tileFramesButton set on [true $new]",
+"}; send tileFrames addCallback cpTrackTileFrames",
+"",
+"proc tileFramesToggle args \\",
+"{",
+" set value [send tileFramesButton get on]",
+" send tileFramesButton set on [expr !$value]",
+" cpSetTileFrames",
+"}",
+"",
+"",
+"################################################################################",
+"# MAGNIFIER. A subraster around the cursor in the main image window is",
+"# displayed at a high resolution in a marker (known as the magnifier window)",
+"# within the main image window.",
+"################################################################################",
+"",
+"set magnifier_x 0",
+"set magnifier_y 0",
+"set magnifier_width 0",
+"set magnifier_height 0",
+"set mrm_width 0",
+"set mrm_height 0",
+"",
+"set magnifier_enable 0",
+"set magnifier_mag_enable 0",
+"set magnifier_mapping 0",
+"",
+"createMenu magzoomMenu imagewin {",
+" { \"Zoom Factors\" f.title }",
+" { f.dblline }",
+" { \"Zoom 1\" f.exec \"setMagnifierZoom 1\" }",
+" { \"Zoom 2\" f.exec \"setMagnifierZoom 2\" }",
+" { \"Zoom 4\" f.exec \"setMagnifierZoom 4\" }",
+" { \"Zoom 8\" f.exec \"setMagnifierZoom 8\" }",
+" { \"Zoom 16\" f.exec \"setMagnifierZoom 16\" }",
+"} ",
+"",
+"# Magnifier window translations.",
+"set magnifierWinTranslations { \\",
+" !Shift <Btn1Motion>: m_rotateResize()",
+" <Btn1Motion>: m_moveResize()",
+" !Shift <Btn1Down>: m_raise() m_markpos()",
+" <Btn1Down>: m_raise() m_markposAdd()",
+" <Btn1Up>: m_redraw() m_destroyNull()",
+" <Btn2Down>: m_lower()",
+" <Btn3Down>: popup(magzoomMenu)",
+" <Btn3Up>: popdown(magzoomMenu)",
+" !Ctrl <Key>m: call(toggleMagnifier)",
+" !Ctrl <Key>p: call(togglePanner)",
+" <Key>BackSpace: m_deleteDestroy()",
+" <Key>Delete: m_deleteDestroy()",
+" <KeyPress>: graphics-input()",
+" <Motion>: track-cursor() call(wcsUpdate,$x,$y)",
+"}",
+"",
+"",
+"# setMagnifier -- Turn the magnifier on or off.",
+"",
+"set magAlreadyOn 0",
+"",
+"proc setDynamicMagnifier {state} \\",
+"{",
+" global magAlreadyOn magnifier_enable",
+"",
+" if {$state} {",
+" set magAlreadyOn $magnifier_enable",
+" }",
+" if {$magAlreadyOn} {",
+" return",
+" } else {",
+" setMagnifier $state",
+" }",
+"}",
+"",
+"proc toggleMagnifier args \\",
+"{",
+" global magnifier_enable",
+" if {$magnifier_enable} {",
+" setMagnifier 0",
+" } else {",
+" setMagnifier 1",
+" }",
+"}",
+"",
+"",
+"proc setMagnifier {state} \\",
+"{",
+" global winWidth winHeight frameWidth frameHeight",
+" global frame magnifier_mapping magnifierWinTranslations magnifierArea",
+" global magnifier_enable magnifier_height",
+" global magnifierGeom magnifier_x magnifier_y magnifier_width",
+"",
+" if {$state} {",
+" if {$magnifier_enable} \\",
+" return",
+"",
+" # Determine where to place the magnifier.",
+" set scale [expr sqrt(double($magnifierArea) / (512 * 512))]",
+" set scaled_width [expr int(512 * $scale) / 2 * 2 + 1]",
+" set scaled_height [expr int(512 * $scale) / 2 * 2 + 1]",
+" set defGeom [format \"%sx%s-5+5\" $scaled_width $scaled_height]",
+" send imagewin parseGeometry $magnifierGeom $defGeom x y width height",
+"",
+" # Create the main magnifier window (marker).",
+" send imagewin createMarker magnifierWin \\",
+" type rectangle \\",
+" createMode noninteractive \\",
+" width [expr $width / 2] \\",
+" height [expr $height / 2] \\",
+" x [expr $x + $width / 2] \\",
+" y [expr $y + $height / 2] \\",
+" lineColor 8 \\",
+" highlightColor 8 \\",
+" translations $magnifierWinTranslations \\",
+" visible true \\",
+" sensitive true \\",
+" activated true",
+"",
+" # Update the magnifier window position variables so that it comes up",
+" # in the same place the next time.",
+"",
+" send magnifierWin getRect boundary \\",
+" magnifier_x magnifier_y magnifier_width magnifier_height",
+" set magnifierGeom [send imagewin getGeometry \\",
+" $magnifier_x $magnifier_y $magnifier_width $magnifier_height]",
+"",
+" # Register callbacks.",
+" send imagewin addCallback magnifierImagewinResized resize",
+" send resize addCallback magnifierImagewinResized",
+" send magnifierWin addCallback magnifierMovedMapImage moveResize",
+"",
+" send magnifierWin {",
+" addCallback magnifierMoved moveResize;",
+" addCallback magnifierDestroy destroy;",
+" addCallback magnifierWinConstraint constraint;",
+" }",
+"",
+" # Map display frame to magnifier window.",
+" set magnifier_enable 1",
+" set magnifier_mapping [send imagewin nextMapping]",
+" send imagewin refreshMapping $magnifier_mapping",
+"",
+" # create cross-hair",
+" send imagewin createMarker magPointer \\",
+" type rectangle \\",
+" createMode noninteractive \\",
+" width 3 \\",
+" height 3 \\",
+" lineWidth 3 \\",
+" lineColor green \\",
+" highlightcolor green \\",
+" activated true \\",
+" visible true",
+"",
+" # set its position and size",
+" setMagPointerPosition ",
+" magnifierMapImage [expr $winWidth / 2] [expr $winHeight / 2]",
+"",
+" } elseif {$magnifier_enable} {",
+" magnifierDestroy",
+" }",
+"}",
+"",
+"",
+"# magnifierDestroy -- Delete the magnifier.",
+"",
+"proc magnifierDestroy args \\",
+"{",
+" global magnifier_enable ",
+" global magnifier_mapping",
+"",
+" if {$magnifier_enable} {",
+" set magnifier_enable 0",
+"",
+" send imagewin freeMapping $magnifier_mapping",
+" send imagewin deleteCallback magnifierImagewinResized",
+" send resize deleteCallback magnifierImagewinResized",
+" send frame deleteCallback magnifierMapImage",
+"",
+" if [send server queryObject magnifierWin] {",
+" send magnifierWin destroy",
+" }",
+" if [send server queryObject magPointer] {",
+" send magPointer destroy",
+" } ",
+" }",
+"}",
+"",
+"",
+"# magnifierMoved -- Called when the user moves the magnifier window. We need to",
+"# move the region marker to the new window location and record the new location",
+"# so that the window will come up in the same place if closed and reopened.",
+"",
+"proc magnifierMoved {marker event position} \\",
+"{",
+" global winWidth winHeight magnifierGeom frame ",
+" global magnifier_x magnifier_y magnifier_width magnifier_height",
+"",
+" # Move the region marker to the new location.",
+" send client getSource raster sx sy snx sny",
+"",
+" # Update the magnifier window position variables so that it comes up",
+" # in the same place the next time.",
+"",
+" send magnifierWin getRect boundary \\",
+" magnifier_x magnifier_y magnifier_width magnifier_height",
+" set magnifierGeom [send imagewin getGeometry \\",
+" $magnifier_x $magnifier_y $magnifier_width $magnifier_height]",
+"}",
+"",
+"",
+"# magnifierWinConstraint -- Called when the magnifier window is moved, resized,",
+"# or rotated. Constrain the magnifier window to remain within the image window;",
+"# rotation is not permitted.",
+"",
+"proc magnifierWinConstraint {marker event attributes} \\",
+"{",
+" global winWidth winHeight",
+" global magnifier_width magnifier_height",
+"",
+" set width $magnifier_width",
+" set height $magnifier_height",
+" set constraints [list {}]",
+"",
+" # Check the width and height first as we need these below.",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+" switch [lindex $i 0] {",
+" width { set ww [expr $winWidth / 2]",
+" if {$new > $ww} {",
+" lappend constraints \"width $ww\"",
+" set width $ww",
+" } else {",
+" set width $new",
+" }",
+" }",
+" height { set wh [expr $winHeight / 2]",
+" if {$new > $wh} {",
+" lappend constraints \"height $wh\"",
+" set height $wh",
+" } else {",
+" set height $new",
+" }",
+" }",
+" rotangle { lappend constraints \"rotangle 0\"",
+" }",
+" }",
+" }",
+"",
+" # Constrain X and Y.",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+" switch [lindex $i 0] {",
+" x { set pw [expr $width / 2]",
+" if {$new < $pw} {",
+" lappend constraints \"x $pw\"",
+" } elseif {$new > $winWidth - $pw} {",
+" lappend constraints \"x [expr $winWidth - $pw]\"",
+" }",
+" }",
+" y { set ph [expr $height / 2]",
+" if {$new < $ph} {",
+" lappend constraints \"y $ph\"",
+" } elseif {$new > $winHeight - $ph} {",
+" lappend constraints \"y [expr $winHeight - $ph]\"",
+" }",
+" }",
+" }",
+" }",
+"",
+" return $constraints",
+"}",
+"",
+"",
+"# magnifierRegionConstraint -- Called when the region marker in the magnifier",
+"# window is moved, resized, or rotated.",
+"",
+"proc magnifierRegionConstraint {marker event attributes} \\",
+"{",
+" global winWidth winHeight",
+"",
+" set constraints [list {}]",
+" send magnifierWin getRect interior p_x p_y p_width p_height",
+"",
+" # Since the magnifier region marker is a box marker x,y and width,height",
+" # will not both change in the same call, so we can process them all",
+" # independently.",
+"",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+"",
+" switch [lindex $i 0] {",
+" x { set left [expr $p_x + $rwidth + 1]",
+" set right [expr $p_x + $p_width - $rwidth - 1]",
+" if {$new < $left} {",
+" lappend constraints \"x $left\"",
+" } elseif {$new > $right} {",
+" lappend constraints \"x $right\"",
+" }",
+" }",
+" y { set top [expr $p_y + $rheight + 1]",
+" set bottom [expr $p_y + $p_height - $rheight - 1]",
+" if {$new < $top} {",
+" lappend constraints \"y $top\"",
+" } elseif {$new > $bottom} {",
+" lappend constraints \"y $bottom\"",
+" }",
+" }",
+" width { set ww [expr $winWidth / 2]",
+" if {$new > $ww / 2} {",
+" lappend constraints \"width $ww\"",
+" }",
+" }",
+" height { set wh [expr $winHeight / 2]",
+" if {$new > $wh / 2} {",
+" lappend constraints \"height $wh\"",
+" }",
+" }",
+" rotangle { lappend constraints \"rotangle 0\"",
+" }",
+" }",
+" }",
+"",
+" return $constraints",
+"}",
+"",
+"",
+"# magnifierImagewinResized -- If the display window is resized make the",
+"# magnifier track the corner.",
+"",
+"proc magnifierImagewinResized args \\",
+"{",
+" global magnifier_enable magnifier_mapping magnifier_height",
+" global magnifierGeom magnifier_x magnifier_y magnifier_width",
+"",
+" if {$magnifier_enable} {",
+" set old_x $magnifier_x; set old_width $magnifier_width",
+" set old_y $magnifier_y; set old_height $magnifier_height",
+"",
+" # Get new location of magnifier window.",
+" set defGeom [format \"%sx%s+5+5\" $magnifier_width $magnifier_height]",
+" send imagewin parseGeometry $magnifierGeom $defGeom x y width height",
+"",
+" # Reposition the marker.",
+" send magnifierWin \"\\",
+" markpos; \\",
+" setAttributes \\",
+" x [expr $x + $width / 2] \\",
+" y [expr $y + $height / 2] \\",
+" width [expr $width / 2] \\",
+" height [expr $height / 2]; \\",
+" redraw\"",
+"",
+" # Update the magnifier window position variables so that it comes up",
+" # in the same place the next time.",
+" send magnifierWin getRect boundary \\",
+" magnifier_x magnifier_y magnifier_width magnifier_height",
+" set magnifierGeom [send imagewin getGeometry \\",
+" $magnifier_x $magnifier_y $magnifier_width $magnifier_height]",
+"",
+" # Make sure the magnifier window is on top.",
+" send imagewin raiseMapping $magnifier_mapping",
+"",
+" # Refresh the magnifier window if it did not move.",
+" if {$magnifier_x == $old_x && $magnifier_y == $old_y &&",
+" $magnifier_width == $old_width && $magnifier_height == $old_height} {",
+" send imagewin refreshMapping $magnifier_mapping",
+" }",
+" }",
+"}",
+"",
+"",
+"# resetMagnifier -- Reinitialize the magnifier.",
+"",
+"proc resetMagnifier {param old new} \\",
+"{",
+" global magnifierGeom displayMagnifier",
+"",
+" if {$new == \"done\"} {",
+" setMagnifier [true $displayMagnifier]",
+" } else {",
+" setMagnifier 0",
+" if {$new != \"startup\"} {",
+" set magnifierGeom +5+5",
+" }",
+" }",
+"}; send initialize addCallback resetMagnifier",
+"",
+"",
+"set last_mag_x [expr $winWidth / 2]",
+"set last_mag_y [expr $winHeight / 2]",
+"",
+"# magnifierMovedMapImage -- Front end to magnifierMapImage, called when ",
+"# magnifier window is moved or resized.",
+"",
+"proc magnifierMovedMapImage args \\",
+"{",
+" global last_mag_x last_mag_y",
+"",
+" magnifierMapImage $last_mag_x $last_mag_y",
+" setMagPointerPosition",
+"}",
+"",
+"# The following code was borrowed from the SAOtng GUI by Eric Mandel of SAO",
+"#--------------------------------------------------------------------------",
+"",
+"# globals for magnifier",
+"set mag_w 0",
+"set mag_h 0",
+"",
+"#",
+"# setMagnifierZoom -- set the zoom factor for the magnifier",
+"#",
+"proc setMagnifierZoom { zoom } \\",
+"{",
+" global mag_w mag_h",
+"",
+" send magnifierWin getRect boundary \\",
+" magnifier_x magnifier_y magnifier_width magnifier_height",
+" set mag_w [expr int( ( $magnifier_width + $zoom - 1 ) / $zoom) ]",
+" set mag_h [expr int( ( $magnifier_height + $zoom - 1 ) / $zoom) ]",
+"",
+" #set mw [expr int (($magnifier_width - 1) / ($mag_w * 2))]",
+" #if { $mw < 4 } { set mw 4 }",
+" #set mh [expr int (($magnifier_height - 1) / ($mag_h * 2))]",
+" #if { $mh < 4 } { set mh 4 }",
+" #send magPointer \"setAttributes width $mw height $mh; redraw\"",
+"}",
+"",
+"# magnifierMapImage -- Map the of the current display frame centered on the",
+"# pointer into the magnifier window. Called when the frame changes, the",
+"# pointer moves in the main image window, or (via magnifierMovedMapImage)",
+"# the magnifier window is moved or resized.",
+"",
+"set magnifierROP 0",
+"",
+"proc magnifierMapImage {x y} \\",
+"{",
+" global magnifier_enable frame",
+" global last_mag_x last_mag_y",
+" global magnifier_mapping",
+" global winWidth winHeight",
+" global mag_w mag_h",
+" global magnifierROP",
+"",
+" if {!$magnifier_enable || $frame == 0} \\",
+" return",
+"",
+"# if {abs($last_mag_x-$x) != 1 && abs($last_mag_y-$y) != 1} {",
+"# # For efficiency we won't compute the sqrt of the distance but instead",
+"# # just compare the square. Use a threshold of 6 pixels so when we",
+"# # narrow in on the ROI the magnifier is still (mostly) correct.",
+"# set diff [expr (($last_mag_x-$x) * ($last_mag_x-$x)) + \\",
+"# (($last_mag_y-$y) * ($last_mag_y-$y))]",
+"# if {$diff > 36} {",
+"# set last_mag_x $x",
+"# set last_mag_y $y",
+"# return",
+"# }",
+"# }",
+"",
+" set last_mag_x $x",
+" set last_mag_y $y",
+"",
+" send magnifierWin getRect interior dx dy dnx dny",
+" if [send imagewin activeMapping $magnifier_mapping] {",
+" send imagewin raiseMapping $magnifier_mapping",
+" }",
+"",
+" # initialize the magnifier zoom factor, if necessary",
+" if { !$mag_w || !$mag_h } {",
+" setMagnifierZoom 4",
+" }",
+"",
+" set sx [expr $x - $mag_w / 2 ]",
+" set sy [expr $y - $mag_h / 2 ]",
+"",
+" # Constrain the source rectangle within the main image window ",
+" # (not overlapping an edge or the magnifier window).",
+"",
+" if {$sx > [expr $dx - $mag_w] && $sx < [expr $dx + $dnx] && ",
+" $sy > [expr $dy - $mag_h] && $sy < [expr $dy + $dny] } {",
+"",
+" # The source rectangle would overlap the magnifier window; fix that.",
+"",
+" set dist(l) [expr $sx - ($dx - $mag_w)]",
+" set dist(b) [expr $dy + $dny - $sy]",
+" set dist(r) [expr $dx + $dnx - $sx]",
+" set dist(t) [expr $sy - ($dy - $mag_h)]",
+"",
+" # Put the distances in order.",
+"",
+" foreach j [array names dist] {",
+" set alreadyset($j) 0",
+" }",
+"",
+" for {set i 0} {$i < 4} {incr i} {",
+" set candidate \"\"",
+" foreach j [array names dist] {",
+" if {!$alreadyset($j)} {",
+" if {$candidate == \"\"} {",
+" set candidate $j",
+" set minsofar $dist($j)",
+" } elseif {$dist($j) < $minsofar} {",
+" set candidate $j",
+" set minsofar $dist($j)",
+" }",
+" }",
+" }",
+" set order($i) $candidate",
+" set alreadyset($candidate) 1",
+" }",
+"",
+" # Try the sides in order, using the first one where there's room.",
+"",
+" for {set i 0} {$i < 4} {incr i} {",
+" if {$order($i) == \"l\"} {",
+" if {$dx >= $mag_w} {",
+" set sx [expr $dx - $mag_w]",
+" break",
+" }",
+" } elseif {$order($i) == \"b\"} {",
+" if {$winHeight >= $dy + $dny + $mag_h} {",
+" set sy [expr $dy + $dny]",
+" break",
+" }",
+" } elseif {$order($i) == \"r\"} {",
+" if {$winWidth >= $dx + $dnx + $mag_w} {",
+" set sx [expr $dx + $dnx]",
+" break",
+" }",
+" } elseif {$order($i) == \"t\"} {",
+" if {$dy >= $mag_h} {",
+" set sy [expr $dy - $mag_h]",
+" break",
+" }",
+" }",
+" }",
+" }",
+"",
+" # Make sure we don't go beyond an edge of the main window.",
+"",
+" if {$sx < 0} {",
+" set sx 0",
+" } else {",
+" set sxmax [expr $winWidth - $mag_w]",
+" if {$sx > $sxmax} {",
+" set sx $sxmax",
+" }",
+" }",
+"",
+" if {$sy < 0} {",
+" set sy 0",
+" } else {",
+" set symax [expr $winHeight - $mag_h]",
+" if {$sy > $symax} {",
+" set sy $symax",
+" }",
+" }",
+"",
+" # Map 32 x 32 centered on pointer in main window.",
+" set err [catch {send imagewin setMapping $magnifier_mapping $magnifierROP \\",
+" 0 pixel $sx $sy $mag_w $mag_h \\",
+" 0 pixel $dx $dy $dnx $dny}]",
+" if { $err != 0 } {",
+" Print \"There was a problem setting up the magnifier ... recovering\"",
+" }",
+"}",
+"",
+"",
+"# set the position of the magnifier marker in the center of the mag window",
+"proc setMagPointerPosition args \\",
+"{",
+" global magnifier_enable",
+"",
+" if { !$magnifier_enable } \\",
+" return",
+"",
+" send magnifierWin \"getAttributes x x y y\"",
+" set xpos [expr $x + 1]",
+" set ypos [expr $y + 1]",
+"",
+" send magPointer \"setAttributes x $xpos y $ypos visible true; redraw\"",
+"}",
+"",
+"",
+"",
+"################################################################################",
+"# PANNER. The full frame mapped into the main image window is displayed at a",
+"# reduced resolution in a marker (known as the panner window) within the main",
+"# image window. The currently displayed region of the frame is indicated",
+"# using a small marker within the panner window. This small marker may be",
+"# moved or resized to pan or zoom the image in the main display window.",
+"################################################################################",
+"",
+"set panner_x 0",
+"set panner_y 0",
+"set panner_width 0",
+"set panner_height 0",
+"set prm_width 0",
+"set prm_height 0",
+"",
+"set panner_enable 0",
+"set panner_pan_enable 0",
+"set panner_mag_enable 0",
+"set panner_region_enable 0",
+"set panner_mapping 0",
+"",
+"# Panner window translations.",
+"set pannerWinTranslations { \\",
+" !Shift <Btn1Motion>: m_rotateResize()",
+" <Btn1Motion>: m_moveResize()",
+" !Shift <Btn1Down>: m_raise() m_markpos()",
+" <Btn1Down>: m_raise() m_markposAdd()",
+" <Btn1Up>: m_redraw() m_destroyNull()",
+" <Btn2Down>: m_lower()",
+" <Btn2Up>: call(pannerPanXY,$x,$y)",
+" !Ctrl <Key>b: call(prevFrame,$name)",
+" !Ctrl <Key>f: call(nextFrame,$name)",
+" !Ctrl <Key>h: call(move_cursor,-1,0)",
+" !Ctrl <Key>j: call(move_cursor,0,1)",
+" !Ctrl <Key>k: call(move_cursor,0,-1)",
+" !Ctrl <Key>l: call(move_cursor,1,0)",
+" !Ctrl <Key>n: call(normalize)",
+" !Ctrl <Key>c: call(cpZoomAction,centerFrame)",
+" !Ctrl <Key>i: call(cpInvert)",
+" !Ctrl <Key>m: call(toggleMagnifier)",
+" !Ctrl <Key>p: call(togglePanner)",
+" !Ctrl <Key>r: call(cpRegisterFrames)",
+" !Ctrl <Key>s: call(cpMatchFrames)",
+" !Alt <Key>1: call(cpSetFrame,frame1)",
+" !Alt <Key>2: call(cpSetFrame,frame2)",
+" !Alt <Key>3: call(cpSetFrame,frame3)",
+" !Alt <Key>4: call(cpSetFrame,frame4)",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed)",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed)",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed)",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed)",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed)",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed)",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed)",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed)",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed)",
+" <Key>BackSpace: m_deleteDestroy()",
+" <Key>Delete: m_deleteDestroy()",
+" <KeyPress>: graphics-input()",
+" <Motion>: track-cursor() call(wcsUpdate,$x,$y)",
+"}",
+"",
+"",
+"# setPanner -- Turn the panner on or off.",
+"",
+"proc togglePanner args \\",
+"{",
+" global panner_enable",
+"",
+" if {$panner_enable} {",
+" setPanner 0",
+" } else {",
+" setPanner 1",
+" }",
+"}",
+"",
+"",
+"proc setPanner {state} \\",
+"{",
+" global winWidth winHeight frameWidth frameHeight",
+" global frame panner_mapping pannerWinTranslations pannerArea",
+" global panner_enable panner_region_enable panner_pan_enable",
+" global pannerGeom panner_x panner_y panner_width panner_height",
+" global last_compass",
+"",
+" if {$state} {",
+" if {$panner_enable} \\",
+" return",
+"",
+" # Determine where to place the panner.",
+" set scale \\",
+" [expr sqrt(double($pannerArea) / ($frameWidth * $frameHeight))]",
+" set scaled_width [expr int($frameWidth * $scale) / 2 * 2 + 1]",
+" set scaled_height [expr int($frameHeight * $scale) / 2 * 2 + 1]",
+" set defGeom [format \"%sx%s-5+5\" $scaled_width $scaled_height]",
+" send imagewin parseGeometry $pannerGeom $defGeom x y width height",
+"",
+" # Create the main panner window (marker).",
+" send imagewin createMarker pannerWin \\",
+" type rectangle \\",
+" createMode noninteractive \\",
+" width [expr $width / 2] \\",
+" height [expr $height / 2] \\",
+" x [expr $x + $width / 2] \\",
+" y [expr $y + $height / 2] \\",
+" lineColor 8 \\",
+" highlightColor 8 \\",
+" translations $pannerWinTranslations \\",
+" visible true \\",
+" sensitive true \\",
+" autoRedraw true \\",
+" activated true",
+"",
+" # Update the panner window position variables so that it comes up",
+" # in the same place the next time.",
+"",
+" send pannerWin getRect boundary \\",
+" panner_x panner_y panner_width panner_height",
+" set pannerGeom [send imagewin getGeometry \\",
+" $panner_x $panner_y $panner_width $panner_height]",
+"",
+" # Register callbacks.",
+" send frame addCallback pannerMapImage",
+" send frameRegion addCallback pannerSetRegion",
+" send imagewin addCallback pannerImagewinResized resize",
+" send resize addCallback pannerImagewinResized",
+"",
+" send pannerWin {",
+" addCallback pannerMapImage moveResize;",
+" addCallback pannerMoved moveResize;",
+" addCallback pannerDestroy destroy;",
+" addCallback pannerWinConstraint constraint;",
+" }",
+"",
+" # Map display frame to panner window.",
+" set panner_enable 1",
+" set panner_region_enable 1",
+" set panner_mapping [send imagewin nextMapping]",
+" pannerMapImage init; send imagewin refreshMapping $panner_mapping",
+"",
+" # Redraw the compass if necessary.",
+" send compass \"setSensitive True ; set on $last_compass\"",
+" if { $last_compass } \\",
+" drawCompass",
+"",
+" # Draw a marker in the panner window outlining displayed region.",
+" send imagewin createMarker pannerRegionMarker \\",
+" type box \\",
+" createMode noninteractive \\",
+" translations $pannerWinTranslations \\",
+" lineColor green \\",
+" highlightColor green \\",
+" sensitive true",
+"",
+" # Fire up the panner region marker.",
+" send client getSource raster sx sy snx sny",
+" pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]",
+" send pannerRegionMarker \"\\",
+" addCallback pannerPanImage moveResize; \\",
+" addCallback pannerDestroy destroy; \\",
+" addCallback pannerRegionConstraint constraint; \\",
+" setAttributes visible true activated true; \\",
+" redraw\"",
+" set panner_pan_enable 1",
+"",
+" } elseif {$panner_enable} {",
+" pannerDestroy",
+" }",
+"}",
+"",
+"",
+"# pannerDestroy -- Delete the panner.",
+"",
+"proc pannerDestroy args \\",
+"{",
+" global panner_enable panner_region_enable panner_pan_enable",
+" global panner_mapping",
+"",
+" if {$panner_enable} {",
+" set panner_enable 0",
+" set panner_pan_enable 0",
+" set panner_region_enable 0",
+"",
+" send imagewin freeMapping $panner_mapping",
+" send imagewin deleteCallback pannerImagewinResized",
+" send resize deleteCallback pannerImagewinResized",
+" send frame deleteCallback pannerMapImage",
+" send frameRegion deleteCallback pannerSetRegion",
+"",
+" if [send server queryObject pannerRegionMarker] {",
+" send pannerRegionMarker destroy",
+" }",
+" if [send server queryObject pannerWin] {",
+" send pannerWin destroy",
+" }",
+"",
+" # Disable the compass.",
+" send compass \"setSensitive False ; set on False\"",
+" }",
+"}",
+"",
+"",
+"# pannerMapImage -- Map the current display frame into the panner window.",
+"# Called when the frame changes or the panner window is moved or resized.",
+"# The panner window displays a small dezoomed version of the full frame.",
+"",
+"proc pannerMapImage args \\",
+"{",
+" global panner_enable frame",
+" global panner_mapping",
+"",
+" if {!$panner_enable || $frame == 0} \\",
+" return",
+"",
+" set raster [send client getRaster]",
+" send pannerWin getRect interior dx dy dnx dny",
+" send imagewin queryRaster $raster width height",
+"",
+" if [send imagewin activeMapping $panner_mapping] {",
+" send imagewin raiseMapping $panner_mapping",
+" }",
+" send imagewin setMapping $panner_mapping 0 \\",
+" $raster pixel 0 0 $width $height \\",
+" 0 pixel $dx $dy $dnx $dny",
+"}",
+"",
+"",
+"# pannerSetRegion -- Adjust the pannerWin region marker to outline the",
+"# region displayed in the main display window. This is called in response",
+"# to a frameRegion event when the main display mapping changes, e.g. when",
+"# the frame changes or the user zooms or pans the main window. The region",
+"# marker is moved and resized to reflect the new view.",
+"",
+"proc pannerSetRegion {param old new} \\",
+"{",
+" global panner_enable panner_region_marker",
+" global panner_region_enable panner_pan_enable",
+" global frame frameWidth frameHeight prm_width prm_height",
+"",
+" if {!$panner_enable || !$panner_region_enable || $frame == 0} \\",
+" return",
+"",
+" # new: frame sx sy snx sny",
+" set src_frame [lindex $new 0]",
+" set sx [lindex $new 1]; set snx [lindex $new 3]",
+" set sy [lindex $new 2]; set sny [lindex $new 4]",
+"",
+" if {$src_frame != $frame} \\",
+" return",
+"",
+" send pannerWin getRect interior px py pnx pny",
+"",
+" set x [expr ($sx + $snx/2.0) / $frameWidth * $pnx + $px]",
+" set y [expr ($sy + $sny/2.0) / $frameHeight * $pny + $py]",
+" set width [expr ($snx/2.0) / $frameWidth * $pnx + 1]",
+" set height [expr ($sny/2.0) / $frameHeight * $pny + 1]",
+"",
+" set pan_save $panner_pan_enable; set panner_pan_enable 0",
+" set panner_region_enable 0",
+"",
+" send pannerRegionMarker \"\\",
+" markpos; \\",
+" setAttributes x $x y $y width $width height $height; \\",
+" redraw; raise\"",
+" send pannerRegionMarker getAttributes width prm_width height prm_height",
+"",
+" set panner_region_enable 1",
+" set panner_pan_enable $pan_save",
+"}",
+"",
+"",
+"# pannerPanImage -- Pan or zoom the image in the main image window. This is",
+"# called when the user moves the region marker within the panner window.",
+"",
+"proc pannerPanImage {marker event position} \\",
+"{",
+" global panner_pan_enable",
+" global winWidth winHeight",
+" global prm_width prm_height",
+" global frame auto_reg frameOffsetX frameOffsetY",
+"",
+" if {!$panner_pan_enable} \\",
+" return",
+"",
+" # position: x y width height.",
+" set new_width [lindex $position 2]",
+" set new_height [lindex $position 3]",
+"",
+" # region: type raster x y width height.",
+" set region [send pannerRegionMarker getRegion unmap]",
+" set x [expr [lindex $region 2] + 1]; set width [lindex $region 4]",
+" set y [expr [lindex $region 3] + 1]; set height [lindex $region 5]",
+"",
+" set panner_pan_enable 0",
+" if {$new_width == $prm_width && $new_height == $prm_height} {",
+" send client pan $x $y",
+" } else {",
+" set xscale [expr ($winWidth / 2.0) / $width]",
+" set yscale [expr ($winHeight / 2.0) / $height]",
+" if {$auto_reg == 1} {",
+" send client zoomAbs $xscale $yscale $x $y \\",
+" $frameOffsetX($frame) $frameOffsetY($frame)",
+" } else {",
+" send client zoom $xscale $yscale $x $y",
+" }",
+" }",
+" set panner_pan_enable 1",
+"}",
+"",
+"",
+"# pannerPanXY -- Pan to the point X,Y in the panner window coordinate",
+"# system. Called when the user clicks MB2 in the panner window.",
+"",
+"proc pannerPanXY {x y} \\",
+"{",
+" send imagewin unmapPixel $x $y raster rx ry",
+" send client pan $rx $ry",
+"}",
+"",
+"",
+"# pannerMoved -- Called when the user moves the panner window. We need to",
+"# move the region marker to the new window location and record the new location",
+"# so that the window will come up in the same place if closed and reopened.",
+"",
+"proc pannerMoved {marker event position} \\",
+"{",
+" global winWidth winHeight",
+" global frame panner_pan_enable pannerGeom",
+" global panner_x panner_y panner_width panner_height",
+"",
+" # Move the region marker to the new location.",
+" set pan_save $panner_pan_enable; set panner_pan_enable 0",
+" send client getSource raster sx sy snx sny",
+" pannerSetRegion dummy dummy [concat $frame $sx $sy $snx $sny]",
+" set panner_pan_enable $pan_save",
+"",
+" # Update the panner window position variables so that it comes up",
+" # in the same place the next time.",
+"",
+" send pannerWin getRect boundary \\",
+" panner_x panner_y panner_width panner_height",
+" set pannerGeom [send imagewin getGeometry \\",
+" $panner_x $panner_y $panner_width $panner_height]",
+"",
+" drawCompass",
+"",
+" send pannerRegionMarker raise",
+"}",
+"",
+"",
+"# pannerWinConstraint -- Called when the panner window is moved, resized, or",
+"# rotated. Constrain the panner window to remain within the image window;",
+"# rotation is not permitted.",
+"",
+"proc pannerWinConstraint {marker event attributes} \\",
+"{",
+" global winWidth winHeight",
+" global panner_width panner_height",
+"",
+" set width $panner_width",
+" set height $panner_height",
+" set constraints [list {}]",
+"",
+" # Check the width and height first as we need these below.",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+" switch [lindex $i 0] {",
+" width { set ww [expr $winWidth / 2]",
+" if {$new > $ww} {",
+" lappend constraints \"width $ww\"",
+" set width $ww",
+" } else {",
+" set width $new",
+" }",
+" }",
+" height { set wh [expr $winHeight / 2]",
+" if {$new > $wh} {",
+" lappend constraints \"height $wh\"",
+" set height $wh",
+" } else {",
+" set height $new",
+" }",
+" }",
+" rotangle { lappend constraints \"rotangle 0\"",
+" }",
+" }",
+" }",
+"",
+" # Constrain X and Y.",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+" switch [lindex $i 0] {",
+" x { set pw [expr $width / 2]",
+" if {$new < $pw} {",
+" lappend constraints \"x $pw\"",
+" } elseif {$new > $winWidth - $pw} {",
+" lappend constraints \"x [expr $winWidth - $pw]\"",
+" }",
+" }",
+" y { set ph [expr $height / 2]",
+" if {$new < $ph} {",
+" lappend constraints \"y $ph\"",
+" } elseif {$new > $winHeight - $ph} {",
+" lappend constraints \"y [expr $winHeight - $ph]\"",
+" }",
+" }",
+" }",
+" }",
+"",
+" return $constraints",
+"}",
+"",
+"",
+"# pannerRegionConstraint -- Called when the region marker in the panner",
+"# window is moved, resized, or rotated.",
+"",
+"proc pannerRegionConstraint {marker event attributes} \\",
+"{",
+" global winWidth winHeight",
+" global frame",
+"",
+" set constraints [list {}]",
+" send pannerWin getRect interior p_x p_y p_width p_height",
+" send pannerRegionMarker getAttributes width rwidth height rheight",
+"",
+" # Since the panner region marker is a box marker x,y and width,height",
+" # will not both change in the same call, so we can process them all",
+" # independently.",
+"",
+" foreach i $attributes {",
+" set new [lindex $i 2]",
+"",
+" switch [lindex $i 0] {",
+" x { set left [expr $p_x + $rwidth + 1]",
+" set right [expr $p_x + $p_width - $rwidth - 1]",
+" if {$new < $left} {",
+" lappend constraints \"x $left\"",
+" } elseif {$new > $right} {",
+" lappend constraints \"x $right\"",
+" }",
+" }",
+" y { set top [expr $p_y + $rheight + 1]",
+" set bottom [expr $p_y + $p_height - $rheight - 1]",
+" if {$new < $top} {",
+" lappend constraints \"y $top\"",
+" } elseif {$new > $bottom} {",
+" lappend constraints \"y $bottom\"",
+" }",
+" }",
+" width { set ww [expr $winWidth / 2]",
+" if {$new > $ww / 2} {",
+" lappend constraints \"width $ww\"",
+" }",
+" }",
+" height { set wh [expr $winHeight / 2]",
+" if {$new > $wh / 2} {",
+" lappend constraints \"height $wh\"",
+" }",
+" }",
+" rotangle { lappend constraints \"rotangle 0\"",
+" }",
+" }",
+" }",
+" drawCompass",
+"",
+" return $constraints",
+"}",
+"",
+"",
+"# pannerImagewinResized -- If the display window is resized make the panner",
+"# track the corner.",
+"",
+"proc pannerImagewinResized args \\",
+"{",
+" global panner_enable panner_mapping ",
+" global pannerGeom panner_x panner_y panner_width panner_height",
+" global frame",
+"",
+" if {$panner_enable} {",
+" set old_x $panner_x; set old_width $panner_width",
+" set old_y $panner_y; set old_height $panner_height",
+"",
+" eraseCompass",
+"",
+" # Get new location of panner window.",
+" set defGeom [format \"%sx%s-5+5\" $panner_width $panner_height]",
+" send imagewin parseGeometry $pannerGeom $defGeom x y width height",
+"",
+" # Reposition the marker.",
+" send pannerWin \"\\",
+" markpos; \\",
+" setAttributes \\",
+" x [expr $x + $width / 2] \\",
+" y [expr $y + $height / 2] \\",
+" width [expr $width / 2] \\",
+" height [expr $height / 2]; \\",
+" redraw\"",
+"",
+" # Update the panner window position variables so that it comes up",
+" # in the same place the next time.",
+" send pannerWin getRect boundary \\",
+" panner_x panner_y panner_width panner_height",
+" set pannerGeom [send imagewin getGeometry \\",
+" $panner_x $panner_y $panner_width $panner_height]",
+"",
+" # Make sure the panner window is on top.",
+" send imagewin raiseMapping $panner_mapping",
+"",
+" # Refresh the panner window if it did not move.",
+" if {$panner_x == $old_x && $panner_y == $old_y &&",
+" $panner_width == $old_width && $panner_height == $old_height} {",
+" send imagewin refreshMapping $panner_mapping",
+" }",
+"",
+" drawCompass",
+" }",
+"}",
+"",
+"",
+"# resetPanner -- Reinitialize the panner.",
+"",
+"proc resetPanner {param old new} \\",
+"{",
+" global pannerGeom displayPanner",
+" if {$new == \"done\"} {",
+" setPanner [true $displayPanner]",
+" } else {",
+" setPanner 0",
+" if {$new != \"startup\"} {",
+" set pannerGeom -5+5",
+" }",
+" }",
+"}; send initialize addCallback resetPanner",
+"",
+"",
+"",
+"################################################################################",
+"# Print Panel Functions.",
+"################################################################################",
+"",
+"# Global variables needed for the print setup panel",
+"",
+"set printColor prGrayButton",
+"set orientation epsPortButton",
+"set page_size epsLetterButton",
+"set imageScale 100",
+"",
+"set epsWidgets { epsPageGroup epsOrientLabel epsSizeLabel ",
+" epsPortButton epsLandButton epsLetterButton epsLegalButton epsA4Button",
+" ScaleFrame SCdecrease SCtext SCincrease ",
+"}",
+"",
+"",
+"proc psetup_init args \\",
+"{",
+" global printColor orientation page_size imageScale #format",
+"",
+" set_printer toPrinter callback 1",
+" send SCtext set label [ format \"%d %%\" $imageScale ]",
+" send $printColor set on true",
+" send $orientation set on true",
+" send $page_size set on true",
+"}",
+"",
+"",
+"proc doPrintOptions { param old new } \\",
+"{",
+" global imageScale page_size orientation imageScale printColor",
+" global warnings",
+"",
+" send printStatus set label {}",
+" set val [join [lrange $new 1 end] \" \"]",
+"",
+" # print [format \"doPrintOptions %s = %s\" [lindex $new 0] $val]",
+" switch [lindex $new 0] {",
+" autoscale { if { $val == \"True\" } {",
+" send epsscaleButton set on true",
+" } elseif { $val == \"False\" } {",
+" send epsscaleButton set on false",
+" }",
+" }",
+" autorotate { if { $val == \"True\" } {",
+" send autorotateButton set on true",
+" } elseif { $val == \"False\" } {",
+" send autorotateButton set on false",
+" }",
+" }",
+" maxaspect { if { $val == \"True\" } {",
+" send aspectButton set on true",
+" } elseif { $val == \"False\" } {",
+" send aspectButton set on false",
+" }",
+" }",
+" annotate { if { $val == \"True\" } {",
+" send annotateButton set on true",
+" send titleButton setSensitive true",
+" send colorbarButton setSensitive true",
+" send bordersButton setSensitive true",
+" send titleLabel setSensitive true",
+" send titleString setSensitive true",
+" } elseif { $val == \"False\" } {",
+" send annotateButton set on false",
+" send titleButton setSensitive false",
+" send colorbarButton setSensitive false",
+" send bordersButton setSensitive false",
+" send titleLabel setSensitive false",
+" send titleString setSensitive false",
+" }",
+" }",
+" compress { if { $val == \"True\" } {",
+" send compressButton set on true",
+" } elseif { $val == \"False\" } {",
+" send compressButton set on false",
+" }",
+" }",
+" orientation { send $orientation set on false",
+" if { $val == \"portrait\" } {",
+" send epsPortButton set on true",
+" set orientation epsPortButton",
+" } elseif { $val == \"landscape\" } {",
+" send epsPortButton set on false",
+" set orientation epsLandButton",
+" }",
+" }",
+" papersize { send $page_size set on false",
+" if { $val == \"letter\" } {",
+" send epsLetterButton set on true",
+" set page_size epsLetterButton",
+" } elseif { $val == \"legal\" } {",
+" send epsLegalButton set on true",
+" set page_size epsLegalButton",
+" } elseif { $val == \"A4\" } {",
+" send epsA4Button set on true",
+" set page_size epsA4Button",
+" } elseif { $val == \"B5\" } {",
+" send epsB5Button set on true",
+" set page_size epsB5Button",
+" }",
+" }",
+" imscale { set imageScale $val",
+" send SCtext set label [ format \"%d %%\" $imageScale ]",
+" }",
+" colortype { send $printColor set on false",
+" if { $val == \"gray\" } {",
+" send prGrayButton set on true",
+" set printColor prGrayButton",
+" } elseif { $val == \"pseudo\" } {",
+" send prPseudoButton set on true",
+" set printColor prPseudoButton",
+" } elseif { $val == \"rgb\" } {",
+" send prRGBButton set on true",
+" set printColor prRGBButton",
+" }",
+" }",
+" printerName { if [send toPrinter get on] {",
+" send printlist highlight $val",
+" }",
+" }",
+" printCmd { if [send toPrinter get on] {",
+" send printcmd set string $val",
+" }",
+" }",
+" printFile { if [send toFile get on] {",
+" send printcmd set string $val",
+" }",
+" }",
+" deviceType { if { $val == \"Printer\" } {",
+" send printerLabel set label \"Print Command:\"",
+" send toPrinter set on true",
+" send toFile set on false",
+" } elseif { $val == \"File\" } {",
+" send printerLabel set label \"File Name:\"",
+" send toPrinter set on false",
+" send toFile set on true",
+" send printlist unhighlight",
+" }",
+" }",
+" dotitle { if { $val == \"True\" } {",
+" send titleButton set on true",
+" } elseif { $val == \"False\" } {",
+" send titleButton set on false",
+" }",
+" }",
+" doborders { if { $val == \"True\" } {",
+" send bordersButton set on true",
+" } elseif { $val == \"False\" } {",
+" send bordersButton set on false",
+" }",
+" }",
+" docolorbar { if { $val == \"True\" } {",
+" send colorbarButton set on true",
+" } elseif { $val == \"False\" } {",
+" send colorbarButton set on false",
+" }",
+" }",
+" title { send titleString set string $val",
+" }",
+"",
+" status { send printStatus set label $val",
+" send server synchronize",
+" }",
+" warning { if {$warnings} { Wexec server $val }",
+" }",
+" }",
+"}; send printOptions addCallback doPrintOptions",
+"",
+"",
+"# Print options procedures.",
+"# -------------------------------",
+"",
+"set prOptsWidgets { ",
+" toPrinter toFile",
+" prGrayButton prPseudoButton prRGBButton",
+" epsLandButton epsPortButton",
+" epsLetterButton epsLegalButton epsA4Button epsB5Button",
+" SCincrease SCdecrease",
+"}",
+"set prSimpleOptions { ",
+" epsscaleButton autorotateButton aspectButton annotateButton compressButton ",
+" titleButton bordersButton colorbarButton",
+"}",
+"",
+"proc prPrintCommand { widget cbtype args } \\",
+"{",
+" if [send toFile get on] {",
+" send client setPrintOption printfile $args",
+" send printStatus set label [format \"output file set to %s\" $args]",
+" } else {",
+" send client setPrintOption printcmd $args",
+" send printStatus set label [format \"print command set to %s\" $args]",
+" }",
+"}; send printcmd addCallback prPrintCommand",
+"",
+"proc prTitleString { widget cbtype args } \\",
+"{",
+" send client setPrintOption title $args",
+"}; send titleString addCallback prTitleString",
+"",
+"proc prOptionToggle { widget cbtype args } \\",
+"{",
+" global imageScale",
+"",
+" # Handle the image scale widgets first.",
+" switch $widget {",
+" SCincrease { set scale [expr $imageScale + 5] ",
+" send client setPrintOption imscale $scale",
+" return",
+" }",
+" SCdecrease { set scale [ expr $imageScale - 5 ]",
+" send client setPrintOption imscale $scale",
+" return",
+" }",
+" }",
+"",
+" # If it's not one of those it must be one of the radio toggles.",
+" set val [ send $widget get on ]",
+" #print [ format \"prOptionToggle %s = %s\" $widget $val ]",
+" if { $val == 1 } {",
+" switch $widget {",
+" toPrinter { send client setPrintOption devicetype printer }",
+" toFile { send client setPrintOption devicetype file }",
+"",
+" epsLandButton { send client setPrintOption orientation landscape }",
+" epsPortButton { send client setPrintOption orientation portrait }",
+"",
+" epsLetterButton { send client setPrintOption papersize letter }",
+" epsLegalButton { send client setPrintOption papersize legal }",
+" epsA4Button { send client setPrintOption papersize A4 }",
+" epsB5Button { send client setPrintOption papersize B5 }",
+"",
+" prGrayButton { send client setPrintOption colortype gray }",
+" prPseudoButton { send client setPrintOption colortype pseudo }",
+" prRGBButton { send client setPrintOption colortype rgb }",
+" }",
+" } else {",
+" send $widget set on true",
+" }",
+"",
+"} ; foreach w $prOptsWidgets { send $w addCallback prOptionToggle }",
+"",
+"proc prSimpleOptionToggle { widget args } \\",
+"{",
+" set val [ send $widget get on ]",
+" #print [ format \"prSimpleOptionToggle %s = %s\" $widget $val ]",
+"",
+" switch $widget {",
+" epsscaleButton { send client setPrintOption autoscale $val }",
+" autorotateButton { send client setPrintOption autorotate $val }",
+" aspectButton { send client setPrintOption maxaspect $val }",
+" annotateButton { send client setPrintOption annotate $val }",
+" compressButton { send client setPrintOption compress $val }",
+"",
+" titleButton { send client setPrintOption dotitle $val }",
+" bordersButton { send client setPrintOption doborders $val }",
+" colorbarButton { send client setPrintOption docolorbar $val }",
+" }",
+"} ; foreach w $prSimpleOptions { send $w addCallback prSimpleOptionToggle }",
+"",
+"",
+"",
+"# Printer display and selection.",
+"# -------------------------------",
+"set lprList {}",
+"",
+"proc psSetPrintList {param old new} \\",
+"{",
+" global lprList",
+" set lprList $new",
+" send printlist setList $new resize",
+" send printlist highlight 0",
+"}; send printerList addCallback psSetPrintList",
+"",
+"proc lprResize args \\",
+"{",
+" global lprList",
+" send printlist setList $lprList resize",
+" send printlist highlight 0",
+"}; send printlist addEventHandler lprResize ResizeRedirectMask",
+"",
+"proc psSelectPrint {widget cbtype selections indices} \\",
+"{",
+" global printerlist",
+" foreach selection $selections {",
+" send client setPrintOption printername $selection",
+" }",
+"}; send printlist addCallback psSelectPrint",
+"",
+"",
+"proc Print args \\",
+"{",
+" global winWidth winHeight",
+" send imagewin setCursorType busy",
+"",
+" # Get the print command or file template if not previous reset.",
+" set val [ send printcmd get string ]",
+" if [send toFile get on] {",
+" send client setPrintOption printfile $val",
+" } else {",
+" send client setPrintOption printcmd $val",
+" }",
+" set val [ send titleString get string ]",
+" send client setPrintOption title $val",
+" setPrintCorners 0 [expr $winWidth - 1] [expr $winHeight - 1] 0",
+"",
+" send client print",
+" send imagewin setCursorType idle",
+"} ; send okayPrint addCallback Print",
+"",
+"",
+"",
+"# setPrintCorners -- Tell the client the WCS of the image being printed.",
+"",
+"proc setPrintCorners { lx ly ux uy args } \\",
+"{",
+" global winWidth winHeight",
+"",
+" # Convert raw corner screen coordinates to frame buffer raster coords.",
+" send imagewin unmapPixel $lx $ly raster llx lly",
+" set llx [expr \"int ($llx)\"]",
+" set lly [expr \"int ($lly)\"]",
+" set str [send client encodewcs $llx $lly]",
+" scan $str \"%g %g %g\" llx_r lly_r z",
+" set llx_i [expr \"int ($llx_r)\"]",
+" set lly_i [expr \"int ($lly_r)\"]",
+"",
+" send imagewin unmapPixel $ux $uy raster urx ury",
+" set urx [expr \"int ($urx)\"]",
+" set ury [expr \"int ($ury)\"]",
+" set str [send client encodewcs $urx $ury]",
+" scan $str \"%g %g %g\" urx_r ury_r z",
+" set urx_i [expr \"int ($urx_r)\"]",
+" set ury_i [expr \"int ($ury_r)\"]",
+"",
+" send client setPrintOption corners $llx_i $lly_i $urx_i $ury_i",
+"}",
+"",
+"",
+"",
+"################################################################################",
+"# INFO box.",
+"################################################################################",
+"",
+"set infoMode infoOptFr",
+"",
+"",
+"# Current Frame information.",
+"proc infoFrameUpdate args \\",
+"{",
+" global version frame nframes",
+" global frameWidth frameHeight frameDepth",
+" global enhancement",
+" global cpXcen cpYcen cpXoff cpYoff",
+" global cpXmag cpYmag cpXscale cpYscale",
+"",
+" if { [send infoOptWCS get on] } {",
+" send client info wcs",
+" return",
+" } elseif {! [send infoOptFr get on]} \\",
+" return",
+"",
+"",
+" if {$frame == 0} {",
+" send infoText set string \"initializing display...\"",
+" } else {",
+" set line1 $version",
+" set line2 [format \"Image:\\t\\t%s\" [send imageTitle get label]]",
+" set line3 [format \"Frame %d of %d:\\t%d x %d\" \\",
+" $frame $nframes $frameWidth $frameHeight]",
+" set cmap [lindex $enhancement($frame) 0]",
+" set brt [lindex $enhancement($frame) 1]",
+" set con [lindex $enhancement($frame) 2]",
+" set line4 [format \"Colormap:\\t%s\" $cmap]",
+" set line5 [format \"Enhancement:\\tBrt=%s Cont=%s\" $brt $con]",
+"",
+" set cntr [format \"X: %0.1f\\n\\t\\tY: %0.1f\" $cpXcen $cpYcen]",
+" set line6 [format \"Center:\\t\\t%s\" $cntr]",
+"",
+" set line7 [format \"Zoom:\\t\\tX: %0.2f\\n\\t\\tY: %0.2f\" $cpXmag $cpYmag]",
+" set line8 [format \"Scale:\\t\\tX: %0.2f\\n\\t\\tY: %0.2f\" $cpXscale $cpYscale]",
+" set line9 [format \"Offset:\\t\\tX: %0.2f\\n\\t\\tY: %0.2f\" $cpXoff $cpYoff]",
+"",
+" send infoText set string [",
+" format \"%s\\n\\n%s\\n%s\\n%s\\n%s\\n%s\\n%s\\n%s\\n%s\\n\\n\" \\",
+" $line1 $line2 $line3 $line4 $line5 $line6 $line7 $line8 $line9",
+" ]",
+" }",
+"}",
+"set params {frame frameView nframes frameSize frameTitle enhancement}",
+"foreach p $params { send $p addCallback infoFrameUpdate }",
+"",
+"",
+"# Server Program State information.",
+"proc infoOptToggle { widget type state args } \\",
+"{",
+" global infoMode ismInfoText",
+"",
+" if {$state} { set not False } else { set not True }",
+"",
+" send $infoMode set on $not",
+" set infoMode $widget",
+"",
+" switch $widget {",
+" infoOptFr { infoFrameUpdate }",
+" infoOptSvr { set bp [send imagewin get basePixel] ",
+" set mc [send imagewin get maxColors]",
+" send client info server $bp $mc",
+" }",
+" infoOptIsm { send infoText set string $ismInfoText }",
+" infoOptClients { send client info clients }",
+" infoOptWCS { send client info wcs }",
+" infoOptFB { send client info imtoolrc }",
+" }",
+"}",
+"set iopts {infoOptFr infoOptSvr infoOptIsm infoOptClients infoOptWCS infoOptFB }",
+"foreach w $iopts { send $w addCallback infoOptToggle }",
+"",
+"",
+"proc infoSetText { param old new } \\",
+"{",
+" send infoText set string $new",
+"} ; send info addCallback infoSetText",
+"",
+"",
+"",
+"################################################################################",
+"# Image and objects list display and section",
+"################################################################################",
+"",
+"proc filesTextHighlight { widget event args } \\",
+"{",
+" if { $event == \"enterNotify\" } {",
+" send $widget set displayCaret True",
+" } elseif { $event == \"leaveNotify\" } {",
+" send $widget set displayCaret False",
+" }",
+"}",
+"foreach w {imtemplateText fnameText z1Value z2Value} {",
+" send $w addEventHandler filesTextHighlight enterWindowMask",
+" send $w addEventHandler filesTextHighlight leaveWindowMask",
+"}",
+"",
+"send rootButton addCallback \"send client setLoadOption root\"",
+"send homeButton addCallback \"send client setLoadOption home\"",
+"send upButton addCallback \"send client setLoadOption up\"",
+"send rescanButton addCallback \"send client setLoadOption rescan\"",
+"",
+"set label \\",
+" [format \"%-35.35s %6s %12s %12s\"\\",
+" \" Image\" \"Bitpix\" \" Size\" \" Title\"]",
+"send imlistLabel set label $label",
+"send imlistLabel \"set height 0 ; unmap\"",
+"",
+"",
+"# Create the Frames menu on the load panel window.",
+"set loadItems { \"Current f.exec \\{send frameFrame set label Current\\}\"}",
+"for {set i 1} {$i <= $MAX_FRAMES} {incr i} {",
+" lappend loadItems \"\\\"\\ \\ $i\\ \\ \\\" f.exec \\{send frameFrame set label $i\\}\"",
+"}; createMenu loadFrames frameFrame $loadItems",
+"",
+"",
+"",
+"",
+"",
+"# Filename pattern callback.",
+"proc setPattern { widget mode pattern args } \\",
+"{",
+" send client setLoadOption pattern $pattern",
+"} ; send imtemplateText addCallback setPattern",
+"",
+"",
+"# Load options parameter callback.",
+"proc doLoadOptions { param old new } \\",
+"{",
+" global warnings panel_up",
+"",
+" set val [ join [lrange $new 1 end] \" \" ]",
+"",
+" switch [lindex $new 0] {",
+" pattern { send imtemplateText set string [format \"%s\" $val ] }",
+" curdir { send dirLabel set label [format \" Directory: %s\" $val ] }",
+" newfile { send fnameText set string $val }",
+" status { send filesStatus set label $val",
+" if { ! $panel_up } { send imageTitle set label $val }",
+" send server synchronize",
+" }",
+" warning { if {$warnings} { Wexec server $val } }",
+" gray { send grayscale set on $val }",
+" zscale { send zscale set on $val",
+" if {$val} {",
+" send zrange setSensitive False",
+" } else {",
+" send zrange setSensitive True",
+" }",
+" }",
+" zrange { send zrange set on $val",
+" if {$val} {",
+" foreach w {z1Label z1Value z2Label z2Value} {",
+" send $w setSensitive False",
+" }",
+" } else {",
+" foreach w {z1Label z1Value z2Label z2Value} {",
+" send $w setSensitive True",
+" }",
+" }",
+" }",
+" z1 { send z1Value set string [format \"%s\" $val ] }",
+" z2 { send z2Value set string [format \"%s\" $val ] }",
+" nsample { send nsampValue set string [format \"%s\" $val ] }",
+" }",
+"} ; send loadOptions addCallback doLoadOptions",
+"",
+"# Option utility routines.",
+"proc toggleGraymap args \\",
+"{",
+" send client setLoadOption gray [ send grayscale get on ]",
+"} ; send grayscale addCallback toggleGraymap",
+"",
+"proc toggleHeaders args \\",
+"{",
+" if { [send browseHdrs get on] } {",
+" send client setLoadOption headers ",
+" send rootButton setSensitive False",
+" send homeButton setSensitive False",
+" send upButton setSensitive False",
+" send rescanButton setSensitive False",
+" send imlistLabel \"set height 10 ; map\"",
+" } else {",
+" send client setLoadOption rescan ",
+" send rootButton setSensitive True",
+" send homeButton setSensitive True",
+" send upButton setSensitive True",
+" send rescanButton setSensitive True",
+" send imlistLabel \"set height 0 ; unmap\"",
+" }",
+"} ; send browseHdrs addCallback toggleHeaders",
+"",
+"proc toggleZscale args \\",
+"{",
+" send client setLoadOption zscale [send zscale get on]",
+"} ; send zscale addCallback toggleZscale",
+"",
+"proc toggleZrange args \\",
+"{",
+" send client setLoadOption zrange [send zrange get on]",
+"} ; send zrange addCallback toggleZrange",
+"",
+"proc setZ1 { widget mode pattern args } \\",
+"{",
+" send client setLoadOption z1 $pattern",
+"} ; send z1Value addCallback setZ1",
+"",
+"proc setZ2 { widget mode pattern args } \\",
+"{",
+" send client setLoadOption z2 $pattern",
+"} ; send z2Value addCallback setZ2",
+"",
+"proc setNsamp { widget mode pattern args } \\",
+"{",
+" send client setLoadOption nsample $pattern",
+"} ; send nsampValue addCallback setNsamp",
+"",
+"proc fileLoad { widget mode fname args } \\",
+"{",
+" loadImage $fname",
+"} ; send fnameText addCallback fileLoad",
+"",
+"",
+"",
+"# Image list selection routines.",
+"",
+"set fileList {}",
+"",
+"proc setFileList { param old new } \\",
+"{",
+" global fileList",
+" set fileList $new",
+"",
+" # Get the max length of the strings so we can set",
+" # the list columns appropriately.",
+" set max 0",
+" foreach n $new {",
+" set len [string length $n]",
+" if {$len > $max} { set max $len }",
+" }",
+"",
+" # Optimize the number of columns for the file list.",
+" if {$max > 35} { ",
+" send imageList set defaultColumns 1",
+" } elseif {$max > 21} { ",
+" send imageList set defaultColumns 2",
+" } elseif {$max > 12} { ",
+" send imageList set defaultColumns 3",
+" } elseif {$max > 5} { ",
+" send imageList set defaultColumns 4",
+" } else { ",
+" send imageList set defaultColumns 5",
+" }",
+"",
+" send imageList setList $new resize",
+"}; send filelist addCallback setFileList",
+"",
+"proc flResize args \\",
+"{",
+" global fileList",
+" send imageList setList $fileList resize",
+"}; send imageList addEventHandler flResize ResizeRedirectMask",
+"",
+"proc flSelectPrint { widget cbtype selections args } \\",
+"{",
+" if {! [send autoload get on]} \\",
+" return",
+"",
+" foreach selection $selections { ",
+" if { [send zrange get on] } {",
+" loadImage [lindex $selection 0]",
+" } else {",
+" loadImage $selection",
+" }",
+" }",
+"}; send imageList addCallback flSelectPrint",
+"",
+"",
+"# Load the named image in the display.",
+"proc loadImage { name } \\",
+"{",
+" global frame",
+"",
+" set fr [send frameFrame get label]",
+"",
+" if { $fr == \"Current\" } { set fr $frame }",
+"",
+" if { [fileSetOptions] >= 0 } {",
+" send imagewin setCursorType busy",
+" send client load $name $fr",
+" send imagewin setCursorType idle",
+" send fnameText set string $name",
+" }",
+"}",
+"",
+"# Load button callback.",
+"proc fileLoadB args \\",
+"{",
+" set fname [send fnameText get string]",
+" if {$fname == \"\"} {",
+" Wexec client \"No image name specified\"",
+" } else {",
+" loadImage $fname",
+" }",
+"} ; send filesLoadButton addCallback fileLoadB",
+"",
+"",
+"# Send and selected options to the client before loading the image.",
+"proc fileSetOptions args \\",
+"{",
+" if { ![send zscale get on] && ![send zrange get on] } {",
+" set z1 [send z1Value get string]",
+" set z2 [send z2Value get string]",
+"",
+" if {$z1 == $z2} {",
+" Wexec client \"z1/z2 values are not set properly\"",
+" return -1",
+" } else {",
+" send client setLoadOption z1 $z1",
+" send client setLoadOption z2 $z2",
+" }",
+" }",
+"",
+" return 0",
+"}",
+"",
+"",
+"################################################################################",
+"# Save panel functions.",
+"################################################################################",
+"",
+"# Global variables needed for the save setup panel",
+"",
+"set format rasButton",
+"set saveColor svPseudoButton",
+"",
+"set fileFmtButtons {",
+" rasButton gifButton jpegButton tiffButton ",
+" fitsButton x11Button epsButton rawButton ",
+"}",
+"",
+"",
+"# Format group procedures.",
+"#---------------------------------",
+"",
+"# Select a format.",
+"",
+"proc set_format { widget func state args } \\",
+"{",
+" global format saveColor",
+"",
+" send $format set on false",
+" if {$widget == $format} {",
+" send $widget set on true",
+" } else {",
+" switch $widget { ",
+" rasButton { send client setSaveOption format ras } ",
+" gifButton { send client setSaveOption format gif }",
+" jpegButton { send client setSaveOption format jpeg }",
+" tiffButton { send client setSaveOption format tiff }",
+" fitsButton { send client setSaveOption format fits }",
+" x11Button { send client setSaveOption format x11 }",
+" epsButton { send client setSaveOption format eps }",
+" rawButton { send client setSaveOption format raw }",
+" }",
+" }",
+"} ; foreach fmt $fileFmtButtons { send $fmt addCallback set_format }",
+"",
+"proc setSaveFile { widget cbtype args } \\",
+"{",
+" send client setSaveOption fname $args",
+" send saveStatus set label [format \"output file set to %s\" $args]",
+"}; send saveFile addCallback setSaveFile",
+"",
+"",
+"proc doSaveOptions { param old new } \\",
+"{",
+" global format saveColor",
+" global warnings",
+"",
+" send saveStatus set label {}",
+" set val [join [lrange $new 1 end] \" \"]",
+"",
+" #print [format \"doSaveOptions %s = %s\" [lindex $new 0] $val]",
+" switch [lindex $new 0] {",
+" format { ",
+" # Now (de)sensitize the color options depending on the format,",
+" # force the color choice when needed.",
+" send $format set on false",
+" switch [lindex $val 0] {",
+" ras { #send svRGBButton setSensitive false",
+" send svPseudoButton setSensitive true",
+" set format rasButton",
+" }",
+" gif { send svRGBButton setSensitive false",
+" send svPseudoButton setSensitive true",
+" if {$saveColor == \"svRGBButton\"} {",
+" send $saveColor set on false",
+" send svPseudoButton set on true",
+" set saveColor svPseudoButton",
+" }",
+" set format gifButton",
+" }",
+" jpeg { send svRGBButton setSensitive true",
+" send svPseudoButton setSensitive true",
+" set format jpegButton",
+" }",
+" tiff { send svRGBButton setSensitive false",
+" send svPseudoButton setSensitive true",
+" set format tiffButton",
+" }",
+" fits { send svRGBButton setSensitive false",
+" send svPseudoButton setSensitive false",
+" send $saveColor set on false",
+" send svGrayButton set on true",
+" set saveColor svGrayButton",
+" set format fitsButton",
+" }",
+" x11 { send svRGBButton setSensitive true",
+" send svPseudoButton setSensitive true",
+" set format x11Button",
+" }",
+" eps { send svRGBButton setSensitive true",
+" send svPseudoButton setSensitive true",
+" set format epsButton",
+" }",
+" raw { send svRGBButton setSensitive true",
+" send svPseudoButton setSensitive true",
+" set format rawButton",
+" }",
+" }",
+" send $format set on true",
+" }",
+" color { send $saveColor set on false",
+" switch [lindex $val 0] {",
+" grayscale { send svGrayButton set on true",
+" set saveColor svGrayButton",
+" }",
+" pseudocolor { send svPseudoButton set on true",
+" set saveColor svPseudoButton",
+" }",
+" rgb { send svRGBButton set on true",
+" set saveColor svRGBButton",
+" }",
+" }",
+" }",
+" fname { send saveFile set string $val",
+" }",
+" status { send saveStatus set label $val",
+" send server synchronize",
+" }",
+" text { send saveData set label $val",
+" }",
+" warning { if {$warnings} { Wexec server $val }",
+" }",
+" }",
+"} ; send saveOptions addCallback doSaveOptions",
+"",
+"",
+"# Color group procedures.",
+"#---------------------------------",
+"send svGrayButton addCallback \"send client setSaveOption color grayscale\"",
+"send svPseudoButton addCallback \"send client setSaveOption color pseudocolor\"",
+"send svRGBButton addCallback \"send client setSaveOption color rgb\"",
+"",
+"",
+"proc Save args \\",
+"{",
+" global panel_up",
+"",
+" send imagewin setCursorType busy",
+"",
+" # Get the print command or file template if not previous reset.",
+" set val [ send saveFile get string ]",
+" send client setSaveOption fname $val",
+" send saveStatus set label [format \"output file set to %s\" $args]",
+"",
+" send client save",
+" send imagewin setCursorType idle",
+"} ; send okaySave addCallback Save",
+"",
+"",
+"",
+"################################################################################",
+"# TILE GEOMETRY",
+"################################################################################",
+"",
+"set tileSel 2",
+"set tileOpt 0",
+"set tileNcols 2",
+"set tileNrows 1",
+"set tile_frames {}",
+"",
+"proc selectTileOrientation { widget type select args } \\",
+"{",
+" global tileSel tileOpt",
+"",
+" set w { nrowLab ncolLab nrdecrease nrincrease ncdecrease ncincrease }",
+" if {$select == \"Manual\"} {",
+" foreach p $w { send $p setSensitive True }",
+" } elseif {$select != \"none\"} {",
+" foreach p $w { send $p setSensitive False }",
+" }",
+"",
+" set w { byCols bottomUp labelFrames labelImname labelTitles }",
+" if {$select == \"Disabled\"} {",
+" foreach p $w { send $p setSensitive False }",
+" } else {",
+" foreach p $w { send $p setSensitive True }",
+" }",
+"",
+" switch $select {",
+" Disabled { set tileSel 0 }",
+" Manual { set tileSel 1",
+" set nx [send nctext get label]",
+" set ny [send nrtext get label]",
+" set select [format \"%dx%d\" $nx $ny]",
+" }",
+" Best { set tileSel 2 }",
+" Square { set tileSel 3 }",
+" Horizontal { set tileSel 4 }",
+" Vertical { set tileSel 5 }",
+" \"One Row\" { set tileSel 6 }",
+" \"One Column\" { set tileSel 7 }",
+" none { send tileMode set selection $tileSel ; return }",
+" }",
+"",
+" # Reset the button in case we're called directly from elsewhere.",
+" send tileMode set selection $tileSel",
+"",
+" # Send the option to the client.",
+" if {$tileSel > 0} {",
+" setTileFrames",
+" send client setOption tileFrames \"True\"",
+" set tileOpt $tileSel",
+" } else {",
+" send client setOption tileFrames \"False\"",
+" }",
+"",
+"} ; send tileMode addCallback selectTileOrientation",
+"",
+"proc tileSelToLabel { selection args } \\",
+"{",
+" switch $selection {",
+" 0 { return \"Disabled\" }",
+" 1 { return \"Manual\" }",
+" 2 { return \"Best\" }",
+" 3 { return \"Square\" }",
+" 4 { return \"Horizontal\" }",
+" 5 { return \"Vertical\" }",
+" 6 { return \"One Row\" }",
+" 7 { return \"One Column\" }",
+" }",
+" return \"Best\"",
+"}",
+"",
+"# Callback for the fill style options.",
+"proc selectFillStyle { widget type state args } \\",
+"{",
+" if {$state} { set not False } else { set not True }",
+"",
+" switch $widget {",
+" byCols { send client setOption tileByRows $not }",
+" bottomUp { send client setOption tileTopDown $not }",
+" }",
+"} ; foreach w {byCols bottomUp} { send $w addCallback selectFillStyle }",
+"",
+"# Callback for the tile labelling options.",
+"proc selectTileLabels { widget type state args } \\",
+"{",
+" if {$state} { ",
+" switch $widget {",
+" labelFrames { send client setOption tileLabels 1 }",
+" labelImname { send client setOption tileLabels 2 }",
+" labelTitles { send client setOption tileLabels 3 }",
+" }",
+" } else {",
+" send client setOption tileLabels 0",
+" }",
+" send $widget set on $state",
+"}",
+"foreach w {labelFrames labelImname labelTitles} {",
+" send $w addCallback selectTileLabels",
+"}",
+"",
+"# Callback for the Tile Frame selection toggles.",
+"proc setTileFrames args \\",
+"{",
+" global tile_frames tileSel tileNcols tileNrows",
+"",
+" # No-op if tiling isn't enabled.",
+" if {$tileSel == 0} \\",
+" return",
+"",
+" # Get the new tile frames list.",
+" set tile_frames {}",
+" for {set i 1} {$i <= 16} {incr i} {",
+" if {[send tFrame$i get state]} {",
+" lappend tile_frames $i",
+" }",
+" }",
+"",
+" # Reset the geometry.",
+" set geom [format \"%dx%d\" $tileNcols $tileNrows]",
+" switch $tileSel {",
+" 1 { send client setOption tileGeom $geom \\{ $tile_frames \\} }",
+" 2 { send client setOption tileGeom Best \\{ $tile_frames \\} }",
+" 3 { send client setOption tileGeom Square \\{ $tile_frames \\} }",
+" 4 { send client setOption tileGeom Horizontal \\{ $tile_frames \\} }",
+" 5 { send client setOption tileGeom Vertical \\{ $tile_frames \\} }",
+" 6 { send client setOption tileGeom Row \\{ $tile_frames \\} }",
+" 7 { send client setOption tileGeom Column \\{ $tile_frames \\} }",
+" }",
+"}; for {set i 1} {$i <= 16} {incr i} {send tFrame$i addCallback setTileFrames}",
+"",
+"proc setAllTileFrames args \\",
+"{",
+" global tileNcols tileNrows",
+" for {set i 1} {$i <= 16} {incr i} {",
+" if {[send tFrame$i get sensitive]} {",
+" send tFrame$i set state True",
+" }",
+" }",
+" setTileFrames",
+"} ; send tAll addCallback setAllTileFrames",
+"",
+"proc setNoTileFrames args \\",
+"{",
+" global tileNcols tileNrows",
+" for {set i 1} {$i <= 16} {incr i} {",
+" if {[send tFrame$i get sensitive]} {",
+" send tFrame$i set state False",
+" }",
+" }",
+" setTileFrames",
+"} ; send tNone addCallback setNoTileFrames",
+"",
+"proc tileOptions { param old new } \\",
+"{",
+" global tileNcols tileNrows",
+"",
+" set tileNcols [lindex $new 0]",
+" set tileNrows [lindex $new 1]",
+"",
+" # Set the geometry.",
+" send nctext set label $tileNcols",
+" send nrtext set label $tileNrows",
+" send tileGeometry set label [format \\",
+" \"Tile Geometry: %-2dx%2d\" $tileNcols $tileNrows]",
+"",
+"} ; send tileOptions addCallback tileOptions",
+"",
+"",
+"proc tileSetRows { widget args } \\",
+"{",
+" global nframes tile_frames",
+"",
+" set nx [send nctext get label]",
+" set ny [send nrtext get label]",
+"",
+" if {$widget == \"nrdecrease\" && [expr ($ny-1)] > 0} {",
+" incr ny -1",
+" } elseif {$widget == \"nrincrease\" && [expr ($ny+1)] <= $nframes} {",
+" incr ny 1",
+" } else {",
+" return",
+" }",
+" set geom [format \"%dx%d\" $nx $ny]",
+" send client setOption tileGeom $geom $tile_frames",
+"} ; foreach w { nrdecrease nrincrease } { send $w addCallback tileSetRows }",
+"",
+"proc tileSetCols { widget args } \\",
+"{",
+" global nframes tile_frames",
+"",
+" set nx [send nctext get label]",
+" set ny [send nrtext get label]",
+"",
+" if {$widget == \"ncdecrease\" && [expr ($nx-1)] > 0} {",
+" incr nx -1",
+" } elseif {$widget == \"ncincrease\" && [expr ($nx+1)] <= $nframes} {",
+" incr nx 1",
+" } else {",
+" return",
+" }",
+" set geom [format \"%dx%d\" $nx $ny]",
+" send client setOption tileGeom $geom $tile_frames",
+"} ; foreach w { ncdecrease ncincrease } { send $w addCallback tileSetCols }",
+"",
+"",
+"# Initialize the frame tiling.",
+"setAllTileFrames",
+"selectTileOrientation junk junk Disabled",
+"selectFillStyle byRows junk True",
+"selectFillStyle topDown junk True",
+"selectTileLabels labelImname junk False",
+"",
+"################################################################################",
+"# Coords Panel Callbacks.",
+"################################################################################",
+"",
+"# In case we need to change the values....",
+"#global wcsPHeight wcsPTxtHeight wcsPGrHeight wcsPOptHeight",
+"#set wcsPHeight 267",
+"#set wcsPTxtHeight 132",
+"#set wcsPGrHeight 175",
+"#set wcsPOptHeight 233",
+"#setCoordPanelHeight",
+"",
+"set wcsPHeight 267 ;# full panel no options",
+"set wcsPTxtHeight 132 ;# size of text area box",
+"set wcsPGrHeight 175 ;# size of text area group",
+"set wcsPOptHeight 233 ;# extra height for opts boxes",
+"",
+"# Set the WCS readout panel sensitivity depending on whether the ISM",
+"# is currently enabled.",
+"proc setCoordPanelSensitivity args \\",
+"{",
+" set widgets { ",
+" wpWcs2 wpWcs3 wpWcs4 ",
+" wiWcs2 wiWcs3 wiWcs4 ",
+" wlWcs2 wlWcs3 wlWcs4",
+" sysWcs2 sysWcs3 sysWcs4 ",
+" fmtWcs2 fmtWcs3 fmtWcs4",
+" }",
+"",
+" send sysWcs1 set label \"Display\"",
+" send fmtWcs1 set label \"Default\"",
+"",
+" for {set i 2} {$i <= 4} {incr i} {",
+" send sysWcs$i set label \"None\" ; send fmtWcs$i set label \"Default\"",
+" send wpWcs$i set on False ; send wiWcs$i set on False",
+" send wtWcs$i set height 4",
+" }",
+"",
+" if {[send ismToggle get on]} {",
+" send sysWcs2 set label \"World\" ; send fmtWcs2 set label \"Default\"",
+" send wpWcs2 set on True ; send wiWcs2 set on True",
+" send wtWcs2 set height 17",
+"",
+" foreach w $widgets { send $w setSensitive True }",
+" } else {",
+" foreach w $widgets { send $w setSensitive False }",
+" }",
+"}",
+"",
+"",
+"# Set the Coords Panel height depending on the option settings.",
+"proc setCoordPanelHeight args \\",
+"{",
+" global wcsPHeight wcsPOptHeight wcsPTxtHeight wcsPGrHeight",
+" global tabTop",
+"",
+" if {$tabTop != \"wcs_panel\"} \\",
+" return",
+"",
+" # Get the height of the text area",
+" set panel_h $wcsPHeight",
+" set shrinkage 0",
+" foreach w { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo } {",
+" if {[send $w get on] == 0} {",
+" incr shrinkage 13",
+" }",
+" }",
+" if {[send woptTitles get on] == 0} {",
+" incr shrinkage 26",
+" }",
+"",
+" set ph [expr ($wcsPHeight - $shrinkage)]",
+" if {[send wcsOptions get on] == 1} {",
+" incr ph $wcsPOptHeight",
+" }",
+"",
+" send wcsGroup set height [ expr ($wcsPGrHeight - $shrinkage) ]",
+" send wcsFrame set height [ expr ($wcsPTxtHeight - $shrinkage) ]",
+" send panel set height $ph",
+"}",
+"",
+"# Toggle the options display for the panel.",
+"proc wcsOptToggle { widget type state args } \\",
+"{",
+" global wcsPOptHeight",
+" set h [ send panel get height ] ",
+" if {$state == 1} {",
+" send panel set height [ expr ($h + $wcsPOptHeight) ]",
+" } else { ",
+" send panel set height [ expr ($h - $wcsPOptHeight) ]",
+" }",
+"} ; send wcsOptions addCallback wcsOptToggle",
+"",
+"# Handle the panel display toggles.",
+"proc wcsCoordsCB { widget type state args } \\",
+"{",
+"",
+" set hght [ expr (($state == 1) ? 17 : 4)]",
+" switch $widget {",
+" wpWcs1 { send wtWcs1 set height $hght }",
+" wpWcs2 { send wtWcs2 set height $hght }",
+" wpWcs3 { send wtWcs3 set height $hght }",
+" wpWcs4 { send wtWcs4 set height $hght }",
+" woptFBinfo { send wtFBCfg set height $hght }",
+" woptTitles { send wtName set height $hght ; send wtTitle set height $hght }",
+" }",
+" setCoordPanelHeight ",
+"}",
+"set wcValues { wpWcs1 wpWcs2 wpWcs3 wpWcs4 woptFBinfo woptTitles }",
+"foreach w $wcValues { send $w addCallback wcsCoordsCB }",
+"",
+"",
+"# Handle WCS label string options.",
+"set wcsLabels 1",
+"proc wcsLabelsCB { widget type state args } \\",
+"{",
+" global up_todo wcsLabels",
+" set wcsLabels $state",
+" #resizeCoordsBox 0",
+" resizeCoordsBox $up_todo",
+" updateCoordsBox",
+"} ; send woptLabels addCallback wcsLabelsCB",
+"",
+"",
+"# Toggle the BPM tracking state.",
+"proc wcsBPMCB { widget type state args } \\",
+"{",
+" global ism_enable",
+" if ($ism_enable) { catch { send wcspix set bpm $state } }",
+"} ; send woptBPM addCallback wcsBPMCB",
+"",
+"",
+"# Procedures to format lines in the wcsText box.",
+"proc wcsFmtImname { name } \\",
+"{",
+" send wtName set string [format \" Name: %s\" [string trimleft $name]]",
+"}",
+"",
+"proc wcsFmtImtitle { title } \\",
+"{",
+" send wtTitle set string [format \" Title: %s\" [string trimleft $title]]",
+"}",
+"",
+"proc wcsFmtFBConfig args \\",
+"{",
+" global frameWidth frameHeight frame nframes",
+" set buf [ format \"%5d x %-5d\" $frameWidth $frameHeight ]",
+" set line [ format \"Frame Buf: %-13s Frame: %d of %d\" \\",
+" [string trimleft $buf] $frame $nframes ]",
+" send wtFBCfg set string $line",
+"}",
+"",
+"proc wcsFmtIValue { value } \\",
+"{",
+" global coord",
+" set line [ format \" Pixel: %.11s\" $value ]",
+" send wtIPixval set string $line",
+" if {[info exists coord(ival)]} {",
+" set coord(ival) $value",
+" updateCoordsBox",
+" }",
+"}",
+"",
+"proc wcsFmtSValue { value } \\",
+"{",
+" global coord",
+" set line [ format \" Scaled: %.8s\" $value ]",
+" send wtSPixval set string $line",
+" set coord(sval) [format \"%s\" $value]",
+"}",
+"",
+"proc wcsFmtBValue { value } \\",
+"{",
+" global coord",
+"",
+" if { [send woptBPM get on] } {",
+" set line [ format \" BPM: %s\" $value ]",
+" set color [expr { ($value == 0) ? \"black\" : \"red\" } ]",
+" set msg [format \"set string \\{%s\\}; set background %s\" $line $color ]",
+" set coord(bval) [format \"%s\" $value]",
+" } else {",
+" set line [ format \" BPM: (off)\" ]",
+" set msg [format \"set string \\{%s\\}\" $line]",
+" }",
+" send wtBPixval $msg",
+"}",
+"",
+"proc wcsFmtWcs { num wcsname x y xunit yunit args } \\",
+"{ ",
+" global coord coordLab wcsLabels",
+"",
+" if {$wcsLabels} {",
+" set line [ format \"%4s: %12s %4s: %12s WCS: %s\" \\",
+" $xunit $x $yunit $y [string trimleft $wcsname] ]",
+" } else {",
+" set line [ format \"%4s %12s %4s %12s %s\" \\",
+" \" \" $x \" \" $y [string trimleft $wcsname] ]",
+" }",
+" send wtWcs$num set string $line",
+"",
+" if {[info exists coord(wcs$num)]} {",
+" if {$num == 1} {",
+" set coord(wcs1) [ format \"\\{%s\\} \\{%s\\} \\{%s\\}\" $x $y $coord(sval) ]",
+" } elseif {$num == 2} {",
+" set coord(wcs2) [ format \"\\{%s\\} \\{%s\\} \\{%s\\}\" $x $y $coord(ival) ]",
+" } else {",
+" set coord(wcs$num) [ format \"\\{%s\\} \\{%s\\} \\{%s\\}\" $x $y $wcsname ]",
+" }",
+"",
+" set coordLab(wcs$num) [ format \"\\{%s\\} \\{%s\\} \\{%s\\}\" \\",
+" $xunit $yunit [string trimleft $wcsname ] ]",
+" updateCoordsBox",
+" }",
+"}",
+"",
+"",
+"",
+"# Handle the wcsbox readout.",
+"#------------------------------",
+"set up_todo 2",
+"set up_done 0",
+"set coord(ival) 0.",
+"set coord(sval) 0.",
+"set coord(bval) 0",
+"set coord(wcs1) { 0. 0. 0. }",
+"set coord(wcs2) { 0. 0. 0. }",
+"set coord(wcs3) { 0. 0. 0. }",
+"set coord(wcs4) { 0. 0. 0. }",
+"",
+"proc wcsCoordB { widget type state args } \\",
+"{",
+" global coord up_todo",
+"",
+" switch $widget {",
+" wiWcs1 { set line wcs1 ;set coord($line) { 0. 0. \"\" } }",
+" wiWcs2 { set line wcs2 ;set coord($line) { 0. 0. \"\" } }",
+" wiWcs3 { set line wcs3 ;set coord($line) { 0. 0. \"\" } }",
+" wiWcs4 { set line wcs4 ;set coord($line) { 0. 0. \"\" } }",
+" }",
+"",
+" if {$state} {",
+" incr up_todo",
+" } else {",
+" unset coord($line)",
+" incr up_todo -1",
+" }",
+"",
+" resizeCoordsBox $up_todo",
+" updateCoordsBox",
+"}",
+"set wiValues { wiWcs1 wiWcs2 wiWcs3 wiWcs4 }",
+"foreach w $wiValues { send $w addCallback wcsCoordB }",
+"",
+"",
+"# Resize the coords box depending on the panel options.",
+"proc resizeCoordsBox { nlines } \\",
+"{",
+" global track_enable wcsLabels winWidth winHeight wcsboxGeom ",
+"",
+" if {! $track_enable} \\",
+" return",
+"",
+" send wcsbox getAttributes width cur_w height cur_h ",
+" set defGeom [format \"%sx%s-5-5\" $cur_w $cur_h]",
+" send imagewin parseGeometry $wcsboxGeom $defGeom x y width height",
+"",
+" set ew [expr (($wcsLabels == 1) ? 125 : 65)]",
+"",
+" # Reset to the default geometry",
+" if {$nlines == 0} {",
+" set x [expr ($x + $ew)]",
+" set y [expr ($y + $height - 17 + 1)]",
+" set new_w 166",
+" set new_h 17",
+"",
+" } else {",
+" if {$width > 166} { ;# not using default wcsbox",
+" set new_w $width",
+" } else {",
+" set new_w [expr ($width + $ew)]",
+" set x [expr ($x - $ew)]",
+" if {$wcsLabels == 0} {",
+" incr x 60",
+" }",
+" }",
+" set new_h [ expr ($nlines * 17) ]",
+" set y [expr ($y + $height - $new_h + 1)]",
+" }",
+"",
+" # Bounds checking.",
+" if {$x < 5} {",
+" set x 5",
+" } elseif {$x > [expr ($winWidth - $new_w - 5)]} {",
+" set x [expr ($winWidth - $new_w - 5)]",
+" }",
+" if {$y < 5} {",
+" set y 5",
+" } elseif {$y > [expr ($winHeight - $new_h - 5)]} {",
+" set y [expr ($winHeight - $new_h - 5)]",
+" }",
+"",
+" # Finally redraw the marker.",
+" send wcsbox \"\\",
+" setAttributes \\",
+" width $new_w \\",
+" height $new_h \\",
+" x $x \\",
+" y $y; \\",
+" redraw\"",
+"",
+" set wcsboxGeom [send imagewin getGeometry $x $y $new_w $new_h]",
+" send client encodewcs [expr ($winWidth / 2)] [expr ($winHeight / 2)]",
+" updateCoordsBox",
+"}",
+"",
+"",
+"# Shortcuts for known WCS labels.",
+"set labels(display) \"TV\"",
+"set labels(logical) \"Log\"",
+"set labels(physical) \"Phys\"",
+"set labels(equatorial) \"Eq\"",
+"set labels(ecliptic) \"Ecl\"",
+"set labels(galactic) \"Gal\"",
+"set labels(supergalactic) \"SGal\"",
+"set labels(amplifier) \"Amp\"",
+"set labels(ccd) \"CCD\"",
+"set labels(detector) \"Det\"",
+"",
+"",
+"# Format the coords box marker with the selected output options.",
+"proc updateCoordsBox args \\",
+"{",
+" global ism_enable coord coordLab wcsLabels",
+" global up_done up_todo labels track_enable",
+" global coord",
+"",
+" if {! $ism_enable} \\",
+" return",
+"",
+" incr up_done",
+"",
+" set text \"\"",
+" foreach l {wcs1 wcs2 wcs3 wcs4} {",
+" if {[info exists coord($l)]} {",
+" set x [lindex $coord($l) 0]",
+" set y [lindex $coord($l) 1]",
+" set z [string tolower [string trimleft [lindex $coord($l) 2] ] ]",
+" if {[info exists labels($z)]} {",
+" set z $labels($z)",
+" }",
+"",
+" if {$wcsLabels && [info exists coordLab($l)]} {",
+" set lx [lindex $coordLab($l) 0]",
+" set ly [lindex $coordLab($l) 1]",
+" append text [format \" %4s %12.12s %4s %12.12s %9.9s \\n\" \\",
+" $lx $x $ly $y $z ]",
+" } else {",
+" append text [format \" %12.12s %12.12s %9.9s \\n\" $x $y $z ]",
+" }",
+" }",
+" }",
+"",
+" # Now send the string.",
+" if {$track_enable} {",
+" set color [expr { ($coord(bval) == 0) ? \"black\" : \"red\" } ]",
+" set txt [format \"set text \\{%s\\}; set textBgColor %s; redraw noerase\" \\",
+" $text $color ]",
+" send wcsbox $txt",
+" }",
+"",
+" if {$up_done >= $up_todo} {",
+" set up_done 0 ;# reset counter",
+" }",
+"}",
+"",
+"",
+"# Create the WCS format menus.",
+"#------------------------------------",
+"proc setWcsFmt { format line } \\",
+"{",
+" catch { send wcspix set format $format $line }",
+"}",
+"",
+"for {set i 1} {$i <= 4} {incr i} {",
+" set items {}",
+" lappend items \"\\\"Default\\\" f.exec \\{setWcsFmt default $i\\}\"",
+" lappend items \"\\\"Sexigesimal\\\" f.exec \\{setWcsFmt hms $i\\}\"",
+" lappend items \"\\\"Degrees\\\" f.exec \\{setWcsFmt deg $i\\}\"",
+" lappend items \"\\\"Radians\\\" f.exec \\{setWcsFmt rad $i\\}\"",
+" editMenu fmtMenu$i fmtWcs$i $items",
+"}",
+"",
+"",
+"# Create the default WCS type menus.",
+"#------------------------------------",
+"",
+"set defaultWcsMenu {",
+" { \"None\" f.exec {setWcsSys none WCS_LINE } }",
+" { \"Display\" f.exec {setWcsSys display WCS_LINE } }",
+" { \"World\" f.exec {setWcsSys world WCS_LINE } }",
+" { \"Logical\" f.exec {setWcsSys logical WCS_LINE } }",
+" { \"Physical\" f.exec {setWcsSys physical WCS_LINE } }",
+" { f.dblline }",
+"}",
+"",
+"proc setWcsSys { sys line } \\",
+"{",
+" if {[string tolower $sys] == \"none\"} {",
+" wcsCoordB wiWcs$line junk 0",
+" send sysWcs$line set label \"None\"; send fmtWcs$line set label \"Default\"",
+" send wpWcs$line set on False ; send wiWcs$line set on False",
+" send wtWcs$line set height 4",
+" setCoordPanelHeight",
+"",
+" } else {",
+" catch { send wcspix set wcs $sys $line }",
+" }",
+"}",
+"",
+"proc resetDefaultWcsMenu args \\",
+"{",
+" global defaultWcsMenu",
+"",
+" for {set i 1} {$i <= 4} {incr i} {",
+" regsub -all WCS_LINE $defaultWcsMenu $i menu_def",
+" editMenu sysMenu$i sysWcs$i $menu_def",
+" }",
+"} ; resetDefaultWcsMenu",
+"",
+"",
+"# Initialize the coordinates panel.",
+"#------------------------------------",
+"",
+"proc initCoordsPanel args \\",
+"{",
+" #send wcLine set height 2 ;# kludge for label widget",
+"",
+" # Initialize the display strings in the coords box.",
+" wcsFmtImname \"\"",
+" wcsFmtImtitle \"\"",
+" wcsFmtFBConfig",
+" wcsFmtIValue \"0.\" ; wcsFmtSValue \"0.\" ; wcsFmtBValue \"0\"",
+" wcsFmtWcs 1 \"\" \"\" \"\" \" X\" \" Y\"",
+" wcsFmtWcs 2 \"\" \"\" \"\" \" X\" \" Y\"",
+" wcsFmtWcs 3 \"\" \"\" \"\" \" X\" \" Y\"",
+" wcsFmtWcs 4 \"\" \"\" \"\" \" X\" \" Y\"",
+"",
+" send fmtWcs1 set label Default",
+" send wpWcs1 set on True ;send wiWcs1 set on True",
+" send wpWcs2 set on True ;send wiWcs2 set on True",
+" send wpWcs3 set on False ;send wiWcs3 set on False ;send wtWcs3 set height 4",
+" send wpWcs4 set on False ;send wiWcs4 set on False ;send wtWcs4 set height 4",
+"",
+" # Set the Coords Panel height.",
+" set wcsPTxtHeight [send wcsText get height]",
+" setCoordPanelHeight",
+"",
+" # Set the WCS readout panel sensitivity.",
+" setCoordPanelSensitivity",
+"",
+"} ; initCoordsPanel",
+"",
+"",
+"",
+"",
+"################################################################################",
+"# Compass indicator procedures.",
+"################################################################################",
+"",
+"set compassColor 207 ;# normally this is yellow",
+"set last_compass [send compass get on] ;# save compass state",
+"",
+"proc drawCompass args \\",
+"{",
+" global ism_enable frame frameCache compassColor Compass Orient",
+" global panner_x panner_y panner_width panner_height cur_objid",
+" global redraw_compass last_compass",
+"",
+" ",
+" if {! [send compass get on]} \\",
+" return",
+"",
+" eraseCompass ;# erase the old compass",
+"",
+" if {! [info exists frameCache($frame)] } {",
+" set id -1",
+" } elseif {$cur_objid != [lindex $frameCache($frame) 1]} {",
+" set id [lindex $frameCache($frame) 1]",
+" } else {",
+" set id $cur_objid",
+" }",
+"",
+" if { [info exists Compass($id)] } {",
+" set angle [lindex $Compass($id) 0]",
+" set north_x [lindex $Compass($id) 1]",
+" set north_y [lindex $Compass($id) 2]",
+" set east_x [lindex $Compass($id) 3]",
+" set east_y [lindex $Compass($id) 4]",
+" set transpose [lindex $Compass($id) 5]",
+" set xlab [lindex $Compass($id) 6]",
+" set ylab [lindex $Compass($id) 7]",
+" } else {",
+" set north_x 0.0 ; set north_y 1.0",
+" set east_x 1.0 ; set east_y 0.0",
+" set xlab X ; set ylab Y",
+" set angle 0.0 ; set transpose 0",
+" set Compass($id) { 0.0 1.0 0.0 1.0 0.0 0 X Y }",
+" }",
+" set xflip 1",
+" set yflip 1",
+"",
+" # Adjust the compass for the display orientation (e.g. image sections",
+" # used to flip an image during display).",
+" if { [info exists Orient($id)] } {",
+" set xflip [expr $xflip * [lindex $Orient($id) 1] ]",
+" set yflip [expr $yflip * [lindex $Orient($id) 2] ]",
+" }",
+"",
+" # Get the panner center position.",
+" set pcx [expr ($panner_x + $panner_width / 2)]",
+" set pcy [expr ($panner_y + $panner_height / 2)]",
+"",
+" # Setup for the overlay.",
+" send imagewin getLogRes sv_xl sv_yl",
+" send imagewin getPhysRes sv_xp sv_yp",
+" send imagewin setLogRes $sv_xp $sv_yp",
+" send imagewin setLineWidth 2",
+"",
+" set xflip [ expr ($xflip * ([send xflipButton get state] ? -1 : 1))]",
+" set yflip [ expr ($yflip * ([send yflipButton get state] ? -1 : 1))]",
+"",
+" # Normalized compass points. The first row are the axes, second is",
+" # the pointer head, and last are the X/Y label coords. Assumes a",
+" # zero rotation with North up and East left, or standard X/Y orientation.",
+" set cpoints {",
+" {-1 0} {0 0} {0 -1}",
+" {-0.07 -0.85} {0 -1} {0.07 -0.85} {-0.07 -0.85}",
+" {-1.2 0} {0 -1.2}",
+" }",
+"",
+"",
+" # Get rotation and scale factors.",
+" set angle [expr \"atan2($north_y,$north_x)\"]",
+" set coso [expr \"cos (-$angle)\"]",
+" set sino [expr \"sin (-$angle)\"]",
+" set scale [expr ([min $panner_width $panner_height] * 0.3)]",
+"",
+" # Initialize the drawing points.",
+" set pts {}",
+"",
+" set cpoints { }",
+" lappend cpoints [list $east_x $east_y ]",
+" lappend cpoints [list 0 0]",
+" lappend cpoints [list $north_x $north_y]",
+" foreach p $cpoints {",
+" # Get the scaled position.",
+" set sx [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 1 : 0\"]])]",
+" set sy [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 0 : 1\"]])]",
+"",
+" # Translate to the scaled position.",
+" set rx [expr int($pcx + $sx + 0.5)]",
+" set ry [expr int($pcy - $sy + 0.5)]",
+"",
+" # Now handle the axis flip.",
+" set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]",
+" set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]",
+" lappend pts $rx $ry",
+" }",
+"",
+"",
+" set rpoints { }",
+" set hpoints { {0.0 0.0} {-0.1 -0.07} {-0.1 0.07} {0.0 0.0} }",
+" foreach p $hpoints {",
+" # Break out the position.",
+" set sx [lindex $p [expr \"($transpose > 0) ? 1 : 0\"]]",
+" set sy [lindex $p [expr \"($transpose > 0) ? 0 : 1\"]]",
+"",
+" # Do the rotation of the head at the origin.",
+" set rx [expr ($north_x + ($sx * $coso + $sy * $sino))]",
+" set ry [expr ($north_y - ($sx * $sino + $sy * $coso))]",
+"",
+" lappend rpoints [list $rx $ry]",
+" }",
+" foreach p $rpoints {",
+" # Get the scaled position.",
+" set sx [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 1 : 0\"]])]",
+" set sy [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 0 : 1\"]])]",
+"",
+" # Translate to the scaled position.",
+" set rx [expr int($pcx + $sx + 0.5)]",
+" set ry [expr int($pcy - $sy + 0.5)]",
+"",
+" # Now handle the axis flip.",
+" set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]",
+" set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]",
+" lappend pts $rx $ry",
+" }",
+"",
+" set lpoints { }",
+" lappend lpoints [list [expr \"$east_x-0.2\"] $east_y ]",
+" lappend lpoints [list $north_x [expr \"$north_y+0.2\"] ]",
+" foreach p $lpoints {",
+" # Get the scaled position.",
+" set sx [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 1 : 0\"]])]",
+" set sy [expr ($scale * [lindex $p [expr \"($transpose > 0) ? 0 : 1\"]])]",
+"",
+" # Translate to the scaled position.",
+" set rx [expr int($pcx + $sx + 0.5)]",
+" set ry [expr int($pcy - $sy - 0.5)]",
+"",
+" # Now handle the axis flip.",
+" set rx [expr (($xflip < 0) ? ($pcx + ($pcx - $rx)) : $rx)]",
+" set ry [expr (($yflip < 0) ? ($pcy + ($pcy - $ry)) : $ry)]",
+" lappend pts $rx $ry",
+" }",
+"",
+"",
+" # Draw the compass axes.",
+" set compassPts [lrange $pts 0 5]",
+" send imagewin setColorIndex $compassColor",
+" send imagewin drawPolyline $compassPts",
+"",
+" ",
+" # Draw the compass pointer.",
+" set head [lrange $pts 6 13]",
+" send imagewin setFillType solid",
+" send imagewin drawPolygon $head",
+"",
+" # Draw the labels.",
+" send imagewin drawAlphaText [lindex $pts 14] [lindex $pts 15] $xlab",
+" send imagewin drawAlphaText [lindex $pts 16] [lindex $pts 17] $ylab",
+"",
+" send imagewin setLogRes $sv_xl $sv_yl",
+"",
+" set redraw_compass 0",
+"",
+"} ; foreach w {xflip yflip} { send $w addCallback drawCompass }",
+"",
+"",
+"# This is a kludge to redraw the compass after it is erased when displaying",
+"# a new image. Once the user moves the mouse back into the main window we'll",
+"# do the redraw.",
+"send imagewin addEventHandler drawCompass enterWindowMask",
+"",
+"",
+"",
+"proc createCompassMarker { pts args } \\",
+"{",
+" set cm_points { }",
+" lappend cm_points [lrange $pts 0 1]",
+" lappend cm_points [lrange $pts 2 3]",
+" lappend cm_points [lrange $pts 4 5]",
+"",
+" print [list $cm_points]",
+"",
+"}",
+"",
+"",
+"proc eraseCompass args \\",
+"{",
+" global panner_mapping",
+" send imagewin refreshMapping $panner_mapping",
+"}",
+"",
+"proc toggleCompass { widget type state args } \\",
+"{",
+" global last_compass",
+"",
+" if {$state} {",
+" drawCompass",
+" set last_compass True",
+" } else {",
+" eraseCompass",
+" set last_compass False",
+" }",
+"} ; send compass addCallback toggleCompass",
+"",
+"",
+"",
+" ",
+"################################################################################",
+"# RULER MARKERS",
+"################################################################################",
+"",
+"set rulerX 0 ;# ruler start in screen coords",
+"set rulerY 0",
+"set rulerPts { {0 0} {0 0} {0 0} } ;# ruler vertices",
+"set rulerList { } ;# ruler list",
+"",
+"set rulerSticky { } ;# list of sticky rulers",
+"set isSticky \"Sticky\" ;# menu label",
+"",
+"set rulerWCS 0 ;# use WCS coords",
+"set rulerXWCS 0 ;# ruler start in WCS units",
+"set rulerYWCS 0",
+"set rulerXWCS2 0 ;# ruler end in WCS units",
+"set rulerYWCS2 0",
+"set rulerFmt pixel ;# ruler label format",
+"",
+"",
+"# Translations when pointer is inside marker.",
+"set rulerTranslations { \\",
+" !Ctrl <Key>b: call(prevFrame,$name)",
+" !Ctrl <Key>b: call(prevFrame,$name)",
+" !Ctrl <Key>f: call(nextFrame,$name)",
+" !Ctrl <Key>h: call(move_cursor,-1,0)",
+" !Ctrl <Key>j: call(move_cursor,0,1)",
+" !Ctrl <Key>k: call(move_cursor,0,-1)",
+" !Ctrl <Key>l: call(move_cursor,1,0)",
+" !Ctrl <Key>n: call(normalize)",
+" !Ctrl <Key>c: call(cpZoomAction,centerFrame)",
+" !Ctrl <Key>i: call(cpInvert)",
+" !Ctrl <Key>m: call(cpMatchFrames)",
+" !Ctrl <Key>r: call(cpRegisterFrames)",
+" !Ctrl <Key>p: call(togglePanner)",
+" !Alt <Key>1: call(cpSetFrame,frame1)",
+" !Alt <Key>2: call(cpSetFrame,frame2)",
+" !Alt <Key>3: call(cpSetFrame,frame3)",
+" !Alt <Key>4: call(cpSetFrame,frame4)",
+" !Ctrl <Key>1: call(cpZoom,1,1,fixed)",
+" !Ctrl <Key>2: call(cpZoom,2,2,fixed)",
+" !Ctrl <Key>3: call(cpZoom,3,3,fixed)",
+" !Ctrl <Key>4: call(cpZoom,4,4,fixed)",
+" !Ctrl <Key>5: call(cpZoom,5,5,fixed)",
+" !Ctrl <Key>6: call(cpZoom,6,6,fixed)",
+" !Ctrl <Key>7: call(cpZoom,7,7,fixed)",
+" !Ctrl <Key>8: call(cpZoom,8,8,fixed)",
+" !Ctrl <Key>9: call(cpZoom,9,9,fixed)",
+" <Key>BackSpace: call(deleteNamedRuler,NAME,$x,$y)",
+" <Key>Delete: call(deleteNamedRuler,NAME,$x,$y)",
+" <KeyPress>: m_input()",
+" <Btn3Down>: call(setRulerMenu) popup(rulerMenu)",
+" <Btn3Up>: popdown(rulerMenu)",
+"!Ctrl <Btn1Motion>: track-cursor() call(wcsUpdate,$x,$y) call(resizeRuler,$x,$y,0)",
+" !Ctrl <Btn1Up>: call(deleteRuler,$x,$y)",
+" <Motion>: track-cursor() call(wcsUpdate,$x,$y) call(magnifierMapImage,$x,$y)",
+"}",
+"",
+"",
+"",
+"# Popup menu in effect when inside marker.",
+"set rulerMenuDescription {",
+" { \"Ruler\" f.title }",
+" { f.dblline }",
+" { \"$isSticky\" f.exec { ",
+" toggleSticky $ruler",
+" } }",
+" { f.line }",
+" { \"Units\" f.menu rulerUnits }",
+" { \"Color\" f.menu rulerColor }",
+" { f.line }",
+" { \"Draw into Frame\" f.exec { ",
+" writeRuler $ruler",
+" } sensitive False }",
+" { f.line }",
+" { \"Destroy\" f.exec { ",
+" scan $ruler \"ruler%d\" num",
+" deleteNamedRuler $num x y",
+" } }",
+"} ; createMenu rulerMenu imagewin $rulerMenuDescription",
+"",
+"set rulerUnitsDescription {",
+" { Units f.title }",
+" { f.dblline }",
+" { \"Pixels\" f.exec { setUnits $ruler pixel } }",
+" { \"Arc Seconds\" f.exec { setUnits $ruler arcsec ",
+" } sensitive { ($rulerWCS > 0) ? \"True\" : \"False\"} }",
+" { \"Arc Minutes\" f.exec { setUnits $ruler arcmin ",
+" } sensitive { ($rulerWCS > 0) ? \"True\" : \"False\"} }",
+" { \"Degrees\" f.exec { setUnits $ruler degrees ",
+" } sensitive { ($rulerWCS > 0) ? \"True\" : \"False\"} }",
+"} ; createMenu rulerUnits rulerMenu $rulerUnitsDescription",
+"",
+"set rulerColorDescription {",
+" { Color f.title }",
+" { f.dblline }",
+" { \"\" f.exec \"r_setColor $ruler black yellow\"",
+" bitmap solid foreground black }",
+" { \"\" f.exec \"r_setColor $ruler white black\" ",
+" bitmap solid foreground white }",
+" { \"\" f.exec \"r_setColor $ruler red yellow\" ",
+" bitmap solid foreground red }",
+" { \"\" f.exec \"r_setColor $ruler green black\" ",
+" bitmap solid foreground green }",
+" { \"\" f.exec \"r_setColor $ruler blue white\" ",
+" bitmap solid foreground blue }",
+" { \"\" f.exec \"r_setColor $ruler magenta black\" ",
+" bitmap solid foreground magenta }",
+" { \"\" f.exec \"r_setColor $ruler cyan black\" ",
+" bitmap solid foreground cyan }",
+" { \"\" f.exec \"r_setColor $ruler yellow black\" ",
+" bitmap solid foreground yellow }",
+"} ; createMenu rulerColor rulerMenu $rulerColorDescription",
+"",
+"",
+"proc makeRuler {parent x y} \\",
+"{",
+" global rulerTranslations ruleno rulerWCS rulerXWCS rulerYWCS",
+" global rulerPts rulerX rulerY rulerList",
+" global isSticky rulerMenuDescription rulerUnitsDescription",
+" global coord coordLab",
+"",
+"",
+" incr ruleno ; set ruler ruler$ruleno",
+"",
+" # Substitute so the marker translation will delete the marker",
+" # by it's number rather than the default parent widget name.",
+" regsub -all NAME $rulerTranslations $ruleno translations",
+"",
+" # Create the polygon for the marker.",
+" send $parent createMarker $ruler \\",
+" type polygon\\",
+" createMode noninteractive\\",
+" translations $translations\\",
+" lineColor yellow\\",
+" fill False\\",
+" highlightWidth 1\\",
+" highlightColor yellow\\",
+" knotSize 0\\",
+" activated True\\",
+" visible False\\",
+" sensitive True\\",
+" x $x\\",
+" y $y",
+"",
+" # Define a callback so we can identify the ruler.",
+" send $ruler addCallback selectRuler focusIn focusOut",
+"",
+" # Create the text markers for the labels.",
+" send $parent set markerTextFont 6x9",
+" makeLabelMarker $parent rulerXlab$ruleno 5ch 1ch",
+" makeLabelMarker $parent rulerYlab$ruleno 5ch 1ch",
+" makeLabelMarker $parent rulerHlab$ruleno 8ch 1ch",
+" send $parent set markerTextFont 6x13",
+"",
+" set rulerX $x ;# save the reference point",
+" set rulerY $y",
+"",
+" set ref [ list $x $y ] ;# initialize the polygon",
+" set rx [ list [expr \"$x +1\"] $y ]",
+" set ry [ list $x [expr \"$y +1\"] ]",
+" set rulerPts [list $ref $rx $ry ]",
+"",
+" send $ruler setVertices $rulerPts ;# set attributes",
+" send $ruler set visible True\"",
+" send $ruler setAttribute autoRedraw True",
+"",
+" # See whether we have a WCS to use.",
+" set rulerWCS 0",
+" set rulerXWCS 0",
+" set rulerYWCS 0",
+" for {set num 1} {$num <= 4 && $rulerWCS == 0} {incr num} {",
+" if { [info exists coordLab(wcs$num)] } {",
+" set xl [string tolower [lindex $coordLab(wcs$num) 0]]",
+" set yl [string tolower [lindex $coordLab(wcs$num) 1]]",
+" set fmt [string tolower [send fmtWcs$num get label] ]",
+" if {$xl==\" ra\" || $xl==\"elon\" || $xl==\"glon\" || $xl==\"slon\"} {",
+" set rulerWCS $num",
+" set rulerXWCS [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]",
+" set rulerYWCS [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]",
+" }",
+" }",
+" }",
+"",
+" # Edit the menus.",
+" set isSticky \"Sticky\"",
+" editMenu rulerMenu imagewin $rulerMenuDescription",
+" editMenu rulerUnits imagewin $rulerUnitsDescription",
+"",
+"",
+" lappend rulerList $ruleno",
+"}",
+"",
+"proc wcs2log { val label fmt} \\",
+"{",
+" set newval $val",
+" if {$fmt == \"sexigesimal\" || $fmt == \"default\"} {",
+" scan $val \"%d:%d:%f\" h m s",
+" set newval [expr \"double($h) + double($m) / 60.0 + double($s) / 3600.0\"]",
+" if {$label == \" ra\"} {",
+" set newval [expr \"double($newval * 15.0)\"]",
+" }",
+" }",
+" return [expr \"double($newval)\" ]",
+"}",
+"",
+"",
+"proc resizeRuler {x y redraw} \\",
+"{",
+" global rulerPts rulerX rulerY ruleno coord coordLab",
+" global rulerWCS rulerXWCS rulerYWCS rulerFmt",
+" global rulerXWCS2 rulerYWCS2",
+"",
+"",
+" # Track the mouse.",
+" set ref [ list $rulerX $rulerY ]",
+" set rx [ list $x $rulerY ]",
+" set ry [ list $x $y ]",
+" set rulerPts [list $ref $rx $ry ]",
+"",
+" # Compute the distances.",
+" if {$rulerWCS > 0} {",
+" set num $rulerWCS",
+" set xl [string tolower [lindex $coordLab(wcs$num) 0]]",
+" set yl [string tolower [lindex $coordLab(wcs$num) 1]]",
+" set fmt [string tolower [send fmtWcs$num get label] ]",
+"",
+" # Save the cursor coords in WCS so we can convert labels.",
+" if {$redraw} {",
+" set nx $rulerXWCS2",
+" set ny $rulerYWCS2",
+" } else {",
+" set nx [wcs2log [lindex $coord(wcs$num) 0] $xl $fmt]",
+" set ny [wcs2log [lindex $coord(wcs$num) 1] $yl $fmt]",
+" set rulerXWCS2 $nx",
+" set rulerYWCS2 $ny",
+" }",
+" }",
+"",
+" if {$rulerFmt == \"pixel\"} {",
+" set xdist [ expr \"abs($x - $rulerX)\" ]",
+" set ydist [ expr \"abs($y - $rulerY)\" ]",
+" set hdist [ expr \"sqrt($xdist * $xdist + $ydist * $ydist)\" ]",
+" } else {",
+" set xdist [ expr \"abs($nx - $rulerXWCS)\" ]",
+" set ydist [ expr \"abs($ny - $rulerYWCS)\" ]",
+" set hdist [ expr \"sqrt($xdist * $xdist + $ydist * $ydist)\" ]",
+" }",
+"",
+" # Redraw the polygon.",
+" send ruler$ruleno setVertices $rulerPts",
+"",
+" # Label the distances.",
+" setXRulerLabel $x $y $xdist",
+" setYRulerLabel $x $y $ydist",
+" setHRulerLabel $x $y $hdist",
+"}",
+"",
+"# Create a label marker for the ruler.",
+"proc makeLabelMarker { parent name width height } \\",
+"{",
+" send $parent createMarker $name \\",
+" type text \\",
+" createMode noninteractive \\",
+" width $width \\",
+" height $height \\",
+" lineWidth 0 \\",
+" imageText true \\",
+" textBgColor yellow \\",
+" textColor black \\",
+" activated true \\",
+" visible false",
+"}",
+"",
+"proc setXRulerLabel { cx cy dist } \\",
+"{",
+" global rulerX rulerY ruleno winWidth winHeight",
+" global cpXscale rulerFmt",
+"",
+" send rulerXlab$ruleno set visible False",
+"",
+" if {[expr \"abs($cx - $rulerX)\"] > 30} {",
+" switch $rulerFmt {",
+" pixel { set text [format \"%.1f\" [expr \"$dist / $cpXscale\"] ] }",
+" arcsec { set text [format \"%.2f\\\"\" [expr \"$dist * 3600.0\"] ] }",
+" arcmin { set text [format \"%.2f\\'\" [expr \"$dist * 60.0\"] ] }",
+" degrees { set text [format \"%.2fd\" \"$dist\" ] }",
+" }",
+" set len [expr [string length $text] + 1]",
+" send rulerXlab$ruleno \"set width ${len}ch\"",
+"",
+" # Compute the placement of the label marker.",
+" if {$cy > $rulerY} {",
+" set yp [expr \"$rulerY - 14\"]",
+" } else {",
+" set yp [expr \"$rulerY + 2\"]",
+" }",
+" if {$cx > $rulerX} {",
+" set xp [expr \"$rulerX + abs($cx - $rulerX)/2 - 10\"]",
+" } else {",
+" set xp [expr \"$rulerX - abs($cx - $rulerX)/2 - 10\"]",
+" }",
+"",
+" # Bounds checking.",
+" if {$xp < 0} { set xp 1 }",
+" if {$yp < 0} { set yp 1 }",
+" if {$xp > $winWidth} { set xp [expr \"$winWidth - 20\" }",
+" if {$yp > $winHeight} { set yp [expr \"$winHeight - 20\" }",
+"",
+" send rulerXlab$ruleno \"setAttributes x $xp y $yp\"",
+" send rulerXlab$ruleno \"set text \\{$text\\}; redraw erase\"",
+"",
+" send rulerXlab$ruleno set visible True",
+" }",
+"}",
+"",
+"proc setYRulerLabel { cx cy dist } \\",
+"{",
+" global rulerX rulerY ruleno winWidth winHeight",
+" global cpYscale rulerFmt",
+"",
+" send rulerYlab$ruleno set visible False",
+"",
+" if {[expr \"abs($cy - $rulerY)\"] > 20} {",
+" switch $rulerFmt {",
+" pixel { set text [format \"%.1f\" [expr \"$dist / $cpYscale\"] ] }",
+" arcsec { set text [format \"%.2f\\\"\" [expr \"$dist * 3600.0\"] ] }",
+" arcmin { set text [format \"%.2f\\'\" [expr \"$dist * 60.0\"] ] }",
+" degrees { set text [format \"%.2fd\" \"$dist\" ] }",
+" }",
+" set len [expr [string length $text] + 1]",
+" send rulerYlab$ruleno \"set width ${len}ch\"",
+"",
+" # Compute the placement of the label marker.",
+" if {$cx > $rulerX} {",
+" set xp [expr \"$cx + 2\"]",
+" } else {",
+" set xp [expr \"$cx - $len * 6 - 5\"]",
+" }",
+" if {$cy > $rulerY} {",
+" set yp [expr \"$rulerY + abs($cy - $rulerY)/2\"]",
+" } else {",
+" set yp [expr \"$rulerY - abs($cy - $rulerY)/2\"]",
+" }",
+"",
+" # Bounds checking.",
+" if {$xp < 0} { set xp 1 }",
+" if {$yp < 0} { set yp 1 }",
+" if {$xp > $winWidth} { set xp [expr \"$winWidth - 20\" }",
+" if {$yp > $winHeight} { set yp [expr \"$winHeight - 20\" }",
+"",
+" send rulerYlab$ruleno \"setAttributes x $xp y $yp\"",
+" send rulerYlab$ruleno \"set text \\{$text\\}; redraw erase\"",
+" send rulerYlab$ruleno set visible True",
+" } ",
+"}",
+"",
+"proc setHRulerLabel { cx cy dist } \\",
+"{",
+" global rulerX rulerY ruleno winWidth winHeight",
+" global cpYscale cpXscale rulerFmt",
+"",
+" send rulerHlab$ruleno set visible False",
+"",
+" set xdist [ expr \"abs($cx - $rulerX)\" ]",
+" set ydist [ expr \"abs($cy - $rulerY)\" ]",
+" set hdist [ expr \"sqrt($xdist * $xdist + $ydist * $ydist)\" ]",
+"",
+" if {$hdist > 30} {",
+" switch $rulerFmt {",
+" pixel { set text [format \"%.1f\" [expr \"$dist / $cpXscale\"] ] }",
+" arcsec { set text [format \"%.2f\\\"\" [expr \"$dist * 3600.0\"] ] }",
+" arcmin { set text [format \"%.2f\\'\" [expr \"$dist * 60.0\"] ] }",
+" degrees { set text [format \"%.2fd\" \"$dist\" ] }",
+" }",
+" set len [expr [string length $text] + 1]",
+" send rulerHlab$ruleno \"set width ${len}ch\"",
+"",
+" # Compute the placement of the label marker.",
+" if {$cx > $rulerX} {",
+" set xp [expr \"$rulerX + abs($cx - $rulerX)/2 - $len * 6\"]",
+" } else {",
+" set xp [expr \"$rulerX - abs($cx - $rulerX)/2 - $len * 3\"]",
+" }",
+" if {$cy > $rulerY} {",
+" set yp [expr \"$rulerY + abs($cy - $rulerY)/2\"]",
+" } else {",
+" set yp [expr \"$rulerY - abs($cy - $rulerY)/2\"]",
+" }",
+"",
+" # Bounds checking.",
+" if {$xp < 0} { set xp 1 }",
+" if {$yp < 0} { set yp 1 }",
+" if {$xp > $winWidth} { set xp [expr \"$winWidth - 20\" }",
+" if {$yp > $winHeight} { set yp [expr \"$winHeight - 20\" }",
+"",
+" send rulerHlab$ruleno \"setAttributes x $xp y $yp\"",
+" send rulerHlab$ruleno \"set text \\{$text\\}; redraw erase\"",
+" send rulerHlab$ruleno set visible True",
+" } else {",
+" send rulerHlab$ruleno set visible False",
+" }",
+"}",
+"",
+"",
+"# Callback executed when a marker gets or loses the focus.",
+"proc selectRuler {active_ruler event event_data} \\",
+"{",
+" global ruler",
+" switch $event {",
+" focusIn { set ruler $active_ruler }",
+" focusOut { }",
+" }",
+"}",
+"",
+"# Reset the ruler format type.",
+"proc setUnits { ruler units } \\",
+"{",
+" global rulerFmt rulerX rulerY",
+"",
+" send $ruler getVertices pts",
+" set rulerX [lindex [lindex [lindex $pts 0] 0] 0]",
+" set rulerY [lindex [lindex [lindex $pts 0] 0] 1]",
+" set cx [lindex [lindex [lindex $pts 0] 1] 0] ; incr cx -1",
+" set cy [lindex [lindex [lindex $pts 0] 2] 1] ; incr cy -1",
+"",
+" set rulerFmt $units",
+" resizeRuler $cx $cy 1",
+"}",
+"",
+"# Menu option toggle callbacks.",
+"proc toggleSticky { ruler } \\",
+"{",
+" global isSticky rulerSticky rulerMenuDescription",
+"",
+" set index [ lsearch $rulerSticky $ruler]",
+" if { $index >= 0 } {",
+" # Remove it from the list.",
+" set rulerSticky [lreplace $rulerSticky $index $index]",
+" set isSticky \"Sticky\"",
+" } else {",
+" # Add it to the list.",
+" lappend rulerSticky $ruler ",
+" set isSticky \"UnSticky\"",
+" }",
+" editMenu rulerMenu imagewin $rulerMenuDescription",
+"}",
+"",
+"proc setRulerMenu args \\",
+"{",
+" global ruler isSticky rulerSticky rulerMenuDescription",
+"",
+" if { [lsearch $rulerSticky $ruler] >= 0 } {",
+" set isSticky \"UnSticky\"",
+" } else {",
+" set isSticky \"Sticky\"",
+" }",
+" editMenu rulerMenu imagewin $rulerMenuDescription",
+"}",
+"",
+"",
+"# Draw the ruler to the frame buffer as a graphic.",
+"proc writeRuler { ruler } \\",
+"{",
+"}",
+"",
+"# Change the color of the ruler.",
+"proc r_setColor {ruler bgcolor fgcolor} {",
+" ",
+" # Recolor the polygon.",
+" send $ruler \\",
+" \"markpos; set lineColor $bgcolor; set highlightColor $bgcolor; redraw\"",
+"",
+" # Recolor the labels.",
+" scan $ruler \"ruler%d\" num",
+" send rulerXlab$num \\",
+" \"markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw\"",
+" send rulerYlab$num \\",
+" \"markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw\"",
+" send rulerHlab$num \\",
+" \"markpos; set textBgColor $bgcolor; set textColor $fgcolor; redraw\"",
+"}",
+"",
+"",
+"# Delete the current ruler, called when we have a Btn1Up on the current ruler.",
+"proc deleteRuler {x y} { global ruleno ; deleteNamedRuler $ruleno $x $y }",
+"",
+"# Delete all rulers on the screen, usually called when the view changes.",
+"# We preserve the rulers marked as 'sticky'.",
+"proc deleteAllRulers args \\",
+"{",
+" global rulerList rulerSticky",
+"",
+" foreach r $rulerList { ",
+" # Delete the ruler if it's not in the sticky list.",
+" if { [lsearch $rulerSticky ruler$r] == -1 } {",
+" deleteNamedRuler $r x y ",
+" }",
+" }",
+"}",
+"",
+"# Delete a particular ruler, usually called from the translation table on",
+"# the marker itself.",
+"proc deleteNamedRuler {name x y} \\",
+"{",
+" global rulerList",
+"",
+" catch {",
+" send ruler$name destroy",
+" send rulerXlab$name destroy",
+" send rulerYlab$name destroy",
+" send rulerHlab$name destroy",
+" }",
+"",
+" # Remove the ruler from the list.",
+" set index [lsearch $rulerList $name]",
+" set rulerList [lreplace $rulerList $index $index]",
+"}",
+"",
+"",
+"",
+"",
+"",
+"###############################################",
+"# Define procedure for the help panel",
+"###############################################",
+"",
+"# Help Panel Bitmaps",
+"#-------------------",
+"createBitmap iraf_logo 45 45 {",
+"0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff,",
+"0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff,",
+"0xff, 0x3f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff,",
+"0xff, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xff, 0xff, 0xff,",
+"0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0xff,",
+"0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x80, 0xfc, 0xff, 0xff,",
+"0xff, 0x3f, 0x84, 0xf8, 0xff, 0xff, 0xff, 0x1f, 0x84, 0xf4, 0xff, 0xff,",
+"0xff, 0x1b, 0x04, 0x09, 0x00, 0xfc, 0xff, 0x11, 0x04, 0x11, 0xf8, 0xff,",
+"0x7f, 0x10, 0x04, 0x21, 0xc0, 0xff, 0x1f, 0x10, 0x04, 0x41, 0xf0, 0xff,",
+"0x00, 0x18, 0x04, 0x01, 0xe0, 0xff, 0x00, 0x18, 0x00, 0x81, 0xc0, 0xff,",
+"0x00, 0x08, 0x00, 0x01, 0xe0, 0xff, 0x07, 0x08, 0x00, 0x01, 0xf1, 0xff,",
+"0x1f, 0x08, 0x80, 0x21, 0xf0, 0xff, 0xff, 0x08, 0xc0, 0x41, 0xf4, 0xff,",
+"0xff, 0x08, 0xc0, 0x41, 0xf8, 0xff, 0xff, 0x09, 0xc0, 0xc1, 0xf0, 0xff,",
+"0xff, 0x0b, 0x80, 0xc1, 0xf1, 0xff, 0xff, 0x07, 0x80, 0x81, 0xe1, 0xff,",
+"0xff, 0x07, 0x80, 0x01, 0xc1, 0xff, 0xff, 0x07, 0x00, 0x01, 0xc0, 0xff,",
+"0xff, 0x07, 0xc2, 0x05, 0x81, 0xff, 0xff, 0x07, 0xf2, 0x07, 0x81, 0xff,",
+"0xff, 0x07, 0xf2, 0x17, 0x03, 0xff, 0xff, 0x03, 0xfa, 0x7f, 0x02, 0xfe,",
+"0xff, 0x03, 0xfe, 0xff, 0x02, 0xfe, 0xff, 0x03, 0xfe, 0xff, 0x03, 0xfc,",
+"0xff, 0x03, 0xff, 0xff, 0x07, 0xfc, 0xff, 0x83, 0xff, 0xff, 0x0f, 0xf8,",
+"0xff, 0xc1, 0xff, 0xff, 0x3f, 0xf0, 0xff, 0xe1, 0xff, 0xff, 0x7f, 0xf8,",
+"0xff, 0xf1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xe0,",
+"0xff, 0xf8, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xe7,",
+"0xff, 0xfc, 0xff, 0xff, 0xff, 0xef}; send helpIRAFLogo \"set bitmap iraf_logo\"",
+" ",
+"createBitmap noao_logo 45 45 {",
+"0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+"0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,",
+"0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,",
+"0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,",
+"0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,",
+"0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff,",
+"0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,",
+"0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,",
+"0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff,",
+"0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff,",
+"0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff,",
+"0xff, 0xff, 0x03, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0xfe, 0xff, 0xff,",
+"0xff, 0xff, 0x01, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xff,",
+"0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff,",
+"0xff, 0x7f, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff,",
+"0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff,",
+"0xff, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x80, 0xff, 0xff,",
+"0xff, 0x0f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,",
+"0xff, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0xfe, 0xff,",
+"0xff, 0x01, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xff,",
+"0xff, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xff,",
+"0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xff,",
+"0x3f, 0x00, 0x00, 0x00, 0xe0, 0xff}; send helpNOAOLogo \"set bitmap noao_logo\"",
+" ",
+"send helpInfo1 set label $version",
+"",
+"# Stuff for keeping track of visited anchors.",
+"set links { 0 }",
+"set linkIndex 0",
+"set visited(0) empty",
+"",
+"proc Help args \\",
+"{",
+" global help_up",
+" if {$help_up == 0} {",
+" send client help",
+" } else {",
+" send help_panel unmap",
+" set help_up 0",
+" } ",
+"}",
+"",
+"proc helpPanel args \\",
+"{",
+" global help_up",
+" if {$help_up} {",
+" send help_panel unmap",
+" set help_up 0",
+" } else {",
+" send help_panel map",
+" set help_up 1",
+" }",
+"}",
+"",
+"proc panelHelp args \\",
+"{",
+" Help",
+"} ; send panelHelp addCallback panelHelp",
+"",
+"proc helpQuit args \\",
+"{",
+" global help_up",
+" send help_panel unmap",
+" set help_up 0",
+"}; send helpClose addCallback helpQuit",
+"",
+"proc getHelpText { param old new } \\",
+"{",
+" send helpText setText $new",
+" helpPanel",
+"}; send help addCallback getHelpText",
+"",
+"proc anchorSelected {widget cbtype event text href args} \\",
+"{",
+" global visited links linkIndex",
+" set anchID [send helpText anchorToId $href]",
+" set visited($href) 1",
+" if {$linkIndex == 0} {",
+" send helpBack setSensitive True",
+" if {[lindex $links 1] != $anchID} {",
+" set links { 0 }",
+" send helpForward setSensitive False",
+" }",
+" }",
+" if {$linkIndex > 0 && [lindex $links [expr $linkIndex + 1]] != $anchID} {",
+" set links [lrange $links 0 $linkIndex]",
+" }",
+" if {[lindex $links [expr $linkIndex + 1]] != $anchID} {",
+" lappend links $anchID",
+" incr linkIndex",
+" } else {",
+" send helpForward setSensitive False",
+" incr linkIndex",
+" }",
+" if {$linkIndex == [expr [llength $links] - 1]} {",
+" send helpForward setSensitive False",
+" }",
+" send helpText gotoId $anchID",
+" send helpText retestAnchors",
+"}; send helpText addCallback anchorSelected anchor ",
+"",
+"proc testAnchor {widget cbtype href} \\",
+"{",
+" global visited",
+" return [info exists visited($href)]",
+"}; send helpText addCallback testAnchor testAnchor",
+"",
+"",
+"# Callbacks to position forwards and backwards in link list.",
+"proc hlpForward args \\",
+"{",
+" global links linkIndex",
+" incr linkIndex",
+" if {$linkIndex <= [llength $links]} {",
+" set anchID [lindex $links $linkIndex]",
+" send helpText gotoId $anchID",
+" send helpText retestAnchors",
+" if {$linkIndex == [expr [llength $links] - 1]} {",
+" send helpForward setSensitive False",
+" send helpBack setSensitive True",
+" } else {",
+" send helpBack setSensitive True",
+" }",
+" } else {",
+" incr linkIndex -1",
+" }",
+"}; send helpForward addCallback hlpForward",
+" ",
+"proc hlpBack args \\",
+"{",
+" global links linkIndex",
+" incr linkIndex -1",
+" if {$linkIndex >= 0} {",
+" set anchID [lindex $links $linkIndex]",
+" send helpText gotoId $anchID",
+" send helpText retestAnchors",
+" if {$linkIndex == 0} { send helpBack setSensitive False }",
+" if {$linkIndex >= 0} { send helpForward setSensitive True }",
+" } else {",
+" incr linkIndex 1",
+" }",
+"}; send helpBack addCallback hlpBack",
+"",
+"proc hlpHome args \\",
+"{",
+" global links linkIndex",
+" set links { 0 }",
+" set linkIndex 0",
+" send helpText gotoId 0",
+" send helpForward setSensitive False",
+" send helpBack setSensitive False",
+"}; send helpHome addCallback hlpHome",
+"",
+"",
+"proc helpFind args \\",
+"{",
+" set phrase [send hfEntry get string]",
+"",
+" if { $phrase != \"\" } {",
+" if {[send helpText searchText $phrase start end forward caseless] > 0} {",
+" set elid [lindex [lindex $start 0] 0]",
+" set id [max 1 [expr $elid - 10] ]",
+" send helpText gotoId $id",
+" send helpText setSelection $start $end",
+" } else {",
+" send warnText set label \"Search string not found.\"",
+" send warning map",
+" }",
+" } else {",
+" send warnText set label \"Warning: No search phrase entered.\"",
+" send warning map",
+" }",
+"} ; foreach w { hfEntry hfFind } { send $w addCallback helpFind }",
+"",
+"send hfClear addCallback { send hfEntry set string \"\" }",
+"",
+"",
+"################################################################################",
+"# Header Display Callbacks.",
+"################################################################################",
+"",
+"set hdrImage \"\"",
+"set hdrImageId \"\"",
+"set hdrKeywords \"*\"",
+"",
+"",
+"proc fitsHdrClose args \\",
+"{",
+" global hdr_up",
+"",
+" send hdr_panel unmap",
+" send imageHeader set on False",
+" set hdr_up 0",
+"} ; send hdrClose addCallback fitsHdrClose",
+"",
+"proc ptFitsHeader {widget type state args} \\",
+"{",
+" global hdr_up",
+"",
+" set hdr_up $state",
+" if {$hdr_up == 1} {",
+" send imageHeader set on True",
+" send hdr_panel map",
+" } else {",
+" send imageHeader set on False",
+" send hdr_panel unmap",
+" }",
+"}; send imageHeader addCallback ptFitsHeader",
+"",
+"proc getHeader { name id } \\",
+"{",
+" global hdrImage hdrImageId hdrKeywords",
+"",
+" set hdrImage $name",
+" set hdrImageId $id",
+" send hdrObjMenu set label $name",
+" send hdrText setText \"\"",
+" send hdrIGText set string \"\"",
+" send hdrKGText set string \"\"",
+"",
+" catch { send wcspix objinfo $hdrImageId $hdrKeywords }",
+"}",
+"",
+"proc hdrKeywFilter args \\",
+"{",
+" global hdrImageId hdrKeywords",
+"",
+" set str [ send hFindEntry get string ]",
+" if {$str != \"\"} {",
+" set hdrKeywords $str",
+" send hdrText setText \"\"",
+" catch { send wcspix objinfo $hdrImageId $hdrKeywords }",
+" }",
+"} ; send hdrFilter addCallback hdrKeywFilter",
+"",
+"",
+"# Set the image menu in the header panel.",
+"proc setHdrObjMenu { frame args } \\",
+"{",
+" global frameCache ism_enable",
+"",
+" if {! $ism_enable} \\",
+" return",
+"",
+" # Create the menu of images for the header panel.",
+" set items { }",
+" foreach i [list $frameCache($frame)] {",
+" set l [lindex $i 0]",
+" set lid [lindex $i 1]",
+" regsub -all {[\\[]} $l \"\\\\\\[\" l2",
+" catch {",
+" lappend items [format \"%s f.exec \\{getHeader %s %d\\}\" $l $l2 $lid]",
+" }",
+" }",
+" editMenu objMenu hdrObjMenu $items",
+"}",
+"",
+"",
+"# Search box for the header.",
+"proc hdrFind args \\",
+"{",
+" set phrase [send hFindEntry get string]",
+"",
+" if { $phrase != \"\" } {",
+" if {[send hdrText searchText $phrase start end forward caseless] > 0} {",
+" set elid [lindex [lindex $start 0] 0]",
+" set id [max 1 [expr $elid - 10] ]",
+" send hdrText gotoId $id",
+" send hdrText setSelection $start $end",
+" } else {",
+" send warnText set label \"Search string not found.\"",
+" send warning map",
+" }",
+" } else {",
+" send warnText set label \"Warning: No search phrase entered.\"",
+" send warning map",
+" }",
+"} ; foreach w { hFindEntry hdrFind } { send $w addCallback hdrFind }",
+"",
+"send hdrClear addCallback { send hFindEntry set string \"\" }",
+"",
+"",
+"################################################################################",
+"# Pixel Table Callbacks.",
+"################################################################################",
+"",
+"set psize 5",
+"set pixtab_up 0",
+"set hdr_up 0",
+"",
+"createMenu pixtabMenu pixtabSize {",
+" { \"3x3\" f.exec { pixtabSetSize 3 } }",
+" { \"5x5\" f.exec { pixtabSetSize 5 } }",
+" { \"7x7\" f.exec { pixtabSetSize 7 } }",
+" { \"9x9\" f.exec { pixtabSetSize 9 } }",
+"}",
+"",
+"",
+"proc updatePixelTable { cx cy wx wy args } \\",
+"{",
+" global psize pixtab_up ism_enable",
+"",
+" if {! $pixtab_up} \\",
+" return",
+" if {$ism_enable} \\",
+" return",
+"",
+" set delta [expr int($psize / 2) ]",
+" set x1 [expr ($wx - $delta) ]",
+" set x2 [expr ($wx + $delta) ]",
+" set y1 [expr ($wy - $delta) ]",
+" set y2 [expr ($wy + $delta) ]",
+" set c [ expr int($psize / 2) ]",
+"",
+"",
+" # Update the table labels.",
+" set x $x1 ; set xl {}",
+" set y $y2 ; set yl {}",
+" for {set i 0} {$i < $psize} {incr i} {",
+" lappend xl [format \" %10.1f \" $x] ; set x [ expr ($x + 1.) ]",
+" lappend yl [format \" %10.1f \" $y] ; set y [ expr ($y - 1.) ]",
+" }",
+" send ptColLabs setList $xl ; send ptColLabs highlight $c",
+" send ptRowLabs setList $yl ; send ptRowLabs highlight $c",
+"",
+" # Update the pixel table itself.",
+" #set pix [ send client getPixels $cx $cy $psize True ]",
+"",
+" set x0 [ expr int($cx - $psize / 2. + 0.5)]",
+" set y0 [ expr int($cy - $psize / 2. + 0.5)]",
+" set pix [ send client getPixels $x0 $y0 $psize $psize ]",
+" send pixtab setList [ lrange $pix 4 end ]",
+" set c [ expr int(($psize * $psize) / 2) ]",
+" send pixtab highlight $c",
+"",
+" # Update the pixtab stats.",
+" set sum 0.0",
+" set sum2 0.0",
+" set npix [ expr ($psize * $psize) ]",
+" set nend [ expr ($psize * $psize) + 4 ]",
+" for {set i 4} {$i < $nend} {incr i} {",
+" set val [lindex $pix $i]",
+" catch {",
+" set sum [ expr ($sum + $val) ]",
+" set sum2 [ expr ($sum2 + $val * $val) ]",
+" }",
+" }",
+"",
+" set mean [ expr ($sum / ($npix * 1.0)) ]",
+" set var [ expr (($sum2 - $sum * $mean) / ($npix - 1)) ]",
+" if {$var <= 0.0} {",
+" set stdev 0.0",
+" } else {",
+" set stdev [ expr sqrt ($var) ]",
+" }",
+" send meanValue set label [ format \"%10.2f\" $mean ]",
+" send sigValue set label [ format \"%10.4f\" $stdev ]",
+"}",
+"",
+"",
+"proc pixtabClose args \\",
+"{",
+" global pixtab_up",
+"",
+" send pixel_panel unmap",
+" send pixelTable set on False",
+" set pixtab_up 0",
+" catch { send wcspix set psize 0 }",
+"} ; send pixtabClose addCallback pixtabClose",
+"",
+"",
+"proc pixtabSetSize { size args } \\",
+"{",
+" global psize ism_enable",
+"",
+" set c [ expr int(($psize * $psize) / 2) ]",
+" send pixtab highlight $c",
+"",
+" # Now reset the window size.",
+" switch $size {",
+" 3 { send pixel_panel \"resize 265 175\"",
+" send pixtab \"set width 180 ; set height 60\"",
+" }",
+" 5 { send pixel_panel \"resize 375 215\"",
+" send pixtab \"set width 290 ; set height 105\"",
+" }",
+" 7 { send pixel_panel \"resize 495 265\"",
+" send pixtab \"set width 410 ; set height 150\"",
+" }",
+" 9 { send pixel_panel \"resize 610 310\"",
+" send pixtab \"set width 525 ; set height 195\"",
+" }",
+" }",
+"",
+" send pixtab set defaultColumns $size",
+" send ptColLabs set defaultColumns $size",
+" set psize $size",
+"",
+" # Notify the ISM we've changed size.",
+" if ($ism_enable) {",
+" catch { send wcspix set psize $psize }",
+" }",
+"",
+" send imagewin getCursorPos xc yc",
+" updatePixelTable $xc $yc $xc $yc",
+"",
+"} ; pixtabSetSize $psize",
+"",
+"",
+"proc ptPixelTable {widget type state args} \\",
+"{",
+" global pixtab_up psize",
+"",
+" set pixtab_up $state",
+" if {$pixtab_up == 1} {",
+" send pixelTable set on True",
+" send pixel_panel map",
+" catch { send wcspix set psize $psize }",
+" } else {",
+" send pixelTable set on False",
+" send pixel_panel unmap",
+" catch { send wcspix set psize 0 }",
+" }",
+"}; send pixelTable addCallback ptPixelTable",
+"",
+"",
+"################################################################################",
+"# Warning dialog. This pops up a dialog box with the given warning message,",
+"# and executes the given command if the user pushes OK.",
+"#",
+"# Usage: Wexec object message [ok_action [cancel_action]]",
+"#",
+"# The message text is displayed in a popup and the user hits the ok or",
+"# cancel button to close the popup. If an action has been posted for the",
+"# button selected then it is sent to the named object. Only one alert can",
+"# be in effect at a time; posting another alert before the first has",
+"# completed causes the new alert to override the first.",
+"################################################################################",
+"",
+"set W_object \"\"",
+"set W_ok_cmd \"\"",
+"set W_cancel_cmd \"\"",
+"",
+"proc Wexec {object msg args} \\",
+"{",
+" global W_object W_ok_cmd W_cancel_cmd",
+" set W_object $object",
+" set W_ok_cmd [lindex $args 0]",
+" set W_cancel_cmd [lindex $args 1]",
+" send warnText set label $msg",
+" send warning map",
+"}",
+"",
+"proc Wbutton {widget args} \\",
+"{",
+" global W_object W_ok_cmd W_cancel_cmd",
+" switch $widget {",
+" warnOk { if [llength $W_ok_cmd] { send $W_object $W_ok_cmd }",
+" }",
+" warnCancel { if [llength $W_cancel_cmd] { send $W_object $W_cancel_cmd }",
+" }",
+" }",
+" send warning unmap",
+"}",
+"send warnOk addCallback Wbutton",
+"send warnCancel addCallback Wbutton",
+"",
+"# The parameter \"alert\" is used to forward alerts from the client.",
+"proc setAlert {param old new} \\",
+"{",
+" Wexec client [lindex $new 0] [lindex $new 1]",
+"}; send alert addCallback setAlert",
+"",
+"",
+"",
+"################################################",
+"# Define some TCL debug procedures.",
+"################################################",
+"",
+"set tcl_up 0",
+"",
+"proc tclCommandClear {widget args} { send tclEntry set string \"\" }",
+"proc tclCommandExecute {widget args} { send server [send tclEntry {get string}]",
+"}",
+"proc tclCommand {widget mode command args} { send server $command }",
+"proc tclClose {widget args} { tclPanel }",
+"proc tclOpen args \\",
+"{ ",
+" global tcl_up",
+" send tcl_panel map ",
+" set tcl_up 1",
+"}",
+"",
+"proc tclPanel args \\",
+"{",
+" global tcl_up",
+" if {$tcl_up} {",
+" send tcl_panel unmap",
+" set tcl_up 0",
+" } else {",
+" send tcl_panel map",
+" set tcl_up 1",
+" }",
+"}",
+"",
+"send tclClear addCallback tclCommandClear",
+"send tclExecute addCallback tclCommandExecute",
+"send tclEntry addCallback tclCommand",
+"send tclDismiss addCallback tclClose",
+"",
+"",
+"",
+"################################################",
+"# ISM Module support routines.",
+"################################################",
+"",
+"",
+"# Turn the ISM on or off.",
+"proc ismToggle { widget type state args } \\",
+"{",
+" global ism_enable ism_capable psize",
+"",
+" set ism_enable $state",
+"",
+" # Set the coord-panel header option availability.",
+" if {$ism_enable == 1 && $ism_capable} {",
+" send imageHeader setSensitive True",
+" send woptBPM setSensitive True",
+" catch { send client ism_start wcspix }",
+" } else {",
+" send imageHeader setSensitive False",
+" send woptBPM set on False",
+" send woptBPM setSensitive False",
+" catch { send client ism_stop wcspix }",
+" send hdr_panel unmap",
+" }",
+" setCoordPanelSensitivity",
+"",
+"} ; send ismToggle addCallback ismToggle",
+"",
+"",
+"",
+"# Handle messages from ISM clients and pass them on to the appropiate",
+"# callback.",
+"",
+"proc ism_msg { param old new } \\",
+"{",
+" global ism_enable ",
+"",
+" set cmd [lindex $new 0] ;# command name",
+" set ism [lindex $new 1] ;# determine ISM name",
+" set argv [lrange $new 2 end] ;# get args",
+" set argc [llength $argv]",
+"",
+" switch $cmd {",
+" source { source [lindex $new 1] }",
+" alert { Wexec client [lindex $new 1] }",
+" deliver { ${ism}_msg $argc $argv }",
+" info { ism_info $ism }",
+" }",
+"} ; send ism_msg addCallback ism_msg",
+"",
+"",
+"",
+"# Log a client message to the info panel",
+"set ismInfoText \" \" ",
+"",
+"proc ism_info { text } \\",
+"{",
+" global infoMode ismInfoText",
+"",
+" set ismInfoText [format \"%s\\n%s\" $ismInfoText $text]",
+" if {$infoMode == \"infoOptIsm\"} {",
+" send infoText set string $ismInfoText",
+" }",
+"}",
+"",
+"# Initialize the text.",
+"proc ismInitInfoText args \\",
+"{",
+" global ismInfoText",
+"",
+" set ismInfoText \"\"",
+" ism_info \"\\t ISM Client Message Logs\"",
+" ism_info \"\\t -----------------------\"",
+" ism_info \" \"",
+"} ; ismInitInfoText",
+"",
+"",
+"",
+"################################################",
+"# WPIX module support routines.",
+"################################################",
+"",
+"set cur_objid 0",
+"set cur_regid 0",
+"set redraw_compass 0",
+"#set Compass(0) { 0.0 1 1 0 X Y }",
+"set Compass(0) { 0.0 0.0 1.0 -1.0 0.0 0 X Y }",
+"set Orient(0) { 1 1 1 }",
+"",
+"set wcspix_debug 0",
+"",
+"proc wcspix_msg { argc argv } \\",
+"{",
+" global wcspix_debug",
+"",
+" set arg [string trimleft [ string trimright [lindex $argv 0] ] ]",
+" set cmd [lindex $arg 0]",
+"",
+" if {$wcspix_debug} { print \"wcspix_msg: $cmd\" }",
+"",
+"",
+" switch $cmd {",
+" startup { wcspix_startup }",
+" shutdown { wcspix_shutdown }",
+" disable { wcspix_disable }",
+" capable { wcspix_capable }",
+"",
+" cache { wcspix_cache [lrange $arg 1 end] }",
+" uncache { wcspix_uncache [lrange $arg 1 end] }",
+" wcstran { wcspix_wcstran [lrange $arg 1 end] }",
+" wcslist { wcspix_wcslist [lrange $arg 1 end] }",
+"",
+" imghdr { send hdrText \\",
+" setText [format \"<pre>%s\\n%s</pre>\" \\",
+" [string trimright [send hdrText getText simple] \"\\n\"]\\",
+" [lindex $arg 1] ]",
+" }",
+" wcshdr { send hdrKGText append [lindex $arg 1] }",
+"",
+" wcsinfo { send hdrIGText append [lindex $arg 1] ",
+" send hdrText gotoId 0",
+" send hdrKGText set insertPosition 0",
+" }",
+"",
+" compass { wcspix_compass [lrange $arg 1 end] ; drawCompass }",
+" orient { wcspix_orient [lrange $arg 1 end] }",
+" wcstype { wcspix_wcstype [lindex $arg 1] [lindex $arg 2] }",
+" wcsfmt { set num [lindex $arg 2]",
+" send fmtWcs$num set label [lindex $arg 1] }",
+"",
+" wcspix_cmd { send wcsIsmCmd set string [lindex $arg 1] }",
+"",
+" pixtab { set tab [lindex [lindex $arg 1] 0]",
+" set col [lindex [lindex $arg 1] 1]",
+" set row [lindex [lindex $arg 1] 2]",
+" set stat [lindex [lindex $arg 1] 3]",
+" wcspix_pixtab $tab $col $row $stat",
+" }",
+" }",
+"}",
+"",
+"",
+"# Startup and initialize the wcspix module with the GUI state.",
+"proc wcspix_startup args \\",
+"{",
+" global ism_enable frame",
+" global up_todo psize pixtab_up frameCache",
+"",
+" set ism_enable 1",
+" send ismToggle set on True",
+" send imageHeader setSensitive True",
+" send woptBPM setSensitive True",
+" setCoordPanelSensitivity",
+" ismInitInfoText",
+"",
+" if {$up_todo < 3} {",
+" resizeCoordsBox $up_todo",
+" }",
+" updateCoordsBox",
+" drawCompass",
+"",
+" # Initialize the frame cache.",
+" foreach c [array names frameCache] {",
+" if {$c != \"0\"} { unset frameCache($c) }",
+" }",
+"",
+" catch { ",
+" if {$pixtab_up} { send wcspix set psize $psize }",
+" for {set i 1} {$i <= 4} {incr i} {",
+" send wcspix set wcs [send sysWcs$i get label] $i",
+" send wcspix set format [send fmtWcs$i get label] $i",
+" }",
+" }",
+"",
+" if { [send infoOptClients get on] } {",
+" send client info clients",
+" }",
+"}",
+"",
+"# Shutdown the WPIX module.",
+"proc wcspix_shutdown args \\",
+"{",
+" global ism_enable frame",
+"",
+" set ism_enable 0",
+" send ismToggle set on False",
+" send imageHeader setSensitive False",
+" send woptBPM set on False",
+" send woptBPM setSensitive False",
+" setCoordPanelSensitivity",
+" setCoordPanelHeight",
+"",
+" wcsFmtIValue \"N/A\"",
+" wcsFmtBValue \"0\"",
+"",
+" resizeCoordsBox 0",
+" drawCompass",
+"",
+" if { [send infoOptClients get on] } {",
+" send client info clients",
+" }",
+"}",
+"",
+"",
+"# Disable the WPIX module. We are only called when a display client has",
+"# indicated it doesn't use the new mapping facilities and having the WPIX",
+"# ISM visible will only confuse the user.",
+"",
+"proc wcspix_disable args \\",
+"{",
+" global ism_enable ism_capable rulerWCS",
+"",
+" if {$ism_enable} {",
+" send wcspix quit",
+" }",
+" set ism_capable 0",
+" set rulerWCS 0",
+" wcspix_shutdown",
+" send ismToggle setSensitive False",
+"}",
+"",
+"",
+"# Client connected is capable of using the ISM, but don't necessarily turn",
+"# it on at this point.",
+"",
+"proc wcspix_capable args \\",
+"{",
+" global ism_capable",
+"",
+" set ism_capable 1",
+" wcsFmtIValue \"0\"",
+" wcsFmtBValue \"0\"",
+" send ismToggle setSensitive True",
+"}",
+"",
+"",
+"# Cache an image in the GUI.",
+"proc wcspix_cache { argv } \\",
+"{",
+" global frameCache redraw_compass cur_objid",
+"",
+" set name [lindex $argv 0]",
+" set frame [lindex $argv 1]",
+" set id [lindex $argv 2]",
+"",
+" # Store the image name and id in a local cache.",
+" lappend frameCache($frame) $name $id",
+" send hdrObjMenu set label $name",
+"",
+" # Automatically get the header.",
+" regsub -all {[\\[]} $name \"\\\\\\[\" image",
+" catch { getHeader $image $id }",
+"",
+" setHdrObjMenu $frame",
+"",
+" set cur_objid $id",
+" set redraw_compass 1",
+"}",
+"",
+"# Uncache an image in the GUI.",
+"proc wcspix_uncache { argv } \\",
+"{",
+" global frameCache Compass",
+"",
+" set id [lindex $argv 0]",
+" foreach c [array names frameCache] {",
+" set i1 0",
+" set i2 1",
+" set new { }",
+" while { $i2 < [llength $frameCache($c)] } {",
+" if {[lindex $frameCache($c) $i2] != $id} { ",
+" lappend new [lindex $frameCache($c) $i1]",
+" lappend new [lindex $frameCache($c) $i2]",
+" }",
+" incr i1 2",
+" incr i2 2",
+" }",
+" set frameCache($c) $new",
+" }",
+" if [info exists Compass($id)] {",
+" unset Compass($id)",
+" }",
+"}",
+"",
+"# Format the results of the WCSTRAN method.",
+"proc wcspix_wcstran { argv } \\",
+"{",
+" global frameCache cur_objid cur_regid redraw_compass",
+"",
+" set objid [ lindex [lindex $argv 0] 1]",
+" set regid [ lindex [lindex $argv 1] 1]",
+" set pixval [ lindex [lindex $argv 2] 1]",
+" set bpmval [ lindex [lindex $argv 3] 1]",
+"",
+" wcsFmtIValue $pixval",
+" wcsFmtBValue $bpmval",
+"",
+" set args [lrange $argv 4 end]",
+" set nargs [llength $args]",
+" for {set i 0} {$i < 4} {incr i} {",
+" set coord [lindex $args $i]",
+" set wcsname [lindex $coord 1]",
+" set xval [lindex $coord 2]",
+" set yval [lindex $coord 3]",
+" set xunits [lindex $coord 4]",
+" set yunits [lindex $coord 5]",
+" wcsFmtWcs [expr ($i + 1)] $wcsname $xval $yval $xunits $yunits",
+" }",
+"",
+" set cur_objid $objid",
+" set cur_regid $regid",
+"",
+" if {$redraw_compass} \\",
+" drawCompass",
+"}",
+"",
+"# Save the object compass information.",
+"proc wcspix_compass { argv } \\",
+"{",
+" global Compass",
+"",
+" set objid [lindex $argv 0]",
+" set angle [lindex $argv 1]",
+"",
+" #set xflip [lindex $argv 2]",
+" #set yflip [lindex $argv 3]",
+" #set transpose [lindex $argv 4]",
+" #set xlab [lindex $argv 5]",
+" #set ylab [lindex $argv 6]",
+"",
+" set north_x [lindex $argv 2]",
+" set north_y [lindex $argv 3]",
+" set east_x [lindex $argv 4]",
+" set east_y [lindex $argv 5]",
+" set transpose [lindex $argv 6]",
+" set xlab [lindex $argv 7]",
+" set ylab [lindex $argv 8]",
+"",
+" #lappend Compass($objid) $angle $xflip $yflip $transpose $xlab $ylab",
+" #set Compass($objid) [list $angle $xflip $yflip $transpose $xlab $ylab]",
+" set Compass($objid) [list $angle $north_x $north_y $east_x $east_y \\",
+" $transpose $xlab $ylab]",
+" drawCompass",
+"}",
+"",
+"# Save the image display orientation information.",
+"proc wcspix_orient { argv } \\",
+"{",
+" global Orient",
+"",
+" set objid [lindex $argv 0]",
+" set frame [lindex $argv 1]",
+" set xflip [lindex $argv 2]",
+" set yflip [lindex $argv 3]",
+"",
+" set Orient($objid) [list $frame $xflip $yflip]",
+"}",
+"",
+"",
+"# Handle the list of WCSs available for the current image.",
+"proc wcspix_wcslist { argv } \\",
+"{",
+" set wcslist [lindex $argv 0]",
+"",
+" for {set i 1} {$i <= 4} {incr i} {",
+" set items {}",
+" foreach nam $wcslist {",
+" if {[string tolower $nam] == \"line\"} {",
+" lappend items \"f.dblline\"",
+" } else {",
+" lappend items \"\\\"$nam\\\" f.exec \\{setWcsSys $nam $i\\}\"",
+" }",
+" }",
+" editMenu sysMenu$i sysWcs$i $items",
+" }",
+"}",
+"",
+"# Set the type of the WCS.",
+"proc wcspix_wcstype { label num } \\",
+"{",
+" global up_todo",
+"",
+" send sysWcs$num set label $label",
+" if {[string tolower $label] == \"none\"} {",
+" send wpWcs$num \"set on False ; setSensitive False\"",
+" send wiWcs$num \"set on False ; setSensitive False\"",
+" send fmtWcs$num setSensitive False",
+" set hght 4",
+" } else {",
+" send wpWcs$num \"set on True ; setSensitive True\"",
+" send wiWcs$num setSensitive True",
+" send fmtWcs$num setSensitive True",
+" set hght 17",
+" }",
+" send wtWcs$num set height $hght",
+" setCoordPanelHeight",
+"",
+" #resizeCoordsBox $up_todo",
+" updateCoordsBox",
+"}",
+"",
+"# Display the pixel table.",
+"proc wcspix_pixtab { tab col row stat } \\",
+"{",
+" global psize",
+"",
+" # Update the pixel table.",
+" send pixtab setList [lindex $tab 1]",
+" send pixtab highlight [expr int(($psize * $psize) / 2)]",
+"",
+" # Update the table labels.",
+" set c [ expr int($psize / 2) ]",
+" send ptColLabs setList $col ; send ptColLabs highlight $c",
+" send ptRowLabs setList $row ; send ptRowLabs highlight $c",
+"",
+" # Update the pixtab stats.",
+" send meanValue set label [ format \"%10.2f\" [lindex $stat 0] ]",
+" send sigValue set label [ format \"%10.4f\" [lindex $stat 1] ]",
+"}",
+"",
+"",
+"",
+"",
+"################################################################################",
+"#",
+"# XIMTOOL-ALT -- Procedures and declarations for the ALT GUI.",
+"#",
+"################################################################################",
+"",
+"# Creat the bitmaps needed for the alternate optional bars.",
+"",
+"createBitmap tools 16 16 {",
+" 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf,",
+" 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,",
+" 0x83, 0xc1, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};",
+"",
+"createBitmap control 16 16 {",
+" 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xe3, 0xc7, 0xe3, 0xcf, 0x33, 0xcc,",
+" 0x33, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x1b, 0xc0, 0x33, 0xcc, 0xf3, 0xcf,",
+" 0xe3, 0xc7, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff};",
+"",
+"createBitmap tile 16 16 {",
+" 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,",
+" 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x83, 0xc1, 0x83, 0xc1, 0x83, 0xc1,",
+" 0x83, 0xc1, 0x83, 0xc1, 0xff, 0xff, 0xff, 0xff};",
+"",
+"createBitmap compass 16 16 {",
+" 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0x00, 0x07,",
+" 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xfc, 0x07,",
+" 0xfc, 0x07, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00}",
+"",
+"createBitmap plus 11 11 {",
+" 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xfe, 0x03, 0xfe, 0x03,",
+" 0xfe, 0x03, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00};",
+"",
+"createBitmap minus 11 11 {",
+" 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0xfe, 0x03,",
+" 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};",
+"",
+"createBitmap disk 16 16 {",
+" 0xfe,0x1f,0x11,0x25,0x11,0x45,0x11,0x44,0xf1,0x47,0x01,0x40,0x01,0x40,0xf9,",
+" 0x4f,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0x05,0x50,0xff,0x7f,",
+" 0x00,0x00};",
+"",
+"createBitmap printer 32 16 {",
+" 0x00, 0xfe, 0x07, 0x00, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x12, 0x00,",
+" 0x00, 0x02, 0x22, 0x00, 0x00, 0x02, 0x3e, 0x00, 0x00, 0x02, 0x20, 0x00,",
+" 0x00, 0x02, 0x20, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x10, 0x03, 0xe0, 0x06,",
+" 0x08, 0xff, 0x7f, 0x09, 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f,",
+" 0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x08,",
+" 0xf8, 0xff, 0xff, 0x0f};",
+"",
+"",
+"send tbBlinkDec \"set bitmap larrow\" ;# Assign the bitmaps to the buttons.",
+"send tbBlinkInc \"set bitmap rarrow\"",
+"send tbZoomIn \"set bitmap plus\"",
+"send tbZoomOut \"set bitmap minus\"",
+"send tbTile \"set bitmap tile\"",
+"send tbCompass \"set bitmap compass; addCallback toggleCompass\"",
+"#send helpButton \"set bitmap qmark; addCallback Help\"",
+"send mXflipButton \"set bitmap xflip; addCallback xflip\"",
+"send mYflipButton \"set bitmap yflip; addCallback yflip\"",
+"send mNextButton \"set bitmap rarrow; addCallback nextFrame\"",
+"send mPrevButton \"set bitmap larrow; addCallback prevFrame\"",
+"",
+"",
+"# toolBox -- Toggle the toolbox and panelbar display.",
+"",
+"set toolbox_up [ true $showToolBar ]",
+"set panelbar_up [ true $showPanelBar ]",
+"",
+"proc toolBoxToggle args \\",
+"{",
+" global toolbox_up ",
+"",
+" set w [send display get width] ; set h [send display get height]",
+" set iw [send imagewin get width] ; set ih [send imagewin get height]",
+"",
+" if {$toolbox_up} {",
+" send toolbar set height 0",
+" send toolButton set state 0",
+" send imagewin \"set width $iw; set height $ih\"",
+" set nh [expr $h - 25]",
+" send display \"set width $w; set height $nh\"",
+" set toolbox_up 0",
+" send mXflipButton map",
+" send mYflipButton map",
+" send mPrevButton map",
+" send mFrameButton map",
+" send mNextButton map",
+" } else {",
+" send toolbar set height 25",
+" send toolButton set state 1",
+" send imagewin \"set width $iw; set height $ih\"",
+" set nh [expr $h + 25]",
+" send display \"set width $w ; set height $nh\"",
+" set toolbox_up 1",
+" send mXflipButton unmap",
+" send mYflipButton unmap",
+" send mPrevButton unmap",
+" send mFrameButton unmap",
+" send mNextButton unmap",
+" }",
+"}",
+"",
+"proc panelBarToggle args \\",
+"{",
+" global panelbar_up",
+"",
+" set w [send display get width] ; set h [send display get height]",
+" set iw [send imagewin get width] ; set ih [send imagewin get height]",
+"",
+" if {$panelbar_up} {",
+" send panelbar set height 0",
+" send panelButton set state 0",
+" send imagewin \"set width $iw; set height $ih\"",
+" set nh [expr $h - 25]",
+" send display \"set width $w ; set height $nh\"",
+" set panelbar_up 0",
+" } else {",
+" send panelbar set height 25",
+" send panelButton set state 1",
+" send imagewin \"set width $iw; set height $ih\"",
+" set nh [expr $h + 25]",
+" send display \"set width $w ; set height $nh\"",
+" set panelbar_up 1",
+" }",
+"}",
+"",
+"",
+"",
+"# Initialize the bars to be displayed if the resource was set.",
+"",
+"send toolButton \"set bitmap tools; addCallback toolBoxToggle\"",
+"if { ! [ true $showToolBar ] } {",
+" send display set height [expr [send display get height] - 25]",
+" send toolbar set height 0",
+" send toolButton set state 0",
+"} else {",
+" send toolButton set state 1",
+" send mXflipButton unmap",
+" send mYflipButton unmap",
+" send mPrevButton unmap",
+" send mFrameButton unmap",
+" send mNextButton unmap",
+"}",
+"",
+"send panelButton \"deleteCallback panel\"",
+"send panelButton \"set bitmap control; addCallback panelBarToggle\"",
+"",
+"if { ! [ true $showPanelBar ] } {",
+" send display set height [expr [send display get height] - 25]",
+" send panelbar set height 0",
+" send panelButton set state 0",
+"} else {",
+" send panelButton set state 1",
+"}",
+"",
+"",
+"##############################################",
+"# Panelbar callbacks.",
+"##############################################",
+"",
+"send pbQuit addCallback Quit",
+"send helpClose addCallback \"send helpButton set state 0\"",
+"",
+"",
+"# Control Panel.",
+"#------------------------------------------------------",
+"proc pbToggleControl {name element op} \\",
+"{",
+" upvar $name panel_up",
+" send pbDisplayP set state [expr !($panel_up)]",
+"} ; #trace variable panel_up w pbToggleControl",
+"",
+"proc pbResetPanel {param old new} \\",
+"{",
+" global displayPanner displayMagnifier displayCoords",
+" switch $new {",
+" done { send pbPanM set state [true $displayPanner]",
+" send pbMagM set state [true $displayMagnifier]",
+" send pbWcsM set state [true $displayCoords]",
+" }",
+" }",
+"} ; send initialize addCallback pbResetPanel",
+"",
+"set WidgetToTab(pbDisplayP) display_panel",
+"set WidgetToTab(pbInfoP) info_panel",
+"set WidgetToTab(pbLoadP) load_panel",
+"set WidgetToTab(pbPrintP) print_panel",
+"set WidgetToTab(pbSaveP) save_panel",
+"set WidgetToTab(pbTileP) tile_panel",
+"set WidgetToTab(pbCoordP) wcs_panel",
+"",
+"set TabToWidget(display_panel) pbDisplayP",
+"set TabToWidget(print_panel) pbPrintP",
+"set TabToWidget(load_panel) pbLoadP",
+"set TabToWidget(save_panel) pbSaveP",
+"set TabToWidget(info_panel) pbInfoP",
+"set TabToWidget(tile_panel) pbTileP",
+"set TabToWidget(wcs_panel) pbCoordP",
+"",
+"set pbTabTop \"pbDisplayP\"",
+"",
+"proc pbPanelDismiss args \\",
+"{",
+" global tabTop TabToWidget WidgetToTab",
+" set panel $TabToWidget($tabTop)",
+" send $panel set state 0",
+"} ; send panelClose addCallback pbPanelDismiss",
+"",
+"proc pbResizeCB {widget event a b c d e args} \\",
+"{",
+" global pbTabTop TabToWidget WidgetToTab",
+" if { $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 } {",
+" send $pbTabTop set state 0",
+" set new $TabToWidget($widget)",
+" send $new set state 1",
+" set pbTabTop $new",
+" }",
+"} ; foreach w $cpTabs {send $w addEventHandler pbResizeCB exposureMask}",
+"",
+"proc pbPanelTabs { widget type state args } \\",
+"{",
+" global pbTabTop tabTop panel_up",
+" global TabToWidget WidgetToTab",
+"",
+" set panel $WidgetToTab($widget)",
+" if {$tabTop == $panel && $panel_up} {",
+" send panelShell unmap",
+" send $widget set state 0",
+" set panel_up 0",
+" return",
+" }",
+"",
+" send $TabToWidget($tabTop) set state 0",
+" set tabTop $panel",
+" set pbTabTop $TabToWidget($panel)",
+" send panelTabs setTop $panel",
+"",
+" # Now fire it up if it's not already open.",
+" if {$panel_up == 0} {",
+" send $widget set state 1",
+" send panelShell map",
+" set panel_up 1",
+" }",
+"}",
+"foreach w { pbDisplayP pbInfoP pbLoadP pbPrintP pbSaveP pbTileP pbCoordP } {",
+" send $w addCallback pbPanelTabs",
+"}",
+"",
+"",
+"",
+"# Load Panel. (Really need to clean this up.)",
+"#------------------------------------------------------",
+"proc pbDoLoadOptions { param old new } \\",
+"{",
+" set val [ join [lrange $new 1 end] \" \" ]",
+" switch [lindex $new 0] {",
+" newfile { send fnameText set string $val }",
+" }",
+"} ; send loadOptions addCallback pbDoLoadOptions",
+"",
+"proc pbFileLoad { widget mode fname args } \\",
+"{",
+" set fpath [format \"%s/%s\" \\",
+" [string range [send dirLabel get label] 12 end] $fname ]",
+" send imagewin setCursorType idle",
+"} ; send fnameText addCallback pbFileLoad",
+"",
+"proc pbflSelectPrint {widget cbtype selections args} \\",
+"{",
+" foreach selection $selections {",
+" ;",
+" }",
+"}; #send imageList addCallback pbflSelectPrint",
+"",
+"proc pbFileLoadB args \\",
+"{",
+" set fname [send fnameText get string]",
+" if {$fname != \"\"} {",
+" set fpath [format \"%s/%s\" \\",
+" [string range [send dirLabel get label] 12 end] $fname ]",
+" }",
+"} ; send filesLoadButton addCallback pbFileLoadB",
+"",
+"",
+"# Panner Marker.",
+"#------------------------------------------------------",
+"proc pbTracePanner {name element op} \\",
+"{",
+" global last_compass",
+"",
+" catch {",
+" upvar $name panner_enable",
+" send pbPanM set state $panner_enable",
+"",
+" if { $panner_enable } {",
+" send tbCompass \"setSensitive True ; set state $last_compass\"",
+" drawCompass",
+" } else {",
+" send tbCompass \"setSensitive False ; set state False\"",
+" eraseCompass",
+" }",
+" }",
+"} ; trace variable panner_enable w pbTracePanner",
+"",
+"proc pannerPanel args \\",
+"{",
+" global panner_enable displayPanner",
+"",
+" setPanner [expr !$panner_enable]",
+" send pannerButton set on [expr $panner_enable]",
+"}; send pbPanM addCallback pannerPanel",
+"",
+"",
+"# Magnifier Marker.",
+"#------------------------------------------------------",
+"proc pbTraceMagnifier {name element op} \\",
+"{",
+" upvar $name magnifier_enable",
+" send pbMagM set state $magnifier_enable",
+"} ; trace variable magnifier_enable w pbTraceMagnifier",
+"",
+"proc magnifierPanel args \\",
+"{",
+" global magnifier_enable displayMagnifier",
+" setMagnifier [expr !$magnifier_enable]",
+" send magnifierButton set on [expr $magnifier_enable]",
+"}; send pbMagM addCallback magnifierPanel",
+"",
+"",
+"# CoordsBox Marker.",
+"#------------------------------------------------------",
+"proc pbTraceCoordsBox {name element op} \\",
+"{",
+" upvar $name track_enable",
+" send pbWcsM set state $track_enable",
+"} ; trace variable track_enable w pbTraceCoordsBox",
+"",
+"proc wcsPanel args \\",
+"{",
+" global track_enable",
+" setTrack [expr !$track_enable]",
+"}; send pbWcsM addCallback wcsPanel",
+"",
+"",
+"",
+"# WPIX ISM Callbacks.",
+"#------------------------------------------------------",
+"",
+"proc altIsmToggle { widget type state args } \\",
+"{",
+" ismToggle pbIsm junk $state",
+"} ; send pbIsm addCallback altIsmToggle",
+"",
+"proc pbTraceIsm {name element op} \\",
+"{",
+" upvar $name ism_enable",
+" send pbIsm set state $ism_enable",
+"} ; trace variable ism_enable w pbTraceIsm",
+"",
+"",
+"proc altIsmMsgCB { param old new } \\",
+"{",
+" set cmd [lindex $new 0] ;# command name",
+" set ism [lindex $new 1] ;# determine ISM name",
+" set argv [lrange $new 2 end] ;# get args",
+" set argc [llength $argv]",
+"",
+" switch $cmd {",
+" deliver { ${ism}_alt_msg $argc $argv }",
+" }",
+"} ; send ism_msg addCallback altIsmMsgCB",
+"",
+"",
+"proc wcspix_alt_msg { argc argv } \\",
+"{",
+" set arg [string trimleft [ string trimright [lindex $argv 0] ] ]",
+" set cmd [lindex $arg 0]",
+" switch $cmd {",
+" startup { }",
+" shutdown { }",
+" disable { send pbIsm \"set state False ; setSensitive False\" }",
+" capable { send pbIsm \"setSensitive True\" }",
+" }",
+"}",
+"",
+"",
+"",
+"##############################################",
+"# Toolbar callbacks.",
+"##############################################",
+"",
+"send tbNormalize addCallback normalize",
+"send tbInvert addCallback cpInvert",
+"send tbRegister addCallback cpRegisterFrames",
+"send tbMatchLUT addCallback cpMatchFrames",
+"",
+"",
+"# Frame Selection.",
+"#------------------",
+"createMenu mFrameMenu mFrameButton $frameMenuDescription",
+"",
+"proc altFrameChanged {param old new} \\",
+"{",
+" send mFrameButton set label $new",
+"} ; send frame addCallback altFrameChanged",
+"",
+"",
+"# Image Flipping.",
+"#------------------------------------------------------",
+"proc tbSetFlip {param old new} \\",
+"{",
+" if {$param == \"xflip\"} {",
+" send mXflipButton set state [true $new]",
+" } else {",
+" send mYflipButton set state [true $new]",
+" }",
+"}; foreach i {xflip yflip} { send $i addCallback tbSetFlip }",
+"",
+"",
+"# Zoom/Pan buttons.",
+"#------------------------------------------------------",
+"proc tbZoomAction { widget args } \\",
+"{",
+" global frameWidth frameHeight",
+"",
+" switch $widget {",
+" tbZoom0 { cpZoom 1 1 fixed }",
+" tbZoomIn { cpZoom 2.0 2.0 relative }",
+" tbZoomOut { cpZoom 0.5 0.5 relative }",
+" tbCenter { send client pan [expr $frameWidth/2.0] [expr $frameHeight/2.0] }",
+" }",
+"}",
+"foreach widget { tbCenter tbZoomIn tbZoom0 tbZoomOut } {",
+" send $widget addCallback tbZoomAction",
+"}",
+"",
+"",
+"# Frame Blink.",
+"#------------------------------------------------------",
+"proc tbSetBlinkRate {w args} \\",
+"{",
+" if {$w == \"tbBlinkInc\"} {",
+" cpSetBlinkRate BRincrease",
+" } else {",
+" cpSetBlinkRate BRdeccrease",
+" }",
+"}",
+"foreach w {tbBlinkDec tbBlinkInc} { send $w addCallback tbSetBlinkRate }",
+"",
+"proc tbBlink { widget args } \\",
+"{",
+" global blinkRate blinkId",
+"",
+" if {$blinkRate < 0.01} {",
+" send tbBlink set state 0",
+" } else {",
+" if {$widget != \"tbBlink\"} {",
+" if {($blinkId != 0) != [send $widget get on]} {",
+" toggleBlink",
+" }",
+" } else {",
+" if {($blinkId != 0) != [send $widget get state]} {",
+" toggleBlink",
+" }",
+" }",
+" }",
+"} ; send tbBlink addCallback tbBlink",
+"",
+"proc tbTraceBlink {name element op} \\",
+"{",
+" upvar $name blinkId",
+" send tbBlink set state [expr $blinkId != 0]",
+"} ; trace variable blinkId w tbTraceBlink",
+"",
+"",
+"# Auto-register.",
+"#------------------------------------------------------",
+"proc tbAutoRegister { widget type state args } \\",
+"{",
+" send tbAutoReg set state $state",
+"}",
+"foreach w {autoregButton brAregButton tbAutoReg} {",
+" send $w addCallback cpAutoRegister",
+"}",
+"",
+"proc tbToggleAutoReg args \\",
+"{",
+" global auto_reg",
+" if {$auto_reg} {",
+" cpAutoRegister autoregButton dummy 0",
+" set auto_reg 0",
+" send tbAutoReg set state 0",
+" } else {",
+" cpAutoRegister autoregButton dummy 1",
+" set auto_reg 1",
+" send tbAutoReg set state 1",
+" }",
+"}",
+"",
+"",
+"# Frame Tiles.",
+"#------------------------------------------------------",
+"proc tbSetTileFrames args \\",
+"{",
+" global tileOpt",
+"",
+" # Send the option to the client.",
+" if {[send tbTile get state ]} {",
+" if {$tileOpt == 0} {",
+" # If mode is disabled, turn on the tile selection.",
+" selectTileOrientation junk junk Best",
+" } else {",
+" # Otherwise, turn on in current mode.",
+" selectTileOrientation junk junk [tileSelToLabel $tileOpt]",
+" }",
+" } else {",
+" selectTileOrientation junk junk Disabled",
+" }",
+"}; send tbTile addCallback tbSetTileFrames",
+"",
+"proc tbTrackTileFrames {param old new} \\",
+"{",
+" send tileFramesButton set on [true $new]",
+" send tbTile set state $new",
+"}; send tileFrames addCallback tbTrackTileFrames",
+"",
+"proc tbTileFramesToggle args \\",
+"{",
+" set value [send tileFramesButton get on]",
+" if {$value} { set not 0 } else { set not 1 }",
+"",
+" send tileFramesButton set on $not",
+" send tbTile set state $not",
+" cpSetTileFrames tbTile junk $not",
+"}",
+"",
+"",
+"# Compass Indicator.",
+"#------------------------------------------------------",
+"proc tbToggleCompass { widget type state args } \\",
+"{",
+" global frame",
+"",
+" if {$state} {",
+" send compass set on True",
+" send tbCompass set state 1",
+" drawCompass",
+" } else {",
+" send compass set on False",
+" send tbCompass set state 0",
+" eraseCompass",
+" }",
+"} ; foreach w {compass tbCompass} { send $w addCallback tbToggleCompass }",
+"",
+"",
diff --git a/vendor/x11iraf/ximtool/ximtool.h b/vendor/x11iraf/ximtool/ximtool.h
new file mode 100644
index 00000000..4d55f0ed
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.h
@@ -0,0 +1,733 @@
+/*
+ * XIMTOOL.H -- Global definitions for XImtool.
+ */
+
+#include "eps.h"
+
+/* Default values, size limiting values.
+ */
+#define MAX_FBCONFIG 128 /* max possible frame buf sizes */
+#define MAX_FRAMES 16 /* max number of frames */
+#define MAX_MAPPINGS 100 /* max number of mappings/frame */
+#define MAX_CLIENTS 32 /* max display server clients */
+#define MAX_ISM 8 /* max ISM module clients */
+#define MAX_COLORMAPS 256 /* max number of colormaps */
+#define MAX_COLORS 256 /* max size colormap */
+#define MAX_PRINTERS 128 /* max number of printers */
+#define FIRST_COLOR 10 /* first allocatable color */
+#define DEF_NCOLORS 201 /* default number of colors */
+#define DEF_COLORMAP 1 /* default colormap */
+#define DEF_NFRAMES 1 /* save memory; only one frame */
+#define DEF_FRAME_WIDTH 512 /* 512 square frame */
+#define DEF_FRAME_HEIGHT 512 /* 512 square frame */
+#define DEF_FRAME_DEPTH 8 /* 8 bits deep */
+#define DEF_WIN_WIDTH 512 /* default size window */
+#define DEF_WIN_HEIGHT 512 /* default size window */
+#define DEF_TILE_BORDER 3 /* border width for tileFrames */
+#define DEF_BORDER_COLOR "9" /* border highlight color */
+#define SZ_CMAPNAME 32 /* colormap name buffer */
+#define SZ_NAME 80 /* object name buffer */
+#define SZ_LABEL 256 /* main frame label string */
+#define SZ_IMTITLE 128 /* image title string */
+#define SZ_WCTEXT 80 /* WCS box text */
+#define SZ_OLD_WCSBUF 320 /* old WCS text buffer size */
+#define SZ_WCSBUF 1024 /* WCS text buffer size */
+#define SZ_MSGBUF 8192 /* message buffer size */
+#define SZ_COLORBAR 11 /* height of colorbar in pixels */
+#define SZ_FIFOBUF 4000 /* transfer size for FIFO i/o */
+
+#define SZ_FNAME 256
+#define SZ_LINE 256
+#define ERR (-1)
+#define OK 0
+#define EOS '\0'
+
+#define M_UNITARY 0 /* xim_setmapping */
+#define M_ASPECT 1
+#define M_FILL 2
+
+/* Magic numbers. */
+#define DEF_PORT 5137 /* default tcp/ip socket */
+#define DEF_NPORTS 1 /* no. of inet ports to open */
+#define I_DEVNAME "/dev/imt1o" /* pseudo device names */
+#define O_DEVNAME "/dev/imt1i" /* our IN is client's OUT */
+#define DEF_UNIXADDR "/tmp/.IMT%d" /* default unix socket */
+#define DEF_ANTIALIASTYPE "boxcar" /* default antialiasing */
+#define FBCONFIG_1 ".imtoolrc"
+#define FBCONFIG_2 "/usr/local/lib/imtoolrc"
+#define CMAPCONFIG "/usr/local/lib/imtoolcmap"
+#define FBCONFIG_ENV1 "imtoolrc"
+#define FBCONFIG_ENV2 "IMTOOLRC"
+#define PRINTCONFIG "/usr/local/lib/ximprint.cfg"
+
+#define DEF_ISM_ADDR "/tmp/.ISM%d" /* default ISM unix socket */
+#define DEF_ISM_TEMPLATE "/tmp/.ISM%d_%d" /* ISM client socket template */
+#define DEF_ISM_TASK "wcspix"
+#define DEF_ISM_CMD "/usr/local/bin/ism_wcspix.e wcspix &"
+#define DEF_ISM_CMD "ism_wcspix.e wcspix &"
+#define SZ_ISMBUF 4096
+
+/* WCS definitions. */
+#define W_UNITARY 0
+#define W_LINEAR 1
+#define W_LOG 2
+#define W_USER 3
+#define W_DEFFORMAT " %7.2f %7.2f %7.1f%c"
+
+/* Rotation matrix defining world coordinate system (WCS) of a frame. */
+typedef struct {
+ int valid; /* has WCS been set? */
+ float a, b; /* x, y scale factors */
+ float c, d; /* x, y cross factors */
+ float tx, ty; /* x, y translation */
+ float z1, z2; /* greyscale range */
+ int zt; /* greyscale mapping */
+ char format[32]; /* wcs output format */
+ char imtitle[SZ_IMTITLE+1]; /* image title from WCS */
+} Ctran, *CtranPtr;
+
+/* Coordinate mappings on each frame buffer. */
+typedef struct {
+ int id; /* object id */
+ Ctran ctran; /* world coordinate system */
+ char ref[SZ_FNAME+1]; /* image reference from WCS */
+ int regid; /* region id */
+ char region[SZ_FNAME+1]; /* region name from WCS */
+ float sx, sy; /* source rect */
+ int snx, sny;
+ int dx, dy; /* destination rect */
+ int dnx, dny;
+} Mapping, *MappingPtr;
+
+/* The frame buffers. */
+typedef struct {
+ int frameno; /* frame number */
+ int raster; /* frame buffer raster */
+ int zoomras; /* zoom/pan raster */
+ int zoommap; /* zoom/pan mapping */
+ int dispmap; /* mapping used for display */
+ int colormap; /* greyscale transformation */
+ float offset, scale; /* transfer function */
+ float xscale, yscale; /* scaling at [xy]mag==1.0 */
+ float xmag, ymag; /* zoom/dezoom factors */
+ float xcen, ycen; /* center of zoomed region */
+ float xoff, yoff; /* offset of zoomed region */
+ int xflip, yflip; /* flip in X or Y? */
+ char label[SZ_LABEL+1]; /* frame label string */
+ Ctran ctran; /* world coordinate system */
+ char wcsbuf[SZ_WCSBUF]; /* wcs info string */
+ Mapping mapping[MAX_MAPPINGS]; /* coordinate mappings */
+ int nmaps; /* number of defined mappings */
+} FrameBuf, *FrameBufPtr;
+
+/* Possible frame buffer sizes. */
+typedef struct {
+ int nframes; /* number of frames */
+ int width; /* frame buffer width */
+ int height; /* frame buffer height */
+} FbConfig, *FbConfigPtr;
+
+
+/* Predefined colormaps. */
+typedef struct {
+ int mapno; /* widget colormap number */
+ char name[SZ_CMAPNAME+1]; /* colormap name */
+} ColorMap, *ColorMapPtr;
+
+/* Predefined lookup tables. */
+typedef struct {
+ float red, green, blue;
+} Triplet, *TripletPtr;
+
+typedef struct {
+ int lutlen;
+ Triplet hue[MAX_COLORS];
+} Lut, *LutPtr;
+
+
+/* Client IIS I/O channel. */
+typedef struct {
+ XtPointer xim; /* backpointer to xim descriptor */
+ XtPointer id; /* input callback id */
+ int type; /* channel type */
+ int datain; /* input channel */
+ int dataout; /* output channel */
+ int keepalive; /* used to keep input fifo ready */
+ char path[SZ_FNAME+1]; /* for unix sockets */
+ int reference_frame; /* reference (cmd i/o) frame */
+ int version; /* flags capability of client */
+ FrameBufPtr rf_p; /* reference frame descriptor */
+} IoChan, *IoChanPtr;
+
+#define IO_FIFO 1
+#define IO_INET 2
+#define IO_UNIX 3
+
+
+/* Client ISM I/O channel. */
+typedef struct {
+ XtPointer xim; /* backpointer to xim descriptor */
+ XtPointer id; /* input callback id */
+ int datain; /* input channel */
+ int dataout; /* output channel */
+ int connected; /* client connected? */
+ char name[SZ_FNAME+1]; /* client name */
+ char path[SZ_FNAME+1]; /* for unix sockets */
+ char msgbuf[SZ_ISMBUF+1]; /* incomplete message buffer */
+} IsmIoChan, *IsmIoChanPtr;
+
+
+/* Definitions for the supported ISM Modules. */
+typedef void (*IsmFunc)();
+
+typedef struct {
+ char name[SZ_FNAME]; /* name of the module */
+ char command[SZ_LINE]; /* cmd to execute for module */
+ IsmFunc startupCB; /* connection callback func */
+ IsmFunc shutdownCB; /* shutdown callback func */
+ IsmFunc commandCB; /* client command callback func */
+ int connected; /* client is connected */
+ int ref_count; /* reference count */
+ IsmIoChanPtr chan; /* i/o channel */
+} ismModule, *IsmModule;
+
+
+/* Printer list. */
+typedef struct {
+ char printerName[SZ_FNAME+1]; /* printer name */
+ char printCmd[SZ_FNAME+1]; /* printer dispose command */
+} Printer, *PrinterPtr;
+
+
+/* Printer configuration struct. */
+typedef struct {
+ int printno; /* printer number */
+ int seqno; /* sequence number */
+ int diskfile; /* print to diskfile? */
+ char printFile[SZ_FNAME+1]; /* disk filename template */
+ char printCmd[SZ_FNAME+1]; /* dispose command */
+} PrintCfg, *PrintCfgPtr;
+
+/* File save definitions and structure. */
+typedef struct {
+ int seqno; /* sequence number */
+ int format; /* save format */
+ int colorType; /* save color type */
+ int w, h, d; /* dimensions of last file saved */
+ char fname[SZ_FNAME+1]; /* save filename */
+} fileSave, *fileSavePtr;
+
+#define XIM_GRAYSCALE 0 /* save color options */
+#define XIM_PSEUDOCOLOR 1
+#define XIM_RGB 2
+
+#define XIM_RAS 0 /* save format options */
+#define XIM_GIF 1
+#define XIM_TIFF 2
+#define XIM_JPEG 3
+#define XIM_X11 4
+#define XIM_FITS 5
+#define XIM_RAW 6
+#define XIM_EPS 7
+#define XIM_OIF 8
+
+
+/* File load struct. */
+typedef struct {
+ int nfiles; /* number of files in directory */
+ char **FileList; /* list of directory contents */
+ char curdir[SZ_FNAME+1]; /* current directory */
+ char homedir[SZ_FNAME+1]; /* home directory */
+ char pattern[SZ_NAME+1]; /* file pattern to match */
+ int gray; /* load as a grayscale image? */
+ int zscale; /* zscale the image */
+ int zrange; /* use full data range */
+ float z1, z2; /* user-supplied zrange limits */
+ int nsample; /* number of zscale sample pts */
+} fileLoad, *fileLoadPtr;
+
+/*
+ * Application resources and runtime descriptor.
+ * ----------------------------------------------
+ */
+typedef struct {
+ /* Resources. */
+ Boolean autoscale; /* is XY autoscaling enabled */
+ Boolean antialias; /* apply antialiasing when dezooming */
+ Boolean tileFrames; /* tile rather than overlay frames */
+ Boolean highlightFrames; /* highlight tiled frames */
+ Boolean invert; /* use inverted colormap */
+ int def_config; /* default FB config */
+ int def_nframes; /* default number of frames */
+ int ncolors; /* number of image pixel colors */
+ int tileBorder; /* image border when tiling frames */
+ int cm_focus; /* colormap update screen size */
+ String borderColor; /* border color for tileFrames */
+ String gui; /* GUI file name */
+ String imtoolrc; /* imtoolrc file name */
+ String memModel; /* FB memory model */
+ String userCMap1; /* user colormap file */
+ String userCMap2; /* user colormap file */
+ String userCMapDir1; /* user colormap directory */
+ String userCMapDir2; /* user colormap directory */
+ String antialiasType; /* type of antialiasing */
+ String printConfig; /* printer configuration file */
+ String input_fifo; /* client's output, e.g. /dev/imt1o */
+ String output_fifo; /* client's input, e.g. /dev/imt1i */
+ String unixaddr; /* format for unix socket path */
+ String ism_addr; /* format for ISM unix socket path */
+ String ism_task; /* image support module taskname */
+ int port; /* port for INET socket */
+ int nports; /* no. of INET ports to open */
+
+ /* Internal state. */
+ XtPointer obm; /* object manager */
+ IoChanPtr cursor_chan; /* cursor mode channel */
+ IoChan chan[MAX_CLIENTS]; /* client i/o descriptors */
+ IsmIoChan ism_chan; /* image support module channel */
+ IsmIoChan ism_client[MAX_ISM]; /* ISM client i/o descriptors */
+ Widget toplevel; /* dummy toplevel app shell */
+ Widget gt; /* imagewin gterm-image widget */
+ Widget cb; /* colorbar gterm-image widget */
+ XtPointer gm_border; /* border marker for tileFrames */
+ int tileFramesList; /* frames to be tiled (bitmask) */
+ int nTileFrames; /* number of frames to be tiled */
+ int tileRows; /* number of tile rows */
+ int tileCols; /* number of tile cols */
+ Boolean tileByRows; /* fill tiles by row vs cols */
+ Boolean tileTopDown; /* fill tiles by top to bottom */
+ Boolean tileLabels; /* label frame tiles */
+ int rop; /* rasterop for mappings */
+ int display_frame; /* currently displayed frame */
+ FrameBufPtr df_p; /* display frame descriptor */
+ FrameBuf frames[MAX_FRAMES]; /* array of frame descriptors */
+ int fb_configno; /* current config number */
+ int nframes; /* current number of frame bufs */
+ int width, height; /* current width, height */
+ FbConfig fb_config[MAX_FBCONFIG]; /* fb config table */
+ int *clientPrivate; /* used by imtool client code */
+
+ PSImagePtr psim; /* EPS image struct pointer */
+ PrintCfgPtr pcp; /* printer config pointer */
+ fileLoadPtr flp; /* load disk file pointer */
+ fileSavePtr fsp; /* save disk file pointer */
+
+} XimData, *XimDataPtr;
+
+
+
+#ifdef XIMTOOL_MAIN
+XimData ximtool_data;
+
+#define XtNdefConfig "defConfig"
+#define XtCDefConfig "DefConfig"
+#define XtNdefNFrames "defNFrames"
+#define XtCDefNFrames "DefNFrames"
+#define XtNncolors "ncolors"
+#define XtCNcolors "Ncolors"
+#define XtNtileBorderWidth "tileBorderWidth"
+#define XtCTileBorderWidth "TileBorderWidth"
+#define XtNtileBorderColor "tileBorderColor"
+#define XtCTileBorderColor "TileBorderColor"
+#define XtNautoscale "autoscale"
+#define XtCAutoscale "Autoscale"
+#define XtNantialias "antialias"
+#define XtCAntialias "Antialias"
+#define XtNantialiasType "antialiasType"
+#define XtCAntialiasType "AntialiasType"
+#define XtNinvert "invert"
+#define XtCInvert "Invert"
+#define XtNtileFrames "tileFrames"
+#define XtCTileFrames "TileFrames"
+#define XtNhighlightFrames "highlightFrames"
+#define XtCHighlightFrames "HighlightFrames"
+#define XtNgui "gui"
+#define XtCGui "Gui"
+#define XtNimtoolrc "imtoolrc"
+#define XtCImtoolrc "Imtoolrc"
+#define XtNmemModel "memModel"
+#define XtCMemModel "MemModel"
+#define XtNuserCMap1 "cmap1"
+#define XtNuserCMap2 "cmap2"
+#define XtNcmFocus "cmFocus"
+#define XtCCmFocus "cmFocus"
+#define XtCUserCMap "UserCMap"
+#define XtNuserCMapDir1 "cmapDir1"
+#define XtNuserCMapDir2 "cmapDir2"
+#define XtCUserCMapDir "UserCMapDir"
+#define XtNprintConfig "printConfig"
+#define XtCprintConfig "printConfig"
+#define XtNinput_fifo "input_fifo"
+#define XtCInput_fifo "Input_fifo"
+#define XtNoutput_fifo "output_fifo"
+#define XtCOutput_fifo "Output_fifo"
+#define XtNunixaddr "unixaddr"
+#define XtCUnixaddr "Unixaddr"
+#define XtNism_addr "ism_addr"
+#define XtCIsm_addr "Ism_addr"
+#define XtNport "port"
+#define XtCPort "Port"
+#define XtNnports "nports"
+#define XtCNPorts "NPorts"
+#define XtNism_task "ism_task"
+#define XtCIsm_task "Ism_task"
+
+static XtResource resources[] = {
+ {
+ XtNdefConfig,
+ XtCDefConfig,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, def_config),
+ XtRImmediate,
+ (caddr_t)1
+ },
+ {
+ XtNdefNFrames,
+ XtCDefNFrames,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, def_nframes),
+ XtRImmediate,
+ (caddr_t)0
+ },
+ {
+ XtNncolors,
+ XtCNcolors,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, ncolors),
+ XtRImmediate,
+ (caddr_t)DEF_NCOLORS
+ },
+ {
+ XtNtileBorderWidth,
+ XtCTileBorderWidth,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, tileBorder),
+ XtRImmediate,
+ (caddr_t)DEF_TILE_BORDER
+ },
+ {
+ XtNtileBorderColor,
+ XtCTileBorderColor,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, borderColor),
+ XtRImmediate,
+ (caddr_t)DEF_BORDER_COLOR
+ },
+ {
+ XtNautoscale,
+ XtCAutoscale,
+ XtRBoolean,
+ sizeof(Boolean),
+ XtOffsetOf(XimData, autoscale),
+ XtRImmediate,
+ (caddr_t)FALSE
+ },
+ {
+ XtNantialias,
+ XtCAntialias,
+ XtRBoolean,
+ sizeof(Boolean),
+ XtOffsetOf(XimData, antialias),
+ XtRImmediate,
+ (caddr_t)FALSE
+ },
+ {
+ XtNantialiasType,
+ XtCAntialiasType,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, antialiasType),
+ XtRImmediate,
+ (caddr_t)DEF_ANTIALIASTYPE
+ },
+ {
+ XtNinvert,
+ XtCInvert,
+ XtRBoolean,
+ sizeof(Boolean),
+ XtOffsetOf(XimData, invert),
+ XtRImmediate,
+ (caddr_t)FALSE
+ },
+ {
+ XtNtileFrames,
+ XtCTileFrames,
+ XtRBoolean,
+ sizeof(Boolean),
+ XtOffsetOf(XimData, tileFrames),
+ XtRImmediate,
+ (caddr_t)FALSE
+ },
+ {
+ XtNhighlightFrames,
+ XtCHighlightFrames,
+ XtRBoolean,
+ sizeof(Boolean),
+ XtOffsetOf(XimData, highlightFrames),
+ XtRImmediate,
+ (caddr_t)TRUE
+ },
+ {
+ XtNcmFocus,
+ XtCCmFocus,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, cm_focus),
+ XtRImmediate,
+ (caddr_t)512
+ },
+ {
+ XtNgui,
+ XtCGui,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, gui),
+ XtRImmediate,
+ (caddr_t)"default"
+ },
+ {
+ XtNimtoolrc,
+ XtCImtoolrc,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, imtoolrc),
+ XtRImmediate,
+ (caddr_t)FBCONFIG_2
+ },
+ {
+ XtNmemModel,
+ XtCMemModel,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, memModel),
+ XtRImmediate,
+ (caddr_t)"fast"
+ },
+ {
+ XtNuserCMap1,
+ XtCUserCMap,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, userCMap1),
+ XtRImmediate,
+ (caddr_t)"none"
+ },
+ {
+ XtNuserCMap2,
+ XtCUserCMap,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, userCMap2),
+ XtRImmediate,
+ (caddr_t)"none"
+ },
+ {
+ XtNuserCMapDir1,
+ XtCUserCMapDir,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, userCMapDir1),
+ XtRImmediate,
+ (caddr_t)"none"
+ },
+ {
+ XtNuserCMapDir2,
+ XtCUserCMapDir,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, userCMapDir2),
+ XtRImmediate,
+ (caddr_t)CMAPCONFIG
+ },
+ {
+ XtNprintConfig,
+ XtCprintConfig,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, printConfig),
+ XtRImmediate,
+ (caddr_t)PRINTCONFIG
+ },
+ {
+ XtNinput_fifo,
+ XtCInput_fifo,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, input_fifo),
+ XtRImmediate,
+ (caddr_t)O_DEVNAME
+ },
+ {
+ XtNoutput_fifo,
+ XtCOutput_fifo,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, output_fifo),
+ XtRImmediate,
+ (caddr_t)I_DEVNAME
+ },
+ {
+ XtNunixaddr,
+ XtCUnixaddr,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, unixaddr),
+ XtRImmediate,
+ (caddr_t)DEF_UNIXADDR
+ },
+ {
+ XtNism_addr,
+ XtCIsm_addr,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, ism_addr),
+ XtRImmediate,
+ (caddr_t)DEF_ISM_ADDR
+ },
+ {
+ XtNport,
+ XtCPort,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, port),
+ XtRImmediate,
+ (caddr_t)DEF_PORT
+ },
+ {
+ XtNnports,
+ XtCNPorts,
+ XtRInt,
+ sizeof(int),
+ XtOffsetOf(XimData, nports),
+ XtRImmediate,
+ (caddr_t)DEF_NPORTS
+ },
+ {
+ XtNism_task,
+ XtCIsm_task,
+ XtRString,
+ sizeof(String),
+ XtOffsetOf(XimData, ism_task),
+ XtRImmediate,
+ (caddr_t)DEF_ISM_TASK
+ },
+};
+
+int ncolormaps = 0;
+int first_color = FIRST_COLOR;
+
+ColorMap colormaps[MAX_COLORMAPS] = {
+ { 0, "Grayscale" },
+ { 0, "Color" },
+ { 0, "Heat" },
+ { 0, "HSV" },
+ { 0, "AIPS0" },
+ { 0, "Halley" },
+ { 0, "Ramp" },
+ { 0, "Standard" },
+ { 0, "Staircase" },
+ { 0, "Rainbow1" },
+ { 0, "Rainbow2" },
+ { 0, "Random" },
+ { 0, "Random8" },
+ { 0, "Random16" },
+ { 0, "Red" },
+ { 0, "Green" },
+ { 0, "Blue" },
+};
+
+
+int nprinters = 0;
+Printer printer_list[MAX_PRINTERS] = {
+ { "default", "lpr" }, /* should do more interesting examples */
+ { "clp", "lpr -Pclp" },
+ { "clp2", "lpr -Pclp2" },
+ { "clp2t", "lpr -Pclp2t" },
+ { "lw1", "lpr -Plw1" },
+ { "lw2", "lpr -Plw2" },
+ { "lw3", "lpr -Plw3" },
+ { "lw4", "lpr -Plw4" },
+ { "lw5", "lpr -Plw5" },
+ { "lw6", "lpr -Plw6" },
+ { "lw7", "lpr -Plw7" },
+ { "lw8", "lpr -Plw8" },
+ { "lw9", "lpr -Plw9" },
+ { "lw10", "lpr -Plw10" },
+ { "lw11", "lpr -Plw11" },
+ { "lw12", "lpr -Plw12" },
+ { "lw13", "lpr -Plw13" },
+ { "lw14", "lpr -Plw14" },
+ { "lw15", "lpr -Plw15" },
+ { "lw16", "lpr -Plw16" },
+ { "lw18", "lpr -Plw18" },
+ { "lw19", "lpr -Plw19" },
+ { "lw20", "lpr -Plw20" },
+ { "lw21", "lpr -Plw21" },
+ { "lw22", "lpr -Plw22" },
+ { "lw23", "lpr -Plw23" },
+ { "lw24", "lpr -Plw24" },
+ { "lw25", "lpr -Plw25" },
+ { "lw26", "lpr -Plw26" },
+ { "lw27", "lpr -Plw27" },
+ { "\0", "\0" },
+};
+
+
+#else
+
+extern XtResource resources[];
+extern XimData ximtool_data;
+extern int ncolormaps;
+extern int first_color;
+extern ColorMap colormaps[];
+extern int nprinters;
+extern Printer printer_list[];
+
+#endif
+
+/* Functions.
+ */
+#ifndef abs
+#define abs(a) (((a)<0)?(-(a)):(a))
+#endif
+#ifndef min
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+#ifndef max
+#define max(a,b) ((a)<(b)?(b):(a))
+#endif
+#ifndef nint
+#define nint(a) ((a)<(0)?((int)(a-0.5)):((int)(a+0.5)))
+#endif
+
+void xim_initialize(), xim_reset(), xim_resize(), xim_refresh();
+void xim_close(), xim_initFrame(), xim_setFrame(), xim_setRop();
+void xim_setReferenceFrame(), xim_setDisplayFrame();
+void xim_delFrame(), xim_setMapping(), xim_setZoom();
+void xim_setCursorPos(), xim_getCursorPos(), xim_setFlip();
+void xim_matchFrames(), xim_registerFrames();
+void xim_readCursor(), xim_frameChanged();
+void xim_message(), xim_msgi(), xim_alert();
+int xim_setColormap();
+int xim_getAntialias();
+char *xim_frameLabel();
+
+int xim_writeDisplay();
+unsigned char *xim_readDisplay();
+void xim_initSave(), xim_closeSave();
+void ximp_rename(), ximp_cancel();
+void xims_rename(), xims_cancel();
+int xim_saveFile();
+
+int xim_iisopen();
+void xim_iisclose(), xim_iisio();
+XtPointer xim_addInput();
+void xim_removeInput();
+
+void xim_clientOpen(), xim_clientClose();
+int xim_clientExecute();
diff --git a/vendor/x11iraf/ximtool/ximtool.html b/vendor/x11iraf/ximtool/ximtool.html
new file mode 100644
index 00000000..129f84fc
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.html
@@ -0,0 +1,1219 @@
+<HTML> <HEAD>
+<TITLE>XImtool On-Line Help Summary</TITLE>
+</HEAD> <BODY>
+<H2>Welcome to XImtool V2.0BETA</H2>
+
+XImtool is an image display server developed by the IRAF Project at the
+National Optical Astronomy Observatories. To view images you need
+client software (such as IRAF) to load images into the display, or it can
+load images directly when run as a standalone task.
+<p>
+More <a href=#toc>detailed help</a> is available on the following topics:
+<dl><dl>
+<dt>Basic Usage:</dt>
+<ul>
+<li><A HREF="#basic">Getting Started</A> -- The basics. </li>
+<li><A HREF="#gui">GUI Overview</A> -- What it looks like. </li>
+<li><A HREF="#mouse">Mouse Operations</A> -- Doing stuff. </li>
+<li><A HREF="#keystroke">Keystroke Accelerators</A> -- Keystroke summary.</li>
+<li><A HREF="#markers">Markers</A> -- Panner/WCS markers, general markers.</li>
+<li><A HREF="#control">Control Panel</A> -- Operating the Control panel.</li>
+<li><A HREF="#load">Load Panel</A> -- Load panel operation and options.</li>
+<li><A HREF="#save">Save Panel</A> -- Save panel operation and options.</li>
+<li><A HREF="#print">Print Panel</A> -- Print panel operation and options.</li>
+<li><A HREF="#info">Info Panel</A> -- Information panel.</li>
+</ul></dl></dl>
+<dl><dl>
+<dt>Advanced Features:</dt>
+<ul>
+<li><A HREF="#comline">Command-line Options</A> -- Startup flags. </li>
+<li><A HREF="#client">Client Connections</A> -- Use as a display server. </li>
+<li><A HREF="#framebuf">Frame Buffers</A> -- Explanation of Frame buffers. </li>
+<li><A HREF="#pprinter">Printer Configurations</A> -- Configuring output devices. </li>
+<li><A HREF="#tclshell">TclShell</A> -- Expert-mode interactive shell.</li>
+</ul></dl></dl>
+<p>
+Please contact <i>iraf@noao.edu</i> with comments, bugs, or suggestions.
+More detailed documentation is also available in the man page for this
+task.
+<p>
+<hr>
+
+<a name=#toc> <h2>Table of Contents:</h2> </a>
+<pre>
+ <A HREF="#basic">Getting Started</A>
+ <A HREF="#gui">GUI Overview</A>
+ <A HREF="#mouse">Mouse Operations</A>
+ <A HREF="#keystroke">Keystroke Accelerators</A>
+ <A HREF="#comline">Command-line Options</A>
+ <A HREF="#client">Client Connections</A>
+ <A HREF="#framebuf">Frame Buffers</A>
+ <A HREF="#frame16">Support for 16 Frames</A>
+ <A HREF="#markers">Markers</A>
+ <A HREF="#panner">Panner Marker</A>
+ <A HREF="#magnifier">Magnifier Marker</A>
+ <A HREF="#coords">Coords Box Marker</A>
+ <A HREF="#rulers">Ruler Markers</A>
+ <A HREF="#genmark">General Markers</A>
+ <A HREF="#markmenu">Menu Options</A>
+ <A HREF="#wcspix">Real-Time WCS/Pixel Readout</A>
+ <A HREF="#curfreeze">Freezing Cursor Readout</A>
+ <A HREF="#autoreg">Auto-Registration of Images</A>
+ <A HREF="#cutgraphs">Image Cut Graphics</A>
+ <A HREF="#peakup">Peak-Up Cursor Centroid Positioning</A>
+
+ <A HREF="#control">Integrated Control Panel</A>
+ <A HREF="#display">Display Panel</A>
+ <A HREF="#cview">View Controls</A>
+ <A HREF="#cenhance">Enhancement Controls</A>
+ <A HREF="#cblink">Blink Controls</A>
+ <A HREF="#copts">Options:</A>
+ <A HREF="#cpanner">Panner</A>
+ <A HREF="#cmagnifier">Magnifier</A>
+ <A HREF="#ccoords">Coords Box</A>
+ <A HREF="#cautoscale">Autoscale</A>
+ <A HREF="#cantialias">Antialias</A>
+ <A HREF="#ctile">Tile Frames</A>
+ <A HREF="#cwarnings">Warnings</A>
+ <A HREF="#ccentroid">Centroid Peaks</A>
+ <A HREF="#ccmap">Colormap Selection</A>
+ <A HREF="#cbltin">Builtin Colormaps</A>
+ <A HREF="#cuser">User-defined Colormaps</A>
+ <A HREF="#load">Load Panel</A>
+ <A HREF="#lbrowse">Directory browsing</A>
+ <A HREF="#lpattern">File Patterns</A>
+ <A HREF="#lload">Direct File Load</A>
+ <A HREF="#lframe">Frame Selections</A>
+ <A HREF="#save">Save Panel</A>
+ <A HREF="#sfname">File Name</A>
+ <A HREF="#sformat">Format</A>
+ <A HREF="#scolor">Color</A>
+ <A HREF="#print">Print Panel</A>
+ <A HREF="#popts">Postscript Options</A>
+ <A HREF="#pcolors">Color Options</A>
+ <A HREF="#pproc">Processing Options</A>
+ <A HREF="#pprinter">Printer selection</A>
+ <A HREF="#info">Info Panel</A>
+ <A HREF="#tileP">Tile Panel</A>
+ <A HREF="#coordsP">Coords Panel</A>
+
+ <A HREF="#tclshell">Tcl Interactie Shell</A>
+</pre>
+<p>
+<hr>
+<h2><a name=#basic>Getting Started</a></h2>
+As a display server, XImtool is started as a separate process from client
+software such as IRAF. Once it is running it will accept
+<a href=#client>client connections</a> simultaneously on fifo pipes, unix
+domain sockets, or inet sockets. A display client like the IRAF DISPLAY
+task makes a connection and sends the image across using an IIS protocol
+(other/different protocols may be supported in the future). Once the image
+is loaded in the display buffer it may be <a href=#cenhance>enhanced</a>,
+<a href=#save>saved to a disk file</a> in a number of different formats, or
+<a href=#print>printed</a> as Encapsulated Postscript to a printer or disk file.
+<p>
+When run in standalone mode, images may be loaded on the
+<a href=#comline>command line</a> or by using the <a href=#load>Load Panel</a>.
+This allows you to browse images and perform the same manipulations as if
+they had been displayed by a client.
+<hr>
+
+<h2><a name=#gui>GUI Overview</a></h2>
+<p>
+The GUI consists of a large image display window and a number of smaller
+pannels that control various specific functions such as image
+<a href=#load>Load</a>, <a href=#save>Save</a> and <a href=#print>Print</a>
+as well as a general purpose <a href=#control>Control Panel</a>. The main
+window menubar has several menu buttons to the left: the <i>Files</i> menu
+is used to load/save/print an image as well as quit the task. The <i>View</i>
+menu let's you select the image orientation, zoom, colormap or frame. The
+<i>Options</i> menu allows you to call up control panels, toggle markers
+or blinking etc. Some of this functionality is duplicated elsewhere in
+the GUI. The right side of the menubar contains command buttons to flip the
+image as well as buttons for frame selection and the help button.
+<p>
+For more detailed information on the operation of the control panels please
+see the on-line help (i.e. use the '?' button or Alt-h keystroke in the
+main image window).
+
+<h2><a name=#mouse>Mouse Operations</a></h2>
+Clicking and dragging MB1 (mouse button 1) in the main image
+window creates a rectangular region <a href=#markers>marker</a>, used
+to select a region of the image. If you do this accidentally and don't
+want the marker, put the pointer in the marker and type DELETE or
+BACKSPACE to delete the marker. With the pointer in the marker,
+MB3 will call up a <a href=#markmenu>marker menu</a> listing some things
+ you can do with the marker, like zoom the outlined region. MB1 can be used
+to drag or resize the marker. <a href=#markers>See below</a> for more
+information on markers.
+<p>
+Clicking on MB2 in the main image window pans (one click) or zooms (two
+clicks) the image. Further clicks cycle through the builtin zoom factors.
+Moving the pointer to a new location and clicking moves the feature under
+the pointer to the center of the display window. Holding down the Shift
+key while clicking MB2 will cause a full-screen crosshair cursor to appear
+until the button is released, this can be useful for fine positioning of the
+cursor.
+<p>
+MB3 is used to adjust the contrast and brightness of the displayed image.
+The position of the pointer within the display window determines the
+contrast and brightness values. Click once to set the values corresponding
+to the pointer location, or click and drag to continuously adjust the display.
+<hr>
+
+<h2><a name=#keystroke>Keystroke Accelerators</a></h2>
+ The following keystrokes are currently defined in the GUI:
+<pre>
+ <b>Misc Functions</b>
+ <b>Ctrl-b </b><i>Previous (back) frame</i>
+ <b>Ctrl-c </b><i>Center frame</i>
+ <b>Ctrl-f </b><i>Forward frame</i>
+ <b>Ctrl-i </b><i>Invert colormap</i>
+ <b>Ctrl-m </b><i>Toggle magnifier</i>
+ <b>Ctrl-n </b><i>Normalize</i>
+ <b>Ctrl-p </b><i>Toggle panner</i>
+ <b>Ctrl-r </b><i>Register</i>
+ <b>Ctrl-s </b><i>Match LUT scaling</i>
+ <b>Ctrl-t </b><i>Tile frames toggle</i>
+ <b>Ctrl-u </b><i>Unzoom (zoom=1)</i>
+ <b>Ctrl-x </b><i>Flip X</i>
+ <b>Ctrl-y </b><i>Flip Y</i>
+
+ <b>Ctrl-= </b><i>Print using current setup</i>
+ <b>Ctrl-< </b><i>Decrease blink rate (blink faster)</i>
+ <b>Ctrl-> </b><i>Increase blink rate (blink slower)</i>
+ <b>Ctrl-+ </b><i>Zoom in</i>
+ <b>Ctrl-- </b><i>Zoom out</i>
+
+ <b>Alt-1 thru Alt-4 </b><i>Set frame to be displayed</i>
+ <b>Ctrl-1 thru Ctrl9 </b><i>Set integer zoom factor</i>
+
+ <b>Ctrl-Alt-q </b><i>Quit</i>
+ <b>Ctrl-Alt-f </b><i>Fitframe</i>
+
+ <b>Panel Toggles</b>
+ <b>Alt-b </b><i>Blink frames</i>
+ <b>Alt-c </b><i>Control panel</i>
+ <b>Alt-h </b><i>Help popup</i>
+ <b>Alt-i </b><i>Info box popup</i>
+ <b>Alt-l </b><i>Load file popup</i>
+ <b>Alt-p </b><i>Print popup</i>
+ <b>Alt-s </b><i>Save popup</i>
+ <b>Alt-t </b><i>TclShell popup</i>
+
+ <b>Cursor Positioning</b>
+ <b>Ctrl-h / Ctrl-Left </b><i>Move cursor one pixel left</i>
+ <b>Ctrl-j / Ctrl-Down </b><i>Move cursor one pixel down</i>
+ <b>Ctrl-k / Ctrl-Up </b><i>Move cursor one pixel up</i>
+ <b>Ctrl-l / Ctrl-Right </b><i>Move cursor one pixel right</i>
+
+ <b>Shift-Ctrl-h </b><i>Move cursor ten pixels left</i>
+ <b>Shift-Ctrl-Left </b><i>Move cursor ten pixels left</i>
+ <b>Shift-Ctrl-j </b><i>Move cursor ten pixels down</i>
+ <b>Shift-Ctrl-Down </b><i>Move cursor ten pixels down</i>
+ <b>Shift-Ctrl-k </b><i>Move cursor ten pixels up</i>
+ <b>Shift-Ctrl-Up </b><i>Move cursor ten pixels up</i>
+ <b>Shift-Ctrl-l </b><i>Move cursor ten pixels right</i>
+ <b>Shift-Ctrl-Right </b><i>Move cursor ten pixels right</i>
+
+ <b>Auto-Registration</b>
+ <b>Ctrl-a </b><i>Toggle auto-registration</i>
+ <b>Ctrl-o </b><i>Set frame offset</i>
+
+ <b>Frame Positioning</b>
+ <b>Ctrl-Left </b><i>Shift one full frame left</i>
+ <b>Ctrl-Down </b><i>Shift one full frame down</i>
+ <b>Ctrl-Up </b><i>Shift one full frame up</i>
+ <b>Ctrl-Right </b><i>Shift one full frame right</i>
+
+ <b>Ctrl-Alt-Left </b><i>Shift one half frame left</i>
+ <b>Ctrl-Alt-Down </b><i>Shift one half frame down</i>
+ <b>Ctrl-Alt-Up </b><i>Shift one half frame up</i>
+ <b>Ctrl-Alt-Right </b><i>Shift one half frame right</i>
+
+ <b>Peak Up Centroiding</b>
+ <b>Ctrl-[ </b><i>Decrease centroiding box size</i>
+ <b>Ctrl-] </b><i>Increase centroiding box size</i>
+ <b>Ctrl-0 (zero) </b><i>Centroid/find local maximum</i>
+ <b>Alt-Ctrl-0 (zero) </b><i>Find local minimum</i>
+
+ <b>Mouse Button Events</b>
+ <b>Shift-Btn1Down </b><i>Turn on magnifier</i>
+ <b>Shift-Btn1Up </b><i>Turn off magnifier</i>
+ <b>Shift-Btn2Down </b><i>Turn on crosshair cursor</i>
+ <b>Shift-Btn2Up </b><i>Turn off crosshair cursor</i>
+
+ <b>Btn1Down </b><i>Create a Marker</i>
+ <b>Btn1Motion </b><i>Resize marker being created</i>
+ <b>Btn2Down </b><i>Zoom/center on cursor position</i>
+ <b>Btn3Down/Motion </b><i>Brightness/contrast scale the image</i>
+
+ <b>Ctrl-Btn1Down </b><i>Create Ruler Marker</i>
+ <b>Ctrl-Btn1Motion </b><i>Resize Ruler Marker being created</i>
+ <b>Ctrl-Btn1Up </b><i>Destroy Ruler Marker</i>
+
+ <b>Alt-Motion </b><i>Freeze cursor readout</i>
+</pre>
+<hr>
+
+<h2><a name=#client>Client Connections</a></h2>
+Ximtool allows clients to connect in any of the following ways:
+
+<dl>
+<dt><b>fifo pipes</b></dt>
+ <dd>The traditional approach. The default, global /dev/imt1[io] pipes may
+ be used, or a private set of fifos.</dd>
+<dt><b>tcp/ip socket</b></dt>
+ <dd>Clients connect via a tcp/ip socket. There is a default port, or
+ a custom port may be specified. This permits connecting to the
+ server over a remote network connection anywhere on the Internet.</dd>
+<dt><b>unix domain socket</b></dt>
+ <dd>Like a tcp/ip socket, but limited to a single host system. Usually
+ faster than a tcp/ip socket, and comparable to a fifo. By default
+ each user gets their own unix domain socket, so this option allows
+ multiple users to run ximtools on the same host without having to
+ customize things.</dd>
+</dl>
+
+By default ximtool listens simultaneously for client connctions on all three
+types of ports. Clients communicate with XImtool using the IIS protocol,
+other protocols may be supported in the future.
+<hr>
+
+<h2><a name=#framebuf>Frame Buffers</a></h2>
+XImtool starts up using default frame buffer size of 512x512 pixels, two
+(of 16 possible) frames will be created. When loading disk images (i.e.
+run in standalone mode) the frame buffer configuration file will be
+searched for a defined frame buffer that is the same size or larger than
+the current image, if no suitable buffer can be found a custom frame
+buffer the same size as the image will be created in an unused portion of
+the configuration table. When used as a display server the frame buffer
+configuration number is passed in by the client and loaded explicitly even
+if it means clipping the image. If a new frame buffer is a different size
+than previously defined frames, all available frames will be initialized
+and cleared prior to the display. The default frame buffer configuration
+file is <b>/usr/local/lib/imtoolrc</b>, this can be overridden by defining a
+<b>IMTOOLRC</b> environment variable naming the file to be used, by creating a
+<b>.imtoolrc</b> file in your home directory, or a new file may be specified
+using the <b>-imtoolrc</b> command line flag or <b>imtoolrc</b> application
+resource.
+<p>
+The format of the frame buffer configuration file is
+<pre>
+ configno nframes width height [extra fields]
+
+e.g.
+ 1 2 512 512
+ 2 2 800 800
+ 3 1 1024 1024 # comment
+</pre>
+At most 128 frame buffer sizes may be defined, each configuration may
+define up to 16 frames, configuration numbers need not be sequential.
+
+<h3><a name=#frame16>Support for 16 Display Frames</a></h3>
+<p>
+As part of the extensive GUI changes with the V1.3 release, support for
+the full 16 frames allowed by the IIS protocol is now available. IRAF
+V2.11.4 or later client tasks (and CDL library) are required to take
+advantage of this frames. All changes are backwards compatible, older
+versions of IRAF will continue to work but cannot access more than the
+original four frames. The new DISPLAY task will automatically sense
+whether the display server being used supports 16 frames or the original 4
+and adjust the 'frame' parameter maximum accordingly. The changes are
+fully backwards compatible for other servers.
+<p>
+More frames are possible if needed but will require further changes to the
+client IRAF code to be effective. Allowing creation of more than 16
+frames by the Load panel can be done independently but would also require
+numerous code change to XImtool. Please contact site support if there is
+a need for this, or for workaround suggestions depending on your
+application.
+
+
+<h2><a name=#comline>Command-line Options</a></h2>
+ The following command-line options are currently recognized:
+<pre>
+ <b>-basePixel</b> &lt;num&gt Base colormap pixel number
+ <b>-cmap1</b> &lt;file&gt User cmap 1
+ <b>-cmap2</b> &lt;file&gt User cmap 2
+ <b>-cmapDir1</b> &lt;dir&gt User cmapDir 1
+ <b>-cmapDir1</b> &lt;dir&gt User cmapDir 2
+ <b>-cmapInitialize</b> &lt;bool&gt Initialize colormap at startup
+ <b>-cmapName</b> &lt;name&gt Private colormap name
+ <b>-config</b> &lt;num&gt Initial config number
+ <b>-defgui</b> Print default GUI to stdout
+ <b>-displayPanner</b> &lt;bool&gt Display panner box
+ <b>-displayCoords</b> &lt;bool&gt Display wcs coords box
+ <b>-fifo</b> &lt;pipe&gt Fifo pipe to use
+ <b>-fifo_only</b> Use fifo pipes only
+ <b>-gui</b> &lt;file&gt GUI file to use
+ <b>-help</b> Print command-line summary
+ <b>-imtoolrc</b> &lt;file&gt Frame buffer configuration file
+ <b>-inet_only</b> Use inet sockets only
+ <b>-invert</b> Invert colormap on startup?
+ <b>-ismdev</b> ISM socket template
+ <b>-maxColors</b> &lt;num&gt Number of colors
+ <b>-memModel</b> &lt;type&gt Memory model (fast,small,beNiceToServer)
+ <b>-nframes</b> &lt;num&gt Number of frames at startup
+ <b>-port</b> &lt;num&gt Inet port to use
+ <b>-printConfig</b> &lt;file&gt Printer configuration file
+ <b>-port_only</b> Use inet sockets only
+ <b>-tile</b> Tile frames on startup?
+ <b>-unix</b> &lt;name&gt Unix socket to use
+ <b>-unix_only</b> Use unix sockets only
+ &lt;<b>file</b>&gt File to load on startup
+</pre>
+<hr>
+<h2><a name=#markers>Markers</a></h2>
+<h3><a name=#panner>Panner Marker</a></h3>
+<p>
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+<p>
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned <a href=#genmark>below</a> apply to these markers as well, e.g.
+you can use MB1 to reposition on the panner window within the main image
+display window, or to drag the region marker within the panner (pan the
+image). Resizing the region marker zooms the image; this is a non-aspect
+constrained zoom. The panner window itself can be resized by dragging a
+corner with MB1. Typing delete or backspace anywhere in the panner window
+deletes the panner.
+<p>
+A special case is MB2. Hitting MB2 anywhere in the panner window pans the
+image to that point. This is analogous to typing MB2 in the main display
+window to pan the image.
+<p>
+The panner marker can be disabled by defining the <i>displayPanner</i>
+GUI resource, its size and location can be controlled using the
+<i>pannerArea</i> and <i>pannerGeom</i> GUI resources respectively.
+
+<h3><a name=#magnifier>Magnifier Marker</a></h3>
+The magnifier marker can be used to zoom in on a small area around the cursor.
+It will be updated as the cursor moves but only for small motions (either
+mouse movement or with the cursor movement keystrokes) to minimize the
+impact on the system. The zoom factor is expressed as some fraction of the
+size of the magnifier marker itself. The default zoom is 4, i.e. the area
+in the marker represents and area in the image that's one-fourth the size
+of the marker. Other zoom factors may be selected using the popup menu
+created by hitting MB1 in the marker.
+<p>
+By default the magnifier marker is not visible, to toggle it select the
+<i>Magnifier</i> option from the <i>Options</i> menubar button. Alternatively,
+for just a quick look holding down the Shift Key and MB2 Button will display
+the marker until the button is released.
+<p>
+The magnifier marker can be disabled by defining the <i>displayMagnifier</i>
+GUI resource, its size and location can be controlled using the
+<i>magnifierArea</i>and <i>magnifierGeom</i> GUI resources respectively.
+
+<h3><a name=#coords>Coords Box Marker</a></h3>
+<p>
+Ximtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+client defined coordinate system. The coords box feature is used to display
+these world coordinates as the pointer is moved about in the image window.
+<p>
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated
+a "+" will be displayed after the intensity value.
+<p>
+The coords box is a marker (text marker) and it can be moved and resized
+with the pointer like any other marker.
+
+<h3><a name=#rulers>Ruler Markers</a></h3>
+<p>
+Holding down the Ctrl key and the Left-Mouse-Button while moving
+the mouse will drag out a "ruler marker" measuring the distance from the
+initial point to the current mouse position. Releasing the Ctrl key before
+lifting the mouse button will leave the marker on the display, otherwise
+it will be erased automatically once the mouse button is released. Any
+number of ruler markers can be created in the frame.
+<p>
+Distances are measured by default in image logical pixels however
+the Right-Mouse-Button can be used inside the marker to popup a menu of
+options:
+
+<dl>
+<dt><b>Sticky</b></dt>
+ <dd>By default rulers are destroyed whenever the display changes due
+ to a pan, zoom, flip, or frame change. This option will make the
+ ruler "sticky" so it will not be erased, subsequent use of the menu
+ to shows this option to be "UnSticky" to remove this feature.</dd>
+<dt><b>Units</b></dt>
+ <dd>Sub-menu to select the units of the display. If the ISM is enabled
+ and a WCS is present in the image and selected as one of the readout
+ options, distances may also be read out in units of arcseconds,
+ arcminutes, or degrees instead of the default logical pixels. All
+ markers created after the unit change will readout in the new units
+ as their default. </dd>
+<dt><b>Color</b></dt>
+ <dd>Select the color of the marker.</dd>
+<dt><b>Draw into Frame</b></dt>
+ <dd>(<i>Not Yet Implemented</i>) Draw the marker as overlay graphics
+ in the frame. Doing so will retain the marker when printing a
+ hardcopy of the display.</dd>
+<dt><b>Destroy</b></dt>
+ <dd>Destroy the marker.</dd>
+</dl>
+
+<p>
+The marker can also be destroyed by hitting the Delete or Backspace key
+while the cursor is in the marker. There is presently no way to move the
+marker to a new position in the frame.
+
+
+<h3><a name=#genmark>General Markers</a></h3>
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the Gterm widget and are used more extensively in other programs
+(e.g. the prototype IRAF science GUI applications). Ximtool uses markers
+for the marker zoom feature discussed above, and also for the
+<a href=#panner>panner</a> and the <a href=#coords>coords box</a>. All
+markers share some of the same characteristics, so it is worthwhile learning
+basic marker manipulation keystrokes.
+
+<ul>
+<li> MB1 anywhere inside a marker may be used to drag the marker.
+<li> MB1 near a marker corner or edge, depending on the type of marker,
+ resizes the marker.
+<li> Shift-MB1 on the corner of most markers will rotate the marker.
+<li> Markers stack, if you have several markers and you put one on top
+ of the other. The active marker is highlighted to tell you which of the
+ stacked markers is active. If the markers overlap, this will be marker
+ "on top" in the stacking order.
+<li> MB2 in the body of a marker "lowers" the marker, i.e. moves it to
+ the bottom of the stacking order.
+<li> Delete or backspace in a marker deletes it.
+<li> Markers have their own translation resources and so the default
+ <a href=#keystroke>keystroke commands</a> will not be recognized when the
+ cursor is in a marker.
+</ul>
+
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The <b>Initialize</b> button will get
+the original coords box back if you delete it).
+<p>
+<h4><a name=#markmenu>Marker Menu Options</a></h4>
+<ul>
+<li> MB3 (mouse button 3) calls up the marker menu (by default).
+<li> <b>Zoom</b> does an equal aspect zoom of the region outlined by the marker.
+ In this way you can mark a region of the image and zoom it up.
+<li> <b>Fill</b> exactly zooms the area outlined by the marker, making it fill
+ the display window. Since the marker is not likely to be exactly square,
+ the aspect ratio of the resultant image will not be unitary.
+<li> <b>Print</b> prints the region outlined by the marker to the printer or
+ file currently configured by the <a href=#print>Print Panel</a>.
+<li> <b>Save</b> saves the region outlined by the marker to the file currently
+ configured by the <a href=#save>Save Panel</a>.
+<li> <b>Info</b> prints a description of the marked region. The text is
+ printed in the <a href=#info>Info Panel</a>.
+<li> <b>Unrotate</b> unrotates a rotated marker.
+<li> <b>Color</b> is a menu of possible marker colors.
+<li> <b>Type</b> is a menu of possible marker types. This is still a little
+ buggy and it isn't very useful, but you can use it to play with different
+ types of markers.
+<li> <b>Destroy</b> destroys the marker. You can also hit the delete or
+ backspace key in a marker to destroy the marker.
+</ul>
+
+<hr>
+<h2><a name=#wcspix>Real-Time WCS/Pixel Readout</a></h2>
+XImtool now has the ability to display the actual pixel value of an image
+(as well as the scaled value previously shown) and the cursor position in
+image WCS values (e.g. RA/DEC, GLAT/GLONG, etc). This is done using an
+external task (the 'ism_wcspix.e' binary in the new distribution) to
+access the image and pass the coordinate/pixel information to the GUI.
+<p>
+WCS readout is enabled by default but can be toggled or reset using the
+<i>WCS/Pix</i> button on the Coords tab in the control panel or the <i>ISM</i>
+toggle on the alt-gui menubar. When enabled, images currently in the
+server or subsequently displayed will be passed to the external process
+where they are cached for access. Cursor movements generate an event that
+maps the current frame buffer position to a position in the cached image.
+The ISM (ISM is Image Support Module) task then reads the image to
+determine the pixel value (or a small table of values around the current
+position), and computes one or more coordinates from the image position.
+The ISM task also has access to the associated BPM images and can
+optionally return bad pixel information during the cursor readout.
+<p>
+By default, the logical and world image coordinates are displayed to both
+the Coords panel readout as well as the main display window wcsbox text
+marker. Alternate coordinate systems (e.g. transformation of equatorial
+to galactic coordinates or some other sky system, physical coords,
+amplifier coords, etc) can be selected for display by hitting the
+<i>Options</i> toggle on the Coords panel. Available coordinate systems are
+chosen using the <i>Type</i> menu on the panel, the readout format
+(sexigesimal, degrees, etc) using the <i>Format</i> menu, and the display to
+the current panel or main image window using the remaining toggles for
+each WCS. Up to four systems may be displayed at one time, the coordinate
+panel and wcsbox marker will adjust size automatically depending on the
+display.
+<p>
+By selecting the <i>BPM Data</i> toggle from the Coords.Options panel ximtool
+is able to flag pixels in images with an associated bad pixel mask. This
+bad pixel mask is currently assumed to be named in the image header "BPM"
+keyword by convention. If the cursor passes over a bad pixel in the mask,
+the Coords bpm display as well as the main window wcsbox will change to a
+red background color. Only the Coords display will show the value, any
+non-zero value will be flagged with the color change.
+<p>
+With the ISM enabled the Compass indicator will display a set of arrows
+showing North-East if a WCS is available, otherwise just the current X-Y
+axes are shown. The pixel table will display actual pixel values from the
+image, with the ISM off the pixel table displays the scaled image values
+from the frame buffer.
+
+
+<hr>
+<h2><a name=#curfreeze>Freezing Cursor Readout</a></h2>
+<p>
+Holding down the Alt key will now freeze the cursor display readout
+and draw crosshairs on the screen at the last position. This can be used
+for example to position the cursor but then allow the cursor to be moved to
+another window (to enter text, start a program, whatever) without losing
+the position information displayed on the screen.
+
+
+
+<hr>
+<h2><a name=#autoreg>Auto-Registration of Images</a></h2>
+<p>
+The auto-register feature allows you specify a registration of two or
+more display frames with an offset. When enabled, this registration is
+maintained for all frames in the list if any one of them is panned or
+zoomed to a new location in the frame buffer.
+<p>
+For example, to use this feature do the following:
+
+<ul>
+<li> Enable Auto-Register (either on the Control Panel or the toolbar on the
+ alt-gui) and pan/zoom to some star of interest.
+<li> Use Mouse-Button-2 to center the star in the frame.
+<li> Cycle through the frames and you may see a small shift of the star. For
+ each frame, position the cursor on the star and type <b>Ctrl-o</b> to
+ offset it to the center. Repeat as necessary. Small corrections will be
+ cumulatively added so you can use the <b>Ctrl-0</b> (Ctrl-zero) peak-up
+ command to centroid each object in the frame before the <b>Ctrl-o</b>
+ offset.
+<li> Pan around the image in one display frame, then switch frames and the new
+ frame should also be panned to the new image with the proper offset.
+<li> A <b>Ctrl-a</b> command will toggle the feature, offsets are only allowed
+ when autoreg is enabled.
+</ul>
+
+Hitting <b>Register</b> will zero the offsets, as will toggling the
+auto-register function. What you should see is the object centered in the
+frame and as you blink through it remains registered but the panner box
+marker is moving around. Drag the panner around and all frames still
+remain registered with the given offset. The control/info panels now
+display what the offset is for each frame.
+<p>
+The register display list is shared with the blink list and can be set
+using the Display control panel. By default all frames are included in
+the list. For accessing more than four frames, use the box icon in the
+Blink/Register box of the Display control panel to bring up a new window
+with access to all 16 available frames.
+
+
+<hr>
+<h2><a name=#cutgraphs>Image Cut Graphics</a></h2>
+<p>
+XImtool now has the ability to display horizontal and vertical
+cut-graphs of the display, these appear as "flip-out" panels that appear
+on the bottom and right side of the main display window and are controlled
+by the small <b>H</b> and <b>V</b> buttons in the lower right corner of
+the window. When both panels are enabled the corner area of the display
+also shows an options panel for the graphs. Current options are:
+
+<dl>
+<dt><b>Better Speed</b></dt>
+ <dd>Draw the graphics so they update at the fastest possible rate.
+ This is done by subsampling pixels to produce a smoother graph
+ but without sacrificing too much accuracy.</dd>
+<dt><b>Better Accuracy</b></dt>
+ <dd>Draw the graphics using all screen pixels to produce the most
+ accurate display. On fast modern machines this can be enabled with
+ no apparent loss of speed, however older machines may wish to use
+ this only occassionally to limit any lag in the cursor tracking.</dd>
+<dt><b>Image Pixels</b></dt>
+ <dd>(<i>Not Yet Implemented</i>)<dd>
+<dt><b>Jump Cursor</b></dt>
+ <dd>If enabled, large jumps of the cursor do not update the graphics
+ display, small movements around an object of interest will update
+ the display continuously.</dd>
+<dt><b>Smooth Cursor</b></dt>
+ <dd>If enabled, all cursor movements cause the display to be updated.
+ This is another option that can be set safely on faster machines
+ but will cause a delay on slower ones.</dd>
+<dt><b>Graphics Cursors</b></dt>
+ <dd>If enabled, the graphics cursors in either of the plots are active
+ and can be used to update the cursor readout on the main image window
+ and the complementary cut-graph. This can be used for example to
+ freeze the cursor in the main display using the Alt key (see above),
+ then moving to one of the graphics windows to perform cut graphs in
+ only one axis.</dd>
+</dl>
+
+Graphs are (currently) drawn using only the scaled display values
+to avoid complications of accessing multiple images in a mosaic display. Both
+plots are labeled using the frame z1/z2 values and contain cursor indicators
+which update contuously.
+
+
+<hr>
+<h2><a name=#peakup>Peak-Up Cursor Centroid Positioning</a></h2>
+<p>
+Several new keystroke commands are available to reposition the
+cursor to a centroid or min/max pixel value within a bounding box of the
+cursor position, allowing you to approximate the position with the mouse
+and fine tune it quickly before typing the application keystroke command.
+The initial box size is controlled with a <b>centerBoxSize</b> GUI resource
+(defaults to 5 pixels) but can be adjusted interactively using the
+<b>Ctrl-[</b> and <b>Ctrl-]</b> commands to descrease/increase the box
+size respectively. A marker will flash briefly to indicate the box size.
+<p>
+The <b>Ctrl-0</b> (zero) key finds either a centroid or the local maximum
+pixel value within this box region, <b>Alt-Ctrl-0</i> (zero) will find the
+local minimum value. In either case the cursor is reposition to the computed
+value. The default peak-up action is to find the centroid position in the
+box however this can be changed to find the max pixel by selection the
+"<a href=#ccentroid>Centroid Peaks</a>" option from the main Display
+control panel or by resetting the <i>peakCentroid</i> GUI resource
+(defaults to True).
+<p>
+Centroiding is done using only the scaled screen pixel values and
+only pixels above the mean value within the box are used. It works best
+if the box size is set appropriately, the centroid position may appear to
+drift if the box is too large and includes too many background pixels.
+
+
+<hr>
+<h2><a name=#control>Integrated Control Panel</a></h2>
+
+<h3><a name=#display>Display Panel</a></h3>
+XImtool has a control panel which can be used to exercise most of the
+capabilities the program has for image display. The control panel can be
+accessed either via the <b>Options</b> menu from the main window menubar, or
+by
+pressing the leftmost button in the row of buttons at the upper right side
+of the display in the standard GUI (in the alternate GUI the
+<i>Control Bar</i> accessed by the rightmost button on the menubar
+provides widgets for selecting the desired control panel).
+<p>
+The separate windows previously used for Control/Print/Load/Save/etc
+have now been integrated into a single window with the appropriate control
+panel selectable with a Tab widget. There are also new Tab panels for
+setting the frame tile configuration (see below), more detailed information
+on the server status, and selecting the WCS readout options (see below).
+
+<h3><a name=#cview>View Controls</a></h3>
+<p>
+The <b>Frame</b> box will list only the frame buffers you currently have
+defined. Currently, the only way to destroy a frame buffer is to change the
+frame buffer configuration, new frame buffers (up to 4) will be created
+automatically if requested by the client.
+<p>
+The <b>text display window</b> gives the field X,Y center, X,Y scale
+factors, and the X,Y zoom factors. The scale factor and the zoom factor
+will be the same unless autoscale is enabled. The scale is in units of
+display pixels per frame buffer pixel, and is an absolute measure (it doesn't
+matter whether or not <a href=#cautoscale>autoscale</a> is enabled). Zoom is
+relative to the autoscale factor, which is 1.0 if autoscaling is disabled.
+This information is also presented in the <a href=#info>Info panel</a>.
+<p>
+The numbers in the <b>Zoom</b> box are zoom factors. Blue numbers zoom,
+red numbers dezoom. <b>Zoom In</b> and <b>Zoom Out</b> may be used to go to
+larger or smaller zoom factors, e.g. "Ctrl-5" followed by "Zoom In" will get you
+to zoom factor 10. Specific zoom factors may also be accessed directly as
+Control <a href=#keystrokes>keystrokes</a>, e.g. Ctrl-5 will set zoom factor 5.
+<b>Center</b> centers the field. <b>Toggle Zoom</b> toggles between the
+current zoom/center values, and the unzoomed image.
+<p>
+<b>Aspect</b> recomputes the view so that the aspect ratio is 1.0.
+Aspect also integerizes the zoom factor (use the version in the View menu
+if you don't want integerization).
+<p>
+<b>Fit Frame</b> makes the display window the same size as the frame
+buffer. Note that <a href=#cautoscale>autoscale</a> has much the same effect,
+and allows you to resize the display window to any size you want, or view
+images to large to fit on the screen.
+
+<h3><a name=#cenhance>Enhancement Controls</a></h3>
+
+<p>
+At the top is a scrolled list of all the <a href=#cbltin>available
+colormaps</a>. Click on the one you want to load it. You can add your own
+<a href=#cuser>colormaps</a> to this list.
+<p>
+The two sliders adjust the <b>contrast</b> (upper slider) and
+<b>brightness</b> (lower slider) of the display. The <b>Invert</b> button
+inverts the colormap (multiples the contrast by -1.0). Note that due to the
+use of the private colormap the sliders are a bit sluggish when dragged to
+window the display. If this is annoying, using MB3 in the display window is
+faster.
+<p>
+The <b>Normalize</b> button (on the bottom of the control panel) will
+normalize the enhancement, i.e. set the contrast and brightness to the default
+one-to-one values (1.0, 0.5). This is the preferred setting for many of the
+pseudocolor colortables and for private colormaps loaded from disk images.
+
+<h3><a name=#cblink>Blink Controls</a></h3>
+<p>
+<b>Blink frames</b> is the list of frames to be blinked. When blink mode is
+in effect ximtool just cycles through these frames endlessly, pausing
+"blink rate" seconds between each frame. The same frame can be entered in
+the list more than once. To program an arbitrary list of blink frames,
+hit the Reset button and click on each blink frame button until it is set
+to the desired frame number. The main control panel allows only the
+original four frames to be specified in the blink list, however access to
+the full list of 16 frames now supported is gained using the box icon
+button next the the <b>Reset</b> button to bring up a new control panel.
+<p>
+The <b>Blink Rate</b> can be adjusted as slow or as fast as you want using
+the arrow buttons. If you set the blink rate small enough it will go to
+zero, enabling single step mode (see below).
+<p>
+The <b>Register</b> button registers all the blink frames with the current
+display frame. Frames not in the blink list are not affected.
+<p>
+The <b>Match LUTs</b> button sets the enhancement of all blink frames to
+the same values as the display frame. Frames not in the blink list are not
+affected.
+<p>
+The <b>Blink</b> button turns blink on and off. When the blink rate is set
+to zero the Blink button will single step through the blink frames, one
+frame per button press.
+<p>
+<b>NOTE:</b> You can blink no matter what ximtool options are in effect,
+but many of these will slow blink down. To get the fastest blink you may
+want to turn off the panner and coords box, and match the LUTs of all the
+blink frames. All the ximtool controls are fully active during blink
+mode, plus you can load frames etc.
+
+
+<h3><a name=#copts>Options:</a></h3>
+<dl>
+<dt><b><a name=#cpanner>Panner</a></b></dt>
+ <dd>Toggles the display of the Panner marker.</dd>
+<dt><b><a name=#cmagnifier>Magnifier</a></b></dt>
+ <dd>Toggles the display of the magnifier marker.</dd>
+<dt><b><a name=#ccoords>Coords Box</a></b></dt>
+ <dd>Toggles the display of the WCS Coords Box marker.</dd>
+<dt><b><a name=#cautoscale>Autoscale</a></b></dt>
+ <dd>If autoscale is enabled then at zoom=1, the frame buffer will
+ be automatically scaled to fit within the display window. With
+ autoscale disabled (the default), the image scale is more
+ predictable, but the image may be clipped by the display window,
+ or may not fill the display window.</dd>
+<dt><b><a name=#cantialias>Antialias</a></b></dt>
+ <dd>When dezooming an image, i.e., displaying a large image in a
+ smaller display window, antialiasing causes all the data to be used
+ to compute the displayed image. If antialiasing is disabled then
+ image is subsampled to compute the displayed image. Antialiasing
+ can prevent subsampling from omitting image features that don't
+ fall in the sample grid, but it is significantly slower than
+ dezooming via subsampling. The default is no antialising. </dd>
+<dt><b><a name=#ctile>Tile Frames</a></b></dt>
+ <dd>The default display mode is to view one frame at a time. In tile
+ frames mode, 2 or 4 frames may be viewed simultaneously in the
+ display window. All the usual operations (zoom and pan, colortable
+ enhancement, cursor readback, etc.) still work for each frame even
+ when in tile frames mode. </dd>
+<dt><b><a name=#cwarnings>Warnings</a></b></dt>
+ <dd>The warnings options toggles whether you see warning dialog boxes
+ in situations like overwriting an existing file, clearing the frame
+ buffer, etc.</dd>
+<dt><b><a name=#ccentroid>Centroid Peaks</a></b></dt>
+ <dd>If enabled, the <b>Ctrl-0</b> keystroke will reposition the cursor
+ to the computed centroid of the centroiding box, otherwise the cursor
+ is repositioned to the local maximum value within the box.</dd>
+</dl>
+
+<h3><a name=#ccmap>Colormap Selection</a></h3>
+By default XImtool will display images using either a grayscale colormap
+if loaded by a client, or a private colormap when loading an image from
+disk that contains a colormap. Each frame defines its own colormap so
+you can define different colormaps or enhancements for each frame, they
+will change automatically as you cycle through the frames.
+
+<h4><a name=#cbltin>Builtin Colormaps</a></h4>
+Once loaded, the colormap may either be changed using the builtin colormap
+menu under the <b>View</b> menu button on the main window, or from the
+<a href=#cenhance>Enhancement</a> box on the <a href=#control>control panel</a>. Ximtool has about a dozen colormap
+options builtin, other <a href=#cuser>user-defined colormaps</a> may
+optionally be loaded.
+
+<h4><a name=#cuser>User-defined Colormaps</a></h4>
+The cmap[12] and cmapDir[12] resources (or <a href=#comline>command line
+arguments</a> are used to tell ximtool which specific colormaps to make
+available or where to look for colortables respectively. The colortables
+are loaded when ximtool starts up, or when it is reinitialized (e.g. by
+pressing the <b>Initialize</b> button in the <a href=#control>control
+panel</a>). Ximtool will ignore any files in the colormap directory
+which do not look like colortables. New colortables will also be added
+for each images loaded from disk.
+<p>
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green,
+and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+<pre>
+ R G B
+ R G B
+ (etc.)
+</pre>
+Blank lines and comment lines (# ...) are ignored.
+<p>
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. Ximtool will interpolate the table as necessary to
+compute the colortable values used in Ximtool. Ximtool uses at most 201
+colors to render pixel data, so it is usually necessary to interpolate the
+table when it is loaded.
+<p>
+The name of the colortable as it will appear in the Ximtool control panel
+is the root name of the file, e.g., if the file is "rainbow.lut" the
+colortable name will be "rainbow". Lower case names are suggested to avoid
+name collisions with the builtin colortables. Private colormaps for disk
+images will be have the same name as the image loaded. If the same colortable
+file appears in multiple user colortable directories, the first one will be
+used.
+<p>
+The directory "luts" in the ximtool source directory contains a sample set
+of colortable files. This can be installed as /usr/local/lib/imtoolcmap
+when ximtool is installed.
+
+<hr>
+<h2><a name=#load>Load Panel</a></h2>
+The Load Panel allows you load images from disk directly to the frame
+buffer, this is analogous to loading an image on the command line except
+that browsing is possible. At present recognized formats include IRAF OIF
+format (i.e. <i>.imh</i> extension), simple FITS files, GIF, and Sun
+rasterfiles. The task will automatically sense the format of the image
+and load it appropriately. Images with private colormaps (such as GIF)
+will be loaded using the private colormap (meaning that changing the
+brightness/contrast enhancements will render an apparently random-colored
+image), all others will be loaded with a grayscale colormap.
+<p>
+When loading new images the frame buffer configuration table will be
+searched for a frame buffer that is the same size or larger than the new
+image size, if no frame buffer can be found a custom buffer exactly the
+size of the image will be created. This means that the image may not fill
+the display window when loaded, or you may see a subsection of the image
+in the main display window. Setting the
+<a href=#cautoscale><b>autoscale</b></a> option on the main
+Display panel will scale the entire image to fit the main display window,
+the full frame buffer will always be visible in the Panner marker window.
+<p>
+Images with more colors than can be displayed will automatically be
+quantized to the number of available colors before display. If the
+<b>Auto Grayscale</b> button is enabled any image colormap will be
+converted to grayscale and loaded as the standard grayscale colormap.
+<p>
+Formats which permit pixels larger than 8-bits/pixel will be sampled on
+a grid to determine an optimal range in the data to be used to compute a
+linear transformation to the number of display colors. This is the same
+z-scale sampling and transformation used by the IRAF <b>DISPLAY</b> task
+when computing the <b>z1/z2</b> values and provides a much better initial
+display than simple truncation to 8-bits. This scaling will be done
+automatically using a grid of <b>Nsample</b> points if the <b>Zscale</b>
+option is enabled. Otherwise, if the <b>Zrange</b> option is set the full
+data range will be used to scale the image. Lastly, is neither <b>Zscale</b>
+nor <b>Zrange</b> are enabled, the z1/z2 values may be set explicitly using
+the options box.
+
+<h3><a name=#lbrowse>Directory Browsing</a></h3>
+The load panel contains a list of files in the current directory that may
+be selected for loading by selecting with left mouse button. If the file
+is a directory the contents of the new directory will be loaded, if it's a
+plain file an attempt will be made to load it as an image otherwise an
+error popup will appear. Directories in the list are identified with a
+trailing '/' character, you will always see any subdirectories listed even
+if a filter is specified.
+<p>
+The <b>Root</b> button will reset the current directory to the system root
+directory. The <b>Home</b> button will reset the current directory to the
+user's login directory, the <b>Up</b> button moves up one directory level, and
+<b>Rescan</b> reloads the file list by rescanning the directory. The current
+working directory is given below the file selection window.
+<p>
+Selecting the <b>List Image Headers</b> option will change the display text
+to list all images in the current directory which match the filename filter.
+Directory browsing is disabled while this option is in effect.
+
+<h3><a name=#lpattern>File Patterns</a></h3>
+By default all files and directories will be listed. You may specify a
+filter to select only those files with a given extension such as
+"*.fits" using the <b>Filter</b> text box. Directories will
+always be seen in the list and are identified with a trailing '/'
+character. Any valid unix pattern matching string will be recognized,
+multiple templates may be specified in a comma-delimited list such as
+"*.imh,*.fits" to list both OIF and FITS images.
+
+<h3><a name=#lload>Direct File Load</a></h3>
+If you know exactly which file you wish to load, you may enter its
+name in the <b>Load File</b> text box and either hit &lt;cr&gt or the
+<b>Load</b> button to load it. An absolute or relative path name may
+be given, if a simple filename is specified it will be searched for in
+the current working directory which is displayed in the <b>Directory</b>
+label of the panel.
+
+<h3><a name=#lframe>Frame Selections</a></h3>
+By default images will be loaded into the current frame, you may choose
+a different frame using the Frame menu button to select from the
+available frames.
+
+
+<hr>
+<h2><a name=#save>Save Panel</a></h2>
+The Save Panel lets you save the current contents of the main display window
+to a disk file (including the Panner/Coords markers, any general graphics
+markers, or overlay graphics displayed by the client program). Presently,
+only the contents of the main display window may be saved, there is no
+facility for saving the undisplayed contents of the entire frame buffer
+other than to enable the <a href=#cautoscale>autoscale</a> feature. A limited
+number of formats are currently available, others will be added in future
+versions.
+
+<dl>
+<dt><b><a name=#sfname>File Name</a></b></dt>
+ <dd>The <b>File Name</b> text box allows you to enter the file name of
+ the saved file. A "%d" anywhere in the name will be replaced by a
+ sequence number allowing multiple frames to be saved with unique
+ names. </dd>
+<dt><b><a name=#sformat>Format</a></b></dt>
+ <dd>The <b>Format</b> box allows you to choose the format of the image
+ to be created. Not all formats are currently implemented. The EPS
+ format is similar to the \fIPrint\fR option however there is no
+ annotation. </dd>
+<dt><b><a name=#scolor>Color</a></b></dt>
+ <dd>The <b>Color</b> box lets you choose the color type of the image
+ to be created. The options will change depending on the format,
+ e.g. FITS doesn't allow color so no color options will be allowed.
+ Formats which allow 24-bit images will be written using the current
+ colormap after converting to a 24-bit image, pseudocolor images will
+ be written with the current colormap. </dd>
+</dl>
+<hr>
+
+<h2><a name=#print>Print Panel</a></h2>
+The Print Panel allows you dump the contents of the main display window as
+Enacpsulated Postscript to either a named printer device or to a disk file.
+The <b>Print To</b> selects the type of output, the <b>Print Command</b>
+box will adjust accordingly, either as a Unix printer command or as a file
+name. A "%d" anywhere in the name for disk output will be replaced by a
+sequence number allowing multiple frames to be saved with unique names.
+<a href=#pprinter>Selecting printers</a> from the installed list will
+automatically change the command to be used to generate the output. This
+command does not necessarily need to be a printer command, the
+<a href=#pprinter>printer configuration file</a> lets you define any command
+string to process the image.
+
+<h3><a name=#pcolors>Color Options</a></h3>
+The <b>Color</b> box lets you choose the color type of the image to be created.
+PseudoColor or 24-bit postscript will be created using the current colormap.
+
+<h3><a name=#popts>Postscript Options</a></h3>
+<dl>
+<dt>Orientation</dt>
+ <dd> Set the page orientation.</dd>
+<dt>Paper Size</dt>
+ <dd> Select the paper size to be used.</dd>
+<dt>Image Scale</dt>
+ <dd> Set the scale factor used to compute the final image size.</dd>
+</dl>
+
+<h3><a name=#pproc>Processing Options</a></h3>
+<dl>
+<dt>Auto Scale</dt>
+ <dd>The auto scale toggles whether or not the image is automatically
+ scaled to fit the page. If not enabled, the <b>image scale</b> will
+ be used to dtermine the output image size.</dd>
+<dt>Auto Rotate</dt>
+ <dd>Auto rotate determines whether or not the image will be rotated to
+ fit on the page. When set, an image larger than the current
+ orientation will be rotated and possibly scaled to fit the page.</dd>
+<dt>Max Aspect</dt>
+ <dd>Max Aspect takes images smaller than the page and automatically
+ increases the scale so the image fills the page in the current
+ orientation.</dd>
+<dt>Annotate</dt>
+ <dd>The annotate option toggles whether or not the final file includes
+ annotation such as the image title, a colorbar, and axis labels.</dd>
+</dl>
+<h3><a name=#pprinter>Printer selection</a></h3>
+The printer selection list lets choose the printer to be used. The printer
+configuration file is /usr/local/lib/ximprint.cfg by default or may be reset
+using the <em>printConfig</em> resource. The format of the file is simply
+<pre>
+ <b>name</b> &lt tab &gt <em>command</em>
+</pre>
+The <b>name</b> value is what appears in the selection list and may be more
+than a single word, the <em>command</em> can be any command that accepts EPS
+input from a pipe, the two fields must be separated by a tab character.
+Normally the command will be
+a simple 'lpr -Pfoo' or some such, but can also include converters or
+previewers. At most 128 printer commands may be used.
+
+<hr>
+<h2><a name=#info>Info Panel</a></h2>
+The Info panel was revised to provide a greater variety of status
+information. The type of output is controlled by the toggle buttons on
+the bottom of the frame, however all output is kept current as the program
+runs. Current info options include:
+
+<dl>
+<dt><b>Frame</b></dt>
+ <dd>Info about the current display frame.</dd>
+<dt><b>Server</b></dt>
+ <dd>Info about various server options, e.g. colormaps, memory model,
+ antialias type, etc.</dd>
+<dt><b>Clients</b></dt>
+ <dd>Show currently connected clients. Lists available connection
+ channels and active ISM clients.</dd>
+<dt><b>WCS</b></dt>
+ <dd>List all WCS and mappings for the current frame.</dd>
+<dt><b>ISM</b></dt>
+ <dd>Log of various ISM status messages.</dd>
+<dt><b>Imtoolrc</b></dt>
+ <dd>Show current frame buffer configuration table.</dd>
+</dl>
+
+
+<hr>
+<h2><a name=#tileP>Tile Panel (NEW)</a></h2>
+With the additional frames, the default tiling scheme proved inadequate.
+A new control panel Tile frame now allows you to select from a number of
+tile configurations, the list of frames to be tiled, a <b>fill style</b>
+(left-to-right or top-to-bottom), as well as optional labels for each of
+the tiles (frame number, image title or image name).
+<p>
+Tile configuration will make use of all frames currently selected in the
+<b>Tile Frame</b> group in the following manner:
+
+<dl>
+<dt><b>Disabled</b></dt>
+ <dd>Do not tile the display.</dd>
+<dt><b>Manual</b></dt>
+ <dd>Tile according to <b>Manual Configuration</b> settings.</dd>
+<dt><b>Best</b></dt>
+ <dd>Optimize layout for frame buffer aspect.</dd>
+<dt><b>Square</b></dt>
+ <dd>Always force a square layout (2x2, 3x3, etc).</dd>
+<dt><b>Horizontal</b></dt>
+ <dd>Preferentially tile horizontally (6 frames ==> 3x2).</dd>
+<dt><b>Vertical</b></dt>
+ <dd>Preferentially tile vertically (6 frames ==> 2x3).</dd>
+<dt><b>One Row</b></dt>
+ <dd>Tile all in one row (Nx1).</dd>
+<dt><b>One Column</b></dt>
+ <dd>Tile all in one column (1xN).</dd>
+</dl>
+
+
+<hr>
+<h2><a name=#coordsp>Coords Panel (NEW)</a></h2>
+The Coords Panel is meant to provide a full-featured readout as well as
+serve as a control panel for the various options. The display window
+contains the image name/title and frame buffer info, and a selection of
+coordinate and image pixel readouts. The intent is provide more infor-
+mation than can fit comfortably on the main image window while still
+taking up as little screen space as possible. To this end the <b>Options</b>
+button is used to hide most of the feature controls when not in use
+(see below). Other options on the main panel include:
+
+<dl>
+<dt><b>WCS/Pix</b></dt>
+ <dd>Toggle the real-time WCS/pixel readout capability (i.e. the ISM
+ used to access the disk image). This must be enabled for certain
+ other options to work.</dd>
+
+<dt><b>Pix Table</b></dt>
+ <dd>Open a panel showing an image pixel table. The panel shows an array
+ of pixels surrounding the cursor position, either the actual pixel
+ values if the ISM is enabled, or scaled display values otherwise.
+ The size of the table may be selected from the menubar.</dd>
+
+<dt><b>Header</b></dt>
+ <dd>Display the current image header in a new panel. Both the entire
+ image header as well as WCS-specific parts of the header are
+ available under different tabs. This option is only active when
+ the ISM is enabled.</dd>
+
+<dt><b>Compass</b></dt>
+ <dd>Draw an orientation compass on the display panner. If the ISM is
+ enabled and a WCS is present in the header, the compass will
+ indicate N/E according to the WCS, otherwise the X/Y axes of the
+ image are drawn.</dd>
+
+<dt><b>Options</b></dt>
+ <dd>Pop-up/down the option control portion of the panel. When enabled,
+ the Coords Panel will change size to reveal the options which can be
+ changed (explained below). </dd>
+</dl>
+
+The <b>Readout Values</b> group controls the selection of WCS type,
+location and format to be displayed. The <b>Type</b> menu always
+provides a selection of the image Logical, Physical or World systems,
+which may be identical depending on the image header. If a World system
+is supplied in the image addition entries for transformations to other sky
+systems, (e.g. FK5 to ICRS or galactic/ecliptic) will also be available.
+The selection is dependent on whether the ISM is running as well as WCS
+information present in the image. The <b>Format</b> menu allows the
+use to select a sexigesimal display, conversion to degrees or radians,
+or whichever format is most natural for the coordinate being display.
+The two toggle to the right control whether this WCS is to be displayed
+on the <i>Panel</i> (i.e. the Coords Panel window) or the <i>ImgWin</i>
+(i.e. the text marker on the main image window).
+<p>
+Other options below this group control whether or not to display the WCS
+labels, the image name/title, and frame buffer information in the main
+Coords Panel display. The <b>BPM Data</b> option controls whether or not the
+ISM will try to map any bad-pixel mask associated with the image. If
+enabled, a bad-pixel mask specified by the image header BPM keyword
+(currently fixed by convention but this may be selectable later) will be
+mapped along with the image. Aside from wcs/pixel readouts at each cursor
+position, any BPM data values found will also be displayed. A non-zero
+value will cause the BPM field of the Coords Panel readout as well as the
+main image window marker to switch to a red background color to flag the
+value.
+<p>
+The last box allows the user to specify a different ISM task to be
+executed or to reinitialize the current one. In most cases this won't
+need to be changed, however a custom ISM could be started when using
+special data formats. This command string can also be controlled by the
+application <i>ism_task</i> resource.
+
+
+<hr>
+<h2><a name=#tclshell>Tcl Interactive Shell</a></h2>
+ The <em>TclShell</em> is mostly used as a development or debugging
+tool for the GUI. It allows the user to type commands directly to the
+TCL interpreter letting you send messages to the object manager or execute
+specific procedures in the TCL code that makes up the GUI. Most users will
+never need this, but for an example of what it does, bring it up and type a
+command such as
+<pre>
+ send helpButton set background red
+</pre>
+Cool, huh.
+<hr>
+
+<h2><a name=#acknowledgements>Acknowledgements</a></h2>
+ <i>XImtool</i> was developed by the IRAF Group at the National Optical
+Astronomy Observatories in Tucson, AZ. For further information or to report
+problems please contact <i>iraf@noao.edu</i>
+<hr>
+This document was last updated 11/6/96.
+
+</BODY>
+</HTML>
diff --git a/vendor/x11iraf/ximtool/ximtool.html.h b/vendor/x11iraf/ximtool/ximtool.html.h
new file mode 100644
index 00000000..539441cf
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.html.h
@@ -0,0 +1,1219 @@
+"<HTML> <HEAD>",
+"<TITLE>XImtool On-Line Help Summary</TITLE>",
+"</HEAD> <BODY>",
+"<H2>Welcome to XImtool V2.0BETA</H2>",
+"",
+"XImtool is an image display server developed by the IRAF Project at the",
+"National Optical Astronomy Observatories. To view images you need",
+"client software (such as IRAF) to load images into the display, or it can",
+"load images directly when run as a standalone task.",
+"<p>",
+"More <a href=#toc>detailed help</a> is available on the following topics:",
+"<dl><dl>",
+"<dt>Basic Usage:</dt>",
+"<ul>",
+"<li><A HREF=\"#basic\">Getting Started</A> -- The basics. </li>",
+"<li><A HREF=\"#gui\">GUI Overview</A> -- What it looks like. </li>",
+"<li><A HREF=\"#mouse\">Mouse Operations</A> -- Doing stuff. </li>",
+"<li><A HREF=\"#keystroke\">Keystroke Accelerators</A> -- Keystroke summary.</li>",
+"<li><A HREF=\"#markers\">Markers</A> -- Panner/WCS markers, general markers.</li>",
+"<li><A HREF=\"#control\">Control Panel</A> -- Operating the Control panel.</li>",
+"<li><A HREF=\"#load\">Load Panel</A> -- Load panel operation and options.</li>",
+"<li><A HREF=\"#save\">Save Panel</A> -- Save panel operation and options.</li>",
+"<li><A HREF=\"#print\">Print Panel</A> -- Print panel operation and options.</li>",
+"<li><A HREF=\"#info\">Info Panel</A> -- Information panel.</li>",
+"</ul></dl></dl>",
+"<dl><dl>",
+"<dt>Advanced Features:</dt>",
+"<ul>",
+"<li><A HREF=\"#comline\">Command-line Options</A> -- Startup flags. </li>",
+"<li><A HREF=\"#client\">Client Connections</A> -- Use as a display server. </li>",
+"<li><A HREF=\"#framebuf\">Frame Buffers</A> -- Explanation of Frame buffers. </li>",
+"<li><A HREF=\"#pprinter\">Printer Configurations</A> -- Configuring output devices. </li>",
+"<li><A HREF=\"#tclshell\">TclShell</A> -- Expert-mode interactive shell.</li>",
+"</ul></dl></dl>",
+"<p>",
+"Please contact <i>iraf@noao.edu</i> with comments, bugs, or suggestions.",
+"More detailed documentation is also available in the man page for this",
+"task.",
+"<p>",
+"<hr>",
+"",
+"<a name=#toc> <h2>Table of Contents:</h2> </a>",
+"<pre>",
+" <A HREF=\"#basic\">Getting Started</A>",
+" <A HREF=\"#gui\">GUI Overview</A>",
+" <A HREF=\"#mouse\">Mouse Operations</A>",
+" <A HREF=\"#keystroke\">Keystroke Accelerators</A>",
+" <A HREF=\"#comline\">Command-line Options</A>",
+" <A HREF=\"#client\">Client Connections</A>",
+" <A HREF=\"#framebuf\">Frame Buffers</A>",
+" <A HREF=\"#frame16\">Support for 16 Frames</A>",
+" <A HREF=\"#markers\">Markers</A>",
+" <A HREF=\"#panner\">Panner Marker</A>",
+" <A HREF=\"#magnifier\">Magnifier Marker</A>",
+" <A HREF=\"#coords\">Coords Box Marker</A>",
+" <A HREF=\"#rulers\">Ruler Markers</A>",
+" <A HREF=\"#genmark\">General Markers</A>",
+" <A HREF=\"#markmenu\">Menu Options</A>",
+" <A HREF=\"#wcspix\">Real-Time WCS/Pixel Readout</A>",
+" <A HREF=\"#curfreeze\">Freezing Cursor Readout</A>",
+" <A HREF=\"#autoreg\">Auto-Registration of Images</A>",
+" <A HREF=\"#cutgraphs\">Image Cut Graphics</A>",
+" <A HREF=\"#peakup\">Peak-Up Cursor Centroid Positioning</A>",
+"",
+" <A HREF=\"#control\">Integrated Control Panel</A>",
+" <A HREF=\"#display\">Display Panel</A>",
+" <A HREF=\"#cview\">View Controls</A>",
+" <A HREF=\"#cenhance\">Enhancement Controls</A>",
+" <A HREF=\"#cblink\">Blink Controls</A>",
+" <A HREF=\"#copts\">Options:</A>",
+" <A HREF=\"#cpanner\">Panner</A>",
+" <A HREF=\"#cmagnifier\">Magnifier</A>",
+" <A HREF=\"#ccoords\">Coords Box</A>",
+" <A HREF=\"#cautoscale\">Autoscale</A>",
+" <A HREF=\"#cantialias\">Antialias</A>",
+" <A HREF=\"#ctile\">Tile Frames</A>",
+" <A HREF=\"#cwarnings\">Warnings</A>",
+" <A HREF=\"#ccentroid\">Centroid Peaks</A>",
+" <A HREF=\"#ccmap\">Colormap Selection</A>",
+" <A HREF=\"#cbltin\">Builtin Colormaps</A>",
+" <A HREF=\"#cuser\">User-defined Colormaps</A>",
+" <A HREF=\"#load\">Load Panel</A>",
+" <A HREF=\"#lbrowse\">Directory browsing</A>",
+" <A HREF=\"#lpattern\">File Patterns</A>",
+" <A HREF=\"#lload\">Direct File Load</A>",
+" <A HREF=\"#lframe\">Frame Selections</A>",
+" <A HREF=\"#save\">Save Panel</A>",
+" <A HREF=\"#sfname\">File Name</A>",
+" <A HREF=\"#sformat\">Format</A>",
+" <A HREF=\"#scolor\">Color</A>",
+" <A HREF=\"#print\">Print Panel</A>",
+" <A HREF=\"#popts\">Postscript Options</A>",
+" <A HREF=\"#pcolors\">Color Options</A>",
+" <A HREF=\"#pproc\">Processing Options</A>",
+" <A HREF=\"#pprinter\">Printer selection</A>",
+" <A HREF=\"#info\">Info Panel</A>",
+" <A HREF=\"#tileP\">Tile Panel</A>",
+" <A HREF=\"#coordsP\">Coords Panel</A>",
+"",
+" <A HREF=\"#tclshell\">Tcl Interactie Shell</A>",
+"</pre>",
+"<p>",
+"<hr>",
+"<h2><a name=#basic>Getting Started</a></h2>",
+"As a display server, XImtool is started as a separate process from client",
+"software such as IRAF. Once it is running it will accept ",
+"<a href=#client>client connections</a> simultaneously on fifo pipes, unix",
+"domain sockets, or inet sockets. A display client like the IRAF DISPLAY",
+"task makes a connection and sends the image across using an IIS protocol",
+"(other/different protocols may be supported in the future). Once the image",
+"is loaded in the display buffer it may be <a href=#cenhance>enhanced</a>,",
+"<a href=#save>saved to a disk file</a> in a number of different formats, or ",
+"<a href=#print>printed</a> as Encapsulated Postscript to a printer or disk file.",
+"<p>",
+"When run in standalone mode, images may be loaded on the ",
+"<a href=#comline>command line</a> or by using the <a href=#load>Load Panel</a>.",
+"This allows you to browse images and perform the same manipulations as if",
+"they had been displayed by a client.",
+"<hr>",
+"",
+"<h2><a name=#gui>GUI Overview</a></h2>",
+"<p>",
+"The GUI consists of a large image display window and a number of smaller",
+"pannels that control various specific functions such as image",
+"<a href=#load>Load</a>, <a href=#save>Save</a> and <a href=#print>Print</a>",
+"as well as a general purpose <a href=#control>Control Panel</a>. The main",
+"window menubar has several menu buttons to the left: the <i>Files</i> menu",
+"is used to load/save/print an image as well as quit the task. The <i>View</i>",
+"menu let's you select the image orientation, zoom, colormap or frame. The",
+"<i>Options</i> menu allows you to call up control panels, toggle markers",
+"or blinking etc. Some of this functionality is duplicated elsewhere in",
+"the GUI. The right side of the menubar contains command buttons to flip the",
+"image as well as buttons for frame selection and the help button.",
+"<p>",
+"For more detailed information on the operation of the control panels please",
+"see the on-line help (i.e. use the '?' button or Alt-h keystroke in the",
+"main image window).",
+"",
+"<h2><a name=#mouse>Mouse Operations</a></h2>",
+"Clicking and dragging MB1 (mouse button 1) in the main image",
+"window creates a rectangular region <a href=#markers>marker</a>, used",
+"to select a region of the image. If you do this accidentally and don't",
+"want the marker, put the pointer in the marker and type DELETE or",
+"BACKSPACE to delete the marker. With the pointer in the marker,",
+"MB3 will call up a <a href=#markmenu>marker menu</a> listing some things",
+" you can do with the marker, like zoom the outlined region. MB1 can be used",
+"to drag or resize the marker. <a href=#markers>See below</a> for more",
+"information on markers.",
+"<p>",
+"Clicking on MB2 in the main image window pans (one click) or zooms (two ",
+"clicks) the image. Further clicks cycle through the builtin zoom factors. ",
+"Moving the pointer to a new location and clicking moves the feature under ",
+"the pointer to the center of the display window. Holding down the Shift",
+"key while clicking MB2 will cause a full-screen crosshair cursor to appear",
+"until the button is released, this can be useful for fine positioning of the",
+"cursor.",
+"<p>",
+"MB3 is used to adjust the contrast and brightness of the displayed image.",
+"The position of the pointer within the display window determines the ",
+"contrast and brightness values. Click once to set the values corresponding",
+"to the pointer location, or click and drag to continuously adjust the display.",
+"<hr>",
+"",
+"<h2><a name=#keystroke>Keystroke Accelerators</a></h2>",
+" The following keystrokes are currently defined in the GUI:",
+"<pre>",
+" <b>Misc Functions</b> ",
+" <b>Ctrl-b </b><i>Previous (back) frame</i>",
+" <b>Ctrl-c </b><i>Center frame</i>",
+" <b>Ctrl-f </b><i>Forward frame</i>",
+" <b>Ctrl-i </b><i>Invert colormap</i>",
+" <b>Ctrl-m </b><i>Toggle magnifier</i>",
+" <b>Ctrl-n </b><i>Normalize</i>",
+" <b>Ctrl-p </b><i>Toggle panner</i>",
+" <b>Ctrl-r </b><i>Register</i>",
+" <b>Ctrl-s </b><i>Match LUT scaling</i>",
+" <b>Ctrl-t </b><i>Tile frames toggle</i>",
+" <b>Ctrl-u </b><i>Unzoom (zoom=1)</i>",
+" <b>Ctrl-x </b><i>Flip X</i>",
+" <b>Ctrl-y </b><i>Flip Y</i>",
+" ",
+" <b>Ctrl-= </b><i>Print using current setup</i>",
+" <b>Ctrl-< </b><i>Decrease blink rate (blink faster)</i>",
+" <b>Ctrl-> </b><i>Increase blink rate (blink slower)</i>",
+" <b>Ctrl-+ </b><i>Zoom in</i>",
+" <b>Ctrl-- </b><i>Zoom out</i>",
+" ",
+" <b>Alt-1 thru Alt-4 </b><i>Set frame to be displayed</i>",
+" <b>Ctrl-1 thru Ctrl9 </b><i>Set integer zoom factor</i>",
+" ",
+" <b>Ctrl-Alt-q </b><i>Quit</i>",
+" <b>Ctrl-Alt-f </b><i>Fitframe</i>",
+" ",
+" <b>Panel Toggles</b> ",
+" <b>Alt-b </b><i>Blink frames</i>",
+" <b>Alt-c </b><i>Control panel</i>",
+" <b>Alt-h </b><i>Help popup</i>",
+" <b>Alt-i </b><i>Info box popup</i>",
+" <b>Alt-l </b><i>Load file popup</i>",
+" <b>Alt-p </b><i>Print popup</i>",
+" <b>Alt-s </b><i>Save popup</i>",
+" <b>Alt-t </b><i>TclShell popup</i>",
+" ",
+" <b>Cursor Positioning</b> ",
+" <b>Ctrl-h / Ctrl-Left </b><i>Move cursor one pixel left</i>",
+" <b>Ctrl-j / Ctrl-Down </b><i>Move cursor one pixel down</i>",
+" <b>Ctrl-k / Ctrl-Up </b><i>Move cursor one pixel up</i>",
+" <b>Ctrl-l / Ctrl-Right </b><i>Move cursor one pixel right</i>",
+" ",
+" <b>Shift-Ctrl-h </b><i>Move cursor ten pixels left</i>",
+" <b>Shift-Ctrl-Left </b><i>Move cursor ten pixels left</i>",
+" <b>Shift-Ctrl-j </b><i>Move cursor ten pixels down</i>",
+" <b>Shift-Ctrl-Down </b><i>Move cursor ten pixels down</i>",
+" <b>Shift-Ctrl-k </b><i>Move cursor ten pixels up</i>",
+" <b>Shift-Ctrl-Up </b><i>Move cursor ten pixels up</i>",
+" <b>Shift-Ctrl-l </b><i>Move cursor ten pixels right</i>",
+" <b>Shift-Ctrl-Right </b><i>Move cursor ten pixels right</i>",
+" ",
+" <b>Auto-Registration</b> ",
+" <b>Ctrl-a </b><i>Toggle auto-registration</i>",
+" <b>Ctrl-o </b><i>Set frame offset</i>",
+" ",
+" <b>Frame Positioning</b> ",
+" <b>Ctrl-Left </b><i>Shift one full frame left</i>",
+" <b>Ctrl-Down </b><i>Shift one full frame down</i>",
+" <b>Ctrl-Up </b><i>Shift one full frame up</i>",
+" <b>Ctrl-Right </b><i>Shift one full frame right</i>",
+" ",
+" <b>Ctrl-Alt-Left </b><i>Shift one half frame left</i>",
+" <b>Ctrl-Alt-Down </b><i>Shift one half frame down</i>",
+" <b>Ctrl-Alt-Up </b><i>Shift one half frame up</i>",
+" <b>Ctrl-Alt-Right </b><i>Shift one half frame right</i>",
+" ",
+" <b>Peak Up Centroiding</b> ",
+" <b>Ctrl-[ </b><i>Decrease centroiding box size</i>",
+" <b>Ctrl-] </b><i>Increase centroiding box size</i>",
+" <b>Ctrl-0 (zero) </b><i>Centroid/find local maximum</i>",
+" <b>Alt-Ctrl-0 (zero) </b><i>Find local minimum</i>",
+" ",
+" <b>Mouse Button Events</b> ",
+" <b>Shift-Btn1Down </b><i>Turn on magnifier</i>",
+" <b>Shift-Btn1Up </b><i>Turn off magnifier</i>",
+" <b>Shift-Btn2Down </b><i>Turn on crosshair cursor</i>",
+" <b>Shift-Btn2Up </b><i>Turn off crosshair cursor</i>",
+" ",
+" <b>Btn1Down </b><i>Create a Marker</i>",
+" <b>Btn1Motion </b><i>Resize marker being created</i>",
+" <b>Btn2Down </b><i>Zoom/center on cursor position</i>",
+" <b>Btn3Down/Motion </b><i>Brightness/contrast scale the image</i>",
+" ",
+" <b>Ctrl-Btn1Down </b><i>Create Ruler Marker</i>",
+" <b>Ctrl-Btn1Motion </b><i>Resize Ruler Marker being created</i>",
+" <b>Ctrl-Btn1Up </b><i>Destroy Ruler Marker</i>",
+" ",
+" <b>Alt-Motion </b><i>Freeze cursor readout</i>",
+"</pre>",
+"<hr>",
+"",
+"<h2><a name=#client>Client Connections</a></h2>",
+"Ximtool allows clients to connect in any of the following ways:",
+"",
+"<dl>",
+"<dt><b>fifo pipes</b></dt>",
+" <dd>The traditional approach. The default, global /dev/imt1[io] pipes may ",
+" be used, or a private set of fifos.</dd>",
+"<dt><b>tcp/ip socket</b></dt>",
+" <dd>Clients connect via a tcp/ip socket. There is a default port, or",
+" a custom port may be specified. This permits connecting to the",
+" server over a remote network connection anywhere on the Internet.</dd>",
+"<dt><b>unix domain socket</b></dt>",
+" <dd>Like a tcp/ip socket, but limited to a single host system. Usually ",
+" faster than a tcp/ip socket, and comparable to a fifo. By default",
+" each user gets their own unix domain socket, so this option allows",
+" multiple users to run ximtools on the same host without having to",
+" customize things.</dd>",
+"</dl>",
+"",
+"By default ximtool listens simultaneously for client connctions on all three",
+"types of ports. Clients communicate with XImtool using the IIS protocol,",
+"other protocols may be supported in the future.",
+"<hr>",
+"",
+"<h2><a name=#framebuf>Frame Buffers</a></h2>",
+"XImtool starts up using default frame buffer size of 512x512 pixels, two",
+"(of 16 possible) frames will be created. When loading disk images (i.e.",
+"run in standalone mode) the frame buffer configuration file will be",
+"searched for a defined frame buffer that is the same size or larger than",
+"the current image, if no suitable buffer can be found a custom frame",
+"buffer the same size as the image will be created in an unused portion of",
+"the configuration table. When used as a display server the frame buffer",
+"configuration number is passed in by the client and loaded explicitly even",
+"if it means clipping the image. If a new frame buffer is a different size",
+"than previously defined frames, all available frames will be initialized",
+"and cleared prior to the display. The default frame buffer configuration",
+"file is <b>/usr/local/lib/imtoolrc</b>, this can be overridden by defining a",
+"<b>IMTOOLRC</b> environment variable naming the file to be used, by creating a",
+"<b>.imtoolrc</b> file in your home directory, or a new file may be specified",
+"using the <b>-imtoolrc</b> command line flag or <b>imtoolrc</b> application",
+"resource.",
+"<p>",
+"The format of the frame buffer configuration file is",
+"<pre>",
+" configno nframes width height [extra fields]",
+"",
+"e.g. ",
+" 1 2 512 512",
+" 2 2 800 800",
+" 3 1 1024 1024 # comment",
+"</pre>",
+"At most 128 frame buffer sizes may be defined, each configuration may",
+"define up to 16 frames, configuration numbers need not be sequential.",
+"",
+"<h3><a name=#frame16>Support for 16 Display Frames</a></h3>",
+"<p>",
+"As part of the extensive GUI changes with the V1.3 release, support for",
+"the full 16 frames allowed by the IIS protocol is now available. IRAF",
+"V2.11.4 or later client tasks (and CDL library) are required to take",
+"advantage of this frames. All changes are backwards compatible, older",
+"versions of IRAF will continue to work but cannot access more than the",
+"original four frames. The new DISPLAY task will automatically sense",
+"whether the display server being used supports 16 frames or the original 4",
+"and adjust the 'frame' parameter maximum accordingly. The changes are",
+"fully backwards compatible for other servers.",
+"<p>",
+"More frames are possible if needed but will require further changes to the",
+"client IRAF code to be effective. Allowing creation of more than 16",
+"frames by the Load panel can be done independently but would also require",
+"numerous code change to XImtool. Please contact site support if there is",
+"a need for this, or for workaround suggestions depending on your",
+"application.",
+"",
+"",
+"<h2><a name=#comline>Command-line Options</a></h2>",
+" The following command-line options are currently recognized:",
+"<pre>",
+" <b>-basePixel</b> &lt;num&gt Base colormap pixel number",
+" <b>-cmap1</b> &lt;file&gt User cmap 1 ",
+" <b>-cmap2</b> &lt;file&gt User cmap 2 ",
+" <b>-cmapDir1</b> &lt;dir&gt User cmapDir 1 ",
+" <b>-cmapDir1</b> &lt;dir&gt User cmapDir 2 ",
+" <b>-cmapInitialize</b> &lt;bool&gt Initialize colormap at startup",
+" <b>-cmapName</b> &lt;name&gt Private colormap name ",
+" <b>-config</b> &lt;num&gt Initial config number",
+" <b>-defgui</b> Print default GUI to stdout",
+" <b>-displayPanner</b> &lt;bool&gt Display panner box",
+" <b>-displayCoords</b> &lt;bool&gt Display wcs coords box",
+" <b>-fifo</b> &lt;pipe&gt Fifo pipe to use",
+" <b>-fifo_only</b> Use fifo pipes only ",
+" <b>-gui</b> &lt;file&gt GUI file to use ",
+" <b>-help</b> Print command-line summary ",
+" <b>-imtoolrc</b> &lt;file&gt Frame buffer configuration file ",
+" <b>-inet_only</b> Use inet sockets only ",
+" <b>-invert</b> Invert colormap on startup?",
+" <b>-ismdev</b> ISM socket template",
+" <b>-maxColors</b> &lt;num&gt Number of colors ",
+" <b>-memModel</b> &lt;type&gt Memory model (fast,small,beNiceToServer)",
+" <b>-nframes</b> &lt;num&gt Number of frames at startup",
+" <b>-port</b> &lt;num&gt Inet port to use",
+" <b>-printConfig</b> &lt;file&gt Printer configuration file ",
+" <b>-port_only</b> Use inet sockets only ",
+" <b>-tile</b> Tile frames on startup?",
+" <b>-unix</b> &lt;name&gt Unix socket to use",
+" <b>-unix_only</b> Use unix sockets only ",
+" &lt;<b>file</b>&gt File to load on startup",
+"</pre>",
+"<hr>",
+"<h2><a name=#markers>Markers</a></h2>",
+"<h3><a name=#panner>Panner Marker</a></h3>",
+"<p>",
+"The panner window always displays the full frame buffer. Try setting the",
+"frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and",
+"then displaying a square image (e.g. dev$pix) and the panner will show you",
+"exactly where the image has been loaded into the frame.",
+"<p>",
+"The panner window uses two markers, one for the window border and one to",
+"mark the displayed region of the frame. Most of the usual marker keystrokes",
+"mentioned <a href=#genmark>below</a> apply to these markers as well, e.g. ",
+"you can use MB1 to reposition on the panner window within the main image ",
+"display window, or to drag the region marker within the panner (pan the ",
+"image). Resizing the region marker zooms the image; this is a non-aspect ",
+"constrained zoom. The panner window itself can be resized by dragging a ",
+"corner with MB1. Typing delete or backspace anywhere in the panner window ",
+"deletes the panner.",
+"<p>",
+"A special case is MB2. Hitting MB2 anywhere in the panner window pans the",
+"image to that point. This is analogous to typing MB2 in the main display",
+"window to pan the image.",
+"<p>",
+"The panner marker can be disabled by defining the <i>displayPanner</i>",
+"GUI resource, its size and location can be controlled using the",
+"<i>pannerArea</i> and <i>pannerGeom</i> GUI resources respectively.",
+"",
+"<h3><a name=#magnifier>Magnifier Marker</a></h3>",
+"The magnifier marker can be used to zoom in on a small area around the cursor.",
+"It will be updated as the cursor moves but only for small motions (either",
+"mouse movement or with the cursor movement keystrokes) to minimize the",
+"impact on the system. The zoom factor is expressed as some fraction of the",
+"size of the magnifier marker itself. The default zoom is 4, i.e. the area",
+"in the marker represents and area in the image that's one-fourth the size",
+"of the marker. Other zoom factors may be selected using the popup menu ",
+"created by hitting MB1 in the marker.",
+"<p>",
+"By default the magnifier marker is not visible, to toggle it select the",
+"<i>Magnifier</i> option from the <i>Options</i> menubar button. Alternatively,",
+"for just a quick look holding down the Shift Key and MB2 Button will display",
+"the marker until the button is released.",
+"<p>",
+"The magnifier marker can be disabled by defining the <i>displayMagnifier</i>",
+"GUI resource, its size and location can be controlled using the",
+"<i>magnifierArea</i>and <i>magnifierGeom</i> GUI resources respectively.",
+"",
+"<h3><a name=#coords>Coords Box Marker</a></h3>",
+"<p>",
+"Ximtool provides a limited notion of world coordinates, allowing frame",
+"buffer pixel coordinates and pixel values to be converted to some arbitrary",
+"client defined coordinate system. The coords box feature is used to display",
+"these world coordinates as the pointer is moved about in the image window.",
+"<p>",
+"The quantities displayed in the coords box are X, Y, and Z: the X,Y world",
+"coordinates of the pointer, and Z, the world equivalent of the pixel value",
+"under the pointer. All coordinate systems are linear. The precision of a",
+"displayed quantity is limited by the range of values of the associated raw",
+"frame buffer value. For example, if the display window is 512x512 only 512",
+"coordinate values are possible in either axis (the positional precision can",
+"be increased however by zooming the image). More seriously, at most about",
+"200 pixel values can be displayed since this is the limit on the range of",
+"pixel values loaded into the frame buffer. If a display pixel is saturated",
+"a \"+\" will be displayed after the intensity value.",
+"<p>",
+"The coords box is a marker (text marker) and it can be moved and resized",
+"with the pointer like any other marker.",
+"",
+"<h3><a name=#rulers>Ruler Markers</a></h3>",
+"<p>",
+"Holding down the Ctrl key and the Left-Mouse-Button while moving",
+"the mouse will drag out a \"ruler marker\" measuring the distance from the",
+"initial point to the current mouse position. Releasing the Ctrl key before",
+"lifting the mouse button will leave the marker on the display, otherwise",
+"it will be erased automatically once the mouse button is released. Any",
+"number of ruler markers can be created in the frame.",
+"<p>",
+"Distances are measured by default in image logical pixels however",
+"the Right-Mouse-Button can be used inside the marker to popup a menu of",
+"options:",
+"",
+"<dl>",
+"<dt><b>Sticky</b></dt>",
+" <dd>By default rulers are destroyed whenever the display changes due",
+" to a pan, zoom, flip, or frame change. This option will make the",
+" ruler \"sticky\" so it will not be erased, subsequent use of the menu",
+" to shows this option to be \"UnSticky\" to remove this feature.</dd>",
+"<dt><b>Units</b></dt>",
+" <dd>Sub-menu to select the units of the display. If the ISM is enabled",
+" and a WCS is present in the image and selected as one of the readout",
+" options, distances may also be read out in units of arcseconds,",
+" arcminutes, or degrees instead of the default logical pixels. All",
+" markers created after the unit change will readout in the new units",
+" as their default. </dd>",
+"<dt><b>Color</b></dt>",
+" <dd>Select the color of the marker.</dd>",
+"<dt><b>Draw into Frame</b></dt>",
+" <dd>(<i>Not Yet Implemented</i>) Draw the marker as overlay graphics",
+" in the frame. Doing so will retain the marker when printing a",
+" hardcopy of the display.</dd>",
+"<dt><b>Destroy</b></dt>",
+" <dd>Destroy the marker.</dd>",
+"</dl>",
+"",
+"<p>",
+"The marker can also be destroyed by hitting the Delete or Backspace key",
+"while the cursor is in the marker. There is presently no way to move the",
+"marker to a new position in the frame.",
+"",
+"",
+"<h3><a name=#genmark>General Markers</a></h3>",
+"Although ximtool doesn't do much with markers currently, they are a general",
+"feature of the Gterm widget and are used more extensively in other programs",
+"(e.g. the prototype IRAF science GUI applications). Ximtool uses markers",
+"for the marker zoom feature discussed above, and also for the ",
+"<a href=#panner>panner</a> and the <a href=#coords>coords box</a>. All ",
+"markers share some of the same characteristics, so it is worthwhile learning",
+"basic marker manipulation keystrokes.",
+"",
+"<ul>",
+"<li> MB1 anywhere inside a marker may be used to drag the marker.",
+"<li> MB1 near a marker corner or edge, depending on the type of marker,",
+" resizes the marker.",
+"<li> Shift-MB1 on the corner of most markers will rotate the marker.",
+"<li> Markers stack, if you have several markers and you put one on top",
+" of the other. The active marker is highlighted to tell you which of the ",
+" stacked markers is active. If the markers overlap, this will be marker ",
+" \"on top\" in the stacking order.",
+"<li> MB2 in the body of a marker \"lowers\" the marker, i.e. moves it to",
+" the bottom of the stacking order.",
+"<li> Delete or backspace in a marker deletes it.",
+"<li> Markers have their own translation resources and so the default",
+" <a href=#keystroke>keystroke commands</a> will not be recognized when the",
+" cursor is in a marker.",
+"</ul>",
+"",
+"For example, try placing the pointer anywhere in the coords box, then press",
+"MB1 and hold it down, and drag the coords box marker somewhere else on the",
+"screen. You can also resize the coords box by dragging a corner, or delete",
+"it with the delete or backspace key. (The <b>Initialize</b> button will get",
+"the original coords box back if you delete it).",
+"<p>",
+"<h4><a name=#markmenu>Marker Menu Options</a></h4>",
+"<ul>",
+"<li> MB3 (mouse button 3) calls up the marker menu (by default).",
+"<li> <b>Zoom</b> does an equal aspect zoom of the region outlined by the marker.",
+" In this way you can mark a region of the image and zoom it up.",
+"<li> <b>Fill</b> exactly zooms the area outlined by the marker, making it fill",
+" the display window. Since the marker is not likely to be exactly square, ",
+" the aspect ratio of the resultant image will not be unitary.",
+"<li> <b>Print</b> prints the region outlined by the marker to the printer or",
+" file currently configured by the <a href=#print>Print Panel</a>.",
+"<li> <b>Save</b> saves the region outlined by the marker to the file currently",
+" configured by the <a href=#save>Save Panel</a>.",
+"<li> <b>Info</b> prints a description of the marked region. The text is ",
+" printed in the <a href=#info>Info Panel</a>.",
+"<li> <b>Unrotate</b> unrotates a rotated marker.",
+"<li> <b>Color</b> is a menu of possible marker colors.",
+"<li> <b>Type</b> is a menu of possible marker types. This is still a little",
+" buggy and it isn't very useful, but you can use it to play with different ",
+" types of markers.",
+"<li> <b>Destroy</b> destroys the marker. You can also hit the delete or ",
+" backspace key in a marker to destroy the marker.",
+"</ul>",
+"",
+"<hr>",
+"<h2><a name=#wcspix>Real-Time WCS/Pixel Readout</a></h2>",
+"XImtool now has the ability to display the actual pixel value of an image",
+"(as well as the scaled value previously shown) and the cursor position in",
+"image WCS values (e.g. RA/DEC, GLAT/GLONG, etc). This is done using an",
+"external task (the 'ism_wcspix.e' binary in the new distribution) to",
+"access the image and pass the coordinate/pixel information to the GUI.",
+"<p>",
+"WCS readout is enabled by default but can be toggled or reset using the",
+"<i>WCS/Pix</i> button on the Coords tab in the control panel or the <i>ISM</i>",
+"toggle on the alt-gui menubar. When enabled, images currently in the",
+"server or subsequently displayed will be passed to the external process",
+"where they are cached for access. Cursor movements generate an event that",
+"maps the current frame buffer position to a position in the cached image.",
+"The ISM (ISM is Image Support Module) task then reads the image to",
+"determine the pixel value (or a small table of values around the current",
+"position), and computes one or more coordinates from the image position.",
+"The ISM task also has access to the associated BPM images and can",
+"optionally return bad pixel information during the cursor readout.",
+"<p>",
+"By default, the logical and world image coordinates are displayed to both",
+"the Coords panel readout as well as the main display window wcsbox text",
+"marker. Alternate coordinate systems (e.g. transformation of equatorial",
+"to galactic coordinates or some other sky system, physical coords,",
+"amplifier coords, etc) can be selected for display by hitting the",
+"<i>Options</i> toggle on the Coords panel. Available coordinate systems are",
+"chosen using the <i>Type</i> menu on the panel, the readout format",
+"(sexigesimal, degrees, etc) using the <i>Format</i> menu, and the display to",
+"the current panel or main image window using the remaining toggles for",
+"each WCS. Up to four systems may be displayed at one time, the coordinate",
+"panel and wcsbox marker will adjust size automatically depending on the",
+"display.",
+"<p>",
+"By selecting the <i>BPM Data</i> toggle from the Coords.Options panel ximtool",
+"is able to flag pixels in images with an associated bad pixel mask. This",
+"bad pixel mask is currently assumed to be named in the image header \"BPM\"",
+"keyword by convention. If the cursor passes over a bad pixel in the mask,",
+"the Coords bpm display as well as the main window wcsbox will change to a",
+"red background color. Only the Coords display will show the value, any",
+"non-zero value will be flagged with the color change.",
+"<p>",
+"With the ISM enabled the Compass indicator will display a set of arrows",
+"showing North-East if a WCS is available, otherwise just the current X-Y",
+"axes are shown. The pixel table will display actual pixel values from the",
+"image, with the ISM off the pixel table displays the scaled image values",
+"from the frame buffer.",
+"",
+"",
+"<hr>",
+"<h2><a name=#curfreeze>Freezing Cursor Readout</a></h2>",
+"<p>",
+"Holding down the Alt key will now freeze the cursor display readout",
+"and draw crosshairs on the screen at the last position. This can be used",
+"for example to position the cursor but then allow the cursor to be moved to",
+"another window (to enter text, start a program, whatever) without losing",
+"the position information displayed on the screen.",
+"",
+"",
+"",
+"<hr>",
+"<h2><a name=#autoreg>Auto-Registration of Images</a></h2>",
+"<p>",
+"The auto-register feature allows you specify a registration of two or",
+"more display frames with an offset. When enabled, this registration is",
+"maintained for all frames in the list if any one of them is panned or",
+"zoomed to a new location in the frame buffer.",
+"<p>",
+"For example, to use this feature do the following:",
+"",
+"<ul>",
+"<li> Enable Auto-Register (either on the Control Panel or the toolbar on the",
+" alt-gui) and pan/zoom to some star of interest.",
+"<li> Use Mouse-Button-2 to center the star in the frame.",
+"<li> Cycle through the frames and you may see a small shift of the star. For",
+" each frame, position the cursor on the star and type <b>Ctrl-o</b> to",
+" offset it to the center. Repeat as necessary. Small corrections will be",
+" cumulatively added so you can use the <b>Ctrl-0</b> (Ctrl-zero) peak-up",
+" command to centroid each object in the frame before the <b>Ctrl-o</b>",
+" offset.",
+"<li> Pan around the image in one display frame, then switch frames and the new",
+" frame should also be panned to the new image with the proper offset.",
+"<li> A <b>Ctrl-a</b> command will toggle the feature, offsets are only allowed",
+" when autoreg is enabled.",
+"</ul>",
+"",
+"Hitting <b>Register</b> will zero the offsets, as will toggling the",
+"auto-register function. What you should see is the object centered in the",
+"frame and as you blink through it remains registered but the panner box",
+"marker is moving around. Drag the panner around and all frames still",
+"remain registered with the given offset. The control/info panels now",
+"display what the offset is for each frame.",
+"<p>",
+"The register display list is shared with the blink list and can be set",
+"using the Display control panel. By default all frames are included in",
+"the list. For accessing more than four frames, use the box icon in the",
+"Blink/Register box of the Display control panel to bring up a new window",
+"with access to all 16 available frames.",
+"",
+"",
+"<hr>",
+"<h2><a name=#cutgraphs>Image Cut Graphics</a></h2>",
+"<p>",
+"XImtool now has the ability to display horizontal and vertical",
+"cut-graphs of the display, these appear as \"flip-out\" panels that appear",
+"on the bottom and right side of the main display window and are controlled",
+"by the small <b>H</b> and <b>V</b> buttons in the lower right corner of",
+"the window. When both panels are enabled the corner area of the display",
+"also shows an options panel for the graphs. Current options are:",
+"",
+"<dl>",
+"<dt><b>Better Speed</b></dt>",
+" <dd>Draw the graphics so they update at the fastest possible rate.",
+" This is done by subsampling pixels to produce a smoother graph",
+" but without sacrificing too much accuracy.</dd>",
+"<dt><b>Better Accuracy</b></dt>",
+" <dd>Draw the graphics using all screen pixels to produce the most",
+" accurate display. On fast modern machines this can be enabled with",
+" no apparent loss of speed, however older machines may wish to use",
+" this only occassionally to limit any lag in the cursor tracking.</dd>",
+"<dt><b>Image Pixels</b></dt>",
+" <dd>(<i>Not Yet Implemented</i>)<dd>",
+"<dt><b>Jump Cursor</b></dt>",
+" <dd>If enabled, large jumps of the cursor do not update the graphics",
+" display, small movements around an object of interest will update",
+" the display continuously.</dd>",
+"<dt><b>Smooth Cursor</b></dt>",
+" <dd>If enabled, all cursor movements cause the display to be updated.",
+" This is another option that can be set safely on faster machines",
+" but will cause a delay on slower ones.</dd>",
+"<dt><b>Graphics Cursors</b></dt>",
+" <dd>If enabled, the graphics cursors in either of the plots are active",
+" and can be used to update the cursor readout on the main image window",
+" and the complementary cut-graph. This can be used for example to",
+" freeze the cursor in the main display using the Alt key (see above),",
+" then moving to one of the graphics windows to perform cut graphs in",
+" only one axis.</dd>",
+"</dl>",
+"",
+"Graphs are (currently) drawn using only the scaled display values ",
+"to avoid complications of accessing multiple images in a mosaic display. Both",
+"plots are labeled using the frame z1/z2 values and contain cursor indicators",
+"which update contuously.",
+"",
+"",
+"<hr>",
+"<h2><a name=#peakup>Peak-Up Cursor Centroid Positioning</a></h2>",
+"<p>",
+"Several new keystroke commands are available to reposition the",
+"cursor to a centroid or min/max pixel value within a bounding box of the",
+"cursor position, allowing you to approximate the position with the mouse",
+"and fine tune it quickly before typing the application keystroke command.",
+"The initial box size is controlled with a <b>centerBoxSize</b> GUI resource",
+"(defaults to 5 pixels) but can be adjusted interactively using the",
+"<b>Ctrl-[</b> and <b>Ctrl-]</b> commands to descrease/increase the box",
+"size respectively. A marker will flash briefly to indicate the box size.",
+"<p>",
+"The <b>Ctrl-0</b> (zero) key finds either a centroid or the local maximum",
+"pixel value within this box region, <b>Alt-Ctrl-0</i> (zero) will find the",
+"local minimum value. In either case the cursor is reposition to the computed",
+"value. The default peak-up action is to find the centroid position in the",
+"box however this can be changed to find the max pixel by selection the",
+"\"<a href=#ccentroid>Centroid Peaks</a>\" option from the main Display",
+"control panel or by resetting the <i>peakCentroid</i> GUI resource",
+"(defaults to True). ",
+"<p>",
+"Centroiding is done using only the scaled screen pixel values and",
+"only pixels above the mean value within the box are used. It works best",
+"if the box size is set appropriately, the centroid position may appear to",
+"drift if the box is too large and includes too many background pixels.",
+"",
+"",
+"<hr>",
+"<h2><a name=#control>Integrated Control Panel</a></h2>",
+"",
+"<h3><a name=#display>Display Panel</a></h3>",
+"XImtool has a control panel which can be used to exercise most of the",
+"capabilities the program has for image display. The control panel can be",
+"accessed either via the <b>Options</b> menu from the main window menubar, or",
+"by",
+"pressing the leftmost button in the row of buttons at the upper right side",
+"of the display in the standard GUI (in the alternate GUI the ",
+"<i>Control Bar</i> accessed by the rightmost button on the menubar",
+"provides widgets for selecting the desired control panel).",
+"<p>",
+"The separate windows previously used for Control/Print/Load/Save/etc",
+"have now been integrated into a single window with the appropriate control",
+"panel selectable with a Tab widget. There are also new Tab panels for",
+"setting the frame tile configuration (see below), more detailed information",
+"on the server status, and selecting the WCS readout options (see below).",
+"",
+"<h3><a name=#cview>View Controls</a></h3>",
+"<p> ",
+"The <b>Frame</b> box will list only the frame buffers you currently have",
+"defined. Currently, the only way to destroy a frame buffer is to change the",
+"frame buffer configuration, new frame buffers (up to 4) will be created",
+"automatically if requested by the client.",
+"<p> ",
+"The <b>text display window</b> gives the field X,Y center, X,Y scale ",
+"factors, and the X,Y zoom factors. The scale factor and the zoom factor ",
+"will be the same unless autoscale is enabled. The scale is in units of ",
+"display pixels per frame buffer pixel, and is an absolute measure (it doesn't",
+"matter whether or not <a href=#cautoscale>autoscale</a> is enabled). Zoom is",
+"relative to the autoscale factor, which is 1.0 if autoscaling is disabled. ",
+"This information is also presented in the <a href=#info>Info panel</a>.",
+"<p> ",
+"The numbers in the <b>Zoom</b> box are zoom factors. Blue numbers zoom,",
+"red numbers dezoom. <b>Zoom In</b> and <b>Zoom Out</b> may be used to go to",
+"larger or smaller zoom factors, e.g. \"Ctrl-5\" followed by \"Zoom In\" will get you",
+"to zoom factor 10. Specific zoom factors may also be accessed directly as ",
+"Control <a href=#keystrokes>keystrokes</a>, e.g. Ctrl-5 will set zoom factor 5.",
+"<b>Center</b> centers the field. <b>Toggle Zoom</b> toggles between the ",
+"current zoom/center values, and the unzoomed image.",
+"<p> ",
+"<b>Aspect</b> recomputes the view so that the aspect ratio is 1.0. ",
+"Aspect also integerizes the zoom factor (use the version in the View menu ",
+"if you don't want integerization).",
+"<p> ",
+"<b>Fit Frame</b> makes the display window the same size as the frame ",
+"buffer. Note that <a href=#cautoscale>autoscale</a> has much the same effect,",
+"and allows you to resize the display window to any size you want, or view ",
+"images to large to fit on the screen.",
+"",
+"<h3><a name=#cenhance>Enhancement Controls</a></h3>",
+"",
+"<p> ",
+"At the top is a scrolled list of all the <a href=#cbltin>available ",
+"colormaps</a>. Click on the one you want to load it. You can add your own",
+"<a href=#cuser>colormaps</a> to this list.",
+"<p> ",
+"The two sliders adjust the <b>contrast</b> (upper slider) and ",
+"<b>brightness</b> (lower slider) of the display. The <b>Invert</b> button ",
+"inverts the colormap (multiples the contrast by -1.0). Note that due to the",
+"use of the private colormap the sliders are a bit sluggish when dragged to ",
+"window the display. If this is annoying, using MB3 in the display window is",
+"faster.",
+"<p>",
+"The <b>Normalize</b> button (on the bottom of the control panel) will ",
+"normalize the enhancement, i.e. set the contrast and brightness to the default",
+"one-to-one values (1.0, 0.5). This is the preferred setting for many of the",
+"pseudocolor colortables and for private colormaps loaded from disk images.",
+"",
+"<h3><a name=#cblink>Blink Controls</a></h3>",
+"<p>",
+"<b>Blink frames</b> is the list of frames to be blinked. When blink mode is",
+"in effect ximtool just cycles through these frames endlessly, pausing",
+"\"blink rate\" seconds between each frame. The same frame can be entered in",
+"the list more than once. To program an arbitrary list of blink frames,",
+"hit the Reset button and click on each blink frame button until it is set",
+"to the desired frame number. The main control panel allows only the",
+"original four frames to be specified in the blink list, however access to",
+"the full list of 16 frames now supported is gained using the box icon",
+"button next the the <b>Reset</b> button to bring up a new control panel.",
+"<p>",
+"The <b>Blink Rate</b> can be adjusted as slow or as fast as you want using",
+"the arrow buttons. If you set the blink rate small enough it will go to",
+"zero, enabling single step mode (see below).",
+"<p>",
+"The <b>Register</b> button registers all the blink frames with the current",
+"display frame. Frames not in the blink list are not affected.",
+"<p>",
+"The <b>Match LUTs</b> button sets the enhancement of all blink frames to",
+"the same values as the display frame. Frames not in the blink list are not",
+"affected.",
+"<p>",
+"The <b>Blink</b> button turns blink on and off. When the blink rate is set",
+"to zero the Blink button will single step through the blink frames, one",
+"frame per button press.",
+"<p>",
+"<b>NOTE:</b> You can blink no matter what ximtool options are in effect,",
+"but many of these will slow blink down. To get the fastest blink you may",
+"want to turn off the panner and coords box, and match the LUTs of all the",
+"blink frames. All the ximtool controls are fully active during blink",
+"mode, plus you can load frames etc.",
+"",
+"",
+"<h3><a name=#copts>Options:</a></h3>",
+"<dl>",
+"<dt><b><a name=#cpanner>Panner</a></b></dt>",
+" <dd>Toggles the display of the Panner marker.</dd>",
+"<dt><b><a name=#cmagnifier>Magnifier</a></b></dt>",
+" <dd>Toggles the display of the magnifier marker.</dd>",
+"<dt><b><a name=#ccoords>Coords Box</a></b></dt>",
+" <dd>Toggles the display of the WCS Coords Box marker.</dd>",
+"<dt><b><a name=#cautoscale>Autoscale</a></b></dt>",
+" <dd>If autoscale is enabled then at zoom=1, the frame buffer will",
+" be automatically scaled to fit within the display window. With",
+" autoscale disabled (the default), the image scale is more",
+" predictable, but the image may be clipped by the display window,",
+" or may not fill the display window.</dd>",
+"<dt><b><a name=#cantialias>Antialias</a></b></dt>",
+" <dd>When dezooming an image, i.e., displaying a large image in a",
+" smaller display window, antialiasing causes all the data to be used",
+" to compute the displayed image. If antialiasing is disabled then",
+" image is subsampled to compute the displayed image. Antialiasing",
+" can prevent subsampling from omitting image features that don't",
+" fall in the sample grid, but it is significantly slower than",
+" dezooming via subsampling. The default is no antialising. </dd>",
+"<dt><b><a name=#ctile>Tile Frames</a></b></dt>",
+" <dd>The default display mode is to view one frame at a time. In tile",
+" frames mode, 2 or 4 frames may be viewed simultaneously in the",
+" display window. All the usual operations (zoom and pan, colortable",
+" enhancement, cursor readback, etc.) still work for each frame even",
+" when in tile frames mode. </dd>",
+"<dt><b><a name=#cwarnings>Warnings</a></b></dt>",
+" <dd>The warnings options toggles whether you see warning dialog boxes",
+" in situations like overwriting an existing file, clearing the frame",
+" buffer, etc.</dd>",
+"<dt><b><a name=#ccentroid>Centroid Peaks</a></b></dt>",
+" <dd>If enabled, the <b>Ctrl-0</b> keystroke will reposition the cursor",
+" to the computed centroid of the centroiding box, otherwise the cursor",
+" is repositioned to the local maximum value within the box.</dd>",
+"</dl>",
+"",
+"<h3><a name=#ccmap>Colormap Selection</a></h3>",
+"By default XImtool will display images using either a grayscale colormap",
+"if loaded by a client, or a private colormap when loading an image from",
+"disk that contains a colormap. Each frame defines its own colormap so",
+"you can define different colormaps or enhancements for each frame, they",
+"will change automatically as you cycle through the frames.",
+"",
+"<h4><a name=#cbltin>Builtin Colormaps</a></h4>",
+"Once loaded, the colormap may either be changed using the builtin colormap",
+"menu under the <b>View</b> menu button on the main window, or from the",
+"<a href=#cenhance>Enhancement</a> box on the <a href=#control>control panel</a>. Ximtool has about a dozen colormap",
+"options builtin, other <a href=#cuser>user-defined colormaps</a> may ",
+"optionally be loaded.",
+"",
+"<h4><a name=#cuser>User-defined Colormaps</a></h4>",
+"The cmap[12] and cmapDir[12] resources (or <a href=#comline>command line",
+"arguments</a> are used to tell ximtool which specific colormaps to make",
+"available or where to look for colortables respectively. The colortables",
+"are loaded when ximtool starts up, or when it is reinitialized (e.g. by",
+"pressing the <b>Initialize</b> button in the <a href=#control>control ",
+"panel</a>). Ximtool will ignore any files in the colormap directory",
+"which do not look like colortables. New colortables will also be added",
+"for each images loaded from disk.",
+"<p>",
+"The format of a user lookup table is very simple: each row defines one",
+"colortable entry, and consists of three columns defining the red, green,",
+"and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).",
+"<pre>",
+" R G B",
+" R G B",
+" (etc.)",
+"</pre>",
+"Blank lines and comment lines (# ...) are ignored.",
+"<p>",
+"Usually 256 rows are provided, but the number may actually be anything in",
+"the range 1 to 256. Ximtool will interpolate the table as necessary to",
+"compute the colortable values used in Ximtool. Ximtool uses at most 201",
+"colors to render pixel data, so it is usually necessary to interpolate the",
+"table when it is loaded.",
+"<p>",
+"The name of the colortable as it will appear in the Ximtool control panel",
+"is the root name of the file, e.g., if the file is \"rainbow.lut\" the ",
+"colortable name will be \"rainbow\". Lower case names are suggested to avoid",
+"name collisions with the builtin colortables. Private colormaps for disk",
+"images will be have the same name as the image loaded. If the same colortable",
+"file appears in multiple user colortable directories, the first one will be",
+"used.",
+"<p>",
+"The directory \"luts\" in the ximtool source directory contains a sample set",
+"of colortable files. This can be installed as /usr/local/lib/imtoolcmap",
+"when ximtool is installed.",
+"",
+"<hr>",
+"<h2><a name=#load>Load Panel</a></h2>",
+"The Load Panel allows you load images from disk directly to the frame",
+"buffer, this is analogous to loading an image on the command line except",
+"that browsing is possible. At present recognized formats include IRAF OIF",
+"format (i.e. <i>.imh</i> extension), simple FITS files, GIF, and Sun",
+"rasterfiles. The task will automatically sense the format of the image",
+"and load it appropriately. Images with private colormaps (such as GIF)",
+"will be loaded using the private colormap (meaning that changing the",
+"brightness/contrast enhancements will render an apparently random-colored",
+"image), all others will be loaded with a grayscale colormap. ",
+"<p>",
+"When loading new images the frame buffer configuration table will be",
+"searched for a frame buffer that is the same size or larger than the new",
+"image size, if no frame buffer can be found a custom buffer exactly the",
+"size of the image will be created. This means that the image may not fill",
+"the display window when loaded, or you may see a subsection of the image",
+"in the main display window. Setting the",
+"<a href=#cautoscale><b>autoscale</b></a> option on the main",
+"Display panel will scale the entire image to fit the main display window,",
+"the full frame buffer will always be visible in the Panner marker window.",
+"<p>",
+"Images with more colors than can be displayed will automatically be",
+"quantized to the number of available colors before display. If the",
+"<b>Auto Grayscale</b> button is enabled any image colormap will be",
+"converted to grayscale and loaded as the standard grayscale colormap.",
+"<p>",
+"Formats which permit pixels larger than 8-bits/pixel will be sampled on",
+"a grid to determine an optimal range in the data to be used to compute a",
+"linear transformation to the number of display colors. This is the same",
+"z-scale sampling and transformation used by the IRAF <b>DISPLAY</b> task",
+"when computing the <b>z1/z2</b> values and provides a much better initial",
+"display than simple truncation to 8-bits. This scaling will be done",
+"automatically using a grid of <b>Nsample</b> points if the <b>Zscale</b>",
+"option is enabled. Otherwise, if the <b>Zrange</b> option is set the full",
+"data range will be used to scale the image. Lastly, is neither <b>Zscale</b>",
+"nor <b>Zrange</b> are enabled, the z1/z2 values may be set explicitly using",
+"the options box.",
+"",
+"<h3><a name=#lbrowse>Directory Browsing</a></h3>",
+"The load panel contains a list of files in the current directory that may",
+"be selected for loading by selecting with left mouse button. If the file",
+"is a directory the contents of the new directory will be loaded, if it's a",
+"plain file an attempt will be made to load it as an image otherwise an",
+"error popup will appear. Directories in the list are identified with a",
+"trailing '/' character, you will always see any subdirectories listed even",
+"if a filter is specified.",
+"<p>",
+"The <b>Root</b> button will reset the current directory to the system root",
+"directory. The <b>Home</b> button will reset the current directory to the",
+"user's login directory, the <b>Up</b> button moves up one directory level, and",
+"<b>Rescan</b> reloads the file list by rescanning the directory. The current",
+"working directory is given below the file selection window.",
+"<p>",
+"Selecting the <b>List Image Headers</b> option will change the display text",
+"to list all images in the current directory which match the filename filter.",
+"Directory browsing is disabled while this option is in effect.",
+"",
+"<h3><a name=#lpattern>File Patterns</a></h3>",
+"By default all files and directories will be listed. You may specify a",
+"filter to select only those files with a given extension such as",
+"\"*.fits\" using the <b>Filter</b> text box. Directories will",
+"always be seen in the list and are identified with a trailing '/'",
+"character. Any valid unix pattern matching string will be recognized, ",
+"multiple templates may be specified in a comma-delimited list such as",
+"\"*.imh,*.fits\" to list both OIF and FITS images.",
+"",
+"<h3><a name=#lload>Direct File Load</a></h3>",
+"If you know exactly which file you wish to load, you may enter its",
+"name in the <b>Load File</b> text box and either hit &lt;cr&gt or the",
+"<b>Load</b> button to load it. An absolute or relative path name may",
+"be given, if a simple filename is specified it will be searched for in",
+"the current working directory which is displayed in the <b>Directory</b>",
+"label of the panel.",
+"",
+"<h3><a name=#lframe>Frame Selections</a></h3>",
+"By default images will be loaded into the current frame, you may choose",
+"a different frame using the Frame menu button to select from the",
+"available frames.",
+"",
+"",
+"<hr>",
+"<h2><a name=#save>Save Panel</a></h2>",
+"The Save Panel lets you save the current contents of the main display window ",
+"to a disk file (including the Panner/Coords markers, any general graphics",
+"markers, or overlay graphics displayed by the client program). Presently,",
+"only the contents of the main display window may be saved, there is no",
+"facility for saving the undisplayed contents of the entire frame buffer ",
+"other than to enable the <a href=#cautoscale>autoscale</a> feature. A limited",
+"number of formats are currently available, others will be added in future",
+"versions.",
+"",
+"<dl>",
+"<dt><b><a name=#sfname>File Name</a></b></dt>",
+" <dd>The <b>File Name</b> text box allows you to enter the file name of",
+" the saved file. A \"%d\" anywhere in the name will be replaced by a",
+" sequence number allowing multiple frames to be saved with unique",
+" names. </dd>",
+"<dt><b><a name=#sformat>Format</a></b></dt>",
+" <dd>The <b>Format</b> box allows you to choose the format of the image",
+" to be created. Not all formats are currently implemented. The EPS",
+" format is similar to the \\fIPrint\\fR option however there is no",
+" annotation. </dd>",
+"<dt><b><a name=#scolor>Color</a></b></dt>",
+" <dd>The <b>Color</b> box lets you choose the color type of the image",
+" to be created. The options will change depending on the format,",
+" e.g. FITS doesn't allow color so no color options will be allowed.",
+" Formats which allow 24-bit images will be written using the current",
+" colormap after converting to a 24-bit image, pseudocolor images will",
+" be written with the current colormap. </dd>",
+"</dl>",
+"<hr>",
+"",
+"<h2><a name=#print>Print Panel</a></h2>",
+"The Print Panel allows you dump the contents of the main display window as",
+"Enacpsulated Postscript to either a named printer device or to a disk file.",
+"The <b>Print To</b> selects the type of output, the <b>Print Command</b>",
+"box will adjust accordingly, either as a Unix printer command or as a file",
+"name. A \"%d\" anywhere in the name for disk output will be replaced by a ",
+"sequence number allowing multiple frames to be saved with unique names.",
+"<a href=#pprinter>Selecting printers</a> from the installed list will",
+"automatically change the command to be used to generate the output. This",
+"command does not necessarily need to be a printer command, the ",
+"<a href=#pprinter>printer configuration file</a> lets you define any command",
+"string to process the image.",
+"",
+"<h3><a name=#pcolors>Color Options</a></h3>",
+"The <b>Color</b> box lets you choose the color type of the image to be created.",
+"PseudoColor or 24-bit postscript will be created using the current colormap.",
+"",
+"<h3><a name=#popts>Postscript Options</a></h3>",
+"<dl>",
+"<dt>Orientation</dt>",
+" <dd> Set the page orientation.</dd>",
+"<dt>Paper Size</dt>",
+" <dd> Select the paper size to be used.</dd>",
+"<dt>Image Scale</dt>",
+" <dd> Set the scale factor used to compute the final image size.</dd>",
+"</dl>",
+"",
+"<h3><a name=#pproc>Processing Options</a></h3>",
+"<dl>",
+"<dt>Auto Scale</dt>",
+" <dd>The auto scale toggles whether or not the image is automatically",
+" scaled to fit the page. If not enabled, the <b>image scale</b> will",
+" be used to dtermine the output image size.</dd>",
+"<dt>Auto Rotate</dt>",
+" <dd>Auto rotate determines whether or not the image will be rotated to",
+" fit on the page. When set, an image larger than the current",
+" orientation will be rotated and possibly scaled to fit the page.</dd>",
+"<dt>Max Aspect</dt>",
+" <dd>Max Aspect takes images smaller than the page and automatically",
+" increases the scale so the image fills the page in the current",
+" orientation.</dd>",
+"<dt>Annotate</dt>",
+" <dd>The annotate option toggles whether or not the final file includes",
+" annotation such as the image title, a colorbar, and axis labels.</dd>",
+"</dl>",
+"<h3><a name=#pprinter>Printer selection</a></h3>",
+"The printer selection list lets choose the printer to be used. The printer",
+"configuration file is /usr/local/lib/ximprint.cfg by default or may be reset",
+"using the <em>printConfig</em> resource. The format of the file is simply",
+"<pre>",
+" <b>name</b> &lt tab &gt <em>command</em>",
+"</pre>",
+"The <b>name</b> value is what appears in the selection list and may be more",
+"than a single word, the <em>command</em> can be any command that accepts EPS",
+"input from a pipe, the two fields must be separated by a tab character. ",
+"Normally the command will be",
+"a simple 'lpr -Pfoo' or some such, but can also include converters or",
+"previewers. At most 128 printer commands may be used.",
+"",
+"<hr>",
+"<h2><a name=#info>Info Panel</a></h2>",
+"The Info panel was revised to provide a greater variety of status",
+"information. The type of output is controlled by the toggle buttons on",
+"the bottom of the frame, however all output is kept current as the program",
+"runs. Current info options include:",
+"",
+"<dl>",
+"<dt><b>Frame</b></dt>",
+" <dd>Info about the current display frame.</dd>",
+"<dt><b>Server</b></dt>",
+" <dd>Info about various server options, e.g. colormaps, memory model,",
+" antialias type, etc.</dd>",
+"<dt><b>Clients</b></dt>",
+" <dd>Show currently connected clients. Lists available connection",
+" channels and active ISM clients.</dd>",
+"<dt><b>WCS</b></dt>",
+" <dd>List all WCS and mappings for the current frame.</dd>",
+"<dt><b>ISM</b></dt>",
+" <dd>Log of various ISM status messages.</dd>",
+"<dt><b>Imtoolrc</b></dt>",
+" <dd>Show current frame buffer configuration table.</dd>",
+"</dl>",
+"",
+"",
+"<hr>",
+"<h2><a name=#tileP>Tile Panel (NEW)</a></h2>",
+"With the additional frames, the default tiling scheme proved inadequate.",
+"A new control panel Tile frame now allows you to select from a number of",
+"tile configurations, the list of frames to be tiled, a <b>fill style</b>",
+"(left-to-right or top-to-bottom), as well as optional labels for each of",
+"the tiles (frame number, image title or image name).",
+"<p>",
+"Tile configuration will make use of all frames currently selected in the",
+"<b>Tile Frame</b> group in the following manner:",
+"",
+"<dl>",
+"<dt><b>Disabled</b></dt>",
+" <dd>Do not tile the display.</dd>",
+"<dt><b>Manual</b></dt>",
+" <dd>Tile according to <b>Manual Configuration</b> settings.</dd>",
+"<dt><b>Best</b></dt>",
+" <dd>Optimize layout for frame buffer aspect.</dd>",
+"<dt><b>Square</b></dt>",
+" <dd>Always force a square layout (2x2, 3x3, etc).</dd>",
+"<dt><b>Horizontal</b></dt>",
+" <dd>Preferentially tile horizontally (6 frames ==> 3x2).</dd>",
+"<dt><b>Vertical</b></dt>",
+" <dd>Preferentially tile vertically (6 frames ==> 2x3).</dd>",
+"<dt><b>One Row</b></dt>",
+" <dd>Tile all in one row (Nx1).</dd>",
+"<dt><b>One Column</b></dt>",
+" <dd>Tile all in one column (1xN).</dd>",
+"</dl>",
+"",
+"",
+"<hr>",
+"<h2><a name=#coordsp>Coords Panel (NEW)</a></h2>",
+"The Coords Panel is meant to provide a full-featured readout as well as",
+"serve as a control panel for the various options. The display window",
+"contains the image name/title and frame buffer info, and a selection of",
+"coordinate and image pixel readouts. The intent is provide more infor-",
+"mation than can fit comfortably on the main image window while still",
+"taking up as little screen space as possible. To this end the <b>Options</b>",
+"button is used to hide most of the feature controls when not in use",
+"(see below). Other options on the main panel include:",
+"",
+"<dl>",
+"<dt><b>WCS/Pix</b></dt>",
+" <dd>Toggle the real-time WCS/pixel readout capability (i.e. the ISM",
+" used to access the disk image). This must be enabled for certain",
+" other options to work.</dd>",
+"",
+"<dt><b>Pix Table</b></dt>",
+" <dd>Open a panel showing an image pixel table. The panel shows an array",
+" of pixels surrounding the cursor position, either the actual pixel",
+" values if the ISM is enabled, or scaled display values otherwise.",
+" The size of the table may be selected from the menubar.</dd>",
+"",
+"<dt><b>Header</b></dt>",
+" <dd>Display the current image header in a new panel. Both the entire",
+" image header as well as WCS-specific parts of the header are",
+" available under different tabs. This option is only active when",
+" the ISM is enabled.</dd>",
+"",
+"<dt><b>Compass</b></dt>",
+" <dd>Draw an orientation compass on the display panner. If the ISM is",
+" enabled and a WCS is present in the header, the compass will",
+" indicate N/E according to the WCS, otherwise the X/Y axes of the",
+" image are drawn.</dd>",
+"",
+"<dt><b>Options</b></dt>",
+" <dd>Pop-up/down the option control portion of the panel. When enabled,",
+" the Coords Panel will change size to reveal the options which can be",
+" changed (explained below). </dd>",
+"</dl>",
+"",
+"The <b>Readout Values</b> group controls the selection of WCS type,",
+"location and format to be displayed. The <b>Type</b> menu always",
+"provides a selection of the image Logical, Physical or World systems,",
+"which may be identical depending on the image header. If a World system",
+"is supplied in the image addition entries for transformations to other sky",
+"systems, (e.g. FK5 to ICRS or galactic/ecliptic) will also be available.",
+"The selection is dependent on whether the ISM is running as well as WCS",
+"information present in the image. The <b>Format</b> menu allows the",
+"use to select a sexigesimal display, conversion to degrees or radians,",
+"or whichever format is most natural for the coordinate being display.",
+"The two toggle to the right control whether this WCS is to be displayed",
+"on the <i>Panel</i> (i.e. the Coords Panel window) or the <i>ImgWin</i>",
+"(i.e. the text marker on the main image window).",
+"<p>",
+"Other options below this group control whether or not to display the WCS",
+"labels, the image name/title, and frame buffer information in the main",
+"Coords Panel display. The <b>BPM Data</b> option controls whether or not the",
+"ISM will try to map any bad-pixel mask associated with the image. If",
+"enabled, a bad-pixel mask specified by the image header BPM keyword",
+"(currently fixed by convention but this may be selectable later) will be",
+"mapped along with the image. Aside from wcs/pixel readouts at each cursor",
+"position, any BPM data values found will also be displayed. A non-zero",
+"value will cause the BPM field of the Coords Panel readout as well as the",
+"main image window marker to switch to a red background color to flag the",
+"value.",
+"<p>",
+"The last box allows the user to specify a different ISM task to be",
+"executed or to reinitialize the current one. In most cases this won't",
+"need to be changed, however a custom ISM could be started when using",
+"special data formats. This command string can also be controlled by the",
+"application <i>ism_task</i> resource.",
+"",
+"",
+"<hr>",
+"<h2><a name=#tclshell>Tcl Interactive Shell</a></h2>",
+" The <em>TclShell</em> is mostly used as a development or debugging",
+"tool for the GUI. It allows the user to type commands directly to the",
+"TCL interpreter letting you send messages to the object manager or execute",
+"specific procedures in the TCL code that makes up the GUI. Most users will",
+"never need this, but for an example of what it does, bring it up and type a",
+"command such as",
+"<pre>",
+" send helpButton set background red",
+"</pre>",
+"Cool, huh.",
+"<hr>",
+"",
+"<h2><a name=#acknowledgements>Acknowledgements</a></h2>",
+" <i>XImtool</i> was developed by the IRAF Group at the National Optical",
+"Astronomy Observatories in Tucson, AZ. For further information or to report",
+"problems please contact <i>iraf@noao.edu</i>",
+"<hr>",
+"This document was last updated 11/6/96.",
+"",
+"</BODY>",
+"</HTML>",
diff --git a/vendor/x11iraf/ximtool/ximtool.man b/vendor/x11iraf/ximtool/ximtool.man
new file mode 100644
index 00000000..2ca62eaf
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.man
@@ -0,0 +1,2338 @@
+.\" @(#)ximtool.1 1.1 12-Aug-2001 MJF
+.TH XIMTOOL 1 "12 Aug 2001" "X11IRAF Project"
+.SH NAME
+ximtool \- interactive image display program for the X Window System
+.sp 0.5
+.SH SYNOPSIS
+.B "ximtool" [\-\fItoolkitoption\fP ...] [ \fIoptions\fP ...] [\fIimagename\fP]
+.sp 0.5
+.SH OPTIONS
+.TP 5
+.B "-basePixel \fIN\fP"
+The base colormap cell used by the colormap. This essentially allows you
+to reserve \fIbasePixel\fP colors in the global colormap for other applications.
+The default is 64, if changed you'll need to also specify the
+\fI-cmapInitialize\fP option or resource.
+.TP 5
+.B "-cmap1 \fIfile\fP"
+User colormap 1. This flag allows you to specify a colormap to be made
+available at task startup.
+.TP 5
+.B "-cmap2 \fIfile\fP"
+User colormap 2. This flag allows you to specify a second colormap to be
+made available at task startup.
+.TP 5
+.B "-cmapDir1 \fIdir\fP"
+User colormap directory 1. Specifies a directory to be searched for colormaps.
+.TP 5
+.B "-cmapDir2 \fIdir\fP"
+User colormap directory 2. Specifies a directory to be searched for colormaps.
+By default this points to the system directory /usr/local/lib/imtoolcmap,
+allowing a set of site default colormaps to be defined here.
+.TP 5
+.B "-cmapInitialize \fIbool\fP"
+Initialize the ximtool colormap at startup. When setting the \fIbasePixel\fP
+option or resource this is required in order to force the Gterm widget to
+update its global colormap resource in the X server. The default is
+\fIfalse\fP.
+.TP 5
+.B "-cmapName \fIname\fP"
+Name used for private colormap. The default for all IRAF imaging
+applications is \fIimage\fP. Gterm widget based imaging applications
+which have the same value of cmapName will share the same colormap,
+minimizing colormap flashing and allowing multiple applications to be
+run at the same time.
+.TP 5
+.B "-config \fIN\fP"
+Initial frame buffer configuration number. The default value is 1, indicating
+a 512x512 frame buffer with 2 frames. See below for information on the frame
+buffers.
+.TP 5
+.B "-defgui"
+Print the default GUI to the stdout. The GUI is a Tcl program that may be
+customized by the user and reloaded using the \fI-gui\fP option or
+the \fIgui\fP resource parameter.
+.TP 5
+.B "-displayPanner \fIbool\fP"
+Display panner marker window at startup. If set, a panner window showing
+the full frame buffer will appear in the upper-right side of the main display
+window.
+.TP 5
+.B "-displayCoords \fIbool\fP"
+Display WCS coordinate marker window at startup. If set, a coordinate
+readout text marker showing will appear in the lower-right side of the main
+display window.
+.TP 5
+.B "-fifo \fIpipe\fP"
+Specifies the name of the fifo pipe to be used, the \fIi\fP
+and \fIo\fP suffixes will be added automatically. The default pipe names
+will be /dev/imt1i (input pipe) and /dev/imt1o (output pipe).
+.TP 5
+.B "-fifo_only"
+If set, only fifo pipes will be used for communication with a client program,
+sockets will be disabled.
+.TP 5
+.B "-gui \fIfile\fP"
+Specifies the GUI file to be used.
+.TP 5
+.B "-help"
+Print a summary of command line options to the screen.
+.TP 5
+.B "-imtoolrc \fIfile\fP"
+Specifies the frame buffer configuration file to be used. See below for
+information on frame buffers.
+.TP 5
+.B "-inet_only"
+If set, only inet sockets will be used for communication with a client program,
+fifo pipes and unix sockets will be disabled.
+.TP 5
+.B "-invert"
+Start XImtool using inverted colormaps. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 5
+.B "-ismdev \fIdev\fP"
+Specifies the plug-in ISM connection socket. This should be a unix domain
+socket of the form "\fI/tmp/.ISM%d\fP", where the \fI%d\fP will be replaced
+by the user id. Once an ISM has connected this port is freed to accept
+other connections.
+.TP 5
+.B "-maxColors \fIN\fP"
+Specify the max number of colors to be used for the display.
+.TP 5
+.B "-memModel \fItype\fP"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are \fIfast\fP, \fIbeNiceToServer\fP, and \fIsmall\fP. The
+default is \fIfast\fP, which uses server pixmaps to make frame blink fast.
+This is recommended unless server memory is very limited. Note that even in
+fast mode, the server pixmap is only the size of the display window, so memory
+usage is reasonable even if the frame buffer is very large.
+.TP 5
+.B "-nframes \fIN\fP"
+Specifies the number of frame buffers to configure at startup. By default
+there will be 2 frames available, a maximum of 4 frames are allowed.
+.TP 5
+.B "-port \fIN\fP"
+Specifies the port number to use when connecting through an inet socket.
+.TP 5
+.B "-port_only"
+Same as \fI-inet_only\fP option. If set, only inet sockets will be used for
+communication with a client program.
+.TP 5
+.B "-printConfig \fIname\fP"
+Specifies the printer configuration file to use. By default this will be
+/usr/local/lib/ximprint.cfg. See below for more information on configuring
+output devices.
+.TP 5
+.B "-tile"
+The default display mode is to view one frame at a time. In tile frames mode,
+2 or 4 frames may be viewed simultaneously in the display window. All the
+usual operations (zoom and pan, colortable enhancement, cursor readback, etc.)
+still work for each frame even when in tile frames mode.
+.TP 5
+.B "-unix \fIname\fP"
+Specifies the unix domain socket name to use. A "%d" in the filename will
+be replaced with the user id.
+.TP 5
+.B "-unix_only"
+If set, only unix domain sockets will be used for communication with a client
+program, inet sockets and fifos will be disabled.
+
+.SH "APPLICATION RESOURCES"
+XImtool is implemented as a client program which is responsible for loading
+the frame buffers/colormaps, communicating with clients, etc, and a
+user-modifiable GUI file written as a Tcl script which handles all the user
+interface details. The \fIclient resources\fP described below will be common
+to any user-defined GUI, the \fIgui resources\fP may change depending on how
+extensively the GUI has been modified by the user. Each of these components
+has its own set of resources, but to the user setting them is the same as
+with any other application.
+
+\fIGterm\fP widget resources (i.e. those for the main image window or
+colorbar) may be set as either client or GUI resources. See the
+\fIxgterm(1)\fP man page for a complete description of \fIGterm\fP widget
+resources.
+
+.SS "CLIENT RESOURCES"
+The client resources generally define the initial state of the application
+or set configuration parameters.
+.RS
+.TP 25
+.B "Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 25
+defConfig
+1
+.sp -0.5
+.TP 25
+defNFrames
+0
+.sp -0.5
+.TP 25
+tileBorderWidth
+3
+.sp -0.5
+.TP 25
+tileBorderColor
+9
+.sp -0.5
+.TP 25
+autoscale
+false
+.sp -0.5
+.TP 25
+antialias
+false
+.sp -0.5
+.TP 25
+antialiasType
+boxcar
+.sp -0.5
+.TP 25
+tileFrames
+false
+.sp -0.5
+.TP 25
+highlightFrames
+true
+.sp -0.5
+.TP 25
+gui
+default
+.sp -0.5
+.TP 25
+imtoolrc
+/usr/local/lib/imtoolrc
+.sp -0.5
+.TP 25
+invert
+false
+.sp -0.5
+.TP 25
+memModel
+fast
+.sp -0.5
+.TP 25
+basePixel:
+64
+.sp -0.5
+.TP 25
+maxColors:
+216
+.sp -0.5
+.TP 25
+cmapInitialize:
+false
+.sp -0.5
+.TP 25
+cmap1
+none
+.sp -0.5
+.TP 25
+cmap2
+none
+.sp -0.5
+.TP 25
+cmapDir1
+none
+.sp -0.5
+.TP 25
+cmapDir2
+/usr/local/lib/imtoolcmap
+.sp -0.5
+.TP 25
+input_fifo
+/dev/imt1i
+.sp -0.5
+.TP 25
+output_fifo
+/dev/imt1o
+.sp -0.5
+.TP 25
+unixaddr
+/tmp/.IMT%d
+.sp -0.5
+.TP 25
+port
+5137
+.sp -0.5
+.TP 25
+ism_addr
+/tmp/.ISM%d
+.sp -0.5
+.TP 25
+ism_task
+"ism_wcspix.e wcspix &"
+.RE
+
+Description of ximtool client resources:
+
+.TP 18
+.B "defConfig"
+Default frame buffer configuration number on startup. See below for more
+information on frame buffers.
+.TP 18
+.B "defNFrames"
+Default number of frames on startup. Set to zero to use the value from
+the frame buffer configuration (\fIimtoolrc\fP) file.
+.TP 18
+.B "tileBorderWidth"
+.sp -0.5
+.TP 18
+.B "tileBorderColor"
+Used by the tile frames option. Specifies how far
+apart to space the frames in tile frames mode.
+Color "9" refers to the Gterm widget resource color9,
+which is assigned a color with its own resource.
+.TP 18
+.B "autoscale"
+Enable/disable the autoscale option.
+.TP 18
+.B "antialias"
+Enable/disable the antialias option.
+.TP 18
+.B "antialiasType"
+Type of antialiasing. Options include \fIboxcar\fP (default), \fIbilinear\fP,
+\fInearest\fP, \fIarea\fP, \fIblkavg\fP, \fIlowpass\fP, and \fIgaussian\fP.
+.TP 18
+.B "tileFrames"
+Enable/disable the tile frames option.
+.TP 18
+.B "highlightFrames"
+Determines whether the current frame is highlighted when in tile frames mode.
+.TP 18
+.B "gui"
+The GUI to be executed. "default" refers to the default, builtin ximtool GUI.
+You can replace this with your own GUI file if you are bold enough, and
+completely change the look and functionality of the GUI if desired.
+.TP 18
+.B "imtoolrc"
+Where to find the imtoolrc file. This defines the
+recognized frame buffer configurations.
+.TP 18
+.B "invert"
+Start Ximtool using an inverted colormap. When set, a "normalized" display
+will always be the inverse of the selected colormap.
+.TP 18
+.B "memModel"
+Determines how ximtool uses memory in the ximtool client and the X server.
+The options are \fIfast\fP, \fIbeNiceToServer\fP, and \fIsmall\fP.
+The default is \fIfast\fP, which uses server pixmaps to make frame blink fast.
+This is recommended unless server memory is very limited. Note that even in
+fast mode, the server pixmap is only the size of the display window, so
+memory usage is reasonable even if the frame buffer is very large.
+.sp -0.5
+.TP 18
+.B "basePixel"
+.sp -0.5
+.TP 18
+.B "maxColors"
+These two resources determine the region of colormap space used to
+render image pixels.
+.TP 18
+.B "cmapInitialize"
+Initialize the ximtool colormap at startup. This is a required resource to
+clear a previous ximtool colormap allowing a new \fBbasePixel\fP and
+\fBmaxColors\fP to take effect.
+.TP 18
+.B "cmap1"
+.sp -0.5
+.TP 18
+.B "cmap2"
+User colormap files. The intent here is to allow individual colormaps to be
+conveniently specified as a resource.
+.TP 18
+.B "cmapDir1"
+.sp -0.5
+.TP 18
+.B "cmapDir2"
+User or system colormap directories. By default cmapDir2 points to the system
+directory /usr/local/lib/imtoolcmap, allowing a set of site default colormaps
+to be defined here. This leaves cmapDir1 available to a user colormap
+directory.
+.TP 18
+.B "input_fifo"
+.sp -0.5
+.TP 18
+.B "output_fifo"
+The input and output fifos for fifo i/o. "Input" and "output" are from the
+client's point of view. Note that only one display server can use a
+fifo-pair at one time.
+.TP 18
+.B "unixaddr"
+Template address for unix domain socket. The user must have write permission
+on this directory, or the file must already exist. \fI%d\fP, if given,
+is replaced by the user's UID.
+.TP 18
+.B "port"
+TCP/IP port for the server. Note that only one server can listen on a port
+at one time, so if multiple ximtool servers are desired on the same
+machine, they should be given different ports.
+.TP 18
+.B "ism_addr"
+Template address for ISM unix domain socket. The user must have write
+permission on this directory, or the file must already exist. \fI%d\fP,
+if given, is replaced by the user's UID.
+.TP 18
+.B "ism_task"
+Command string to execute for the real-time pixel and WCS readout ISM
+(Image Support Module) task.
+
+.SS "GUI RESOURCES"
+
+In principle ximtool can have any number of different GUIs, each of which
+defines its own set of resources. GUIs typically define a great many
+resources, but most of these are not really intended for modification by
+the user (although one can modify them if desired).
+
+The following are some of the more useful resources used by the default
+ximtool GUI. The \fIimagewin\fR resources are Gterm widget resources.
+.RS
+
+.TP -10
+.B Main Display Gterm Widget Resources
+.TP 35
+.B " Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 35
+ *imagewin.cmapName:
+image
+.sp -0.5
+.TP 35
+ *imagewin.basePixel:
+64
+.sp -0.5
+.TP 35
+ *imagewin.warpCursor:
+True
+.sp -0.5
+.TP 35
+ *imagewin.raiseWindow:
+True
+.sp -0.5
+.TP 35
+ *imagewin.deiconifyWindow:
+True
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeCursor:
+circle
+.sp -0.5
+.TP 35
+ *imagewin.ginmodeBlinkInterval:
+500
+.sp -0.5
+.TP 35
+ *imagewin.color0 (background):
+black
+.sp -0.5
+.TP 35
+ *imagewin.color1 (foreground):
+white
+.sp -0.5
+.TP 35
+ *imagewin.color8 (panner highlight):
+#7c8498
+.sp -0.5
+.TP 35
+ *imagewin.color9 (tileFrame color):
+SteelBlue
+.sp -0.5
+.TP 35
+ *imagewin.width:
+512
+.sp -0.5
+.TP 35
+ *imagewin.height:
+512
+
+.TP -10
+.B GUI Resources
+
+.TP 35
+.B " Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 35
+ *autoscale:
+True
+.sp -0.5
+.TP 35
+ *zoomfactors:
+1 2 4 8
+.sp -0.5
+.TP 35
+ *displayCoords:
+True
+.sp -0.5
+.TP 35
+ *displayPanner:
+True
+.sp -0.5
+.TP 35
+ *displayMagnifier:
+True
+.sp -0.5
+.TP 35
+ *blinkRate:
+1.0
+.sp -0.5
+.TP 35
+ *pannerArea:
+150*150
+.sp -0.5
+.TP 35
+ *pannerGeom:
+-5+5
+.sp -0.5
+.TP 35
+ *magnifierArea:
+100*100
+.sp -0.5
+.TP 35
+ *magnifierGeom:
++5+5
+.sp -0.5
+.TP 35
+ *wcsboxGeom:
+-5-5
+.sp -0.5
+.TP 35
+ *maxContrast:
+5.0
+.sp -0.5
+.TP 35
+ *warnings:
+True
+.sp -0.5
+.TP 35
+ *centerBoxSize:
+5
+.sp -0.5
+.TP 35
+ *peakCentroid:
+True
+
+.TP -10
+.B Alternate GUI Resources
+.TP 35
+.B " Resource Name"
+\fBDefault Value\fP
+.sp -0.5
+.TP 35
+ *showToolBar:
+False
+.sp -0.5
+.TP 35
+ *showPanelBar:
+False
+.RE
+
+Description of selected resources:
+
+.TP 22
+.B "*cmapName"
+Name used for private colormap. The default for all IRAF imaging applications
+is "image". Gterm widget based imaging applications which have the same value
+of cmapName will share the same colormap, minimizing colormap flashing and
+allowing multiple applications to be run at the same time.
+.TP 22
+.B "*basePixel"
+The base colormap cell used by the display colormap.
+.TP 22
+.B "*imagewin.warpCursor"
+Warp pointer into image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.raiseWindow"
+Raise image window when initiating a cursor read.
+.TP 22
+.B "*imagewin.deiconifyWindow"
+Deiconify image window if necessary when initiating a cursor read.
+.TP 22
+.B "*imagewin.ginmodeCursor"
+Type of cursor when a cursor read is in progress. The default is a
+circle. Any selection from the X cursor font can be used. A special
+case is "full_crosshair" which is the full crosshair cursor of the
+Gterm widget.
+.TP 22
+.B "*imagewin.ginmodeBlinkInterval"
+Determines whether the cursor blinks when a cursor read is in progress.
+The value is given in milliseconds.
+.TP 22
+.B "*imagewin.color0"
+Background color.
+.TP 22
+.B "*imagewin.color1"
+Foreground color.
+.TP 22
+.B "*imagewin.color8"
+Color assigned the panner window.
+.TP 22
+.B "*imagewin.color9"
+Color used for the tileFrames highlight.
+.TP 22
+.B "*imagewin.width"
+Width of the main image window.
+.TP 22
+.B "*imagewin.height"
+Height of the main image window.
+.TP 22
+.B "*pannerArea"
+Area in pixels of the panner window.
+.TP 22
+.B "*pannerGeom"
+Where to place the panner window.
+.TP 22
+.B "*wcsboxGeom"
+Where to place the coords box.
+.TP 22
+.B "*maxContrast"
+Maximum contrast value.
+
+
+.SH DESCRIPTION
+
+As a display server, XImtool is started as a separate process from client
+software such as IRAF. Once it is running it will accept client connections
+simultaneously on fifo pipes, unix domain sockets, or inet sockets. A
+display client like the IRAF \fIDISPLAY\fP task makes a connection and sends
+the image across using a modified IIS Model 70 protocol. Once the image is
+loaded in the display buffer it may be enhanced, saved to a disk file in a
+number of different formats, or printed as Encapsulated Postscript to a
+printer or disk file. Up to sixteen frame buffers are allowed, these may be
+displayed simultaneously in a tiled mode, or blinked frame-to-frame.
+Each frame may have its own colormap or brightness/contrast enhancement.
+Pan/Zoom and cursor readout are permitted using \fImarkers\fP, on-line help
+is also available.
+
+When run in standalone mode, images (currently IRAF OIF, GIF, Sun Rasterfiles
+or simple FITS (i.e. excluding MEF files) formats are permitted) may be
+loaded on the command line or by using the Load Panel. This allows you to
+browse images and perform the same manipulations as if they had been displayed
+by a client.
+
+.SS "MOUSE OPERATIONS"
+
+Clicking and dragging MB1 (mouse button 1) in the main image window creates
+a rectangular region marker, used to select a region of the image. If you do
+this accidentally and don't want the marker, put the pointer in the marker
+and type DELETE or BACKSPACE to delete the marker. With the pointer in the
+marker, MB3 will call up a marker menu listing some things you can do with
+the marker, like zoom the outlined region. MB1 can be used to drag or resize
+the marker. See below for more information on markers.
+
+Clicking on MB2 in the main image window pans (one click) or zooms (two
+clicks) the image. Further clicks cycle through the builtin zoom factors.
+Moving the pointer to a new location and clicking moves the feature under
+the pointer to the center of the display window. Holding down the Shift
+key while clicking MB2 will cause a full-screen crosshair cursor to appear
+until the button is released, this can be useful for fine positioning of the
+cursor.
+
+MB3 is used to adjust the contrast and brightness of the displayed image.
+The position of the pointer within the display window determines the
+contrast and brightness values. Click once to set the values corresponding
+to the pointer location, or click and drag to continuously adjust the
+display.
+
+.SS "KEYSTROKE ACCELERATORS"
+
+The following keystrokes are currently defined in the GUI:
+
+.RS
+-------------------- \fBMisc Functions\fP ---------------------
+.sp -0.2
+.TP 20
+.B "Ctrl-b"
+Previous (back) frame
+.sp -0.5
+.TP 20
+.B "Ctrl-c"
+Center frame
+.sp -0.5
+.TP 20
+.B "Ctrl-f"
+Forward frame
+.sp -0.5
+.TP 20
+.B "Ctrl-i"
+Invert colormap
+.sp -0.5
+.TP 20
+.B "Ctrl-m"
+Toggle magnifier
+.sp -0.5
+.TP 20
+.B "Ctrl-n"
+Normalize
+.sp -0.5
+.TP 20
+.B "Ctrl-p"
+Toggle panner
+.sp -0.5
+.TP 20
+.B "Ctrl-r"
+Register
+.sp -0.5
+.TP 20
+.B "Ctrl-s"
+Match LUT scaling
+.sp -0.5
+.TP 20
+.B "Ctrl-t"
+Tile frames toggle
+.sp -0.5
+.TP 20
+.B "Ctrl-u"
+Unzoom (zoom=1)
+.sp -0.5
+.TP 20
+.B "Ctrl-x"
+Flip X
+.sp -0.5
+.TP 20
+.B "Ctrl-y"
+Flip Y
+.TP 20
+.B "Ctrl-="
+Print using current setup
+.sp -0.5
+.TP 20
+.B "Ctrl-<"
+Decrease blink rate (blink faster)
+.sp -0.5
+.TP 20
+.B "Ctrl->"
+Increase blink rate (blink slower)
+.sp -0.5
+.TP 20
+.B "Ctrl-+"
+Zoom in
+.sp -0.5
+.TP 20
+.B "Ctrl--"
+Zoom out
+.TP 20
+.B "Alt-1 thru Alt-4"
+Set frame to be displayed
+.sp -0.5
+.TP 20
+.B "Ctrl-1 thru Ctrl9"
+Set integer zoom factor
+.TP 20
+.B "Ctrl-Alt-q"
+Quit
+.sp -0.5
+.TP 20
+.B "Ctrl-Alt-f"
+Fitframe
+.TP -12
+--------------------- \fBPanel Toggles\fP ---------------------
+.sp -0.2
+.TP 20
+.B "Alt-b"
+Blink frames
+.sp -0.5
+.TP 20
+.B "Alt-c"
+Control panel
+.sp -0.5
+.TP 20
+.B "Alt-h"
+Help popup
+.sp -0.5
+.TP 20
+.B "Alt-i"
+Info box popup
+.sp -0.5
+.TP 20
+.B "Alt-l"
+Load file popup
+.sp -0.5
+.TP 20
+.B "Alt-p"
+Print popup
+.sp -0.5
+.TP 20
+.B "Alt-s"
+Save popup
+.sp -0.5
+.TP 20
+.B "Alt-t"
+TclShell popup
+.sp 0.5
+.TP -12
+------------------- \fBCursor Positioning\fP ------------------
+.sp -0.2
+.TP 28
+.B "Ctrl-h / Ctrl-Left"
+Move cursor one pixel left
+.sp -0.5
+.TP 28
+.B "Ctrl-j / Ctrl-Down"
+Move cursor one pixel down
+.sp -0.5
+.TP 28
+.B "Ctrl-k / Ctrl-Up"
+Move cursor one pixel up
+.sp -0.5
+.TP 28
+.B "Ctrl-l / Ctrl-Right"
+Move cursor one pixel right
+.TP 28
+.B "Shift-Ctrl-h / Shift-Ctrl-Left"
+Move cursor ten pixels left
+.sp -0.5
+.TP 28
+.B "Shift-Ctrl-j / Shift-Ctrl-Down"
+Move cursor ten pixels down
+.sp -0.5
+.TP 28
+.B "Shift-Ctrl-k / Shift-Ctrl-Up"
+Move cursor ten pixels up
+.sp -0.5
+.TP 28
+.B "Shift-Ctrl-l / Shift-Ctrl-Right"
+Move cursor ten pixels right
+.sp 0.5
+.TP -12
+------------------- \fBAuto-Registration\fP -------------------
+.sp -0.2
+.TP 20
+.B "Ctrl-a"
+Toggle auto-registration
+.sp -0.5
+.TP 20
+.B "Ctrl-o"
+Set frame offset
+.sp 0.5
+.TP -12
+-------------------- \fBFrame Positioning\fP ------------------
+.sp -0.2
+.TP 20
+.B "Ctrl-Left"
+Shift one full frame left
+.sp -0.5
+.TP 20
+.B "Ctrl-Down"
+Shift one full frame down
+.sp -0.5
+.TP 20
+.B "Ctrl-Up"
+Shift one full frame up
+.sp -0.5
+.TP 20
+.B "Ctrl-Right"
+Shift one full frame right
+.TP 20
+.B "Ctrl-Alt-Left"
+Shift one half frame left
+.sp -0.5
+.TP 20
+.B "Ctrl-Alt-Down"
+Shift one half frame down
+.sp -0.5
+.TP 20
+.B "Ctrl-Alt-Up"
+Shift one half frame up
+.sp -0.5
+.TP 20
+.B "Ctrl-Alt-Right"
+Shift one half frame right
+.sp 0.5
+.TP -12
+------------------- \fBPeak-Up Centroiding\fP -----------------
+.sp -0.2
+.TP 20
+.B "Ctrl-["
+Decrease centroiding box size
+.sp -0.5
+.TP 20
+.B "Ctrl-]"
+Increase centroiding box size
+.sp -0.5
+.TP 20
+.B "Ctrl-0 (zero)"
+Centroid/find local maximum
+.sp -0.5
+.TP 20
+.B "Alt-Ctrl-0 (zero)"
+Find local minimum
+.sp 0.5
+.TP -12
+------------------ \fBMouse Button Events\fP ------------------
+.sp -0.2
+.TP 20
+.B "Shift-Btn1Down"
+Turn on magnifier
+.sp -0.5
+.TP 20
+.B "Shift-Btn1Up"
+Turn off magnifier
+.sp -0.5
+.TP 20
+.B "Shift-Btn2Down"
+Turn on crosshair cursor
+.sp -0.5
+.TP 20
+.B "Shift-Btn2Up"
+Turn off crosshair cursor
+.TP 20
+.B "Btn1Down"
+Create a Marker
+.sp -0.5
+.TP 20
+.B "Btn1Motion"
+Resize marker being created
+.sp -0.5
+.TP 20
+.B "Btn2Down"
+Zoom/center on cursor position
+.sp -0.5
+.TP 20
+.B "Btn3Down/Motion"
+Brightness/contrast scale the image
+.TP 20
+.B "Ctrl-Btn1Down"
+Create Ruler Marker
+.sp -0.5
+.TP 20
+.B "Ctrl-Btn1Motion"
+Resize Ruler Marker being created
+.sp -0.5
+.TP 20
+.B "Ctrl-Btn1Up"
+Destroy Ruler Marker
+.TP 20
+.B "Alt-Motion"
+Freeze cursor readout
+.RE
+
+.LP
+\fBNOTE:\fP These keystrokes only work with the cursor in the main image
+window, only a few of the commands are implemented to work within subwindows
+or markers to avoid conflicts with translations for those objects. If a
+command does not work, check the cursor location and try it again in the
+main display window.
+
+.SH "FRAME BUFFER CONFIGURATIONS"
+
+XImtool starts up using default frame buffer size of 512x512 pixels, two
+(of 16 possible) frames will be created. When loading disk images (i.e.
+run in standalone mode) the frame buffer configuration file will be
+searched for a defined frame buffer that is the same size or larger than
+the current image, if no suitable buffer can be found a custom frame
+buffer the same size as the image will be created in an unused portion of
+the configuration table. When used as a display server the frame buffer
+configuration number is passed in by the client and loaded explicitly even
+if it means clipping the image. If a new frame buffer is a different size
+than previously defined frames, all available frames will be initialized
+and cleared prior to the display. The default frame buffer configuration
+file is /usr/local/lib/imtoolrc, this can be overridden by defining a
+IMTOOLRC environment variable naming the file to be used, by creating a
+.imtoolrc file in your home directory, or a new file may be specified
+using the \fI-imtoolrc\fR command line flag or \fIimtoolrc\fR application
+resource.
+
+The format of the frame buffer configuration file is
+
+ \fIconfigno nframes width height [extra fields]\fP
+ e.g.
+ 1 2 512 512
+ 2 2 800 800
+ 3 1 1024 1024 # comment
+ : : : :
+
+At most 128 frame buffer sizes may be defined, each configuration may define
+up to 16 frames, configuration numbers need not be sequential.
+
+.LP
+\fBNOTE:\fR When defining a new frame buffer for use with client software
+such as IRAF the user must also remember to define those frame buffers in
+the IRAF \fIdev$graphcap\fR file.
+
+.SS "SUPPORT FOR 16 DISPLAY FRAMES"
+
+As part of the extensive GUI changes with the V1.3 release, support for
+the full 16 frames allowed by the IIS protocol is now available. IRAF
+V2.11.4 or later client tasks (and CDL library) are required to take
+advantage of this frames. All changes are backwards compatible, older
+versions of IRAF will continue to work but cannot access more than the
+original four frames. The new DISPLAY task will automatically sense
+whether the display server being used supports 16 frames or the original 4
+and adjust the 'frame' parameter maximum accordingly. The changes are
+fully backwards compatible for other servers.
+
+More frames are possible if needed but will require further changes to the
+client IRAF code to be effective. Allowing creation of more than 16
+frames by the Load panel can be done independently but would also require
+numerous code change to XImtool. Please contact site support if there is
+a need for this, or for workaround suggestions depending on your
+application.
+
+.SH "MARKERS"
+
+Although ximtool doesn't do much with markers currently, they are a general
+feature of the \fIGterm\fP widget and are used more extensively in other
+programs (e.g. the prototype IRAF science GUI applications). XImtool uses
+markers for the marker zoom feature discussed above, and also for the panner
+and the coords box. All markers share some of the same characteristics, so it
+is worthwhile learning basic marker manipulation keystrokes.
+.TP 3
+\fBo\fP
+MB1 anywhere inside a marker may be used to drag the marker.
+.TP 3
+\fBo\fP
+MB1 near a marker corner or edge, depending on the type of marker,
+resizes the marker.
+.TP 3
+\fBo\fP
+Shift-MB1 on the corner of most markers will rotate the marker.
+.TP 3
+\fBo\fP
+Markers stack, if you have several markers and you put one on top of
+the other. The active marker is highlighted to tell you which of the
+stacked markers is active. If the markers overlap, this will be marker
+"on top" in the stacking order.
+.TP 3
+\fBo\fP
+MB2 in the body of a marker "lowers" the marker, i.e. moves it to the
+bottom of the stacking order.
+.TP 3
+\fBo\fP
+Delete or backspace in a marker deletes it.
+.TP 3
+\fBo\fP
+Markers have their own translation resources and so the default
+keystroke commands will not be recognized when the cursor is in a marker.
+
+For example, try placing the pointer anywhere in the coords box, then press
+MB1 and hold it down, and drag the coords box marker somewhere else on the
+screen. You can also resize the coords box by dragging a corner, or delete
+it with the delete or backspace key. (The Initialize button will get the
+original coords box back if you delete it, or you can reset the toggle in
+the control panel).
+
+.SS "PANNER MARKER"
+
+The panner window always displays the full frame buffer. Try setting the
+frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
+then displaying a square image (e.g. dev$pix) and the panner will show you
+exactly where the image has been loaded into the frame.
+
+The panner window uses two markers, one for the window border and one to
+mark the displayed region of the frame. Most of the usual marker keystrokes
+mentioned below apply to these markers as well, e.g. you can use MB1 to
+reposition on the panner window within the main image display window, or to
+drag the region marker within the panner (pan the image). Resizing the
+region marker zooms the image; this is a non-aspect constrained zoom. The
+panner window itself can be resized by dragging a corner with MB1. Typing
+delete or backspace anywhere in the panner window deletes the panner.
+
+A special case is MB2. Hitting MB2 anywhere in the panner window pans the
+image to that point. This is analogous to hitting MB2 in the main display
+window to pan the image.
+
+The panner marker can be disabled by defining the \fIdisplayPanner\fP
+GUI resource, its size and location can be controlled using the
+\fIpannerArea\fP and \fIpannerGeom\fP GUI resources respectively.
+
+.SS "MAGNIFIER MARKER"
+
+The magnifier marker can be used to zoom in on a small area around the
+cursor.
+It will be updated as the cursor moves but only for small motions (either
+mouse movement or with the cursor movement keystrokes) to minimize the
+impact on the system. The zoom factor is expressed as some fraction of the
+size of the magnifier marker itself. The default zoom is 4, i.e. the area
+in the marker represents and area in the image that's one-fourth the size
+of the marker. Other zoom factors may be selected using the popup menu
+created by hitting MB1 in the marker.
+
+By default the magnifier marker is not visible, to toggle it select the
+\fIMagnifier\fR option from the \fIOptions\fR menubar button. Alternatively,
+for just a quick look holding down the Shift and MB2 buttons will display
+the marker until the button is released.
+
+The magnifier marker can be disabled by defining the \fIdisplayMagnifier\fP
+GUI resource, its size and location can be controlled using the
+\fImagnifierArea\fP and \fImagnifierGeom\fP GUI resources respectively.
+
+.SS "COORDS BOX MARKER"
+
+XImtool provides a limited notion of world coordinates, allowing frame
+buffer pixel coordinates and pixel values to be converted to some arbitrary
+linear client-defined coordinate system. The coords box feature is used to
+display these world coordinates as the pointer is moved about in the image
+window.
+
+The quantities displayed in the coords box are X, Y, and Z: the X,Y world
+coordinates of the pointer, and Z, the world equivalent of the pixel value
+under the pointer. All coordinate systems are linear. The precision of a
+displayed quantity is limited by the range of values of the associated raw
+frame buffer value. For example, if the display window is 512x512 only 512
+coordinate values are possible in either axis (the positional precision can
+be increased however by zooming the image). More seriously, at most about
+200 pixel values can be displayed since this is the limit on the range of
+pixel values loaded into the frame buffer. If a display pixel is saturated a
+"+" will be displayed after the intensity value.
+
+The coords box is a text marker, it can be moved and resized
+with the pointer like any other marker. The coords box marker can be
+disabled by defining the \fIdisplayCoords\fP GUI resource, its location
+can be controlled by the \fIwcsboxGeom\fP GUI resource.
+
+.SS "MARKER MENU OPTIONS"
+
+Except for the panner and WCS markers, MB3 (mouse button 3) calls up the
+marker menu providing a limited set of functions common to all markers:
+.TP 3
+\fBo
+Zoom\fP does an equal aspect zoom of the region outlined by the marker. In
+this way you can mark a region of the image and zoom it up.
+.TP 3
+\fBo
+Fill\fP exactly zooms the area outlined by the marker, making it fill the
+display window. Since the marker is not likely to be exactly square,
+the aspect ratio of the resultant image will not be unitary.
+.TP 3
+\fBo
+Print\fP prints the region outlined by the marker to the printer or file
+currently configured by the Print Panel.
+.TP 3
+\fBo
+Save\fP saves the region outlined by the marker to the file currently
+configured by the Save Panel.
+.TP 3
+\fBo
+Info\fP prints a description of the marked region. The text is printed in
+the Info Panel.
+.TP 3
+\fBo
+Unrotate\fP unrotates a rotated marker.
+.TP 3
+\fBo
+Color\fP is a menu of possible marker colors.
+.TP 3
+\fBo
+Type\fP is a menu of possible marker types. This is still a little buggy
+and it isn't very useful, but you can use it to play with different
+types of markers.
+.TP 3
+\fBo
+Destroy\fP destroys the marker. You can also hit the delete or backspace
+key in a marker to destroy the marker.
+
+.SS "RULER MARKERS"
+
+Holding down the Ctrl key and the Left-Mouse-Button while moving
+the mouse will drag out a "ruler marker" measuring the distance from the
+initial point to the current mouse position. Releasing the Ctrl key before
+lifting the mouse button will leave the marker on the display, otherwise
+it will be erased automatically once the mouse button is released. Any
+number of ruler markers can be created in the frame.
+
+Distances are measured by default in image logical pixels however
+the Right-Mouse-Button can be used inside the marker to popup a menu of
+options:
+
+.TP 20
+.B Sticky
+By default rulers are destroyed whenever the display
+changes due to a pan, zoom, flip, or frame change.
+This option will make the ruler "sticky" so it will
+not be erased, subsequent use of the menu to shows
+this option to be "UnSticky" to remove this feature.
+.TP 20
+.B Units
+Sub-menu to select the units of the display. If the
+ISM is enabled and a WCS is present in the image and
+selected as one of the readout options, distances may
+also be read out in units of arcseconds, arcminutes,
+or degrees instead of the default logical pixels. All
+markers created after the unit change will readout in
+the new units as their default.
+.TP 20
+.B Color
+Select the color of the marker.
+.TP 20
+.B Draw into Frame
+(\fINot Yet Implemented\fP) Draw the marker as overlay
+graphics in the frame. Doing so will retain the
+marker when printing a hardcopy of the display.
+.TP 20
+.B Destroy
+Destroy the marker.
+
+The marker can also be destroyed by hitting the Delete or Backspace key
+while the cursor is in the marker. There is presently no way to move the
+marker to a new position in the frame.
+
+.SH "REAL-TIME WCS/PIXEL-VALUE READOUT"
+
+XImtool now has the ability to display the actual pixel value of an image
+(as well as the scaled value previously shown) and the cursor position in
+image WCS values (e.g. RA/DEC, GLAT/GLONG, etc). This is done using an
+external task (the 'ism_wcspix.e' binary in the new distribution) to
+access the image and pass the coordinate/pixel information to the GUI.
+
+WCS readout is enabled by default but can be toggled or reset using the
+\fIWCS/Pix\fP button on the Coords tab in the control panel or the \fIISM\fP
+toggle on the alt-gui menubar. When enabled, images currently in the
+server or subsequently displayed will be passed to the external process
+where they are cached for access. Cursor movements generate an event that
+maps the current frame buffer position to a position in the cached image.
+The ISM (ISM is Image Support Module) task then reads the image to
+determine the pixel value (or a small table of values around the current
+position), and computes one or more coordinates from the image position.
+The ISM task also has access to the associated BPM images and can
+optionally return bad pixel information during the cursor readout.
+
+By default, the logical and world image coordinates are displayed to both
+the Coords panel readout as well as the main display window wcsbox text
+marker. Alternate coordinate systems (e.g. transformation of equatorial
+to galactic coordinates or some other sky system, physical coords,
+amplifier coords, etc) can be selected for display by hitting the
+\fIOptions\fP toggle on the Coords panel. Available coordinate systems are
+chosen using the \fIType\fP menu on the panel, the readout format
+(sexigesimal, degrees, etc) using the \fIFormat\fP menu, and the display to
+the current panel or main image window using the remaining toggles for
+each WCS. Up to four systems may be displayed at one time, the coordinate
+panel and wcsbox marker will adjust size automatically depending on the
+display.
+
+By selecting the \fIBPM Data\fP toggle from the Coords.Options panel ximtool
+is able to flag pixels in images with an associated bad pixel mask. This
+bad pixel mask is currently assumed to be named in the image header "BPM"
+keyword by convention. If the cursor passes over a bad pixel in the mask,
+the Coords bpm display as well as the main window wcsbox will change to a
+red background color. Only the Coords display will show the value, any
+non-zero value will be flagged with the color change.
+
+With the ISM enabled the Compass indicator will display a set of arrows
+showing North-East if a WCS is available, otherwise just the current X-Y
+axes are shown. The pixel table will display actual pixel values from the
+image, with the ISM off the pixel table displays the scaled image values
+from the frame buffer.
+
+.SH "FREEZING CURSOR READOUT"
+
+Holding down the Alt key will now freeze the cursor display readout
+and draw crosshairs on the screen at the last position. This can be used
+for example to position the cursor but then allow the cursor to be moved to
+another window (to enter text, start a program, whatever) without losing
+the position information displayed on the screen.
+
+.SH "CUT-GRAPHS"
+
+XImtool now has the ability to display horizontal and vertical
+cut-graphs of the display, these appear as "flip-out" panels that appear
+on the bottom and right side of the main display window and are controlled
+by the small "H" and "V" buttons in the lower right corner of the window.
+When both panels are enabled the corner area of the display also shows an
+options panel for the graphs. Current options are:
+
+.TP 20
+.B Better Speed
+Draw the graphics so they update at the fastest possible rate. This is
+done by subsampling pixels to produce a smoother graph but without sacrificing
+too much accuracy.
+.TP 20
+.B Better Accuracy
+Draw the graphics using all screen pixels to produce the most accurate
+display. On fast modern machines this can be enabled with no apparent
+loss of speed, however older machines may wish to use this only
+occassionally to limit any lag in the cursor tracking.
+.TP 20
+.B Image Pixels
+(\fINot Yet Implemented\fP)
+.TP 20
+.B Jump Cursor
+If enabled, large jumps of the cursor do not update the graphics display,
+small movements around an object of interest will update the display
+continuously.
+.TP 20
+.B Smooth Cursor
+If enabled, all cursor movements cause the display to be updated. This
+is another option that can be set safely on faster machines but will
+cause a delay on slower ones.
+.TP 20
+.B Graphics Cursors
+If enabled, the graphics cursors in either of the plots are active and
+can be used to update the cursor readout on the main image window and the
+complementary cut-graph. This can be used for example to freeze
+the cursor in the main display using the Alt key (see above), then moving
+to one of the graphics windows to perform cut graphs in only one axis.
+
+Graphs are (currently) drawn using only the scaled display values
+to avoid complications of accessing multiple images in a mosaic display. Both
+plots are labeled using the frame z1/z2 values and contain cursor indicators
+which update contuously.
+
+.SH "PEAK-UP CURSOR CENTROID POSITIONING"
+
+Several new keystroke commands are available to reposition the
+cursor to a centroid or min/max pixel value within a bounding box of the
+cursor position, allowing you to approximate the position with the mouse
+and fine tune it quickly before typing the application keystroke command.
+The initial box size is controlled with a \fIcenterBoxSize\fP GUI resource
+(defaults to 5 pixels) but can be adjusted interactively using the \fBCtrl-[\fP
+and \fBCtrl-]\fP commands to descrease/increase the box size respectively. A
+marker will flash briefly to indicate the box size.
+
+The \fBCtrl-0\fP (zero) key finds either a centroid or the local maximum
+pixel value within this box region, \fBAlt-Ctrl-0\fP (zero) will find the local
+minimum value. In either case the cursor is reposition to the computed
+value. The default peak-up action is to find the centroid position in the
+box however this can be changed to find the max pixel by selection the
+"\fICentroid Peaks\fP" option from the main Display control panel or by
+resetting the \fIpeakCentroid\fP GUI resource (defaults to True).
+
+Centroiding is done using only the scaled screen pixel values and
+only pixels above the mean value within the box are used. It works best
+if the box size is set appropriately, the centroid position may appear to
+drift if the box is too large and includes too many background pixels.
+
+.SS "Command Summary"
+.TP 20
+.B Ctrl-0 (zero)
+Reposition to centroid/max-pixel
+.sp -0.5
+.TP 20
+.B Alt-Ctrl-0 (zero)
+Reposition to min-pixel
+.sp -0.5
+.TP 20
+.B Ctrl-[
+Decrease centering box size (min of 5)
+.sp -0.5
+.TP 20
+.B Ctrl-]
+Increase centering box size
+
+.SS "Resource Summary"
+.TP 20
+.B "peakCentroid = True"
+Compute the box centroid position, a 'False' value force the max value
+to be used
+.sp -0.5
+.TP 20
+.B "centerBoxSize = 5"
+Size of the centroid box, used as cursor position +/- this value
+
+.SH "AUTO-REGISTRATION OF IMAGES"
+
+The auto-register feature allows you specify a registration of
+two or more display frames with an offset. When enabled, this registration
+is maintained for all frames in the list if any one of them is panned or
+zoomed to a new location in the frame buffer.
+
+For example, to use this feature do the following:
+.RS
+.TP 5
+.B 1)
+Enable Auto-Register (either on the Control Panel or the toolbar on the
+alt-gui) and pan/zoom to some star of interest.
+.TP 5
+.B 2)
+Use Mouse-Button-2 to center the star in the frame.
+.TP 5
+.B 3)
+Cycle through the frames and you may see a small shift of the star. For
+each frame, position the cursor on the star and type \fBCtrl-o\fP to
+offset it to the center. Repeat as necessary. Small corrections will be
+cumulatively added so you can use the \fBCtrl-0\fP (Ctrl-zero) peak-up
+command to centroid each object in the frame before the \fBCtrl-o\fP offset.
+.TP 5
+.B 4)
+Pan around the image in one display frame, then switch frames and the new
+frame should also be panned to the new image with the proper offset.
+.TP 5
+.B 5)
+A \fBCtrl-a\fP command will toggle the feature, offsets are only allowed
+when autoreg is enabled.
+.RE
+.LP
+Hitting \fBRegister\fP will zero the offsets, as will toggling the
+auto-register function. What you should see is the object centered in
+the frame and as you blink through it remains registered but the panner
+box marker is moving around. Drag the panner around and all frames
+still remain registered with the given offset. The control/info panels
+now display what the offset is for each frame.
+
+The register display list is shared with the blink list and can
+be set using the Display control panel. By default all frames are included
+in the list. For accessing more than four frames, use the box icon in
+the Blink/Register box of the Display control panel to bring up a new window
+with access to all 16 available frames.
+
+.SS "Command Summary"
+.TP 20
+.B Ctrl-o
+Set the registration offset from center
+.sp -0.5
+.TP 20
+.B Ctrl-a
+Toggle the Auto-Register feature
+
+.SH "CONTROL PANEL"
+
+XImtool has a control panel which can be used to exercise most of the
+capabilities the program has for image display. The control panel can be
+accessed either via the \fBOptions\fP menu from the main window menubar, or by
+pressing the leftmost button in the row of buttons at the upper right side
+of the display in the standard GUI (in the alternate GUI the \fIControl
+Bar\fP accessed by the rightmost button on the menubar provides widgets
+for selecting the desired control panel).
+
+The separate windows previously used for Control/Print/Load/Save/etc
+have now been integrated into a single window with the appropriate control
+panel selectable with a Tab widget. There are also new Tab panels for
+setting the frame tile configuration (see below), more detailed information
+on the server status, and selecting the WCS readout options (see below).
+
+.SS "VIEW CONTROLS"
+
+The \fBFrame box\fP will list only the frame buffers you currently have
+defined. Currently, the only way to destroy a frame buffer is to change the
+frame buffer configuration, new frame buffers (up to 16) will be created
+automatically if requested by the client. The number of frame buffers
+created at startup can be controlled using the \fI-nframes\fP command-line
+switch or the \fIdefNFrames\fP resource.
+
+The \fBtext display\fP window gives the field X,Y center, X,Y scale
+factors, the X,Y zoom factors, and the frame offset used in
+Auto-Registration. The scale factor and the zoom factor will be the same
+unless \fIautoscale\fP is enabled. The scale is in units of display pixels
+per frame buffer pixel, and is an absolute measure (it doesn't matter
+whether or not autoscale is enabled). Zoom is relative to the autoscale
+factor, which is 1.0 if autoscaling is disabled. This information is also
+presented in the Info panel.
+
+The numbers in the \fBZoom box\fP are zoom factors. Blue numbers zoom, red
+numbers dezoom. \fIZoom In\fP and \fIZoom Out\fP may be used to go to
+larger or smaller zoom factors, e.g. \fICtrl-5\fP followed by "Zoom In"
+will get you to zoom factor 10. Specific zoom factors may also be
+accessed directly as Control keystrokes, e.g. Ctrl-5 will set zoom factor
+5. \fICenter\fP centers the field. \fIToggle Zoom\fP toggles between the
+current zoom/center values, and the unzoomed image.
+
+\fIAspect\fP recomputes the view so that the aspect ratio is 1.0. Aspect
+also integerizes the zoom factor (use the version in the View menu if you
+don't want integerization).
+
+\fIFit Frame\fP makes the display window the same size as the frame
+buffer. Note that autoscale has much the same effect, and allows you to
+resize the display window to any size you want, or view images too large
+to fit on the screen.
+
+.SS "ENHANCEMENT CONTROLS"
+
+At the top is a scrolled list of all the available colormaps. Click on the
+one you want to load. You can add your own colormaps to this list by
+defining the \fIcmap[12]\fP or \fIcmapDir[12]\fP command line flags or
+application resources.
+
+The two sliders adjust the contrast (upper slider) and brightness (lower
+slider) of the display. The \fIInvert\fP button inverts the colormap
+(multiples the contrast by -1.0). Note that due to the use of the private
+colormap the sliders are a bit sluggish when dragged to window the
+display. If this is annoying, using MB3 in the display window is faster.
+
+The \fINormalize\fP button (on the bottom of the control panel) will
+normalize the enhancement, i.e. set the contrast and brightness to the
+default one-to-one values (1.0, 0.5). This is the preferred setting for
+many of the pseudocolor colortables and for private colormaps loaded from
+disk images. The \fIInitialize\fP button does a reset of the server.
+
+.SS "BLINK CONTROLS"
+
+\fIBlink frames\fP is the list of frames to be blinked. When blink mode is
+in effect ximtool just cycles through these frames endlessly, pausing
+"blink rate" seconds between each frame. The same frame can be entered in
+the list more than once. To program an arbitrary list of blink frames,
+hit the Reset button and click on each blink frame button until it is set
+to the desired frame number. The main control panel allows only the
+original four frames to be specified in the blink list, however access to
+the full list of 16 frames now supported is gained using the box icon
+button next the the \fIReset\fP button to bring up a new control panel.
+
+The \fIBlink Rate\fP can be adjusted as slow or as fast as you want using
+the arrow buttons. If you set the blink rate small enough it will go to
+zero, enabling single step mode (see below).
+
+The \fIRegister\fP button registers all the blink frames with the current
+display frame. Frames not in the blink list are not affected.
+
+The \fIMatch LUTs\fP button sets the enhancement of all blink frames to
+the same values as the display frame. Frames not in the blink list are not
+affected.
+
+The \fIBlink\fP button turns blink on and off. When the blink rate is set
+to zero the Blink button will single step through the blink frames, one
+frame per button press.
+
+\fBNOTE:\fP You can blink no matter what ximtool options are in effect,
+but many of these will slow blink down. To get the fastest blink you may
+want to turn off the panner and coords box, and match the LUTs of all the
+blink frames. All the ximtool controls are fully active during blink
+mode, plus you can load frames etc.
+
+.SS "OPTIONS:"
+.TP 5
+.B "Panner"
+Toggles whether to display the Panner marker.
+.TP 5
+.B "Magnifier"
+Toggles whether to display the Magnifier marker.
+.TP 5
+.B "Coords Box"
+Toggles whether to display the coordinate box marker.
+.TP 5
+.B "Autoscale"
+If autoscale is enabled then at zoom=1, the frame buffer will be
+automatically scaled to fit within the display window. With autoscale
+disabled (the default), the image scale is more predictable, but the
+image may be clipped by the display window, or may not fill the display
+window.
+.TP 5
+.B "Antialias"
+When dezooming an image, i.e., displaying a large image in a smaller
+display window, antialiasing causes all the data to be used to compute
+the displayed image. If antialiasing is disabled then image is
+subsampled to compute the displayed image. Antialiasing can prevent
+subsampling from omitting image features that don't fall in the sample
+grid, but it is significantly slower than dezooming via subsampling.
+The default is no antialising.
+.TP 5
+.B "Tile Frames"
+The default display mode is to view one frame at a time. In tile frames
+mode, 2 or 4 frames may be viewed simultaneously in the display window.
+All the usual operations (zoom and pan, colortable enhancement, cursor
+readback, etc.) still work for each frame even when in tile frames mode.
+.TP 5
+.B "Warnings"
+The warnings options toggles whether you see warning dialog boxes in
+situations like overwriting an existing file, clearing the frame
+buffer, etc.
+.TP 5
+.B "Centroid Peaks"
+If enabled, the \fBCtrl-0\fP keystroke will reposition the cursor to the
+computed centroid of the centroiding box, otherwise the cursor is
+repositioned to the local maximum value within the box.
+
+.SH "LOAD PANEL"
+
+The Load Panel allows you load images from disk directly to the frame
+buffer, this is analogous to loading an image on the command line except
+that browsing is possible. At present recognized formats include IRAF OIF
+format (i.e. \fI.imh\fP extension), simple FITS files, GIF, and Sun
+rasterfiles. The task will automatically sense the format of the image
+and load it appropriately. Images with private colormaps (such as GIF)
+will be loaded using the private colormap (meaning that changing the
+brightness/contrast enhancements will render an apparently random-colored
+image), all others will be loaded with a grayscale colormap.
+
+When loading new images the frame buffer configuration table will be
+searched for a frame buffer that is the same size or larger than the new
+image size, if no frame buffer can be found a custom buffer exactly the
+size of the image will be created. This means that the image may not fill
+the display window when loaded, or you may see a subsection of the image
+in the main display window. Setting the \fIautoscale\fP option on the main
+Display panel will scale the entire image to fit the main display window,
+the full frame buffer will always be visible in the Panner marker window.
+
+Images with more colors than can be displayed will automatically be
+quantized to the number of available colors before display.
+If the \fIAuto Grayscale\fP button is enabled any image colormap will be
+converted to grayscale and loaded as the standard grayscale colormap.
+
+Formats which permit pixels larger than 8-bits/pixel will be sampled on
+a grid to determine an optimal range in the data to be used to compute a
+linear transformation to the number of display colors. This is the same
+z-scale sampling and transformation used by the IRAF \fIDISPLAY\fR task
+when computing the \fIz1/z2\fP values and provides a much better initial
+display than simple truncation to 8-bits. This scaling will be done
+automatically using a grid of \fINsample\fP points if the \fIZscale\fP
+option is enabled. Otherwise, if the \fIZrange\fP option is set the full
+data range will be used to scale the image. Lastly, is neither \fIZscale\fP
+nor \fIZrange\fR are enabled, the z1/z2 values may be set explicitly using
+the options box.
+
+.TP 5
+.B "Directory Browsing"
+The load panel contains a list of files in the current directory that may
+be selected for loading by selecting with left mouse button. If the file
+is a directory the contents of the new directory will be loaded, if it's a
+plain file an attempt will be made to load it as an image otherwise an
+error popup will appear. Directories in the list are identified with a
+trailing '/' character, you will always see any subdirectories listed even
+if a filter is specified.
+
+The \fIRoot\fP button will reset the current directory to the system root
+directory. The \fIHome\fP button will reset the current directory to the
+user's login directory, the \fIUp\fP button moves up one directory level, and
+\fIRescan\fP reloads the file list by rescanning the directory. The current
+working directory is given below the file selection window.
+
+Selecting the \fIList Image Headers\fP option will change the display text
+to list all images in the current directory which match the filename filter.
+Directory browsing is disabled while this option is in effect.
+.TP 5
+.B "File Patterns"
+By default all files and directories will be listed. You may specify a
+filter to select only those files with a given extension such as
+"*.fits" using the \fIFilter\fP text box. Directories will
+always be seen in the list and are identified with a trailing '/'
+character. Any valid unix pattern matching string will be recognized,
+multiple templates may be specified in a comma-delimited list such as
+"*.imh,*.fits" to list both OIF and FITS images.
+.TP 5
+.B "Direct File Load"
+If you know exactly which file you wish to load, you may enter its
+name in the \fILoad File\fP text box and either hit <cr> or the Load button
+to load it. An absolute or relative path name may be given, if a simple
+filename is specified it will be searched for in the current working directory.
+.TP 5
+.B "Frame Selections"
+By default images will be loaded into the current frame, you may choose
+a different frame using the Frame menu button to select from the
+available frames.
+
+.SH "SAVE PANEL"
+
+The Save Panel lets you save the current contents of the main display window
+to a disk file (including the Panner/Coords markers, or overlay graphics
+displayed by the client program). Presently, only the contents of the main
+display window may be saved, there is no facility for saving the undisplayed
+contents of the entire frame buffer other than to enable the autoscale feature
+or zoom out so the whole buffer is in the display window. A limited number
+of formats are currently available, others will be added in future versions.
+.TP 15
+.B "File Name"
+The File Name text box allows you to enter the file name of the saved
+file. A "%d" anywhere in the name will be replaced by a sequence number
+allowing multiple frames to be saved with unique names.
+.TP 15
+.B "Format"
+The Format box allows you to choose the format of the image to be
+created however not all formats are currently implemented. The EPS format
+is similar to the \fIPrint\fR option however there is no annotation.
+.TP 15
+.B "Color"
+The Color box lets you choose the color type of the image to be
+created. The options will change depending on the format, e.g. FITS
+doesn't allow color so no color options will be enabled. Formats which
+allow 24-bit images will be written using the current colormap after
+converting to a 24-bit image, pseudocolor images will be written with
+the current colormap.
+
+.SH "PRINT PANEL"
+
+The Print Panel allows you dump the contents of the main display window as
+Encapsulated Postscript to either a named printer device or to a disk file.
+The \fIPrint To\fP selects the type of output, the \fIPrint Command\fP box
+will adjust accordingly, either as a Unix printer command or as a file name.
+A "%d" anywhere in the name for disk output will be replaced by a sequence
+number allowing multiple frames to be saved with unique names. Selecting
+printers from the installed list will automatically change the command to be
+used to generate the output. This command does not necessarily need to be a
+printer command, the printer configuration file lets you define any command
+string to process the image.
+
+.SS "COLOR OPTIONS"
+
+The Color box lets you choose the color type of the image to be created.
+PseudoColor or 24-bit postscript will be created using the current colormap
+and enhancements.
+
+.SS "POSTSCRIPT OPTIONS"
+
+.TP 15
+.B "Orientation"
+Set the page orientation.
+.sp 0.5
+.TP 15
+.B "Paper Size"
+Select the paper size to be used.
+.sp 0.5
+.TP 15
+.B "Image Scale"
+Set the scale factor used to compute the final image size. No checking is
+done to make sure the image will fit correctly on the page.
+
+.SS "PROCESSING OPTIONS"
+.TP 5
+.B "Auto Scale"
+Toggles whether or not the image is automatically scaled
+to fit the page. If not enabled, the image scale will be used to
+determine the output image size, otherwise the image will be scaled down
+(if necessary) to fit on the page.
+.TP 5
+.B "Auto Rotate"
+Determines whether or not the image will be rotated to fit
+on the page. When set, an image larger than the current orientation
+will be rotated and possibly scaled to fit the page, otherwise the image
+may be scaled so that it fits in the current orientation.
+.TP 5
+.B "Max Aspect"
+Automatically increases the scale so the image fills the page in the current
+orientation.
+.TP 5
+.B "Annotate"
+The annotate option toggles whether or not the final file includes
+annotation such as the image title, a colorbar, and axis labels. There is
+currently no option for partial annotation.
+
+.SS "ANNOTATION OPTIONS"
+
+.TP 5
+.B "Annotate"
+Selects whether Postscript image is to be annotated.
+.B "Title"
+Annotate with a title on the top of the image.
+.B "Borders"
+Annotate with borders surrounding the image giving image coordinates.
+.B "Colorbar"
+Annotate with colorbar at the bottom of the image
+.B "Title String"
+Title string to use when \fItitle\fR is selected. The special value
+\fIimtitle\fR will force the title to be the currently displayed image title,
+otherwise it will be this user-selected field.
+
+.SS "PRINTER SELECTION"
+
+The printer selection list lets choose the printer to be used. The printer
+configuration file is /usr/local/lib/ximprint.cfg by default or may be reset
+using the \fI-printConfig\fP command line switch or \fIprintConfig\fP
+resource. The format of the file is simply
+
+ \fIname\\tcommand\fP
+
+The \fIname\fP value is what appears in the selection list and may be more
+than a single word, the \fIcommand\fP can be any command that accepts EPS
+input from a pipe, the two fields must be separated by a tab character.
+Normally the command
+will be a simple \fIlpr -Pfoo\fP or some such, but can also include converters
+or previewers. At most 128 printer commands may be used.
+
+.SH "INFO PANEL"
+
+The Info panel was revised to provide a greater variety of status
+information. The type of output is controlled by the toggle buttons on
+the bottom of the frame, however all output is kept current as the program
+runs. Current info options include:
+.RS
+.TP 15
+.B Frame
+Info about the current display frame.
+.TP 15
+.B Server
+Info about various server options, e.g. colormaps, memory model,
+antialias type, etc.
+.TP 15
+.B Clients
+Show currently connected clients. Lists available connection channels
+and active ISM clients.
+.TP 15
+.B WCS
+List all WCS and mappings for the current frame.
+.TP 15
+.B ISM
+Log of various ISM status messages.
+.TP 15
+.B Imtoolrc
+Show current frame buffer configuration table.
+.RE
+
+.SH "TILE PANEL (NEW)"
+
+With the additional frames, the default tiling scheme proved inadequate.
+A new control panel Tile frame now allows you to select from a number of
+tile configurations, the list of frames to be tiled, a \fIfill style\fP
+(left-to-right or top-to-bottom), as well as optional labels for each of
+the tiles (frame number, image title or image name).
+
+Tile configuration will make use of all frames currently selected in the
+\fITile Frame\fP group in the following manner:
+.RS
+.TP 15
+.B "Disabled"
+Do not tile the display.
+.TP 15
+.B "Manual"
+Tile according to \fIManual Configuration\fP settings.
+.TP 15
+.B "Best"
+Optimize layout for frame buffer aspect.
+.TP 15
+.B "Square"
+Always force a square layout (2x2, 3x3, etc).
+.TP 15
+.B "Horizontal"
+Preferentially tile horizontally (6 frames ==> 3x2).
+.TP 15
+.B "Vertical"
+Preferentially tile vertically (6 frames ==> 2x3).
+.TP 15
+.B "One Row"
+Tile all in one row (Nx1).
+.TP 15
+.B "One Column"
+Tile all in one column (1xN).
+.RE
+
+.SH "COORDS PANEL (NEW)"
+
+The Coords Panel is meant to provide a full-featured readout as well as
+serve as a control panel for the various options. The display window
+contains the image name/title and frame buffer info, and a selection of
+coordinate and image pixel readouts. The intent is provide more infor-
+mation than can fit comfortably on the main image window while still
+taking up as little screen space as possible. To this end the "Options"
+button is used to hide most of the feature controls when not in use (see
+below). Other options on the main panel include:
+
+.RS
+.TP 15
+.B WCS/Pix
+Toggle the real-time WCS/pixel readout capability (i.e. the ISM used
+to access the disk image). This must be enabled for certain other
+options to work.
+.TP 15
+.B "Pix Table"
+Open a panel showing an image pixel table. The panel shows an array
+of pixels surrounding the cursor position, either the actual pixel
+values if the ISM is enabled, or scaled display values otherwise. The
+size of the table may be selected from the menubar.
+.TP 15
+.B Header
+Display the current image header in a new panel. Both the entire image
+header as well as WCS-specific parts of the header are available under
+different tabs. This option is only active when the ISM is enabled.
+.TP 15
+.B Compass
+Draw an orientation compass on the display panner. If the ISM is enabled
+and a WCS is present in the header, the compass will indicate N/E
+according to the WCS, otherwise the X/Y axes of the image are drawn.
+.TP 15
+.B Options
+Pop-up/down the option control portion of the panel. When enabled, the
+Coords Panel will change size to reveal the options which can be
+changed (explained below).
+.RE
+
+.LP
+The "Readout Values" group controls the selection of WCS type, location
+and format to be displayed. The "Type" menu always provides a selection
+of the image Logical, Physical or World systems, which may be identical
+depending on the image header. If a World system is supplied in the image
+addition entries for transformations to other sky systems, (e.g. FK5 to
+ICRS or galactic/ecliptic) will also be available. The selection is
+dependent on whether the ISM is running as well as WCS information present
+in the image. The "Format" menu allows the use to select a sexigesimal
+display, conversion to degrees or radians, or whichever format is most
+natural for the coordinate being display. The two toggle to the right
+control whether this WCS is to be displayed on the Panel (i.e. the Coords
+Panel window) or the ImgWin (i.e. the text marker on the main image
+window).
+
+Other options below this group control whether or not to display the WCS
+labels, the image name/title, and frame buffer information in the main
+Coords Panel display. The "BPM Data" option controls whether or not the
+ISM will try to map any bad-pixel mask associated with the image. If
+enabled, a bad-pixel mask specified by the image header BPM keyword
+(currently fixed by convention but this may be selectable later) will be
+mapped along with the image. Aside from wcs/pixel readouts at each cursor
+position, any BPM data values found will also be displayed. A non-zero
+value will cause the BPM field of the Coords Panel readout as well as the
+main image window marker to switch to a red background color to flag the
+value.
+
+The last box allows the user to specify a different ISM task to be
+executed or to reinitialize the current one. In most cases this won't
+need to be changed, however a custom ISM could be started when using
+special data formats. This command string can also be controlled by the
+application "ism_task" resource.
+
+.SH "TCLSHELL"
+
+The \fITclShell\fP allows the user to type commands directly to the TCL
+interpreter, letting you send messages to the object manager or execute
+specific procedures in the TCL code that makes up the GUI. It is used as a
+development or debugging tool for the GUI, but for an example of what it
+does, bring it up and type a command such as
+
+ \fIsend fileButton set background red\fP
+
+
+.SH "COLORMAP SELECTION"
+
+By default XImtool will display images using either a grayscale colormap
+(e.g. if loaded by a client), or a private colormap when loading an image
+from disk that contains a colormap. Each frame defines its own colormap so
+you can define different colormaps or enhancements for each frame, they
+will change automatically as you cycle through the frames.
+
+.SS "BUILTIN COLORMAPS"
+
+Once loaded, the colormap may either be changed using the builtin colormap
+menu under the View menu button on the main window, or from the
+Enhancement box on the control panel. XImtool has about a dozen colormap
+options builtin, other user-defined colormaps may optionally be loaded.
+It is not presently possible to save colormaps for later use.
+
+.SS "USER-DEFINED COLORMAPS"
+
+The \fIcmap[12]\fP and \fIcmapDir[12]\fP resources (or command line
+arguments) are used to tell which specific colormaps to make available or
+where to look for colortables respectively. The colortables are loaded
+when ximtool starts up, or when it is reinitialized (e.g. by pressing the
+Initialize button in the control panel). XImtool will ignore any files in
+the colormap directory which do not look like colortables. New
+colortables will also be added automatically for each image loaded from
+disk.
+
+The format of a user lookup table is very simple: each row defines one
+colortable entry, and consists of three columns defining the red, green, and
+blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
+
+ R G B
+ R G B
+ (etc.)
+
+Blank and comment lines (lines beginning with a '#') are ignored.
+
+Usually 256 rows are provided, but the number may actually be anything in
+the range 1 to 256. XImtool will interpolate the table as necessary to
+compute the colortable values used in XImtool. XImtool uses at most 201
+colors to render pixel data, so it is usually necessary to interpolate the
+table when it is loaded.
+
+The name of the colortable as it will appear in the XImtool control panel
+is the root name of the file, e.g., if the file is "rainbow.lut" the
+colortable name will be "rainbow". Lower case names are suggested to avoid
+name collisions with the builtin colortables. Private colormaps for disk
+images will be have the same name as the image loaded. If the same
+colortable file appears in multiple user colortable directories, the first
+one found will be used.
+
+.SS "MINIMIZING COLORMAP CONFLICTS"
+
+The Gterm widget used by XImtool (i.e. the main display window) uses a
+private global colormap for display, this allows it to have greater
+control over color cell allocation but can occasionally also cause
+"colormap flashing" as the mouse is moved in and out of the application.
+The problem here is that in a system with only an 8-bit colormap (256
+colors) all applications must compete for colors, programs such as XV or
+Netscape allocate colors from the default colormap leaving only a few free
+cells for XImtool. Since XImtool defines a private global colormap it is
+still able to allocate the needed cells rather than failing, but it's
+allocating cells already used by other applications. As the mouse moves
+out of the ximtool window those cells are once again defined in terms of
+the default colormap, so the ximtool window is then using a different
+colormap. It is this switching of the colormap context that causes the
+flashing to occur, but there are a few things that can be done to help
+minimize this.
+
+XImtool logically defines 200 colors which the client image display
+program can use to render pixels. However, ximtool may or may not
+actually allocate all of those colors. By default it currently allocates
+only about 192 colors, to reserve 64 colors for the other windows on the
+screen. You don't normally notice this as 1) usually the default screen
+colormap has enough free cells to allow ximtool to match the colors, and
+2) the extra unallocated cells correspond to the brightest pixels in the
+rendered image, and these colors may not be used or usually only
+correspond to a few small regions near the saturated cores of bright
+objects.
+
+You can eliminate this problem by setting the \fIbasePixel\fP resource to
+e.g. 48 instead of 64, which will let the gterm widget allocate all 200
+colors. However, this isn't recommended for normal use as it will
+increase the likelihood of colormap flashing. If you change
+\fIbasePixel\fP, either restart the X server or set the resource
+\fIcmapInitialize\fP=\fITrue\fP to force the gterm widget to update its
+global colormap resource in the X server. The colormap resource may also
+be deleted by using the command
+.sp 0.7
+ \fIxprop -root -remove GT_image\fP
+.sp 0.7
+These options may also be set on the command line when first starting up.
+
+In general one can set the Gterm widget resources \fIbasePixel\fP and
+\fImaxColors\fP to specify the region of colormap space to be used for
+image display. If you set \fImaxColors\fP to a small value, the 200
+logical colors defined by the widget will be mapped by the imtool color
+model into whatever number of colors are actually available to the
+widget. For example, in the default setup, 200 color values are really
+being mapped into 192 color cells used for display, the remaining colors
+are used for buttons, menus etc and are allocated from the default
+colormap by the X toolkit when the application starts up.
+
+Even though the Gterm widget uses a private colormap, it is a private
+\fIglobal\fP colormap meaning that all Gterm widgets share the same
+colormap. An example of colormap sharing in ximtool is the main image
+window and the colorbar window. These are two separate gterm widgets that
+share the same colormap. They have to share the same colormap, as
+otherwise when you windowed the main image window the colorbar window
+would not accurately reflect the modified colormap. By default two
+separate ximtools would also share the same colormap meaning contrast
+enhancements in one window would affect the other. By resetting the
+\fIcmapName\fP command line option or resource you can change the name of
+the private colormap used causing separate ximtools to use different
+colormaps, but note this also creates colormap flashing between the two
+windows that cannot easily be avoided. By setting the \fIcmapName\fR to
+"default" the widget will allocate colors from the default colormap, but
+this is of little use at the moment.
+
+There are a number of other resources that can be used to modify the
+behavior of the Gterm widget color management scheme, but these are the
+most useful ones. For question and further information feel free to
+contact \fIiraf@noao.edu\fP.
+
+
+.SH "DISPLAY CLIENT CONNECTIONS"
+
+XImtool allows display clients to connect in any of the following ways:
+.TP 5
+.B "fifo pipes"
+The traditional approach. The default global /dev/imt1[io]
+pipes may be used, or a private set of fifos can be specified using the
+\fI-fifo\fP command line argument or \fI*fifo\fP resource. Values should
+be specified as the root pathname to a pair of fifo pipes whose last
+character is 'i' or 'o', these characters will be added automatically when
+opening the pipes. For example, to use the default pipes the path would
+be specified as simply "/dev/imt1". A value of "none" disables this connection.
+.TP 5
+.B "tcp/ip sockets"
+Clients connect via a tcp/ip socket. The default port is \fI5137\fP, or a
+custom port may be specified using the \fI-port\fP command line switch or
+a \fI*port\fP resource. This permits connecting to the server
+over a remote network connection anywhere on the Internet.
+A port number of 0 (zero) disables this connection.
+.TP 5
+.B "unix domain sockets"
+Like a tcp/ip socket, but limited to a single host system. Usually faster
+than a tcp/ip socket, and comparable to a fifo. By default each user gets
+their own unix domain socket, so this option allows multiple users to run
+ximtools on the same host without having to customize things. The default
+value is "/tmp/.IMT%d", other sockets may be defined using the \fI-unix\fP
+command line switch or the \fI*unixaddr\fR resource. Legal values
+should be specified as a filename to be used for the socket, up to two "%d"
+fields are allowed and will be replaced by the userid. An empty string value
+disables this connection.
+
+By default ximtool listens simultaneously for client connections on all three
+types of ports. Clients may connect simultaneously by different
+means allowing up to three different displays to be loading at the same
+time into different frames.
+
+
+.SS "COMMUNICATIONS PROTOCOL"
+
+The communications protocol used is a slightly modified version of
+that used by the IIS Model 70; other more modern protocols will likely be
+supported in the future. The IIS protocol is basically a command packet
+stream with a header describing the operation to be performed (select
+frame, load display, read cursor, etc), and an optional data packet
+containing e.g. pixels.
+
+Beginning with XImtool V1.3 the protocol was modified even more to allow
+extra text at the end of the WCS string to define image mappings and to
+better support multiple world coordinate systems within a frame. For
+backwards compatability none of the existing IIS protocols were
+modified completely, however we take advantage of unused registers to flag
+the new features in existing functions (like read/write WCS). The WCS mapping
+changes required only that the unused 'x' register be set to indicate the new
+behavior was desired, e.g. the wcs text containing the extra mapping data.
+
+We also added two new WCS calls that allow us to query the WCS version,
+or query a WCS by a specific number corresponding to a mapping. The WCS
+version query will return a string such as "version=10" which can be parsed
+by the client to get a version number '10' (corresponding to version 1.0).
+
+Because of the added mapping text the WCS string length was increased
+from 320 to 1024 bytes, the string length used internally depends on whether
+the 'x' register has been set.
+
+Support for the full 16 frames allowed by the bit-flag 'z' register
+in the IIS header packet required the masking values be changed at various
+places in the code. This was more a limitation of the initial implementation
+than a required change to the protocol.
+
+A complete summary of the XImtool IIS protocol implementation follows.
+
+
+.SS "IIS PROTOCOL SUMMARY"
+
+All operations are initiated by sending a
+header packet containing a \fIthing id\fR (tid) and \fIsubunit\fR selecting
+the function to be performed, optionally followed by data up to 32Kb long.
+The IIS header packet used is defined as
+.nf
+ \f(CWstruct iism70 {
+ short tid;
+ short thingct;
+ short subunit;
+ short checksum;
+ short x, y, z;
+ short t;
+ };\fR
+.fi
+
+The \fIthing count\fR field contains the negative number of bytes of data
+that will be sent following the header packet. The IIS header checksum is
+computed as
+.nf
+\f(CW
+ checksum = 0177777 - (tid + subunit + thingct + x + y + z + t);
+\fR
+.fi
+The four IIS registers are set differently depending on the operation, a
+summary of the header packets for each operation is summarized below.
+.br
+
+.KS
+.ce 1
+\fBIIS Header Packet Summary\fR
+.TS
+tab(:);
+c c c c c c c c c.
+:TID:Subunit:Tct:X:Y:Z:T:Data
+.T&
+l | l | l | c | c | c | l | l | l |.
+:_:_:_:_:_:_:_:_
+Read Data:IIS_READ\fB|\fPPACKED:MEMORY:-NB:x:y:fr:-:NB
+Write Data:IIS_WRITE\fB|\fPPACKED:MEMORY:-NB:x:y:fr:-:NB
+Read Cursor:IIS_READ:IMCURSOR:-:-:-:-:-:-
+Write Cursor:IIS_WRITE:IMCURSOR:-:x:y:wcs:-:-
+Set Frame:IIS_WRITE:LUT\fB|\fPCOMMAND:-1:-:-:-:-:2
+Erase Frame:IIS_WRITE \fB|\fP fb:FEEDBACK:-:-:-:fr:-:-
+
+Old Write WCS:IIS_WRITE\fB|\fPPACKED:WCS:-N:-:-:fr:fb:320
+Old Read WCS:IIS_READ:WCS:-:-:-:fr:wcs:320
+
+WCS Version?:IIS_READ:WCS:-:1:1:-:-:320
+WCS by Number?:IIS_READ:WCS:-:1:-:fr:wcs:1024
+New Write WCS:IIS_WRITE\fB|\fPPACKED:WCS:-N:1:-:fr:fb:1024
+New Read WCS:IIS_READ:WCS:-:1:-:fr:wcs:1024
+:_:_:_:_:_:_:_:_
+.TE
+.KE
+
+.TS
+l l l.
+Where NB = number of bytes expected or written
+ x = x position of operation in frame buffer coords
+ y = y position of operation in frame buffer coords
+ fr = frame number (passed as bitflag (i.e. 1, 2 ,4 8, etc)
+ fb = frame buffer config number (zero indexed)
+ N = length of WCS string
+ wcs = WCS number (usually zero)
+ Data = the number of bytes of data to be read or written following the header packet.
+
+ IIS_WRITE = 0400000
+ IIS_READ = 0100000
+ COMMAND = 0100000
+ PACKED = 0040000
+ IMC_SAMPLE = 0040000
+
+ MEMORY = 001
+ LUT = 002
+ FEEDBACK = 005
+ IMCURSOR = 020
+ WCS = 021
+.TE
+
+TID fields can be logically OR'd with the PACKED flag indicating the number
+of data bytes is exactly \fIthingct\fR bytes long, otherwise \fIthingct\fR
+must be specified as half the number of data bytes. In a cursor read, if
+the IIS_READ flag is OR'd with IMC_SAMPLE the logical cursor position (i.e.
+the last value read or set) is returned immediately, otherwise the server
+will wait for a keystroke to be hit before returning a string containing the
+(x,y) position, wcs of the read, and the keystroke. When setting the frame
+you must send a short integer in the data containing the frame selected.
+
+.SH "ISM COMMUNICATIONS"
+
+The ISM (Image Support Module) can be any external task which
+connects to XImtool over a socket. Communications are limited to simple
+null-terminated text strings. In most cases these strings are just the
+standard OBM messages sent to XImtool objects but can also include Tcl
+callback code (either ISM-specific callbacks, procedures which can be
+added to the callback list for existing XImtool objects, or even new GUI
+code to create panels and new objects).
+
+.SS "ISM SOCKET CONNECTION"
+
+The ISM first requests a connection to XImtool on a dedicated
+socket whose default value is "/tmp/.ISM%d", where the '%d' is replaced
+by the userid allowing multiple users on a machine to have independent
+sockets. The XImtool 'ism_addr' resource or "-ismdev" command-line option
+can be used to change this address, a value of 'none' will disable ISM
+communications. The socket may also be set with an ISMDEV environment
+variable which will override the resource or command-line options.
+
+Once a connection request is received, XImtool replies with
+a message telling the ISM to reconnect on a different socket, it then
+frees the initial connection allowing multiple other ISMs to request
+their own connection. The communications between XImtool and the ISM
+are carried out entirely over this second negotiated socket. Once connected,
+the ISM appears as just another named object which can receive OBM messages.
+
+.SS "COMMUNICATIONS PROTOCOL"
+
+Messages from the ISM are written to the connection socket and must
+be preceeded by one of the following keywords:
+.RS
+.TP 15
+.B callback
+Negotiate a connection on another socket
+.TP 15
+.B ready
+Client is ready to begin processing
+.TP 15
+.B quit
+Client is shutting down and disconnecting
+.TP 15
+.B send
+Send a message to another object
+.RE
+.sp 0.8
+
+Where messages are of the form:
+.RS
+.TP 30
+.B connect <\fIname\fP>
+Request a connection for the <\fIname\fP> ISM
+.TP 30
+.B ready <\fIname\fP>
+Reconnection request for the <\fIname\fP> ISM on negotiated socket, ISM is
+ready to processing.
+.TP 30
+.B send <\fIobj\fP> '{' <\fImsg\fP> '}'
+Send <\fImsg\fP> to the named <\fIobj\fP>. The message may be any valid string that
+will be understood by the recipient. The object may be any object in
+the GUI or OBM (see below).
+.TP 30
+.B quit
+ISM is shutting down. The named is determined from the communications
+channel, ISM is responsible for any cleanup of it's callbacks before
+issuing the shutdown.
+.RE
+
+All messages must be null-terminated. XImtool will buffer the text until
+a complete message is received. Once an ISM client has delivered a QUIT
+message no further messages will be sent the that ISM.
+
+In OBM terminology the ISM is a named Client class object, where the name
+is set in the connection request. Messages sent to the ISM should use
+this name, messages sent to "client" are still interpreted to mean the
+XImtool client.
+
+The content of messages delivered to the ISM are totally free-form and may
+contain any text the ISM is expected to understand.
+
+.SS "GUI OBJECTS"
+
+While the ISM can send a message to any object in the task, there
+is a GUI Parameter object called 'ism_msg' designed especially to process
+messages from the ISM. The callback in the GUI is expecting a message
+beginning with one of the following keywords:
+.RS
+.TP 15
+.B source
+Source message text as Tcl code
+.TP 15
+.B alert
+Message contains error text to be displayed in the GUI 'alert' box
+.TP 15
+.B deliver
+Message text should be passed to a callback routine specific to that ISM.
+This processing callback may have been previously uploaded. The message text
+may be any form the processing callback is expected to understand.
+.TP 15
+.B info
+Message text is status output intended for the XImtool 'info' panel
+(connect/disconnect requests, etc)
+.RE
+
+In all cases the message is expected to be of the form
+
+ <\fIcmd\fP> <\fIism_name\fP> [ <\fIarg1\fP> <\fIarg2\fP> <...> ]
+
+where <cmd> is one of the above keywords, <ism_name> is the name of the
+ISM sending the message. The remainder of the message is passed as an 'argv'
+list to the processing callback uploaded for the ISM. The ISM is responsible
+for formatting these messages.
+
+
+.SH ENVIRONMENT
+.TP 30
+.B HOME
+Specifies user login directory
+.sp -0.5
+.TP 30
+.B DISPLAY
+Specifies which display screen to use
+.sp -0.5
+.TP 30
+.B "IMTOOLRC or imtoolrc"
+Frame buffer configuration file
+.sp -0.5
+.TP 30
+.B "ISMDEV"
+ISM Connection socket
+
+.TP 30
+.B "DEBUG_IIS"
+Debug IIS communications packets
+.sp -0.5
+.TP 30
+.B "DEBUG_ISM"
+Debug ISM communications packets
+.sp -0.5
+.TP 30
+.B "DEBUG_MAPPINGS"
+Debug WCS image mappings
+.sp -0.5
+
+.SH FILES
+.TP 30
+.B "/usr/local/lib/imtoolrc"
+Default frame buffer configuration file
+.sp -0.5
+.TP 30
+.B "/usr/local/lib/ximprint.cfg"
+Default printer configuration file
+.sp -0.5
+.TP 30
+.B "/usr/local/lib/imtoolcmap"
+Default colormap directory
+.sp -0.5
+.TP 30
+.B "/dev/imt1i"
+Default input display fifo
+.sp -0.5
+.TP 30
+.B "/dev/imt1o"
+Default output display fifo
+.sp -0.5
+.TP 30
+.B "/tmp/.IMT%d"
+Default unix display socket
+.sp -0.5
+.TP 30
+.B "/tmp/.ISM%d"
+Default unix ISM connection socket
+.sp -0.5
+
+.SH BUGS
+Users should report bugs to \fIiraf@noao.edu\fR.
+
+.SH SEE ALSO
+xgterm(1), xtapemon(1)
+
+.SH COPYRIGHT
+Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
diff --git a/vendor/x11iraf/ximtool/ximtool.ps b/vendor/x11iraf/ximtool/ximtool.ps
new file mode 100644
index 00000000..336513cf
--- /dev/null
+++ b/vendor/x11iraf/ximtool/ximtool.ps
@@ -0,0 +1,16410 @@
+%!PS-Adobe-1.0
+%%Creator: devps (Pipeline Associates, Inc.)
+%%CreationDate: Sun Aug 12 22:32:59 2001
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+
+/X{exch}def
+/r{rmoveto}def
+/m{moveto}def
+/l{lineto}def
+/rl{rlineto}def
+/lc{yc X xc X l st}def
+/mc{yc X xc X m}def
+/el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr}def
+/ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st}def
+/sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct}def
+/st{stroke}def
+/gs{gsave}def
+/gr{grestore}def
+/cp{currentpoint}def
+/np{newpath}def
+/ct{curveto}def
+/m0{0 0 moveto}def
+/BP{/devps-save save def m0}def
+/EP{
+clear devps-save restore
+showpage}def
+/res 10.000000 def
+/V{res neg div 792 add
+currentpoint pop X
+m}def
+/H{res div
+currentpoint X pop
+moveto}def
+/h{res div 0 r}def
+/v{res neg div 0 X r}def
+/xc{res div}def
+/yc{res neg div 792 add}def
+/S{X H show}def
+/psize 10 def
+/height 1 def
+/slant 0 def
+/FF{findfont X dup 12 div setlinewidth /psize X def
+ [psize 0 psize height mul slant sin slant cos div mul psize height mul 0 0]
+ makefont setfont}def
+/shade{gs
+ /dy X def
+ /dx X def
+ np m
+ setgray
+ 0 dy rl
+ dx 0 rl
+ 0 dy neg rl
+ dx neg 0 rl
+ closepath
+ fill
+gr}def
+1 setlinecap
+/R{/Times-Roman FF}def
+/B{/Times-Bold FF}def
+/I{/Times-Italic FF}def
+/Y{/Symbol FF}def
+/C{/Courier FF}def
+%% Troff special characters not on Symbol font
+%% Copyright (C) 1986 by Pipeline Associates, Inc.
+%% Version 1.1
+/altRTD 20 dict def
+altRTD begin
+/s{setcachedevice}def
+/C{1000 1000 scale}def
+/m{moveto}def
+/c{curveto}def
+/S{stroke}def
+/l{lineto}def
+/a{arcto}def
+/p{pop}def
+/sl{setlinewidth}def
+end
+/F_Troff 17 dict def F_Troff begin
+systemdict /currentpacking known
+{/SavePacking currentpacking def true setpacking}if
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/UniqueID 8277003 def
+/FontMatrix [.001000 0 0 .001000 0 0] def
+/FontBBox [-12 -105 942 855 ] def
+/Encoding 256 array def
+/CD 256 1 add dict def
+/FontInfo 3 dict def FontInfo begin
+/UnderlinePosition -133 def /UnderlineThickness 20 def end
+/FontName (Troff) def
+0 1 256 1 sub{Encoding exch /.notdef put}for
+CD /.notdef{500 0 setcharwidth{}}put
+Encoding (1) 0 get /br put
+%% bold vertical rule used by tbl
+CD /br{
+C
+0 0 -.5 -.5 1 1 s
+np
+.05 sl
+0 -.1 m
+0 .9 l
+{S}
+}put
+Encoding (2) 0 get /ul put
+%% underline used by tbl
+CD /ul{
+C
+.5 0 -.5 -.5 1 1 s
+np
+.05 sl
+0 -.1 m
+.5 -.1 l
+{S}
+}put
+Encoding (3) 0 get /ru put
+%% baseline rule
+CD /ru{
+C
+.5 0 -.5 -.5 1 1 s
+np
+.05 sl
+m0
+.5 0 l
+{S}
+}put
+Encoding (4) 0 get /vr put
+%% vertical rule
+CD /vr{
+C
+0 0 -.5 -.5 1 1 s
+np
+.05 sl
+m0
+0 1 l
+{S}
+}put
+Encoding (5) 0 get /sq put
+%% square
+CD /sq{
+C
+.5 0 -.5 -.5 1 1 s
+np
+.05 sl
+0 .25 m
+0 .5 rl
+.5 0 rl
+0 -.5 rl
+-.5 0 rl
+closepath
+{S}
+}put
+Encoding (6) 0 get /bx put
+%% solid box
+CD /bx{
+C
+.5 0 -.5 -.5 1 1 s
+np
+0 .25 m
+0 .5 rl
+.5 0 rl
+0 -.5 rl
+-.5 0 rl
+closepath
+{fill}
+}put
+Encoding (7) 0 get /rn put
+%% radical extender
+CD /rn{
+C
+.5 0 -.5 -.5 1 1 s
+np
+.03 sl
+-.03 .9 m
+.5 0 rl
+{S}
+}put
+Encoding (8) 0 get /GR put
+%% gray mask
+CD /GR{
+C
+.5 0 setcharwidth
+.5 setgray
+np
+0 -.1 m
+0 1 rl
+.5 0 rl
+0 -1 rl
+-.5 0 rl
+closepath
+{fill}
+}put
+Encoding 97 /a put
+CD /a{1000 0 0 66 942 421 s 430 415
+m 578 406 678 349 662 319 c 655 306 614 287 583
+296 c 570 300 466 340 438 332 c 365 309 335 213
+270 209 c 0 310 m 108 310 l 108 114 l 0
+114 l 0 310 l 42 161 m 42 134 l 66 134 l 66
+161 l 42 161 l 47 155 m 47 140 l 62 140 l 62
+155 l 47 155 l 110 133 m 226 113 300 66 410
+80 c 497 91 550 69 634 76 c 645 76 663 92 669
+107 c 677 125 673 141 668 160 c 725 334 m 758
+332 734 253 701 250 c 501 325 m 475 316 476 309
+473 302 c 465 282 482 263 499 257 c 552 236 615
+253 689 253 c 701 253 713 236 713 218 c 712 194
+702 168 678 161 c 671 159 663 160 655 160 c 591
+158 516 156 479 168 c 461 173 453 191 453 210 c 453
+224 456 235 466 244 c 476 253 490 252 503 255 c 459
+84 m 447 96 435 106 435 123 c 435 136 440 145 447
+155 c 453 163 462 168 469 173 c 110 293 m 173
+318 300 421 435 415 c 609 407 852 416 885 411 c 898
+409 924 411 930 380 c 942 316 828 339 742 334 c 731
+334 730 335 725 335 c 701 336 685 336 660 336 c{S}}put
+Encoding 98 /b put
+CD /b{1000 0 -12 66 930 421 s 500
+415 m 352 406 252 349 268 319 c 275 306 316 287
+347 296 c 360 300 464 340 492 332 c 565 309 595
+213 660 209 c 930 310 m 822 310 l 822 114 l 930
+114 l 930 310 l 888 161 m 888 134 l 864 134
+l 864 161 l 888 161 l 883 155 m 883 140 l 868
+140 l 868 155 l 883 155 l 820 133 m 704 113
+630 66 520 80 c 433 91 380 69 296 76 c 285 76
+267 92 261 107 c 253 125 257 141 262 160 c 205
+334 m 172 332 196 253 229 250 c 429 325 m 455
+316 454 309 457 302 c 465 282 448 263 431 257 c 378
+236 315 253 241 253 c 229 253 217 236 217 218 c 218
+194 228 168 252 161 c 259 159 267 160 275 160 c 339
+158 414 156 451 168 c 469 173 477 191 477 210 c 477
+224 474 235 464 244 c 454 253 440 252 427 255 c 471
+84 m 483 96 495 106 495 123 c 495 136 490 145 483
+155 c 477 163 468 168 461 173 c 820 293 m 757
+318 630 421 495 415 c 321 407 78 416 45 411 c 32
+409 6 411 0 380 c -12 316 102 339 188 334 c 199
+334 200 335 205 335 c 229 336 245 336 270 336 c{S}}put
+Encoding 99 /c put
+CD /c{1000 0 184 0 827 627 s 185 315
+m 186 488 332 627 505 625 c 682 623 827 467 815
+290 c 804 124 666 0 500 0 c 327 0 184 142 185
+315 c{S}}put
+Encoding 100 /d put
+CD /d{590 0 134 158 477 500 s 300
+160 m 208 162 134 238 135 330 c 136 423 212 500
+305 500 c 397 500 473 427 475 335 c 477 239 396
+158 300 160 c{fill}}put
+Encoding 101 /e put % Bell Symbol
+CD /e{1010 0 -100 -210 1010 1010 s 100 sl 0 setlinecap
+420 300 450 0 360 arc
+420 650 m 420 575 l S
+newpath 120 125 m 720 125 l 75 sl S
+420 125 m 420 25 l S
+220 400 m 220 175 120 175 100 a p p p p
+220 400 m 220 550 420 550 80 a p p p p
+620 400 m 620 175 720 175 100 a p p p p
+620 400 m 620 550 420 550 80 a p p p p
+295 550 m 545 550 l{S}}put
+/BuildChar{altRTD /BuildChar get exec}def end
+altRTD begin /BuildChar{altRTD begin
+/char exch def /fontdict exch def save
+/charname fontdict /Encoding get char get def
+fontdict /StrokeWidth get sl
+fontdict /CD get dup charname known
+{charname}{/.notdef}ifelse get newpath exec
+fontdict /PaintType get 0 eq{exec}{p S}ifelse
+restore end}def end
+systemdict /currentpacking known{F_Troff /SavePacking get setpacking}if
+/Troff F_Troff definefont pop
+/Y1{/Troff FF}def
+%%EndProlog
+%%Page: 1 1
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+120 V
+1260(#)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(1)S
+7920 V
+EP
+%%Page: 1 2
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+900(NAME)S
+1080 V
+10 R
+1260(ximtool)S
+1602(\261)S
+1682(interactive)S
+2133(image)S
+2407(display)S
+2726(program)S
+3094(for)S
+3240(the)S
+3392(X)S
+3494(Window)S
+3868(System)S
+1308 V
+9 B
+900(SYNOPSIS)S
+1428 V
+10 B
+1260(ximtool)S
+1612([\261)S
+10 I
+1695(toolkitoption)S
+10 B
+2237(...])S
+2375([)S
+10 I
+2438(options)S
+10 B
+2763(...])S
+1656 V
+9 B
+900(OPTIONS)S
+1776 V
+10 B
+1260(-basePixel)S
+10 I
+1723(N)S
+1896 V
+10 R
+1510(The)S
+1709(base)S
+1930(colormap)S
+2351(cell)S
+2539(used)S
+2766(by)S
+2910(the)S
+3076(colormap.)S
+3552(This)S
+3774(essentially)S
+4240(allows)S
+4545(you)S
+4739(to)S
+4861(reserve)S
+10 I
+5192(basePixel)S
+2016 V
+10 R
+1510(colors)S
+1793(in)S
+1910(the)S
+2071(global)S
+2360(colormap)S
+2776(for)S
+2931(other)S
+3175(applications.)S
+3752(The)S
+3946(default)S
+4262(is)S
+4367(64,)S
+4530(if)S
+4629(changed)S
+4999(you'll)S
+5276(need)S
+5502(to)S
+2136 V
+1510(also)S
+1701(specify)S
+2019(the)S
+10 I
+2171(-cmapInitialize)S
+10 R
+2806(option)S
+3092(or)S
+3205(resource.)S
+2304 V
+10 B
+1260(-cmap1)S
+10 I
+1606(\256le)S
+2424 V
+10 R
+1510(User)S
+1728(colormap)S
+2135(1.)S
+2270(This)S
+2478(\257ag)S
+2658(allows)S
+2949(you)S
+3129(to)S
+3237(specify)S
+3555(a)S
+3629(colormap)S
+4036(to)S
+4144(be)S
+4268(made)S
+4514(available)S
+4904(at)S
+5006(task)S
+5197(startup.)S
+2592 V
+10 B
+1260(-cmap2)S
+10 I
+1606(\256le)S
+2712 V
+10 R
+1510(User)S
+1734(colormap)S
+2147(2.)S
+2288(This)S
+2502(\257ag)S
+2688(allows)S
+2985(you)S
+3171(to)S
+3285(specify)S
+3609(a)S
+3689(second)S
+4002(colormap)S
+4415(to)S
+4529(be)S
+4660(made)S
+4913(available)S
+5310(at)S
+5419(task)S
+2832 V
+1510(startup.)S
+3000 V
+10 B
+1260(-cmapDir1)S
+10 I
+1750(dir)S
+3120 V
+10 R
+1510(User)S
+1728(colormap)S
+2135(directory)S
+2525(1.)S
+2660(Speci\256es)S
+3051(a)S
+3125(directory)S
+3515(to)S
+3623(be)S
+3747(searched)S
+4125(for)S
+4271(colormaps.)S
+3288 V
+10 B
+1260(-cmapDir2)S
+10 I
+1750(dir)S
+3408 V
+10 R
+1510(User)S
+1742(colormap)S
+2164(directory)S
+2569(2.)S
+2719(Speci\256es)S
+3125(a)S
+3214(directory)S
+3619(to)S
+3742(be)S
+3881(searched)S
+4274(for)S
+4435(colormaps.)S
+4951(By)S
+5113(default)S
+5435(this)S
+3528 V
+1510(points)S
+1790(to)S
+1903(the)S
+2060(system)S
+2373(directory)S
+2768(/usr/local/lib/imtoolcmap,)S
+3840(allowing)S
+4225(a)S
+4304(set)S
+4450(of)S
+4568(site)S
+4741(default)S
+5052(colormaps)S
+5502(to)S
+3648 V
+1510(be)S
+1634(de\256ned)S
+1958(here.)S
+3816 V
+10 B
+1260(-cmapInitialize)S
+10 I
+1934(bool)S
+3936 V
+10 R
+1510(Initialize)S
+1908(the)S
+2073(ximtool)S
+2428(colormap)S
+2848(at)S
+2963(startup.)S
+3333(When)S
+3614(setting)S
+3924(the)S
+10 I
+4089(basePixel)S
+10 R
+4520(option)S
+4819(or)S
+4945(resource)S
+5325(this)S
+5513(is)S
+4056 V
+1510(required)S
+1876(in)S
+1988(order)S
+2232(to)S
+2344(force)S
+2582(the)S
+2738(Gterm)S
+3027(widget)S
+3333(to)S
+3445(update)S
+3745(its)S
+3874(global)S
+4158(colormap)S
+4569(resource)S
+4940(in)S
+5052(the)S
+5207(X)S
+5312(server.)S
+4176 V
+1510(The)S
+1695(default)S
+2002(is)S
+10 I
+2099(false)S
+10 R
+2288(.)S
+4344 V
+10 B
+1260(-cmapName)S
+10 I
+1805(name)S
+4464 V
+10 R
+1510(Name)S
+1784(used)S
+2003(for)S
+2156(private)S
+2470(colormap.)S
+2939(The)S
+3131(default)S
+3445(for)S
+3598(all)S
+3735(IRAF)S
+4000(imaging)S
+4365(applications)S
+4885(is)S
+10 I
+4989(image)S
+10 R
+5233(.)S
+5325(Gterm)S
+4584 V
+1510(widget)S
+1822(based)S
+2089(imaging)S
+2457(applications)S
+2980(which)S
+3264(have)S
+3492(the)S
+3654(same)S
+3899(value)S
+4155(of)S
+4277(cmapName)S
+4770(will)S
+4965(share)S
+5214(the)S
+5375(same)S
+4704 V
+1510(colormap,)S
+1950(minimizing)S
+2450(colormap)S
+2865(\257ashing)S
+3220(and)S
+3402(allowing)S
+3790(multiple)S
+4162(applications)S
+4683(to)S
+4799(be)S
+4931(run)S
+5103(at)S
+5214(the)S
+5375(same)S
+4824 V
+1510(time.)S
+4992 V
+10 B
+1260(-con\256g)S
+10 I
+1579(N)S
+5112 V
+10 R
+1510(Initial)S
+1799(frame)S
+2081(bu)S
+2181 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2242(er)S
+2369(con\256guration)S
+2952(number.)S
+3362(The)S
+3567(default)S
+3894(value)S
+4160(is)S
+4277(1,)S
+4402(indicating)S
+4852(a)S
+4947(512x512)S
+5348(frame)S
+5232 V
+1510(bu)S
+1610 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1671(er)S
+1778(with)S
+1986(2)S
+2066(frames.)S
+2422(See)S
+2596(below)S
+2870(for)S
+3016(information)S
+3518(on)S
+3648(the)S
+3800(frame)S
+4062(bu)S
+4162 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4223(ers.)S
+5400 V
+10 B
+1260(-defgui)S
+5520 V
+10 R
+1510(Print)S
+1737(the)S
+1892(default)S
+2202(GUI)S
+2412(to)S
+2523(the)S
+2678(stdout.)S
+3011(The)S
+3199(GUI)S
+3409(is)S
+3509(a)S
+3586(Tcl)S
+3752(program)S
+4123(that)S
+4306(may)S
+4511(be)S
+4638(customized)S
+5126(by)S
+5259(the)S
+5414(user)S
+5640 V
+1510(and)S
+1684(reloaded)S
+2057(using)S
+2304(the)S
+10 I
+2456(-gui)S
+10 R
+2647(option)S
+2933(or)S
+3046(the)S
+10 I
+3198(gui)S
+10 R
+3356(resource)S
+3723(parameter.)S
+5808 V
+10 B
+1260(-displayPanner)S
+10 I
+1941(bool)S
+5928 V
+10 R
+1510(Display)S
+1859(panner)S
+2168(marker)S
+2488(window)S
+2848(at)S
+2958(startup.)S
+3323(If)S
+3427(set,)S
+3601(a)S
+3683(panner)S
+3993(window)S
+4354(showing)S
+4732(the)S
+4893(full)S
+5071(frame)S
+5342(bu)S
+5442 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5503(er)S
+6048 V
+1510(will)S
+1696(appear)S
+1991(in)S
+2099(the)S
+2251(upper-right)S
+2730(side)S
+2921(of)S
+3034(the)S
+3186(main)S
+3416(display)S
+3735(window.)S
+6216 V
+10 B
+1260(-displayCoords)S
+10 I
+1941(bool)S
+6336 V
+10 R
+1510(Display)S
+1855(WCS)S
+2106(coordinate)S
+2561(marker)S
+2877(window)S
+3233(at)S
+3339(startup.)S
+3700(If)S
+3800(set,)S
+3970(a)S
+4048(coordinate)S
+4503(readout)S
+4836(text)S
+5020(marker)S
+5336(show-)S
+6456 V
+1510(ing)S
+1668(will)S
+1854(appear)S
+2149(in)S
+2257(the)S
+2409(lower-right)S
+2888(side)S
+3079(of)S
+3192(the)S
+3344(main)S
+3574(display)S
+3893(window.)S
+6624 V
+10 B
+1260(-\256fo)S
+10 I
+1462(pipe)S
+6744 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(name)S
+2299(of)S
+2412(the)S
+2564(\256fo)S
+2733(pipe)S
+2936(to)S
+3045(be)S
+3170(used,)S
+3409(the)S
+10 I
+3562(i)S
+10 R
+3621(and)S
+10 I
+3796(o)S
+10 R
+3877(su)S
+3966 H
+ (f)show 10 -.5 mul h (\256)show
+10 R
+4050(xes)S
+4214(will)S
+4401(be)S
+4526(added)S
+4795(automatically.)S
+5425(The)S
+6864 V
+1510(default)S
+1817(pipe)S
+2019(names)S
+2304(will)S
+2490(be)S
+2614(/dev/imt1i)S
+3056(\(input)S
+3325(pipe\))S
+3560(and)S
+3734(/dev/imt1o)S
+4198(\(output)S
+4517(pipe\).)S
+7032 V
+10 B
+1260(-\256fo_only)S
+7152 V
+10 R
+1510(If)S
+1615(set,)S
+1790(only)S
+2007(\256fo)S
+2185(pipes)S
+2435(will)S
+2630(be)S
+2763(used)S
+2985(for)S
+3140(communication)S
+3801(with)S
+4018(a)S
+4101(client)S
+4363(program,)S
+4766(sockets)S
+5100(will)S
+5296(be)S
+5430(dis-)S
+7272 V
+1510(abled.)S
+7752 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(1)S
+7920 V
+EP
+%%Page: 2 3
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(-gui)S
+10 I
+1457(\256le)S
+1080 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(GUI)S
+2260(\256le)S
+2418(to)S
+2526(be)S
+2650(used.)S
+1248 V
+10 B
+1260(-help)S
+10 R
+1510(Print)S
+1735(a)S
+1809(summary)S
+2211(of)S
+2324(command)S
+2748(line)S
+2928(options)S
+3253(to)S
+3361(the)S
+3513(screen.)S
+1416 V
+10 B
+1260(-imtoolrc)S
+10 I
+1683(\256le)S
+1536 V
+10 R
+1510(Speci\256es)S
+1923(the)S
+2097(frame)S
+2381(bu)S
+2481 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2542(er)S
+2671(con\256guration)S
+3257(\256le)S
+3438(to)S
+3569(be)S
+3716(used.)S
+4007(See)S
+4204(below)S
+4501(for)S
+4670(information)S
+5195(on)S
+5348(frame)S
+1656 V
+1510(bu)S
+1610 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1671(ers.)S
+1824 V
+10 B
+1260(-inet_only)S
+1944 V
+10 R
+1510(If)S
+1611(set,)S
+1782(only)S
+1995(inet)S
+2180(sockets)S
+2509(will)S
+2700(be)S
+2829(used)S
+3047(for)S
+3198(communication)S
+3855(with)S
+4068(a)S
+4147(client)S
+4404(program,)S
+4802(\256fo)S
+4976(pipes)S
+5222(and)S
+5402(unix)S
+2064 V
+1510(sockets)S
+1834(will)S
+2020(be)S
+2144(disabled.)S
+2232 V
+10 B
+1260(-invert)S
+2352 V
+10 R
+1510(Start)S
+1748(XImtool)S
+2136(using)S
+2402(inverted)S
+2778(colormaps.)S
+3298(When)S
+3585(set,)S
+3770(a)S
+3863("normalized")S
+4443(display)S
+4781(will)S
+4987(always)S
+5314(be)S
+5458(the)S
+2472 V
+1510(inverse)S
+1828(of)S
+1941(the)S
+2093(selected)S
+2444(colormap.)S
+2640 V
+10 B
+1260(-ismdev)S
+10 I
+1623(dev)S
+2760 V
+10 R
+1510(Speci\256es)S
+1914(the)S
+2079(plug-in)S
+2411(ISM)S
+2633(connection)S
+3115(socket.)S
+3469(This)S
+3691(should)S
+4002(be)S
+4140(a)S
+4228(unix)S
+4450(domain)S
+4794(socket)S
+5093(of)S
+5220(the)S
+5386(form)S
+2880 V
+1510(")S
+10 I
+1551(/tmp/.ISM%d)S
+10 R
+2081(",)S
+2189(where)S
+2474(the)S
+10 I
+2638(%d)S
+10 R
+2813(will)S
+3011(be)S
+3147(replaced)S
+3526(by)S
+3667(the)S
+3830(user)S
+4037(id.)S
+4211(Once)S
+4462(an)S
+4597(ISM)S
+4816(has)S
+4990(connected)S
+5435(this)S
+3000 V
+1510(port)S
+1701(is)S
+1798(freed)S
+2032(to)S
+2140(accept)S
+2424(other)S
+2659(connections.)S
+3168 V
+10 B
+1260(-maxColors)S
+10 I
+1789(N)S
+3288 V
+10 R
+1510(Specify)S
+1845(the)S
+1997(max)S
+2199(number)S
+2534(of)S
+2647(colors)S
+2921(to)S
+3029(be)S
+3153(used)S
+3366(for)S
+3512(the)S
+3664(display.)S
+3456 V
+10 B
+1260(-memModel)S
+10 I
+1805(type)S
+3576 V
+10 R
+1510(Determines)S
+2003(how)S
+2208(ximtool)S
+2553(uses)S
+2758(memory)S
+3125(in)S
+3237(the)S
+3393(ximtool)S
+3739(client)S
+3995(and)S
+4173(the)S
+4329(X)S
+4435(server.)S
+4737(The)S
+4926(options)S
+5255(are)S
+10 I
+5410(fast)S
+10 R
+5555(,)S
+3696 V
+10 I
+1510(beNiceToServer)S
+10 R
+2153(,)S
+2220(and)S
+10 I
+2406(small)S
+10 R
+2623(.)S
+2720(The)S
+2917(default)S
+3236(is)S
+10 I
+3345(fast)S
+10 R
+3490(,)S
+3557(which)S
+3843(uses)S
+4057(server)S
+4342(pixmaps)S
+4723(to)S
+4843(make)S
+5101(frame)S
+5374(blink)S
+3816 V
+1510(fast.)S
+1742(This)S
+1953(is)S
+2053(recommended)S
+2651(unless)S
+2934(server)S
+3210(memory)S
+3576(is)S
+3676(very)S
+3886(limited.)S
+4258(Note)S
+4485(that)S
+4668(even)S
+4889(in)S
+5000(fast)S
+5177(mode,)S
+5458(the)S
+3936 V
+1510(server)S
+1792(pixmap)S
+2131(is)S
+2237(only)S
+2454(the)S
+2615(size)S
+2808(of)S
+2929(the)S
+3089(display)S
+3416(window,)S
+3801(so)S
+3928(memory)S
+4299(usage)S
+4564(is)S
+4669(reasonable)S
+5133(even)S
+5359(if)S
+5458(the)S
+4056 V
+1510(frame)S
+1772(bu)S
+1872 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1933(er)S
+2040(is)S
+2137(very)S
+2344(large.)S
+4224 V
+10 B
+1260(-nframes)S
+10 I
+1672(N)S
+4344 V
+10 R
+1510(Speci\256es)S
+1913(the)S
+2077(number)S
+2424(of)S
+2549(frame)S
+2823(bu)S
+2923 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2984(ers)S
+3142(to)S
+3262(con\256gure)S
+3681(at)S
+3795(startup.)S
+4164(By)S
+4323(default)S
+4642(there)S
+4883(will)S
+5081(be)S
+5217(2)S
+5309(frames)S
+4464 V
+1510(available,)S
+1925(a)S
+1999(maximum)S
+2435(of)S
+2548(4)S
+2628(frames)S
+2929(are)S
+3080(allowed.)S
+4632 V
+10 B
+1260(-port)S
+10 I
+1506(N)S
+4752 V
+10 R
+1510(Speci\256es)S
+1901(the)S
+2053(port)S
+2244(number)S
+2579(to)S
+2687(use)S
+2850(when)S
+3096(connecting)S
+3564(through)S
+3905(an)S
+4029(inet)S
+4209(socket.)S
+4920 V
+10 B
+1260(-port_only)S
+5040 V
+10 R
+1510(Same)S
+1770(as)S
+10 I
+1891(-inet_only)S
+10 R
+2334(option.)S
+2683(If)S
+2787(set,)S
+2961(only)S
+3177(inet)S
+3365(sockets)S
+3697(will)S
+3891(be)S
+4023(used)S
+4244(for)S
+4398(communication)S
+5058(with)S
+5275(a)S
+5358(client)S
+5160 V
+1510(program.)S
+5328 V
+10 B
+1260(-printCon\256g)S
+10 I
+1824(name)S
+5448 V
+10 R
+1510(Speci\256es)S
+1916(the)S
+2083(printer)S
+2394(con\256guration)S
+2973(\256le)S
+3147(to)S
+3271(use.)S
+3505(By)S
+3668(default)S
+3991(this)S
+4182(will)S
+4384(be)S
+4524(/usr/local/lib/ximprint.cfg.)S
+5568 V
+1510(See)S
+1684(below)S
+1958(for)S
+2104(more)S
+2339(information)S
+2841(on)S
+2971(con\256guring)S
+3462(output)S
+3748(devices.)S
+5736 V
+10 B
+1260(-tile)S
+10 R
+1510(The)S
+1695(default)S
+2002(display)S
+2321(mode)S
+2573(is)S
+2670(to)S
+2778(view)S
+3002(one)S
+3177(frame)S
+3440(at)S
+3543(a)S
+3618(time.)S
+3852(In)S
+3966(tile)S
+4125(frames)S
+4427(mode,)S
+4705(2)S
+4786(or)S
+4900(4)S
+4981(frames)S
+5283(may)S
+5486(be)S
+5856 V
+1510(viewed)S
+1834(simultaneously)S
+2476(in)S
+2590(the)S
+2748(display)S
+3073(window.)S
+3486(All)S
+3650(the)S
+3808(usual)S
+4055(operations)S
+4507(\(zoom)S
+4798(and)S
+4977(pan,)S
+5181(colortable)S
+5976 V
+1510(enhancement,)S
+2091(cursor)S
+2370(readback,)S
+2784(etc.\))S
+3018(still)S
+3199(work)S
+3434(for)S
+3580(each)S
+3792(frame)S
+4054(even)S
+4272(when)S
+4518(in)S
+4626(tile)S
+4784(frames)S
+5085(mode.)S
+6144 V
+10 B
+1260(-unix)S
+10 I
+1513(name)S
+6264 V
+10 R
+1510(Speci\256es)S
+1909(the)S
+2069(unix)S
+2285(domain)S
+2623(socket)S
+2916(name)S
+3170(to)S
+3286(use.)S
+3512(A)S
+3622("%d")S
+3876(in)S
+3993(the)S
+4154(\256lename)S
+4537(will)S
+4732(be)S
+4865(replaced)S
+5241(with)S
+5458(the)S
+6384 V
+1510(user)S
+1706(id.)S
+6552 V
+10 B
+1260(-unix_only)S
+6672 V
+10 R
+1510(If)S
+1607(set,)S
+1774(only)S
+1983(unix)S
+2192(domain)S
+2523(sockets)S
+2848(will)S
+3035(be)S
+3160(used)S
+3374(for)S
+3521(communication)S
+4174(with)S
+4383(a)S
+4458(client)S
+4711(program,)S
+5105(inet)S
+5286(sockets)S
+6792 V
+1510(and)S
+1684(\256fos)S
+1892(will)S
+2078(be)S
+2202(disabled.)S
+7080 V
+9 B
+900(APPLICATION)S
+1557(RESOURCES)S
+7200 V
+10 R
+1260(XImtool)S
+1629(is)S
+1726(implemented)S
+2278(as)S
+2391(a)S
+2465(client)S
+2717(program)S
+3085(which)S
+3359(is)S
+3456(responsible)S
+3941(for)S
+4087(loading)S
+4418(the)S
+4571(frame)S
+4834(bu)S
+4934 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4995(ers/colormaps,)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(2)S
+7920 V
+EP
+%%Page: 3 4
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(communicating)S
+1917(with)S
+2130(clients,)S
+2451(etc,)S
+2627(and)S
+2806(a)S
+2885(user-modi\256able)S
+3547(GUI)S
+3759(\256le)S
+3922(written)S
+4240(as)S
+4358(a)S
+4437(Tcl)S
+4605(script)S
+4862(which)S
+5141(handles)S
+5480(all)S
+1080 V
+1260(the)S
+1412(user)S
+1608(interface)S
+1986(details.)S
+2332(The)S
+10 I
+2517(client)S
+2770(resources)S
+10 R
+3189(described)S
+3602(below)S
+3877(will)S
+4064(be)S
+4189(common)S
+4570(to)S
+4679(any)S
+4854(user-de\256ned)S
+5378(GUI,)S
+1200 V
+1260(the)S
+10 I
+1426(gui)S
+1598(resources)S
+10 R
+2030(may)S
+2246(change)S
+2572(depending)S
+3032(on)S
+3176(how)S
+3392(extensively)S
+3890(the)S
+4055(GUI)S
+4275(has)S
+4451(been)S
+4682(modi\256ed)S
+5081(by)S
+5224(the)S
+5389(user.)S
+1320 V
+1260(Each)S
+1495(of)S
+1615(these)S
+1857(components)S
+2377(has)S
+2547(its)S
+2679(own)S
+2888(set)S
+3036(of)S
+3156(resources,)S
+3594(but)S
+3759(to)S
+3874(the)S
+4033(user)S
+4236(setting)S
+4540(them)S
+4777(is)S
+4881(the)S
+5040(same)S
+5282(as)S
+5402(with)S
+1440 V
+1260(any)S
+1434(other)S
+1669(application.)S
+1680 V
+10 I
+1260(Gterm)S
+10 R
+1548(widget)S
+1853(resources)S
+2262(\(i.e.)S
+2450(those)S
+2694(for)S
+2844(the)S
+3000(main)S
+3234(image)S
+3512(window)S
+3868(or)S
+3985(colorbar\))S
+4384(may)S
+4590(be)S
+4718(set)S
+4863(as)S
+4980(either)S
+5241(client)S
+5497(or)S
+1800 V
+1260(GUI)S
+1467(resources.)S
+1928(See)S
+2102(the)S
+10 I
+2254(xgterm\(1\))S
+10 R
+2677(man)S
+2879(page)S
+3097(for)S
+3243(a)S
+3317(complete)S
+3713(description)S
+4187(of)S
+10 I
+4300(Gterm)S
+10 R
+4585(widget)S
+4887(resources.)S
+2088 V
+9 B
+1080(CLIENT)S
+1452(RESOURCES)S
+2208 V
+10 R
+1260(The)S
+1445(client)S
+1697(resources)S
+2103(generally)S
+2504(de\256ne)S
+2778(the)S
+2930(initial)S
+3194(state)S
+3407(of)S
+3520(the)S
+3672(application)S
+4146(or)S
+4259(set)S
+4400(con\256guration)S
+4963(parameters.)S
+2376 V
+10 B
+1620(Resource)S
+2043(Name)S
+2870(Default)S
+3216(Value)S
+2484 V
+10 R
+1620(defCon\256g)S
+2870(1)S
+2592 V
+1620(defNFrames)S
+2870(0)S
+2700 V
+1620(tileBorderWidth)S
+2870(3)S
+2808 V
+1620(tileBorderColor)S
+2870(9)S
+2916 V
+1620(autoscale)S
+2870(false)S
+3024 V
+1620(antialias)S
+2870(false)S
+3132 V
+1620(antialiasType)S
+2870(boxcar)S
+3240 V
+1620(tileFrames)S
+2870(false)S
+3348 V
+1620(highlightFrames)S
+2870(true)S
+3456 V
+1620(gui)S
+2870(default)S
+3564 V
+1620(imtoolrc)S
+2870(/usr/local/lib/imtoolrc)S
+3672 V
+1620(invert)S
+2870(false)S
+3780 V
+1620(memModel)S
+2870(fast)S
+3888 V
+1620(basePixel:)S
+2870(64)S
+3996 V
+1620(maxColors:)S
+2870(216)S
+4104 V
+1620(cmapInitialize:)S
+2870(false)S
+4212 V
+1620(cmap1)S
+2870(none)S
+4320 V
+1620(cmap2)S
+2870(none)S
+4428 V
+1620(cmapDir1)S
+2870(none)S
+4536 V
+1620(cmapDir2)S
+2870(/usr/local/lib/imtoolcmap)S
+4644 V
+1620(input_\256fo)S
+2870(/dev/imt1i)S
+4752 V
+1620(output_\256fo)S
+2870(/dev/imt1o)S
+4860 V
+1620(unixaddr)S
+2870(/tmp/.IMT%d)S
+4968 V
+1620(port)S
+2870(5137)S
+5076 V
+1620(ism_addr)S
+2870(/tmp/.ISM%d)S
+5184 V
+1620(ism_task)S
+2870("ism_wcspix.e)S
+3488(wcspix)S
+3801(&")S
+5424 V
+1260(Description)S
+1756(of)S
+1869(ximtool)S
+2211(client)S
+2463(resources:)S
+5712 V
+10 B
+1260(defCon\256g)S
+10 R
+2160(Default)S
+2499(frame)S
+2772(bu)S
+2872 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2933(er)S
+3051(con\256guration)S
+3625(number)S
+3971(on)S
+4112(startup.)S
+4480(See)S
+4665(below)S
+4950(for)S
+5107(more)S
+5353(infor-)S
+5832 V
+2160(mation)S
+2468(on)S
+2598(frame)S
+2860(bu)S
+2960 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3021(ers.)S
+6000 V
+10 B
+1260(defNFrames)S
+10 R
+2160(Default)S
+2496(number)S
+2838(of)S
+2958(frames)S
+3266(on)S
+3403(startup.)S
+3767(Set)S
+3932(to)S
+4047(zero)S
+4255(to)S
+4371(use)S
+4542(the)S
+4702(value)S
+4956(from)S
+5188(the)S
+5348(frame)S
+6120 V
+2160(bu)S
+2260 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2321(er)S
+2428(con\256guration)S
+2991(\()S
+10 I
+3024(imtoolrc)S
+10 R
+3363(\))S
+3426(\256le.)S
+6288 V
+10 B
+1260(tileBorderWidth)S
+6396 V
+1260(tileBorderColor)S
+10 R
+2160(Used)S
+2401(by)S
+2537(the)S
+2695(tile)S
+2859(frames)S
+3166(option.)S
+3513(Speci\256es)S
+3910(how)S
+4118(far)S
+4264(apart)S
+4499(to)S
+4613(space)S
+4870(the)S
+5029(frames)S
+5337(in)S
+5452(tile)S
+6516 V
+2160(frames)S
+2484(mode.)S
+2814(Color)S
+3095("9")S
+3280(refers)S
+3559(to)S
+3690(the)S
+3865(Gterm)S
+4172(widget)S
+4496(resource)S
+4885(color9,)S
+5217(which)S
+5513(is)S
+6636 V
+2160(assigned)S
+2534(a)S
+2608(color)S
+2843(with)S
+3051(its)S
+3176(own)S
+3378(resource.)S
+6804 V
+10 B
+1260(autoscale)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(autoscale)S
+3331(option.)S
+6972 V
+10 B
+1260(antialias)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(antialias)S
+3293(option.)S
+7140 V
+10 B
+1260(antialiasType)S
+10 R
+2160(Type)S
+2419(of)S
+2556(antialiasing.)S
+3126(Options)S
+3497(include)S
+10 I
+3846(boxcar)S
+10 R
+4178(\(default\),)S
+10 I
+4601(bilinear)S
+10 R
+4918(,)S
+10 I
+4998(nearest)S
+10 R
+5292(,)S
+10 I
+5372(area)S
+10 R
+5555(,)S
+7260 V
+10 I
+2160(blkavg)S
+10 R
+2426(,)S
+10 I
+2481(lowpass)S
+10 R
+2804(,)S
+2859(and)S
+10 I
+3033(gaussian)S
+10 R
+3389(.)S
+7740 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(3)S
+7920 V
+EP
+%%Page: 4 5
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(tileFrames)S
+10 R
+2160(Enable/disable)S
+2778(the)S
+2930(tile)S
+3088(frames)S
+3389(option.)S
+1128 V
+10 B
+1260(highlightFrames)S
+10 R
+2160(Determines)S
+2650(whether)S
+3001(the)S
+3153(current)S
+3465(frame)S
+3727(is)S
+3824(highlighted)S
+4310(when)S
+4556(in)S
+4664(tile)S
+4822(frames)S
+5123(mode.)S
+1296 V
+10 B
+1260(gui)S
+10 R
+2160(The)S
+2349(GUI)S
+2560(to)S
+2672(be)S
+2800(executed.)S
+3243("default")S
+3636(refers)S
+3896(to)S
+4008(the)S
+4164(default,)S
+4500(builtin)S
+4796(ximtool)S
+5142(GUI.)S
+5408(You)S
+1416 V
+2160(can)S
+2341(replace)S
+2671(this)S
+2859(with)S
+3080(your)S
+3306(own)S
+3521(GUI)S
+3741(\256le)S
+3911(if)S
+4014(you)S
+4206(are)S
+4369(bold)S
+4589(enough,)S
+4950(and)S
+5136(completely)S
+1536 V
+2160(change)S
+2472(the)S
+2624(look)S
+2832(and)S
+3006(functionality)S
+3547(of)S
+3660(the)S
+3812(GUI)S
+4019(if)S
+4110(desired.)S
+1704 V
+10 B
+1260(imtoolrc)S
+10 R
+2160(Where)S
+2496(to)S
+2645(\256nd)S
+2872(the)S
+3065(imtoolrc)S
+3475(\256le.)S
+3730(This)S
+3980(de\256nes)S
+4335(the)S
+4529(recognized)S
+5038(frame)S
+5342(bu)S
+5442 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5503(er)S
+1824 V
+2160(con\256gurations.)S
+1992 V
+10 B
+1260(invert)S
+10 R
+2160(Start)S
+2388(Ximtool)S
+2761(using)S
+3017(an)S
+3150(inverted)S
+3516(colormap.)S
+3987(When)S
+4264(set,)S
+4440(a)S
+4524("normalized")S
+5095(display)S
+5424(will)S
+2112 V
+2160(always)S
+2467(be)S
+2591(the)S
+2743(inverse)S
+3061(of)S
+3174(the)S
+3326(selected)S
+3677(colormap.)S
+2280 V
+10 B
+1260(memModel)S
+10 R
+2160(Determines)S
+2656(how)S
+2864(ximtool)S
+3212(uses)S
+3420(memory)S
+3789(in)S
+3904(the)S
+4063(ximtool)S
+4412(client)S
+4671(and)S
+4852(the)S
+5011(X)S
+5120(server.)S
+5425(The)S
+2400 V
+2160(options)S
+2491(are)S
+10 I
+2648(fast)S
+10 R
+2793(,)S
+10 I
+2853(beNiceToServer)S
+10 R
+3496(,)S
+3556(and)S
+10 I
+3735(small)S
+10 R
+3952(.)S
+4042(The)S
+4232(default)S
+4544(is)S
+10 I
+4646(fast)S
+10 R
+4791(,)S
+4851(which)S
+5130(uses)S
+5337(server)S
+2520 V
+2160(pixmaps)S
+2536(to)S
+2651(make)S
+2904(frame)S
+3173(blink)S
+3416(fast.)S
+3652(This)S
+3867(is)S
+3971(recommended)S
+4573(unless)S
+4861(server)S
+5142(memory)S
+5513(is)S
+2640 V
+2160(very)S
+2369(limited.)S
+2740(Note)S
+2966(that)S
+3148(even)S
+3368(in)S
+3478(fast)S
+3654(mode,)S
+3933(the)S
+4087(server)S
+4362(pixmap)S
+4694(is)S
+4793(only)S
+5003(the)S
+5157(size)S
+5344(of)S
+5458(the)S
+2760 V
+2160(display)S
+2491(window,)S
+2880(so)S
+3012(memory)S
+3388(usage)S
+3658(is)S
+3768(reasonable)S
+4237(even)S
+4468(if)S
+4572(the)S
+4737(frame)S
+5012(bu)S
+5112 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5173(er)S
+5293(is)S
+5403(very)S
+2880 V
+2160(large.)S
+2988 V
+10 B
+1260(basePixel)S
+3096 V
+1260(maxColors)S
+10 R
+2160(These)S
+2434(two)S
+2620(resources)S
+3032(determine)S
+3467(the)S
+3626(region)S
+3918(of)S
+4038(colormap)S
+4452(space)S
+4710(used)S
+4930(to)S
+5045(render)S
+5336(image)S
+3216 V
+2160(pixels.)S
+3384 V
+10 B
+1260(cmapInitialize)S
+10 R
+2160(Initialize)S
+2545(the)S
+2697(ximtool)S
+3039(colormap)S
+3446(at)S
+3548(startup.)S
+3905(This)S
+4113(is)S
+4210(a)S
+4284(required)S
+4646(resource)S
+5013(to)S
+5121(clear)S
+5345(a)S
+5420(pre-)S
+3504 V
+2160(vious)S
+2407(ximtool)S
+2749(colormap)S
+3156(allowing)S
+3536(a)S
+3610(new)S
+10 B
+3806(basePixel)S
+10 R
+4236(and)S
+10 B
+4410(maxColors)S
+10 R
+4906(to)S
+5014(take)S
+5210(e)S
+5254 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5315(ect.)S
+3672 V
+10 B
+1260(cmap1)S
+3780 V
+1260(cmap2)S
+10 R
+2160(User)S
+2389(colormap)S
+2807(\256les.)S
+3070(The)S
+3266(intent)S
+3535(here)S
+3748(is)S
+3857(to)S
+3977(allow)S
+4241(individual)S
+4689(colormaps)S
+5147(to)S
+5267(be)S
+5403(con-)S
+3900 V
+2160(veniently)S
+2562(speci\256ed)S
+2947(as)S
+3060(a)S
+3134(resource.)S
+4068 V
+10 B
+1260(cmapDir1)S
+4176 V
+1260(cmapDir2)S
+10 R
+2160(User)S
+2393(or)S
+2521(system)S
+2844(colormap)S
+3266(directories.)S
+3788(By)S
+3951(default)S
+4274(cmapDir2)S
+4719(points)S
+5010(to)S
+5134(the)S
+5302(system)S
+4296 V
+2160(directory)S
+2564(/usr/local/lib/imtoolcmap,)S
+3644(allowing)S
+4037(a)S
+4124(set)S
+4278(of)S
+4404(site)S
+4586(default)S
+4906(colormaps)S
+5365(to)S
+5486(be)S
+4416 V
+2160(de\256ned)S
+2484(here.)S
+2740(This)S
+2948(leaves)S
+3227(cmapDir1)S
+3656(available)S
+4046(to)S
+4154(a)S
+4228(user)S
+4424(colormap)S
+4831(directory.)S
+4584 V
+10 B
+1260(input_\256fo)S
+4692 V
+1260(output_\256fo)S
+10 R
+2160(The)S
+2354(input)S
+2600(and)S
+2784(output)S
+3080(\256fos)S
+3298(for)S
+3454(\256fo)S
+3633(i/o.)S
+3834("Input")S
+4167(and)S
+4351("output")S
+4729(are)S
+4890(from)S
+5124(the)S
+5286(client's)S
+4812 V
+2160(point)S
+2396(of)S
+2509(view.)S
+2788(Note)S
+3012(that)S
+3192(only)S
+3400(one)S
+3574(display)S
+3893(server)S
+4166(can)S
+4334(use)S
+4497(a)S
+4571(\256fo-pair)S
+4928(at)S
+5030(one)S
+5204(time.)S
+4980 V
+10 B
+1260(unixaddr)S
+10 R
+2160(Template)S
+2569(address)S
+2900(for)S
+3048(unix)S
+3258(domain)S
+3591(socket.)S
+3934(The)S
+4122(user)S
+4321(must)S
+4549(have)S
+4770(write)S
+5008(permission)S
+5480(on)S
+5100 V
+2160(this)S
+2338(directory,)S
+2756(or)S
+2872(the)S
+3027(\256le)S
+3188(must)S
+3416(already)S
+3742(exist.)S
+10 I
+4019(%d)S
+10 R
+4152(,)S
+4210(if)S
+4304(given,)S
+4584(is)S
+4684(replaced)S
+5054(by)S
+5187(the)S
+5342(user's)S
+5220 V
+2160(UID.)S
+5388 V
+10 B
+1260(port)S
+10 R
+2160(TCP/IP)S
+2500(port)S
+2700(for)S
+2855(the)S
+3017(server.)S
+3355(Note)S
+3589(that)S
+3779(only)S
+3997(one)S
+4181(server)S
+4464(can)S
+4642(listen)S
+4899(on)S
+5039(a)S
+5123(port)S
+5324(at)S
+5436(one)S
+5508 V
+2160(time,)S
+2402(so)S
+2530(if)S
+2630(multiple)S
+3003(ximtool)S
+3354(servers)S
+3675(are)S
+3835(desired)S
+4161(on)S
+4299(the)S
+4459(same)S
+4702(machine,)S
+5103(they)S
+5313(should)S
+5628 V
+2160(be)S
+2284(given)S
+2536(di)S
+2614 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2675(erent)S
+2904(ports.)S
+5796 V
+10 B
+1260(ism_addr)S
+10 R
+2160(Template)S
+2576(address)S
+2914(for)S
+3070(ISM)S
+3288(unix)S
+3506(domain)S
+3846(socket.)S
+4166(The)S
+4361(user)S
+4567(must)S
+4802(have)S
+5030(write)S
+5275(permis-)S
+5916 V
+2160(sion)S
+2367(on)S
+2507(this)S
+2692(directory,)S
+3116(or)S
+3238(the)S
+3399(\256le)S
+3566(must)S
+3800(already)S
+4132(exist.)S
+10 I
+4415(%d)S
+10 R
+4548(,)S
+4612(if)S
+4712(given,)S
+4998(is)S
+5104(replaced)S
+5480(by)S
+6036 V
+2160(the)S
+2312(user's)S
+2580(UID.)S
+6204 V
+10 B
+1260(ism_task)S
+10 R
+2160(Command)S
+2616(string)S
+2883(to)S
+3000(execute)S
+3343(for)S
+3498(the)S
+3660(real-time)S
+4060(pixel)S
+4300(and)S
+4484(WCS)S
+4741(readout)S
+5080(ISM)S
+5298(\(Image)S
+6324 V
+2160(Support)S
+2507(Module\))S
+2881(task.)S
+6612 V
+9 B
+1080(GUI)S
+1277(RESOURCES)S
+6732 V
+10 R
+1260(In)S
+1394(principle)S
+1800(ximtool)S
+2163(can)S
+2352(have)S
+2592(any)S
+2788(number)S
+3145(of)S
+3280(di)S
+3358 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3419(erent)S
+3670(GUIs,)S
+3963(each)S
+4197(of)S
+4332(which)S
+4628(de\256nes)S
+4963(its)S
+5110(own)S
+5334(set)S
+5497(of)S
+6852 V
+1260(resources.)S
+1733(GUIs)S
+1991(typically)S
+2383(de\256ne)S
+2669(a)S
+2755(great)S
+2996(many)S
+3260(resources,)S
+3703(but)S
+3873(most)S
+4110(of)S
+4234(these)S
+4480(are)S
+4642(not)S
+4811(really)S
+5079(intended)S
+5464(for)S
+6972 V
+1260(modi\256cation)S
+1796(by)S
+1926(the)S
+2078(user)S
+2274(\(although)S
+2687(one)S
+2861(can)S
+3029(modify)S
+3348(them)S
+3578(if)S
+3669(desired\).)S
+7212 V
+1260(The)S
+1455(following)S
+1884(are)S
+2045(some)S
+2296(of)S
+2419(the)S
+2581(more)S
+2826(useful)S
+3110(resources)S
+3526(used)S
+3749(by)S
+3889(the)S
+4051(default)S
+4369(ximtool)S
+4722(GUI.)S
+4995(The)S
+10 I
+5191(imagewin)S
+7692 V
+10 R
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(4)S
+7920 V
+EP
+%%Page: 5 6
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(resources)S
+1666(are)S
+1817(Gterm)S
+2102(widget)S
+2404(resources.)S
+1248 V
+10 B
+1620(Main)S
+1878(Display)S
+2231(Gterm)S
+2543(Widget)S
+2884(Resources)S
+1416 V
+1650(Resource)S
+2073(Name)S
+3370(Default)S
+3716(Value)S
+1524 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.cmapName:)S
+3370(image)S
+1632 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.basePixel:)S
+3370(64)S
+1740 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.warpCursor:)S
+3370(True)S
+1848 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.raiseWindow:)S
+3370(True)S
+1956 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.deiconifyWindow:)S
+3370(True)S
+2064 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.ginmodeCursor:)S
+3370(circle)S
+2172 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.ginmodeBlinkInterval:)S
+3370(500)S
+2280 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color0)S
+2404(\(background\):)S
+3370(black)S
+2388 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color1)S
+2404(\(foreground\):)S
+3370(white)S
+2496 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color8)S
+2404(\(panner)S
+2738(highlight\):)S
+3370(#7c8498)S
+2604 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.color9)S
+2404(\(tileFrame)S
+2850(color\):)S
+3370(SteelBlue)S
+2712 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.width:)S
+3370(512)S
+2820 V
+10 Y
+1650(*)S
+10 R
+1700(imagewin.height:)S
+3370(512)S
+3108 V
+10 B
+1620(GUI)S
+1839(Resources)S
+3276 V
+1650(Resource)S
+2073(Name)S
+3370(Default)S
+3716(Value)S
+3384 V
+10 Y
+1650(*)S
+10 R
+1700(autoscale:)S
+3370(True)S
+3492 V
+10 Y
+1650(*)S
+10 R
+1700(zoomfactors:)S
+3370(1)S
+3450(2)S
+3530(4)S
+3610(8)S
+3600 V
+10 Y
+1650(*)S
+10 R
+1700(displayCoords:)S
+3370(True)S
+3708 V
+10 Y
+1650(*)S
+10 R
+1700(displayPanner:)S
+3370(True)S
+3816 V
+10 Y
+1650(*)S
+10 R
+1700(displayMagni\256er:)S
+3370(True)S
+3924 V
+10 Y
+1650(*)S
+10 R
+1700(blinkRate:)S
+3370(1.0)S
+4032 V
+10 Y
+1650(*)S
+10 R
+1700(pannerArea:)S
+3370(150)S
+10 Y
+3520(*)S
+10 R
+3570(150)S
+4140 V
+10 Y
+1650(*)S
+10 R
+1700(pannerGeom:)S
+3370(-5+5)S
+4248 V
+10 Y
+1650(*)S
+10 R
+1700(magni\256erArea:)S
+3370(100)S
+10 Y
+3520(*)S
+10 R
+3570(100)S
+4356 V
+10 Y
+1650(*)S
+10 R
+1700(magni\256erGeom:)S
+3370(+5+5)S
+4464 V
+10 Y
+1650(*)S
+10 R
+1700(wcsboxGeom:)S
+3370(-5-5)S
+4572 V
+10 Y
+1650(*)S
+10 R
+1700(maxContrast:)S
+3370(5.0)S
+4680 V
+10 Y
+1650(*)S
+10 R
+1700(warnings:)S
+3370(True)S
+4788 V
+10 Y
+1650(*)S
+10 R
+1700(centerBoxSize:)S
+3370(5)S
+4896 V
+10 Y
+1650(*)S
+10 R
+1700(peakCentroid:)S
+3370(True)S
+5184 V
+10 B
+1620(Alternate)S
+2054(GUI)S
+2273(Resources)S
+5352 V
+1650(Resource)S
+2073(Name)S
+3370(Default)S
+3716(Value)S
+5460 V
+10 Y
+1650(*)S
+10 R
+1700(showToolBar:)S
+3370(False)S
+5568 V
+10 Y
+1650(*)S
+10 R
+1700(showPanelBar:)S
+3370(False)S
+5808 V
+1260(Description)S
+1756(of)S
+1869(selected)S
+2220(resources:)S
+6096 V
+10 Y
+1260(*)S
+10 B
+1310(cmapName)S
+10 R
+2360(Name)S
+2638(used)S
+2861(for)S
+3018(private)S
+3336(colormap.)S
+3809(The)S
+4005(default)S
+4323(for)S
+4480(all)S
+4621(IRAF)S
+4890(imaging)S
+5259(applica-)S
+6216 V
+2360(tions)S
+2601(is)S
+2714("image".)S
+3141(Gterm)S
+3442(widget)S
+3760(based)S
+4033(imaging)S
+4407(applications)S
+4936(which)S
+5225(have)S
+5458(the)S
+6336 V
+2360(same)S
+2597(value)S
+2845(of)S
+2961(cmapName)S
+3448(will)S
+3637(share)S
+3880(the)S
+4035(same)S
+4273(colormap,)S
+4708(minimizing)S
+5203(colormap)S
+6456 V
+2360(\257ashing)S
+2707(and)S
+2881(allowing)S
+3261(multiple)S
+3625(applications)S
+4138(to)S
+4246(be)S
+4370(run)S
+4533(at)S
+4635(the)S
+4787(same)S
+5022(time.)S
+6624 V
+10 Y
+1260(*)S
+10 B
+1310(basePixel)S
+10 R
+2360(The)S
+2545(base)S
+2752(colormap)S
+3159(cell)S
+3333(used)S
+3546(by)S
+3676(the)S
+3828(display)S
+4147(colormap.)S
+6792 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.warpCursor)S
+10 R
+2360(Warp)S
+2611(pointer)S
+2924(into)S
+3110(image)S
+3384(window)S
+3736(when)S
+3982(initiating)S
+4374(a)S
+4448(cursor)S
+4727(read.)S
+6960 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.raiseWindow)S
+10 R
+2360(Raise)S
+2612(image)S
+2886(window)S
+3238(when)S
+3484(initiating)S
+3876(a)S
+3950(cursor)S
+4229(read.)S
+7128 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.deiconifyWindow)S
+7248 V
+10 R
+2360(Deiconify)S
+2789(image)S
+3063(window)S
+3415(if)S
+3506(necessary)S
+3923(when)S
+4169(initiating)S
+4561(a)S
+4635(cursor)S
+4914(read.)S
+7728 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(5)S
+7920 V
+EP
+%%Page: 6 7
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.ginmodeCursor)S
+1080 V
+10 R
+2360(Type)S
+2596(of)S
+2710(cursor)S
+2990(when)S
+3237(a)S
+3312(cursor)S
+3592(read)S
+3795(is)S
+3894(in)S
+4004(progress.)S
+4429(The)S
+4616(default)S
+4925(is)S
+5024(a)S
+5100(circle.)S
+5408(Any)S
+1200 V
+2360(selection)S
+2800(from)S
+3079(the)S
+3285(X)S
+3441(cursor)S
+3774(font)S
+4019(can)S
+4241(be)S
+4419(used.)S
+4741(A)S
+4897(special)S
+5258(case)S
+5513(is)S
+1320 V
+2360("full_crosshair")S
+3021(which)S
+3295(is)S
+3392(the)S
+3544(full)S
+3713(crosshair)S
+4103(cursor)S
+4382(of)S
+4495(the)S
+4647(Gterm)S
+4932(widget.)S
+1488 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.ginmodeBlinkInterval)S
+1608 V
+10 R
+2360(Determines)S
+2857(whether)S
+3215(the)S
+3374(cursor)S
+3660(blinks)S
+3942(when)S
+4195(a)S
+4277(cursor)S
+4564(read)S
+4773(is)S
+4878(in)S
+4994(progress.)S
+5425(The)S
+1728 V
+2360(value)S
+2606(is)S
+2703(given)S
+2955(in)S
+3063(milliseconds.)S
+1896 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color0)S
+10 R
+2360(Background)S
+2878(color.)S
+2064 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color1)S
+10 R
+2360(Foreground)S
+2856(color.)S
+2232 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color8)S
+10 R
+2360(Color)S
+2618(assigned)S
+2992(the)S
+3144(panner)S
+3445(window.)S
+2400 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.color9)S
+10 R
+2360(Color)S
+2618(used)S
+2831(for)S
+2977(the)S
+3129(tileFrames)S
+3581(highlight.)S
+2568 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.width)S
+10 R
+2360(Width)S
+2640(of)S
+2753(the)S
+2905(main)S
+3135(image)S
+3409(window.)S
+2736 V
+10 Y
+1260(*)S
+10 B
+1310(imagewin.height)S
+10 R
+2360(Height)S
+2662(of)S
+2775(the)S
+2927(main)S
+3157(image)S
+3431(window.)S
+2904 V
+10 Y
+1260(*)S
+10 B
+1310(pannerArea)S
+10 R
+2360(Area)S
+2583(in)S
+2691(pixels)S
+2960(of)S
+3073(the)S
+3225(panner)S
+3526(window.)S
+3072 V
+10 Y
+1260(*)S
+10 B
+1310(pannerGeom)S
+10 R
+2360(Where)S
+2655(to)S
+2763(place)S
+3003(the)S
+3155(panner)S
+3456(window.)S
+3240 V
+10 Y
+1260(*)S
+10 B
+1310(wcsboxGeom)S
+10 R
+2360(Where)S
+2655(to)S
+2763(place)S
+3003(the)S
+3155(coords)S
+3451(box.)S
+3408 V
+10 Y
+1260(*)S
+10 B
+1310(maxContrast)S
+10 R
+2360(Maximum)S
+2807(contrast)S
+3153(value.)S
+3816 V
+9 B
+900(DESCRIPTION)S
+3936 V
+10 R
+1260(As)S
+1401(a)S
+1475(display)S
+1794(server,)S
+2092(XImtool)S
+2461(is)S
+2558(started)S
+2854(as)S
+2967(a)S
+3041(separate)S
+3397(process)S
+3726(from)S
+3950(client)S
+4202(software)S
+4575(such)S
+4788(as)S
+4901(IRAF.)S
+5185(Once)S
+5426(it)S
+5513(is)S
+4056 V
+1260(running)S
+1606(it)S
+1697(will)S
+1888(accept)S
+2177(client)S
+2434(connections)S
+2946(simultaneously)S
+3587(on)S
+3721(\256fo)S
+3894(pipes,)S
+4164(unix)S
+4376(domain)S
+4710(sockets,)S
+5063(or)S
+5180(inet)S
+5364(sock-)S
+4176 V
+1260(ets.)S
+1427(A)S
+1530(display)S
+1850(client)S
+2103(like)S
+2285(the)S
+2439(IRAF)S
+10 I
+2699(DISPLAY)S
+10 R
+3120(task)S
+3313(makes)S
+3600(a)S
+3676(connection)S
+4146(and)S
+4322(sends)S
+4576(the)S
+4730(image)S
+5006(across)S
+5287(using)S
+5536(a)S
+4296 V
+1260(modi\256ed)S
+1660(IIS)S
+1826(Model)S
+2131(70)S
+2274(protocol.)S
+2705(Once)S
+2958(the)S
+3123(image)S
+3410(is)S
+3520(loaded)S
+3829(in)S
+3950(the)S
+4115(display)S
+4447(bu)S
+4547 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4608(er)S
+4728(it)S
+4827(may)S
+5042(be)S
+5179(enhanced,)S
+4416 V
+1260(saved)S
+1521(to)S
+1633(a)S
+1711(disk)S
+1912(\256le)S
+2074(in)S
+2186(a)S
+2264(number)S
+2603(of)S
+2720(di)S
+2798 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2859(erent)S
+3092(formats,)S
+3456(or)S
+3573(printed)S
+3890(as)S
+4007(Encapsulated)S
+4574(Postscript)S
+5004(to)S
+5117(a)S
+5196(printer)S
+5497(or)S
+4536 V
+1260(disk)S
+1475(\256le.)S
+1706(Up)S
+1876(to)S
+2002(sixteen)S
+2332(frame)S
+2611(bu)S
+2711 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2772(ers)S
+2935(are)S
+3103(allowed,)S
+3491(these)S
+3743(may)S
+3962(be)S
+4103(displayed)S
+4533(simultaneously)S
+5186(in)S
+5311(a)S
+5402(tiled)S
+4656 V
+1260(mode,)S
+1537(or)S
+1650(blinked)S
+1980(frame-to-frame.)S
+2673(Each)S
+2902(frame)S
+3164(may)S
+3366(have)S
+3584(its)S
+3710(own)S
+3913(colormap)S
+4321(or)S
+4435(brightness/contrast)S
+5221(enhance-)S
+4776 V
+1260(ment.)S
+1545(Pan/Zoom)S
+1992(and)S
+2166(cursor)S
+2445(readout)S
+2774(are)S
+2925(permitted)S
+3338(using)S
+10 I
+3585(markers)S
+10 R
+3912(,)S
+3967(on-line)S
+4280(help)S
+4482(is)S
+4579(also)S
+4770(available.)S
+5016 V
+1260(When)S
+1540(run)S
+1715(in)S
+1835(standalone)S
+2304(mode,)S
+2593(images)S
+2918(\(currently)S
+3353(IRAF)S
+3623(OIF,)S
+3851(GIF,)S
+4079(Sun)S
+4277(Raster\256les)S
+4741(or)S
+4866(simple)S
+5176(FITS)S
+5425(\(i.e.)S
+5136 V
+1260(excluding)S
+1693(MEF)S
+1938(\256les\))S
+2177(formats)S
+2521(are)S
+2681(permitted\))S
+3136(may)S
+3347(be)S
+3479(loaded)S
+3783(on)S
+3921(the)S
+4081(command)S
+4513(line)S
+4701(or)S
+4822(by)S
+4960(using)S
+5215(the)S
+5375(Load)S
+5256 V
+1260(Panel.)S
+1558(This)S
+1787(allows)S
+2099(you)S
+2300(to)S
+2430(browse)S
+2770(images)S
+3105(and)S
+3301(perform)S
+3674(the)S
+3848(same)S
+4105(manipulations)S
+4724(as)S
+4859(if)S
+4972(they)S
+5196(had)S
+5392(been)S
+5376 V
+1260(displayed)S
+1673(by)S
+1803(a)S
+1877(client.)S
+5664 V
+9 B
+1080(MOUSE)S
+1437(OPERATIONS)S
+5784 V
+10 R
+1260(Clicking)S
+1648(and)S
+1835(dragging)S
+2233(MB1)S
+2482(\(mouse)S
+2819(button)S
+3118(1\))S
+3244(in)S
+3365(the)S
+3530(main)S
+3773(image)S
+4060(window)S
+4425(creates)S
+4745(a)S
+4833(rectangular)S
+5325(region)S
+5904 V
+1260(marker,)S
+1604(used)S
+1824(to)S
+1939(select)S
+2203(a)S
+2284(region)S
+2576(of)S
+2696(the)S
+2855(image.)S
+3161(If)S
+3264(you)S
+3451(do)S
+3588(this)S
+3770(accidentally)S
+4289(and)S
+4470(don't)S
+4718(want)S
+4949(the)S
+5108(marker,)S
+5452(put)S
+6024 V
+1260(the)S
+1419(pointer)S
+1739(in)S
+1854(the)S
+2013(marker)S
+2332(and)S
+2513(type)S
+2722(DELETE)S
+3137(or)S
+3258(BACKSPACE)S
+3886(to)S
+4002(delete)S
+4278(the)S
+4438(marker.)S
+4783(With)S
+5021(the)S
+5181(pointer)S
+5502(in)S
+6144 V
+1260(the)S
+1417(marker,)S
+1759(MB3)S
+2000(will)S
+2191(call)S
+2370(up)S
+2505(a)S
+2584(marker)S
+2901(menu)S
+3158(listing)S
+3444(some)S
+3690(things)S
+3970(you)S
+4155(can)S
+4328(do)S
+4463(with)S
+4676(the)S
+4833(marker,)S
+5174(like)S
+5358(zoom)S
+6264 V
+1260(the)S
+1420(outlined)S
+1786(region.)S
+2104(MB1)S
+2348(can)S
+2524(be)S
+2656(used)S
+2877(to)S
+2993(drag)S
+3208(or)S
+3329(resize)S
+3599(the)S
+3759(marker.)S
+4104(See)S
+4287(below)S
+4570(for)S
+4725(more)S
+4969(information)S
+5480(on)S
+6384 V
+1260(markers.)S
+6624 V
+1260(Clicking)S
+1642(on)S
+1779(MB2)S
+2022(in)S
+2137(the)S
+2296(main)S
+2533(image)S
+2814(window)S
+3173(pans)S
+3394(\(one)S
+3609(click\))S
+3874(or)S
+3995(zooms)S
+4294(\(two)S
+4515(clicks\))S
+4819(the)S
+4979(image.)S
+5286(Further)S
+6744 V
+1260(clicks)S
+1529(cycle)S
+1775(through)S
+2122(the)S
+2280(builtin)S
+2578(zoom)S
+2836(factors.)S
+3198(Moving)S
+3551(the)S
+3709(pointer)S
+4028(to)S
+4142(a)S
+4222(new)S
+4424(location)S
+4782(and)S
+4962(clicking)S
+5319(moves)S
+6864 V
+1260(the)S
+1423(feature)S
+1741(under)S
+2010(the)S
+2174(pointer)S
+2499(to)S
+2619(the)S
+2783(center)S
+3068(of)S
+3193(the)S
+3357(display)S
+3688(window.)S
+4137(Holding)S
+4507(down)S
+4771(the)S
+4935(Shift)S
+5172(key)S
+5358(while)S
+6984 V
+1260(clicking)S
+1620(MB2)S
+1864(will)S
+2058(cause)S
+2317(a)S
+2399(full-screen)S
+2863(crosshair)S
+3261(cursor)S
+3547(to)S
+3662(appear)S
+3964(until)S
+4185(the)S
+4344(button)S
+4637(is)S
+4741(released,)S
+5129(this)S
+5311(can)S
+5486(be)S
+7104 V
+1260(useful)S
+1534(for)S
+1680(\256ne)S
+1860(positioning)S
+2341(of)S
+2454(the)S
+2606(cursor.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(6)S
+7920 V
+EP
+%%Page: 7 8
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(MB3)S
+1507(is)S
+1615(used)S
+1839(to)S
+1958(adjust)S
+2238(the)S
+2401(contrast)S
+2758(and)S
+2943(brightness)S
+3395(of)S
+3519(the)S
+3682(displayed)S
+4106(image.)S
+4446(The)S
+4643(position)S
+5008(of)S
+5133(the)S
+5297(pointer)S
+1080 V
+1260(within)S
+1560(the)S
+1726(display)S
+2059(window)S
+2425(determines)S
+2906(the)S
+3071(contrast)S
+3430(and)S
+3617(brightness)S
+4071(values.)S
+4394(Click)S
+4654(once)S
+4885(to)S
+5006(set)S
+5160(the)S
+5325(values)S
+1200 V
+1260(corresponding)S
+1861(to)S
+1969(the)S
+2121(pointer)S
+2434(location,)S
+2811(or)S
+2924(click)S
+3148(and)S
+3322(drag)S
+3529(to)S
+3637(continuously)S
+4184(adjust)S
+4453(the)S
+4605(display.)S
+1488 V
+9 B
+1080(KEYSTROKE)S
+1677(ACCELERATORS)S
+1608 V
+10 R
+1260(The)S
+1445(following)S
+1864(keystrokes)S
+2321(are)S
+2472(currently)S
+2862(de\256ned)S
+3186(in)S
+3294(the)S
+3446(GUI:)S
+1848 V
+1620(--------------------)S
+10 B
+2310(Misc)S
+2545(Functions)S
+10 R
+2998(---------------------)S
+1992 V
+10 B
+1620(Ctrl-b)S
+10 R
+2620(Previous)S
+3000(\(back\))S
+3284(frame)S
+2100 V
+10 B
+1620(Ctrl-c)S
+10 R
+2620(Center)S
+2916(frame)S
+2208 V
+10 B
+1620(Ctrl-f)S
+10 R
+2620(Forward)S
+2988(frame)S
+2316 V
+10 B
+1620(Ctrl-i)S
+10 R
+2620(Invert)S
+2888(colormap)S
+2424 V
+10 B
+1620(Ctrl-m)S
+10 R
+2620(Toggle)S
+2933(magni\256er)S
+2532 V
+10 B
+1620(Ctrl-n)S
+10 R
+2620(Normalize)S
+2640 V
+10 B
+1620(Ctrl-p)S
+10 R
+2620(Toggle)S
+2933(panner)S
+2748 V
+10 B
+1620(Ctrl-r)S
+10 R
+2620(Register)S
+2856 V
+10 B
+1620(Ctrl-s)S
+10 R
+2620(Match)S
+2905(LUT)S
+3129(scaling)S
+2964 V
+10 B
+1620(Ctrl-t)S
+10 R
+2620(Tile)S
+2811(frames)S
+3112(toggle)S
+3072 V
+10 B
+1620(Ctrl-u)S
+10 R
+2620(Unzoom)S
+2994(\(zoom=1\))S
+3180 V
+10 B
+1620(Ctrl-x)S
+10 R
+2620(Flip)S
+2812(X)S
+3288 V
+10 B
+1620(Ctrl-y)S
+10 R
+2620(Flip)S
+2812(Y)S
+3456 V
+10 B
+1620(Ctrl-=)S
+10 R
+2620(Print)S
+2845(using)S
+3092(current)S
+3404(setup)S
+3564 V
+10 B
+1620(Ctrl-<)S
+10 R
+2620(Decrease)S
+3014(blink)S
+3250(rate)S
+3429(\(blink)S
+3698(faster\))S
+3672 V
+10 B
+1620(Ctrl->)S
+10 R
+2620(Increase)S
+2981(blink)S
+3217(rate)S
+3396(\(blink)S
+3665(slower\))S
+3780 V
+10 B
+1620(Ctrl-+)S
+10 R
+2620(Zoom)S
+2889(in)S
+3888 V
+10 B
+1620(Ctrl--)S
+10 R
+2620(Zoom)S
+2889(out)S
+4056 V
+10 B
+1620(Alt-1)S
+1866(thru)S
+2085(Alt-4)S
+10 R
+2620(Set)S
+2778(frame)S
+3040(to)S
+3148(be)S
+3272(displayed)S
+4164 V
+10 B
+1620(Ctrl-1)S
+1910(thru)S
+2129(Ctrl9)S
+10 R
+2620(Set)S
+2778(integer)S
+3085(zoom)S
+3337(factor)S
+4332 V
+10 B
+1620(Ctrl-Alt-q)S
+10 R
+2620(Quit)S
+4440 V
+10 B
+1620(Ctrl-Alt-f)S
+10 R
+2620(Fitframe)S
+4608 V
+1620(---------------------)S
+10 B
+2343(Panel)S
+2612(Toggles)S
+10 R
+2970(---------------------)S
+4752 V
+10 B
+1620(Alt-b)S
+10 R
+2620(Blink)S
+2873(frames)S
+4860 V
+10 B
+1620(Alt-c)S
+10 R
+2620(Control)S
+2956(panel)S
+4968 V
+10 B
+1620(Alt-h)S
+10 R
+2620(Help)S
+2844(popup)S
+5076 V
+10 B
+1620(Alt-i)S
+10 R
+2620(Info)S
+2816(box)S
+2996(popup)S
+5184 V
+10 B
+1620(Alt-l)S
+10 R
+2620(Load)S
+2855(\256le)S
+3013(popup)S
+5292 V
+10 B
+1620(Alt-p)S
+10 R
+2620(Print)S
+2845(popup)S
+5400 V
+10 B
+1620(Alt-s)S
+10 R
+2620(Save)S
+2844(popup)S
+5508 V
+10 B
+1620(Alt-t)S
+10 R
+2620(TclShell)S
+2989(popup)S
+5736 V
+1620(-------------------)S
+10 B
+2277(Cursor)S
+2612(Positioning)S
+10 R
+3121(------------------)S
+5880 V
+10 B
+1620(Ctrl-h)S
+1916(/)S
+1974(Ctrl-Left)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(one)S
+3736(pixel)S
+3966(left)S
+5988 V
+10 B
+1620(Ctrl-j)S
+1893(/)S
+1951(Ctrl-Down)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(one)S
+3736(pixel)S
+3966(down)S
+6096 V
+10 B
+1620(Ctrl-k)S
+1916(/)S
+1974(Ctrl-Up)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(one)S
+3736(pixel)S
+3966(up)S
+6204 V
+10 B
+1620(Ctrl-l)S
+1888(/)S
+1946(Ctrl-Right)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(one)S
+3736(pixel)S
+3966(right)S
+6372 V
+10 B
+1620(Shift-Ctrl-h)S
+2155(/)S
+2213(Shift-Ctrl-Left)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(ten)S
+3714(pixels)S
+3983(left)S
+6480 V
+10 B
+1620(Shift-Ctrl-j)S
+2132(/)S
+2190(Shift-Ctrl-Down)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(ten)S
+3714(pixels)S
+3983(down)S
+6588 V
+10 B
+1620(Shift-Ctrl-k)S
+2155(/)S
+2213(Shift-Ctrl-Up)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(ten)S
+3714(pixels)S
+3983(up)S
+6696 V
+10 B
+1620(Shift-Ctrl-l)S
+2127(/)S
+2185(Shift-Ctrl-Right)S
+10 R
+3020(Move)S
+3283(cursor)S
+3562(ten)S
+3714(pixels)S
+3983(right)S
+6924 V
+1620(-------------------)S
+10 B
+2277(Auto-Registration)S
+10 R
+3078(-------------------)S
+7068 V
+10 B
+1620(Ctrl-a)S
+10 R
+2620(Toggle)S
+2933(auto-registration)S
+7176 V
+10 B
+1620(Ctrl-o)S
+10 R
+2620(Set)S
+2778(frame)S
+3040(o)S
+3090 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3151(set)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(7)S
+7920 V
+EP
+%%Page: 8 9
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1620(--------------------)S
+10 B
+2310(Frame)S
+2622(Positioning)S
+10 R
+3131(------------------)S
+1104 V
+10 B
+1620(Ctrl-Left)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(full)S
+3188(frame)S
+3450(left)S
+1212 V
+10 B
+1620(Ctrl-Down)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(full)S
+3188(frame)S
+3450(down)S
+1320 V
+10 B
+1620(Ctrl-Up)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(full)S
+3188(frame)S
+3450(up)S
+1428 V
+10 B
+1620(Ctrl-Right)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(full)S
+3188(frame)S
+3450(right)S
+1596 V
+10 B
+1620(Ctrl-Alt-Left)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(half)S
+3204(frame)S
+3466(left)S
+1704 V
+10 B
+1620(Ctrl-Alt-Down)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(half)S
+3204(frame)S
+3466(down)S
+1812 V
+10 B
+1620(Ctrl-Alt-Up)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(half)S
+3204(frame)S
+3466(up)S
+1920 V
+10 B
+1620(Ctrl-Alt-Right)S
+10 R
+2620(Shift)S
+2845(one)S
+3019(half)S
+3204(frame)S
+3466(right)S
+2148 V
+1620(-------------------)S
+10 B
+2277(Peak-Up)S
+2679(Centroiding)S
+10 R
+3226(-----------------)S
+2292 V
+10 B
+1620(Ctrl-[)S
+10 R
+2620(Decrease)S
+3014(centroiding)S
+3499(box)S
+3679(size)S
+2400 V
+10 B
+1620(Ctrl-])S
+10 R
+2620(Increase)S
+2981(centroiding)S
+3466(box)S
+3646(size)S
+2508 V
+10 B
+1620(Ctrl-0)S
+1910(\(zero\))S
+10 R
+2620(Centroid/\256nd)S
+3184(local)S
+3408(maximum)S
+2616 V
+10 B
+1620(Alt-Ctrl-0)S
+2076(\(zero\))S
+10 R
+2620(Find)S
+2834(local)S
+3058(minimum)S
+2844 V
+1620(------------------)S
+10 B
+2244(Mouse)S
+2557(Button)S
+2882(Events)S
+10 R
+3201(------------------)S
+2988 V
+10 B
+1620(Shift-Btn1Down)S
+10 R
+2620(Turn)S
+2844(on)S
+2974(magni\256er)S
+3096 V
+10 B
+1620(Shift-Btn1Up)S
+10 R
+2620(Turn)S
+2844(o)S
+2894 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2985(magni\256er)S
+3204 V
+10 B
+1620(Shift-Btn2Down)S
+10 R
+2620(Turn)S
+2844(on)S
+2974(crosshair)S
+3364(cursor)S
+3312 V
+10 B
+1620(Shift-Btn2Up)S
+10 R
+2620(Turn)S
+2844(o)S
+2894 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2985(crosshair)S
+3375(cursor)S
+3480 V
+10 B
+1620(Btn1Down)S
+10 R
+2620(Create)S
+2910(a)S
+2984(Marker)S
+3588 V
+10 B
+1620(Btn1Motion)S
+10 R
+2620(Resize)S
+2916(marker)S
+3228(being)S
+3480(created)S
+3696 V
+10 B
+1620(Btn2Down)S
+10 R
+2620(Zoom/center)S
+3160(on)S
+3290(cursor)S
+3569(position)S
+3804 V
+10 B
+1620(Btn3Down/Motion)S
+10 R
+2620(Brightness/contrast)S
+3422(scale)S
+3651(the)S
+3803(image)S
+3972 V
+10 B
+1620(Ctrl-Btn1Down)S
+10 R
+2620(Create)S
+2910(Ruler)S
+3162(Marker)S
+4080 V
+10 B
+1620(Ctrl-Btn1Motion)S
+10 R
+2620(Resize)S
+2916(Ruler)S
+3168(Marker)S
+3491(being)S
+3743(created)S
+4188 V
+10 B
+1620(Ctrl-Btn1Up)S
+10 R
+2620(Destroy)S
+2966(Ruler)S
+3218(Marker)S
+4356 V
+10 B
+1620(Alt-Motion)S
+10 R
+2620(Freeze)S
+2915(cursor)S
+3194(readout)S
+4644 V
+10 B
+1260(NOTE:)S
+10 R
+1612(These)S
+1885(keystrokes)S
+2347(only)S
+2560(work)S
+2800(with)S
+3013(the)S
+3170(cursor)S
+3454(in)S
+3567(the)S
+3724(main)S
+3959(image)S
+4238(window,)S
+4620(only)S
+4833(a)S
+4913(few)S
+5098(of)S
+5217(the)S
+5375(com-)S
+4764 V
+1260(mands)S
+1563(are)S
+1726(implemented)S
+2290(to)S
+2410(work)S
+2657(within)S
+2954(subwindows)S
+3495(or)S
+3619(markers)S
+3981(to)S
+4100(avoid)S
+4363(con\257icts)S
+4743(with)S
+4962(translations)S
+5464(for)S
+4884 V
+1260(those)S
+1501(objects.)S
+1869(If)S
+1965(a)S
+2039(command)S
+2464(does)S
+2678(not)S
+2837(work,)S
+3098(check)S
+3361(the)S
+3514(cursor)S
+3794(location)S
+4147(and)S
+4322(try)S
+4464(it)S
+4551(again)S
+4798(in)S
+4907(the)S
+5060(main)S
+5291(display)S
+5004 V
+1260(window.)S
+5292 V
+9 B
+900(FRAME)S
+1257(BUFFER)S
+1644(CONFIGURATIONS)S
+5412 V
+10 R
+1260(XImtool)S
+1634(starts)S
+1880(up)S
+2015(using)S
+2267(default)S
+2579(frame)S
+2846(bu)S
+2946 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3007(er)S
+3120(size)S
+3311(of)S
+3430(512x512)S
+3816(pixels,)S
+4116(two)S
+4302(\(of)S
+4454(16)S
+4590(possible\))S
+4987(frames)S
+5294(will)S
+5486(be)S
+5532 V
+1260(created.)S
+1608(When)S
+1882(loading)S
+2218(disk)S
+2421(images)S
+2740(\(i.e.)S
+2961(run)S
+3130(in)S
+3244(standalone)S
+3706(mode\))S
+3996(the)S
+4153(frame)S
+4420(bu)S
+4520 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4581(er)S
+4693(con\256guration)S
+5261(\256le)S
+5424(will)S
+5652 V
+1260(be)S
+1385(searched)S
+1764(for)S
+1911(a)S
+1986(de\256ned)S
+2311(frame)S
+2574(bu)S
+2674 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2735(er)S
+2843(that)S
+3024(is)S
+3122(the)S
+3275(same)S
+3511(size)S
+3697(or)S
+3811(larger)S
+4074(than)S
+4277(the)S
+4430(current)S
+4743(image,)S
+5044(if)S
+5137(no)S
+5269(suitable)S
+5772 V
+1260(bu)S
+1360 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1421(er)S
+1529(can)S
+1698(be)S
+1822(found)S
+2085(a)S
+2159(custom)S
+2478(frame)S
+2740(bu)S
+2840 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2901(er)S
+3008(the)S
+3160(same)S
+3395(size)S
+3580(as)S
+3693(the)S
+3845(image)S
+4119(will)S
+4305(be)S
+4429(created)S
+4746(in)S
+4854(an)S
+4978(unused)S
+5291(portion)S
+5892 V
+1260(of)S
+1373(the)S
+1525(con\256guration)S
+2088(table.)S
+2367(When)S
+2635(used)S
+2848(as)S
+2962(a)S
+3037(display)S
+3357(server)S
+3631(the)S
+3784(frame)S
+4047(bu)S
+4147 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4208(er)S
+4316(con\256guration)S
+4880(number)S
+5216(is)S
+5314(passed)S
+6012 V
+1260(in)S
+1381(by)S
+1524(the)S
+1689(client)S
+1954(and)S
+2140(loaded)S
+2448(explicitly)S
+2868(even)S
+3098(if)S
+3201(it)S
+3299(means)S
+3596(clipping)S
+3966(the)S
+4130(image.)S
+4471(If)S
+4579(a)S
+4665(new)S
+4873(frame)S
+5147(bu)S
+5247 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5308(er)S
+5427(is)S
+5536(a)S
+6132 V
+1260(di)S
+1338 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1399(erent)S
+1635(size)S
+1827(than)S
+2036(previously)S
+2495(de\256ned)S
+2826(frames,)S
+3159(all)S
+3296(available)S
+3693(frames)S
+4001(will)S
+4194(be)S
+4325(initialized)S
+4763(and)S
+4945(cleared)S
+5270(prior)S
+5502(to)S
+6252 V
+1260(the)S
+1422(display.)S
+1806(The)S
+2001(default)S
+2318(frame)S
+2590(bu)S
+2690 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2751(er)S
+2868(con\256guration)S
+3441(\256le)S
+3609(is)S
+3716(/usr/local/lib/imtoolrc,)S
+4654(this)S
+4838(can)S
+5015(be)S
+5148(overridden)S
+6372 V
+1260(by)S
+1407(de\256ning)S
+1782(a)S
+1874(IMTOOLRC)S
+2444(environment)S
+2997(variable)S
+3366(naming)S
+3714(the)S
+3884(\256le)S
+4060(to)S
+4186(be)S
+4328(used,)S
+4584(by)S
+4732(creating)S
+5101(a)S
+5193(using)S
+5458(the)S
+6492 V
+10 I
+1260(-imtoolrc)S
+10 R
+1662(command)S
+2086(line)S
+2266(\257ag)S
+2446(or)S
+10 I
+2559(imtoolrc)S
+10 R
+2928(application)S
+3402(resource.)S
+6732 V
+1260(The)S
+1445(format)S
+1741(of)S
+1854(the)S
+2006(frame)S
+2268(bu)S
+2368 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2429(er)S
+2536(con\256guration)S
+3099(\256le)S
+3257(is)S
+6972 V
+10 I
+1410(con\256gno)S
+1784(nframes)S
+2136(width)S
+2389(height)S
+2669([extra)S
+2943(\256elds])S
+7092 V
+10 R
+1290(e.g.)S
+7212 V
+1560(1)S
+1670(2)S
+1780(512)S
+1990(512)S
+7692 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(8)S
+7920 V
+EP
+%%Page: 9 10
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1560(2)S
+1670(2)S
+1780(800)S
+1990(800)S
+1080 V
+1560(3)S
+1670(1)S
+1750(1024)S
+1980(1024)S
+2480(#)S
+2560(comment)S
+1200 V
+1560(:)S
+1648(:)S
+1766(:)S
+1914(:)S
+1440 V
+1260(At)S
+1417(most)S
+1669(128)S
+1876(frame)S
+2165(bu)S
+2265 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2326(er)S
+2460(sizes)S
+2711(may)S
+2940(be)S
+3092(de\256ned,)S
+3469(each)S
+3709(con\256guration)S
+4300(may)S
+4530(de\256ne)S
+4832(up)S
+4990(to)S
+5126(16)S
+5284(frames,)S
+1560 V
+1260(con\256guration)S
+1823(numbers)S
+2197(need)S
+2415(not)S
+2573(be)S
+2697(sequential.)S
+1848 V
+10 B
+1260(NOTE:)S
+10 R
+1640(When)S
+1911(de\256ning)S
+2272(a)S
+2349(new)S
+2548(frame)S
+2813(bu)S
+2913 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2974(er)S
+3084(for)S
+3233(use)S
+3399(with)S
+3610(client)S
+3865(software)S
+4241(such)S
+4457(as)S
+4573(IRAF)S
+4834(the)S
+4990(user)S
+5190(must)S
+5419(also)S
+1968 V
+1260(remember)S
+1694(to)S
+1802(de\256ne)S
+2076(those)S
+2317(frame)S
+2579(bu)S
+2679 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2740(ers)S
+2886(in)S
+2994(the)S
+3146(IRAF)S
+10 I
+3404(dev$graphcap)S
+10 R
+4005(\256le.)S
+2256 V
+9 B
+1080(SUPPORT)S
+1527(FOR)S
+1744(16)S
+1861(DISPLAY)S
+2283(FRAMES)S
+2376 V
+10 R
+1260(As)S
+1402(part)S
+1588(of)S
+1702(the)S
+1855(extensive)S
+2263(GUI)S
+2471(changes)S
+2823(with)S
+3032(the)S
+3185(V1.3)S
+3413(release,)S
+3745(support)S
+4076(for)S
+4223(the)S
+4376(full)S
+4546(16)S
+4677(frames)S
+4979(allowed)S
+5326(by)S
+5458(the)S
+2496 V
+1260(IIS)S
+1418(protocol)S
+1787(is)S
+1890(now)S
+2098(available.)S
+2549(IRAF)S
+2813(V2.11.4)S
+3171(or)S
+3290(later)S
+3503(client)S
+3761(tasks)S
+3997(\(and)S
+4209(CDL)S
+4444(library\))S
+4778(are)S
+4934(required)S
+5301(to)S
+5414(take)S
+2616 V
+1260(advantage)S
+1695(of)S
+1809(this)S
+1985(frames.)S
+2342(All)S
+2501(changes)S
+2853(are)S
+3005(backwards)S
+3462(compatible,)S
+3962(older)S
+4198(versions)S
+4563(of)S
+4678(IRAF)S
+4938(will)S
+5126(continue)S
+5502(to)S
+2736 V
+1260(work)S
+1503(but)S
+1669(cannot)S
+1973(access)S
+2265(more)S
+2508(than)S
+2718(the)S
+2877(original)S
+3225(four)S
+3428(frames.)S
+3791(The)S
+3983(new)S
+4186(DISPLAY)S
+4645(task)S
+4843(will)S
+5036(automatically)S
+2856 V
+1260(sense)S
+1513(whether)S
+1872(the)S
+2032(display)S
+2359(server)S
+2640(being)S
+2900(used)S
+3121(supports)S
+3498(16)S
+3636(frames)S
+3945(or)S
+4066(the)S
+4226(original)S
+4575(4)S
+4663(and)S
+4845(adjust)S
+5122(the)S
+5282('frame')S
+2976 V
+1260(parameter)S
+1688(maximum)S
+2124(accordingly.)S
+2680(The)S
+2865(changes)S
+3216(are)S
+3367(fully)S
+3586(backwards)S
+4042(compatible)S
+4516(for)S
+4662(other)S
+4897(servers.)S
+3216 V
+1260(More)S
+1527(frames)S
+1849(are)S
+2021(possible)S
+2400(if)S
+2512(needed)S
+2845(but)S
+3024(will)S
+3231(require)S
+3564(further)S
+3886(changes)S
+4258(to)S
+4388(the)S
+4562(client)S
+4836(IRAF)S
+5116(code)S
+5356(to)S
+5486(be)S
+3336 V
+1260(e)S
+1304 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1365(ective.)S
+1698(Allowing)S
+2116(creation)S
+2477(of)S
+2600(more)S
+2845(than)S
+3056(16)S
+3195(frames)S
+3505(by)S
+3644(the)S
+3805(Load)S
+4049(panel)S
+4304(can)S
+4481(be)S
+4614(done)S
+4847(independently)S
+5452(but)S
+3456 V
+1260(would)S
+1547(also)S
+1745(require)S
+2064(numerous)S
+2495(code)S
+2720(change)S
+3039(to)S
+3154(XImtool.)S
+3585(Please)S
+3877(contact)S
+4202(site)S
+4378(support)S
+4715(if)S
+4814(there)S
+5051(is)S
+5156(a)S
+5238(need)S
+5464(for)S
+3576 V
+1260(this,)S
+1460(or)S
+1573(for)S
+1719(workaround)S
+2231(suggestions)S
+2728(depending)S
+3174(on)S
+3304(your)S
+3517(application.)S
+3864 V
+9 B
+900(MARKERS)S
+3984 V
+10 R
+1260(Although)S
+1668(ximtool)S
+2010(doesn't)S
+2334(do)S
+2464(much)S
+2717(with)S
+2926(markers)S
+3278(currently,)S
+3694(they)S
+3897(are)S
+4049(a)S
+4124(general)S
+4448(feature)S
+4755(of)S
+4869(the)S
+10 I
+5022(Gterm)S
+10 R
+5308(widget)S
+4104 V
+1260(and)S
+1450(are)S
+1616(used)S
+1844(more)S
+2094(extensively)S
+2594(in)S
+2717(other)S
+2967(programs)S
+3389(\(e.g.)S
+3611(the)S
+3778(prototype)S
+4206(IRAF)S
+4479(science)S
+4817(GUI)S
+5039(applications\).)S
+4224 V
+1260(XImtool)S
+1645(uses)S
+1863(markers)S
+2230(for)S
+2392(the)S
+2560(marker)S
+2888(zoom)S
+3156(feature)S
+3478(discussed)S
+3908(above,)S
+4218(and)S
+4409(also)S
+4617(for)S
+4780(the)S
+4949(panner)S
+5267(and)S
+5458(the)S
+4344 V
+1260(coords)S
+1559(box.)S
+1767(All)S
+1928(markers)S
+2282(share)S
+2525(some)S
+2769(of)S
+2885(the)S
+3040(same)S
+3278(characteristics,)S
+3906(so)S
+4028(it)S
+4116(is)S
+4215(worthwhile)S
+4702(learning)S
+5061(basic)S
+5298(marker)S
+4464 V
+1260(manipulation)S
+1818(keystrokes.)S
+4632 V
+10 B
+1260(o)S
+10 R
+1410(MB1)S
+1646(anywhere)S
+2063(inside)S
+2332(a)S
+2406(marker)S
+2718(may)S
+2920(be)S
+3044(used)S
+3257(to)S
+3365(drag)S
+3572(the)S
+3724(marker.)S
+4800 V
+10 B
+1260(o)S
+10 R
+1410(MB1)S
+1646(near)S
+1847(a)S
+1921(marker)S
+2233(corner)S
+2517(or)S
+2630(edge,)S
+2873(depending)S
+3319(on)S
+3449(the)S
+3601(type)S
+3803(of)S
+3916(marker,)S
+4253(resizes)S
+4554(the)S
+4706(marker.)S
+4968 V
+10 B
+1260(o)S
+10 R
+1410(Shift-MB1)S
+1874(on)S
+2004(the)S
+2156(corner)S
+2440(of)S
+2553(most)S
+2778(markers)S
+3129(will)S
+3315(rotate)S
+3572(the)S
+3724(marker.)S
+5136 V
+10 B
+1260(o)S
+10 R
+1410(Markers)S
+1775(stack,)S
+2038(if)S
+2132(you)S
+2315(have)S
+2536(several)S
+2851(markers)S
+3205(and)S
+3382(you)S
+3565(put)S
+3726(one)S
+3903(on)S
+4037(top)S
+4199(of)S
+4316(the)S
+4472(other.)S
+4736(The)S
+4925(active)S
+5197(marker)S
+5513(is)S
+5256 V
+1410(highlighted)S
+1909(to)S
+2030(tell)S
+2201(you)S
+2394(which)S
+2681(of)S
+2807(the)S
+2972(stacked)S
+3314(markers)S
+3678(is)S
+3788(active.)S
+4094(If)S
+4203(the)S
+4368(markers)S
+4732(overlap,)S
+5099(this)S
+5287(will)S
+5486(be)S
+5376 V
+1410(marker)S
+1722("on)S
+1893(top")S
+2092(in)S
+2200(the)S
+2352(stacking)S
+2715(order.)S
+5544 V
+10 B
+1260(o)S
+10 R
+1410(MB2)S
+1646(in)S
+1754(the)S
+1906(body)S
+2136(of)S
+2249(a)S
+2323(marker)S
+2635("lowers")S
+3013(the)S
+3165(marker,)S
+3502(i.e.)S
+3654(moves)S
+3945(it)S
+4031(to)S
+4139(the)S
+4291(bottom)S
+4605(of)S
+4718(the)S
+4870(stacking)S
+5233(order.)S
+5712 V
+10 B
+1260(o)S
+10 R
+1410(Delete)S
+1700(or)S
+1813(backspace)S
+2252(in)S
+2360(a)S
+2434(marker)S
+2746(deletes)S
+3053(it.)S
+5880 V
+10 B
+1260(o)S
+10 R
+1410(Markers)S
+1789(have)S
+2024(their)S
+2254(own)S
+2473(translation)S
+2942(resources)S
+3365(and)S
+3557(so)S
+3694(the)S
+3864(default)S
+4189(keystroke)S
+4625(commands)S
+5106(will)S
+5310(not)S
+5486(be)S
+6000 V
+1410(recognized)S
+1877(when)S
+2123(the)S
+2275(cursor)S
+2554(is)S
+2651(in)S
+2759(a)S
+2833(marker.)S
+6240 V
+1410(For)S
+1585(example,)S
+1984(try)S
+2131(placing)S
+2461(the)S
+2619(pointer)S
+2938(anywhere)S
+3361(in)S
+3476(the)S
+3635(coords)S
+3938(box,)S
+4150(then)S
+4359(press)S
+4601(MB1)S
+4844(and)S
+5025(hold)S
+5240(it)S
+5333(down,)S
+6360 V
+1410(and)S
+1587(drag)S
+1797(the)S
+1951(coords)S
+2249(box)S
+2431(marker)S
+2745(somewhere)S
+3231(else)S
+3418(on)S
+3550(the)S
+3704(screen.)S
+4015(You)S
+4219(can)S
+4389(also)S
+4582(resize)S
+4846(the)S
+5000(coords)S
+5298(box)S
+5480(by)S
+6480 V
+1410(dragging)S
+1796(a)S
+1871(corner,)S
+2181(or)S
+2296(delete)S
+2566(it)S
+2654(with)S
+2864(the)S
+3018(delete)S
+3288(or)S
+3403(backspace)S
+3844(key.)S
+4045(\(The)S
+4265(Initialize)S
+4652(button)S
+4940(will)S
+5128(get)S
+5282(the)S
+5436(ori-)S
+6600 V
+1410(ginal)S
+1640(coords)S
+1936(box)S
+2116(back)S
+2334(if)S
+2425(you)S
+2605(delete)S
+2873(it,)S
+2984(or)S
+3097(you)S
+3277(can)S
+3445(reset)S
+3663(the)S
+3815(toggle)S
+4095(in)S
+4203(the)S
+4355(control)S
+4668(panel\).)S
+6888 V
+9 B
+1080(PANNER)S
+1482(MARKER)S
+7008 V
+10 R
+1260(The)S
+1449(panner)S
+1754(window)S
+2110(always)S
+2421(displays)S
+2783(the)S
+2939(full)S
+3112(frame)S
+3379(bu)S
+3479 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3540(er.)S
+3677(Try)S
+3856(setting)S
+4158(the)S
+4315(frame)S
+4582(bu)S
+4682 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4743(er)S
+4855(con\256guration)S
+5423(to)S
+5536(a)S
+7128 V
+1260(nonsquare)S
+1708(frame)S
+1978(bu)S
+2078 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2139(er)S
+2254(\(e.g.)S
+2469(imtcryo\))S
+2851(and)S
+3033(then)S
+3243(displaying)S
+3698(a)S
+3780(square)S
+4078(image)S
+4360(\(e.g.)S
+4575(dev$pix\))S
+4968(and)S
+5150(the)S
+5309(panner)S
+7248 V
+1260(will)S
+1446(show)S
+1687(you)S
+1867(exactly)S
+2185(where)S
+2458(the)S
+2610(image)S
+2884(has)S
+3047(been)S
+3265(loaded)S
+3561(into)S
+3747(the)S
+3899(frame.)S
+7728 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5530(9)S
+7920 V
+EP
+%%Page: 10 11
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(The)S
+1450(panner)S
+1756(window)S
+2113(uses)S
+2321(two)S
+2507(markers,)S
+2889(one)S
+3069(for)S
+3221(the)S
+3379(window)S
+3737(border)S
+4033(and)S
+4213(one)S
+4393(to)S
+4507(mark)S
+4748(the)S
+4906(displayed)S
+5325(region)S
+1080 V
+1260(of)S
+1379(the)S
+1537(frame.)S
+1830(Most)S
+2072(of)S
+2191(the)S
+2349(usual)S
+2596(marker)S
+2914(keystrokes)S
+3377(mentioned)S
+3835(below)S
+4115(apply)S
+4373(to)S
+4487(these)S
+4728(markers)S
+5085(as)S
+5204(well,)S
+5436(e.g.)S
+1200 V
+1260(you)S
+1443(can)S
+1614(use)S
+1780(MB1)S
+2019(to)S
+2130(reposition)S
+2563(on)S
+2696(the)S
+2851(panner)S
+3156(window)S
+3512(within)S
+3802(the)S
+3958(main)S
+4192(image)S
+4470(display)S
+4793(window,)S
+5174(or)S
+5291(to)S
+5403(drag)S
+1320 V
+1260(the)S
+1414(region)S
+1701(marker)S
+2015(within)S
+2303(the)S
+2457(panner)S
+2760(\(pan)S
+2969(the)S
+3123(image\).)S
+3456(Resizing)S
+3837(the)S
+3990(region)S
+4276(marker)S
+4589(zooms)S
+4881(the)S
+5034(image;)S
+5337(this)S
+5513(is)S
+1440 V
+1260(a)S
+1336(non-aspect)S
+1800(constrained)S
+2292(zoom.)S
+2571(The)S
+2758(panner)S
+3061(window)S
+3415(itself)S
+3647(can)S
+3817(be)S
+3943(resized)S
+4257(by)S
+4389(dragging)S
+4776(a)S
+4852(corner)S
+5138(with)S
+5349(MB1.)S
+1560 V
+1260(Typing)S
+1579(delete)S
+1847(or)S
+1960(backspace)S
+2399(anywhere)S
+2816(in)S
+2924(the)S
+3076(panner)S
+3377(window)S
+3729(deletes)S
+4036(the)S
+4188(panner.)S
+1800 V
+1260(A)S
+1362(special)S
+1669(case)S
+1870(is)S
+1967(MB2.)S
+2228(Hitting)S
+2542(MB2)S
+2778(anywhere)S
+3195(in)S
+3303(the)S
+3455(panner)S
+3757(window)S
+4110(pans)S
+4324(the)S
+4477(image)S
+4752(to)S
+4861(that)S
+5042(point.)S
+5304(This)S
+5513(is)S
+1920 V
+1260(analogous)S
+1695(to)S
+1803(hitting)S
+2095(MB2)S
+2331(in)S
+2439(the)S
+2591(main)S
+2821(display)S
+3140(window)S
+3492(to)S
+3600(pan)S
+3774(the)S
+3926(image.)S
+2160 V
+1260(The)S
+1447(panner)S
+1750(marker)S
+2064(can)S
+2234(be)S
+2360(disabled)S
+2725(by)S
+2857(de\256ning)S
+3218(the)S
+10 I
+3373(displayPanner)S
+10 R
+3989(GUI)S
+4199(resource,)S
+4594(its)S
+4722(size)S
+4910(and)S
+5087(location)S
+5442(can)S
+2280 V
+1260(be)S
+1384(controlled)S
+1819(using)S
+2066(the)S
+10 I
+2218(pannerArea)S
+10 R
+2725(and)S
+10 I
+2899(pannerGeom)S
+10 R
+3450(GUI)S
+3657(resources)S
+4063(respectively.)S
+2568 V
+9 B
+1080(MAGNIFIER)S
+1642(MARKER)S
+2688 V
+10 R
+1260(The)S
+1445(magni\256er)S
+1858(marker)S
+2170(can)S
+2338(be)S
+2462(used)S
+2676(to)S
+2785(zoom)S
+3038(in)S
+3147(on)S
+3278(a)S
+3353(small)S
+3601(area)S
+3797(around)S
+4105(the)S
+4258(cursor.)S
+4593(It)S
+4685(will)S
+4872(be)S
+4997(updated)S
+5344(as)S
+5458(the)S
+2808 V
+1260(cursor)S
+1552(moves)S
+1856(but)S
+2027(only)S
+2248(for)S
+2407(small)S
+2666(motions)S
+3031(\(either)S
+3333(mouse)S
+3636(movement)S
+4100(or)S
+4225(with)S
+4445(the)S
+4609(cursor)S
+4900(movement)S
+5364(keys-)S
+2928 V
+1260(trokes\))S
+1570(to)S
+1681(minimize)S
+2092(the)S
+2247(impact)S
+2552(on)S
+2685(the)S
+2840(system.)S
+3207(The)S
+3396(zoom)S
+3652(factor)S
+3918(is)S
+4019(expressed)S
+4446(as)S
+4563(some)S
+4808(fraction)S
+5152(of)S
+5269(the)S
+5425(size)S
+3048 V
+1260(of)S
+1381(the)S
+1541(magni\256er)S
+1962(marker)S
+2282(itself.)S
+2575(The)S
+2768(default)S
+3083(zoom)S
+3343(is)S
+3448(4,)S
+3561(i.e.)S
+3721(the)S
+3881(area)S
+4084(in)S
+4200(the)S
+4359(marker)S
+4678(represents)S
+5119(and)S
+5300(area)S
+5502(in)S
+3168 V
+1260(the)S
+1417(image)S
+1696(that's)S
+1953(one-fourth)S
+2409(the)S
+2566(size)S
+2756(of)S
+2874(the)S
+3031(marker.)S
+3403(Other)S
+3665(zoom)S
+3922(factors)S
+4228(may)S
+4435(be)S
+4564(selected)S
+4920(using)S
+5172(the)S
+5330(popup)S
+3288 V
+1260(menu)S
+1512(created)S
+1829(by)S
+1959(hitting)S
+2251(MB1)S
+2487(in)S
+2595(the)S
+2747(marker.)S
+3528 V
+1260(By)S
+1414(default)S
+1728(the)S
+1887(magni\256er)S
+2307(marker)S
+2626(is)S
+2730(not)S
+2895(visible,)S
+3224(to)S
+3339(toggle)S
+3626(it)S
+3720(select)S
+3985(the)S
+10 I
+4145(Magni\256er)S
+10 R
+4577(option)S
+4871(from)S
+5103(the)S
+10 I
+5263(Options)S
+3648 V
+10 R
+1260(menubar)S
+1660(button.)S
+2022(Alternatively,)S
+2625(for)S
+2792(just)S
+2988(a)S
+3083(quick)S
+3356(look)S
+3584(holding)S
+3940(down)S
+4212(the)S
+4384(Shift)S
+4629(and)S
+4823(MB1)S
+5079(buttons)S
+5424(will)S
+3768 V
+1260(display)S
+1579(the)S
+1731(marker)S
+2043(until)S
+2257(the)S
+2409(button)S
+2695(is)S
+2792(released.)S
+4008 V
+1260(The)S
+1453(magni\256er)S
+1874(marker)S
+2194(can)S
+2370(be)S
+2502(disabled)S
+2873(by)S
+3011(de\256ning)S
+3377(the)S
+10 I
+3537(displayMagni\256er)S
+10 R
+4258(GUI)S
+4473(resource,)S
+4873(its)S
+5006(size)S
+5199(and)S
+5381(loca-)S
+4128 V
+1260(tion)S
+1446(can)S
+1614(be)S
+1738(controlled)S
+2173(using)S
+2420(the)S
+10 I
+2572(magni\256erArea)S
+10 R
+3179(and)S
+10 I
+3353(magni\256erGeom)S
+10 R
+4004(GUI)S
+4211(resources)S
+4617(respectively.)S
+4416 V
+9 B
+1080(COORDS)S
+1492(BOX)S
+1714(MARKER)S
+4536 V
+10 R
+1260(XImtool)S
+1629(provides)S
+2003(a)S
+2077(limited)S
+2391(notion)S
+2677(of)S
+2790(world)S
+3054(coordinates,)S
+3570(allowing)S
+3951(frame)S
+4214(bu)S
+4314 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4375(er)S
+4483(pixel)S
+4714(coordinates)S
+5205(and)S
+5380(pixel)S
+4656 V
+1260(values)S
+1546(to)S
+1655(be)S
+1780(converted)S
+2204(to)S
+2312(some)S
+2553(arbitrary)S
+2926(linear)S
+3183(client-de\256ned)S
+3762(coordinate)S
+4213(system.)S
+4546(The)S
+4731(coords)S
+5027(box)S
+5207(feature)S
+5513(is)S
+4776 V
+1260(used)S
+1473(to)S
+1581(display)S
+1900(these)S
+2135(world)S
+2398(coordinates)S
+2888(as)S
+3001(the)S
+3153(pointer)S
+3466(is)S
+3563(moved)S
+3865(about)S
+4117(in)S
+4225(the)S
+4377(image)S
+4651(window.)S
+5016 V
+1260(The)S
+1445(quantities)S
+1865(displayed)S
+2279(in)S
+2388(the)S
+2541(coords)S
+2838(box)S
+3019(are)S
+3171(X,)S
+3299(Y,)S
+3427(and)S
+3602(Z:)S
+3722(the)S
+3875(X,Y)S
+4075(world)S
+4339(coordinates)S
+4830(of)S
+4944(the)S
+5097(pointer,)S
+5436(and)S
+5136 V
+1260(Z,)S
+1379(the)S
+1534(world)S
+1800(equivalent)S
+2249(of)S
+2365(the)S
+2520(pixel)S
+2753(value)S
+3002(under)S
+3262(the)S
+3417(pointer.)S
+3758(All)S
+3919(coordinate)S
+4373(systems)S
+4723(are)S
+4877(linear.)S
+5161(The)S
+5348(preci-)S
+5256 V
+1260(sion)S
+1466(of)S
+1588(a)S
+1671(displayed)S
+2093(quantity)S
+2460(is)S
+2566(limited)S
+2889(by)S
+3028(the)S
+3189(range)S
+3449(of)S
+3571(values)S
+3865(of)S
+3988(the)S
+4150(associated)S
+4600(raw)S
+4789(frame)S
+5061(bu)S
+5161 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5222(er)S
+5339(value.)S
+5376 V
+1260(For)S
+1431(example,)S
+1826(if)S
+1919(the)S
+2073(display)S
+2394(window)S
+2748(is)S
+2846(512x512)S
+3227(only)S
+3436(512)S
+3617(coordinate)S
+4069(values)S
+4355(are)S
+4507(possible)S
+4866(in)S
+4975(either)S
+5233(axis)S
+5425(\(the)S
+5496 V
+1260(positional)S
+1687(precision)S
+2085(can)S
+2256(be)S
+2383(increased)S
+2792(however)S
+3168(by)S
+3301(zooming)S
+3684(the)S
+3839(image\).)S
+4174(More)S
+4423(seriously,)S
+4842(at)S
+4947(most)S
+5175(about)S
+5430(200)S
+5616 V
+1260(pixel)S
+1501(values)S
+1797(can)S
+1976(be)S
+2111(displayed)S
+2534(since)S
+2779(this)S
+2964(is)S
+3071(the)S
+3233(limit)S
+3463(on)S
+3603(the)S
+3765(range)S
+4026(of)S
+4149(pixel)S
+4389(values)S
+4684(loaded)S
+4990(into)S
+5186(the)S
+5348(frame)S
+5736 V
+1260(bu)S
+1360 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1421(er.)S
+1553(If)S
+1649(a)S
+1723(display)S
+2042(pixel)S
+2272(is)S
+2369(saturated)S
+2759(a)S
+2833("+")S
+3001(will)S
+3187(be)S
+3311(displayed)S
+3724(after)S
+3936(the)S
+4088(intensity)S
+4463(value.)S
+5976 V
+1260(The)S
+1446(coords)S
+1743(box)S
+1924(is)S
+2022(a)S
+2097(text)S
+2278(marker,)S
+2616(it)S
+2703(can)S
+2872(be)S
+2997(moved)S
+3300(and)S
+3475(resized)S
+3788(with)S
+3997(the)S
+4150(pointer)S
+4464(like)S
+4645(any)S
+4820(other)S
+5056(marker.)S
+5425(The)S
+6096 V
+1260(coords)S
+1561(box)S
+1746(marker)S
+2063(can)S
+2236(be)S
+2365(disabled)S
+2733(by)S
+2868(de\256ning)S
+3231(the)S
+10 I
+3388(displayCoords)S
+10 R
+4007(GUI)S
+4219(resource,)S
+4616(its)S
+4746(location)S
+5103(can)S
+5275(be)S
+5403(con-)S
+6216 V
+1260(trolled)S
+1551(by)S
+1681(the)S
+10 I
+1833(wcsboxGeom)S
+10 R
+2395(GUI)S
+2602(resource.)S
+6504 V
+9 B
+1080(MARKER)S
+1517(MENU)S
+1819(OPTIONS)S
+6624 V
+10 R
+1260(Except)S
+1575(for)S
+1729(the)S
+1889(panner)S
+2198(and)S
+2380(WCS)S
+2635(markers,)S
+3019(MB3)S
+3263(\(mouse)S
+3595(button)S
+3889(3\))S
+4010(calls)S
+4231(up)S
+4369(the)S
+4529(marker)S
+4849(menu)S
+5109(providing)S
+5536(a)S
+6744 V
+1260(limited)S
+1574(set)S
+1715(of)S
+1828(functions)S
+2230(common)S
+2610(to)S
+2718(all)S
+2848(markers:)S
+6912 V
+10 B
+1260(o)S
+10 R
+1410(Zoom)S
+1686(does)S
+1906(an)S
+2037(equal)S
+2291(aspect)S
+2578(zoom)S
+2838(of)S
+2959(the)S
+3119(region)S
+3412(outlined)S
+3778(by)S
+3916(the)S
+4076(marker.)S
+4421(In)S
+4542(this)S
+4725(way)S
+4929(you)S
+5117(can)S
+5293(mark)S
+5536(a)S
+7032 V
+1410(region)S
+1695(of)S
+1808(the)S
+1960(image)S
+2234(and)S
+2408(zoom)S
+2660(it)S
+2746(up.)S
+7200 V
+10 B
+1260(o)S
+10 R
+1410(Fill)S
+1597(exactly)S
+1933(zooms)S
+2242(the)S
+2412(area)S
+2625(outlined)S
+3001(by)S
+3149(the)S
+3319(marker,)S
+3674(making)S
+4022(it)S
+4126(\256ll)S
+4286(the)S
+4456(display)S
+4793(window.)S
+5188(Since)S
+5458(the)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(10)S
+7920 V
+EP
+%%Page: 11 12
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1410(marker)S
+1722(is)S
+1819(not)S
+1977(likely)S
+2235(to)S
+2343(be)S
+2467(exactly)S
+2785(square,)S
+3100(the)S
+3252(aspect)S
+3531(ratio)S
+3744(of)S
+3857(the)S
+4009(resultant)S
+4383(image)S
+4657(will)S
+4843(not)S
+5001(be)S
+5125(unitary.)S
+1128 V
+10 B
+1260(o)S
+10 R
+1410(Print)S
+1643(prints)S
+1909(the)S
+2069(region)S
+2362(outlined)S
+2728(by)S
+2866(the)S
+3027(marker)S
+3348(to)S
+3465(the)S
+3626(printer)S
+3931(or)S
+4053(\256le)S
+4220(currently)S
+4619(con\256gured)S
+5085(by)S
+5224(the)S
+5385(Print)S
+1248 V
+1410(Panel.)S
+1416 V
+10 B
+1260(o)S
+10 R
+1410(Save)S
+1634(saves)S
+1880(the)S
+2032(region)S
+2317(outlined)S
+2675(by)S
+2805(the)S
+2957(marker)S
+3269(to)S
+3377(the)S
+3529(\256le)S
+3687(currently)S
+4077(con\256gured)S
+4534(by)S
+4664(the)S
+4816(Save)S
+5040(Panel.)S
+1584 V
+10 B
+1260(o)S
+10 R
+1410(Info)S
+1606(prints)S
+1864(a)S
+1938(description)S
+2412(of)S
+2525(the)S
+2677(marked)S
+3006(region.)S
+3316(The)S
+3501(text)S
+3681(is)S
+3778(printed)S
+4091(in)S
+4199(the)S
+4351(Info)S
+4547(Panel.)S
+1752 V
+10 B
+1260(o)S
+10 R
+1410(Unrotate)S
+1789(unrotates)S
+2185(a)S
+2259(rotated)S
+2566(marker.)S
+1920 V
+10 B
+1260(o)S
+10 R
+1410(Color)S
+1668(is)S
+1765(a)S
+1839(menu)S
+2091(of)S
+2204(possible)S
+2562(marker)S
+2874(colors.)S
+2088 V
+10 B
+1260(o)S
+10 R
+1410(Type)S
+1651(is)S
+1754(a)S
+1834(menu)S
+2092(of)S
+2211(possible)S
+2575(marker)S
+2893(types.)S
+3165(This)S
+3379(is)S
+3482(still)S
+3669(a)S
+3749(little)S
+3969(buggy)S
+4256(and)S
+4437(it)S
+4530(isn't)S
+4745(very)S
+4959(useful,)S
+5265(but)S
+5430(you)S
+2208 V
+1410(can)S
+1578(use)S
+1741(it)S
+1827(to)S
+1935(play)S
+2137(with)S
+2345(di)S
+2423 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2484(erent)S
+2713(types)S
+2954(of)S
+3067(markers.)S
+2376 V
+10 B
+1260(o)S
+10 R
+1410(Destroy)S
+1760(destroys)S
+2127(the)S
+2283(marker.)S
+2624(You)S
+2830(can)S
+3002(also)S
+3197(hit)S
+3337(the)S
+3493(delete)S
+3766(or)S
+3884(backspace)S
+4328(key)S
+4507(in)S
+4620(a)S
+4699(marker)S
+5016(to)S
+5129(destroy)S
+5458(the)S
+2496 V
+1410(marker.)S
+2784 V
+9 B
+1080(RULER)S
+1422(MARKERS)S
+2904 V
+10 R
+1260(Holding)S
+1629(down)S
+1892(the)S
+2055(Ctrl)S
+2252(key)S
+2437(and)S
+2622(the)S
+2785(Left-Mouse-Button)S
+3603(while)S
+3866(moving)S
+4213(the)S
+4376(mouse)S
+4678(will)S
+4876(drag)S
+5095(out)S
+5265(a)S
+5351("ruler)S
+3024 V
+1260(marker")S
+1622(measuring)S
+2077(the)S
+2238(distance)S
+2604(from)S
+2837(the)S
+2998(initial)S
+3271(point)S
+3516(to)S
+3633(the)S
+3794(current)S
+4115(mouse)S
+4415(position.)S
+4832(Releasing)S
+5264(the)S
+5424(Ctrl)S
+3144 V
+1260(key)S
+1450(before)S
+1750(lifting)S
+2041(the)S
+2209(mouse)S
+2516(button)S
+2818(will)S
+3020(leave)S
+3276(the)S
+3444(marker)S
+3772(on)S
+3918(the)S
+4086(display,)S
+4446(otherwise)S
+4880(it)S
+4982(will)S
+5185(be)S
+5326(erased)S
+3264 V
+1260(automatically)S
+1849(once)S
+2082(the)S
+2249(mouse)S
+2555(button)S
+2856(is)S
+2968(released.)S
+3394(Any)S
+3611(number)S
+3961(of)S
+4088(ruler)S
+4320(markers)S
+4685(can)S
+4867(be)S
+5005(created)S
+5336(in)S
+5458(the)S
+3384 V
+1260(frame.)S
+3624 V
+1260(Distances)S
+1684(are)S
+1841(measured)S
+2259(by)S
+2395(default)S
+2708(in)S
+2822(image)S
+3102(logical)S
+3410(pixels)S
+3685(however)S
+4064(the)S
+4222(Right-Mouse-Button)S
+5092(can)S
+5266(be)S
+5397(used)S
+3744 V
+1260(inside)S
+1529(the)S
+1681(marker)S
+1993(to)S
+2101(popup)S
+2381(a)S
+2455(menu)S
+2707(of)S
+2820(options:)S
+4032 V
+10 B
+1260(Sticky)S
+10 R
+2260(By)S
+2430(default)S
+2760(rulers)S
+3040(are)S
+3214(destroyed)S
+3655(whenever)S
+4095(the)S
+4270(display)S
+4612(changes)S
+4986(due)S
+5183(to)S
+5314(a)S
+5411(pan,)S
+4152 V
+2260(zoom,)S
+2545(\257ip,)S
+2742(or)S
+2863(frame)S
+3133(change.)S
+3508(This)S
+3724(option)S
+4017(will)S
+4210(make)S
+4463(the)S
+4622(ruler)S
+4847("sticky")S
+5205(so)S
+5331(it)S
+5424(will)S
+4272 V
+2260(not)S
+2420(be)S
+2546(erased,)S
+2857(subsequent)S
+3333(use)S
+3498(of)S
+3613(the)S
+3767(menu)S
+4021(to)S
+4132(shows)S
+4415(this)S
+4593(option)S
+4882(to)S
+4993(be)S
+5120("UnSticky")S
+4392 V
+2260(to)S
+2368(remove)S
+2697(this)S
+2872(feature.)S
+4560 V
+10 B
+1260(Units)S
+10 R
+2260(Sub-menu)S
+2703(to)S
+2813(select)S
+3072(the)S
+3226(units)S
+3453(of)S
+3569(the)S
+3724(display.)S
+4101(If)S
+4200(the)S
+4355(ISM)S
+4566(is)S
+4666(enabled)S
+5009(and)S
+5186(a)S
+5263(WCS)S
+5513(is)S
+4680 V
+2260(present)S
+2590(in)S
+2709(the)S
+2872(image)S
+3157(and)S
+3342(selected)S
+3704(as)S
+3828(one)S
+4013(of)S
+4137(the)S
+4300(readout)S
+4640(options,)S
+5001(distances)S
+5408(may)S
+4800 V
+2260(also)S
+2467(be)S
+2608(read)S
+2826(out)S
+3001(in)S
+3126(units)S
+3368(of)S
+3498(arcseconds,)S
+4007(arcminutes,)S
+4517(or)S
+4647(degrees)S
+4998(instead)S
+5328(of)S
+5458(the)S
+4920 V
+2260(default)S
+2579(logical)S
+2893(pixels.)S
+3199(All)S
+3369(markers)S
+3731(created)S
+4059(after)S
+4282(the)S
+4445(unit)S
+4642(change)S
+4965(will)S
+5162(readout)S
+5502(in)S
+5040 V
+2260(the)S
+2412(new)S
+2608(units)S
+2833(as)S
+2946(their)S
+3159(default.)S
+5208 V
+10 B
+1260(Color)S
+10 R
+2260(Select)S
+2534(the)S
+2686(color)S
+2921(of)S
+3034(the)S
+3186(marker.)S
+5376 V
+10 B
+1260(Draw)S
+1528(into)S
+1725(Frame)S
+10 R
+2260(\()S
+10 I
+2293(Not)S
+2495(Yet)S
+2680(Implemented)S
+10 R
+3195(\))S
+3315(Draw)S
+3593(the)S
+3773(marker)S
+4113(as)S
+4254(overlay)S
+4611(graphics)S
+5007(in)S
+5143(the)S
+5323(frame.)S
+5496 V
+2260(Doing)S
+2540(so)S
+2659(will)S
+2845(retain)S
+3102(the)S
+3254(marker)S
+3566(when)S
+3812(printing)S
+4159(a)S
+4233(hardcopy)S
+4634(of)S
+4747(the)S
+4899(display.)S
+5664 V
+10 B
+1260(Destroy)S
+10 R
+2260(Destroy)S
+2606(the)S
+2758(marker.)S
+5904 V
+2260(The)S
+2452(marker)S
+2771(can)S
+2946(also)S
+3144(be)S
+3275(destroyed)S
+3700(by)S
+3837(hitting)S
+4136(the)S
+4295(Delete)S
+4592(or)S
+4712(Backspace)S
+5176(key)S
+5358(while)S
+6024 V
+2260(the)S
+2419(cursor)S
+2705(is)S
+2809(in)S
+2924(the)S
+3083(marker.)S
+3457(There)S
+3726(is)S
+3830(presently)S
+4233(no)S
+4370(way)S
+4573(to)S
+4688(move)S
+4946(the)S
+5104(marker)S
+5422(to)S
+5536(a)S
+6144 V
+2260(new)S
+2456(position)S
+2809(in)S
+2917(the)S
+3069(frame.)S
+6432 V
+9 B
+900(REAL-TIME)S
+1447(WCS/PIXEL-VALUE)S
+2324(READOUT)S
+6552 V
+10 R
+1260(XImtool)S
+1629(now)S
+1831(has)S
+1994(the)S
+2146(ability)S
+2433(to)S
+2542(display)S
+2862(the)S
+3015(actual)S
+3284(pixel)S
+3515(value)S
+3762(of)S
+3876(an)S
+4001(image)S
+4276(\(as)S
+4423(well)S
+4626(as)S
+4740(the)S
+4893(scaled)S
+5173(value)S
+5420(pre-)S
+6672 V
+1260(viously)S
+1590(shown\))S
+1919(and)S
+2098(the)S
+2255(cursor)S
+2538(position)S
+2895(in)S
+3007(image)S
+3285(WCS)S
+3536(values)S
+3825(\(e.g.)S
+4036(RA/DEC,)S
+4462(GLAT/GLONG,)S
+5164(etc\).)S
+5402(This)S
+6792 V
+1260(is)S
+1358(done)S
+1583(using)S
+1831(an)S
+1956(external)S
+2309(task)S
+2502(\(the)S
+2689('ism_wcspix.e')S
+3334(binary)S
+3621(in)S
+3731(the)S
+3885(new)S
+4083(distribution\))S
+4610(to)S
+4720(access)S
+5006(the)S
+5160(image)S
+5436(and)S
+6912 V
+1260(pass)S
+1462(the)S
+1614(coordinate/pixel)S
+2293(information)S
+2795(to)S
+2903(the)S
+3055(GUI.)S
+7152 V
+1260(WCS)S
+1513(readout)S
+1848(is)S
+1951(enabled)S
+2297(by)S
+2433(default)S
+2746(but)S
+2910(can)S
+3084(be)S
+3214(toggled)S
+3550(or)S
+3669(reset)S
+3893(using)S
+4146(the)S
+10 I
+4304(WCS/Pix)S
+10 R
+4702(button)S
+4995(on)S
+5132(the)S
+5291(Coords)S
+7272 V
+1260(tab)S
+1414(in)S
+1524(the)S
+1678(control)S
+1993(panel)S
+2241(or)S
+2356(the)S
+10 I
+2510(ISM)S
+10 R
+2708(toggle)S
+2990(on)S
+3122(the)S
+3276(alt-gui)S
+3569(menubar.)S
+4005(When)S
+4275(enabled,)S
+4642(images)S
+4957(currently)S
+5349(in)S
+5458(the)S
+7752 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(11)S
+7920 V
+EP
+%%Page: 12 13
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(server)S
+1537(or)S
+1654(subsequently)S
+2210(displayed)S
+2627(will)S
+2817(be)S
+2945(passed)S
+3245(to)S
+3357(the)S
+3513(external)S
+3868(process)S
+4201(where)S
+4478(they)S
+4684(are)S
+4839(cached)S
+5150(for)S
+5301(access.)S
+1080 V
+1260(Cursor)S
+1579(movements)S
+2086(generate)S
+2469(an)S
+2609(event)S
+2871(that)S
+3067(maps)S
+3324(the)S
+3492(current)S
+3820(frame)S
+4098(bu)S
+4198 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4259(er)S
+4382(position)S
+4751(to)S
+4875(a)S
+4965(position)S
+5334(in)S
+5458(the)S
+1200 V
+1260(cached)S
+1566(image.)S
+1895(The)S
+2080(ISM)S
+2288(\(ISM)S
+2529(is)S
+2626(Image)S
+2905(Support)S
+3252(Module\))S
+3626(task)S
+3817(then)S
+4019(reads)S
+4260(the)S
+4413(image)S
+4688(to)S
+4797(determine)S
+5227(the)S
+5380(pixel)S
+1320 V
+1260(value)S
+1507(\(or)S
+1654(a)S
+1729(small)S
+1977(table)S
+2202(of)S
+2316(values)S
+2602(around)S
+2910(the)S
+3063(current)S
+3376(position\),)S
+3787(and)S
+3961(computes)S
+4374(one)S
+4548(or)S
+4661(more)S
+4896(coordinates)S
+5386(from)S
+1440 V
+1260(the)S
+1428(image)S
+1718(position.)S
+2142(The)S
+2343(ISM)S
+2567(task)S
+2774(also)S
+2981(has)S
+3160(access)S
+3460(to)S
+3584(the)S
+3752(associated)S
+4209(BPM)S
+4468(images)S
+4798(and)S
+4989(can)S
+5174(optionally)S
+1560 V
+1260(return)S
+1528(bad)S
+1702(pixel)S
+1932(information)S
+2434(during)S
+2725(the)S
+2877(cursor)S
+3156(readout.)S
+1800 V
+1260(By)S
+1418(default,)S
+1761(the)S
+1924(logical)S
+2237(and)S
+2422(world)S
+2696(image)S
+2981(coordinates)S
+3482(are)S
+3644(displayed)S
+4068(to)S
+4187(both)S
+4406(the)S
+4569(Coords)S
+4899(panel)S
+5156(readout)S
+5497(as)S
+1920 V
+1260(well)S
+1468(as)S
+1587(the)S
+1745(main)S
+1981(display)S
+2306(window)S
+2664(wcsbox)S
+3005(text)S
+3191(marker.)S
+3564(Alternate)S
+3971(coordinate)S
+4428(systems)S
+4780(\(e.g.)S
+4992(transformation)S
+2040 V
+1260(of)S
+1375(equatorial)S
+1806(to)S
+1916(galactic)S
+2258(coordinates)S
+2750(or)S
+2865(some)S
+3108(other)S
+3345(sky)S
+3516(system,)S
+3852(physical)S
+4218(coords,)S
+4542(ampli\256er)S
+4936(coords,)S
+5260(etc\))S
+5442(can)S
+2160 V
+1260(be)S
+1391(selected)S
+1748(for)S
+1900(display)S
+2225(by)S
+2361(hitting)S
+2659(the)S
+10 I
+2817(Options)S
+10 R
+3170(toggle)S
+3456(on)S
+3592(the)S
+3750(Coords)S
+4075(panel.)S
+4382(Available)S
+4806(coordinate)S
+5263(systems)S
+2280 V
+1260(are)S
+1422(chosen)S
+1740(using)S
+1999(the)S
+10 I
+2163(Type)S
+10 R
+2399(menu)S
+2663(on)S
+2805(the)S
+2969(panel,)S
+3252(the)S
+3416(readout)S
+3757(format)S
+4065(\(sexigesimal,)S
+4637(degrees,)S
+5008(etc\))S
+5199(using)S
+5458(the)S
+2400 V
+10 I
+1260(Format)S
+10 R
+1591(menu,)S
+1869(and)S
+2044(the)S
+2197(display)S
+2517(to)S
+2626(the)S
+2779(current)S
+3092(panel)S
+3339(or)S
+3453(main)S
+3684(image)S
+3959(window)S
+4311(using)S
+4558(the)S
+4710(remaining)S
+5145(toggles)S
+5464(for)S
+2520 V
+1260(each)S
+1478(WCS.)S
+1786(Up)S
+1944(to)S
+2058(four)S
+2261(systems)S
+2615(may)S
+2824(be)S
+2955(displayed)S
+3375(at)S
+3484(one)S
+3665(time,)S
+3905(the)S
+4064(coordinate)S
+4522(panel)S
+4775(and)S
+4956(wcsbox)S
+5298(marker)S
+2640 V
+1260(will)S
+1446(adjust)S
+1715(size)S
+1900(automatically)S
+2474(depending)S
+2920(on)S
+3050(the)S
+3202(display.)S
+2880 V
+1260(By)S
+1408(selecting)S
+1794(the)S
+10 I
+1947(BPM)S
+2183(Data)S
+10 R
+2414(toggle)S
+2695(from)S
+2920(the)S
+3073(Coords.Options)S
+3735(panel)S
+3983(ximtool)S
+4327(is)S
+4426(able)S
+4624(to)S
+4734(\257ag)S
+4916(pixels)S
+5187(in)S
+5297(images)S
+3000 V
+1260(with)S
+1474(an)S
+1604(associated)S
+2050(bad)S
+2230(pixel)S
+2466(mask.)S
+2768(This)S
+2982(bad)S
+3162(pixel)S
+3398(mask)S
+3645(is)S
+3748(currently)S
+4144(assumed)S
+4523(to)S
+4636(be)S
+4765(named)S
+5066(in)S
+5179(the)S
+5336(image)S
+3120 V
+1260(header)S
+1566("BPM")S
+1901(keyword)S
+2291(by)S
+2432(convention.)S
+2972(If)S
+3080(the)S
+3244(cursor)S
+3535(passes)S
+3832(over)S
+4051(a)S
+4137(bad)S
+4323(pixel)S
+4565(in)S
+4685(the)S
+4849(mask,)S
+5127(the)S
+5291(Coords)S
+3240 V
+1260(bpm)S
+1487(display)S
+1825(as)S
+1957(well)S
+2178(as)S
+2310(the)S
+2481(main)S
+2730(window)S
+3101(wcsbox)S
+3455(will)S
+3660(change)S
+3990(to)S
+4116(a)S
+4208(red)S
+4383(background)S
+4902(color.)S
+5210(Only)S
+5458(the)S
+3360 V
+1260(Coords)S
+1579(display)S
+1898(will)S
+2084(show)S
+2325(the)S
+2477(value,)S
+2748(any)S
+2922(non-zero)S
+3306(value)S
+3552(will)S
+3738(be)S
+3862(\257agged)S
+4186(with)S
+4394(the)S
+4546(color)S
+4781(change.)S
+3600 V
+1260(With)S
+1490(the)S
+1642(ISM)S
+1850(enabled)S
+2190(the)S
+2342(Compass)S
+2739(indicator)S
+3124(will)S
+3310(display)S
+3629(a)S
+3703(set)S
+3844(of)S
+3957(arrows)S
+4259(showing)S
+4629(North-East)S
+5098(if)S
+5190(a)S
+5265(WCS)S
+5513(is)S
+3720 V
+1260(available,)S
+1678(otherwise)S
+2099(just)S
+2277(the)S
+2432(current)S
+2747(X-Y)S
+2957(axes)S
+3167(are)S
+3321(shown.)S
+3669(The)S
+3856(pixel)S
+4088(table)S
+4314(will)S
+4502(display)S
+4823(actual)S
+5093(pixel)S
+5325(values)S
+3840 V
+1260(from)S
+1484(the)S
+1636(image,)S
+1935(with)S
+2143(the)S
+2295(ISM)S
+2503(o)S
+2553 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2644(the)S
+2796(pixel)S
+3026(table)S
+3250(displays)S
+3608(the)S
+3760(scaled)S
+4039(image)S
+4313(values)S
+4598(from)S
+4822(the)S
+4974(frame)S
+5236(bu)S
+5336 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5397(er.)S
+4128 V
+9 B
+900(FREEZING)S
+1397(CURSOR)S
+1804(READOUT)S
+4248 V
+10 R
+1260(Holding)S
+1618(down)S
+1871(the)S
+2024(Alt)S
+2183(key)S
+2358(will)S
+2545(now)S
+2748(freeze)S
+3021(the)S
+3174(cursor)S
+3454(display)S
+3774(readout)S
+4104(and)S
+4279(draw)S
+4509(crosshairs)S
+4939(on)S
+5070(the)S
+5223(screen)S
+5508(at)S
+4368 V
+1260(the)S
+1424(last)S
+1605(position.)S
+2025(This)S
+2245(can)S
+2425(be)S
+2561(used)S
+2786(for)S
+2944(example)S
+3324(to)S
+3444(position)S
+3809(the)S
+3973(cursor)S
+4264(but)S
+4434(then)S
+4648(allow)S
+4912(the)S
+5076(cursor)S
+5367(to)S
+5486(be)S
+4488 V
+1260(moved)S
+1568(to)S
+1682(another)S
+2017(window)S
+2375(\(to)S
+2522(enter)S
+2757(text,)S
+2968(start)S
+3176(a)S
+3256(program,)S
+3655(whatever\))S
+4089(without)S
+4431(losing)S
+4712(the)S
+4871(position)S
+5231(informa-)S
+4608 V
+1260(tion)S
+1446(displayed)S
+1859(on)S
+1989(the)S
+2141(screen.)S
+4896 V
+9 B
+900(CUT-GRAPHS)S
+5016 V
+10 R
+1260(XImtool)S
+1635(now)S
+1843(has)S
+2013(the)S
+2172(ability)S
+2465(to)S
+2580(display)S
+2906(horizontal)S
+3348(and)S
+3529(vertical)S
+3865(cut-graphs)S
+4323(of)S
+4443(the)S
+4602(display,)S
+4953(these)S
+5195(appear)S
+5497(as)S
+5136 V
+1260("\257ip-out")S
+1672(panels)S
+1962(that)S
+2147(appear)S
+2447(on)S
+2582(the)S
+2739(bottom)S
+3058(and)S
+3237(right)S
+3461(side)S
+3656(of)S
+3773(the)S
+3929(main)S
+4163(display)S
+4486(window)S
+4842(and)S
+5020(are)S
+5175(controlled)S
+5256 V
+1260(by)S
+1390(the)S
+1542(small)S
+1789("H")S
+1973(and)S
+2147("V")S
+2331(buttons)S
+2656(in)S
+2764(the)S
+2916(lower)S
+3174(right)S
+3394(corner)S
+3679(of)S
+3793(the)S
+3946(window.)S
+4354(When)S
+4623(both)S
+4832(panels)S
+5118(are)S
+5270(enabled)S
+5376 V
+1260(the)S
+1412(corner)S
+1696(area)S
+1891(of)S
+2004(the)S
+2156(display)S
+2475(also)S
+2666(shows)S
+2946(an)S
+3070(options)S
+3395(panel)S
+3641(for)S
+3787(the)S
+3939(graphs.)S
+4290(Current)S
+4625(options)S
+4950(are:)S
+5664 V
+10 B
+1260(Better)S
+1555(Speed)S
+10 R
+2260(Draw)S
+2523(the)S
+2687(graphics)S
+3067(so)S
+3198(they)S
+3412(update)S
+3720(at)S
+3834(the)S
+3998(fastest)S
+4295(possible)S
+4665(rate.)S
+4912(This)S
+5133(is)S
+5243(done)S
+5480(by)S
+5784 V
+2260(subsampling)S
+2797(pixels)S
+3067(to)S
+3176(produce)S
+3527(a)S
+3601(smoother)S
+4003(graph)S
+4260(but)S
+4418(without)S
+4754(sacri\256cing)S
+5200(too)S
+5358(much)S
+5904 V
+2260(accuracy.)S
+6072 V
+10 B
+1260(Better)S
+1555(Accuracy)S
+10 R
+2260(Draw)S
+2520(the)S
+2681(graphics)S
+3058(using)S
+3314(all)S
+3453(screen)S
+3746(pixels)S
+4024(to)S
+4141(produce)S
+4501(the)S
+4662(most)S
+4896(accurate)S
+5266(display.)S
+6192 V
+2260(On)S
+2427(fast)S
+2615(modern)S
+2964(machines)S
+3385(this)S
+3574(can)S
+3756(be)S
+3894(enabled)S
+4248(with)S
+4470(no)S
+4614(apparent)S
+5001(loss)S
+5201(of)S
+5328(speed,)S
+6312 V
+2260(however)S
+2635(older)S
+2873(machines)S
+3283(may)S
+3488(wish)S
+3710(to)S
+3821(use)S
+3987(this)S
+4165(only)S
+4376(occassionally)S
+4947(to)S
+5058(limit)S
+5281(any)S
+5458(lag)S
+6432 V
+2260(in)S
+2368(the)S
+2520(cursor)S
+2799(tracking.)S
+6600 V
+10 B
+1260(Image)S
+1556(Pixels)S
+10 R
+2260(\()S
+10 I
+2293(Not)S
+2468(Yet)S
+2626(Implemented)S
+10 R
+3141(\))S
+6768 V
+10 B
+1260(Jump)S
+1535(Cursor)S
+10 R
+2260(If)S
+2367(enabled,)S
+2743(large)S
+2983(jumps)S
+3269(of)S
+3393(the)S
+3556(cursor)S
+3846(do)S
+3987(not)S
+4156(update)S
+4463(the)S
+4627(graphics)S
+5007(display,)S
+5363(small)S
+6888 V
+2260(movements)S
+2751(around)S
+3058(an)S
+3182(object)S
+3456(of)S
+3569(interest)S
+3893(will)S
+4079(update)S
+4375(the)S
+4527(display)S
+4846(continuously.)S
+7056 V
+10 B
+1260(Smooth)S
+1618(Cursor)S
+10 R
+2260(If)S
+2356(enabled,)S
+2721(all)S
+2851(cursor)S
+3130(movements)S
+3621(cause)S
+3872(the)S
+4024(display)S
+4343(to)S
+4451(be)S
+4575(updated.)S
+4976(This)S
+5184(is)S
+5281(another)S
+7176 V
+2260(option)S
+2550(that)S
+2734(can)S
+2906(be)S
+3034(set)S
+3179(safely)S
+3451(on)S
+3585(faster)S
+3840(machines)S
+4251(but)S
+4412(will)S
+4601(cause)S
+4855(a)S
+4932(delay)S
+5181(on)S
+5314(slower)S
+7296 V
+2260(ones.)S
+7776 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(12)S
+7920 V
+EP
+%%Page: 13 14
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(Graphics)S
+1685(Cursors)S
+10 R
+2260(If)S
+2362(enabled,)S
+2733(the)S
+2891(graphics)S
+3265(cursors)S
+3589(in)S
+3703(either)S
+3966(of)S
+4086(the)S
+4245(plots)S
+4477(are)S
+4635(active)S
+4910(and)S
+5091(can)S
+5266(be)S
+5397(used)S
+1080 V
+2260(to)S
+2374(update)S
+2676(the)S
+2834(cursor)S
+3119(readout)S
+3454(on)S
+3590(the)S
+3748(main)S
+3984(image)S
+4264(window)S
+4622(and)S
+4802(the)S
+4959(complementary)S
+1200 V
+2260(cut-graph.)S
+2729(This)S
+2939(can)S
+3109(be)S
+3235(used)S
+3450(for)S
+3598(example)S
+3969(to)S
+4080(freeze)S
+4355(the)S
+4510(cursor)S
+4792(in)S
+4903(the)S
+5058(main)S
+5291(display)S
+1320 V
+2260(using)S
+2518(the)S
+2681(Alt)S
+2850(key)S
+3035(\(see)S
+3236(above\),)S
+3573(then)S
+3786(moving)S
+4133(to)S
+4252(one)S
+4437(of)S
+4561(the)S
+4723(graphics)S
+5101(windows)S
+5502(to)S
+1440 V
+2260(perform)S
+2611(cut)S
+2763(graphs)S
+3059(in)S
+3167(only)S
+3375(one)S
+3549(axis.)S
+1680 V
+2260(Graphs)S
+2583(are)S
+2739(\(currently\))S
+3200(drawn)S
+3484(using)S
+3736(only)S
+3949(the)S
+4106(scaled)S
+4390(display)S
+4714(values)S
+5004(to)S
+5117(avoid)S
+5375(com-)S
+1800 V
+2260(plications)S
+2706(of)S
+2846(accessing)S
+3285(multiple)S
+3675(images)S
+4014(in)S
+4148(a)S
+4248(mosaic)S
+4587(display.)S
+4957(Both)S
+5208(plots)S
+5459(are)S
+1920 V
+2260(labeled)S
+2584(using)S
+2837(the)S
+2995(frame)S
+3263(z1/z2)S
+3515(values)S
+3806(and)S
+3986(contain)S
+4316(cursor)S
+4602(indicators)S
+5033(which)S
+5314(update)S
+2040 V
+2260(contuously.)S
+2328 V
+9 B
+900(PEAK-UP)S
+1327(CURSOR)S
+1734(CENTROID)S
+2246(POSITIONING)S
+2448 V
+10 R
+1260(Several)S
+1600(new)S
+1807(keystroke)S
+2236(commands)S
+2710(are)S
+2872(available)S
+3273(to)S
+3392(reposition)S
+3833(the)S
+3996(cursor)S
+4286(to)S
+4405(a)S
+4490(centroid)S
+4858(or)S
+4982(min/max)S
+5380(pixel)S
+2568 V
+1260(value)S
+1515(within)S
+1810(a)S
+1893(bounding)S
+2310(box)S
+2499(of)S
+2621(the)S
+2782(cursor)S
+3070(position,)S
+3487(allowing)S
+3876(you)S
+4065(to)S
+4182(approximate)S
+4720(the)S
+4881(position)S
+5242(with)S
+5458(the)S
+2688 V
+1260(mouse)S
+1556(and)S
+1735(\256ne)S
+1920(tune)S
+2127(it)S
+2218(quickly)S
+2553(before)S
+2842(typing)S
+3133(the)S
+3290(application)S
+3769(keystroke)S
+4192(command.)S
+4676(The)S
+4866(initial)S
+5136(box)S
+5322(size)S
+5513(is)S
+2808 V
+1260(controlled)S
+1696(with)S
+1905(a)S
+10 I
+1980(centerBoxSize)S
+10 R
+2576(GUI)S
+2784(resource)S
+3152(\(defaults)S
+3531(to)S
+3639(5)S
+3719(pixels\))S
+4021(but)S
+4179(can)S
+4347(be)S
+4471(adjusted)S
+4834(interactively)S
+5363(using)S
+2928 V
+1260(the)S
+10 B
+1429(Ctrl-[)S
+10 R
+1719(and)S
+10 B
+1910(Ctrl-])S
+10 R
+2200(commands)S
+2680(to)S
+2805(descrease/increase)S
+3587(the)S
+3756(box)S
+3953(size)S
+4155(respectively.)S
+4739(A)S
+4858(marker)S
+5187(will)S
+5391(\257ash)S
+3048 V
+1260(brie\257y)S
+1551(to)S
+1659(indicate)S
+2005(the)S
+2157(box)S
+2337(size.)S
+3288 V
+1260(The)S
+10 B
+1454(Ctrl-0)S
+10 R
+1754(\(zero\))S
+2031(key)S
+2215(\256nds)S
+2450(either)S
+2717(a)S
+2801(centroid)S
+3168(or)S
+3291(the)S
+3453(local)S
+3687(maximum)S
+4133(pixel)S
+4373(value)S
+4629(within)S
+4925(this)S
+5110(box)S
+5300(region,)S
+3408 V
+10 B
+1260(Alt-Ctrl-0)S
+10 R
+1724(\(zero\))S
+1999(will)S
+2193(\256nd)S
+2387(the)S
+2547(local)S
+2779(minimum)S
+3207(value.)S
+3516(In)S
+3637(either)S
+3902(case)S
+4111(the)S
+4271(cursor)S
+4558(is)S
+4663(reposition)S
+5101(to)S
+5216(the)S
+5375(com-)S
+3528 V
+1260(puted)S
+1520(value.)S
+1829(The)S
+2022(default)S
+2337(peak-up)S
+2696(action)S
+2978(is)S
+3083(to)S
+3199(\256nd)S
+3393(the)S
+3553(centroid)S
+3918(position)S
+4279(in)S
+4395(the)S
+4555(box)S
+4743(however)S
+5125(this)S
+5309(can)S
+5486(be)S
+3648 V
+1260(changed)S
+1633(to)S
+1751(\256nd)S
+1947(the)S
+2109(max)S
+2321(pixel)S
+2561(by)S
+2701(selection)S
+3096(the)S
+3258(")S
+10 I
+3299(Centroid)S
+3695(Peaks)S
+10 R
+3933(")S
+4014(option)S
+4310(from)S
+4544(the)S
+4706(main)S
+4946(Display)S
+5297(control)S
+3768 V
+1260(panel)S
+1506(or)S
+1619(by)S
+1749(resetting)S
+2123(the)S
+10 I
+2275(peakCentroid)S
+10 R
+2849(GUI)S
+3056(resource)S
+3423(\(defaults)S
+3802(to)S
+3910(True\).)S
+4008 V
+1260(Centroiding)S
+1785(is)S
+1899(done)S
+2140(using)S
+2404(only)S
+2629(the)S
+2798(scaled)S
+3094(screen)S
+3395(pixel)S
+3642(values)S
+3944(and)S
+4135(only)S
+4360(pixels)S
+4646(above)S
+4931(the)S
+5100(mean)S
+5364(value)S
+4128 V
+1260(within)S
+1561(the)S
+1728(box)S
+1923(are)S
+2089(used.)S
+2372(It)S
+2478(works)S
+2767(best)S
+2973(if)S
+3078(the)S
+3244(box)S
+3438(size)S
+3637(is)S
+3748(set)S
+3903(appropriately,)S
+4504(the)S
+4670(centroid)S
+5041(position)S
+5408(may)S
+4248 V
+1260(appear)S
+1555(to)S
+1663(drift)S
+1865(if)S
+1956(the)S
+2108(box)S
+2288(is)S
+2385(too)S
+2543(large)S
+2772(and)S
+2946(includes)S
+3309(too)S
+3467(many)S
+3719(background)S
+4220(pixels.)S
+4536 V
+9 B
+1080(Command)S
+1512(Summary)S
+4656 V
+10 B
+1260(Ctrl-0)S
+1550(\(zero\))S
+10 R
+2260(Reposition)S
+2724(to)S
+2832(centroid/max-pixel)S
+4764 V
+10 B
+1260(Alt-Ctrl-0)S
+1716(\(zero\))S
+10 R
+2260(Reposition)S
+2724(to)S
+2832(min-pixel)S
+4872 V
+10 B
+1260(Ctrl-[)S
+10 R
+2260(Decrease)S
+2654(centering)S
+3055(box)S
+3235(size)S
+3420(\(min)S
+3639(of)S
+3752(5\))S
+4980 V
+10 B
+1260(Ctrl-])S
+10 R
+2260(Increase)S
+2621(centering)S
+3022(box)S
+3202(size)S
+5268 V
+9 B
+1080(Resource)S
+1462(Summary)S
+5388 V
+10 B
+1260(peakCentroid)S
+1879(=)S
+1966(True)S
+10 R
+2260(Compute)S
+2671(the)S
+2837(box)S
+3032(centroid)S
+3404(position,)S
+3797(a)S
+3886('False')S
+4208(value)S
+4469(force)S
+4718(the)S
+4885(max)S
+5102(value)S
+5363(to)S
+5486(be)S
+5508 V
+2260(used)S
+5616 V
+10 B
+1260(centerBoxSize)S
+1894(=)S
+1981(5)S
+10 R
+2260(Size)S
+2462(of)S
+2575(the)S
+2727(centroid)S
+3084(box,)S
+3289(used)S
+3502(as)S
+3615(cursor)S
+3894(position)S
+4247(+/-)S
+4394(this)S
+4569(value)S
+5904 V
+9 B
+900(AUTO-REGISTRATION)S
+1917(OF)S
+2069(IMAGES)S
+6024 V
+10 R
+1260(The)S
+1451(auto-register)S
+1991(feature)S
+2303(allows)S
+2600(you)S
+2786(specify)S
+3111(a)S
+3192(registration)S
+3684(of)S
+3804(two)S
+3991(or)S
+4111(more)S
+4353(display)S
+4679(frames)S
+4987(with)S
+5202(an)S
+5333(o)S
+5383 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5444(set.)S
+6144 V
+1260(When)S
+1538(enabled,)S
+1913(this)S
+2098(registration)S
+2593(is)S
+2700(maintained)S
+3184(for)S
+3340(all)S
+3480(frames)S
+3791(in)S
+3909(the)S
+4071(list)S
+4234(if)S
+4335(any)S
+4519(one)S
+4703(of)S
+4825(them)S
+5064(is)S
+5170(panned)S
+5497(or)S
+6264 V
+1260(zoomed)S
+1606(to)S
+1714(a)S
+1788(new)S
+1984(location)S
+2336(in)S
+2444(the)S
+2596(frame)S
+2858(bu)S
+2958 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3019(er.)S
+6504 V
+1260(For)S
+1429(example,)S
+1822(to)S
+1930(use)S
+2093(this)S
+2268(feature)S
+2574(do)S
+2704(the)S
+2856(following:)S
+6672 V
+10 B
+1620(1\))S
+10 R
+1870(Enable)S
+2201(Auto-Register)S
+2821(\(either)S
+3135(on)S
+3289(the)S
+3465(Control)S
+3825(Panel)S
+4102(or)S
+4240(the)S
+4417(toolbar)S
+4755(on)S
+4910(the)S
+5087(alt-gui\))S
+5436(and)S
+6792 V
+1870(pan/zoom)S
+2294(to)S
+2402(some)S
+2643(star)S
+2817(of)S
+2930(interest.)S
+6960 V
+10 B
+1620(2\))S
+10 R
+1870(Use)S
+2055(Mouse-Button-2)S
+2746(to)S
+2854(center)S
+3127(the)S
+3279(star)S
+3453(in)S
+3561(the)S
+3713(frame.)S
+7128 V
+10 B
+1620(3\))S
+10 R
+1870(Cycle)S
+2134(through)S
+2476(the)S
+2629(frames)S
+2931(and)S
+3106(you)S
+3287(may)S
+3490(see)S
+3648(a)S
+3723(small)S
+3971(shift)S
+4180(of)S
+4294(the)S
+4447(star.)S
+4677(For)S
+4847(each)S
+5061(frame,)S
+5380(posi-)S
+7248 V
+1870(tion)S
+2063(the)S
+2222(cursor)S
+2508(on)S
+2644(the)S
+2802(star)S
+2982(and)S
+3162(type)S
+10 B
+3370(Ctrl-o)S
+10 R
+3666(to)S
+3780(o)S
+3830 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3891(set)S
+4038(it)S
+4130(to)S
+4244(the)S
+4402(center.)S
+4736(Repeat)S
+5049(as)S
+5168(necessary.)S
+7728 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(13)S
+7920 V
+EP
+%%Page: 14 15
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1870(Small)S
+2141(corrections)S
+2621(will)S
+2814(be)S
+2945(cumulatively)S
+3504(added)S
+3779(so)S
+3905(you)S
+4092(can)S
+4267(use)S
+4437(the)S
+10 B
+4597(Ctrl-0)S
+10 R
+4895(\(Ctrl-zero\))S
+5359(peak-)S
+1080 V
+1870(up)S
+2000(command)S
+2424(to)S
+2532(centroid)S
+2889(each)S
+3101(object)S
+3375(in)S
+3483(the)S
+3635(frame)S
+3897(before)S
+4181(the)S
+10 B
+4333(Ctrl-o)S
+10 R
+4623(o)S
+4673 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4734(set.)S
+1248 V
+10 B
+1620(4\))S
+10 R
+1870(Pan)S
+2054(around)S
+2365(the)S
+2521(image)S
+2799(in)S
+2911(one)S
+3089(display)S
+3412(frame,)S
+3703(then)S
+3909(switch)S
+4204(frames)S
+4509(and)S
+4688(the)S
+4845(new)S
+5046(frame)S
+5313(should)S
+1368 V
+1870(also)S
+2061(be)S
+2185(panned)S
+2503(to)S
+2611(the)S
+2763(new)S
+2959(image)S
+3233(with)S
+3441(the)S
+3593(proper)S
+3883(o)S
+3933 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3994(set.)S
+1536 V
+10 B
+1620(5\))S
+10 R
+1870(A)S
+10 B
+1995(Ctrl-a)S
+10 R
+2308(command)S
+2755(will)S
+2964(toggle)S
+3267(the)S
+3443(feature,)S
+3798(o)S
+3848 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3909(sets)S
+4113(are)S
+4288(only)S
+4520(allowed)S
+4890(when)S
+5160(autoreg)S
+5513(is)S
+1656 V
+1870(enabled.)S
+1824 V
+1260(Hitting)S
+10 B
+1577(Register)S
+10 R
+1964(will)S
+2153(zero)S
+2357(the)S
+2512(o)S
+2562 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2623(sets,)S
+2831(as)S
+2947(will)S
+3136(toggling)S
+3503(the)S
+3658(auto-register)S
+4195(function.)S
+4617(What)S
+4867(you)S
+5051(should)S
+5352(see)S
+5513(is)S
+1944 V
+1260(the)S
+1414(object)S
+1690(centered)S
+2059(in)S
+2169(the)S
+2323(frame)S
+2587(and)S
+2763(as)S
+2878(you)S
+3060(blink)S
+3298(through)S
+3641(it)S
+3729(remains)S
+4077(registered)S
+4502(but)S
+4662(the)S
+4815(panner)S
+5117(box)S
+5298(marker)S
+2064 V
+1260(is)S
+1367(moving)S
+1713(around.)S
+2085(Drag)S
+2324(the)S
+2486(panner)S
+2797(around)S
+3114(and)S
+3298(all)S
+3438(frames)S
+3749(still)S
+3940(remain)S
+4257(registered)S
+4690(with)S
+4908(the)S
+5070(given)S
+5333(o)S
+5383 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5444(set.)S
+2184 V
+1260(The)S
+1445(control/info)S
+1947(panels)S
+2232(now)S
+2434(display)S
+2753(what)S
+2977(the)S
+3129(o)S
+3179 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3240(set)S
+3381(is)S
+3478(for)S
+3624(each)S
+3836(frame.)S
+2424 V
+1260(The)S
+1451(register)S
+1786(display)S
+2111(list)S
+2270(is)S
+2373(shared)S
+2669(with)S
+2883(the)S
+3041(blink)S
+3283(list)S
+3442(and)S
+3622(can)S
+3796(be)S
+3926(set)S
+4074(using)S
+4328(the)S
+4487(Display)S
+4835(control)S
+5155(panel.)S
+5463(By)S
+2544 V
+1260(default)S
+1574(all)S
+1711(frames)S
+2019(are)S
+2177(included)S
+2558(in)S
+2673(the)S
+2832(list.)S
+3047(For)S
+3222(accessing)S
+3640(more)S
+3881(than)S
+4089(four)S
+4291(frames,)S
+4623(use)S
+4792(the)S
+4950(box)S
+5136(icon)S
+5344(in)S
+5458(the)S
+2664 V
+1260(Blink/Register)S
+1876(box)S
+2058(of)S
+2173(the)S
+2327(Display)S
+2670(control)S
+2985(panel)S
+3233(to)S
+3343(bring)S
+3586(up)S
+3718(a)S
+3794(new)S
+3992(window)S
+4346(with)S
+4556(access)S
+4843(to)S
+4954(all)S
+5087(16)S
+5220(available)S
+2784 V
+1260(frames.)S
+3072 V
+9 B
+1080(Command)S
+1512(Summary)S
+3192 V
+10 B
+1260(Ctrl-o)S
+10 R
+2260(Set)S
+2418(the)S
+2570(registration)S
+3055(o)S
+3105 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3166(set)S
+3307(from)S
+3531(center)S
+3300 V
+10 B
+1260(Ctrl-a)S
+10 R
+2260(Toggle)S
+2573(the)S
+2725(Auto-Register)S
+3321(feature)S
+3588 V
+9 B
+900(CONTROL)S
+1382(PANEL)S
+3708 V
+10 R
+1260(XImtool)S
+1636(has)S
+1806(a)S
+1887(control)S
+2207(panel)S
+2460(which)S
+2741(can)S
+2917(be)S
+3049(used)S
+3270(to)S
+3386(exercise)S
+3750(most)S
+3983(of)S
+4104(the)S
+4264(capabilities)S
+4757(the)S
+4917(program)S
+5293(has)S
+5464(for)S
+3828 V
+1260(image)S
+1544(display.)S
+1928(The)S
+2123(control)S
+2445(panel)S
+2700(can)S
+2877(be)S
+3010(accessed)S
+3397(either)S
+3663(via)S
+3824(the)S
+10 B
+3985(Options)S
+10 R
+4364(menu)S
+4625(from)S
+4858(the)S
+5019(main)S
+5258(window)S
+3948 V
+1260(menubar,)S
+1666(or)S
+1781(by)S
+1913(pressing)S
+2278(the)S
+2432(leftmost)S
+2792(button)S
+3080(in)S
+3190(the)S
+3344(row)S
+3531(of)S
+3646(buttons)S
+3973(at)S
+4078(the)S
+4233(upper)S
+4493(right)S
+4715(side)S
+4909(of)S
+5025(the)S
+5180(display)S
+5502(in)S
+4068 V
+1260(the)S
+1416(standard)S
+1788(GUI)S
+1999(\(in)S
+2144(the)S
+2299(alternate)S
+2675(GUI)S
+2885(the)S
+10 I
+3040(Control)S
+3385(Bar)S
+10 R
+3568(accessed)S
+3949(by)S
+4082(the)S
+4237(rightmost)S
+4654(button)S
+4943(on)S
+5076(the)S
+5231(menubar)S
+4188 V
+1260(provides)S
+1634(widgets)S
+1975(for)S
+2121(selecting)S
+2506(the)S
+2658(desired)S
+2976(control)S
+3289(panel\).)S
+4428 V
+1260(The)S
+1455(separate)S
+1821(windows)S
+2222(previously)S
+2684(used)S
+2907(for)S
+3063(Control/Print/Load/Save/etc)S
+4231(have)S
+4459(now)S
+4671(been)S
+4899(integrated)S
+5339(into)S
+5536(a)S
+4548 V
+1260(single)S
+1535(window)S
+1893(with)S
+2107(the)S
+2265(appropriate)S
+2755(control)S
+3074(panel)S
+3326(selectable)S
+3755(with)S
+3969(a)S
+4049(Tab)S
+4240(widget.)S
+4603(There)S
+4871(are)S
+5028(also)S
+5224(new)S
+5425(Tab)S
+4668 V
+1260(panels)S
+1547(for)S
+1696(setting)S
+1996(the)S
+2151(frame)S
+2416(tile)S
+2577(con\256guration)S
+3143(\(see)S
+3336(below\),)S
+3671(more)S
+3909(detailed)S
+4258(information)S
+4763(on)S
+4896(the)S
+5051(server)S
+5327(status,)S
+4788 V
+1260(and)S
+1434(selecting)S
+1819(the)S
+1971(WCS)S
+2218(readout)S
+2547(options)S
+2872(\(see)S
+3062(below\).)S
+5076 V
+9 B
+1080(VIEW)S
+1357(CONTROLS)S
+5196 V
+10 R
+1260(The)S
+10 B
+1452(Frame)S
+1771(box)S
+10 R
+1964(will)S
+2157(list)S
+2317(only)S
+2532(the)S
+2692(frame)S
+2962(bu)S
+3062 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3123(ers)S
+3277(you)S
+3465(currently)S
+3863(have)S
+4089(de\256ned.)S
+4476(Currently,)S
+4922(the)S
+5082(only)S
+5298(way)S
+5502(to)S
+5316 V
+1260(destroy)S
+1591(a)S
+1672(frame)S
+1941(bu)S
+2041 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2102(er)S
+2216(is)S
+2320(to)S
+2435(change)S
+2754(the)S
+2913(frame)S
+3182(bu)S
+3282 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3343(er)S
+3457(con\256guration,)S
+4052(new)S
+4255(frame)S
+4524(bu)S
+4624 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4685(ers)S
+4838(\(up)S
+5008(to)S
+5123(16\))S
+5293(will)S
+5486(be)S
+5436 V
+1260(created)S
+1586(automatically)S
+2169(if)S
+2269(requested)S
+2690(by)S
+2829(the)S
+2990(client.)S
+3306(The)S
+3500(number)S
+3845(of)S
+3968(frame)S
+4240(bu)S
+4340 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4401(ers)S
+4557(created)S
+4884(at)S
+4996(startup)S
+5308(can)S
+5486(be)S
+5556 V
+1260(controlled)S
+1695(using)S
+1942(the)S
+10 I
+2094(-nframes)S
+10 R
+2479(command-line)S
+3086(switch)S
+3377(or)S
+3490(the)S
+10 I
+3642(defNFrames)S
+10 R
+4166(resource.)S
+5796 V
+1260(The)S
+10 B
+1455(text)S
+1655(display)S
+10 R
+2002(window)S
+2364(gives)S
+2615(the)S
+2777(\256eld)S
+2995(X,Y)S
+3204(center,)S
+3513(X,Y)S
+3723(scale)S
+3963(factors,)S
+4300(the)S
+4463(X,Y)S
+4673(zoom)S
+4936(factors,)S
+5273(and)S
+5458(the)S
+5916 V
+1260(frame)S
+1538(o)S
+1588 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1649(set)S
+1806(used)S
+2035(in)S
+2159(Auto-Registration.)S
+2952(The)S
+3152(scale)S
+3396(factor)S
+3673(and)S
+3862(the)S
+4029(zoom)S
+4296(factor)S
+4573(will)S
+4774(be)S
+4913(the)S
+5080(same)S
+5330(unless)S
+6036 V
+10 I
+1260(autoscale)S
+10 R
+1685(is)S
+1794(enabled.)S
+2171(The)S
+2368(scale)S
+2610(is)S
+2720(in)S
+2841(units)S
+3079(of)S
+3205(display)S
+3537(pixels)S
+3819(per)S
+3989(frame)S
+4264(bu)S
+4364 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4425(er)S
+4545(pixel,)S
+4813(and)S
+5000(is)S
+5110(an)S
+5247(absolute)S
+6156 V
+1260(measure)S
+1629(\(it)S
+1755(doesn't)S
+2086(matter)S
+2377(whether)S
+2734(or)S
+2853(not)S
+3017(autoscale)S
+3424(is)S
+3527(enabled\).)S
+3931(Zoom)S
+4206(is)S
+4309(relative)S
+4644(to)S
+4758(the)S
+4916(autoscale)S
+5323(factor,)S
+6276 V
+1260(which)S
+1534(is)S
+1631(1.0)S
+1786(if)S
+1877(autoscaling)S
+2362(is)S
+2459(disabled.)S
+2847(This)S
+3055(information)S
+3557(is)S
+3654(also)S
+3845(presented)S
+4257(in)S
+4365(the)S
+4517(Info)S
+4713(panel.)S
+6516 V
+1260(The)S
+1446(numbers)S
+1821(in)S
+1930(the)S
+10 B
+2083(Zoom)S
+2364(box)S
+10 R
+2551(are)S
+2703(zoom)S
+2956(factors.)S
+3283(Blue)S
+3503(numbers)S
+3878(zoom,)S
+4156(red)S
+4314(numbers)S
+4689(dezoom.)S
+10 I
+5061(Zoom)S
+5321(In)S
+10 R
+5436(and)S
+6636 V
+10 I
+1260(Zoom)S
+1526(Out)S
+10 R
+1714(may)S
+1924(be)S
+2055(used)S
+2275(to)S
+2390(go)S
+2527(to)S
+2642(larger)S
+2911(or)S
+3031(smaller)S
+3362(zoom)S
+3621(factors,)S
+3954(e.g.)S
+10 I
+4135(Ctrl-5)S
+10 R
+4417(followed)S
+4809(by)S
+4946("Zoom)S
+5263(In")S
+5424(will)S
+6756 V
+1260(get)S
+1421(you)S
+1610(to)S
+1727(zoom)S
+1988(factor)S
+2259(10.)S
+2453(Speci\256c)S
+2814(zoom)S
+3075(factors)S
+3385(may)S
+3596(also)S
+3796(be)S
+3929(accessed)S
+4316(directly)S
+4660(as)S
+4782(Control)S
+5128(keystrokes,)S
+6876 V
+1260(e.g.)S
+1448(Ctrl-5)S
+1731(will)S
+1931(set)S
+2086(zoom)S
+2352(factor)S
+2628(5.)S
+10 I
+2747(Center)S
+10 R
+3063(centers)S
+3389(the)S
+3555(\256eld.)S
+10 I
+3832(Toggle)S
+4154(Zoom)S
+10 R
+4426(toggles)S
+4758(between)S
+5133(the)S
+5298(current)S
+6996 V
+1260(zoom/center)S
+1783(values,)S
+2093(and)S
+2267(the)S
+2419(unzoomed)S
+2865(image.)S
+7236 V
+10 I
+1260(Aspect)S
+10 R
+1564(recomputes)S
+2062(the)S
+2222(view)S
+2454(so)S
+2581(that)S
+2769(the)S
+2929(aspect)S
+3217(ratio)S
+3439(is)S
+3545(1.0.)S
+3734(Aspect)S
+4050(also)S
+4250(integerizes)S
+4721(the)S
+4882(zoom)S
+5143(factor)S
+5414(\(use)S
+7716 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(14)S
+7920 V
+EP
+%%Page: 15 16
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(the)S
+1412(version)S
+1736(in)S
+1844(the)S
+1996(View)S
+2242(menu)S
+2494(if)S
+2585(you)S
+2765(don't)S
+3006(want)S
+3230(integerization\).)S
+1200 V
+10 I
+1260(Fit)S
+1408(Frame)S
+10 R
+1706(makes)S
+1993(the)S
+2147(display)S
+2468(window)S
+2822(the)S
+2976(same)S
+3213(size)S
+3400(as)S
+3515(the)S
+3669(frame)S
+3933(bu)S
+4033 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4094(er.)S
+4228(Note)S
+4454(that)S
+4636(autoscale)S
+5039(has)S
+5204(much)S
+5458(the)S
+1320 V
+1260(same)S
+1499(e)S
+1543 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1604(ect,)S
+1779(and)S
+1957(allows)S
+2252(you)S
+2436(to)S
+2548(resize)S
+2814(the)S
+2970(display)S
+3293(window)S
+3649(to)S
+3761(any)S
+3938(size)S
+4126(you)S
+4309(want,)S
+4561(or)S
+4677(view)S
+4904(images)S
+5220(too)S
+5381(large)S
+1440 V
+1260(to)S
+1368(\256t)S
+1482(on)S
+1612(the)S
+1764(screen.)S
+1728 V
+9 B
+1080(ENHANCEMENT)S
+1827(CONTROLS)S
+1848 V
+10 R
+1260(At)S
+1398(the)S
+1558(top)S
+1724(is)S
+1829(a)S
+1911(scrolled)S
+2265(list)S
+2426(of)S
+2547(all)S
+2685(the)S
+2845(available)S
+3243(colormaps.)S
+3722(Click)S
+3977(on)S
+4115(the)S
+4275(one)S
+4457(you)S
+4645(want)S
+4878(to)S
+4995(load.)S
+5231(You)S
+5442(can)S
+1968 V
+1260(add)S
+1447(your)S
+1673(own)S
+1888(colormaps)S
+2347(to)S
+2468(this)S
+2656(list)S
+2822(by)S
+2965(de\256ning)S
+3336(the)S
+10 I
+3501(cmap[12])S
+10 R
+3938(or)S
+10 I
+4063(cmapDir[12])S
+10 R
+4638(command)S
+5074(line)S
+5266(\257ags)S
+5497(or)S
+2088 V
+1260(application)S
+1734(resources.)S
+2328 V
+1260(The)S
+1451(two)S
+1637(sliders)S
+1934(adjust)S
+2209(the)S
+2367(contrast)S
+2719(\(upper)S
+3015(slider\))S
+3306(and)S
+3486(brightness)S
+3933(\(lower)S
+4229(slider\))S
+4520(of)S
+4640(the)S
+4799(display.)S
+5150(The)S
+10 I
+5342(Invert)S
+2448 V
+10 R
+1260(button)S
+1549(inverts)S
+1854(the)S
+2009(colormap)S
+2419(\(multiples)S
+2858(the)S
+3013(contrast)S
+3362(by)S
+3495(-1.0\).)S
+3744(Note)S
+3971(that)S
+4154(due)S
+4331(to)S
+4442(the)S
+4597(use)S
+4763(of)S
+4879(the)S
+5033(private)S
+5342(color-)S
+2568 V
+1260(map)S
+1464(the)S
+1618(sliders)S
+1911(are)S
+2064(a)S
+2140(bit)S
+2278(sluggish)S
+2644(when)S
+2892(dragged)S
+3245(to)S
+3355(window)S
+3709(the)S
+3863(display.)S
+4209(If)S
+4307(this)S
+4484(is)S
+4583(annoying,)S
+5013(using)S
+5263(MB3)S
+5502(in)S
+2688 V
+1260(the)S
+1412(display)S
+1731(window)S
+2083(is)S
+2180(faster.)S
+2928 V
+1260(The)S
+10 I
+1454(Normalize)S
+10 R
+1910(button)S
+2205(\(on)S
+2377(the)S
+2538(bottom)S
+2861(of)S
+2983(the)S
+3145(control)S
+3468(panel\))S
+3757(will)S
+3953(normalize)S
+4392(the)S
+4554(enhancement,)S
+5145(i.e.)S
+5307(set)S
+5458(the)S
+3048 V
+1260(contrast)S
+1613(and)S
+1794(brightness)S
+2242(to)S
+2357(the)S
+2516(default)S
+2830(one-to-one)S
+3299(values)S
+3590(\(1.0,)S
+3809(0.5\).)S
+4028(This)S
+4242(is)S
+4345(the)S
+4503(preferred)S
+4903(setting)S
+5206(for)S
+5358(many)S
+3168 V
+1260(of)S
+1381(the)S
+1541(pseudocolor)S
+2067(colortables)S
+2543(and)S
+2725(for)S
+2879(private)S
+3194(colormaps)S
+3648(loaded)S
+3952(from)S
+4184(disk)S
+4389(images.)S
+4735(The)S
+10 I
+4929(Initialize)S
+10 R
+5324(button)S
+3288 V
+1260(does)S
+1473(a)S
+1547(reset)S
+1765(of)S
+1878(the)S
+2030(server.)S
+3576 V
+9 B
+1080(BLINK)S
+1397(CONTROLS)S
+3696 V
+10 I
+1260(Blink)S
+1503(frames)S
+10 R
+1807(is)S
+1907(the)S
+2062(list)S
+2218(of)S
+2334(frames)S
+2638(to)S
+2749(be)S
+2876(blinked.)S
+3234(When)S
+3505(blink)S
+3744(mode)S
+3999(is)S
+4099(in)S
+4210(e)S
+4254 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4315(ect)S
+4464(ximtool)S
+4809(just)S
+4987(cycles)S
+5269(through)S
+3816 V
+1260(these)S
+1498(frames)S
+1802(endlessly,)S
+2232(pausing)S
+2576("blink)S
+2856(rate")S
+3079(seconds)S
+3428(between)S
+3793(each)S
+4008(frame.)S
+4298(The)S
+4486(same)S
+4724(frame)S
+4989(can)S
+5160(be)S
+5287(entered)S
+3936 V
+1260(in)S
+1369(the)S
+1523(list)S
+1678(more)S
+1915(than)S
+2119(once.)S
+2394(To)S
+2537(program)S
+2907(an)S
+3033(arbitrary)S
+3408(list)S
+3563(of)S
+3678(blink)S
+3916(frames,)S
+4244(hit)S
+4382(the)S
+4536(Reset)S
+4790(button)S
+5078(and)S
+5254(click)S
+5480(on)S
+4056 V
+1260(each)S
+1479(blink)S
+1722(frame)S
+1991(button)S
+2284(until)S
+2505(it)S
+2597(is)S
+2700(set)S
+2847(to)S
+2961(the)S
+3119(desired)S
+3443(frame)S
+3711(number.)S
+4107(The)S
+4298(main)S
+4534(control)S
+4853(panel)S
+5105(allows)S
+5402(only)S
+4176 V
+1260(the)S
+1416(original)S
+1761(four)S
+1961(frames)S
+2266(to)S
+2378(be)S
+2506(speci\256ed)S
+2895(in)S
+3007(the)S
+3163(blink)S
+3403(list,)S
+3585(however)S
+3962(access)S
+4250(to)S
+4362(the)S
+4518(full)S
+4691(list)S
+4849(of)S
+4967(16)S
+5102(frames)S
+5408(now)S
+4296 V
+1260(supported)S
+1684(is)S
+1781(gained)S
+2077(using)S
+2324(the)S
+2476(box)S
+2656(icon)S
+2858(button)S
+3144(next)S
+3346(the)S
+3498(the)S
+10 I
+3650(Reset)S
+10 R
+3896(button)S
+4182(to)S
+4290(bring)S
+4531(up)S
+4661(a)S
+4735(new)S
+4931(control)S
+5244(panel.)S
+4536 V
+1260(The)S
+10 I
+1455(Blink)S
+1706(Rate)S
+10 R
+1929(can)S
+2107(be)S
+2242(adjusted)S
+2616(as)S
+2740(slow)S
+2970(or)S
+3094(as)S
+3218(fast)S
+3403(as)S
+3527(you)S
+3718(want)S
+3953(using)S
+4211(the)S
+4374(arrow)S
+4647(buttons.)S
+5008(If)S
+5115(you)S
+5306(set)S
+5458(the)S
+4656 V
+1260(blink)S
+1496(rate)S
+1675(small)S
+1922(enough)S
+2246(it)S
+2332(will)S
+2518(go)S
+2648(to)S
+2756(zero,)S
+2982(enabling)S
+3356(single)S
+3625(step)S
+3816(mode)S
+4068(\(see)S
+4258(below\).)S
+4896 V
+1260(The)S
+10 I
+1449(Register)S
+10 R
+1816(button)S
+2106(registers)S
+2478(all)S
+2612(the)S
+2768(blink)S
+3008(frames)S
+3313(with)S
+3525(the)S
+3681(current)S
+3997(display)S
+4320(frame.)S
+4612(Frames)S
+4941(not)S
+5104(in)S
+5217(the)S
+5374(blink)S
+5016 V
+1260(list)S
+1413(are)S
+1564(not)S
+1722(a)S
+1766 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1827(ected.)S
+5256 V
+1260(The)S
+10 I
+1446(Match)S
+1732(LUTs)S
+10 R
+1986(button)S
+2273(sets)S
+2454(the)S
+2607(enhancement)S
+3164(of)S
+3278(all)S
+3409(blink)S
+3646(frames)S
+3948(to)S
+4057(the)S
+4210(same)S
+4446(values)S
+4733(as)S
+4848(the)S
+5002(display)S
+5323(frame.)S
+5376 V
+1260(Frames)S
+1584(not)S
+1742(in)S
+1850(the)S
+2002(blink)S
+2238(list)S
+2391(are)S
+2542(not)S
+2700(a)S
+2744 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2805(ected.)S
+5616 V
+1260(The)S
+10 I
+1453(Blink)S
+10 R
+1702(button)S
+1996(turns)S
+2234(blink)S
+2478(on)S
+2616(and)S
+2799(o)S
+2849 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2910(.)S
+2974(When)S
+3251(the)S
+3412(blink)S
+3657(rate)S
+3845(is)S
+3951(set)S
+4101(to)S
+4218(zero)S
+4428(the)S
+4589(Blink)S
+4851(button)S
+5146(will)S
+5341(single)S
+5736 V
+1260(step)S
+1451(through)S
+1792(the)S
+1944(blink)S
+2180(frames,)S
+2506(one)S
+2680(frame)S
+2942(per)S
+3099(button)S
+3385(press.)S
+5976 V
+10 B
+1260(NOTE:)S
+10 R
+1615(You)S
+1825(can)S
+2001(blink)S
+2245(no)S
+2383(matter)S
+2677(what)S
+2910(ximtool)S
+3261(options)S
+3595(are)S
+3755(in)S
+3872(e)S
+3916 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3977(ect,)S
+4157(but)S
+4324(many)S
+4585(of)S
+4707(these)S
+4951(will)S
+5146(slow)S
+5374(blink)S
+6096 V
+1260(down.)S
+1541(To)S
+1686(get)S
+1842(the)S
+1998(fastest)S
+2287(blink)S
+2527(you)S
+2711(may)S
+2917(want)S
+3145(to)S
+3257(turn)S
+3451(o)S
+3501 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3595(the)S
+3750(panner)S
+4054(and)S
+4231(coords)S
+4530(box,)S
+4738(and)S
+4915(match)S
+5192(the)S
+5347(LUTs)S
+6216 V
+1260(of)S
+1382(all)S
+1521(the)S
+1682(blink)S
+1927(frames.)S
+2292(All)S
+2459(the)S
+2620(ximtool)S
+2971(controls)S
+3332(are)S
+3492(fully)S
+3721(active)S
+3999(during)S
+4300(blink)S
+4546(mode,)S
+4833(plus)S
+5040(you)S
+5230(can)S
+5408(load)S
+6336 V
+1260(frames)S
+1561(etc.)S
+6624 V
+9 B
+1080(OPTIONS:)S
+6744 V
+10 B
+1260(Panner)S
+6864 V
+10 R
+1510(Toggles)S
+1862(whether)S
+2213(to)S
+2321(display)S
+2640(the)S
+2792(Panner)S
+3099(marker.)S
+7032 V
+10 B
+1260(Magni\256er)S
+7152 V
+10 R
+1510(Toggles)S
+1862(whether)S
+2213(to)S
+2321(display)S
+2640(the)S
+2792(Magni\256er)S
+3216(marker.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(15)S
+7920 V
+EP
+%%Page: 16 17
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(Coords)S
+1601(Box)S
+1080 V
+10 R
+1510(Toggles)S
+1862(whether)S
+2213(to)S
+2321(display)S
+2640(the)S
+2792(coordinate)S
+3243(box)S
+3423(marker.)S
+1248 V
+10 B
+1260(Autoscale)S
+1368 V
+10 R
+1510(If)S
+1613(autoscale)S
+2021(is)S
+2126(enabled)S
+2474(then)S
+2684(at)S
+2794(zoom=1,)S
+3185(the)S
+3345(frame)S
+3615(bu)S
+3715 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3776(er)S
+3891(will)S
+4085(be)S
+4217(automatically)S
+4799(scaled)S
+5086(to)S
+5202(\256t)S
+5324(within)S
+1488 V
+1510(the)S
+1667(display)S
+1991(window.)S
+2373(With)S
+2608(autoscale)S
+3014(disabled)S
+3382(\(the)S
+3572(default\),)S
+3942(the)S
+4099(image)S
+4377(scale)S
+4610(is)S
+4711(more)S
+4950(predictable,)S
+5452(but)S
+1608 V
+1510(the)S
+1662(image)S
+1936(may)S
+2138(be)S
+2262(clipped)S
+2586(by)S
+2716(the)S
+2868(display)S
+3187(window,)S
+3564(or)S
+3677(may)S
+3879(not)S
+4037(\256ll)S
+4179(the)S
+4331(display)S
+4650(window.)S
+1776 V
+10 B
+1260(Antialias)S
+1896 V
+10 R
+1510(When)S
+1780(dezooming)S
+2257(an)S
+2384(image,)S
+2686(i.e.,)S
+2866(displaying)S
+3316(a)S
+3393(large)S
+3625(image)S
+3902(in)S
+4013(a)S
+4090(smaller)S
+4417(display)S
+4739(window,)S
+5119(antialiasing)S
+2016 V
+1510(causes)S
+1802(all)S
+1933(the)S
+2086(data)S
+2283(to)S
+2392(be)S
+2517(used)S
+2731(to)S
+2840(compute)S
+3215(the)S
+3368(displayed)S
+3782(image.)S
+4082(If)S
+4179(antialiasing)S
+4671(is)S
+4769(disabled)S
+5133(then)S
+5336(image)S
+2136 V
+1510(is)S
+1607(subsampled)S
+2109(to)S
+2217(compute)S
+2592(the)S
+2745(displayed)S
+3159(image.)S
+3459(Antialiasing)S
+3979(can)S
+4148(prevent)S
+4478(subsampling)S
+5015(from)S
+5240(omitting)S
+2256 V
+1510(image)S
+1792(features)S
+2145(that)S
+2333(don't)S
+2582(fall)S
+2753(in)S
+2869(the)S
+3028(sample)S
+3348(grid,)S
+3571(but)S
+3736(it)S
+3829(is)S
+3933(signi\256cantly)S
+4465(slower)S
+4768(than)S
+4977(dezooming)S
+5458(via)S
+2376 V
+1510(subsampling.)S
+2101(The)S
+2286(default)S
+2593(is)S
+2690(no)S
+2820(antialising.)S
+2544 V
+10 B
+1260(Tile)S
+1457(Frames)S
+2664 V
+10 R
+1510(The)S
+1695(default)S
+2002(display)S
+2321(mode)S
+2573(is)S
+2670(to)S
+2778(view)S
+3002(one)S
+3177(frame)S
+3440(at)S
+3543(a)S
+3618(time.)S
+3852(In)S
+3966(tile)S
+4125(frames)S
+4427(mode,)S
+4705(2)S
+4786(or)S
+4900(4)S
+4981(frames)S
+5283(may)S
+5486(be)S
+2784 V
+1510(viewed)S
+1834(simultaneously)S
+2476(in)S
+2590(the)S
+2748(display)S
+3073(window.)S
+3486(All)S
+3650(the)S
+3808(usual)S
+4055(operations)S
+4507(\(zoom)S
+4798(and)S
+4977(pan,)S
+5181(colortable)S
+2904 V
+1510(enhancement,)S
+2091(cursor)S
+2370(readback,)S
+2784(etc.\))S
+2988(still)S
+3169(work)S
+3404(for)S
+3550(each)S
+3762(frame)S
+4024(even)S
+4242(when)S
+4488(in)S
+4596(tile)S
+4754(frames)S
+5055(mode.)S
+3072 V
+10 B
+1260(Warnings)S
+3192 V
+10 R
+1510(The)S
+1701(warnings)S
+2103(options)S
+2435(toggles)S
+2761(whether)S
+3119(you)S
+3306(see)S
+3470(warning)S
+3834(dialog)S
+4121(boxes)S
+4391(in)S
+4506(situations)S
+4927(like)S
+5114(overwriting)S
+3312 V
+1510(an)S
+1634(existing)S
+1981(\256le,)S
+2164(clearing)S
+2515(the)S
+2667(frame)S
+2929(bu)S
+3029 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3090(er,)S
+3222(etc.)S
+3480 V
+10 B
+1260(Centroid)S
+1673(Peaks)S
+3600 V
+10 R
+1510(If)S
+1608(enabled,)S
+1975(the)S
+10 B
+2129(Ctrl-0)S
+10 R
+2421(keystroke)S
+2841(will)S
+3029(reposition)S
+3461(the)S
+3615(cursor)S
+3896(to)S
+4007(the)S
+4162(computed)S
+4589(centroid)S
+4949(of)S
+5065(the)S
+5220(centroid-)S
+3720 V
+1510(ing)S
+1668(box,)S
+1873(otherwise)S
+2291(the)S
+2443(cursor)S
+2722(is)S
+2819(repositioned)S
+3343(to)S
+3451(the)S
+3603(local)S
+3827(maximum)S
+4263(value)S
+4509(within)S
+4795(the)S
+4947(box.)S
+4008 V
+9 B
+900(LOAD)S
+1187(PANEL)S
+4128 V
+10 R
+1260(The)S
+1448(Load)S
+1687(Panel)S
+1943(allows)S
+2238(you)S
+2422(load)S
+2628(images)S
+2945(from)S
+3173(disk)S
+3374(directly)S
+3713(to)S
+3825(the)S
+3981(frame)S
+4247(bu)S
+4347 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4408(er,)S
+4544(this)S
+4723(is)S
+4824(analogous)S
+5263(to)S
+5375(load-)S
+4248 V
+1260(ing)S
+1439(an)S
+1584(image)S
+1879(on)S
+2030(the)S
+2203(command)S
+2648(line)S
+2848(except)S
+3158(that)S
+3358(browsing)S
+3780(is)S
+3897(possible.)S
+4300(At)S
+4450(present)S
+4788(recognized)S
+5275(formats)S
+4368 V
+1260(include)S
+1587(IRAF)S
+1848(OIF)S
+2042(format)S
+2341(\(i.e.)S
+10 I
+2529(.imh)S
+10 R
+2737(extension\),)S
+3211(simple)S
+3511(FITS)S
+3750(\256les,)S
+3975(GIF,)S
+4195(and)S
+4373(Sun)S
+4563(raster\256les.)S
+5040(The)S
+5229(task)S
+5424(will)S
+4488 V
+1260(automatically)S
+1850(sense)S
+2112(the)S
+2280(format)S
+2592(of)S
+2721(the)S
+2888(image)S
+3177(and)S
+3366(load)S
+3583(it)S
+3684(appropriately.)S
+4286(Images)S
+4619(with)S
+4842(private)S
+5164(colormaps)S
+4608 V
+1260(\(such)S
+1515(as)S
+1637(GIF\))S
+1870(will)S
+2065(be)S
+2198(loaded)S
+2503(using)S
+2759(the)S
+2920(private)S
+3236(colormap)S
+3652(\(meaning)S
+4068(that)S
+4257(changing)S
+4663(the)S
+4825(brightness/contrast)S
+4728 V
+1260(enhancements)S
+1856(will)S
+2043(render)S
+2328(an)S
+2453(apparently)S
+2905(random-colored)S
+3573(image\),)S
+3906(all)S
+4037(others)S
+4312(will)S
+4499(be)S
+4624(loaded)S
+4921(with)S
+5130(a)S
+5204(grayscale)S
+4848 V
+1260(colormap.)S
+5088 V
+1260(When)S
+1531(loading)S
+1864(new)S
+2063(images)S
+2379(the)S
+2534(frame)S
+2799(bu)S
+2899 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2960(er)S
+3070(con\256guration)S
+3636(table)S
+3863(will)S
+4053(be)S
+4181(searched)S
+4563(for)S
+4713(a)S
+4791(frame)S
+5057(bu)S
+5157 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5218(er)S
+5329(that)S
+5513(is)S
+5208 V
+1260(the)S
+1417(same)S
+1657(size)S
+1847(or)S
+1965(larger)S
+2231(than)S
+2437(the)S
+2593(new)S
+2793(image)S
+3071(size,)S
+3285(if)S
+3380(no)S
+3514(frame)S
+3780(bu)S
+3880 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3941(er)S
+4052(can)S
+4224(be)S
+4352(found)S
+4619(a)S
+4697(custom)S
+5020(bu)S
+5120 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5181(er)S
+5292(exactly)S
+5328 V
+1260(the)S
+1420(size)S
+1613(of)S
+1734(the)S
+1894(image)S
+2176(will)S
+2370(be)S
+2502(created.)S
+2852(This)S
+3068(means)S
+3361(that)S
+3549(the)S
+3709(image)S
+3991(may)S
+4201(not)S
+4367(\256ll)S
+4517(the)S
+4677(display)S
+5004(window)S
+5364(when)S
+5448 V
+1260(loaded,)S
+1594(or)S
+1720(you)S
+1913(may)S
+2128(see)S
+2298(a)S
+2385(subsection)S
+2850(of)S
+2976(the)S
+3141(image)S
+3428(in)S
+3549(the)S
+3714(main)S
+3957(display)S
+4288(window.)S
+4707(Setting)S
+5033(the)S
+10 I
+5197(autoscale)S
+5568 V
+10 R
+1260(option)S
+1559(on)S
+1702(the)S
+1867(main)S
+2110(Display)S
+2464(panel)S
+2723(will)S
+2923(scale)S
+3166(the)S
+3332(entire)S
+3603(image)S
+3891(to)S
+4013(\256t)S
+4141(the)S
+4307(main)S
+4551(display)S
+4884(window,)S
+5275(the)S
+5441(full)S
+5688 V
+1260(frame)S
+1522(bu)S
+1622 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1683(er)S
+1790(will)S
+1976(always)S
+2283(be)S
+2407(visible)S
+2704(in)S
+2812(the)S
+2964(Panner)S
+3271(marker)S
+3583(window.)S
+5928 V
+1260(Images)S
+1578(with)S
+1786(more)S
+2021(colors)S
+2295(than)S
+2497(can)S
+2665(be)S
+2789(displayed)S
+3202(will)S
+3389(automatically)S
+3964(be)S
+4089(quantized)S
+4508(to)S
+4617(the)S
+4770(number)S
+5106(of)S
+5220(available)S
+6048 V
+1260(colors)S
+1540(before)S
+1830(display.)S
+2210(If)S
+2312(the)S
+10 I
+2470(Auto)S
+2695(Grayscale)S
+10 R
+3141(button)S
+3433(is)S
+3536(enabled)S
+3882(any)S
+4062(image)S
+4342(colormap)S
+4754(will)S
+4945(be)S
+5074(converted)S
+5502(to)S
+6168 V
+1260(grayscale)S
+1666(and)S
+1840(loaded)S
+2136(as)S
+2249(the)S
+2401(standard)S
+2769(grayscale)S
+3175(colormap.)S
+6408 V
+1260(Formats)S
+1626(which)S
+1909(permit)S
+2209(pixels)S
+2487(larger)S
+2758(than)S
+2969(8-bits/pixel)S
+3464(will)S
+3659(be)S
+3792(sampled)S
+4164(on)S
+4303(a)S
+4386(grid)S
+4586(to)S
+4703(determine)S
+5141(an)S
+5274(optimal)S
+6528 V
+1260(range)S
+1519(in)S
+1635(the)S
+1795(data)S
+1998(to)S
+2113(be)S
+2244(used)S
+2464(to)S
+2579(compute)S
+2960(a)S
+3041(linear)S
+3305(transformation)S
+3930(to)S
+4045(the)S
+4204(number)S
+4546(of)S
+4666(display)S
+4992(colors.)S
+5298(This)S
+5513(is)S
+6648 V
+1260(the)S
+1412(same)S
+1647(z-scale)S
+1954(sampling)S
+2352(and)S
+2527(transformation)S
+3146(used)S
+3360(by)S
+3491(the)S
+3644(IRAF)S
+10 I
+3903(DISPLAY)S
+10 R
+4323(task)S
+4515(when)S
+4762(computing)S
+5221(the)S
+10 I
+5374(z1/z2)S
+6768 V
+10 R
+1260(values)S
+1556(and)S
+1741(provides)S
+2126(a)S
+2211(much)S
+2474(better)S
+2741(initial)S
+3015(display)S
+3344(than)S
+3556(simple)S
+3863(truncation)S
+4308(to)S
+4426(8-bits.)S
+4749(This)S
+4967(scaling)S
+5290(will)S
+5486(be)S
+6888 V
+1260(done)S
+1499(automatically)S
+2088(using)S
+2350(a)S
+2439(grid)S
+2646(of)S
+10 I
+2775(Nsample)S
+10 R
+3171(points)S
+3462(if)S
+3569(the)S
+10 I
+3737(Zscale)S
+10 R
+4044(option)S
+4346(is)S
+4459(enabled.)S
+4870(Otherwise,)S
+5351(if)S
+5458(the)S
+7008 V
+10 I
+1260(Zrange)S
+10 R
+1592(option)S
+1891(is)S
+2001(set)S
+2155(the)S
+2320(full)S
+2502(data)S
+2711(range)S
+2974(will)S
+3172(be)S
+3308(used)S
+3533(to)S
+3653(scale)S
+3894(the)S
+4058(image.)S
+4399(Lastly,)S
+4716(is)S
+4825(neither)S
+10 I
+5144(Zscale)S
+10 R
+5447(nor)S
+7128 V
+10 I
+1260(Zrange)S
+10 R
+1579(are)S
+1730(enabled,)S
+2095(the)S
+2247(z1/z2)S
+2493(values)S
+2778(may)S
+2980(be)S
+3104(set)S
+3245(explicitly)S
+3653(using)S
+3900(the)S
+4052(options)S
+4377(box.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(16)S
+7920 V
+EP
+%%Page: 17 18
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1260(Directory)S
+1699(Browsing)S
+1080 V
+10 R
+1510(The)S
+1702(load)S
+1911(panel)S
+2165(contains)S
+2536(a)S
+2618(list)S
+2779(of)S
+2900(\256les)S
+3105(in)S
+3221(the)S
+3381(current)S
+3701(directory)S
+4099(that)S
+4287(may)S
+4497(be)S
+4629(selected)S
+4988(for)S
+5142(loading)S
+5480(by)S
+1200 V
+1510(selecting)S
+1901(with)S
+2115(left)S
+2284(mouse)S
+2581(button.)S
+2898(If)S
+3000(the)S
+3158(\256le)S
+3322(is)S
+3425(a)S
+3504(directory)S
+3899(the)S
+4056(contents)S
+4424(of)S
+4542(the)S
+4699(new)S
+4900(directory)S
+5295(will)S
+5486(be)S
+1320 V
+1510(loaded,)S
+1836(if)S
+1932(it's)S
+2095(a)S
+2174(plain)S
+2409(\256le)S
+2572(an)S
+2701(attempt)S
+3036(will)S
+3227(be)S
+3356(made)S
+3607(to)S
+3720(load)S
+3927(it)S
+4018(as)S
+4137(an)S
+4267(image)S
+4547(otherwise)S
+4971(an)S
+5101(error)S
+5330(popup)S
+1440 V
+1510(will)S
+1706(appear.)S
+2065(Directories)S
+2547(in)S
+2664(the)S
+2825(list)S
+2987(are)S
+3147(identi\256ed)S
+3564(with)S
+3781(a)S
+3864(trailing)S
+4192('/')S
+4325(character,)S
+4753(you)S
+4942(will)S
+5137(always)S
+5453(see)S
+1560 V
+1510(any)S
+1684(subdirectories)S
+2274(listed)S
+2521(even)S
+2739(if)S
+2830(a)S
+2904(\256lter)S
+3123(is)S
+3220(speci\256ed.)S
+1800 V
+1510(The)S
+10 I
+1698(Root)S
+10 R
+1920(button)S
+2209(will)S
+2398(reset)S
+2619(the)S
+2774(current)S
+3089(directory)S
+3482(to)S
+3593(the)S
+3748(system)S
+4059(root)S
+4254(directory.)S
+4673(The)S
+10 I
+4862(Home)S
+10 R
+5134(button)S
+5424(will)S
+1920 V
+1510(reset)S
+1730(the)S
+1884(current)S
+2198(directory)S
+2590(to)S
+2700(the)S
+2854(user's)S
+3124(login)S
+3362(directory,)S
+3779(the)S
+10 I
+3932(Up)S
+10 R
+4085(button)S
+4372(moves)S
+4664(up)S
+4795(one)S
+4970(directory)S
+5361(level,)S
+2040 V
+1510(and)S
+10 I
+1688(Rescan)S
+10 R
+2010(reloads)S
+2332(the)S
+2488(\256le)S
+2650(list)S
+2807(by)S
+2942(rescanning)S
+3409(the)S
+3566(directory.)S
+3986(The)S
+4176(current)S
+4493(working)S
+4861(directory)S
+5256(is)S
+5358(given)S
+2160 V
+1510(below)S
+1784(the)S
+1936(\256le)S
+2094(selection)S
+2479(window.)S
+2400 V
+1510(Selecting)S
+1912(the)S
+10 I
+2064(List)S
+2245(Image)S
+2524(Headers)S
+10 R
+2892(option)S
+3178(will)S
+3364(change)S
+3676(the)S
+3828(display)S
+4147(text)S
+4328(to)S
+4437(list)S
+4591(all)S
+4722(images)S
+5036(in)S
+5145(the)S
+5298(current)S
+2520 V
+1510(directory)S
+1913(which)S
+2200(match)S
+2486(the)S
+2650(\256lename)S
+3036(\256lter.)S
+3322(Directory)S
+3746(browsing)S
+4160(is)S
+4269(disabled)S
+4644(while)S
+4908(this)S
+5095(option)S
+5393(is)S
+5502(in)S
+2640 V
+1510(e)S
+1554 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1615(ect.)S
+2808 V
+10 B
+1260(File)S
+1451(Patterns)S
+2928 V
+10 R
+1510(By)S
+1661(default)S
+1972(all)S
+2106(\256les)S
+2307(and)S
+2486(directories)S
+2942(will)S
+3133(be)S
+3262(listed.)S
+3539(You)S
+3746(may)S
+3953(specify)S
+4276(a)S
+4355(\256lter)S
+4579(to)S
+4692(select)S
+4954(only)S
+5167(those)S
+5413(\256les)S
+3048 V
+1510(with)S
+1721(a)S
+1798(given)S
+2053(extension)S
+2469(such)S
+2685(as)S
+2801(")S
+10 Y
+2842(*)S
+10 R
+2892(.\256ts")S
+3113(using)S
+3362(the)S
+10 I
+3516(Filter)S
+10 R
+3776(text)S
+3958(box.)S
+4195(Directories)S
+4670(will)S
+4858(always)S
+5167(be)S
+5293(seen)S
+5502(in)S
+3168 V
+1510(the)S
+1662(list)S
+1815(and)S
+1989(are)S
+2140(identi\256ed)S
+2548(with)S
+2756(a)S
+2830(trailing)S
+3149('/')S
+3273(character.)S
+3692(Any)S
+3894(valid)S
+4124(unix)S
+4332(pattern)S
+4639(matching)S
+5041(string)S
+5299(will)S
+5486(be)S
+3288 V
+1510(recognized,)S
+2006(multiple)S
+2374(templates)S
+2791(may)S
+2997(be)S
+3125(speci\256ed)S
+3514(in)S
+3626(a)S
+3704(comma-delimited)S
+4443(list)S
+4600(such)S
+4817(as)S
+4933(")S
+10 Y
+4974(*)S
+10 R
+5024(.imh,)S
+10 Y
+5230(*)S
+10 R
+5280(.\256ts")S
+5502(to)S
+3408 V
+1510(list)S
+1663(both)S
+1871(OIF)S
+2062(and)S
+2236(FITS)S
+2472(images.)S
+3576 V
+10 B
+1260(Direct)S
+1555(File)S
+1746(Load)S
+3696 V
+10 R
+1510(If)S
+1608(you)S
+1791(know)S
+2046(exactly)S
+2367(which)S
+2644(\256le)S
+2805(you)S
+2988(wish)S
+3210(to)S
+3321(load,)S
+3551(you)S
+3734(may)S
+3939(enter)S
+4171(its)S
+4299(name)S
+4548(in)S
+4659(the)S
+10 I
+4814(Load)S
+5053(File)S
+10 R
+5247(text)S
+5430(box)S
+3816 V
+1510(and)S
+1688(either)S
+1949(hit)S
+2089(<cr>)S
+2312(or)S
+2429(the)S
+2585(Load)S
+2824(button)S
+3114(to)S
+3226(load)S
+3432(it.)S
+3577(An)S
+3733(absolute)S
+4099(or)S
+4215(relative)S
+4547(path)S
+4752(name)S
+5001(may)S
+5206(be)S
+5333(given,)S
+3936 V
+1510(if)S
+1601(a)S
+1675(simple)S
+1972(\256lename)S
+2346(is)S
+2443(speci\256ed)S
+2828(it)S
+2914(will)S
+3100(be)S
+3224(searched)S
+3602(for)S
+3748(in)S
+3856(the)S
+4008(current)S
+4320(working)S
+4683(directory.)S
+4104 V
+10 B
+1260(Frame)S
+1572(Selections)S
+4224 V
+10 R
+1510(By)S
+1666(default)S
+1982(images)S
+2304(will)S
+2499(be)S
+2632(loaded)S
+2937(into)S
+3132(the)S
+3293(current)S
+3614(frame,)S
+3910(you)S
+4100(may)S
+4312(choose)S
+4629(a)S
+4713(di)S
+4791 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4852(erent)S
+5091(frame)S
+5363(using)S
+4344 V
+1510(the)S
+1662(Frame)S
+1947(menu)S
+2199(button)S
+2485(to)S
+2593(select)S
+2850(from)S
+3074(the)S
+3226(available)S
+3616(frames.)S
+4632 V
+9 B
+900(SAVE)S
+1167(PANEL)S
+4752 V
+10 R
+1260(The)S
+1445(Save)S
+1669(Panel)S
+1921(lets)S
+2090(you)S
+2270(save)S
+2477(the)S
+2629(current)S
+2941(contents)S
+3304(of)S
+3418(the)S
+3571(main)S
+3802(display)S
+4122(window)S
+4475(to)S
+4584(a)S
+4659(disk)S
+4857(\256le)S
+5016(\(including)S
+5458(the)S
+4872 V
+1260(Panner/Coords)S
+1886(markers,)S
+2264(or)S
+2379(overlay)S
+2710(graphics)S
+3079(displayed)S
+3493(by)S
+3624(the)S
+3777(client)S
+4030(program\).)S
+4457(Presently,)S
+4885(only)S
+5094(the)S
+5247(contents)S
+4992 V
+1260(of)S
+1377(the)S
+1533(main)S
+1767(display)S
+2090(window)S
+2446(may)S
+2652(be)S
+2780(saved,)S
+3066(there)S
+3299(is)S
+3400(no)S
+3534(facility)S
+3851(for)S
+4001(saving)S
+4297(the)S
+4454(undisplayed)S
+4972(contents)S
+5340(of)S
+5458(the)S
+5112 V
+1260(entire)S
+1527(frame)S
+1799(bu)S
+1899 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1960(er)S
+2077(other)S
+2322(than)S
+2534(to)S
+2651(enable)S
+2950(the)S
+3111(autoscale)S
+3521(feature)S
+3836(or)S
+3958(zoom)S
+4219(out)S
+4386(so)S
+4514(the)S
+4675(whole)S
+4958(bu)S
+5058 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5119(er)S
+5235(is)S
+5341(in)S
+5458(the)S
+5232 V
+1260(display)S
+1582(window.)S
+1992(A)S
+2097(limited)S
+2414(number)S
+2752(of)S
+2868(formats)S
+3206(are)S
+3360(currently)S
+3753(available,)S
+4171(others)S
+4448(will)S
+4637(be)S
+4764(added)S
+5036(in)S
+5148(future)S
+5420(ver-)S
+5352 V
+1260(sions.)S
+5520 V
+10 B
+1260(File)S
+1451(Name)S
+10 R
+2010(The)S
+2205(File)S
+2401(Name)S
+2680(text)S
+2871(box)S
+3062(allows)S
+3364(you)S
+3555(to)S
+3674(enter)S
+3914(the)S
+4077(\256le)S
+4246(name)S
+4503(of)S
+4627(the)S
+4790(saved)S
+5058(\256le.)S
+5252(A)S
+5365("%d")S
+5640 V
+2010(anywhere)S
+2429(in)S
+2539(the)S
+2693(name)S
+2941(will)S
+3129(be)S
+3255(replaced)S
+3624(by)S
+3756(a)S
+3831(sequence)S
+4227(number)S
+4563(allowing)S
+4944(multiple)S
+5309(frames)S
+5760 V
+2010(to)S
+2118(be)S
+2242(saved)S
+2499(with)S
+2707(unique)S
+3009(names.)S
+5928 V
+10 B
+1260(Format)S
+10 R
+2010(The)S
+2203(Format)S
+2530(box)S
+2718(allows)S
+3017(you)S
+3205(to)S
+3321(choose)S
+3636(the)S
+3796(format)S
+4100(of)S
+4221(the)S
+4381(image)S
+4663(to)S
+4779(be)S
+4911(created)S
+5237(however)S
+6048 V
+2010(not)S
+2187(all)S
+2336(formats)S
+2690(are)S
+2860(currently)S
+3269(implemented.)S
+3895(The)S
+4099(EPS)S
+4321(format)S
+4636(is)S
+4752(similar)S
+5078(to)S
+5204(the)S
+10 I
+5374(Print)S
+6168 V
+10 R
+2010(option)S
+2296(however)S
+2669(there)S
+2898(is)S
+2995(no)S
+3125(annotation.)S
+6336 V
+10 B
+1260(Color)S
+10 R
+2010(The)S
+2201(Color)S
+2465(box)S
+2651(lets)S
+2827(you)S
+3014(choose)S
+3328(the)S
+3487(color)S
+3729(type)S
+3938(of)S
+4058(the)S
+4217(image)S
+4498(to)S
+4613(be)S
+4744(created.)S
+5093(The)S
+5285(options)S
+6456 V
+2010(will)S
+2198(change)S
+2512(depending)S
+2960(on)S
+3092(the)S
+3246(format,)S
+3569(e.g.)S
+3745(FITS)S
+3983(doesn't)S
+4309(allow)S
+4562(color)S
+4798(so)S
+4918(no)S
+5049(color)S
+5285(options)S
+6576 V
+2010(will)S
+2203(be)S
+2334(enabled.)S
+2736(Formats)S
+3101(which)S
+3382(allow)S
+3641(24-bit)S
+3917(images)S
+4237(will)S
+4430(be)S
+4562(written)S
+4883(using)S
+5138(the)S
+5298(current)S
+6696 V
+2010(colormap)S
+2427(after)S
+2649(converting)S
+3116(to)S
+3234(a)S
+3317(24-bit)S
+3595(image,)S
+3903(pseudocolor)S
+4430(images)S
+4752(will)S
+4947(be)S
+5080(written)S
+5402(with)S
+6816 V
+2010(the)S
+2162(current)S
+2474(colormap.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(17)S
+7920 V
+EP
+%%Page: 18 19
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+900(PRINT)S
+1207(PANEL)S
+1080 V
+10 R
+1260(The)S
+1449(Print)S
+1678(Panel)S
+1934(allows)S
+2229(you)S
+2413(dump)S
+2675(the)S
+2831(contents)S
+3198(of)S
+3315(the)S
+3471(main)S
+3706(display)S
+4030(window)S
+4387(as)S
+4505(Encapsulated)S
+5072(Postscript)S
+5502(to)S
+1200 V
+1260(either)S
+1526(a)S
+1608(named)S
+1912(printer)S
+2216(device)S
+2514(or)S
+2635(to)S
+2751(a)S
+2833(disk)S
+3038(\256le.)S
+3259(The)S
+10 I
+3452(Print)S
+3696(To)S
+10 R
+3840(selects)S
+4144(the)S
+4304(type)S
+4514(of)S
+4635(output,)S
+4954(the)S
+10 I
+5114(Print)S
+5358(Com-)S
+1320 V
+1260(mand)S
+10 R
+1513(box)S
+1694(will)S
+1881(adjust)S
+2151(accordingly,)S
+2678(either)S
+2936(as)S
+3050(a)S
+3125(Unix)S
+3356(printer)S
+3653(command)S
+4078(or)S
+4192(as)S
+4306(a)S
+4381(\256le)S
+4540(name.)S
+4842(A)S
+4946("%d")S
+5193(anywhere)S
+1440 V
+1260(in)S
+1372(the)S
+1528(name)S
+1778(for)S
+1928(disk)S
+2129(output)S
+2419(will)S
+2609(be)S
+2737(replaced)S
+3108(by)S
+3242(a)S
+3320(sequence)S
+3719(number)S
+4058(allowing)S
+4442(multiple)S
+4810(frames)S
+5115(to)S
+5226(be)S
+5353(saved)S
+1560 V
+1260(with)S
+1469(unique)S
+1772(names.)S
+2083(Selecting)S
+2486(printers)S
+2822(from)S
+3047(the)S
+3200(installed)S
+3570(list)S
+3724(will)S
+3911(automatically)S
+4486(change)S
+4799(the)S
+4952(command)S
+5377(to)S
+5486(be)S
+1680 V
+1260(used)S
+1474(to)S
+1583(generate)S
+1951(the)S
+2104(output.)S
+2416(This)S
+2625(command)S
+3049(does)S
+3262(not)S
+3420(necessarily)S
+3893(need)S
+4111(to)S
+4219(be)S
+4343(a)S
+4417(printer)S
+4713(command,)S
+5162(the)S
+5314(printer)S
+1800 V
+1260(con\256guration)S
+1823(\256le)S
+1981(lets)S
+2150(you)S
+2330(de\256ne)S
+2604(any)S
+2778(command)S
+3202(string)S
+3460(to)S
+3568(process)S
+3897(the)S
+4049(image.)S
+2088 V
+9 B
+1080(COLOR)S
+1437(OPTIONS)S
+2208 V
+10 R
+1260(The)S
+1469(Color)S
+1751(box)S
+1955(lets)S
+2148(you)S
+2352(choose)S
+2683(the)S
+2859(color)S
+3118(type)S
+3344(of)S
+3481(the)S
+3657(image)S
+3955(to)S
+4087(be)S
+4235(created.)S
+4631(PseudoColor)S
+5203(or)S
+5341(24-bit)S
+2328 V
+1260(postscript)S
+1679(will)S
+1865(be)S
+1989(created)S
+2306(using)S
+2553(the)S
+2705(current)S
+3017(colormap)S
+3424(and)S
+3598(enhancements.)S
+2616 V
+9 B
+1080(POSTSCRIPT)S
+1672(OPTIONS)S
+2736 V
+10 B
+1260(Orientation)S
+10 R
+2010(Set)S
+2168(the)S
+2320(page)S
+2538(orientation.)S
+2964 V
+10 B
+1260(Paper)S
+1545(Size)S
+10 R
+2010(Select)S
+2284(the)S
+2436(paper)S
+2687(size)S
+2872(to)S
+2980(be)S
+3104(used.)S
+3192 V
+10 B
+1260(Image)S
+1556(Scale)S
+10 R
+2010(Set)S
+2168(the)S
+2320(scale)S
+2549(factor)S
+2812(used)S
+3026(to)S
+3135(compute)S
+3510(the)S
+3663(\256nal)S
+3872(image)S
+4147(size.)S
+4388(No)S
+4541(checking)S
+4932(is)S
+5030(done)S
+5255(to)S
+5364(make)S
+3312 V
+2010(sure)S
+2206(the)S
+2358(image)S
+2632(will)S
+2818(\256t)S
+2932(correctly)S
+3316(on)S
+3446(the)S
+3598(page.)S
+3600 V
+9 B
+1080(PROCESSING)S
+1692(OPTIONS)S
+3720 V
+10 B
+1260(Auto)S
+1501(Scale)S
+3840 V
+10 R
+1510(Toggles)S
+1865(whether)S
+2219(or)S
+2335(not)S
+2496(the)S
+2651(image)S
+2928(is)S
+3028(automatically)S
+3605(scaled)S
+3887(to)S
+3998(\256t)S
+4116(the)S
+4272(page.)S
+4549(If)S
+4649(not)S
+4811(enabled,)S
+5180(the)S
+5336(image)S
+3960 V
+1510(scale)S
+1744(will)S
+1935(be)S
+2064(used)S
+2282(to)S
+2395(determine)S
+2829(the)S
+2986(output)S
+3277(image)S
+3556(size,)S
+3771(otherwise)S
+4194(the)S
+4351(image)S
+4629(will)S
+4819(be)S
+4947(scaled)S
+5230(down)S
+5486(\(if)S
+4080 V
+1510(necessary\))S
+1960(to)S
+2068(\256t)S
+2182(on)S
+2312(the)S
+2464(page.)S
+4248 V
+10 B
+1260(Auto)S
+1501(Rotate)S
+4368 V
+10 R
+1510(Determines)S
+2005(whether)S
+2361(or)S
+2479(not)S
+2642(the)S
+2800(image)S
+3080(will)S
+3272(be)S
+3402(rotated)S
+3715(to)S
+3829(\256t)S
+3949(on)S
+4085(the)S
+4243(page.)S
+4492(When)S
+4766(set,)S
+4938(an)S
+5068(image)S
+5348(larger)S
+4488 V
+1510(than)S
+1717(the)S
+1874(current)S
+2191(orientation)S
+2659(will)S
+2850(be)S
+2979(rotated)S
+3291(and)S
+3470(possibly)S
+3839(scaled)S
+4123(to)S
+4236(\256t)S
+4355(the)S
+4511(page,)S
+4758(otherwise)S
+5180(the)S
+5336(image)S
+4608 V
+1510(may)S
+1712(be)S
+1836(scaled)S
+2115(so)S
+2234(that)S
+2414(it)S
+2500(\256ts)S
+2653(in)S
+2761(the)S
+2913(current)S
+3225(orientation.)S
+4776 V
+10 B
+1260(Max)S
+1484(Aspect)S
+4896 V
+10 R
+1510(Automatically)S
+2112(increases)S
+2507(the)S
+2659(scale)S
+2888(so)S
+3007(the)S
+3159(image)S
+3433(\256lls)S
+3614(the)S
+3766(page)S
+3984(in)S
+4092(the)S
+4244(current)S
+4556(orientation.)S
+5064 V
+10 B
+1260(Annotate)S
+5184 V
+10 R
+1510(The)S
+1696(annotate)S
+2065(option)S
+2352(toggles)S
+2672(whether)S
+3024(or)S
+3138(not)S
+3297(the)S
+3450(\256nal)S
+3660(\256le)S
+3820(includes)S
+4185(annotation)S
+4639(such)S
+4854(as)S
+4969(the)S
+5123(image)S
+5399(title,)S
+5304 V
+1510(a)S
+1584(colorbar,)S
+1971(and)S
+2145(axis)S
+2336(labels.)S
+2654(There)S
+2916(is)S
+3013(currently)S
+3403(no)S
+3533(option)S
+3819(for)S
+3965(partial)S
+4250(annotation.)S
+5592 V
+9 B
+1080(ANNOTATION)S
+1727(OPTIONS)S
+5712 V
+10 B
+1260(Annotate)S
+5832 V
+10 R
+1510(Selects)S
+1831(whether)S
+2190(Postscript)S
+2623(image)S
+2905(is)S
+3010(to)S
+3126(be)S
+3258(annotated.)S
+10 B
+3739(Title)S
+10 R
+3977(Annotate)S
+4381(with)S
+4597(a)S
+4679(title)S
+4873(on)S
+5011(the)S
+5171(top)S
+5337(of)S
+5458(the)S
+5952 V
+1510(image.)S
+10 B
+1850(Borders)S
+10 R
+2235(Annotate)S
+2642(with)S
+2860(borders)S
+3199(surrounding)S
+3722(the)S
+3884(image)S
+4168(giving)S
+4464(image)S
+4748(coordinates.)S
+10 B
+5303(Color-)S
+6072 V
+1510(bar)S
+10 R
+1692(Annotate)S
+2090(with)S
+2300(colorbar)S
+2664(at)S
+2768(the)S
+2922(bottom)S
+3238(of)S
+3353(the)S
+3507(image)S
+10 B
+3783(Title)S
+4015(String)S
+10 R
+4315(Title)S
+4537(string)S
+4798(to)S
+4909(use)S
+5075(when)S
+10 I
+5324(title)S
+10 R
+5513(is)S
+6192 V
+1510(selected.)S
+1920(The)S
+2108(special)S
+2418(value)S
+10 I
+2667(imtitle)S
+10 R
+2956(will)S
+3145(force)S
+3382(the)S
+3537(title)S
+3726(to)S
+3837(be)S
+3964(the)S
+4119(currently)S
+4512(displayed)S
+4928(image)S
+5205(title,)S
+5419(oth-)S
+6312 V
+1510(erwise)S
+1800(it)S
+1886(will)S
+2072(be)S
+2196(this)S
+2371(user-selected)S
+2921(\256eld.)S
+6600 V
+9 B
+1080(PRINTER)S
+1512(SELECTION)S
+6720 V
+10 R
+1260(The)S
+1487(printer)S
+1825(selection)S
+2252(list)S
+2447(lets)S
+2658(choose)S
+3007(the)S
+3201(printer)S
+3540(to)S
+3691(be)S
+3858(used.)S
+4139(The)S
+4367(printer)S
+4706(con\256guration)S
+5312(\256le)S
+5513(is)S
+6840 V
+1260(/usr/local/lib/ximprint.cfg)S
+2342(by)S
+2493(default)S
+2821(or)S
+2954(may)S
+3176(be)S
+3320(reset)S
+3558(using)S
+3825(the)S
+10 I
+3997(-printCon\256g)S
+10 R
+4542(command)S
+4986(line)S
+5186(switch)S
+5497(or)S
+6960 V
+10 I
+1260(printCon\256g)S
+10 R
+1752(resource.)S
+2144(The)S
+2329(format)S
+2625(of)S
+2738(the)S
+2890(\256le)S
+3048(is)S
+3145(simply)S
+7200 V
+10 I
+1950(name\\tcommand)S
+7680 V
+10 R
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(18)S
+7920 V
+EP
+%%Page: 19 20
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(The)S
+10 I
+1450(name)S
+10 R
+1701(value)S
+1952(is)S
+2054(what)S
+2284(appears)S
+2624(in)S
+2738(the)S
+2896(selection)S
+3287(list)S
+3446(and)S
+3626(may)S
+3834(be)S
+3964(more)S
+4205(than)S
+4413(a)S
+4493(single)S
+4768(word,)S
+5034(the)S
+10 I
+5192(command)S
+1080 V
+10 R
+1260(can)S
+1432(be)S
+1560(any)S
+1738(command)S
+2166(that)S
+2350(accepts)S
+2677(EPS)S
+2884(input)S
+3124(from)S
+3352(a)S
+3429(pipe,)S
+3659(the)S
+3814(two)S
+3997(\256elds)S
+4247(must)S
+4475(be)S
+4602(separated)S
+5011(by)S
+5144(a)S
+5221(tab)S
+5376(char-)S
+1200 V
+1260(acter.)S
+1538(Normally)S
+1951(the)S
+2103(command)S
+2527(will)S
+2713(be)S
+2837(a)S
+2912(simple)S
+10 I
+3210(lpr)S
+3358(-Pfoo)S
+10 R
+3611(or)S
+3725(some)S
+3967(such,)S
+4206(but)S
+4365(can)S
+4534(also)S
+4726(include)S
+5051(converters)S
+5497(or)S
+1320 V
+1260(previewers.)S
+1752(At)S
+1882(most)S
+2107(128)S
+2287(printer)S
+2583(commands)S
+3046(may)S
+3248(be)S
+3372(used.)S
+1608 V
+9 B
+900(INFO)S
+1152(PANEL)S
+1728 V
+10 R
+1260(The)S
+1449(Info)S
+1649(panel)S
+1899(was)S
+2088(revised)S
+2410(to)S
+2522(provide)S
+2861(a)S
+2939(greater)S
+3249(variety)S
+3560(of)S
+3677(status)S
+3939(information.)S
+4500(The)S
+4689(type)S
+4895(of)S
+5012(output)S
+5302(is)S
+5403(con-)S
+1848 V
+1260(trolled)S
+1560(by)S
+1699(the)S
+1860(toggle)S
+2149(buttons)S
+2483(on)S
+2622(the)S
+2783(bottom)S
+3106(of)S
+3228(the)S
+3389(frame,)S
+3685(however)S
+4066(all)S
+4204(output)S
+4498(is)S
+4603(kept)S
+4813(current)S
+5133(as)S
+5254(the)S
+5414(pro-)S
+1968 V
+1260(gram)S
+1495(runs.)S
+1752(Current)S
+2087(info)S
+2278(options)S
+2603(include:)S
+2136 V
+10 B
+1620(Frame)S
+10 R
+2370(Info)S
+2566(about)S
+2818(the)S
+2970(current)S
+3282(display)S
+3601(frame.)S
+2304 V
+10 B
+1620(Server)S
+10 R
+2370(Info)S
+2584(about)S
+2854(various)S
+3197(server)S
+3489(options,)S
+3858(e.g.)S
+4051(colormaps,)S
+4541(memory)S
+4923(model,)S
+5247(antialias)S
+2424 V
+2370(type,)S
+2597(etc.)S
+2592 V
+10 B
+1620(Clients)S
+10 R
+2370(Show)S
+2650(currently)S
+3062(connected)S
+3518(clients.)S
+3886(Lists)S
+4133(available)S
+4545(connection)S
+5035(channels)S
+5436(and)S
+2712 V
+2370(active)S
+2638(ISM)S
+2846(clients.)S
+2880 V
+10 B
+1620(WCS)S
+10 R
+2370(List)S
+2556(all)S
+2686(WCS)S
+2933(and)S
+3107(mappings)S
+3526(for)S
+3672(the)S
+3824(current)S
+4136(frame.)S
+3048 V
+10 B
+1620(ISM)S
+10 R
+2370(Log)S
+2561(of)S
+2674(various)S
+2998(ISM)S
+3206(status)S
+3464(messages.)S
+3216 V
+10 B
+1620(Imtoolrc)S
+10 R
+2370(Show)S
+2628(current)S
+2940(frame)S
+3202(bu)S
+3302 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3363(er)S
+3470(con\256guration)S
+4033(table.)S
+3504 V
+9 B
+900(TILE)S
+1142(PANEL)S
+1474(\(NEW\))S
+3624 V
+10 R
+1260(With)S
+1493(the)S
+1648(additional)S
+2081(frames,)S
+2410(the)S
+2565(default)S
+2875(tiling)S
+3120(scheme)S
+3452(proved)S
+3762(inadequate.)S
+4282(A)S
+4387(new)S
+4586(control)S
+4903(panel)S
+5153(Tile)S
+5348(frame)S
+3744 V
+1260(now)S
+1471(allows)S
+1771(you)S
+1960(to)S
+2077(select)S
+2343(from)S
+2576(a)S
+2659(number)S
+3003(of)S
+3125(tile)S
+3292(con\256gurations,)S
+3928(the)S
+4089(list)S
+4251(of)S
+4373(frames)S
+4682(to)S
+4798(be)S
+4930(tiled,)S
+5171(a)S
+10 I
+5253(\256ll)S
+5397(style)S
+3864 V
+10 R
+1260(\(left-to-right)S
+1794(or)S
+1912(top-to-bottom\),)S
+2561(as)S
+2679(well)S
+2886(as)S
+3004(optional)S
+3367(labels)S
+3635(for)S
+3786(each)S
+4003(of)S
+4121(the)S
+4278(tiles)S
+4480(\(frame)S
+4780(number,)S
+5145(image)S
+5424(title)S
+3984 V
+1260(or)S
+1373(image)S
+1647(name\).)S
+4224 V
+1260(Tile)S
+1452(con\256guration)S
+2016(will)S
+2204(make)S
+2452(use)S
+2617(of)S
+2732(all)S
+2864(frames)S
+3167(currently)S
+3559(selected)S
+3912(in)S
+4022(the)S
+10 I
+4176(Tile)S
+4364(Frame)S
+10 R
+4662(group)S
+4927(in)S
+5037(the)S
+5191(following)S
+4344 V
+1260(manner:)S
+4512 V
+10 B
+1620(Disabled)S
+10 R
+2370(Do)S
+2522(not)S
+2680(tile)S
+2838(the)S
+2990(display.)S
+4680 V
+10 B
+1620(Manual)S
+10 R
+2370(Tile)S
+2561(according)S
+2984(to)S
+10 I
+3092(Manual)S
+3433(Con\256guration)S
+10 R
+4025(settings.)S
+4848 V
+10 B
+1620(Best)S
+10 R
+2370(Optimize)S
+2772(layout)S
+3052(for)S
+3198(frame)S
+3460(bu)S
+3560 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3621(er)S
+3728(aspect.)S
+5016 V
+10 B
+1620(Square)S
+10 R
+2370(Always)S
+2705(force)S
+2939(a)S
+3013(square)S
+3303(layout)S
+3583(\(2x2,)S
+3821(3x3,)S
+4026(etc\).)S
+5184 V
+10 B
+1620(Horizontal)S
+10 R
+2370(Preferentially)S
+2943(tile)S
+3101(horizontally)S
+3614(\(6)S
+3727(frames)S
+4028(==>)S
+4226(3x2\).)S
+5352 V
+10 B
+1620(Vertical)S
+10 R
+2370(Preferentially)S
+2943(tile)S
+3101(vertically)S
+3508(\(6)S
+3621(frames)S
+3922(==>)S
+4120(2x3\).)S
+5520 V
+10 B
+1620(One)S
+1828(Row)S
+10 R
+2370(Tile)S
+2561(all)S
+2691(in)S
+2799(one)S
+2973(row)S
+3158(\(Nx1\).)S
+5688 V
+10 B
+1620(One)S
+1828(Column)S
+10 R
+2370(Tile)S
+2561(all)S
+2691(in)S
+2799(one)S
+2973(column)S
+3303(\(1xN\).)S
+5976 V
+9 B
+900(COORDS)S
+1312(PANEL)S
+1644(\(NEW\))S
+6096 V
+10 R
+1260(The)S
+1452(Coords)S
+1778(Panel)S
+2037(is)S
+2141(meant)S
+2422(to)S
+2537(provide)S
+2879(a)S
+2960(full-featured)S
+3495(readout)S
+3831(as)S
+3951(well)S
+4160(as)S
+4280(serve)S
+4527(as)S
+4647(a)S
+4729(control)S
+5050(panel)S
+5304(for)S
+5458(the)S
+6216 V
+1260(various)S
+1586(options.)S
+1968(The)S
+2155(display)S
+2475(window)S
+2828(contains)S
+3192(the)S
+3345(image)S
+3620(name/title)S
+4051(and)S
+4226(frame)S
+4489(bu)S
+4589 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4650(er)S
+4758(info,)S
+4975(and)S
+5150(a)S
+5225(selection)S
+6336 V
+1260(of)S
+1373(coordinate)S
+1824(and)S
+1998(image)S
+2272(pixel)S
+2502(readouts.)S
+2925(The)S
+3110(intent)S
+3368(is)S
+3466(provide)S
+3802(more)S
+4038(infor-)S
+4296(mation)S
+4605(than)S
+4808(can)S
+4977(\256t)S
+5092(comfortably)S
+6456 V
+1260(on)S
+1409(the)S
+1580(main)S
+1829(image)S
+2122(window)S
+2493(while)S
+2764(still)S
+2964(taking)S
+3263(up)S
+3412(as)S
+3544(little)S
+3777(screen)S
+4080(space)S
+4350(as)S
+4482(possible.)S
+4914(To)S
+5073(this)S
+5266(end)S
+5458(the)S
+6576 V
+1260("Options")S
+1692(button)S
+1981(is)S
+2081(used)S
+2297(to)S
+2408(hide)S
+2613(most)S
+2841(of)S
+2957(the)S
+3112(feature)S
+3421(controls)S
+3776(when)S
+4025(not)S
+4186(in)S
+4297(use)S
+4464(\(see)S
+4658(below\).)S
+5024(Other)S
+5285(options)S
+6696 V
+1260(on)S
+1390(the)S
+1542(main)S
+1772(panel)S
+2018(include:)S
+6984 V
+10 B
+1620(WCS/Pix)S
+10 R
+2370(Toggle)S
+2683(the)S
+2835(real-time)S
+3225(WCS/pixel)S
+3700(readout)S
+4030(capability)S
+4455(\(i.e.)S
+4641(the)S
+4794(ISM)S
+5003(used)S
+5217(to)S
+5326(access)S
+7104 V
+2370(the)S
+2522(disk)S
+2719(image\).)S
+3081(This)S
+3289(must)S
+3514(be)S
+3638(enabled)S
+3978(for)S
+4124(certain)S
+4425(other)S
+4660(options)S
+4985(to)S
+5093(work.)S
+7272 V
+10 B
+1620(Pix)S
+1789(Table)S
+10 R
+2370(Open)S
+2632(a)S
+2722(panel)S
+2984(showing)S
+3369(an)S
+3509(image)S
+3800(pixel)S
+4047(table.)S
+4343(The)S
+4545(panel)S
+4808(shows)S
+5105(an)S
+5246(array)S
+5497(of)S
+7752 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(19)S
+7920 V
+EP
+%%Page: 20 21
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+2370(pixels)S
+2640(surrounding)S
+3154(the)S
+3307(cursor)S
+3587(position,)S
+3966(either)S
+4224(the)S
+4376(actual)S
+4644(pixel)S
+4874(values)S
+5159(if)S
+5250(the)S
+5402(ISM)S
+1080 V
+2370(is)S
+2476(enabled,)S
+2850(or)S
+2972(scaled)S
+3260(display)S
+3588(values)S
+3882(otherwise.)S
+4365(The)S
+4560(size)S
+4755(of)S
+4878(the)S
+5040(table)S
+5274(may)S
+5486(be)S
+1200 V
+2370(selected)S
+2721(from)S
+2945(the)S
+3097(menubar.)S
+1368 V
+10 B
+1620(Header)S
+10 R
+2370(Display)S
+2734(the)S
+2909(current)S
+3244(image)S
+3541(header)S
+3859(in)S
+3990(a)S
+4087(new)S
+4306(panel.)S
+4630(Both)S
+4879(the)S
+5055(entire)S
+5336(image)S
+1488 V
+2370(header)S
+2697(as)S
+2842(well)S
+3076(as)S
+3221(WCS-speci\256c)S
+3838(parts)S
+4094(of)S
+4239(the)S
+4423(header)S
+4750(are)S
+4932(available)S
+5353(under)S
+1608 V
+2370(di)S
+2448 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2509(erent)S
+2738(tabs.)S
+2984(This)S
+3192(option)S
+3478(is)S
+3575(only)S
+3783(active)S
+4051(when)S
+4297(the)S
+4449(ISM)S
+4657(is)S
+4754(enabled.)S
+1776 V
+10 B
+1620(Compass)S
+10 R
+2370(Draw)S
+2621(an)S
+2745(orientation)S
+3208(compass)S
+3582(on)S
+3712(the)S
+3864(display)S
+4183(panner.)S
+4539(If)S
+4635(the)S
+4788(ISM)S
+4997(is)S
+5095(enabled)S
+5436(and)S
+1896 V
+2370(a)S
+2456(WCS)S
+2714(is)S
+2822(present)S
+3151(in)S
+3270(the)S
+3433(header,)S
+3764(the)S
+3927(compass)S
+4312(will)S
+4509(indicate)S
+4866(N/E)S
+5068(according)S
+5502(to)S
+2016 V
+2370(the)S
+2522(WCS,)S
+2794(otherwise)S
+3212(the)S
+3364(X/Y)S
+3566(axes)S
+3773(of)S
+3886(the)S
+4038(image)S
+4312(are)S
+4463(drawn.)S
+2184 V
+10 B
+1620(Options)S
+10 R
+2370(Pop-up/down)S
+2967(the)S
+3147(option)S
+3461(control)S
+3802(portion)S
+4149(of)S
+4290(the)S
+4470(panel.)S
+4769(When)S
+5065(enabled,)S
+5458(the)S
+2304 V
+2370(Coords)S
+2706(Panel)S
+2975(will)S
+3178(change)S
+3507(size)S
+3709(to)S
+3834(reveal)S
+4124(the)S
+4293(options)S
+4634(which)S
+4924(can)S
+5108(be)S
+5248(changed)S
+2424 V
+2370(\(explained)S
+2821(below\).)S
+2712 V
+1260(The)S
+1457("Readout)S
+1873(Values")S
+2233(group)S
+2508(controls)S
+2872(the)S
+3036(selection)S
+3433(of)S
+3558(WCS)S
+3817(type,)S
+4056(location)S
+4420(and)S
+4606(format)S
+4914(to)S
+5035(be)S
+5172(displayed.)S
+2832 V
+1260(The)S
+1455("Type")S
+1782(menu)S
+2044(always)S
+2361(provides)S
+2745(a)S
+2829(selection)S
+3224(of)S
+3347(the)S
+3509(image)S
+3792(Logical,)S
+4161(Physical)S
+4539(or)S
+4661(World)S
+4955(systems,)S
+5336(which)S
+2952 V
+1260(may)S
+1472(be)S
+1606(identical)S
+1990(depending)S
+2446(on)S
+2586(the)S
+2748(image)S
+3032(header.)S
+3392(If)S
+3498(a)S
+3582(World)S
+3878(system)S
+4197(is)S
+4305(supplied)S
+4685(in)S
+4804(the)S
+4967(image)S
+5252(addition)S
+3072 V
+1260(entries)S
+1573(for)S
+1736(transformations)S
+2410(to)S
+2535(other)S
+2787(sky)S
+2973(systems,)S
+3362(\(e.g.)S
+3616(FK5)S
+3841(to)S
+3966(ICRS)S
+4236(or)S
+4366(galactic/ecliptic\))S
+5077(will)S
+5279(also)S
+5486(be)S
+3192 V
+1260(available.)S
+1706(The)S
+1892(selection)S
+2278(is)S
+2376(dependent)S
+2817(on)S
+2948(whether)S
+3300(the)S
+3453(ISM)S
+3663(is)S
+3762(running)S
+4105(as)S
+4220(well)S
+4424(as)S
+4539(WCS)S
+4788(information)S
+5292(present)S
+3312 V
+1260(in)S
+1369(the)S
+1522(image.)S
+1852(The)S
+2038("Format")S
+2440(menu)S
+2693(allows)S
+2985(the)S
+3138(use)S
+3302(to)S
+3410(select)S
+3667(a)S
+3741(sexigesimal)S
+4243(display,)S
+4587(conversion)S
+5055(to)S
+5163(degrees)S
+5497(or)S
+3432 V
+1260(radians,)S
+1604(or)S
+1718(whichever)S
+2164(format)S
+2461(is)S
+2559(most)S
+2785(natural)S
+3093(for)S
+3240(the)S
+3393(coordinate)S
+3846(being)S
+4100(display.)S
+4476(The)S
+4663(two)S
+4845(toggle)S
+5127(to)S
+5237(the)S
+5391(right)S
+3552 V
+1260(control)S
+1577(whether)S
+1932(this)S
+2111(WCS)S
+2362(is)S
+2463(to)S
+2575(be)S
+2703(displayed)S
+3120(on)S
+3254(the)S
+3410(Panel)S
+3666(\(i.e.)S
+3855(the)S
+4011(Coords)S
+4333(Panel)S
+4588(window\))S
+4976(or)S
+5092(the)S
+5247(ImgWin)S
+3672 V
+1260(\(i.e.)S
+1475(the)S
+1627(text)S
+1807(marker)S
+2119(on)S
+2249(the)S
+2401(main)S
+2631(image)S
+2905(window\).)S
+3912 V
+1260(Other)S
+1524(options)S
+1856(below)S
+2138(this)S
+2321(group)S
+2592(control)S
+2913(whether)S
+3272(or)S
+3393(not)S
+3559(to)S
+3675(display)S
+4002(the)S
+4162(WCS)S
+4417(labels,)S
+4713(the)S
+4873(image)S
+5155(name/title,)S
+4032 V
+1260(and)S
+1459(frame)S
+1746(bu)S
+1846 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1907(er)S
+2039(information)S
+2566(in)S
+2699(the)S
+2876(main)S
+3131(Coords)S
+3475(Panel)S
+3751(display.)S
+4149(The)S
+4358("BPM)S
+4665(Data")S
+4948(option)S
+5258(controls)S
+4152 V
+1260(whether)S
+1613(or)S
+1728(not)S
+1888(the)S
+2042(ISM)S
+2252(will)S
+2440(try)S
+2583(to)S
+2693(map)S
+2897(any)S
+3073(bad-pixel)S
+3482(mask)S
+3725(associated)S
+4167(with)S
+4377(the)S
+4531(image.)S
+4862(If)S
+4960(enabled,)S
+5327(a)S
+5403(bad-)S
+4272 V
+1260(pixel)S
+1497(mask)S
+1745(speci\256ed)S
+2137(by)S
+2274(the)S
+2433(image)S
+2714(header)S
+3016(BPM)S
+3265(keyword)S
+3651(\(currently)S
+4081(\256xed)S
+4317(by)S
+4453(convention)S
+4933(but)S
+5097(this)S
+5278(may)S
+5486(be)S
+4392 V
+1260(selectable)S
+1698(later\))S
+1953(will)S
+2154(be)S
+2293(mapped)S
+2654(along)S
+2921(with)S
+3144(the)S
+3311(image.)S
+3655(Aside)S
+3933(from)S
+4172(wcs/pixel)S
+4601(readouts)S
+4985(at)S
+5103(each)S
+5331(cursor)S
+4512 V
+1260(position,)S
+1643(any)S
+1822(BPM)S
+2069(data)S
+2270(values)S
+2559(found)S
+2826(will)S
+3016(also)S
+3211(be)S
+3339(displayed.)S
+3811(A)S
+3917(non-zero)S
+4305(value)S
+4555(will)S
+4745(cause)S
+5000(the)S
+5156(BPM)S
+5402(\256eld)S
+4632 V
+1260(of)S
+1384(the)S
+1547(Coords)S
+1877(Panel)S
+2140(readout)S
+2480(as)S
+2604(well)S
+2817(as)S
+2941(the)S
+3104(main)S
+3345(image)S
+3630(window)S
+3993(marker)S
+4316(to)S
+4435(switch)S
+4737(to)S
+4856(a)S
+4941(red)S
+5109(background)S
+4752 V
+1260(color)S
+1495(to)S
+1603(\257ag)S
+1783(the)S
+1935(value.)S
+4992 V
+1260(The)S
+1453(last)S
+1630(box)S
+1818(allows)S
+2117(the)S
+2277(user)S
+2481(to)S
+2597(specify)S
+2923(a)S
+3005(di)S
+3083 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3144(erent)S
+3381(ISM)S
+3597(task)S
+3796(to)S
+3912(be)S
+4044(executed)S
+4436(or)S
+4557(to)S
+4673(reinitialize)S
+5138(the)S
+5298(current)S
+5112 V
+1260(one.)S
+1497(In)S
+1618(most)S
+1851(cases)S
+2098(this)S
+2280(won't)S
+2550(need)S
+2775(to)S
+2890(be)S
+3021(changed,)S
+3415(however)S
+3795(a)S
+3876(custom)S
+4202(ISM)S
+4417(could)S
+4676(be)S
+4807(started)S
+5110(when)S
+5363(using)S
+5232 V
+1260(special)S
+1567(data)S
+1763(formats.)S
+2153(This)S
+2361(command)S
+2785(string)S
+3043(can)S
+3211(also)S
+3402(be)S
+3526(controlled)S
+3961(by)S
+4091(the)S
+4243(application)S
+4717("ism_task")S
+5185(resource.)S
+5520 V
+9 B
+900(TCLSHELL)S
+5640 V
+10 R
+1260(The)S
+10 I
+1446(TclShell)S
+10 R
+1805(allows)S
+2097(the)S
+2250(user)S
+2447(to)S
+2556(type)S
+2759(commands)S
+3224(directly)S
+3561(to)S
+3671(the)S
+3825(TCL)S
+4046(interpreter,)S
+4518(letting)S
+4806(you)S
+4988(send)S
+5203(messages)S
+5760 V
+1260(to)S
+1369(the)S
+1522(object)S
+1797(manager)S
+2171(or)S
+2284(execute)S
+2618(speci\256c)S
+2953(procedures)S
+3420(in)S
+3528(the)S
+3680(TCL)S
+3899(code)S
+4117(that)S
+4297(makes)S
+4582(up)S
+4712(the)S
+4864(GUI.)S
+5096(It)S
+5187(is)S
+5284(used)S
+5497(as)S
+5880 V
+1260(a)S
+1338(development)S
+1888(or)S
+2005(debugging)S
+2461(tool)S
+2651(for)S
+2801(the)S
+2957(GUI,)S
+3193(but)S
+3355(for)S
+3505(an)S
+3633(example)S
+4005(of)S
+4122(what)S
+4350(it)S
+4440(does,)S
+4682(bring)S
+4927(it)S
+5017(up)S
+5151(and)S
+5329(type)S
+5536(a)S
+6000 V
+1260(command)S
+1684(such)S
+1897(as)S
+6240 V
+10 I
+1980(send)S
+2193(\256leButton)S
+2612(set)S
+2753(background)S
+3260(red)S
+6648 V
+9 B
+900(COLORMAP)S
+1462(SELECTION)S
+6768 V
+10 R
+1260(By)S
+1410(default)S
+1721(XImtool)S
+2094(will)S
+2284(display)S
+2607(images)S
+2924(using)S
+3175(either)S
+3436(a)S
+3514(grayscale)S
+3924(colormap)S
+4335(\(e.g.)S
+4576(if)S
+4671(loaded)S
+4971(by)S
+5105(a)S
+5183(client\),)S
+5497(or)S
+6888 V
+1260(a)S
+1346(private)S
+1665(colormap)S
+2084(when)S
+2342(loading)S
+2684(an)S
+2820(image)S
+3106(from)S
+3342(disk)S
+3551(that)S
+3743(contains)S
+4118(a)S
+4204(colormap.)S
+4648(Each)S
+4888(frame)S
+5161(de\256nes)S
+5485(its)S
+7008 V
+1260(own)S
+1470(colormap)S
+1885(so)S
+2013(you)S
+2202(can)S
+2379(de\256ne)S
+2662(di)S
+2740 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2801(erent)S
+3039(colormaps)S
+3494(or)S
+3616(enhancements)S
+4220(for)S
+4375(each)S
+4596(frame,)S
+4892(they)S
+5103(will)S
+5298(change)S
+7128 V
+1260(automatically)S
+1834(as)S
+1947(you)S
+2127(cycle)S
+2367(through)S
+2708(the)S
+2860(frames.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(20)S
+7920 V
+EP
+%%Page: 21 22
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+1080(BUILTIN)S
+1487(COLORMAPS)S
+1080 V
+10 R
+1260(Once)S
+1501(loaded,)S
+1823(the)S
+1976(colormap)S
+2384(may)S
+2588(either)S
+2847(be)S
+2973(changed)S
+3337(using)S
+3586(the)S
+3740(builtin)S
+4034(colormap)S
+4443(menu)S
+4697(under)S
+4956(the)S
+5110(View)S
+5358(menu)S
+1200 V
+1260(button)S
+1559(on)S
+1702(the)S
+1867(main)S
+2110(window,)S
+2500(or)S
+2625(from)S
+2861(the)S
+3025(Enhancement)S
+3610(box)S
+3802(on)S
+3944(the)S
+4108(control)S
+4433(panel.)S
+4716(XImtool)S
+5097(has)S
+5272(about)S
+5536(a)S
+1320 V
+1260(dozen)S
+1556(colormap)S
+1991(options)S
+2344(builtin,)S
+2689(other)S
+2952(user-de\256ned)S
+3503(colormaps)S
+3977(may)S
+4208(optionally)S
+4673(be)S
+4826(loaded.)S
+5206(It)S
+5326(is)S
+5452(not)S
+1440 V
+1260(presently)S
+1656(possible)S
+2014(to)S
+2122(save)S
+2329(colormaps)S
+2775(for)S
+2921(later)S
+3128(use.)S
+1728 V
+9 B
+1080(USER-DEFINED)S
+1782(COLORMAPS)S
+1848 V
+10 R
+1260(The)S
+10 I
+1454(cmap[12])S
+10 R
+1887(and)S
+10 I
+2070(cmapDir[12])S
+10 R
+2642(resources)S
+3057(\(or)S
+3212(command)S
+3645(line)S
+3834(arguments\))S
+4322(are)S
+4482(used)S
+4705(to)S
+4823(tell)S
+4991(which)S
+5275(speci\256c)S
+1968 V
+1260(colormaps)S
+1719(to)S
+1840(make)S
+2099(available)S
+2502(or)S
+2628(where)S
+2914(to)S
+3035(look)S
+3256(for)S
+3415(colortables)S
+3895(respectively.)S
+4474(The)S
+4671(colortables)S
+5151(are)S
+5314(loaded)S
+2088 V
+1260(when)S
+1519(ximtool)S
+1874(starts)S
+2128(up,)S
+2296(or)S
+2422(when)S
+2681(it)S
+2780(is)S
+2890(reinitialized)S
+3410(\(e.g.)S
+3630(by)S
+3773(pressing)S
+4149(the)S
+4314(Initialize)S
+4712(button)S
+5011(in)S
+5132(the)S
+5297(control)S
+2208 V
+1260(panel\).)S
+1598(XImtool)S
+1971(will)S
+2161(ignore)S
+2450(any)S
+2628(\256les)S
+2829(in)S
+2941(the)S
+3097(colormap)S
+3508(directory)S
+3901(which)S
+4178(do)S
+4311(not)S
+4472(look)S
+4683(like)S
+4866(colortables.)S
+5392(New)S
+2328 V
+1260(colortables)S
+1728(will)S
+1914(also)S
+2105(be)S
+2229(added)S
+2497(automatically)S
+3071(for)S
+3217(each)S
+3429(image)S
+3703(loaded)S
+3999(from)S
+4223(disk.)S
+2568 V
+1260(The)S
+1451(format)S
+1753(of)S
+1872(a)S
+1952(user)S
+2154(lookup)S
+2468(table)S
+2698(is)S
+2801(very)S
+3015(simple:)S
+3347(each)S
+3566(row)S
+3758(de\256nes)S
+4078(one)S
+4259(colortable)S
+4695(entry,)S
+4962(and)S
+5143(consists)S
+5497(of)S
+2688 V
+1260(three)S
+1489(columns)S
+1858(de\256ning)S
+2216(the)S
+2368(red,)S
+2550(green,)S
+2826(and)S
+3000(blue)S
+3202(values)S
+3487(scaled)S
+3766(to)S
+3874(the)S
+4026(range)S
+4277(0.0)S
+4432(\(o)S
+4515 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4576(\))S
+4639(to)S
+4747(1.0)S
+4902(\(full)S
+5104(intensity\).)S
+2928 V
+1500(R)S
+1597(G)S
+1699(B)S
+3048 V
+1500(R)S
+1597(G)S
+1699(B)S
+3168 V
+1500(\(etc.\))S
+3408 V
+1260(Blank)S
+1529(and)S
+1703(comment)S
+2105(lines)S
+2324(\(lines)S
+2576(beginning)S
+3006(with)S
+3214(a)S
+3288('#'\))S
+3467(are)S
+3618(ignored.)S
+3648 V
+1260(Usually)S
+1605(256)S
+1789(rows)S
+2017(are)S
+2172(provided,)S
+2586(but)S
+2748(the)S
+2904(number)S
+3243(may)S
+3449(actually)S
+3799(be)S
+3927(anything)S
+4311(in)S
+4423(the)S
+4579(range)S
+4834(1)S
+4918(to)S
+5031(256.)S
+5241(XImtool)S
+3768 V
+1260(will)S
+1451(interpolate)S
+1912(the)S
+2068(table)S
+2296(as)S
+2413(necessary)S
+2834(to)S
+2946(compute)S
+3324(the)S
+3480(colortable)S
+3913(values)S
+4202(used)S
+4419(in)S
+4531(XImtool.)S
+4929(XImtool)S
+5302(uses)S
+5508(at)S
+3888 V
+1260(most)S
+1485(201)S
+1665(colors)S
+1939(to)S
+2047(render)S
+2331(pixel)S
+2561(data,)S
+2782(so)S
+2901(it)S
+2987(is)S
+3084(usually)S
+3403(necessary)S
+3820(to)S
+3928(interpolate)S
+4385(the)S
+4537(table)S
+4761(when)S
+5007(it)S
+5093(is)S
+5190(loaded.)S
+4128 V
+1260(The)S
+1446(name)S
+1693(of)S
+1807(the)S
+1960(colortable)S
+2390(as)S
+2504(it)S
+2591(will)S
+2778(appear)S
+3074(in)S
+3183(the)S
+3336(XImtool)S
+3706(control)S
+4020(panel)S
+4267(is)S
+4365(the)S
+4518(root)S
+4710(name)S
+4957(of)S
+5072(the)S
+5226(\256le,)S
+5411(e.g.,)S
+4248 V
+1260(if)S
+1365(the)S
+1531(\256le)S
+1703(is)S
+1814("rainbow.lut")S
+2398(the)S
+2564(colortable)S
+3007(name)S
+3267(will)S
+3467(be)S
+3605("rainbow".)S
+4083(Lower)S
+4387(case)S
+4602(names)S
+4901(are)S
+5065(suggested)S
+5502(to)S
+4368 V
+1260(avoid)S
+1525(name)S
+1784(collisions)S
+2211(with)S
+2432(the)S
+2597(builtin)S
+2902(colortables.)S
+3408(Private)S
+3734(colormaps)S
+4193(for)S
+4352(disk)S
+4562(images)S
+4888(will)S
+5088(be)S
+5226(have)S
+5458(the)S
+4488 V
+1260(same)S
+1497(name)S
+1745(as)S
+1860(the)S
+2014(image)S
+2290(loaded.)S
+2613(If)S
+2711(the)S
+2865(same)S
+3102(colortable)S
+3533(\256le)S
+3693(appears)S
+4029(in)S
+4139(multiple)S
+4505(user)S
+4703(colortable)S
+5134(directories,)S
+4608 V
+1260(the)S
+1412(\256rst)S
+1598(one)S
+1772(found)S
+2035(will)S
+2221(be)S
+2345(used.)S
+4896 V
+9 B
+1080(MINIMIZING)S
+1677(COLORMAP)S
+2239(CONFLICTS)S
+5016 V
+10 R
+1260(The)S
+1456(Gterm)S
+1752(widget)S
+2065(used)S
+2289(by)S
+2430(XImtool)S
+2810(\(i.e.)S
+3006(the)S
+3169(main)S
+3410(display)S
+3740(window\))S
+4136(uses)S
+4349(a)S
+4434(private)S
+4753(global)S
+5045(colormap)S
+5464(for)S
+5136 V
+1260(display,)S
+1615(this)S
+1801(allows)S
+2103(it)S
+2200(to)S
+2319(have)S
+2548(greater)S
+2865(control)S
+3189(over)S
+3407(color)S
+3653(cell)S
+3838(allocation)S
+4273(but)S
+4441(can)S
+4619(occasionally)S
+5158(also)S
+5359(cause)S
+5256 V
+1260("colormap)S
+1714(\257ashing")S
+2108(as)S
+2227(the)S
+2385(mouse)S
+2682(is)S
+2785(moved)S
+3093(in)S
+3207(and)S
+3387(out)S
+3551(of)S
+3670(the)S
+3828(application.)S
+4363(The)S
+4554(problem)S
+4923(here)S
+5130(is)S
+5234(that)S
+5421(in)S
+5536(a)S
+5376 V
+1260(system)S
+1572(with)S
+1784(only)S
+1996(an)S
+2124(8-bit)S
+2347(colormap)S
+2758(\(256)S
+2975(colors\))S
+3286(all)S
+3420(applications)S
+3937(must)S
+4165(compete)S
+4536(for)S
+4685(colors,)S
+4987(programs)S
+5397(such)S
+5496 V
+1260(as)S
+1380(XV)S
+1561(or)S
+1681(Netscape)S
+2083(allocate)S
+2430(colors)S
+2711(from)S
+2942(the)S
+3102(default)S
+3417(colormap)S
+3832(leaving)S
+4164(only)S
+4380(a)S
+4462(few)S
+4649(free)S
+4841(cells)S
+5062(for)S
+5216(XImtool.)S
+5616 V
+1260(Since)S
+1513(XImtool)S
+1883(de\256nes)S
+2197(a)S
+2271(private)S
+2578(global)S
+2858(colormap)S
+3265(it)S
+3351(is)S
+3448(still)S
+3629(able)S
+3825(to)S
+3933(allocate)S
+4273(the)S
+4425(needed)S
+4737(cells)S
+4950(rather)S
+5212(than)S
+5414(fail-)S
+5736 V
+1260(ing,)S
+1449(but)S
+1613(it's)S
+1777(allocating)S
+2207(cells)S
+2426(already)S
+2755(used)S
+2974(by)S
+3110(other)S
+3351(applications.)S
+3925(As)S
+4072(the)S
+4230(mouse)S
+4527(moves)S
+4824(out)S
+4989(of)S
+5109(the)S
+5268(ximtool)S
+5856 V
+1260(window)S
+1623(those)S
+1875(cells)S
+2099(are)S
+2261(once)S
+2490(again)S
+2747(de\256ned)S
+3082(in)S
+3201(terms)S
+3464(of)S
+3587(the)S
+3749(default)S
+4066(colormap,)S
+4508(so)S
+4637(the)S
+4799(ximtool)S
+5151(window)S
+5513(is)S
+5976 V
+1260(then)S
+1470(using)S
+1725(a)S
+1807(di)S
+1885 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1946(erent)S
+2183(colormap.)S
+2653(It)S
+2752(is)S
+2857(this)S
+3040(switching)S
+3467(of)S
+3588(the)S
+3748(colormap)S
+4164(context)S
+4497(that)S
+4686(causes)S
+4985(the)S
+5146(\257ashing)S
+5502(to)S
+6096 V
+1260(occur,)S
+1536(but)S
+1694(there)S
+1923(are)S
+2074(a)S
+2148(few)S
+2327(things)S
+2602(that)S
+2782(can)S
+2950(be)S
+3074(done)S
+3298(to)S
+3406(help)S
+3608(minimize)S
+4016(this.)S
+6336 V
+1260(XImtool)S
+1640(logically)S
+2031(de\256nes)S
+2356(200)S
+2548(colors)S
+2834(which)S
+3120(the)S
+3284(client)S
+3548(image)S
+3834(display)S
+4165(program)S
+4545(can)S
+4725(use)S
+4900(to)S
+5020(render)S
+5316(pixels.)S
+6456 V
+1260(However,)S
+1687(ximtool)S
+2036(may)S
+2245(or)S
+2365(may)S
+2574(not)S
+2739(actually)S
+3092(allocate)S
+3439(all)S
+3576(of)S
+3695(those)S
+3942(colors.)S
+4277(By)S
+4430(default)S
+4743(it)S
+4835(currently)S
+5231(allocates)S
+6576 V
+1260(only)S
+1479(about)S
+1743(192)S
+1935(colors,)S
+2246(to)S
+2366(reserve)S
+2695(64)S
+2837(colors)S
+3123(for)S
+3281(the)S
+3445(other)S
+3692(windows)S
+4095(on)S
+4237(the)S
+4401(screen.)S
+4752(You)S
+4966(don't)S
+5219(normally)S
+6696 V
+1260(notice)S
+1539(this)S
+1719(as)S
+1837(1\))S
+1955(usually)S
+2279(the)S
+2436(default)S
+2748(screen)S
+3037(colormap)S
+3449(has)S
+3617(enough)S
+3946(free)S
+4135(cells)S
+4353(to)S
+4466(allow)S
+4722(ximtool)S
+5068(to)S
+5180(match)S
+5458(the)S
+6816 V
+1260(colors,)S
+1570(and)S
+1755(2\))S
+1879(the)S
+2042(extra)S
+2282(unallocated)S
+2784(cells)S
+3009(correspond)S
+3494(to)S
+3614(the)S
+3778(brightest)S
+4170(pixels)S
+4451(in)S
+4571(the)S
+4735(rendered)S
+5125(image,)S
+5436(and)S
+6936 V
+1260(these)S
+1496(colors)S
+1771(may)S
+1974(not)S
+2132(be)S
+2256(used)S
+2469(or)S
+2582(usually)S
+2901(only)S
+3109(correspond)S
+3582(to)S
+3690(a)S
+3764(few)S
+3943(small)S
+4190(regions)S
+4514(near)S
+4715(the)S
+4867(saturated)S
+5257(cores)S
+5497(of)S
+7056 V
+1260(bright)S
+1529(objects.)S
+7296 V
+1260(You)S
+1465(can)S
+1636(eliminate)S
+2041(this)S
+2219(problem)S
+2585(by)S
+2718(setting)S
+3018(the)S
+10 I
+3173(basePixel)S
+10 R
+3594(resource)S
+3965(to)S
+4077(e.g.)S
+4285(48)S
+4419(instead)S
+4736(of)S
+4853(64,)S
+5012(which)S
+5290(will)S
+5480(let)S
+7776 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(21)S
+7920 V
+EP
+%%Page: 22 23
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(the)S
+1428(gterm)S
+1707(widget)S
+2025(allocate)S
+2381(all)S
+2527(200)S
+2723(colors.)S
+3068(However,)S
+3504(this)S
+3695(isn't)S
+3918(recommended)S
+4528(for)S
+4689(normal)S
+5017(use)S
+5195(as)S
+5323(it)S
+5424(will)S
+1080 V
+1260(increase)S
+1624(the)S
+1784(likelihood)S
+2228(of)S
+2349(colormap)S
+2764(\257ashing.)S
+3174(If)S
+3278(you)S
+3466(change)S
+10 I
+3787(basePixel)S
+10 R
+4175(,)S
+4239(either)S
+4505(restart)S
+4793(the)S
+4954(X)S
+5065(server)S
+5347(or)S
+5469(set)S
+1200 V
+1260(the)S
+1418(resource)S
+10 I
+1791(cmapInitialize)S
+10 R
+2363(=)S
+10 I
+2419(True)S
+10 R
+2644(to)S
+2758(force)S
+2998(the)S
+3156(gterm)S
+3425(widget)S
+3732(to)S
+3845(update)S
+4146(its)S
+4276(global)S
+4561(colormap)S
+4973(resource)S
+5345(in)S
+5458(the)S
+1320 V
+1260(X)S
+1362(server.)S
+1690(The)S
+1875(colormap)S
+2282(resource)S
+2649(may)S
+2851(also)S
+3042(be)S
+3166(deleted)S
+3484(by)S
+3614(using)S
+3861(the)S
+4013(command)S
+1524 V
+10 I
+1980(xprop)S
+2243(-root)S
+2473(-remove)S
+2829(GT_image)S
+1728 V
+10 R
+1260(These)S
+1528(options)S
+1853(may)S
+2055(also)S
+2246(be)S
+2370(set)S
+2511(on)S
+2641(the)S
+2793(command)S
+3217(line)S
+3397(when)S
+3643(\256rst)S
+3829(starting)S
+4159(up.)S
+1968 V
+1260(In)S
+1388(general)S
+1726(one)S
+1915(can)S
+2098(set)S
+2254(the)S
+2421(Gterm)S
+2721(widget)S
+3039(resources)S
+10 I
+3461(basePixel)S
+10 R
+3895(and)S
+10 I
+4085(maxColors)S
+10 R
+4570(to)S
+4694(specify)S
+5028(the)S
+5196(region)S
+5497(of)S
+2088 V
+1260(colormap)S
+1680(space)S
+1944(to)S
+2065(be)S
+2202(used)S
+2428(for)S
+2587(image)S
+2874(display.)S
+3261(If)S
+3370(you)S
+3563(set)S
+10 I
+3717(maxColors)S
+10 R
+4199(to)S
+4320(a)S
+4407(small)S
+4667(value,)S
+4951(the)S
+5116(200)S
+5308(logical)S
+2208 V
+1260(colors)S
+1541(de\256ned)S
+1872(by)S
+2009(the)S
+2168(widget)S
+2477(will)S
+2670(be)S
+2801(mapped)S
+3154(by)S
+3291(the)S
+3450(imtool)S
+3749(color)S
+3991(model)S
+4278(into)S
+4471(whatever)S
+4873(number)S
+5215(of)S
+5336(colors)S
+2328 V
+1260(are)S
+1417(actually)S
+1769(available)S
+2165(to)S
+2279(the)S
+2437(widget.)S
+2800(For)S
+2974(example,)S
+3372(in)S
+3485(the)S
+3642(default)S
+3954(setup,)S
+4225(200)S
+4410(color)S
+4650(values)S
+4940(are)S
+5096(really)S
+5358(being)S
+2448 V
+1260(mapped)S
+1606(into)S
+1792(192)S
+1972(color)S
+2207(cells)S
+2420(used)S
+2633(for)S
+2779(display,)S
+3123(the)S
+3275(remaining)S
+3710(colors)S
+3984(are)S
+4135(used)S
+4348(for)S
+4494(buttons,)S
+4845(menus)S
+5137(etc)S
+5284(and)S
+5459(are)S
+2568 V
+1260(allocated)S
+1650(from)S
+1874(the)S
+2026(default)S
+2333(colormap)S
+2740(by)S
+2870(the)S
+3022(X)S
+3124(toolkit)S
+3416(when)S
+3662(the)S
+3814(application)S
+4288(starts)S
+4529(up.)S
+2808 V
+1260(Even)S
+1501(though)S
+1815(the)S
+1973(Gterm)S
+2264(widget)S
+2572(uses)S
+2780(a)S
+2860(private)S
+3174(colormap,)S
+3613(it)S
+3706(is)S
+3810(a)S
+3891(private)S
+10 I
+4205(global)S
+10 R
+4498(colormap)S
+4912(meaning)S
+5293(that)S
+5480(all)S
+2928 V
+1260(Gterm)S
+1550(widgets)S
+1896(share)S
+2141(the)S
+2298(same)S
+2537(colormap.)S
+3003(An)S
+3159(example)S
+3531(of)S
+3648(colormap)S
+4059(sharing)S
+4387(in)S
+4499(ximtool)S
+4845(is)S
+4946(the)S
+5102(main)S
+5336(image)S
+3048 V
+1260(window)S
+1619(and)S
+1800(the)S
+1959(colorbar)S
+2328(window.)S
+2742(These)S
+3017(are)S
+3175(two)S
+3362(separate)S
+3725(gterm)S
+3995(widgets)S
+4343(that)S
+4530(share)S
+4777(the)S
+4936(same)S
+5178(colormap.)S
+3168 V
+1260(They)S
+1506(have)S
+1735(to)S
+1854(share)S
+2105(the)S
+2268(same)S
+2514(colormap,)S
+2957(as)S
+3080(otherwise)S
+3508(when)S
+3764(you)S
+3954(windowed)S
+4410(the)S
+4572(main)S
+4812(image)S
+5096(window)S
+5458(the)S
+3288 V
+1260(colorbar)S
+1630(window)S
+1990(would)S
+2278(not)S
+2444(accurately)S
+2891(re\257ect)S
+3178(the)S
+3338(modi\256ed)S
+3732(colormap.)S
+4203(By)S
+4359(default)S
+4675(two)S
+4864(separate)S
+5229(ximtools)S
+3408 V
+1260(would)S
+1556(also)S
+1763(share)S
+2019(the)S
+2186(same)S
+2436(colormap)S
+2858(meaning)S
+3247(contrast)S
+3608(enhancements)S
+4218(in)S
+4341(one)S
+4530(window)S
+4897(would)S
+5192(a)S
+5236 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+5297(ect)S
+5458(the)S
+3528 V
+1260(other.)S
+1563(By)S
+1723(resetting)S
+2110(the)S
+10 I
+2275(cmapName)S
+10 R
+2767(command)S
+3204(line)S
+3397(option)S
+3696(or)S
+3822(resource)S
+4203(you)S
+4397(can)S
+4579(change)S
+4905(the)S
+5071(name)S
+5331(of)S
+5458(the)S
+3648 V
+1260(private)S
+1582(colormap)S
+2004(used)S
+2232(causing)S
+2582(separate)S
+2953(ximtools)S
+3349(to)S
+3472(use)S
+3650(di)S
+3728 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3789(erent)S
+4033(colormaps,)S
+4519(but)S
+4692(note)S
+4909(this)S
+5099(also)S
+5304(creates)S
+3768 V
+1260(colormap)S
+1671(\257ashing)S
+2022(between)S
+2388(the)S
+2544(two)S
+2728(windows)S
+3123(that)S
+3307(cannot)S
+3607(easily)S
+3874(be)S
+4002(avoided.)S
+4407(By)S
+4559(setting)S
+4861(the)S
+10 I
+5018(cmapName)S
+10 R
+5502(to)S
+3888 V
+1260("default")S
+1649(the)S
+1801(widget)S
+2103(will)S
+2289(allocate)S
+2629(colors)S
+2903(from)S
+3127(the)S
+3279(default)S
+3586(colormap,)S
+4018(but)S
+4176(this)S
+4351(is)S
+4448(of)S
+4561(little)S
+4775(use)S
+4938(at)S
+5040(the)S
+5192(moment.)S
+4128 V
+1260(There)S
+1524(are)S
+1677(a)S
+1753(number)S
+2090(of)S
+2205(other)S
+2442(resources)S
+2850(that)S
+3032(can)S
+3202(be)S
+3328(used)S
+3543(to)S
+3653(modify)S
+3974(the)S
+4129(behavior)S
+4511(of)S
+4627(the)S
+4782(Gterm)S
+5070(widget)S
+5375(color)S
+4248 V
+1260(management)S
+1801(scheme,)S
+2156(but)S
+2315(these)S
+2551(are)S
+2703(the)S
+2856(most)S
+3082(useful)S
+3356(ones.)S
+3624(For)S
+3793(question)S
+4162(and)S
+4336(further)S
+4637(information)S
+5139(feel)S
+5318(free)S
+5502(to)S
+4368 V
+1260(contact)S
+10 I
+1578(iraf@noao.edu)S
+10 R
+2184(.)S
+4776 V
+9 B
+900(DISPLAY)S
+1322(CLIENT)S
+1694(CONNECTIONS)S
+4896 V
+10 R
+1260(XImtool)S
+1629(allows)S
+1920(display)S
+2239(clients)S
+2530(to)S
+2638(connect)S
+2978(in)S
+3086(any)S
+3260(of)S
+3373(the)S
+3525(following)S
+3944(ways:)S
+5064 V
+10 B
+1260(\256fo)S
+1429(pipes)S
+5184 V
+10 R
+1510(The)S
+1706(traditional)S
+2158(approach.)S
+2589(The)S
+2785(default)S
+3103(global)S
+3394(/dev/imt1[io])S
+3963(pipes)S
+4215(may)S
+4428(be)S
+4564(used,)S
+4814(or)S
+4939(a)S
+5025(private)S
+5344(set)S
+5497(of)S
+5304 V
+1510(\256fos)S
+1728(can)S
+1906(be)S
+2040(speci\256ed)S
+2435(using)S
+2692(the)S
+10 I
+2854(-\256fo)S
+10 R
+3055(command)S
+3489(line)S
+3678(argument)S
+4094(or)S
+10 Y
+4216(*)S
+10 I
+4266(\256fo)S
+10 R
+4433(resource.)S
+4864(Values)S
+5180(should)S
+5486(be)S
+5424 V
+1510(speci\256ed)S
+1895(as)S
+2008(the)S
+2160(root)S
+2351(pathname)S
+2769(to)S
+2877(a)S
+2951(pair)S
+3136(of)S
+3250(\256fo)S
+3420(pipes)S
+3662(whose)S
+3948(last)S
+4118(character)S
+4513(is)S
+4611('i')S
+4736(or)S
+4850('o',)S
+5052(these)S
+5288(charac-)S
+5544 V
+1510(ters)S
+1687(will)S
+1876(be)S
+2003(added)S
+2274(automatically)S
+2851(when)S
+3100(opening)S
+3455(the)S
+3610(pipes.)S
+3909(For)S
+4081(example,)S
+4477(to)S
+4587(use)S
+4752(the)S
+4906(default)S
+5215(pipes)S
+5458(the)S
+5664 V
+1510(path)S
+1712(would)S
+1992(be)S
+2116(speci\256ed)S
+2501(as)S
+2614(simply)S
+2917("/dev/imt1".)S
+3438(A)S
+3540(value)S
+3786(of)S
+3899("none")S
+4205(disables)S
+4557(this)S
+4732(connection.)S
+5832 V
+10 B
+1260(tcp/ip)S
+1535(sockets)S
+5952 V
+10 R
+1510(Clients)S
+1836(connect)S
+2188(via)S
+2352(a)S
+2438(tcp/ip)S
+2708(socket.)S
+3030(The)S
+3227(default)S
+3546(port)S
+3749(is)S
+10 I
+3858(5137)S
+10 R
+4058(,)S
+4125(or)S
+4250(a)S
+4337(custom)S
+4669(port)S
+4873(may)S
+5088(be)S
+5225(speci\256ed)S
+6072 V
+1510(using)S
+1758(the)S
+10 I
+1911(-port)S
+10 R
+2142(command)S
+2567(line)S
+2747(switch)S
+3038(or)S
+3151(a)S
+10 Y
+3225(*)S
+10 I
+3275(port)S
+10 R
+3472(resource.)S
+3864(This)S
+4072(permits)S
+4402(connecting)S
+4870(to)S
+4978(the)S
+5130(server)S
+5403(over)S
+6192 V
+1510(a)S
+1584(remote)S
+1891(network)S
+2248(connection)S
+2716(anywhere)S
+3133(on)S
+3263(the)S
+3415(Internet.)S
+3780(A)S
+3883(port)S
+4075(number)S
+4411(of)S
+4525(0)S
+4606(\(zero\))S
+4874(disables)S
+5227(this)S
+5403(con-)S
+6312 V
+1510(nection.)S
+6480 V
+10 B
+1260(unix)S
+1480(domain)S
+1833(sockets)S
+6600 V
+10 R
+1510(Like)S
+1733(a)S
+1817(tcp/ip)S
+2085(socket,)S
+2405(but)S
+2573(limited)S
+2898(to)S
+3017(a)S
+3102(single)S
+3382(host)S
+3590(system.)S
+3934(Usually)S
+4286(faster)S
+4548(than)S
+4761(a)S
+4846(tcp/ip)S
+5115(socket,)S
+5436(and)S
+6720 V
+1510(comparable)S
+2008(to)S
+2119(a)S
+2196(\256fo.)S
+2393(By)S
+2543(default)S
+2853(each)S
+3068(user)S
+3267(gets)S
+3460(their)S
+3675(own)S
+3879(unix)S
+4089(domain)S
+4421(socket,)S
+4733(so)S
+4854(this)S
+5031(option)S
+5319(allows)S
+6840 V
+1510(multiple)S
+1882(users)S
+2125(to)S
+2241(run)S
+2413(ximtools)S
+2803(on)S
+2942(the)S
+3103(same)S
+3347(host)S
+3553(without)S
+3898(having)S
+4209(to)S
+4326(customize)S
+4770(things.)S
+5109(The)S
+5303(default)S
+6960 V
+1510(value)S
+1761(is)S
+1863("/tmp/.IMT%d",)S
+2558(other)S
+2798(sockets)S
+3126(may)S
+3332(be)S
+3460(de\256ned)S
+3788(using)S
+4039(the)S
+10 I
+4195(-unix)S
+10 R
+4434(command)S
+4862(line)S
+5046(switch)S
+5341(or)S
+5458(the)S
+7080 V
+10 Y
+1510(*)S
+10 I
+1560(unixaddr)S
+10 R
+1953(resource.)S
+2377(Legal)S
+2636(values)S
+2923(should)S
+3222(be)S
+3348(speci\256ed)S
+3735(as)S
+3850(a)S
+3926(\256lename)S
+4302(to)S
+4412(be)S
+4538(used)S
+4753(for)S
+4901(the)S
+5056(socket,)S
+5369(up)S
+5502(to)S
+7200 V
+1510(two)S
+1693("%d")S
+1941(\256elds)S
+2190(are)S
+2343(allowed)S
+2691(and)S
+2867(will)S
+3055(be)S
+3181(replaced)S
+3550(by)S
+3682(the)S
+3836(userid.)S
+4137(An)S
+4291(empty)S
+4573(string)S
+4833(value)S
+5081(disables)S
+5435(this)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(22)S
+7920 V
+EP
+%%Page: 23 24
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1510(connection.)S
+1200 V
+1510(By)S
+1657(default)S
+1964(ximtool)S
+2306(listens)S
+2592(simultaneously)S
+3228(for)S
+3374(client)S
+3626(connections)S
+4133(on)S
+4263(all)S
+4394(three)S
+4624(types)S
+4866(of)S
+4980(ports.)S
+5296(Clients)S
+1320 V
+1510(may)S
+1713(connect)S
+2054(simultaneously)S
+2691(by)S
+2822(di)S
+2900 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2961(erent)S
+3190(means)S
+3475(allowing)S
+3855(up)S
+3985(to)S
+4093(three)S
+4322(di)S
+4400 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4461(erent)S
+4690(displays)S
+5048(to)S
+5156(be)S
+5280(loading)S
+1440 V
+1510(at)S
+1612(the)S
+1764(same)S
+1999(time)S
+2207(into)S
+2393(di)S
+2471 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2532(erent)S
+2761(frames.)S
+1848 V
+9 B
+1080(COMMUNICATIONS)S
+1987(PROTOCOL)S
+1968 V
+10 R
+1260(The)S
+1448(communications)S
+2142(protocol)S
+2508(used)S
+2724(is)S
+2824(a)S
+2901(slightly)S
+3236(modi\256ed)S
+3626(version)S
+3954(of)S
+4071(that)S
+4255(used)S
+4472(by)S
+4606(the)S
+4762(IIS)S
+4918(Model)S
+5213(70;)S
+5375(other)S
+2088 V
+1260(more)S
+1503(modern)S
+1846(protocols)S
+2256(will)S
+2450(likely)S
+2716(be)S
+2848(supported)S
+3280(in)S
+3396(the)S
+3556(future.)S
+3887(The)S
+4080(IIS)S
+4239(protocol)S
+4609(is)S
+4713(basically)S
+5105(a)S
+5186(command)S
+2208 V
+1260(packet)S
+1562(stream)S
+1870(with)S
+2090(a)S
+2176(header)S
+2483(describing)S
+2941(the)S
+3105(operation)S
+3524(to)S
+3644(be)S
+3780(performed)S
+4237(\(select)S
+4539(frame,)S
+4838(load)S
+5052(display,)S
+5409(read)S
+2328 V
+1260(cursor,)S
+1564(etc\),)S
+1768(and)S
+1942(an)S
+2066(optional)S
+2424(data)S
+2620(packet)S
+2910(containing)S
+3362(e.g.)S
+3536(pixels.)S
+2568 V
+1260(Beginning)S
+1712(with)S
+1925(XImtool)S
+2299(V1.3)S
+2531(the)S
+2688(protocol)S
+3056(was)S
+3246(modi\256ed)S
+3637(even)S
+3860(more)S
+4100(to)S
+4214(allow)S
+4472(extra)S
+4707(text)S
+4893(at)S
+5001(the)S
+5159(end)S
+5339(of)S
+5458(the)S
+2688 V
+1260(WCS)S
+1515(string)S
+1781(to)S
+1897(de\256ne)S
+2179(image)S
+2461(mappings)S
+2888(and)S
+3070(to)S
+3186(better)S
+3451(support)S
+3789(multiple)S
+4161(world)S
+4431(coordinate)S
+4889(systems)S
+5243(within)S
+5536(a)S
+2808 V
+1260(frame.)S
+1612(For)S
+1786(backwards)S
+2247(compatability)S
+2832(none)S
+3061(of)S
+3179(the)S
+3336(existing)S
+3688(IIS)S
+3845(protocols)S
+4252(were)S
+4480(modi\256ed)S
+4871(completely,)S
+5375(how-)S
+2928 V
+1260(ever)S
+1467(we)S
+1619(take)S
+1821(advantage)S
+2261(of)S
+2380(unused)S
+2699(registers)S
+3073(to)S
+3187(\257ag)S
+3373(the)S
+3531(new)S
+3733(features)S
+4084(in)S
+4198(existing)S
+4551(functions)S
+4958(\(like)S
+5176(read/write)S
+3048 V
+1260(WCS\).)S
+1572(The)S
+1764(WCS)S
+2018(mapping)S
+2405(changes)S
+2763(required)S
+3132(only)S
+3347(that)S
+3534(the)S
+3693(unused)S
+4013('x')S
+4166(register)S
+4503(be)S
+4635(set)S
+4784(to)S
+4900(indicate)S
+5254(the)S
+5414(new)S
+3168 V
+1260(behavior)S
+1639(was)S
+1824(desired,)S
+2167(e.g.)S
+2341(the)S
+2493(wcs)S
+2678(text)S
+2858(containing)S
+3310(the)S
+3462(extra)S
+3691(mapping)S
+4071(data.)S
+3408 V
+1260(We)S
+1444(also)S
+1651(added)S
+1935(two)S
+2131(new)S
+2343(WCS)S
+2606(calls)S
+2835(that)S
+3031(allow)S
+3299(us)S
+3434(to)S
+3558(query)S
+3831(the)S
+4000(WCS)S
+4264(version,)S
+4630(or)S
+4760(query)S
+5034(a)S
+5125(WCS)S
+5389(by)S
+5536(a)S
+3528 V
+1260(speci\256c)S
+1602(number)S
+1944(corresponding)S
+2552(to)S
+2667(a)S
+2748(mapping.)S
+3190(The)S
+3382(WCS)S
+3636(version)S
+3967(query)S
+4231(will)S
+4423(return)S
+4697(a)S
+4777(string)S
+5041(such)S
+5260(as)S
+5379("ver-)S
+3648 V
+1260(sion=10")S
+1654(which)S
+1928(can)S
+2096(be)S
+2220(parsed)S
+2510(by)S
+2640(the)S
+2792(client)S
+3044(to)S
+3152(get)S
+3304(a)S
+3378(version)S
+3702(number)S
+4037('10')S
+4233(\(corresponding)S
+4867(to)S
+4975(version)S
+5299(1.0\).)S
+3888 V
+1260(Because)S
+1634(of)S
+1759(the)S
+1923(added)S
+2203(mapping)S
+2595(text)S
+2787(the)S
+2951(WCS)S
+3210(string)S
+3480(length)S
+3772(was)S
+3969(increased)S
+4387(from)S
+4623(320)S
+4815(to)S
+4936(1024)S
+5179(bytes,)S
+5458(the)S
+4008 V
+1260(string)S
+1518(length)S
+1798(used)S
+2011(internally)S
+2424(depends)S
+2781(on)S
+2911(whether)S
+3262(the)S
+3414('x')S
+3560(register)S
+3889(has)S
+4052(been)S
+4270(set.)S
+4248 V
+1260(Support)S
+1616(for)S
+1771(the)S
+1933(full)S
+2112(16)S
+2252(frames)S
+2563(allowed)S
+2919(by)S
+3059(the)S
+3221(bit-\257ag)S
+3550('z')S
+3700(register)S
+4039(in)S
+4157(the)S
+4319(IIS)S
+4481(header)S
+4786(packet)S
+5086(required)S
+5458(the)S
+4368 V
+1260(masking)S
+1631(values)S
+1918(be)S
+2044(changed)S
+2408(at)S
+2512(various)S
+2838(places)S
+3119(in)S
+3229(the)S
+3383(code.)S
+3658(This)S
+3868(was)S
+4055(more)S
+4291(a)S
+4366(limitation)S
+4787(of)S
+4901(the)S
+5054(initial)S
+5319(imple-)S
+4488 V
+1260(mentation)S
+1690(than)S
+1892(a)S
+1966(required)S
+2328(change)S
+2640(to)S
+2748(the)S
+2900(protocol.)S
+4728 V
+1260(A)S
+1362(complete)S
+1758(summary)S
+2160(of)S
+2273(the)S
+2425(XImtool)S
+2794(IIS)S
+2946(protocol)S
+3309(implementation)S
+3967(follows.)S
+5136 V
+9 B
+1080(IIS)S
+1227(PROTOCOL)S
+1769(SUMMARY)S
+5256 V
+10 R
+1260(All)S
+1427(operations)S
+1882(are)S
+2042(initiated)S
+2409(by)S
+2548(sending)S
+2898(a)S
+2981(header)S
+3285(packet)S
+3584(containing)S
+4046(a)S
+10 I
+4130(thing)S
+4376(id)S
+10 R
+4494(\(tid\))S
+4706(and)S
+10 I
+4890(subunit)S
+10 R
+5225(selecting)S
+5376 V
+1260(the)S
+1413(function)S
+1776(to)S
+1884(be)S
+2008(performed,)S
+2478(optionally)S
+2914(followed)S
+3299(by)S
+3429(data)S
+3625(up)S
+3755(to)S
+3863(32Kb)S
+4115(long.)S
+4378(The)S
+4563(IIS)S
+4715(header)S
+5010(packet)S
+5300(used)S
+5513(is)S
+5496 V
+1260(de\256ned)S
+1584(as)S
+5616 V
+10 C
+1980(struct)S
+2460(iism70)S
+2880({)S
+5736 V
+2340(short)S
+2820(tid;)S
+5856 V
+2340(short)S
+2820(thingct;)S
+5976 V
+2340(short)S
+2820(subunit;)S
+6096 V
+2340(short)S
+2820(checksum;)S
+6216 V
+2340(short)S
+2820(x,)S
+3000(y,)S
+3180(z;)S
+6336 V
+2340(short)S
+2820(t;)S
+6456 V
+1980(};)S
+6696 V
+10 R
+1260(The)S
+10 I
+1447(thing)S
+1685(count)S
+10 R
+1939(\256eld)S
+2149(contains)S
+2514(the)S
+2668(negative)S
+3038(number)S
+3375(of)S
+3490(bytes)S
+3733(of)S
+3848(data)S
+4046(that)S
+4228(will)S
+4417(be)S
+4544(sent)S
+4738(following)S
+5160(the)S
+5315(header)S
+6816 V
+1260(packet.)S
+1605(The)S
+1790(IIS)S
+1942(header)S
+2237(checksum)S
+2666(is)S
+2763(computed)S
+3187(as)S
+7056 V
+10 C
+1500(checksum)S
+2040(=)S
+2160(0177777)S
+2640(-)S
+2760(\(tid)S
+3060(+)S
+3180(subunit)S
+3660(+)S
+3780(thingct)S
+4260(+)S
+4380(x)S
+4500(+)S
+4620(y)S
+4740(+)S
+4860(z)S
+4980(+)S
+5100(t\);)S
+7296 V
+10 R
+1260(The)S
+1447(four)S
+1645(IIS)S
+1799(registers)S
+2169(are)S
+2322(set)S
+2465(di)S
+2543 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2604(erently)S
+2913(depending)S
+3361(on)S
+3493(the)S
+3647(operation,)S
+4081(a)S
+4158(summary)S
+4563(of)S
+4679(the)S
+4834(header)S
+5132(packets)S
+5464(for)S
+7776 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(23)S
+7920 V
+EP
+%%Page: 24 25
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+1260(each)S
+1472(operation)S
+1879(is)S
+1976(summarized)S
+2494(below.)S
+1200 V
+10 B
+2795(IIS)S
+2959(Header)S
+3305(Packet)S
+3623(Summary)S
+1320 V
+10 R
+2530(TID)S
+3436(Subunit)S
+4136(Tct)S
+4439(X)S
+4661(Y)S
+4930(Z)S
+5235(T)S
+5514(Data)S
+1340 V
+10 Y1
+2083(2)S
+2123(2222222222222222222222222222222222222222222222222222222222222222222222222)S
+1460 V
+10 R
+1260(Read)S
+1495(Data)S
+2158(IIS_READ)S
+10 B
+2602(|)S
+10 R
+2624(PACKED)S
+3218(MEMORY)S
+4117(-NB)S
+4450(x)S
+4672(y)S
+4883(fr)S
+5188(-)S
+5493(NB)S
+1580 V
+1260(Write)S
+1517(Data)S
+2158(IIS_WRITE)S
+10 B
+2646(|)S
+10 R
+2668(PACKED)S
+3218(MEMORY)S
+4117(-NB)S
+4450(x)S
+4672(y)S
+4883(fr)S
+5188(-)S
+5493(NB)S
+1700 V
+1260(Read)S
+1495(Cursor)S
+2158(IIS_READ)S
+3218(IMCURSOR)S
+4186(-)S
+4458(-)S
+4680(-)S
+4883(-)S
+5188(-)S
+5493(-)S
+1820 V
+1260(Write)S
+1517(Cursor)S
+2158(IIS_WRITE)S
+3218(IMCURSOR)S
+4186(-)S
+4450(x)S
+4672(y)S
+4883(wcs)S
+5188(-)S
+5493(-)S
+1940 V
+1260(Set)S
+1418(Frame)S
+2158(IIS_WRITE)S
+3218(LUT)S
+10 B
+3412(|)S
+10 R
+3434(COMMAND)S
+4161(-1)S
+4458(-)S
+4680(-)S
+4883(-)S
+5188(-)S
+5493(2)S
+2060 V
+1260(Erase)S
+1511(Frame)S
+2158(IIS_WRITE)S
+10 B
+2676(|)S
+10 R
+2728(fb)S
+3218(FEEDBACK)S
+4186(-)S
+4458(-)S
+4680(-)S
+4883(fr)S
+5188(-)S
+5493(-)S
+2300 V
+1260(Old)S
+1440(Write)S
+1697(WCS)S
+2158(IIS_WRITE)S
+10 B
+2646(|)S
+10 R
+2668(PACKED)S
+3218(WCS)S
+4150(-N)S
+4458(-)S
+4680(-)S
+4883(fr)S
+5188(fb)S
+5493(320)S
+2420 V
+1260(Old)S
+1440(Read)S
+1675(WCS)S
+2158(IIS_READ)S
+3218(WCS)S
+4186(-)S
+4458(-)S
+4680(-)S
+4883(fr)S
+5188(wcs)S
+5493(320)S
+2660 V
+1260(WCS)S
+1507(Version?)S
+2158(IIS_READ)S
+3218(WCS)S
+4186(-)S
+4450(1)S
+4672(1)S
+4883(-)S
+5188(-)S
+5493(320)S
+2780 V
+1260(WCS)S
+1507(by)S
+1637(Number?)S
+2158(IIS_READ)S
+3218(WCS)S
+4186(-)S
+4450(1)S
+4680(-)S
+4883(fr)S
+5188(wcs)S
+5493(1024)S
+2900 V
+1260(New)S
+1478(Write)S
+1735(WCS)S
+2158(IIS_WRITE)S
+10 B
+2646(|)S
+10 R
+2668(PACKED)S
+3218(WCS)S
+4150(-N)S
+4450(1)S
+4680(-)S
+4883(fr)S
+5188(fb)S
+5493(1024)S
+3020 V
+1260(New)S
+1478(Read)S
+1713(WCS)S
+2158(IIS_READ)S
+3218(WCS)S
+4186(-)S
+4450(1)S
+4680(-)S
+4883(fr)S
+5188(wcs)S
+5493(1024)S
+3040 V
+10 Y1
+2083(2)S
+2123(2222222222222222222222222222222222222222222222222222222222222222222222222)S
+2083(1)S
+2940 V
+2083(1)S
+2840 V
+2083(1)S
+2740 V
+2083(1)S
+2640 V
+2083(1)S
+2540 V
+2083(1)S
+2440 V
+2083(1)S
+2340 V
+2083(1)S
+2240 V
+2083(1)S
+2140 V
+2083(1)S
+2040 V
+2083(1)S
+1940 V
+2083(1)S
+1840 V
+2083(1)S
+1740 V
+2083(1)S
+1640 V
+2083(1)S
+1540 V
+2083(1)S
+1440 V
+2083(1)S
+3040 V
+3143(1)S
+2940 V
+3143(1)S
+2840 V
+3143(1)S
+2740 V
+3143(1)S
+2640 V
+3143(1)S
+2540 V
+3143(1)S
+2440 V
+3143(1)S
+2340 V
+3143(1)S
+2240 V
+3143(1)S
+2140 V
+3143(1)S
+2040 V
+3143(1)S
+1940 V
+3143(1)S
+1840 V
+3143(1)S
+1740 V
+3143(1)S
+1640 V
+3143(1)S
+1540 V
+3143(1)S
+1440 V
+3143(1)S
+3040 V
+4042(1)S
+2940 V
+4042(1)S
+2840 V
+4042(1)S
+2740 V
+4042(1)S
+2640 V
+4042(1)S
+2540 V
+4042(1)S
+2440 V
+4042(1)S
+2340 V
+4042(1)S
+2240 V
+4042(1)S
+2140 V
+4042(1)S
+2040 V
+4042(1)S
+1940 V
+4042(1)S
+1840 V
+4042(1)S
+1740 V
+4042(1)S
+1640 V
+4042(1)S
+1540 V
+4042(1)S
+1440 V
+4042(1)S
+3040 V
+4364(1)S
+2940 V
+4364(1)S
+2840 V
+4364(1)S
+2740 V
+4364(1)S
+2640 V
+4364(1)S
+2540 V
+4364(1)S
+2440 V
+4364(1)S
+2340 V
+4364(1)S
+2240 V
+4364(1)S
+2140 V
+4364(1)S
+2040 V
+4364(1)S
+1940 V
+4364(1)S
+1840 V
+4364(1)S
+1740 V
+4364(1)S
+1640 V
+4364(1)S
+1540 V
+4364(1)S
+1440 V
+4364(1)S
+3040 V
+4586(1)S
+2940 V
+4586(1)S
+2840 V
+4586(1)S
+2740 V
+4586(1)S
+2640 V
+4586(1)S
+2540 V
+4586(1)S
+2440 V
+4586(1)S
+2340 V
+4586(1)S
+2240 V
+4586(1)S
+2140 V
+4586(1)S
+2040 V
+4586(1)S
+1940 V
+4586(1)S
+1840 V
+4586(1)S
+1740 V
+4586(1)S
+1640 V
+4586(1)S
+1540 V
+4586(1)S
+1440 V
+4586(1)S
+3040 V
+4808(1)S
+2940 V
+4808(1)S
+2840 V
+4808(1)S
+2740 V
+4808(1)S
+2640 V
+4808(1)S
+2540 V
+4808(1)S
+2440 V
+4808(1)S
+2340 V
+4808(1)S
+2240 V
+4808(1)S
+2140 V
+4808(1)S
+2040 V
+4808(1)S
+1940 V
+4808(1)S
+1840 V
+4808(1)S
+1740 V
+4808(1)S
+1640 V
+4808(1)S
+1540 V
+4808(1)S
+1440 V
+4808(1)S
+3040 V
+5113(1)S
+2940 V
+5113(1)S
+2840 V
+5113(1)S
+2740 V
+5113(1)S
+2640 V
+5113(1)S
+2540 V
+5113(1)S
+2440 V
+5113(1)S
+2340 V
+5113(1)S
+2240 V
+5113(1)S
+2140 V
+5113(1)S
+2040 V
+5113(1)S
+1940 V
+5113(1)S
+1840 V
+5113(1)S
+1740 V
+5113(1)S
+1640 V
+5113(1)S
+1540 V
+5113(1)S
+1440 V
+5113(1)S
+3040 V
+5418(1)S
+2940 V
+5418(1)S
+2840 V
+5418(1)S
+2740 V
+5418(1)S
+2640 V
+5418(1)S
+2540 V
+5418(1)S
+2440 V
+5418(1)S
+2340 V
+5418(1)S
+2240 V
+5418(1)S
+2140 V
+5418(1)S
+2040 V
+5418(1)S
+1940 V
+5418(1)S
+1840 V
+5418(1)S
+1740 V
+5418(1)S
+1640 V
+5418(1)S
+1540 V
+5418(1)S
+1440 V
+5418(1)S
+3040 V
+5773(1)S
+2940 V
+5773(1)S
+2840 V
+5773(1)S
+2740 V
+5773(1)S
+2640 V
+5773(1)S
+2540 V
+5773(1)S
+2440 V
+5773(1)S
+2340 V
+5773(1)S
+2240 V
+5773(1)S
+2140 V
+5773(1)S
+2040 V
+5773(1)S
+1940 V
+5773(1)S
+1840 V
+5773(1)S
+1740 V
+5773(1)S
+1640 V
+5773(1)S
+1540 V
+5773(1)S
+1440 V
+5773(1)S
+3280 V
+10 R
+1260(Where)S
+1675(NB)S
+2459(=)S
+2545(number)S
+2880(of)S
+2993(bytes)S
+3234(expected)S
+3618(or)S
+3731(written)S
+3400 V
+1675(x)S
+2459(=)S
+2545(x)S
+2625(position)S
+2978(of)S
+3091(operation)S
+3498(in)S
+3606(frame)S
+3868(bu)S
+3968 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4029(er)S
+4136(coords)S
+3520 V
+1675(y)S
+2459(=)S
+2545(y)S
+2625(position)S
+2978(of)S
+3091(operation)S
+3498(in)S
+3606(frame)S
+3868(bu)S
+3968 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+4029(er)S
+4136(coords)S
+3640 V
+1675(fr)S
+2459(=)S
+2545(frame)S
+2807(number)S
+3142(\(passed)S
+3471(as)S
+3584(bit\257ag)S
+3870(\(i.e.)S
+4055(1,)S
+4160(2)S
+4240(,4)S
+4345(8,)S
+4450(etc\))S
+3760 V
+1675(fb)S
+2459(=)S
+2545(frame)S
+2807(bu)S
+2907 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+2968(er)S
+3075(con\256g)S
+3355(number)S
+3690(\(zero)S
+3924(indexed\))S
+3880 V
+1675(N)S
+2459(=)S
+2545(length)S
+2825(of)S
+2938(WCS)S
+3185(string)S
+4000 V
+1675(wcs)S
+2459(=)S
+2545(WCS)S
+2792(number)S
+3127(\(usually)S
+3479(zero\))S
+4120 V
+1675(Data)S
+2459(=)S
+2545(the)S
+2697(number)S
+3032(of)S
+3145(bytes)S
+3386(of)S
+3499(data)S
+3695(to)S
+3803(be)S
+3927(read)S
+4128(or)S
+4241(written)S
+4554(following)S
+4973(the)S
+5125(header)S
+5420(packet.)S
+4360 V
+1675(IIS_WRITE)S
+2489(=)S
+2575(0400000)S
+4480 V
+1675(IIS_READ)S
+2489(=)S
+2575(0100000)S
+4600 V
+1675(COMMAND)S
+2489(=)S
+2575(0100000)S
+4720 V
+1675(PACKED)S
+2489(=)S
+2575(0040000)S
+4840 V
+1675(IMC_SAMPLE)S
+2489(=)S
+2575(0040000)S
+5080 V
+1675(MEMORY)S
+2489(=)S
+2575(001)S
+5200 V
+1675(LUT)S
+2489(=)S
+2575(002)S
+5320 V
+1675(FEEDBACK)S
+2489(=)S
+2575(005)S
+5440 V
+1675(IMCURSOR)S
+2489(=)S
+2575(020)S
+5560 V
+1675(WCS)S
+2489(=)S
+2575(021)S
+5800 V
+1260(TID)S
+1463(\256elds)S
+1717(can)S
+1892(be)S
+2023(logically)S
+2410(OR'd)S
+2670(with)S
+2886(the)S
+3046(PACKED)S
+3484(\257ag)S
+3672(indicating)S
+4110(the)S
+4270(number)S
+4613(of)S
+4734(data)S
+4938(bytes)S
+5187(is)S
+5292(exactly)S
+5920 V
+10 I
+1260(thingct)S
+10 R
+1570(bytes)S
+1813(long,)S
+2048(otherwise)S
+10 I
+2468(thingct)S
+10 R
+2778(must)S
+3005(be)S
+3131(speci\256ed)S
+3518(as)S
+3632(half)S
+3818(the)S
+3971(number)S
+4307(of)S
+4421(data)S
+4618(bytes.)S
+4915(In)S
+5029(a)S
+5104(cursor)S
+5384(read,)S
+6040 V
+1260(if)S
+1353(the)S
+1508(IIS_READ)S
+1985(\257ag)S
+2168(is)S
+2268(OR'd)S
+2523(with)S
+2734(IMC_SAMPLE)S
+3401(the)S
+3556(logical)S
+3861(cursor)S
+4143(position)S
+4499(\(i.e.)S
+4717(the)S
+4872(last)S
+5044(value)S
+5293(read)S
+5497(or)S
+6160 V
+1260(set\))S
+1445(is)S
+1552(returned)S
+1924(immediately,)S
+2489(otherwise)S
+2917(the)S
+3079(server)S
+3362(will)S
+3558(wait)S
+3770(for)S
+3926(a)S
+4010(keystroke)S
+4438(to)S
+4556(be)S
+4690(hit)S
+4836(before)S
+5130(returning)S
+5536(a)S
+6280 V
+1260(string)S
+1519(containing)S
+1972(the)S
+2125(\(x,y\))S
+2347(position,)S
+2727(wcs)S
+2914(of)S
+3029(the)S
+3183(read,)S
+3411(and)S
+3587(the)S
+3741(keystroke.)S
+4216(When)S
+4486(setting)S
+4785(the)S
+4939(frame)S
+5203(you)S
+5385(must)S
+6400 V
+1260(send)S
+1473(a)S
+1547(short)S
+1777(integer)S
+2084(in)S
+2192(the)S
+2344(data)S
+2540(containing)S
+2992(the)S
+3144(frame)S
+3406(selected.)S
+6688 V
+9 B
+900(ISM)S
+1097(COMMUNICATIONS)S
+6808 V
+10 R
+1260(The)S
+1457(ISM)S
+1677(\(Image)S
+2001(Support)S
+2360(Module\))S
+2746(can)S
+2926(be)S
+3062(any)S
+3248(external)S
+3611(task)S
+3814(which)S
+4100(connects)S
+4491(to)S
+4611(XImtool)S
+4993(over)S
+5213(a)S
+5300(socket.)S
+6928 V
+1260(Communications)S
+1974(are)S
+2125(limited)S
+2439(to)S
+2547(simple)S
+2844(null-terminated)S
+3490(text)S
+3670(strings.)S
+4022(In)S
+4135(most)S
+4360(cases)S
+4600(these)S
+4835(strings)S
+5132(are)S
+5283(just)S
+5458(the)S
+7048 V
+1260(standard)S
+1642(OBM)S
+1914(messages)S
+2335(sent)S
+2540(to)S
+2663(XImtool)S
+3047(objects)S
+3375(but)S
+3548(can)S
+3731(also)S
+3937(include)S
+4276(Tcl)S
+4454(callback)S
+4831(code)S
+5064(\(either)S
+5369(ISM-)S
+7168 V
+1260(speci\256c)S
+1609(callbacks,)S
+2049(procedures)S
+2530(which)S
+2818(can)S
+3000(be)S
+3137(added)S
+3418(to)S
+3539(the)S
+3704(callback)S
+4079(list)S
+4245(for)S
+4404(existing)S
+4764(XImtool)S
+5146(objects,)S
+5497(or)S
+7288 V
+1260(even)S
+1478(new)S
+1674(GUI)S
+1881(code)S
+2099(to)S
+2207(create)S
+2474(panels)S
+2759(and)S
+2933(new)S
+3129(objects\).)S
+7768 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(24)S
+7920 V
+EP
+%%Page: 25 26
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+9 B
+1080(ISM)S
+1277(SOCKET)S
+1679(CONNECTION)S
+1080 V
+10 R
+1260(The)S
+1482(ISM)S
+1727(\256rst)S
+1950(requests)S
+2344(a)S
+2455(connection)S
+2960(to)S
+3105(XImtool)S
+3511(on)S
+3678(a)S
+3789(dedicated)S
+4238(socket)S
+4561(whose)S
+4884(default)S
+5229(value)S
+5513(is)S
+1200 V
+1260("/tmp/.ISM%d",)S
+1953(where)S
+2234(the)S
+2393('%d')S
+2629(is)S
+2733(replaced)S
+3107(by)S
+3244(the)S
+3403(userid)S
+3684(allowing)S
+4071(multiple)S
+4442(users)S
+4684(on)S
+4821(a)S
+4902(machine)S
+5277(to)S
+5392(have)S
+1320 V
+1260(independent)S
+1778(sockets.)S
+2157(The)S
+2343(XImtool)S
+2713('ism_addr')S
+3182(resource)S
+3550(or)S
+3664("-ismdev")S
+4099(command-line)S
+4707(option)S
+4994(can)S
+5163(be)S
+5288(used)S
+5502(to)S
+1440 V
+1260(change)S
+1585(this)S
+1773(address,)S
+2140(a)S
+2227(value)S
+2486(of)S
+2612('none')S
+2915(will)S
+3114(disable)S
+3440(ISM)S
+3661(communications.)S
+4420(The)S
+4618(socket)S
+4916(may)S
+5130(also)S
+5333(be)S
+5469(set)S
+1560 V
+1260(with)S
+1468(an)S
+1592(ISMDEV)S
+2005(environment)S
+2540(variable)S
+2891(which)S
+3165(will)S
+3351(override)S
+3713(the)S
+3865(resource)S
+4232(or)S
+4345(command-line)S
+4952(options.)S
+1800 V
+1260(Once)S
+1502(a)S
+1578(connection)S
+2048(request)S
+2368(is)S
+2467(received,)S
+2891(XImtool)S
+3262(replies)S
+3560(with)S
+3770(a)S
+3846(message)S
+4217(telling)S
+4506(the)S
+4661(ISM)S
+4872(to)S
+4983(reconnect)S
+5403(on)S
+5536(a)S
+1920 V
+1260(di)S
+1338 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+1399(erent)S
+1629(socket,)S
+1940(it)S
+2027(then)S
+2229(frees)S
+2452(the)S
+2604(initial)S
+2868(connection)S
+3336(allowing)S
+3716(multiple)S
+4080(other)S
+4315(ISMs)S
+4562(to)S
+4670(request)S
+4988(their)S
+5201(own)S
+5403(con-)S
+2040 V
+1260(nection.)S
+1652(The)S
+1850(communications)S
+2554(between)S
+2929(XImtool)S
+3311(and)S
+3499(the)S
+3665(ISM)S
+3887(are)S
+4052(carried)S
+4372(out)S
+4544(entirely)S
+4893(over)S
+5114(this)S
+5303(second)S
+2160 V
+1260(negotiated)S
+1723(socket.)S
+2079(Once)S
+2335(connected,)S
+2810(the)S
+2978(ISM)S
+3202(appears)S
+3552(as)S
+3681(just)S
+3872(another)S
+4217(named)S
+4529(object)S
+4819(which)S
+5109(can)S
+5293(receive)S
+2280 V
+1260(OBM)S
+1518(messages.)S
+2568 V
+9 B
+1080(COMMUNICATIONS)S
+1987(PROTOCOL)S
+2688 V
+10 R
+1260(Messages)S
+1679(from)S
+1904(the)S
+2057(ISM)S
+2266(are)S
+2418(written)S
+2732(to)S
+2841(the)S
+2994(connection)S
+3463(socket)S
+3749(and)S
+3924(must)S
+4150(be)S
+4275(preceeded)S
+4709(by)S
+4841(one)S
+5017(of)S
+5132(the)S
+5286(follow-)S
+2808 V
+1260(ing)S
+1418(keywords:)S
+2976 V
+10 B
+1620(callback)S
+10 R
+2370(Negotiate)S
+2788(a)S
+2862(connection)S
+3330(on)S
+3460(another)S
+3789(socket)S
+3144 V
+10 B
+1620(ready)S
+10 R
+2370(Client)S
+2645(is)S
+2742(ready)S
+2993(to)S
+3101(begin)S
+3353(processing)S
+3312 V
+10 B
+1620(quit)S
+10 R
+2370(Client)S
+2645(is)S
+2742(shutting)S
+3095(down)S
+3347(and)S
+3521(disconnecting)S
+3480 V
+10 B
+1620(send)S
+10 R
+2370(Send)S
+2600(a)S
+2674(message)S
+3042(to)S
+3150(another)S
+3479(object)S
+3816 V
+1260(Where)S
+1555(messages)S
+1962(are)S
+2113(of)S
+2226(the)S
+2378(form:)S
+3984 V
+10 B
+1620(connect)S
+1977(<)S
+10 I
+2034(name)S
+10 B
+2250(>)S
+10 R
+3120(Request)S
+3472(a)S
+3546(connection)S
+4014(for)S
+4160(the)S
+4312(<)S
+10 I
+4368(name)S
+10 R
+4584(>)S
+4670(ISM)S
+4152 V
+10 B
+1620(ready)S
+1894(<)S
+10 I
+1951(name)S
+10 B
+2167(>)S
+10 R
+3120(Reconnection)S
+3720(request)S
+4060(for)S
+4228(the)S
+4402(<)S
+10 I
+4458(name)S
+10 R
+4674(>)S
+4782(ISM)S
+5012(on)S
+5164(negotiated)S
+4272 V
+3120(socket,)S
+3430(ISM)S
+3638(is)S
+3735(ready)S
+3986(to)S
+4094(processing.)S
+4440 V
+10 B
+1620(send)S
+1845(<)S
+10 I
+1902(obj)S
+10 B
+2030(>)S
+2117('{')S
+2252(<)S
+10 I
+2309(msg)S
+10 B
+2470(>)S
+2557('}')S
+10 R
+3120(Send)S
+3352(<)S
+10 I
+3408(msg)S
+10 R
+3569(>)S
+3657(to)S
+3767(the)S
+3921(named)S
+4219(<)S
+10 I
+4275(obj)S
+10 R
+4403(>.)S
+4546(The)S
+4733(message)S
+5104(may)S
+5309(be)S
+5436(any)S
+4560 V
+3120(valid)S
+3366(string)S
+3640(that)S
+3835(will)S
+4036(be)S
+4175(understood)S
+4664(by)S
+4809(the)S
+4976(recipient.)S
+5425(The)S
+4680 V
+3120(object)S
+3394(may)S
+3596(be)S
+3720(any)S
+3894(object)S
+4168(in)S
+4276(the)S
+4428(GUI)S
+4635(or)S
+4748(OBM)S
+5006(\(see)S
+5196(below\).)S
+4848 V
+10 B
+1620(quit)S
+10 R
+3120(ISM)S
+3341(is)S
+3451(shutting)S
+3817(down.)S
+4107(The)S
+4306(named)S
+4616(is)S
+4727(determined)S
+5220(from)S
+5458(the)S
+4968 V
+3120(communications)S
+3865(channel,)S
+4284(ISM)S
+4546(is)S
+4697(responsible)S
+5236(for)S
+5436(any)S
+5088 V
+3120(cleanup)S
+3460(of)S
+3573(it's)S
+3731(callbacks)S
+4132(before)S
+4416(issuing)S
+4730(the)S
+4882(shutdown.)S
+5328 V
+1260(All)S
+1420(messages)S
+1829(must)S
+2056(be)S
+2182(null-terminated.)S
+2885(XImtool)S
+3256(will)S
+3445(bu)S
+3545 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3606(er)S
+3716(the)S
+3871(text)S
+4054(until)S
+4271(a)S
+4348(complete)S
+4747(message)S
+5118(is)S
+5218(received.)S
+5448 V
+1260(Once)S
+1500(an)S
+1624(ISM)S
+1832(client)S
+2084(has)S
+2247(delivered)S
+2648(a)S
+2722(QUIT)S
+2990(message)S
+3358(no)S
+3488(further)S
+3789(messages)S
+4196(will)S
+4382(be)S
+4506(sent)S
+4697(the)S
+4849(that)S
+5029(ISM.)S
+5688 V
+1260(In)S
+1384(OBM)S
+1653(terminology)S
+2183(the)S
+2346(ISM)S
+2565(is)S
+2673(a)S
+2758(named)S
+3065(Client)S
+3351(class)S
+3586(object,)S
+3896(where)S
+4180(the)S
+4343(name)S
+4600(is)S
+4708(set)S
+4860(in)S
+4979(the)S
+5142(connection)S
+5808 V
+1260(request.)S
+1637(Messages)S
+2058(sent)S
+2252(to)S
+2363(the)S
+2518(ISM)S
+2729(should)S
+3029(use)S
+3195(this)S
+3373(name,)S
+3647(messages)S
+4057(sent)S
+4251(to)S
+4362("client")S
+4699(are)S
+4853(still)S
+5037(interpreted)S
+5502(to)S
+5928 V
+1260(mean)S
+1506(the)S
+1658(XImtool)S
+2027(client.)S
+6168 V
+1260(The)S
+1450(content)S
+1779(of)S
+1897(messages)S
+2309(delivered)S
+2715(to)S
+2828(the)S
+2985(ISM)S
+3198(are)S
+3354(totally)S
+3645(free-form)S
+4061(and)S
+4240(may)S
+4447(contain)S
+4776(any)S
+4955(text)S
+5141(the)S
+5299(ISM)S
+5513(is)S
+6288 V
+1260(expected)S
+1644(to)S
+1752(understand.)S
+6576 V
+9 B
+1080(GUI)S
+1277(OBJECTS)S
+6696 V
+10 R
+1260(While)S
+1548(the)S
+1714(ISM)S
+1936(can)S
+2118(send)S
+2345(a)S
+2433(message)S
+2815(to)S
+2938(any)S
+3127(object)S
+3416(in)S
+3539(the)S
+3706(task,)S
+3937(there)S
+4181(is)S
+4293(a)S
+4382(GUI)S
+4604(Parameter)S
+5053(object)S
+5342(called)S
+6816 V
+1260('ism_msg')S
+1723(designed)S
+2113(especially)S
+2547(to)S
+2660(process)S
+2994(messages)S
+3406(from)S
+3634(the)S
+3790(ISM.)S
+4057(The)S
+4246(callback)S
+4612(in)S
+4724(the)S
+4880(GUI)S
+5091(is)S
+5192(expecting)S
+6936 V
+1260(a)S
+1334(message)S
+1702(beginning)S
+2132(with)S
+2340(one)S
+2514(of)S
+2627(the)S
+2779(following)S
+3198(keywords:)S
+7104 V
+10 B
+1620(source)S
+10 R
+2370(Source)S
+2677(message)S
+3045(text)S
+3225(as)S
+3338(Tcl)S
+3501(code)S
+7272 V
+10 B
+1620(alert)S
+10 R
+2370(Message)S
+2749(contains)S
+3112(error)S
+3335(text)S
+3515(to)S
+3623(be)S
+3747(displayed)S
+4160(in)S
+4268(the)S
+4420(GUI)S
+4627('alert')S
+4900(box)S
+7752 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(25)S
+7920 V
+EP
+%%Page: 26 27
+BP
+/slant 0 def
+/height 1.000000 def
+10 R
+10 R
+480 V
+900(XIMTOOL)S
+1376(\()S
+1425(1)S
+1491(\))S
+2787(USER COMMANDS )S
+4956(XIMTOOL)S
+5432(\()S
+5481(1)S
+5547(\))S
+960 V
+10 B
+1620(deliver)S
+10 R
+2370(Message)S
+2750(text)S
+2931(should)S
+3229(be)S
+3354(passed)S
+3651(to)S
+3760(a)S
+3835(callback)S
+4198(routine)S
+4512(speci\256c)S
+4848(to)S
+4957(that)S
+5138(ISM.)S
+5402(This)S
+1080 V
+2370(processing)S
+2844(callback)S
+3223(may)S
+3442(have)S
+3676(been)S
+3910(previously)S
+4378(uploaded.)S
+4845(The)S
+5046(message)S
+5430(text)S
+1200 V
+2370(may)S
+2572(be)S
+2696(any)S
+2870(form)S
+3094(the)S
+3246(processing)S
+3703(callback)S
+4065(is)S
+4162(expected)S
+4546(to)S
+4654(understand.)S
+1368 V
+10 B
+1620(info)S
+10 R
+2370(Message)S
+2798(text)S
+3027(is)S
+3173(status)S
+3480(output)S
+3816(intended)S
+4240(for)S
+4436(the)S
+4638(XImtool)S
+5057('info')S
+5364(panel)S
+1488 V
+2370(\(connect/disconnect)S
+3198(requests,)S
+3580(etc\))S
+1728 V
+1260(In)S
+1373(all)S
+1503(cases)S
+1743(the)S
+1895(message)S
+2263(is)S
+2360(expected)S
+2744(to)S
+2852(be)S
+2976(of)S
+3089(the)S
+3241(form)S
+1968 V
+1525(<)S
+10 I
+1581(cmd)S
+10 R
+1747(>)S
+1833(<)S
+10 I
+1889(ism_name)S
+10 R
+2294(>)S
+2380([)S
+2443(<)S
+10 I
+2499(arg1)S
+10 R
+2688(>)S
+2774(<)S
+10 I
+2830(arg2)S
+10 R
+3019(>)S
+3105(<...>)S
+3322(])S
+2208 V
+1260(where)S
+1539(<cmd>)S
+1859(is)S
+1962(one)S
+2142(of)S
+2261(the)S
+2419(above)S
+2693(keywords,)S
+3142(<ism_name>)S
+3701(is)S
+3804(the)S
+3963(name)S
+4216(of)S
+4336(the)S
+4495(ISM)S
+4710(sending)S
+5058(the)S
+5217(message.)S
+2328 V
+1260(The)S
+1447(remainder)S
+1883(of)S
+1998(the)S
+2152(message)S
+2522(is)S
+2621(passed)S
+2919(as)S
+3034(an)S
+3160('argv')S
+3435(list)S
+3590(to)S
+3700(the)S
+3854(processing)S
+4313(callback)S
+4677(uploaded)S
+5075(for)S
+5223(the)S
+5377(ISM.)S
+2448 V
+1260(The)S
+1445(ISM)S
+1653(is)S
+1750(responsible)S
+2235(for)S
+2381(formatting)S
+2833(these)S
+3068(messages.)S
+2856 V
+9 B
+900(ENVIRONMENT)S
+2976 V
+10 B
+1260(HOME)S
+10 R
+2760(Speci\256es)S
+3151(user)S
+3347(login)S
+3583(directory)S
+3084 V
+10 B
+1260(DISPLAY)S
+10 R
+2760(Speci\256es)S
+3151(which)S
+3425(display)S
+3744(screen)S
+4028(to)S
+4136(use)S
+3192 V
+10 B
+1260(IMTOOLRC)S
+1857(or)S
+1981(imtoolrc)S
+10 R
+2760(Frame)S
+3045(bu)S
+3145 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3206(er)S
+3313(con\256guration)S
+3876(\256le)S
+3300 V
+10 B
+1260(ISMDEV)S
+10 R
+2760(ISM)S
+2968(Connection)S
+3459(socket)S
+3588 V
+10 B
+1260(DEBUG_IIS)S
+10 R
+2760(Debug)S
+3056(IIS)S
+3208(communications)S
+3899(packets)S
+3696 V
+10 B
+1260(DEBUG_ISM)S
+10 R
+2760(Debug)S
+3056(ISM)S
+3264(communications)S
+3955(packets)S
+3804 V
+10 B
+1260(DEBUG_MAPPINGS)S
+10 R
+2760(Debug)S
+3056(WCS)S
+3303(image)S
+3577(mappings)S
+4032 V
+9 B
+900(FILES)S
+4152 V
+10 B
+1260(/usr/local/lib/imtoolrc)S
+10 R
+2760(Default)S
+3089(frame)S
+3351(bu)S
+3451 H
+ (f)show 10 -.5 mul h (f)show
+10 R
+3512(er)S
+3619(con\256guration)S
+4182(\256le)S
+4260 V
+10 B
+1260(/usr/local/lib/ximprint.cfg)S
+10 R
+2760(Default)S
+3089(printer)S
+3385(con\256guration)S
+3948(\256le)S
+4368 V
+10 B
+1260(/usr/local/lib/imtoolcmap)S
+10 R
+2760(Default)S
+3089(colormap)S
+3496(directory)S
+4476 V
+10 B
+1260(/dev/imt1i)S
+10 R
+2760(Default)S
+3089(input)S
+3325(display)S
+3644(\256fo)S
+4584 V
+10 B
+1260(/dev/imt1o)S
+10 R
+2760(Default)S
+3089(output)S
+3375(display)S
+3694(\256fo)S
+4692 V
+10 B
+1260(/tmp/.IMT%d)S
+10 R
+2760(Default)S
+3089(unix)S
+3297(display)S
+3616(socket)S
+4800 V
+10 B
+1260(/tmp/.ISM%d)S
+10 R
+2760(Default)S
+3089(unix)S
+3297(ISM)S
+3505(connection)S
+3973(socket)S
+5028 V
+9 B
+900(BUGS)S
+5148 V
+10 R
+1260(Users)S
+1517(should)S
+1814(report)S
+2082(bugs)S
+2301(to)S
+10 I
+2409(iraf@noao.edu)S
+10 R
+3015(.)S
+5436 V
+9 B
+900(SEE)S
+1112(ALSO)S
+5556 V
+10 R
+1260(xgterm\(1\),)S
+1714(xtapemon\(1\))S
+5844 V
+9 B
+900(COPYRIGHT)S
+5964 V
+10 R
+1260(Copyright\(c\))S
+1806(1986)S
+2036(Association)S
+2538(of)S
+2651(Universities)S
+3164(for)S
+3310(Research)S
+3705(in)S
+3813(Astronomy)S
+4293(Inc.)S
+7680 V
+900(X11IRAF Project)S
+2703(Last change: 12 Aug 2001)S
+5480(26)S
+7920 V
+EP
+%%Trailer
+%%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier Symbol Troff
+%%Pages: 27
+ \ No newline at end of file
diff --git a/vendor/x11iraf/ximtool/zscale.c b/vendor/x11iraf/ximtool/zscale.c
new file mode 100644
index 00000000..b516a5ef
--- /dev/null
+++ b/vendor/x11iraf/ximtool/zscale.c
@@ -0,0 +1,532 @@
+#include <stdio.h>
+#include <math.h>
+
+/*
+ * ZSCALE -- Compute the optimal Z1, Z2 (range of greyscale values to be
+ * displayed) of an image. For efficiency a statistical subsample of an image
+ * is used. The pixel sample evenly subsamples the image in x and y. The
+ * entire image is used if the number of pixels in the image is smaller than
+ * the desired sample.
+ *
+ * The sample is accumulated in a buffer and sorted by greyscale value.
+ * The median value is the central value of the sorted array. The slope of a
+ * straight line fitted to the sorted sample is a measure of the standard
+ * deviation of the sample about the median value. Our algorithm is to sort
+ * the sample and perform an iterative fit of a straight line to the sample,
+ * using pixel rejection to omit gross deviants near the endpoints. The fitted
+ * straight line is the transfer function used to map image Z into display Z.
+ * If more than half the pixels are rejected the full range is used. The slope
+ * of the fitted line is divided by the user-supplied contrast factor and the
+ * final Z1 and Z2 are computed, taking the origin of the fitted line at the
+ * median value.
+ */
+
+#define MIN_NPIXELS 5 /* smallest permissible sample */
+#define MAX_REJECT 0.5 /* max frac. of pixels to be rejected */
+#define GOOD_PIXEL 0 /* use pixel in fit */
+#define BAD_PIXEL 1 /* ignore pixel in all computations */
+#define REJECT_PIXEL 2 /* reject pixel after a bit */
+#define KREJ 2.5 /* k-sigma pixel rejection factor */
+#define MAX_ITERATIONS 5 /* maximum number of fitline iterations */
+#define INDEF 0
+
+#define ZSC_DBG 0
+
+#undef max
+#define max(a,b) ((a) > (b) ? (a) : (b))
+#undef min
+#define min(a,b) ((a) < (b) ? (a) : (b))
+#undef mod
+#define mod(a,b) ((a) % (b))
+#undef nint
+#define nint(a) ((int)(a + 0.5))
+#undef abs
+#define abs(a) ((a) >= 0 ? (a) : -(a))
+
+
+static void flattenData(), subSample();
+static int sampleImage(), fitLine(), floatCompare();
+static int rejectPixels(), computeSigma();
+
+
+
+/* ZSCALE -- Sample the image and compute optimal Z1 and Z2 values.
+ */
+
+void
+zscale (im, nx, ny, bitpix, z1, z2, contrast, opt_size, len_stdline)
+
+char *im; /* image data to be sampled */
+int nx, ny; /* image dimensions */
+int bitpix; /* bits per pixel */
+float *z1, *z2; /* output min and max greyscale values */
+float contrast; /* adj. to slope of transfer function */
+int opt_size; /* desired number of pixels in sample */
+int len_stdline; /* optimal number of pixels per line */
+{
+ register int npix, minpix, ngoodpix, center_pixel, ngrow;
+ float zmin, zmax, median;
+ float zstart, zslope;
+ float *sample, *left;
+
+ /* Subsample the image. */
+ npix = sampleImage(im, bitpix, &sample, nx, ny, opt_size, len_stdline);
+
+ /* Sort the sample, compute the minimum, maximum, and median pixel
+ * values.
+ */
+ qsort (sample, npix, sizeof (float), floatCompare);
+ zmin = *sample;
+ zmax = *(sample+npix-1);
+
+ /* The median value is the average of the two central values if there
+ * are an even number of pixels in the sample.
+ */
+ center_pixel = max (1, (npix + 1) / 2);
+ left = &(sample[center_pixel - 1]);
+ if (mod (npix, 2) == 1 || center_pixel >= npix)
+ median = *left;
+ else
+ median = (*left + *(left+1)) / 2;
+
+ /* Fit a line to the sorted sample vector. If more than half of the
+ * pixels in the sample are rejected give up and return the full range.
+ * If the user-supplied contrast factor is not 1.0 adjust the scale
+ * accordingly and compute Z1 and Z2, the y intercepts at indices 1 and
+ * npix.
+ */
+ minpix = max (MIN_NPIXELS, (int) (npix * MAX_REJECT));
+ ngrow = max (1, nint (npix * .01));
+ ngoodpix = fitLine (sample, npix, &zstart, &zslope,
+ KREJ, ngrow, MAX_ITERATIONS);
+
+ if (ngoodpix < minpix) {
+ *z1 = zmin;
+ *z2 = zmax;
+ } else {
+ if (contrast > 0)
+ zslope = zslope / contrast;
+ *z1 = max (zmin, median - (center_pixel - 1) * zslope);
+ *z2 = min (zmax, median + (npix - center_pixel) * zslope);
+ }
+
+ if (ZSC_DBG) {
+ printf ("\tzmin=%g zmax=%g\tleft=%g median=%g\n",
+ zmin, zmax, *left, median);
+ printf ("\tminpix=%d ngrow=%d ngood=%d\n", minpix,ngrow,ngoodpix);
+ printf ("\tzstart=%g zslope=%g\n\tz1=%g z2=%g\n",
+ zstart, zslope, *z1, *z2);
+ }
+
+ /* Clean up. */
+ free ((float *)sample);
+}
+
+
+/* sampleImage -- Extract an evenly gridded subsample of the pixels from
+ * a two-dimensional image into a one-dimensional vector.
+ */
+
+static int
+sampleImage (im, bitpix, sample, nx, ny, optimal_size, len_stdline)
+
+char *im; /* image to be sampled */
+int bitpix; /* bits per pixel in image */
+float **sample; /* output vector containing the sample */
+int nx, ny; /* image dimensions */
+int optimal_size; /* desired number of pixels in sample */
+int len_stdline; /* optimal number of pixels per line */
+{
+ register int i;
+ int ncols, nlines, col_step, line_step, maxpix, line;
+ int opt_npix_per_line, npix_per_line, npix = 0;
+ int opt_nlines_in_sample, min_nlines_in_sample, max_nlines_in_sample;
+ float *op, *row;
+ int *ipix;
+ float *fpix;
+ double *dpix;
+ short *spix;
+ char *bpix;
+
+
+ ncols = nx;
+ nlines = ny;
+
+ /* Compute the number of pixels each line will contribute to the sample,
+ * and the subsampling step size for a line. The sampling grid must
+ * span the whole line on a uniform grid.
+ */
+ opt_npix_per_line = max (1, min (ncols, len_stdline));
+ col_step = max (2, (ncols + opt_npix_per_line-1) / opt_npix_per_line);
+ npix_per_line = max (1, (ncols + col_step-1) / col_step);
+
+ /* Compute the number of lines to sample and the spacing between lines.
+ * We must ensure that the image is adequately sampled despite its
+ * size, hence there is a lower limit on the number of lines in the
+ * sample. We also want to minimize the number of lines accessed when
+ * accessing a large image, because each disk seek and read is ex-
+ * pensive. The number of lines extracted will be roughly the sample
+ * size divided by len_stdline, possibly more if the lines are very
+ * short.
+ */
+ min_nlines_in_sample = max (1, optimal_size / len_stdline);
+ opt_nlines_in_sample = max(min_nlines_in_sample, min(nlines,
+ (optimal_size + npix_per_line-1) / npix_per_line));
+ line_step = max (2, nlines / (opt_nlines_in_sample));
+ max_nlines_in_sample = (nlines + line_step-1) / line_step;
+
+ /* Allocate space for the output vector. Buffer must be freed by our
+ * caller.
+ */
+ maxpix = npix_per_line * max_nlines_in_sample;
+ *sample = (float *) malloc (maxpix * sizeof (float));
+ row = (float *) malloc (nx * sizeof (float));
+
+ /* Extract the vector. */
+ op = *sample;
+ for (line = (line_step + 1)/2; line < nlines; line+=line_step) {
+ /* Load a row of float values from the image */
+ switch (bitpix) {
+ case 8:
+ bpix = (char *) &im[(line-1) * nx * sizeof(char)];
+ for (i=0; i < nx; i++)
+ row[i] = (float) bpix[i];
+ break;
+ case 16:
+ spix = (short *) &im[(line-1) * nx * sizeof(short)];
+ for (i=0; i < nx; i++)
+ row[i] = (float) spix[i];
+ break;
+ case 32:
+ ipix = (int *) &im[(line-1) * nx * sizeof(int)];
+ for (i=0; i < nx; i++)
+ row[i] = (float) ipix[i];
+ break;
+ case -32:
+ fpix = (float *) &im[(line-1) * nx * sizeof(float)];
+ for (i=0; i < nx; i++)
+ row[i] = (float) fpix[i];
+ break;
+ case -64:
+ dpix = (double *) &im[(line-1) * nx * sizeof(double)];
+ for (i=0; i < nx; i++)
+ row[i] = (float) dpix[i];
+ break;
+ }
+
+ subSample (row, op, npix_per_line, col_step);
+ op += npix_per_line;
+ npix += npix_per_line;
+ if (npix > maxpix)
+ break;
+ }
+
+ free ((float *)row);
+ return (npix);
+}
+
+
+/* subSample -- Subsample an image line. Extract the first pixel and
+ * every "step"th pixel thereafter for a total of npix pixels.
+ */
+
+static void
+subSample (a, b, npix, step)
+float *a;
+float *b;
+int npix, step;
+{
+ register int ip, i;
+
+ if (step <= 1)
+ memmove (b, a, npix);
+ else {
+ ip = 0;
+ for (i=0; i < npix; i++) {
+ b[i] = a[ip];
+ ip += step;
+ }
+ }
+}
+
+
+/* fitLine -- Fit a straight line to a data array of type real. This is
+ * an iterative fitting algorithm, wherein points further than ksigma from the
+ * current fit are excluded from the next fit. Convergence occurs when the
+ * next iteration does not decrease the number of pixels in the fit, or when
+ * there are no pixels left. The number of pixels left after pixel rejection
+ * is returned as the function value.
+ */
+
+static int
+fitLine (data, npix, zstart, zslope, krej, ngrow, maxiter)
+
+float *data; /* data to be fitted */
+int npix; /* number of pixels before rejection */
+float *zstart; /* Z-value of pixel data[1] (output) */
+float *zslope; /* dz/pixel (output) */
+float krej; /* k-sigma pixel rejection factor */
+int ngrow; /* number of pixels of growing */
+int maxiter; /* max iterations */
+{
+ int i, ngoodpix, last_ngoodpix, minpix, niter;
+ double xscale, z0, dz, o_dz, x, z, mean, sigma, threshold;
+ double sumxsqr, sumxz, sumz, sumx, rowrat;
+ float *flat, *normx;
+ char *badpix;
+
+ if (npix <= 0)
+ return (0);
+ else if (npix == 1) {
+ *zstart = data[1];
+ *zslope = 0.0;
+ return (1);
+ } else
+ xscale = 2.0 / (npix - 1);
+
+ /* Allocate a buffer for data minus fitted curve, another for the
+ * normalized X values, and another to flag rejected pixels.
+ */
+ flat = (float *) malloc (npix * sizeof (float));
+ normx = (float *) malloc (npix * sizeof (float));
+ badpix = (char *) calloc (npix, sizeof(char));
+
+ /* Compute normalized X vector. The data X values [1:npix] are
+ * normalized to the range [-1:1]. This diagonalizes the lsq matrix
+ * and reduces its condition number.
+ */
+ for (i=0; i<npix; i++)
+ normx[i] = i * xscale - 1.0;
+
+ /* Fit a line with no pixel rejection. Accumulate the elements of the
+ * matrix and data vector. The matrix M is diagonal with
+ * M[1,1] = sum x**2 and M[2,2] = ngoodpix. The data vector is
+ * DV[1] = sum (data[i] * x[i]) and DV[2] = sum (data[i]).
+ */
+ sumxsqr = 0;
+ sumxz = 0;
+ sumx = 0;
+ sumz = 0;
+
+ for (i=0; i<npix; i++) {
+ x = normx[i];
+ z = data[i];
+ sumxsqr = sumxsqr + (x * x);
+ sumxz = sumxz + z * x;
+ sumz = sumz + z;
+ }
+
+ /* Solve for the coefficients of the fitted line. */
+ z0 = sumz / npix;
+ dz = o_dz = sumxz / sumxsqr;
+
+ if (ZSC_DBG) {
+ printf ("fitLine:\n\tz0=%g dz=%g\n", z0, dz);
+ printf ("\tsumz=%g sumxz=%g sumxsqr=%g npix=%d zscale=%g\n\n",
+ sumz, sumxz, sumxsqr, npix, xscale);
+ }
+
+ /* Iterate, fitting a new line in each iteration. Compute the flattened
+ * data vector and the sigma of the flat vector. Compute the lower and
+ * upper k-sigma pixel rejection thresholds. Run down the flat array
+ * and detect pixels to be rejected from the fit. Reject pixels from
+ * the fit by subtracting their contributions from the matrix sums and
+ * marking the pixel as rejected.
+ */
+ ngoodpix = npix;
+ minpix = max (MIN_NPIXELS, (int) (npix * MAX_REJECT));
+
+ for (niter=0; niter < maxiter; niter++) {
+ last_ngoodpix = ngoodpix;
+
+ /* Subtract the fitted line from the data array. */
+ flattenData (data, flat, normx, npix, z0, dz);
+
+ /* Compute the k-sigma rejection threshold. In principle this
+ * could be more efficiently computed using the matrix sums
+ * accumulated when the line was fitted, but there are problems with
+ * numerical stability with that approach.
+ */
+ ngoodpix = computeSigma (flat, badpix, npix, &mean, &sigma);
+ threshold = sigma * krej;
+
+ /* Detect and reject pixels further than ksigma from the fitted
+ * line.
+ */
+ ngoodpix = rejectPixels (data, flat, normx,
+ badpix, npix, &sumxsqr, &sumxz, &sumx, &sumz, threshold,
+ ngrow);
+
+ /* Solve for the coefficients of the fitted line. Note that after
+ * pixel rejection the sum of the X values need no longer be zero.
+ */
+ if (ngoodpix > 0) {
+ rowrat = sumx / sumxsqr;
+ z0 = (sumz - rowrat * sumxz) / (ngoodpix - rowrat * sumx);
+ dz = (sumxz - z0 * sumx) / sumxsqr;
+ }
+
+ if (ngoodpix >= last_ngoodpix || ngoodpix < minpix)
+ break;
+ }
+
+ if (ZSC_DBG) { printf ("\tz0=%g dz=%g rowrat=%g\n", z0, dz, rowrat); }
+
+ /* Transform the line coefficients back to the X range [1:npix]. */
+ *zstart = z0 - dz;
+ *zslope = dz * xscale;
+ if (abs(*zslope) < 0.01)
+ *zslope = o_dz * xscale;
+
+ free ((float *)flat);
+ free ((float *)normx);
+ free ((char *)badpix);
+ return (ngoodpix);
+}
+
+
+/* flattenData -- Compute and subtract the fitted line from the data array,
+ * returned the flattened data in FLAT.
+ */
+
+static void
+flattenData (data, flat, x, npix, z0, dz)
+float *data; /* raw data array */
+float *flat; /* flattened data (output) */
+float *x; /* x value of each pixel */
+int npix; /* number of pixels */
+double z0, dz; /* z-intercept, dz/dx of fitted line */
+{
+ register int i;
+
+ for (i=0; i < npix; i++)
+ flat[i] = data[i] - (x[i] * dz + z0);
+}
+
+
+/* computeSigma -- Compute the root mean square deviation from the
+ * mean of a flattened array. Ignore rejected pixels.
+ */
+
+static int
+computeSigma (a, badpix, npix, mean, sigma)
+
+float *a; /* flattened data array */
+char *badpix; /* bad pixel flags (!= 0 if bad pixel) */
+int npix;
+double *mean, *sigma; /* (output) */
+{
+ float pixval;
+ int i, ngoodpix = 0;
+ double sum = 0.0, sumsq = 0.0, temp;
+
+ /* Accumulate sum and sum of squares. */
+ for (i=0; i < npix; i++) {
+ if (badpix[i] == GOOD_PIXEL) {
+ pixval = a[i];
+ ngoodpix = ngoodpix + 1;
+ sum = sum + pixval;
+ sumsq = sumsq + pixval * pixval;
+ }
+ }
+
+ /* Compute mean and sigma. */
+ switch (ngoodpix) {
+ case 0:
+ *mean = INDEF;
+ *sigma = INDEF;
+ break;
+ case 1:
+ *mean = sum;
+ *sigma = INDEF;
+ break;
+ default:
+ *mean = sum / (double) ngoodpix;
+ temp = sumsq / (double) (ngoodpix-1) -
+ (sum*sum) / (double) (ngoodpix*(ngoodpix - 1));
+ if (temp < 0) /* possible with roundoff error */
+ *sigma = 0.0;
+ else
+ *sigma = sqrt (temp);
+ }
+
+ return (ngoodpix);
+}
+
+
+/* rejectPixels -- Detect and reject pixels more than "threshold" greyscale
+ * units from the fitted line. The residuals about the fitted line are given
+ * by the "flat" array, while the raw data is in "data". Each time a pixel
+ * is rejected subtract its contributions from the matrix sums and flag the
+ * pixel as rejected. When a pixel is rejected reject its neighbors out to
+ * a specified radius as well. This speeds up convergence considerably and
+ * produces a more stringent rejection criteria which takes advantage of the
+ * fact that bad pixels tend to be clumped. The number of pixels left in the
+ * fit is returned as the function value.
+ */
+
+static int
+rejectPixels (data, flat, normx, badpix, npix,
+ sumxsqr, sumxz, sumx, sumz, threshold, ngrow)
+
+float *data; /* raw data array */
+float *flat; /* flattened data array */
+float *normx; /* normalized x values of pixels */
+char *badpix; /* bad pixel flags (!= 0 if bad pixel) */
+int npix;
+double *sumxsqr, *sumxz, /* matrix sums */
+ *sumx, *sumz;
+double threshold; /* threshold for pixel rejection */
+int ngrow; /* number of pixels of growing */
+{
+ int ngoodpix, i, j;
+ double residual, lcut, hcut;
+ double x, z;
+
+ ngoodpix = npix;
+ lcut = -threshold;
+ hcut = threshold;
+
+ for (i=0; i < npix; i++) {
+ if (badpix[i] == BAD_PIXEL)
+ ngoodpix = ngoodpix - 1;
+ else {
+ residual = flat[i];
+ if (residual < lcut || residual > hcut) {
+ /* Reject the pixel and its neighbors out to the growing
+ * radius. We must be careful how we do this to avoid
+ * directional effects. Do not turn off thresholding on
+ * pixels in the forward direction; mark them for rejection
+ * but do not reject until they have been thresholded.
+ * If this is not done growing will not be symmetric.
+ */
+ for (j=max(0,i-ngrow); j < min(npix,i+ngrow); j++) {
+ if (badpix[j] != BAD_PIXEL) {
+ if (j <= i) {
+ x = (double) normx[j];
+ z = (double) data[j];
+ *sumxsqr = *sumxsqr - (x * x);
+ *sumxz = *sumxz - z * x;
+ *sumx = *sumx - x;
+ *sumz = *sumz - z;
+ badpix[j] = BAD_PIXEL;
+ ngoodpix = ngoodpix - 1;
+ } else
+ badpix[j] = REJECT_PIXEL;
+ }
+ }
+ }
+ }
+ }
+
+ return (ngoodpix);
+}
+
+
+static int
+floatCompare (i,j)
+float *i, *j;
+{
+ /* return ((int) (*i - *j + 0.5)); */
+ return ((*i <= *j) ? -1 : 1);
+}