aboutsummaryrefslogtreecommitdiff
path: root/vendor/cfitsio/fitsio.ps
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/cfitsio/fitsio.ps
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/cfitsio/fitsio.ps')
-rw-r--r--vendor/cfitsio/fitsio.ps11353
1 files changed, 11353 insertions, 0 deletions
diff --git a/vendor/cfitsio/fitsio.ps b/vendor/cfitsio/fitsio.ps
new file mode 100644
index 00000000..769e1bbb
--- /dev/null
+++ b/vendor/cfitsio/fitsio.ps
@@ -0,0 +1,11353 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software
+%%Title: fitsio.dvi
+%%CreationDate: Wed Jul 18 13:51:22 2012
+%%Pages: 136
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR12 CMR10 CMBX10 CMSL10 CMTT10 CMSY10 CMMI10
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o fitsio.ps fitsio.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2012.07.18:1350
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 62 /greater put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676ABB71BBD0EE56B4CC492C0652750227CEC7B86E4740EB7B8775564
+332769DD30794E501BBB0E4E5CB665F3628E10B1137CC8BC5C0A64A310B5E27E
+5FD6E3B04DA3914C15987E638A72790AF4073CE9CDBF6E3C749CB4DFF9C54951
+A58C386C54BC4E98B102B5E91E8567D2EEEF048F2CBD5D243701D20909290B4B
+A3083F632D8552D42DEE0C69A4B14D8B15AA082DECC12B2ECAE6F663E6D09F81
+EE2979EF41FBF12C9D8BF23B77E0A20088EBD107C5BF9DD6F03FFC3AB65B69A7
+54953327E1D4AEF5A146273392BBDB321D4CC9A8FFFCFE5C515B466E21546CC7
+C6209E5A76F916B03DB98BC6CED334F33E7B373D42761696F5A876CA6F93F16E
+15A07E2E102148CA4F62A99C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+30F40A9C74C8E7773BE601C0E245E7FC10C02939848C3D28D823057B3EA23EC9
+E2BFF7851FB65FB12A4318A21D2C88EF9245D4C7BF21C81C4FC4CE0149E96278
+48F7BF97A5C3691E6CE038033AF54DE91D320EABF2B2E98617FD4145BFE5EBBF
+1A5634DA07B00257A51966FFC009CA416D37AD30F4BEE6D72AB64CB2D62466F0
+42D66D6D33EF9107272835EA9C1C8FA04562864BE684FD5F8E6DF19916FF8346
+F39F3E1FA2975B5CED24EB160FEF6149954F76C359E9D15A209EDD7445BB6303
+6AFF9E1373CDD50B93DB137F3896D282F5C04AF0AC84AA02D5421A73E3AFB735
+80EBE676C2870822BA89F4BA85034D6431BC4A44CC264DDD10EA146913E9063B
+038BD787A659C6A88C42FD5FBC51234664A8A1621A38C73ACB7199592AA5EA84
+B78BB5DBA7CA43E30CA8D3957CFF478712556EEAB1990C97B9BAB47ADB75E327
+B361D3039A3629B09EB84CF814773858F1D354AD8D526E85EAFD50944CBCE042
+367D1153D7B4EC4DD597DB0F57379DD63304869DEA4FA008D411E30ECFD62E41
+29F51841A9E07E066F06BB4829F87B7722562686FB801D6690F73233053B2EEC
+473B9899F284296BB634358A22DBF361C2A57C59438C429EFB04B80BE083E238
+A6749D6AAD1F17F318B880D26D230B86F80A99C27B87F7605DE40A0848543DE2
+4AF7D5BF61CA6B00FA156DBB9ABE7BB0EC79CE8FD5A2FC5BE17050F2A74E8905
+75A9982E12698B289E2213DAFAAE40DD22B424562D7417E8B82A5E3DDA814669
+D4CC949397B0DD2B0787016CB8FDFD09318719D7C47DB72E094C12C6DF3EDE88
+663D6357CE7BFE51FD4A93887F022E3A22DCBE39CA86E104CE54C05AA0B5E469
+0AB9DA29D19ED5E783225ECD1122BFFF5E4E63488FF215A9F555C190ECDAF130
+B34E6BFC66AB1F7D000CC09CA9872299E23EC9B0A8ED04135C982978B9D7C4E5
+F9C7968B540837CC667196C7B40F579E8258C8C7AC569AB787BB112C046D0068
+86AEC034183A3DE02FB82C2CD3E252746C012F2385493F59DDEFD5AA95A26C61
+BA64D85CE90339A0C19F538C6E0516513B9E7661505AB81F45AEA04618CEB379
+12F6BB94E2812F2B3C69BAFC9135B439D74C6A94C0317E1B2A2EA514536AA990
+7B94105AF7DA13148A807CB2F679DBDEE10B09BDCC8BDC7365166C910AA450C7
+4FD88CA8BB639F1BA53A4B108D2E1633C5DB38E64DF4881E0FC1118559A078E8
+52A0E2A87F98461EE7B0B56DFB6C3F340430E3D5C41C12141E4332951B4DF03A
+6824E8CEEA4AE8AC9F51981184287EC2710E4A51DB5E09DCFF4DFCE6B82A0B5C
+D2E658D38FA7B2854778650A78AF230E97A4C195865C404EC18A5FA99EA30FE8
+755EE5B11397D3CCAECD81EE3F3D1EE1A1B1FD6B669270912948134ECBA3D5B3
+011CD3286DD6729DBCFC9A8FC93356BC70A876AB636E5C8EFA89881D3A6E0592
+D4CDDBBD21A67033AB3354BA1333206874D2F7D0E571AAD845A96057F005F730
+C98EBDFB006EF8874CC386A0B611389F9CF5204C65AD951306B0E090BB287EF9
+CB7DB38F2A58E2ED6813F2138922E28FA44792E5C57A70C6152B4A6E73462F8C
+869886D1E5718C85F1CD5E7EC4BD73C6A4E3218A7118D42CFE42BB83A6B72729
+0E096EA902F81330771203309DEA91A560B56DE63911EBB6147600BB9B6A5166
+A818B7B8CE58279E22D776B2CF423897110CFF24807319C84A2063CA464C7616
+8260B36124AFE08188795E334864712574CC3DE12C3F0962D51734A44289BFE2
+2525F5D641EF82F25C1EAEA56C621525EC86FB6D09D99941D18094B7D77719E0
+3957294DBF2D221A49807B44323098D816A21C8F1BB888BC1075E2D6FD770014
+829050B6F8E297853701C467BFE76C1E52E8AFD5AF67B3FAD5A608C23E925F0A
+87E7F56B0D05F4D4276CE619190A983BB19417E280B53060AF777BCEA0D1F4D1
+B803687D9C2050D0B2EBF3EFCB9FE42E02AFFA5233A49D27550BF8B32B1A3A3D
+A8F58FC0FEC58439D12CC87CEEBED10BB6D9BE84DDDA7FE7A7283D2639212CEE
+2DA539DE06298BF452F896FE103A4BF864E5399C3F220FFFD82AF1975FCFA69B
+8C9782842F016682EFAE7269A34FDC5ED188E3E6E24FAA0345D9558B19521D16
+9FB47306CD1D15F36C9386347FCC9906A5420F4F6E030B007DF4D311B8E102DA
+A653AB0BA300D9467B092165B016C6F28E8D417E1B93A6A176329A67C5E0FF79
+167F9CD8E2EDD33D5B11348EC7BF4C88C3226377DBA6C4723CBE67A7118F3CBA
+34EF78E08A4211C39205325D138840E3F3FAA9CCEE74569B8F59CCE7E7D35D3A
+0999DB04EC83483BA245883D764A3CF556949BE4B121C6483ED26D192405EBFF
+089A97C4BA9649916F1A922F48CD04B7338EABDAEADAC52F42CF48272EAB9192
+C17906F59CD98D5A54443BD474385AF6B51B9C14EA8AEA27AE3473DC12DE901B
+42DC378872B001B2C929C54117E6EDAC6202BF1028AD2793FEA3620935539071
+9BA89FBFB98229EF30B0382D9D603BB451634BFD08901432F16B31C9245D3645
+28456E44DC8B6C9C052B9446107116AFCC2EC0F39F0CC7B5E146FD9E995594A2
+DDDE2BD3DDAE13B9659969623BDE57219731BD3893B63B77D5218B94FF535FAF
+2595C30EB0A003B144461C8115C5EC93595B4FAC2BC0D084E326E1F2CD14AC0D
+D9B4C1467961E2FFC04BD2DCDC1A16E9582653B1CECD98AEB6ABF1E88086FD2F
+347774D628A4E70B6803EA481996C07D6D84661D003CF3C92D32791A06405C2D
+BDDED14EA55744AA956D04CADD4B2F5A0FBA5D29CFC84CC54CBCA53B19FBB69B
+6199174100938FC1E16E7EC73BF85B058E235E282B17116250CC9965706D80F4
+EAE76E2F7E96E901CE29AFBDE9CF9E19CC2432DE75B4E67DBB7BF62C6A3A0C4A
+1800F457B745F18AAAACAB8DEA973869EFED9464631EA2CBE95F78133B4DA06D
+394AB1CB50B6EED8E868AEA0EABDB783EFB7F0431A450D9C48492A04BFE3A0A7
+9BFDE3B9DB2235EE46EF0D3E754F95819B6FD407E974856C83228A3C2A076966
+02E3F0F2F27CAE5C820FCF3AC5FF38C715B3DC3CE9AC77FB13382D2B606F469F
+768D1B82CE3D66F1AB552902B3BFC8E1B3A5A45D3C3D914D304070AAB6C49393
+028CD984C44C2D8DEDEB61AB45A4B2237A236C0D3088AAC5A7F89EDFF9A09639
+8B1887E2CB29D9E9B5630A45879069E58DA52E5603D026339E637D7B83E6550E
+CBD4349FB018A01749E171C987C30F8C36651501653A4421869F04A9B8BF792F
+41B8D1E9F9101B658EF726DE26BA616A20A667FE7B571F68FF3BC77B127EF315
+64D1D39C07799B45A40CA2D4FD81633368EC9654282A91B8F38066B3D781E8EF
+3DCF9CB050096E84E8DE000568251ADFB56AB4AECF2D29BB47110D277E5A1634
+D2813F9239951645D505C53CA91481C2B0F9DB72CC4C3EBB12D2BEB7B4201C23
+BE8EFE99CCC6A0D520F6282F0876E6A69CF5ED38AAA9066196A9456C5DEC58F3
+341797EFFF3040BB65E2479165581DD67AD36EDF24DA29DE341106F258C5FEA2
+D538201FBB6C0C3A132487E01488FAF2EE5A61E7079547278DFA812C5D822454
+F5B0E67620BEBAED135E63C8A55B29F685CA3CCCCBA06E2AEEECBD92E29B985A
+23B93078BF8A6F41125529C1C171D7A8C1AFD9017CC089570E45E873E74D7FEA
+7193C263492D4A6E73C65531C324FEA1CF9C4EBB6E501562EAA0EC4DA6C5FF7C
+49DAFA4DA93D9F35F06616002A66468D7ABF3B3CAFE293A7CE0D1034B971B063
+EF162C62E480D259E5AD6383DDCCB0F2CE0059E7E04681106CA6378D59F3EEE7
+0AF84F11FCB538E4155CEB05D48678FBADF22F99B9D6589629FAAA181F78BD79
+9D97F53E9FC10919970EF6CECCC6464540FB4A8EAD144B5662A4B0BAD31DEFA4
+9C1F280C18BBB0FB005896075E3F4C52C9F11A2C0DD60CFE581C771A72273053
+796AB48AD2500600E3355CE0C91E26DBF8C135C6B12FB3B2E89B9011CCAA3D2C
+AF8E2F38BE8D2BD82966B0037DA0B64A955AFC5181D3F2DA0F4FAE47875B5D3B
+ABCF48A2C3D1ADF69F5A3BB51D456B19085363318C3D371221A7319EDA644EA0
+C30EB56AF819CAE5DEA47A7495B463E388562FB76C94621CA7F0DF9FA6C080EC
+9F8AFC21AAAEAE2359869EFEFC8BCC433B683EE1DBE927463CEB19CCBE08ACA5
+B925E88AB69BF8EB7A0781F57FADC2111659F9A480B8B4158806CDBFD950C4A7
+0D792235486658CF8A96B0FDA2EE36468788225B794AE541683D2F5568B1239B
+2956E585AE96E5C0FEF1D632895B3A0E0FCC57EEDBAF40F395547F77D7F4F6D5
+23066F8B08FD44B1F26E89083C70FF24CE2AA2168AA8B09BDFD763286A243BC3
+0431A22C8CC88A524E2C3DB01F1B65A1540A8C2EF5CEA9303DFC3F3CDB20EA23
+600F870EC83EF9992A976ABA1D086EE4018DD3F7004301A7A431694DAAB46B29
+538000BA28F999C70C3F72C1DB5CD7B1A4FDE6A0A87BA98332EDD260D30CE677
+7176F2FE3D12C3434985AB6CC12AB6BD4872F5376AE6E6CA9C4871007D6DEF15
+6D15C96C0433ACFD3AD8DB22100ED3D696FFA7DEDDA0449A14F435E9868DC2CB
+8C1306330A68C38FCC010442A51DDC47BBFC474BCBA5A404A5705A0812B1DDB6
+CDE7EFD4D833C7DB0D4C91561C7369AEF96E849D23FBC55429427FDAF7E2DEFD
+18E2BA193293C0BF21F7241626E30573F2BB36C0BDF9A1065B2AE02DCE822156
+0AD58921ED46E65C40FE54C0F9C58AD8531536208F5A6F538836B74090AD8191
+486F29CED44DF9C4A547FDE7C40F833887845BDDCC68D84F2F445CD4D871FE87
+52681595A6D0DC3FE1E2B00C53AD686E866FEFC39F6C7FFCAFF8191C13F7598D
+3EBDCD33CA548FE31C67AA26568BE071A4D5750F9246695A4184042DB2FB0680
+C0E1FF57CF2E9E360828CCE1C7F22D5CC921A995DBAE0D2469D4C5147D607923
+455D9390580E120416B814A310E5588A0D54160728CCE53712D266C090F7175D
+96725CE1CF85B0E3772347D9DB0CB282F04A2CE1A1358675ADAB4F5504554189
+B141B5FA5BE5D2DD4FD88C91AE99E6504365853F95620C378657DBC98D06A4F0
+38DAC9CB25A11D8A9D224C9CAD1369245B4A8E19AA55523BA8402CF056FA7818
+DA762A53F9A2F02F17E23C97A38C14ECC34B985B1EABF9900698E122F11EB4AA
+E5524C3DA713271DAB8969B693A7CBD313F28120C7A68F4B3037AC043C992D7E
+F5829F11930CA70B580A161635228ECF20C5BA4D3B1587FD7A1D52C2530FAF7D
+C2C9431C7B4521296D391A3436642230E0E5D74E6D5E94277373513DC443B09C
+0BC80C1EA1F22A7F2F4CE3627E852B5A636DEC22ECE7FE76F53FFC41AAF1B490
+15E8060C6448F07997AE8D012B640630D72B11D77FBFF41F65B6EE2D70345A6D
+E6137355349A55DEA19D1DF5551B54F1E2F57E85568954AF23B2CA6D60859F11
+2BCF6FB935BC106B9BBCD8E8DD551D82C7D348E03B71BD4E052686F1A0D59091
+EE647EC64FBF77F558358129B938993D0F75673B45F41D2EDE54FACD6DDEF68A
+A8D55C257CEFC0E0D382C60A73C49DEC67AC68E5066749A1C00AE616A2C71A4E
+14A95123F58FB1D940E2A0E51EFA67C2F2BDEFF85376D211DD8F15D43F2CCE7B
+47B0CE25CEF1D450EFE17476BC3CFF661C1EFFC82E80E0A69FCCB25F39E51454
+E53912FF49EBFB3CD9593F6FAE81F1F0A9E167282286F8407F9F0023538D75E5
+76171E5A7005F053ECA82809C7073A1A480198BAE0085BA9BD1EF107D4324B24
+F96E24BB4FDD80B195546854618282F770631B5F3FEFDC035E6954AE76304038
+9ED525495644EA353E32F65140DEDEF41CD343B5333954D3A4C413BC3365B0B7
+3ED0DB1A27C60237A0E82407753C1F9817C4A0D7F07D328FE2216B34CB8A233D
+FC5A420704C8F1D42B57E69424267E5BFA8C2AE65BA324262DDA2812D893050F
+7D50D4487A5BBE53D7CF041DA6EF76A659DE8EE07DE413E940AC2160C994648A
+6D0D0A59860B4080977C18CF6540B5F5B3B4DB52EE9CDE105D965E9FE5999208
+02CFC8639767B033A3EBC2C42066F6E7CE3B8D6E2F25030D14957F7FA8E59A7A
+5685A8A8479545C373DE7778A5A65D7ED6139A2C8FADBE8AACD08D56C42D11E2
+CF01E2D78D4301556A8D7AFFF7642B10A36E93546EC8B2059870C472F5CD463C
+DE1DBB211CFF689095891B9980D9C9438FF7EC687DA72C548502B5EA0FFDFEE8
+D982B934E7A9F4D62428FC6719894C0ED4B0040BBA5D0FCBD0E3D80F2E245513
+4C78489DB71F2EDF17CEF7784370D080B75122290F59D4B4CAA0484A809CAD27
+94FE9EDD79994079695C3DC4440C6B2FE4AB0129F2514EFFD8615425F7E74567
+D93EADD0FB68FD8C6B9E3C1275F4FD32B8CFF3D8D04B185E2D702E46289456E7
+F6A2A0D83DCF29862BD08AD7AF05E3380AEE207F44E5B8C11A89E954AE0BAB81
+C5A8D1449693A0E5AE02D0AC8D1BF1CD96DBA29A747CF41292027ED8C05DD325
+8B92300CFA2FD33F14CEE073F8CA93E33BB952B2E58E666B1E12CB5634136777
+6D155B1855064842120EF87ED8B1CB6C95D74EF97C0B85DE90E266DD14793F70
+27038C774A64E5757DE6FFFDE5CCB2BFA4B771BD7D02FCF0530E0768DB74FA39
+2BE1C80A37A77AAC1B4972AA0335A6E51787781D482D01CCE8CD8FC732BFB1CD
+69E5BF80E44F7F484277E5D8B9611B8614ABB9C8865F26DA08108D355EA7B451
+2364F41F4EA9BA074CFD14377B092F4274F18F42B30C83ACFAF87513E8CC9716
+7ADFE45917E3B9D034F4ECE1455318BA74C68CD534B7DA3E3C1C94A10E7F5738
+46EF5ABAA7F58C0CB25A1F78F8FCF83DC2FA4F74B7F01E3141E1886C457FD285
+A44A1A57E968358BC29CAC2BC79CD14FEF92F522C9873ECFE82A01BC4191BAA4
+5D5212A7AFACEF600F738F4E6C691BD5D8D6F494187F43D42B1E876E6B12A02E
+8357B376CA901EF9945D7703E28549C291731B78BC185AB2D3EA810CAB3A500E
+2D2DF7934A616B3B0705F0928D97A742DB11392C51901CAB772C44113F1A5873
+54C74B49EA48DE55089AFFB75B288185955DFEF25610BEFF0789A40381A1ADFB
+95628B44B810062EF1AE97D6101B13B020276040FD886422F69A92254B222986
+500384843D82F4A706D5160CE4E35556253C2B73B539D101F166873974CB1819
+26D751F2E4DDA3D93FC7128C2515A75C676ACCAF8C07E2863951ACED319EB268
+87C5802B7C54317A414BF9DA26EA1B53C5A8A9536F54FBA1699E1FEC82403359
+66741ED2B98756BD5DE594C8CB2E0C24BB372EB2EE6F7910940CE6EE8D2770DE
+6343C52B4065B6AC1B3DE9C4575B8061DE6F05961E68FE6527BA66EC51AF4948
+8CEEC967F6E376BAA1DCCC8D50DC72C76DEE3644F890D4DFAD6E4B9115F43F9F
+25CB66AE9E46331F5233609A390523BFD6D642F6BEA65B7500C3F7C28D03C2D8
+A3B5C7ACCEB8147C62865F8DD2F844F294E8AA932F5D9482FE0A1461EF74BA57
+BF1848B7CE0CD572A583A6837F9D27B6844E62DB08DF1AC678861485877454E2
+FADCD5C87B57340824621B978982092C1334625551D36494A1E0246336B4104C
+B823C8ECEB49EAC4F8360867BA86FA2929918ABFEBC195C559BAF28B2396DE2C
+5A550C3A17CDB40C4E2A4683590B0BBE2031F525216083CA6D9DE3247D0B77A7
+7348225427CBD78F4C8DD795D010D66B5D16F513066C021F54DB36BC6902190E
+53470B96270C8DCE6AA8F836F926EC56E5A4C69BA37EEAAF22AB1D09860279BF
+97935068A4D11319146344CA8CA2B87E81D08345C699A81F0F4BAF56E39969AF
+A8094449E595CFFAF5CEC0540940DBBF79273B13D1A884BB2C354509CA95E582
+34284D9EE6992D5F3D2FCC09F99D1B8B31B59E651C17A174D98E2AE214332D44
+9F3769402AE4D2E6707450545C6A5322637648488BDE496DFA32BEBA617BDE88
+D07982B6948B94C91247FAAE6AC69A8727FD4AF3154C5F6B435379119898DC8C
+3110AC36907AA6653E28D292D7AFE2C3E54B6D29800BC7176B4F0D00E09904D2
+F5DF5805E4C8E4348F017ACB5C62DD8EE155F56AB87315F95BF1A7AF147B71B6
+AE4952942EE6676E491E9CA622504DCE2ADC678AABB16886ED89B6309EEEEE6E
+08D8133000ECFE0BE713E5D144DF17E98DDFC61C688E9A89302773835DDF9254
+A4985D6567AF8DFEB4335E1CD6B9D7DE23B009A7BEEED3BE0D7F77BEFB5BF2A1
+07A44B1F9CEF1EEB6D3F49804D6BC47AE26DF2F878E8ED4861FA691AF085A254
+688418486DAF652BE04054A8A8CE7EB42C5B30146C3ACC47502AD1BFB1A92DEE
+B3D317D4D2FB276BF7C4F11678AC10CBB01C3DA178A5C101BA5B995D18136261
+EE1EDCBF883B6BA4335CC33BCBB116EE70B1372E01E64DCFD534672D9C84FBDD
+79C8D2BDDE8D5C55F852E41FB5C1076D91B0D5C0E13F70B66904E08243EB3287
+C6257181962EF755E7A603AA23D63BCABF36F18684582182CC20CEA4F1DA0665
+1A8F1A4AF7C09F0351460919B10537E19A0ECA06DD9C00368137115979D3058F
+635AEB09C1C561D020B5E19358F216B8D17582A518FDEB4AD7735FFA2C746D5F
+163CA092531649865A1DA92CC8FDA32490826FAF4A9BA50653C2C3667F61D880
+D6523745251E5BADE8DB233EF3A62E7C92F21AA31618EB0A08D47F406FC07C54
+FC04404F5BF9DF6D2D53334DC93138323AE39E95F9CB2260995970E173C997B3
+414701687EFD2B2088E50ECBDF14FBCC612AEF323683D2800DC9B9EB054B8CF9
+3295728A29DFA6E22A98540806D6C89C34B188C29723DF52C50BBD4EF02C887B
+335A72FCC0F7C358AE98D26FF44F1632CAA1774AE6F8852EE8BC262FF77A2E24
+8B8833B7C9F9C65F94C889A06095776BC75361EA184FB5C5C8BA401A8D2D9771
+D0D71BEADEDFD70EF617B92FE12FEAEAFA5F6013A28DA3C666BEE78D103C8947
+3901E3B368BEE322935020EEE395B9701F65615D510809D8AF431537805E0B5A
+908D1B2C659582D0E54294B5BAFDF5FF482712179CE8F6820C3E72A73EE0A4C2
+43F792139AE3F8AB7A8D22A6D4C222B2B63CE37F0431157AD317A63E05067704
+85F00AD9B822B1506DA0551ED23099D53CF6E5127B5AB291B33EFBD26C21E9AA
+4096BA233B76B87EEFBBF8721EA8C37B933C5D901C4E451C1B05A5920CDAC618
+F9431CEED497EA77D36CDF497354E158B9016CC888DDE52EF00302C140B29C1E
+392F5974EF8EB272C054F3906F5D0B493C2478AEB0A83E469850BF76AE766B4C
+884B10B49EDB704B33AA96020522C5218D7258210572E8B274FBB05B51380F5F
+DD14C84263128C4D037314263E8B1ED48C816F06B39E32D5A894E114F9B1A2EA
+F255A824E41E768E70ABBB14964CA00C9C3EC281D14BCFB681BDC943BCF320C3
+0DB0B18DB7FDE42A3A2DEBF1746BE74E18BC0A8081DFAFDBCD64050ABBBF3A66
+72D0D7CA15E88ADD7F0A1E1F70D397D838AFECE3352FAF0B149D5DA940B518FA
+9594FF7171A2A6B77CD9CF96143DF0B708EF569CC135A2240343B3B50633437B
+BFCB0416AE4AADA1A480CFC134C1DBB9472279C4966B99B473272AF27150B683
+09C57E73A83E7339B022F0388640EF9561C518AF312EBF0EF120CDFFF9F193AC
+FD6FCCCC337922405224C8015431BA7610EDE19CE9176A6C1F552AC7413ABFCF
+EAE1FC65D1F56917B125E498E37D2E7AD170F0DB13DFD8D430523B774DF5B2B9
+971F0F78F0931E81A848B1E2D901BA1A011957B56831AA755DE617F8A40B843B
+470D96140340CA72B45C2BF0C0CB635A6D7B25A084AAD2830288ACFA119C3AF9
+5ACBEE18F38B244B7FD29210A7BF1D3A5EBD17E2B268C36CF439120B1947EBC2
+CF769AD003B5C178F5FBC3AB5D901682CAF6AEC1D66B3F3DF730C27F09430EF3
+81F32BE8B781338BCA00F8BB26B89804E750BEB587E558F48AE34A0516B1B4F8
+342A97EEE51D352EB39C2819A200790E5BEBBC50EF4FC2DB326FB61F969EC2C0
+98CD4F78F741C11D2744F26B443302392316A5C80A9ED122C7D27C1C89D098E3
+ED365F63F5F2DB3889A4EF86587722E0059123D95D3C471751D8D8E84941BB5A
+D14766DF319F648FB6FC6B39E94450BBAD6F83E43B92B72B5D4F6804031782D9
+9E40AAF10A291F048E4A0B6E726B1E81942615DD0A862087048BD3B261E8F8A4
+25D82D60D90E58A9F3C03CCF9593F0A8738F397E058AC523438F58B2AD206B85
+98B61EB8536BDEE0219867CD40F10F622EABC2D52297B257EA0DD929B0BB7938
+158C6A6BA70514C27CAD1F310C493FEFC4EBCA10CE4F77686C374E1125F69855
+9869DB3887046E82DA5EDDBDECABBEF1E050B26A91A6CF23D3F06B4206D5573F
+EDC6CB4DA302A355CD3CF80B54B270FA1844FB5DA988D08A754D30CC5F8DB71A
+5AFF8F08A67CF1DF916E3370D961EBC802E2AE36B25F0B2BD2F01DDC9D52E45E
+18D579D5C4A750F27262D2364A1CB2BB36B116626A9C1B6E35E22E81FF695E1F
+713B9461726F5427EBABD116AF543A84981796A6FB49F72BB7AEAB3ED5E771EC
+D1823DCED5EE170126069B5369BFBE2C1225EF0E5757B2ECC2360F8EB34EE3F2
+5F39660B7F714A82EFF3A61B7C9D26A32FD4C6EEEFABDB9914BF7DD6FB240198
+81F121394D0C2386738E343645A9CE8585145ED6957EB06466D5037B1FB3210D
+CF0E79E0920167C5DBD605FDF8A66F96CE741DA7DD85D629280681BFFCEF027D
+C9390E2EE59F24B714AE30A802F112BCA54AB3FCF419F65B4B27CB7A543B55ED
+350D9BE596B15AD6F79730DC86D82DD075390869201CD6FA2D22F77FEF7619AE
+6FB42C939079757BDD06BE3B8A7CE60AEA6D1B753658F858AA2584D4A4CBAF7F
+0D701BBC0379973E5753B848BCB7CF56FF30E5AC9D2E83F33B4D87DA222F1306
+1877A2D810123D951F5CE12B17862EFDD5A86DA3A3987D973F70541D70B0CB3D
+0F214AD4B1FFFA21A29E5C7856CE49FA93528E6D53570E3D8D6B17FA27B28AB3
+FD2BBCC63139FD7F86DE6A84A2204CB30FD14080D45EA14EA784A5471ADE8A70
+2864A204F10AA5B2A2C870521B97AD75CE3F6C078F1BACC99BBFC0E2F2387022
+6F72BF44DDB62051E1B81A1419CF2F033B77FE46C2208E7DA22F83392EC97328
+9A5E3DEF8BD6323E16D1D14FCFC890BEFAAC9F879198703CC9FD0FEEAA639EC1
+B787D77B325A213B71ED56F1ED09DAB41AD4F8E314FA8154BAACF480F110B939
+86477401D4ADE8FB386CE8959027A8B91C56C53028C7AD7EEB61DD986D303572
+86324689E1AFF282E10F789421EC2BBFC5637C18936B1F2B4D02C8C8D5039503
+D425992185042BA95E50C1ADD6563F3C661AAAF32E29F9A4BD3ADBA7A55962F9
+ADD1CA560CDF1D0BEF0C57E4EA11587CD17CAB65D9DD830CB738549C6F614612
+FACA8E3031BBF29682324D9E12BD792F9F3A24D7250D2AB55FC984C6CDBE070F
+5F6282F51C4DEAD075EFA1820E044174FDBFE9AABB68E6254F4B59E8F442DBCF
+D2AE8ED7ACAFDD486DD36530A71F9A0D9FF91B19FAF723B4909C9F99D5CB29F6
+2CB6384D6A3544359AE23E09770F82FF7C9327BD392BD0F6B607897B6D826C50
+B84B2E0722B0E27ADD479E5607B4500B8ED238B99C40B2BB47F02352BDACAD22
+262DBFBD38A9D4D1BAB79053F4F172397F8F7C00CBD37164A0C89B7E31EDB3C2
+25D32798F7F83582CCA56EC0F419316EDB2F3299E40BFFFE63C5C2A0ACDE3C9A
+414C2BF9F341F40FD4C8A5B1950EA05A26DD6CE187E181E6AA167F26AF6A4E5D
+6E4AE9430E0069749299D2B9D8ED6A3E647BF2707948B8F6D16D4DFBBC71BF61
+5EBDC349EAA9EC847880990795B75B118423D9153B05D5D6BF0D20E909F8B22D
+0DC9A8CD8CA5B43D92F4CB54344B375926EEFA5BF058B7BAB54B5C97BD5653FC
+F05BB1A5991B068C26B0420DECA3F1943D093997A3A8BB061BB25CFFC0CA1DCD
+D85CB203491D176C4C183BB124F22D57678841F08419028F250C30D1237A0213
+E5A392E60B27D2BE5240346B99EAFF9B57F108DA66B6AB826546C6411864F7CD
+FE404BEE7D58F28580C448AAB599D12B00A3FDB2BB93737971A5E13FD7CFA970
+656D45145A54DB1BDD0701097445ACF73861FEEB01835F35790E98EF162D5F37
+E1A5617CB2BC22074305FBDC8024E741C7BB0FA0E17F123AF953742E01AF56A0
+AFF35515ED55F9621AAA309D36964B0187F56FE1F02662B7DFD745F2F3BCCC43
+23C8FFD86F382E99DFF681A7D22CD133153C40C3FCBDF86DBED11FD36F9B6B3F
+C5FDBEFB72496F3C209BD61EB9558CB2BB1672CAD20F8086DF3492147770C0F5
+95444F8731D0A1F6036C3099DAC1993B2C838794554E8A3B96614090077BAB84
+A5954FF123B90550E1D1A4AB2CA6E8214C473B3CF56746959C062AB6C28EC09B
+F22096BF7FB6321338085C726C42745088742C6C55D4EA9854CAA71E7BAFEC70
+A29302F3C909A6E193ACDC6496F7929713DDD1F4B813D73E794377CC0B956B9C
+2D07F5AF8C01D7D9F932F114547E4EBB953ADCED8B20E83FF41B1F4FA5A02915
+0C63DC0619BD7E3B5E6FA60157A21794D7299C5774C0FF7D929FE9BC1EABB7F3
+193E83584567271D2123E6B069DC23889B93CBF2ECE77CD8CCD649AE853784CE
+A79337DC93FB835373CAB6E183F5CFEDCE41C418E8C0C48D02BDDDC0CD3D3B4B
+285195948E36529F28A6F925FDF16248F9331CBF5A08DC0ECDE2C36FB0A0AB89
+2DC0EA84D93C834DDC1BF962D89153901ED7784D9E68BD06357F279CCB7C602B
+CCF4F389CD7CB4197D2A9271D65097AC31DC2FFEF76884D0910639237DD0C020
+F0DDBBAD4C2883ED7313DFA0539D989C1FABB6A5ED54FC791B196AFE787363DE
+6688123AAD777F27E4DD19C32B7FAFB9E8E0552DE8DA00570B1AC3E8CA4C7866
+6CDE42B4CB89FA30F0AC964EC7F2F77D3F1980313330F26E545BC7A8F5072AA3
+2FB0329361BC8BE2C2B48FD060C89CAED6DD9BF6462BEE5FBA59C569D8EEEEFD
+8C1BBEA3B73A537D1256C7D6CC73A9CFA3DDB34252A3A4509536D62802A615DA
+4AC07C441743B45A15D85181482717316C5B12F6E52BF9A1C287801F3677CFEA
+6B60F505F9234792D6E82DCE04C72C308C0D17B80B14B291AA4B437DB7CE5E35
+436CC41F868ED6162F25BE5C9FE406FE656FAAA39A72CD5DE07569F21C55198E
+54678E869AB6959798013ED6CB2D9CAF568F43D2624ED5F602B7F16F9D27C12D
+48EE40743E1DA97E6702FC3634CEE0AF9E6FB3C4587346219C4CDC0B6CCF7F99
+E40B48B6C7F5BB21DA0656B683E71A4CC310B001A180D9E00BE05215B170D2B5
+C93C2636B61BA3A840076A5F41B8DB3E0B2A38C3848DB0CCD419E5E14DCD1397
+AD9811172CE82D7CC7D825B6722205E0072FC807FB647E0442333D42CF799579
+C7B7406D147A69C59E03536C8D2EF372AD9C374B977CE1A0784C83073742008E
+480EC148196F146C5278FF1EC8252E708B9042389C11547351F093CA8488DC3E
+1D5126DF92EB568240BBBDD84B2129B6E8FD6999651566BFB632984240E14F4A
+E8F5BC9C04ACFB19B327E5246E5BA5B73A0A308D930A588E57174574ED2FE506
+9512E3CD02D75AFDC1A36BFB585493E4164F3894679FA602BEDD8CE9E821D187
+47CD38794364E336B65126F61CD3CA861F9919F24CDD410E5F03AAFC4E45E30A
+486F6CB28CE7A6A2125C55CCCC11BA659E72234CE9D5F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 15 /bullet put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
+253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5
+D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458
+ECB9FBD23A49576EAB06BACB7EA6D300985500835F4FE597D4A1110C8EABE6FC
+CE3E1F95CFD3A42446F25355381D476B2FFB6EF247BF58A6FFC5EC0E4CC207BE
+46485F8E07350B37DCA8C1864E62614332A1D3C9DEDDD6492181949A2C3498C9
+EC2A81C1F4FF989A4654E375F509D24D969B97D2A9940FAF43BBB286E08559C0
+F8D9674B0A294B36D3A050F7DED8C80E1D230812F6B8387B17948FD29FF050E2
+AAC5EBE5D96AFD0879534E2F4BB81613A1571750F9CF4215199F93813D815B5D
+1C79E11A0FCBB627CDE569F88C741CD502627777BB058ECAC09B6ACCFACA69B9
+8F8168B0B5A1A6EB13E884B348FBB2ACF9EB180F6E27D57F8503710CE037A34A
+F8B157201657C825E2A4B4A7696B58B7A988C05E43E66F0FF277A7694C555C54
+AFB1D32F6DE102136FC810E1F3B5CEA42476EAC7AAFB390E3252B2169DCDEE6E
+328507BD0E24734A85AAA263E0D2F64BE1607455BC855785BC27F8B30FE917B4
+23AB3C812975355942E955501AF85A3C0CE836911AF679EA44AD6A7D042A6549
+0C471FE294E8490024D93ADCADED460FAB7FBCDC29EFEBD2A9A127E11869E659
+961B29206CE63944B6FA4B9315BCC528EB1E0223CE94C795A5D5231A7FC8545D
+6B287B965F8EEDDB67A6774129DD01D5A21694ABE320BB2553043D4C42ACFF91
+1009372CB03381035BEEEEFD05631E026A0980A72A67B3703323A4E7C94FFCEE
+8D0B7407F9CCC043D3D184BEA4728385D6AB2FB0641DD8F5BA7E04035D30D628
+7E97D31C1486DFD5B1D076B84B4ABA4829ED4310321F1F24B847C44E00185A69
+37711A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
+726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
+CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
+7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
+7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
+EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
+DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
+ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
+B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7
+48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081
+B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B
+D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943
+A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141
+E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A
+814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575
+C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E
+EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D
+11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF
+DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE
+087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF
+87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C
+4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B
+C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897
+ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD
+33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04
+0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C
+E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555
+A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408
+637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC
+B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04
+A2D8AC44DDE818C4E3CBD2A5FA0FE49750886CD7CFAAF8B780255F89DF7F4F5C
+BB594FE7C1597DA71813C2952AD3E811524459EB71D29696B450C924B6A5C843
+8F36A0F1D7DFE796FB9564333666D74AE614D0D698FAFF20F83C86524C894BB0
+272221C060544F3B653CB0E4E4F82B20D7530B3806E6A5830852C58070177815
+E287C847F19F64E854F1463C23DDD80093D6FEB8BAA22C5F05C21F99FBA7193A
+EB7CD49CFDF4308C6C68CC955A45FCFB54FCADA9A3BFBDE086B057DE88BE335D
+280F5338D7E66AD39FD08F9B55884F1F377FB6869FBABE3EAA4B7ACCD85BE672
+724B4B8F236B0889B6E7049CBA558A89F17863E82DF145DB8C7ED1F36332DE23
+3C0053B74E850FA14F9EC9EFC23AF18E153CC96FB0FFD910347370E57F0D81E9
+4A83E2D189EE5635E85A2BEAB5B1CB974546BFB2FC2ABA1E15DC0EC1BB3AF1DB
+B2F93538B92F504CBD7AAFE36F5F3AD45EB16378F169B17869FE81464CB826CB
+400D2F5441A496B6C60A4F15FD20ECCAC1F8F91015E7E1C1A10B7992A1554E52
+9FBEE905A3005336E49CB04BA7223F1674C0BBDFA06ACA34F7BFDA56906E04A7
+4DD79EC7E79B021A5008F3B1E04712D689366F520B0FA66A558F957011992728
+561BF4B75C2BE07C4024C172085E51CCC5CFA439F570297154CDDBB3AA25CD6A
+3004B936488851BA1E814260C06CD5479DCAB1A6AE21A5F4563024F973D738B4
+0DDB6C6DD2E3AC21B4F6D95CF9AACA782919F5D3E613D61F3224A982AF485C8D
+EA0037410EB70AB7D3EC174C6D5DE5C9C5A1220EF7C2B74499ADCEEFF077D1D3
+50C1124535F88C3C3F66477E42F1932665AD323E06B398D2805B9CEA632F5B1E
+50FA587B102A35E2F15EC22DD66E4DF06A3F4BB717A3ED7FBBE2458EB4D896DD
+AF00D1BC71FE1CCA27890ECBF9F0AF01D3E65CAA29427FAF06B3BE1E640522E0
+73B213D04491B93DB29113EF72211E31F4C5A7FD58451946CFC15FD805112FE2
+547D1131A46710DFB75659A33695FFAF3CDD40AE5260AD6766DA81DAB0A6E96B
+E89D57AAEF32B5EDBBE9F7CC033BB2595CA3FEDA2ABAC8E5395EBC35BC112FE9
+67EAF1F123228538091483050847F8FB5194203609502D3A09CDE811EADC18B9
+F039593782C27EFA7697182D6367E88E326AD5622C5A457FE2644FEADA88615D
+9DE3E483BFD9329667953CDB86F9D2F0D4F02DAB8A98FDEB1D17CAAED9B6E2E6
+0C55C1FEE25AB98FF59FC235876029CE03E4A713B75B3163BE3B2DC0D4472DBC
+473E10400C0F57E627AE97FD0C1CB0F78FD8E2FA831A3D2B1C2BB3F2D4E812A4
+194C8732B0C525361DC8480CB27C30CD4DCFF01318D2EB4F5234B4A42EA8C23E
+7B3EECA41B8E4F54D5458B37EF0FB2F49EB19F4EA8AD2B53820FA36E93DD309E
+48847F5C01B1118ECE7D0186E6B8953344EB775D655AAAD7BCDA642EA2E39A15
+855C027CBC0E3FA752900EEB464E2D39404D1B85072B40834748C6F9C74C5B6C
+3CEDE988343FD984CFE4B856A481E60E2E65D3BB41BAF2FA80AC0BFE381071C4
+573C6ED65C524FF777F34D82E9661E4A75E3878CC77BC59218244612219C5A92
+E95B90EC2C38614665550026F1730D11162F19D841681C04C401E102C047541B
+97B9264D86F47E25A347696AE5EF0FF3ECD9BA32C92901DEDD816F7D73ED1216
+0A98771892472CD625A8F7F19DEFCF5CA2AE57F8AD3898F2C1005B187DEC6F2A
+A31C32720EBC934178E0E9979013B3C9AEDA4051DF63D8C903A399DC88F83DCB
+A73F1B2083819D1BBEA5235F8FE1D098F32A2BA6274424A99A4975FE4BFD59AD
+79B40A8003CC0AA728EA79D6BDCBBD73DF45B7918BC099C5BE4A068BF64A30B1
+C39442CED98AAE1BD495F6CA32D564A72E3BF753B49E4178927E4BBC0F06048F
+96DE7C30AF580B0BFFDB330B3B87D7F6532A24F403680BD9F15E758CDF04EB94
+E83C7E644FDE5BEE7CE73EFAC75669E41BDFB20A5B8ADE1137378DD8102A0DBE
+19499A623770417CBF5211395A6BA9F4490F4707A46F1F9B3FBE642DEA0CA053
+9ABC307B1E71DC2B069DDDBB4EAE378BCC75AD61DA900AF8BA6DF0E27A8D2258
+DC80205305AB6ABFE3726703E60869BFAFF1874F3C0E05FAD9C05D7D89ECECA9
+DD2AF5F777D7514208697E712B52448B364D3ECEFD8127043DDC9D0757B7CC37
+5CDE8001D007A6E961EA24D7FFC92410F3B13A32946F12A50DFFA256249BC8D7
+C1842FB84AD51B41008EC4604F6B70990510EE13E6DA34F864A572D99A13FFC7
+3609EF2BB1FCDEDF37A6018248C545E086EAD1BA1143E74AC60B684E755E59E7
+36557B915F92EF78FC177621D49F777A2AF39F3C2AA6EC74750AAAE08BCC21CA
+A71CCDC91DD45E6050D83ABA49ECE425B55EEE137C55619037F1C30530BD0A6E
+CD2004B6A040405064D7E87C55536680364E09248BFAA3FDF95CDA0708E55F4C
+F7D0A92A93DEE0C7B69638F171B28B7F854CCC6EBC6AEE14864BF5144EA36D46
+A9C297225AB0325E28EF6BD06D7E40E3A724EA1E50C4C6163B195CFFD5DD291D
+D7BBE9AF4324A69394117EFD62F08D6BA6A8F0AC3E2353492999AF28FBA758C3
+A50B6840CC72054355E6CBDBD86F683537A4115049BC1616BA35C2B0B6F5CC32
+3F6831DE4E6029310738DE23D36D2C6E82F04EB675FB89789F74AFE3B8854250
+51812FBEFBCF162947554324FADAB765C74B6DA89F60A734076D44BBE45263B1
+3FEFEEA90EC7948F23F34D4049087AF6563692417DDBCDD5A9552A373C2528F8
+0318D3C0669279F292127CBA40B0ABE08A1476BC9EBFA8BD5D622BC5CE7DBA20
+C689BDAF50D5B1EAA89E296787CC53845DB2BA54FDE363DCC98A7BA256663869
+E9E02E09077884DF1A2A41AA698B7EDE8DAFA621B552DDA91AD1E671D636FB36
+91C62B4D2D4112F2C169E0023EB7521F570CECC54ECA5EBA462049AABBE2ADEF
+E3234BFD71B26DFDD9D34DFA69E5E80FD90406E6505A6798F030A4B5172A7BC2
+C9B765A86ED55C0590E0432719BCD7BDE7CCC7F6B33BD467063D886276C8879D
+E04897A4623111C14A1EDBBF69E2FEDDFEAEB2A785C6D2F0711DF4B93AAA291E
+7F4E0CF9CC3FF0D31953C594DAD014097DA02CBD5AE8828C7E7B5BDA09188B05
+0D7263F164E1E78CC430ACAD1E8FA71001E9BCEFAE47C79846916A5F819CA366
+5734089BCDD458CA1A9E8E17BFF357A91F9A7A8A6E1DEFB121353AA80F1906A5
+AF7CD2E59EE6776FC0DA6574DA0DE522918CAC4E566F13FB9B64EFE79F3A3BC0
+689E3B0676741C90FF3BF85C7A0FA9716F4ED0E329512B66BFB8AEB56C3DD6B2
+24F8D6E23751A8485F7EB46719E9D22618FEE86D5E01ECCF4C6E74368A8E9B49
+245D80E7484DFBC916FB2447852B36EF3F99A82B6C106F786707D7689DCD7AEC
+A0C51AC1A3F67034C16B74994403FAE7743BF02149BEBEF554814BEF31B79184
+3FAB4D2C887E1BEE81B465D12DCDDAD03DE5ABE9E763C440B2CFD42FD16D96EB
+C21FE788C8C2688F79F148AA7090BE64B0EA710D376222FD1590301BA9A2E715
+D33B8C1D95F2589AB0EE476F7046537E27DBBCDADEA1E7357C9D7FA92C2F93A6
+7BDDF58A44966590821023380C97CDE37EF6D449E35EF32BCA6E69DC8458511E
+8DC8AB63171A6018AC9A334829E5978484C4C6E917A5F1C254E6669F4037C691
+36980250A80673E0F18C9E0FBA1E5CCA3BE30B8E7B7188062B25F8E1E16528A2
+F217C18D6A1955482E5463FBF097ABAF7314E449C6FEE56E2695407A8AA9648C
+61AC2BF3B2D9CB6317A9B16CE931D318C8BC9676CD908505568C197D90C2BB46
+06431C999EB68C8216409E4CABACB2BB34A05B697B9DD1E91471A404B4969519
+E25209EF4EDD420944BED17B18DB3566FCB8059699FE416789191EC2B35086AA
+2E10C139E3C9FA0A535DEE9255A867A26656213E85851DE5F51F9780D3A6E572
+F1F5CE64DA176CA810799DC1C60A8FD2A5ED42E613021A19928EC4572059B2C1
+EE441E79CDF7DD4AF7B6E3D3230419ACAED329388044B107DCB4DE91B71EB838
+904B1F969738BBDA064FFE75C6623639BE9924602DDF0C166B433B9D54ACDA5E
+018680477FB8F10621FF32319E58DB672D744959A33E7314A1B3CDE0C038F7D6
+0C8A195AF191E36B0325334A711CD8E25D9C1D257E46A734779E486567481108
+E0281DE96907D460546578DE83A0A01A9ABF64402B48DEF739F4308E14145753
+719CEF720FE5CF8DAD7845E74D502B69DC18D172C3A27411259B8042F3FF82C3
+B157BE242C351830255CF0EDA96577375A70657BD9A2E9FFC54AF0AE563D73F2
+E510279FEF48D79F5F7745DBB492F1D74DA738E6A4FE4364799B5BEC93B4CAF6
+B06B9B8C8D164F8FA1FBBA693204064F2C1806C39910910E02ECA8D092558CB8
+33338B359D56483B7B99A1D8137204EC1AE70ED3D75881FC3B00BB9349AD934C
+81A9F285312FDDC77FA923B18B1873D288C2AAF2E6D0AF90BF25A982B843789D
+5662D6A2DD58E065026885601ABED4B09CAAA3116DEE6B430B15BE0A121FC1BB
+FDEA5A501F0798CFFFFEAB5101E707F1A00C8E014A3561FD39972EA9AB108EBB
+960AEA7FF60C301AD6CBFCAA7D35CBF6F8462A4D76C4FBA6F3DF6BB762DF7900
+9F69529AB4EAF96C2866444B257160E8822533A7A1240C83EC18C364F577407B
+4CB314678D2511735308A1660AD94B8B818CEA4A3DC00C5A1C978F8BB4E0491C
+49328F6CDF95BF620AE53056364423841D84418B23C2A447B0CCF8D8633FE2E8
+4A4AC1C6C74627EECDC994059F1BAE9E6B10FA80D767B3FE97BFFAD413DCB0A8
+495039744B48266278194D60422D6E7C74D0DB45ACF217797D0C0678EEB60759
+6231438CFEFB346553A7A447B50807EBB6E885B5A49CA9A350EC4A8C76EDFBB3
+A4DA1C9E3EFA193CDF08553302998F20055C84420A4C5252F764CC4B7A4BEF6A
+A09170EC417B296DD9E2301CD8EABE4A087E648E0525A9FFAF26374C47FDC123
+82F18C9884843864F418ACB08041E7896FDD395225532460A8194A8DB4DBD824
+1C68C6665F85059E365EC0972EC6465E2D8867449907DA6692A021F026F437BD
+D02654BC11381BB6557663E0B0B8C4F2FF69E4776F4EABA69311BC1AF8155F7D
+6D3A418BDC912CC7CF1A4BBC8A1376D8B4DEEB6585416959BCA4AA08D4520C33
+EB054DE53140992D0707210593BE62B3659E3E493C4562C2E99CECA143791DAC
+679896BCDA0699E405957E17DDBD243E65CDD7C9C8629F29A2078658746A7779
+0F75BE24E2DDBB672B95F26366BAF036B3C23BE4132D7362E76D4183A469E0F7
+29174711ECAF4FD9A923E72FE58DF2854C5537E3626317D471D1E8A922C9BBA4
+CE9163A4086AC4A231C2BF35FBC39A5BBCFE41843CAC7D81A054509D31572BE1
+596E0B0B563DF2BF0E57DB4943DAEE35CA26C8433FEE4FC61145C77F65DADE75
+62DA18DFABC7F4194906F53884E62E77D8AB3E099776AB93B2B4D0C98FA44C71
+597202A2643942795EE8CE098FE26F1AF8134F1E75FAE18D563B1FF43A511C9E
+EAFB9EFCF61490A1A4FD2CF354927B72C5EDD5D62B2F3F5006D6130562A13BCB
+1B988A994A8D68B051A5A821CCD5D0F8D9D49FE7CD04EECCFD7A554CCDFFD77E
+27AC4AB5BF9FE40F90EBD066C483796CE1A364E95C5E0CF2154834760522F128
+B2DBD1F4F73347D42635B2875A23597C35A0823CC6F71E49598125411BC9B2C2
+72470D36DD967C947AFB031BFCF770FE50551A134DF8C5D1AB1F09819569A57E
+E23D4E87C0B52CD02B0A2E3FAA7D27A94359E82AF047756BB769BC5950A75207
+78ABD49D174F2F69810AFFA9336A52D6B93B004DCA5CDE58475C0210E0BA1D20
+FD4FFD6838EC56A0922472D4C4EE0CC481574BC30618179E733EA40A48847E14
+A75BE7717CC5DDCB5B0718074EAB6FF07CFFE794D335B3A13EB968EA8FC5B08A
+13B38AD1C2C964E4B07E90B9732C458216B028E07DD593A5B767A2B415EFE7DA
+951FC07800F11C7E2EF9BDD152BC6815B7F32117F49FE08BD79BEB949003512A
+327F3F8FAE1767E7842348BA4373649F1A21DB2C56C081BCF9FA4EA86C8DFF00
+FF45C4F1386CF8C2C4120F3F6019CEBB639F2D272D08C1763A470D4BF6330DC8
+43C069A6333113C3A0C93471486EFE9BFC02B760C7CBB2E9156087D09EE8A178
+5EF50B34994094C3F0015EA2ADB6C920F4302FDEF128711994875551C4E883E2
+DDEFFAAE11F2234AFDD96400BB69C1B4E6EFD75734C586A10A54A98E7D790F28
+DEF7C7DF61FB23BF91AA700AE585EBDE74E215DA49F4ED466F46129022722086
+8884D8E026F35C4BEE7E866DF8E0846D5EC3534069B713FAB02D4B4EE3B44E1B
+656F30D629D40AA1337786C1FDA08EA1217AFA4A6E2498B334DAB5461A70DFBB
+5AA5686C89FFA4EE82D81CE2B28334DC5C032487CCE998616F48150BA1281911
+076E626E5BFCC56A0A4CDC559F878F14C2BD7A5148C1D8CC303FF9EC473354D2
+D4FB0F0F2AD0CF182A28074ED6552E179222570DE0E0D44E8FF4DB36C3AD6487
+C4BA53C8548714A69FCF8E3E5202F09469D7447C6519AE902C1D611A720BAFB5
+59E27A6DBA73624F44B4ABE0988BA3450F82E03521CCE8EDE8BE7EE1223B575A
+DF9A52650E85545525E6F121FF2D1531F156EA9D5594239AEA2CD09EE28ACB15
+A445E11FD1C031188DB61881F474D49425C084489A88A47D681EA68E7FC4B1F9
+DBB552063A02A0EB51125E9B2CC646B940D46FF457415F9565892DEAC030F08B
+E4C10DC38D825C7597394C844CB863CE6C843F67F2E1C42C4EF86AC7FB727BF0
+224B5E91BAD99CC6638AB2C64469A81D8B1789981872ED037B3A34BDF3130137
+80FE80FDA65EFBC11A08B98A1AE595F980B577E22D3CB7FED1D4016F5290ADF5
+47D7D9BAFE39F294582F2C084003E9C83FDB9EBC87C8B477CB8BB359EDD9BBC9
+9368D6605E1468A20909831BF602EFCEC0D5EBA99A2223E5A269275C8B221B3A
+F9226654185929F794E1979ED18B4CD36152F973433AC67BE24B9D953254FBBD
+B644CDF3BF0E29A2C72113DC486E46DED2CE8F8DFA8B0F8478D1F18C9AA8E054
+A31C3DBE84ECEDD85DF6AF9467AC2990ECAA3384FBCA1BBE598AA0D6813C859E
+1520B88BF30ADA910A6AC3068A5B8CFD76B7F0F6F4AF4C32450D628B5320C384
+F23A2B5E8756895584155226A30F8B0437E028978491DCD00E79C0ED58DF261E
+79B9DA17E57AEE03EE92102EAB2D63E69A88EE0B1E2087ED0C0CF6475EBDC3BE
+0324D1FC8F7B90D8D807533E5436F2C2583B9629EC390403437FDAC908557894
+03054A6DD6A3586043A9C8BFD0C7EDE1229DBB9F69F7A5D20F55664D061F6517
+0051C6B3CD7338241FB403F2AF77DAB1A8EBE1650156D40863EC1957372BFDEA
+BA8D0BB1193CC5BEB5A68C8274802E14FFA3ADCEBE19070325B1BDB960CF2988
+C0F5A9BFD843C515ADEC8B8AB02B2891EDD7502D9F28F4E58D8F67D1ACAFD0C3
+3531E0C7D1554344CCF90AC8696E83A3F968252981CAC09653956F4343B99D3D
+4F17CB8BBE4506B354439B70F2024871D16668F9DECD8EDB872BE5E6ACC406F1
+1DF4E3ADF60EFED57D1C426292970199BB663405236C6A907B6891C6190E87F2
+78D9142220FF295C7BF44AF61470798FB8CFBEE6973C69DA1CC24ECB058AA753
+DDBFD92FBB15560EA19D5D92F0005B74F06F0EA5901D231996E0866389DCA433
+E62BE48479687084C1D67BC592E592939F806FA8BF5F0D3F644B1FA6F056DE0D
+51D3F212C6818CB6166317058C2A0C07AE2E324CD90D4EC83CF4819B10CC348C
+6DBABA024A5FCDAE6E288F82DA060BCD16437F07DCA43BF1E5A1B402F16C78FC
+075BEE900B4021A1019C4A5ADC33230047FF11FDE8FB775DDA267040A22B4E5D
+6012F7E72B8BC8DD3A81369A08FB81C6C4873C2147D03D4181D6D8032DD2B610
+9C44CAB50C5BD8F489EBF01C72D4198B66EEA4E976462F8874143640B82AE57C
+A51EDEDE75A9A55D31587C14F8DEFFE69F75EA7B95BF725CE9991FB2F07AF568
+5AFEB39447B728B99BE0502BF28DE1D92B15926BE4E3DA2E7BB44A24836A97C6
+EE3A2080E01DC6514180DAF9C055F4C94929D34F193920020505E62804461630
+9F42C652F9D5681C91BE23DCB0C634247E739135F925EF3D5424767D5F5C5879
+C46F2E32C7B3BE9E90FD6ABE693A6016AB77670129B58B8FE719FA97FE320842
+6488CB85B6BCC0012975D22E75A2E086131DE676AB825A386C086FBE1B65DDDD
+A19F06AA4C1D3EC84751C649F4A62CFDC48A7CF88CFEC68B959C211B60DCB045
+6BFF922FD7349B98E1769394E6CEA4F764AC4B6536AAE4E6BE69099A39A6A33C
+97671C3AB4E7A94DCB829FBA97DFE5F71B1728FC81F826699DFDB0ACE9BC60E0
+6EC15D35EC479F3F53EE4D0398BAC138FED504A84A13B78568E3F9C86BAE8B88
+61830A80F8B994D0D66A8FA3FCD6C5099C29FC285ABF096EF9A3BFDBB522157C
+DCE9F0D6AAFB1F8D7B0A3C573D0C170357175DD56EAF37BAAEF4C92FBE17E26C
+7D2BDAACB9B8F33D09651FBE0D49A8BE66B78D075485BCD38DED5056FCE48A12
+D28E9670EC7CF4E9A277D6ABC2F7AB30BFF290B5452582F372FC9DE6CEA9EC0B
+84328269F14FE7F47620B1042B283C54161AFCF84B46E6B1410587295E4F8958
+C1800F120B59639C85D46D46A4C64309931A8C91F138EB52F779189EF75B9157
+D624045F4B8846856ADF0AD735FC6FA41F7B6C002E9D1EBD92468E86C843AFB7
+4D78E3D54D866029DE5DF865EE3F7313AC358EDA70A792E22F2F806EF86A6B57
+64AAD565C57E64B1A6635B7394B4B5729189319FCAC8529ADE30633B9BDEE0D2
+AF1F8944EFDC7C408FD8FC270822CC01E7BA355C856219B3AC5D05CA37EB0EF1
+6766D62383AEDDA1F7CDAD1DF0172E766BB46C5FCCDDD61BB019D283EDEF312A
+B2DBA38C9BB0928FB93F50E8516AB353BE04403D132805B5AAAA17163AB9C847
+F1B54946B0775FD21325C82E4EC7F2186C54B4396BC4B0B913A59E4444D11B39
+8AB56F2FD5788A9BA45DA5499A50BA74D28707F62086907BF8342E0C753A31A8
+DE293B592F51D74DECA52858CCF76C69BAF2224F640069BEF2604983FB478173
+792D68030D7A6E3FE083AFFE9488D872897ABFC88CA8BFE484A75201D73058D4
+72A8A26A50BA1F2B50CBF98D46DFED0BA057619BF370E435A0400147928D7C06
+28DF2A03527E3BE925D6A664E4640E63BD22D54A038D934B3DB5B500E075B8AB
+06DB5279274E65FF870F1E5106E190AB0FD8849EEE2D605FD4F0DED2C3F86831
+4EECBFAAD8B2A895F08DBA692A8176F9080045519CC6C46B52F0F31DF112AD79
+8E46B9899C5527A011AB63FA443ACE90F09434C295A5D9E6753AF2645407488E
+D29E7711546F87265C130B76B4632242E43962A5C886D4DB6316A2F3420FCAEA
+3055AB5A9E1325EA870CE87F34BB2B3110E4919E1AFEE67606B00B03DD6824F0
+20BA42968B81DAE198C88057438E36056D46C550E3E5E03A99BD4B07E66A2179
+BBC5B3FB06D5D72022C53A3F3A1B759472D5A50D7F7A1F4E31D3F7A30EDC1D45
+4B00AEB5DF680145A123CCA3BBD801CA64B2CBEEA99842720F8DCE432909AE78
+5AD3F29AC69D302C62256CC4D47AC92EE11D2A3E1C666CEA24876491BB167548
+9E3A990252DF8254CB5E7141F57B78FD1FEB38BE135815C6FC86EF81B5994711
+E43083C3234C55DAD97CCCE4FF3F55C5A6C22ADD2C549513A465CFA3D8A9AEB6
+331374DC05A4F496BE33F9263172FB6FE1CCD19EE9515C5155ABECA9492DC743
+BE4142D63FB5E17D55C9FE642F07995502AECD9D555603D15B5BE420A65A6E98
+4F341BA13E44DBBC1DC8CF0D561198A2B40FAF35F7ED5FEB4429BF71F5C88637
+CB114F1377FD3227EDF592733EC68F4EFEAB14FE7C26DA7031075E04289FA6DC
+8A79F81E4E18CAE8380CC585E7DA3DCDA3FCB53929AA8D772D53FC6D821EBB14
+EB472017FB56CE9410FEEFF14EA69C188993922DAFEC805F4C8028537A9D6365
+AE1A6BEF37CE8E02B995C41382984802AD3D12AA9FAA36837F9F9F8F60D16B81
+474238F136F442CA9B14620F83E4046E41EB0FD02BD04DA7863DF26624B5489A
+B8BA35B0B3A8D128FA10E01DC9B622C26CC57CA79CCDEEB7E174698EFDCC0CBE
+879AE1434B3EC5AF48E6C2EC5652DEFE0ECD7415FA46BC0C80FCC57CC808B3DE
+CBE4CC7B62AD3B092487F7A23C38A2D9102DEBB1CF4C1EE7FEDE1E8BBCDF7F73
+54CAB1E591F9B3B3159D879A9492394B32F2CC43EE7EBA6E293AF12D7FC4ADF4
+DAF8F2F48A777E927A915DE1FD9125B52D406BACB0BEA149F6F6D79D92D06413
+5D68461A772D531F2E76D1947D2ED5BFFCD758E062B5435BFD180F7E3734D5DD
+ABD86A1C2BA643955A36C482BEBAC608F588C43E6EA7EA2AE01D0346D28F50CD
+BA8F9FD23674AB19A2B879E0DD19029EAC5D74D16B186CF4BE3382E74E361427
+536A00347E536701808C1D31A617D1F9269110B76A0D59C7B84D98C8FE308733
+C9497B807A77D244FEE03ED7FB5EB4D6ABB74A7129F23AF628BC01BEC6C43ED2
+D62F4E2133006FDB94D33CD31F9FFE57C8C9E31DC6D7A81A2C6ABF1D971EE222
+96A4D79F7232190EB796A43ECEB88F1C64A88A10C3AE8E98711EFDF984BF270B
+55C5B9082D54DA7D32B168CE573597DC5A453D76953DBDDDBC1798F8A645AEB3
+78B6B5BAF60C9AFA9D5F818740EDAA977EBEA0F68E531550E607E6FCB04F3E22
+BC9D6440E1E153C8D780213DAB08CF8CFEB03018942AF980642745D711C7DB1D
+BEFD825627798897ED8185D80234B6C087FBB602ADB1263C2A2A0F59AFCA7B09
+EA4ED3BCF936C2DAEA9C8DDAA90130C24AD1A1BA47711CC760FF72EB3F27C165
+CA1FDCF1250C6CA4A788AAEEE08902AB4EB03C6EDF281CA2F5B074C859DE3963
+27F7CFC53CC91C80F779ABB25F7A6601453DF5606B72EC562F615A92C1DCED58
+3911BE7784B6E8B17F8993E4D5693A327F9C289701F39ADCF583BB4EFDE1F835
+1A59BBC2E6B73CF422D877B0B423E4E8FD116F5C66A4BEB706A3D42E7EFBB5E5
+E73CD03D7A91719337CC8E13F9D8DA255185FBE3F4FB6DBE8EA90AF036A09BE3
+5047B59BC18C1C3658ACE003B6535E42043E4D7E6D79E0B48B3D0DCA36C046D1
+D5ACE0B6F91CB78BCBD144F3FAA3D9D711C9D11EC30B6CCDBF43CD490E9AC229
+9ED2CFAC4F53927040CC8FD26004450889A1167FA34247B7C283A46E4C0A8C20
+AB43314A34EF0BC02C5558746D35F2315624FB9D4A8ED13E3D1A8B80B872798E
+CCB9775F985E31E8228B03949B4E35DCF7A41C834E53CE3C163EEECE81A8278C
+FEA3A9E3264627D33738170C12F4EB23EF8F00811723FA4FE56A0EFE8ED5EBE4
+90455B690EAE1E8F1092C1AAC07FC418A6790C2DDA6DF739B9B586B68263EB63
+718EAD2B11037C5D26FF31FB2E56AB82773921B00EF07DECAEE2A8FD71AB232C
+86865012F1FCC80CBDC4B0E881819601CE2FC5AC36875F2FB5C088436BB11159
+813020F0433EDF6D96FD162F5E3241F88BA7025F2B010208DD1DF737FFF1185B
+812864C3049CE325E06610404C8DE9322187DAA7FD90FFDF2DF3C86D94E8E792
+377C1C1F10FDC78E1FDEAF718A2857C4922FA300C8D3FAC136BA2957C675FBDD
+21E3A9E29C797142BA6D30FABB0D5E97AABB49D113A55C4838B253AB8D7443E7
+15596B3BDF01C88C17135A74AF78551CEB6B0041BD17ECAF89321E6948E1C531
+B227A1F071FC3558501BFFC842A4F8B80C14D9213E0633485A66F899BCB473D7
+3C72329610575B6279C781714761468C785E426DC9393564979B1D6A6D55AE9B
+4954010208883EC964F35E8363129682AAFA2D40E1ED08A4A1DF27F3DB5474E2
+92B917B45D9473AC94EE40662DF06AC9D004541B6F88DF5AA4A36756620CBE83
+1254ED1C3C9CA39B09E0D4148DA552B00FC60FF68E7159F556998EB8A66C8EC3
+3B7842ACEE888BCBD1FA183BAB95B06B245ACEA49F8CC51A2EB01053E99E9A87
+A5198C2FC26E270961FFF61A093A084594E6C0298CF96B251C5F8395ACDA26FC
+461E6DB774F6220F8FA04C68519E19CF69EFA73E9A1BDFFE833B228DC19571BA
+34B7AC21EB2BF8B1876BD11E128F002AC9AD6A9785CBBFE2D5FBAC307BE7CE5B
+DDA7C12820028FBDBEF1343638CE166E43B95E6518A83828AA3C3628779FB2E4
+CE32DED584715FD18C95D38FA85772DC8650EFC42F980A1ADC012ACD93B7E1E5
+FA6453179ADC6F17C94FEA1F4CC2EF6A2A975C687ED81DEB7111F0897742B373
+30720766409C534C5E0A42D7221337FF3C4C59BBD239518F3976DC55FDBB8C1C
+8DB9CB4B05B1D9AFBAF0FA1D82B1564AD7FC92B6CB3582F7DA309403EB78916B
+BFDC6F918E26A39755E5AD6394D985C92F7927FB1287FAFF2F60248236F918DC
+2E8557C6805B01090A037E8D5C529E2D70976A9CBF3785F4BAFAF9923DB40756
+7B6CE8EE83559893E3930790E5917EC3421FEB042C0CBF6CE74F16C44FA08025
+82EDA0833C0486CDA66ACB450094BB65F54C83829B47DAAAC9E4CF115FC275C8
+6BE583008180F2E2C9B003712ECE32333199BBF9772A471EADE59355FF264DD7
+ADFD42FECCD00892FB545DFE555AAA4B273B82BD2740CB8C9ACD144DEEA94188
+D1AFEDFA1FC63557F9E527C00AE7D14762FEC2814487CB60E406F8D4A47365B1
+F7B0E0A56CEF011CC11345674611EBFB5A7C587C34F786498FEE4F0F999AF42F
+D955CF2ECC5B64BB1C100310DE5B6C7D106A80FA4ACE0184A6E18FAC544EEDCF
+307334E1C2A0CB6E488B21DA3BDDC5B593D5ABD6006D1E2BB56336EA88D56DAA
+62DAFDDC379B06EF80E9F3661C6B7AA6787ADD06155F3DBCABAB6BA3A46C9047
+5D295774447BC007D5423B9840E2ABACB5B811B30ABFF547A8A6E2C18A92DEF5
+D30890D49388E80E6EC7626FE3236AABBF64B21E5525FFB7C802511129EBFAD3
+D1E19814500A465DA92054F93FF77864698288510AB599237D0DBE1EECF81C46
+F706515DF10A1D0FB06939473BC72429A42CE6E15BA2C97720756D80DDDC171E
+7E8202D385C2E5B4A5A011933CE920E98A09527DDBF49FB4DAF2E736B1E42F57
+354C91CAACB68BEE8FDD10F4DECF25ABA4EFFC4588DFDB9E98640737C015EA04
+A33D5AAAF9AC4A7D288BC9D4A8AAB9B852516E215DF7614B10BEF003EE1D0572
+E4654DBA4D71959D403B936339D41C381FC1A206BFA6505DF3082D9FF767EF67
+437E8C2A14A8B6F0FB98C80DCC42A30C57C8AC3FE83570A1B4AB404374B85F45
+A1056E389A7148CAF714CF6DC26A04E3DE8E2E7FD26F6CDE3E836AE65E593A9D
+3FA7A24A32E3E99A152009C8713FF8960FC93A2E49B8F442B81A90F98B99E140
+5F0E0253DE8ACE69F1248040510DEAEE069307FBD02B821D1DAEADE6C41111E8
+37A80AB702B8D79977DD73429695C13DF81ED3B562FF4C168AE03ECD24909A41
+22C579987CBB22700D1D34BB16E5D0B4BEDB4660D34EF5CF0A4FE507198EE14D
+9FAF7C97CF769EA9159E1D8210B063141913DD402BAFD515CD746A7CBC061A74
+CD6D6DF78AA722FF543C5379A1AF5102B75C06F73E075BD8531353892E1733D5
+8143315C0C780BBB21D6954119C0AB1D4C89EA67C0AFDD4607AF07D509F481A9
+9045776F08003CB429316307E66E1F9490E8547FE0336BDD8B070290558E0DCE
+DB08FCF371A8A9FE905E9C3BA4CBD4F12BB2F512838D395BBCAB1488C58122C0
+CD6D3634C0F6E193E2F2E8C632BB9185B20D94503E02244938D4400F0DD8FB81
+3AB0CBCF32E462A223F9680A14AC8876917ADEDCC9B181D584AA307CFF3B66B6
+F59FC840A9E8D1BE101AA1DE41934C22A1017A8AF69D257433C2D2C5A0474F9D
+362A669B4044B3990BF83E8906C5B7E2B45D688CF12CC1FF38F2EA47743676CB
+55FCD3C6261C6F5AF002869128882E39E089A6FA108195A8B86CB07913FFFA6F
+6D8F8D5C9E897D63C174825286953B9DCB09B8475D0675E09C1D26286107E89C
+C75F92D14002B1289A5E11F059F28FA27DF23FF395EEDFD5F22374FF67F0B60E
+81D249898A228A6A89141B23918E977BA79C5F5E6CE84FD35F51B136D81428E4
+E4D205612F6DEEC1CE6AE571B30A33DE004A8F096656A3BFAF8BAE8A2C73AA53
+D7984D6777540082F3674304D2C3F17775BDF86A27563CC2BF95F190DB3E28E9
+FBD0716C0F1B0D56A96E2E870882F03A3E160621FB469355859954858C9CC2AB
+06EA8F87EA163B9ABC176D704D3C17A37508864381659070B071B80C79D6D60C
+7858A32F5DE87B1F818E78048CE81E229FD7BD91286ECD773147F94E7A184450
+D1060F0FBC5A8DB06BB4009B3F5F50EFEECEF8FE970E3FBFEB5ADEDE9EAC6A49
+AECCEB5378A9CE274BC7F25D03CF477C2054D313FD988A4D913D20ED3981CE47
+8674501E487FEFE5DD91CB0E5ED24BE1D2D45C88DBE1378B11F6B7076FE56BF4
+8E8925E65FBF23330B9C4A943CD96EEC06A6073AED304CDF520CD2AC1CFFAC7A
+6B8D8FFB7327834C9DADF578F250A51BE64D27A2B65A16DD0204635560B47075
+3A054F7159EE483CA06345D3D55EFACD47AD32A9D7D7404ED0CB742A3AB8C47C
+2C5CC71EA3E1405D6E114DD53D85C2350D46A8E4BDFD1667C65A8152D9F3331D
+6235F40AE36EDB507325E21496725F3351C239207C0C4BBAEE2DC7D2797B8818
+BEBAFCA4FEDBBBBBF3FDB633A0C21A8BBA856D4A3119394FB00AD092E314558B
+99CD5B138D4A42BB7B621DFCC2A2E2AD262479E878D8F26195A643BA0D13F9C9
+FCF3B6BE5774DE6F4564FB82BA3B2B9BA29A5F406F1A135D46DB10C80CA11E1C
+39C9A74A18D8EEE86C85556F8B9203E00DE0B1A164134E48FCE7F37AAB98A79B
+EAD809EA81192ADD3D3C6B35E521AC99E190262E5454C7170B081CB8AE338D09
+D489BB694D228CE9C05DA95297BF106A3B71A99A5F199F122971F5C4B0B9C53A
+4344FD111B92AF456697E0B85142B71FA56802C392C886A408558A297EC3C717
+FB803CA1002361034D40420699FFE3C149800137EBA3AD99AAAD74B471038675
+8B073F692D278E0A088D3F51360C2C79A83FCDABE9963A4D636631310E7C6D35
+EF02828CD45CEBF9892C2761D934E07AF32BE74852C13FE63BD3DFF3619CEFA1
+25F5FAC01306FD99A573F0F5F29116967FFA22C9236EE8EB052488C4CC204855
+EEDB80B30838AEF66DD960389684231FAAB83750575E4C9BAE860D9B0F838927
+791AE22921BAF254FE561771B7A9164362D6BD462A82763F6D19737ADA1C2B92
+BD72443D7521795F9D3702F83B04BCF992667CA255A3AA539CB71F25F2D0ED57
+9E0B180D1C199211FBC17EE282E7CA9E078593E6340BA651AB949482A0760790
+E4C3F1446653CFF964B9A3142FF4FBE8C75CFBAEFFEEE1810D38033CBDA2FE9F
+B42BBD97740EF0C118C7954FBE81FDDDC74608D036A3BBB75EEED4E1A4A56381
+0F57C993C4651E4753A27684D170EBC495D09202AC0CDC5F10267EF26EF4E7D0
+908F4524C91AD27F43737253BF0617559F2EB99EB26643D8C28B61F8968CEE7A
+A79A818887ED9BC3AECE4A35AB15752A368D09594F93B7A741282DB5C6E42144
+EAD79AADE23733A43500563C3AD34E0421D1E3B4642EC1D70F0054E3DB6CC218
+FF930B11B1CCC3E4C90BC523D4635161C89CD9FF8F2C4F6E4127ABF479914610
+4D95589775902AE3993E1CE3D4868A1055BFF961CCB244AE25C76C4CE556B8AF
+98129765EA10B35FFF3D24DE1CA68BA55E133084CD2562832630E302C3823EB2
+5D7293D0C760EC1788BA6BC9ADB7AF6DA83C951E0A23AD98EFAD64AD387F7764
+21320EAA8DD04EFC4C2BC011185DAC3DC1FEF1461F3F9ED515E2240433D855E2
+0229E1D5269092D0FF790539D2946A608E82E1FCA5E3A1254B27AA134C300FFE
+C7C724824AE8B8436577129608078274BB69FB6A026D0CA48B97314F596EB375
+390574158057D3E1C3EA4AC61BEC73F81C706A6C7A9B42EEACD6A4B5C4E69FD2
+C68AB11CF02CE3D9B7148BAEC69F92FD7DAF6C9D772BE60AD4579BCE18396E4B
+60EED65E6E2E62B283F135675C188F58C831B3A7ADCACACD39871EF8905B3264
+567AEEE25FB31D64C6596D60597315F1AD8F74E5577E6C966F8F65B001850D1F
+39F0234F0478F6DB136F17F20262CC072B25202BCC8A67EECB03A2834136EE5E
+8FDF55397F3572922DF82D25376DA73083419420003E99A020198ED0ECA44A72
+DCFF31392F59E14720BA027A5A5E81B3C32BE7DBEE039CEA50AFD5CF9CB9080B
+3952949A3165C5AE1EF9D8C76E0C901DF5013469D55C8AFE1554A74D6C565533
+FD00D77FAA0311910C9C191ECBE1A0FE30A4FCDC3909D4F6322DE2DE90865099
+ABAA1A087DE9B4642DB649ECA28D40631EBA0B3902EA6D70F9260EA9DACBCE35
+8EFFA26B2E8BF4567406788443950D8A71339F595C83E28111FC90181AF60EC8
+9A7EDDE1989A2678B8C570F5D0BC178C4018626B9AC851604F03C98469EFDFCB
+BC34589B59973E918756A2C1BB7D1811BEAA17D193DEA92EB273D50AE5C0FC30
+661B330B083311E5D971D70DE46E2239532FAC9A6D8FD913E6DD03F42ED6148C
+4F04E6D136D41C24BD9B973109A9B63233E51176EE64D247DE1C5CBB43F568BC
+DBD5A6AEDFB68E5A0C8DC465E9949A96665AB78F41132F96F3680B5A9A79DC44
+828FBDA04368F277C40F629961EAA9F3B253276EE252478A9F409C2FB6447C65
+37AB9FC9A216970D7BF6912FAFC92BA0C000A58950291FB3E47F0DFD493EC7CC
+A99555CACEB7EC87F4250AB92E7136500138087A19053E9152B6F007B8D3DE8C
+96224FF8D464BD3289C08AD1E05B9D063375F38FD42CE97ADAC4E5B83B8A88D2
+B2634B95A0DC0AE6A407E62D153BFC434B42680FD0F62F5FCF0818182F182D1D
+6B9EBD47149F8506CF38BA61D8AE460A8B660F40DEFBC9243154E5683EA8D574
+8D48276FE5128F972D96E42D89E374F7D8C72E70F84F028263507BC96F6B2B92
+EF4B992CA46361BA3EDB888A6E5C57688198EF10A616F7DCCA55B4E1645FFBEA
+C2201D5503101C400B147CA23A805AA95FF059120C677C32ADC486DCA6E775EC
+23BB704624D3755E09505C395CC3AB83D68F10E2D6E1497BC179F3CA82A3DFC2
+38275D10D3253264BA9C32DA47C0088660037C7A789C1DAF75D0476BA9ED5B62
+CD30BA0E268DF3537F8298BDDCA16B1C970C2863B21CD839FF6B713438447A4C
+C58C1F0ECE39E126AAC2353E31B6FB808253501CF26AA3AC48433D4CE5A946BF
+10347C814A195929213655345791FAEB7986B1DD4F2B0C9E7116B11A4F1157CB
+933B48B488B7DFE700423AD4FAA7E26F003B87B6255BB607A3A639830D68D663
+A3350CDD992B528E3D2176DAF79AC03F6455B1BD626ED15299042B46F03BB46B
+992109329C6F67F1CD92A620FB4D806558D6CFDD75DE4F7D6C558CD5325302BF
+ABBF40001F90CC940511F63F32F112EB958944E37A603642C0CDFC7941D9EC65
+F1F5B2805EC17A6662FABEAC3F1A7CE8A4958D64FCD57759F5CA294236B5834B
+0071972DBCFAE0D89A1BA76FA1EEF2C8ACB12E45C8D8939B3EF1DA3970ECD2A3
+30AE415757A89E44CED997FFF9F6378FDB532ADAFB25872A690137609D91405F
+4FDA7B432D432325F1467A7C85363A9E2825F86D5B9F9523E53FC5B58D82CB28
+90D43D172B2CBABDA71E5B83928A6271468C197108584BE45647AF5C9BD930E4
+18E321AE20B3D28980B1CA53F8B2696043BCC4C925F218B0AFF8E8C2BC1B85A9
+134BD28FC51E5F4E803761720601C5D9D87921116C342D832BB14EFA08032E5D
+7C0C4F14F118883DBB1CA0313B6658E3BB5A7ABBA4970CAB64E66515031BEEA7
+F0311CD7DF8CCADCB38103DBB1D60CE59FEF567B2755D0A65100C8F8EA622025
+4AFEC5D179796C4F87808A76B3F420A228544CC12427AE7A5E2FB6CD76D4668D
+BD5A22FF8161EF3FB20EE9FE64EFC4D1E466DEF81D20A395B020BDB7358E80D0
+6CCBBB8725B9AB973B060770E4CB902F429D75295D1E5ADA0BDC01D0DA7A4ED2
+A21346CC735F3E6662B87BCDED41C39EB2174C5ABD9C89A4A6554B3523E08BAD
+F208FFE1095E6641C548DC0B7116851695AE8813E691347526DA61EC59DB43E1
+03BD503968825F7EA207E22EA04656780C15E1E9D0A00CF8CEEC4D3FD48A4E93
+7E82A2D0F952F5ED616618739ADDA48480DA4665526260E4269F135C89C2F28C
+28B435A1A40C924B79934D6CC536A58D2F102CB46E4C3F6F5390008A7C7B5E28
+4044E385A5D6FBE641B6FB074C4E15DB9D25152E503EB7DB52F45913FBD962C4
+550310BC3592CF1C56A7E19A73261219812CA9A818856901E9F0FC46FA53FD67
+20A7AF35375DC845C8A9BC82F46C061F46233CE3F963C6AC49CCE0936A1813CC
+F7904CBE756A07106AC3D9B58C28EB405FE50A12710C7FA7B4F6900E163125DC
+43672E2C565C6959C412F7CC333F49E0FF5B1AE666E0770255C43E1779A67D7A
+BD794057140D8D1478B7B3C43C84C2C2E56DCA12A1A536F80B16BF9C5244FFB6
+906F2729E0D6C3A6AE9A837CF39F81668CE7B299F4EC9825892A961935E4C81D
+7A9FE5D9431283C53770E41DB77A70500A9B21D63B2F073D75D8E11579FF7C63
+3D1BD1D11EA3C49A594D1D83A733ADB8D887AABCB81C32E3913FC4B2DD1DFF11
+10C193CD5D5D5FDC8080F9B99C9B29A86ACFD94EAC9E052790D6A46E5A5E946F
+6AB9541056CC23323C09CBA556F1B0F28BA2C30E039B3552DDBAC17B9311BF1F
+648D3527E8650B3FC89CF81256E9A4A9054D9F1A9839BF7E0B875D25EAC8AFA8
+2B5663DAD7CC7DED3206BF5957291DF837535DB23BA63F9F7ACA7141E1490A68
+327E35FB7888C160C2D47BC4A7CD84194FF52646DF43AC83A51489481CBA4D20
+1E5094E7AC3EE66A5828BF1D87A530D7786577F164AC3D5C0D624FC6CF1DDFFF
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
+08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
+30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
+C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
+BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
+5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
+43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
+374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
+DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
+B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
+63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
+89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
+5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
+C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
+7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B
+EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850
+4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5
+7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40
+30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9
+2E080C10DE923C1F7BD11CA700DA95F7E94C4C77EB24EFB7D5DD39CF43896343
+AD32237117AD4B4C24EF2B9AAB4228720C9F9EDA61ECC327D71641E9657DB045
+3E35C6ED9AFD4B88FBBC287F2B08E20CD064866D01062364E81E3594D85A3216
+396597A1DFC0BE35873C5BF3B12F115AE64354DE66EACD29A904A98FB23A530A
+64D6DBD4198DF302D6EC7460A65E40609374E2031E0A3E8A3CB33C9823F1CEDA
+6857069DCB4384BD963FE143AB8C46C2A6953B5EE8CA955E084517BDEB8A6EAE
+7004A47347A65802F42FB1C3E2BCDFEED75859F600C521207B1F12360D8B5B5E
+BCDDD9A8B43BE2886777EAB5A7006AB74FE08677A20579E5E0B6B949759F8346
+347F3AF2C105AF9A10341270B338AB4FDC2288B79D98A54F8457205DF24ED632
+B28F3773A7D9B85113CB50A9C472C537EC2F2AEC0243B6211664D78DE60EB3C9
+717285D76DD931E6BFC44864BFC7F99BFDB8A2954BF0C5712F21B490CD7E416F
+12EBFE13341161A9053FF78435759B60B0F54888463C4B456CBAC7490988317F
+17CCF703B1298BFF7B8F1002A86171BD2B7E9D8C4E20D426C132E7A9A1020653
+B82A9B932ADB1C912AB90997600AF5D56DBCE887D79EB994466A78D9040C2034
+1E537DA15822B32E17DA808628519B5D964B961125D6CE8158FD72D84EC1021C
+68FB5F28CCC9FC14CA321D290B9A2F8A9196B06F787DC618E6C1957AE2DD8C3F
+C2D2BE2A46B8A2CB9BA13255AA74ECFAAB942328B176D6E13C3810CF28B976BA
+58E89F16B00B2BE618A07955CC9C46A95F5A07FB240D95452CE799C8709D45A1
+85994D7BAB6792B58694594B881C240F3C36129EFBFA4AC5B5074E390AB2E39F
+CE9E366EA4E95A5DFF8CA2E144E2F0050F512414FBDA7A7EA24D2804D22FAA04
+C2261EE07DD605953453B94243250098753EC7FAF186A2BB5FD481DE92D3A6B1
+E03DCF5C2E2EB80A30D0569ED52550B5ACB2BBF67A86D4F4E65D868B2178AC94
+14C344582F4ADB60E79ED161C0B7DB7CC6FF8C391FC1B2A290B33DEAB127C200
+C309335A5601E10DA4BE03730AF8297EF872B08C54110804CE0FAD959F416B9D
+5E13E390C820F540C109F6D0F71AF41B0587CA7450810019F8CAEC40CFC3C617
+5D0163AAAF368C1DDC966CAE0BC65A31083D01CA513CAA2A5D3FDD301A557CAD
+148344C2463CD950F033DF4686BC452D6206760EDB2EB00026F5318440AC8795
+D1F9C0595F392BC030B70806C8FEE3DE6C140547CA3CAE9B4B3F1663CFDB5519
+6F2790055E57B004E48FDCEC080F8C8417FCB849E34D5C85CDE82D435089956A
+C0F3E924EB2C4328CBFDA7D115BDBC58716D98B4F49A6F2E841AD8B31F2148D1
+34A68D8E23ED7AF5D891A520ADE49714ACD727EE708BCB6668939DCE322AF08E
+53F071980E0077FC9BA5A10B3BF911664F61327233022B59E72F38B2A64E90AA
+C858FEFC4476C42C6398128D10F889CB7E0B96E4D13EFE60CD99998388CCB554
+C7561FCCE0BC98152D9E4FB1D7AB69A5BBB87CE684CB2795F90A682210E75F9A
+539CADFF715672E0122236E42A8F54DD833D4F99E672B390CB63849D911943E4
+CB0C6C9693751380E7ED446DADB9C7CD98E042FEA6E76E473AB981D8A5CED403
+9A06577BF4960204938151DACE2CB21BA653A580DC8E57500B172839CBDE3751
+8A48345DD78508B4D5B35083973E026272994D3D58C6BC0F505BFCF708388ECA
+514F0DB510FF93CF4673EF0A19A89B0E08F3235BABE22638A843CD1B92DC72F6
+7EF613DCA9053AE8177BF3650C44CCCE8F1B7CCE6EE269F54F8857B5576BA1D7
+8403538A00B1675276C38CD38CBC7B73906FAA9A34DE35A9F03CE84A0E60B499
+CFBA23F6C2EB6580B07EF12D68446359FF50E039E0AC2186499E9B589B6DD483
+0D432890F26241863A182314369ABE41338B2883A7CCA07439FE96465A5DE153
+490D3DDFEC94DFE203CA50520AB3553F6FF5630404C2A2BCA0E65935210CFDDD
+433842A96E7646942824D43D0F9F5DDA9195850737EDE2D65B769292D5427023
+AEB225160606F8D821F08AB9B33E8C30D492E1C57A3259B1CFC1C56C5747EFE4
+792D365BD95A08758383C496F6D2729EDD5297E8C1571C2711F65FD6D6BA0126
+BCC6FCADF50C3075B9339D9194E79A4377D728EFD1E597635425407FD3BF22E1
+062866AC4580ED0DCE3329BD884F5E022385FB0D020CAD3ACBB9B0F696C4C911
+8C26C714194A606A95441101F427247208E296212B4FDF1E68CD054122C64CD6
+C0CD1EE077F2630FC30DA75EA8C3DEB388418C004557EBE97A136308B2E8F079
+2A225D5684449EC17A1A288265CDC0A0FAE05DF0F03AC4C61B13C2AF9C5AEB97
+4E63BB904FC564A28601A9F79E43155F3560A67B2B49EBDB1399962A2C0F55ED
+73FC547D024FE86F65FE2AB8EE5B65377F9458077B0C6D31BE033B258B87E1DE
+2C9646601F49B17A69341E8064F6DF881046488C2FA69AA0F9BD635057256127
+C4DC77D9D71C895D3040F9E6EF7653BE1F904978749D5F98F531C5564FE02F4D
+000DB6DF12C17EB6B9C13726B0DD1D8A23F5CA8B984A350DE453F808963140E4
+3248089231E94E9B298DC62B46610176ECF3B8A1C77064CA3E90480C27FB8B01
+5E06A2CC70485242DE5CAD12DBE8037433E39E978DCA6D59923C557FDEBCBAFA
+48B435C528845F0B7BEED2323CB3622C19816F2AAD6BC7027E36BE571A1C8FF9
+F2090A806CCA9B4A869E5E15EB363C608EDFD82C88A11E6644978790A0AD0647
+A786BDC3B6F0531B1D5F01AD551C3C759EFAF72E146CC7BB125ACD1DD6197DC5
+2B3AAA053519F55E433569CEECBA8009C20B4AAFDE97B8EA362C8639ADB0F771
+0D7AFD709E4E16C1CCAC746A2307505A462F77B1B977F4EF3BC32CD87968D463
+C7B02975D3269F1E3AB3CB1565CBE061F928AB2943B43408891B9D3C6FF864B8
+FD69D33E79951101FACE7C635F8B2BD3F45C27F4E2F119C969F552EC2C5D047D
+EC3D0C212AA56F51240DB8861DF7398C3897B8DD8F1B2400FB49197AED7803AA
+FC07426EF806A7CB2DD05B8978996754E72BD2A3078E578191221EC40C71F050
+79257CA1E7B0EAACB2C0DEEF23C4B2BCA93AF1BB58D94BCA90BC12A50FF9FC32
+253C51DC821ED1FA42318788342A8C1812EB45E1A1AA66D9CCFE0D7A107638CD
+EFB007C6A6BE3D58B81AA688D787F7D0553677EFE62A3E59C2874A88D5719E8F
+9F1E12B507D39FF42589C1475DC5F0974B423DB8DBCBA2C04075518EF5CD747D
+C582F0DEFE4F674617DE189EF2030FB38194C08D3FF6D0CC1969494D86A74342
+337F5A3EAB685175FCF927B27E00F69A3F0B5B65E6FCB9C310ABBD731CA8D647
+F87D8B2BAC0D46E4CB24290D064B536CC0FEE46BE2E0982DC832F17A8668A78D
+313F9943C5CE466123BC3B80122B69278A3B61FD4C5ACEFFA8B62EB6A1DA2AEC
+7A7FB0D4B1A5D3B59235430FA156F45CA682AD86F3FF33D94C0867AD1E1D7AD8
+7439A4E3ABE919C6E3DE041175E0E3A1F2A878CF7144ADD7091DC52E5BE98830
+0AB8869740D57C6013C92CF23FE175EBD5C26330CA8B83F1B3EA50228085651E
+64F36D1E8B1FEC84FE96CD2BC8AF45198C9CD8388301B1BAE9926BD8A014CEAC
+3F8D5AA5C6DD2232A3F2FEB58E86F2835FB055ABA8567A3E53D0D7DD404E0D99
+7F2D19678CF28BBC35AFDD80DA0F1F47060CBCEA4EC5358FA8B000C570169AA7
+6718FF6DD3EA7622AB8725FD764C2EC14E2DCDA0548EB94981931C0A2FBFE083
+37D342A73ADF7BD3282E25390EA45D5AE7052C058AD6780ED90AA5007669AD9D
+839B78DBC708D312C5E109E7756AE6D7D6BB2191FE1B6EC56B0721E6A53C8CB1
+6519FB1F37A8F38EC33E4A5766672E4785475A0F8431CEE6D66FDFA4680BCB28
+4EFAAC29A37BC21D9B884F508738D5F0225ABCDF34CEBD4D173321E328F877E8
+590DA7057B8EC485BC92A14DFAA31A63A6244D1AF09F29F0E36C6F9CFF260EED
+10CC0D2730237B4C7D32BFDD509B6E3502A463284271A3991982887CF56DD662
+0654E725CE1642E0816092D6EA59CB60244DE99E733C2C8E990EF76B70B20B00
+734092F47103AE3ADD001D19F588546D8F9E8405290CA23BB3D3FA81F034EE89
+EEC731F922E6F28BBF12798A0A4D6856DC7D1987829310C32CB81B5F85B92FA4
+3DBA34BD1950E4E4ADD08B54F12F923A36195790A7D91447E91C75DB1D17F351
+D2FE11A9158534ADF9D06E2CA4BC2F11E9914AE70550D52C5667DE9DCDDEEF24
+E57C9F372DE435F3FFBB3BD498BD0B56B1B53534CE9F74BDF113E06268AA1050
+CC6D925F17CE2F7AF499C5DA843EFE205E640079F47F5B5BA0F8FA27FB30DBBC
+3D3F95DE3D72DA6E726F7D599AB903EA90506732D051B5541C5952D522F354EB
+F8B4E8C34660F9A53F9299DABF9C0CB5EE6F0685E522042814F58A0C5B54E0CE
+58BB142FF89520E7DCD0321598AEEBB393008EFC4774E2B3BAA16C714BA68DE0
+C8814BDE1B37E87B1F7D4E8177A23C793F8D3F6CBC6833848CCC0885D01F20C2
+479E8F80CD07715EDB2BA7139837DB3E090F2FF71A66016E6805C6CACB18BA97
+035C6F33D8CB3CEB57D55B07AB10FBD469B14933299737F2535C97643662868E
+41B46920C640A039A4DCE141371BCA56E66A2A6C0FF74A4CF52A851291B7B674
+8B7B676307320B1DE482A28741FE51E8FCCCB79DF636DDD2CCD73F2B46C29C2B
+6B32C6C58AD847A41486323E5B75AB58BCF81FAB2E7D794191D6C66F1DD1F742
+6B0D0356D9460AE3287B98D3613E576238C10B6D18D4FC4FF25ED3A7A85EEDD7
+5FACEAB91FB2F0E6ABB6499AE02C3B1E6D2032BDF5E1ACC575620FD8199058DD
+499B758C1B5C0B69F930F3A4C73E2E363168FD7E03352DBAA3FAEB32B29C34EB
+7DB8B049FE0C20AE7B36DA2F783F8AF72CFBDFC698CEC9362FB188DE13CF08B4
+830993A117A1F06996B000787DDFBEDA484266BF6956FB0B27CF5613CF11DF1C
+2BB3677E8CD75742BE2DF91F646817E1EC1F60EE24AC8B116CA297F57CF6317D
+0F098301800B7664C0C19D12BC6C85688F105D3C91F18C6166EB9E586980FD40
+1928B4190E3DFCFB858DCFB0B8A536D14B9AF13BA62BD71969E9141ADEEDAB35
+1DA0931BF97D7749C4F93577D4DFFE52B373D4E88D85BE4F9E87B858AB32C26F
+D4417FCA56EA2EBD9C96D3596D09781E09AFFFB1B4441293EA965FE8F78487A0
+5B327A789E1104D30C62248A62660C3F5710E0DE61F6F5DF848507F1CB7DCCDA
+5F4D645939ABBAE1472F2704FEBF7AE27D7075946A02E322D43DB7A48F75A467
+5E081127E8CC6C1F4E674A6A8883E67BF4CD67DC016F0734DB7D2D1CA01FCEE6
+DD0B05A18A0FE8D678524A936B4AC20E512606DC99F412B589DE60841A0B67D0
+82F5F8202C1C561A60CD6779FB9DB36D5C210973BC6460EF7A01271CDB1F1D63
+FADD31E847C3B1EB0B9D4803A59CF6101D2178B0C68660E5078DCE5079FCCEEE
+1DBE1E9FB0ACC7C973CD013E06A8D0D99B73E863987676E852F08756EE0DC548
+D2ACE7C12532CF8A53253722C0AC57FAA8E9B95916E30B46A8481C6607CC8979
+012E32098D7BF25586677CF9349456D708D37D676AB9E72877A4AA616389EACC
+D4568F515BFDA5F56938455FD44F42AED19E9933930F0BE06B999D82C9A1A37E
+BBB23B6F155C8DF5CD9374D76DE34F099B42DD6DE794BF68684DB697EA5ACDED
+49880D90DBEC3E5E2F5EC08F1EA04B29174D918F6DA252FDF531D7873BF74871
+224BCB8A5AD6D87583AEEB673FB02EADFE76CFB7D08ADD021FC30DDE27E77D7F
+50F3B5D09196AB64CE919D4E991D84D1D583763D5ED14EF6B106399908DBAED0
+D3900D1E15205C0F4B5AFF9104926FEAF219FEB0690552827DC496C10556441F
+60FB15A6D64B52B2F84C6E49DFDF59816D67553AD81ED5573B000FDD6519864D
+C384B3D60EEF2B1BB5C1141764AD6807DBF37BE031D670AF8632BE22A7076AA9
+99555DE31320B458C792EBD69279F58EC7317B1A52D0E51E950D76FB2C254C11
+CF91B8EB98EA650ACCE188585E642D17A211DA2574E509EB4E87EBFE313CBFDE
+51F501C45B182D75EBFEA3EC9B95691E097E46D792BC095C6B0BD266B097BAB7
+9B8ED5797C17FDDB538AA00DB25482823B875CCD6E5EE55A76FCECAFFE8631B5
+3E4C3E9EC1E5408A2A2010FF96502D1CB940350524C797A89A5FF8E6AB47E4D2
+80BBE24B89EC689BFB00B9C5B469620DBB2F0281B757FF3AD2E84EFD0CA3D456
+A481978D788B40C8EF363A41B2C85E0AE198216E29A17D67D0FB19919879EA31
+57B62FA6123AC99A36840C6432895DC4528BE0D2FB5FE4F24F5DE3DFC5CE5E57
+CA4BE5EC998712BE30C680B8DD1F730CED756221598A0A8E5C448800491D8907
+A80C58E0D78D4A53C7B651177453802785A39C887AD73E87908D1E6AF244C67A
+9A5029E17CA9F1BAFCC5802E842C33B39275F046C809F2AC427279361B3FCA39
+154E1175EFDB43DCD748DC7ABC240C8AED3F4FD78FF4C7AA684AADCEDC564AED
+B35CF787921E74B51F4BAF2A8EC4BB2C3A78D2CD697BBAF16A14236BF7607F81
+6093A211924ECEBC1AA68511F7D9963DEC9689E801CA25DB41B89782A6471A62
+92965E950E21D5E41CE5496D95553FE6B9BDD94424914A3DA9F878A28BCF77B3
+BDA77E647D03250DFF74A2D17CD59BCC2763171F0EFA759C453A435F0AFC814E
+D64E3EDD354A334150402AC48A6F84693B2C10E91C67537B45A5308502E96460
+871481EB917739EB412DC4262012D9ADED07CA03BABCACDD04A6C3A87F4938CD
+6EE57009BB556DBCAA1E208D1B2C03F01E47EC0826C99C8A8DFB89212193E8A0
+2B2865539F8B7888664DE8CD3E5A193E6320EE7E111EF5A3EB73DF7ED921E4E7
+A26B1B1D18D92D78858086F7133DF3ECC8A80E499C576DAFFA25DA530769829D
+FC01632F7E18C5F481DB0006621F7DD4320ACEF939AEF57A41A11E6BF8A183DC
+6B2380A390E5F3568AAA53ED30292C6B28EC7EC45C17F471229E37FB8C1E5582
+B480FA1B647B69280035A0823C512F4AA0286201B2C9B7CA85D5FA65648F1479
+C86882D06BAFC16E0BE7EF0F4E16FBC4ADED7F49A2DCC9E151E26F1502748B2C
+0BC4FECC8B11398034491060133041AF08BF8EF5B1103852F3834F6DD659494D
+4AFD896D3E85560664B0F1F031ADACC315BC6140CF38668BBDEC82C202890144
+64BB345B4866F14CABC63D744F3E158AEEB004AC1A550502C2AD5F9595170EC0
+BE4A0A8D1232E0DEDA7F829B0D1A599BAD2007F9111EC24F1E08022168C2C34A
+B1DBC6A844531D7A8D21731C042A7B380A1FB1D6B82E6EA341B123F8CC078324
+95A5049CC0C46392EB9116A03FE0F1B6168D272D96D8281A1527CA80A16A7449
+F31C1948E9D6A0E6550B686D985786CB6AC7B58DB428755875CFAE0572D2FD6F
+7AA794CEC2AF0B7099AFC1DA5B3ABB479A7530B8EB9BCE9688BCE0276BA736BA
+E88737ACD9E781828D687114ED67DCAFD4E7404C7C0E924A9141CC27692BEBE9
+5E8660B935A6F18F321E0AFA5B606F67A4D8CDDE5B424E504D52B2CB8E831A5D
+F77DCCA96FC7D75E24F2D44D897FBBC3E35C98EFC52875E149E2C583AF6C10CA
+BEDDD89A099F97D70AD5CA26C0CCF9E65352819C2FA1174C157E69D48AB817FC
+007ED04651DDEB2FF2D8D7D405B401DAEBCE6151353441860A41731CE520F75F
+6FA578EAFE5631925738B325F8AF2B0E15A5B84E9E1E203119ADF574989F3B33
+84404AF0FF3EF287A226E8C9877DAAFB358E5F1A5F5420767C0B6836FFE901F7
+CD1DF68CA5778B4649759E1F3F9FB5C5748E295ACD163EBF1EFB64785625ECB7
+A5060407B009B0CBEF3FF5935CB10233BD332B73F9C69AF4ADF799CFA08EF25C
+A6CCCA840FAEBBC99C8639A75667BF652CF3FC25542FA6D873AEDC7AE369BB1E
+C15BEB51ACB928C61F97E45559FDC572003885B999B4B91F66459BA96082C763
+A9F7A5C7C7F27B9CFAE1E80ADA4570300158A71016DA3600579434AF7F35AE65
+8B267F947E13216E437A98485CCBC940389CFDB05BA3E663DACF32F21978FDB5
+18528E1CB7AE189E007FA0778D62B9D05592E25559747E578C17156BB507D6DF
+4B4198BED9F33ABD6E93F7D084DB0824F0C351F8D820BD9530CBC821CBDB276A
+8C58D133DB076D9BB5689DCA2257FBC741C5F59AECB0BAFF81E0B899291B6F72
+5CAF3CE6A729BABE19AD5E6C31A790ACE92E952E82638B6AE9C0F61FF3A30003
+22F75DD843E2317CBA51FEC548525A4C8EDE18D2FEA0F6D8FC00B33E44938D2E
+88663593AC4D1652680D51F1DACC46413C43902F77790B1C2E266293EBFB9C78
+833A274EDBF9BC80D19212D2635532B935766D0006697A7EC775AA3657152D72
+53540266F89330E3E19671E73E4BBB5F9A716EB13CD23FEC5B5358C7E004F101
+6100FEBFBE124B765BE98D24BF2E89AAD4A27C75A3549CD3907BD582E577B1C9
+1543C1AA7625E5AC9AFFCA8BEB637E5EA8C2BEAA30C8A7741D954422171D5086
+07E87A41204D0CCBD3A22E2D5184764921F19ED5981C52B539B06EDFF7A3EC02
+DF85F0132F038BE6CA49DB6A4F5A17CD5FA0AEC05478BE9605A3F7BA1159A76F
+03A38668E6F2C72AA7E4DDE730641216CF7B9A61BFEA6EF937A54F2A2962A320
+9498FD339342ECD80A0FB71DE820AE65B80A5B7A8E9196D2530B8DEB0A1FB8C7
+15EAAD601F6836A6C8C0605BBB6A336A523A6CAF13B064D04F48F002B579266A
+A46A47426ADB627668386804EB7AA726E1D65249F6440447BEC02306368C6B9B
+0C736C4E5BD2362B7C9F0F7540B5DEBF391141BAE24EE7995303C1967B3DA371
+E0E052DB1D5259725163265BDFEAD1798D71912B4C7AE63BA1CEF08FB8A15E3A
+25D67D9E3A70A040AFC254086D02FCDA5BCC1EF37450BA967EA9AA5C952AB4F2
+64F3D7487617B261CB8DDA5AD34429E3474A5C12D7DABD9F7053B22935909AE7
+D1D554D0C24436476ED68B1D209DD7AA80A6A547E045178D1763D596A5CA7AC6
+4E38DFD247A13D54EE7F2FF5A3442EDDF7F4894CA301A05ADD6E9C5020076497
+F2BF7F15BC210DFCE1A8DB7DB5ECA33EC5A7D635C089620177BD3E1F981D9CBA
+B1299C0CFB41F53253A367F7B05C110C3702C570EE29503EFCAB28EAE54FC81C
+922A0A80EC12E1A5D7C191603CCEB1FC7F41B06F2D91DADB13716D2D1F6BBB2F
+927AB0F59DEA31F198D5422989AF7AE03D5F4AEF146323F8977F79540DC4200A
+89615E702B72127B7FAFEA8152B53EA8ED9BE3BE7EE935B61ABD0B9C3DFE96E5
+B1A47626E4B62D96A9AEA785524FE73F68FA218DD58918D55E8338000DF0F5AC
+6ECC8E6ED15AF45B45E74AED4F06C132E8076E21C79F6D313494BA23EAC84742
+2F778B9948CAD5BA1D589A3EA21516EC56A5E40D4CC0A5919180C2736D6570CC
+FC03087BB9333C11310C8E5D814CB9AE8EC2D2973437F8B80C8CF48930E228B1
+4B35BFF4A7423DFD51D881829038D15AA5E3AC6AB976D3549CCBBD59034F1E7B
+A539B629EB8C2FD450677510A7056C1D6184C20AE04B8BE7525526C9B19BC64B
+1B3F6BFFB675B7D218D58C8D87F4EB1A28082A923D404CC58859AE55F0F8F433
+3063E52630170B2CB806BC95469581FB149AC66F00C26466ED3E1BA6459309DF
+AE6050F36FEF2453D0CDB3DDAED0FD1E5C7B21A9469E62E9CC09
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
+61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
+92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
+EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
+43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
+FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
+4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
+55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
+C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
+5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B
+D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1
+08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C
+318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A
+173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260
+5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870
+CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A
+53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE
+69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3
+A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54
+0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B
+44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E
+9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561
+001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD
+AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866
+A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1
+25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24
+7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E
+DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A
+B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8
+1879BFC3CAA881B9D885A0C1AA8BB9A8C848963020A5B15F862E7DCC78F25D7C
+56437215999EB78142C128C6CB1E6E75EBCBB1E4614E8516FEB1E68400C61326
+D9F9E8A41216901F77D9466455E2A0B45FF50B27B55A1E1DD4F243C92BA6B175
+8F7695CFA1E91CDD8651AEBA3D258FFABA6280BF2420A98FA7CECD552D152CFD
+A8CCC94C032087A28D68332769DD2CB4ECECB15717C245BA305CB616CC72644D
+C78326E77FA602364A7B1630CA0BD0282FA781E14282982C1AD13479B6178D28
+1CAA541FD3F4316F4FF81C53496DCDF5F86E0D7C870FFCD85B36C936B1E08D78
+CEF3823546BE4329B97EFA4E2880AF3361C0DD67F77C8BA6F1CE3822B7FBE567
+064ED0477949BDA06483F8DD04F891473C8FBF73A61F7C06B20FB8B5F0BF4B77
+1429190979A4BDB29D77E94D5FB486A93B8B61DBC84AE06B4E06CBDA3A942043
+9F9926F541DDE4E9B734A985F9054493508C5F7EF9ADE372C520840F15F705D2
+51826A537FD158C4105443E38116307A1D4608E9C6FEC3353F57E65E150EAC0D
+B923BA82331D83E41C97ECAD6F8F32242DFB52EAFE2209B9F41DE483C8549B97
+407186E3A04011C8301B6C9A6D36D8170F40523FEBA5E498B8E5B7BB28581B5A
+08892C2894316068537336338E46F5113462AEA9DA7102ADD13EFD2EBFBC27EF
+00B38C25E4E23843C50C888B22BE1C76AC3F85CE148B7EA0F47D72E56726D13C
+ADE5A5D539A8379887352298B7ED202D909C8BBFAA0BBE7CD378B80488333B88
+E38B1C3C8DD17F32583A642A1D0A4408B0C244185C1376364E723D83803813BF
+106524811B9116A47F0A3205513EB80A4F798B330C9C4560F98FC3A2FA181680
+C83D6BA02AEB9E57310A60C39D31D5BC8AE28BB3171F90B69C11688521BA0845
+3F7D6E4CDB496E3F8B46D080156669BE81DE017A70B3B7D5EFD202F26514335E
+E06DF49F24576733B1BC191480D8C4E613537A80FBB7C408E7562D31833E3405
+2C16297EFEA28E55E929640DDC8D9C12D15A89A03C8637336BDD0D712AD5A2EE
+34012D38FD1AC70D13C3833B0A055B545F9EE98A463A2B3B424CC138AF6CA929
+A7BD80C3A804D5F80153DCA086B862A7D621B47F109EB93D67A73934B066B546
+BF15F27517D10CB8C83F7B319F423C16B42AA435231B9C4A05053D7109715804
+660B7052FAC3EF49E66AA763DCF07FD1AEFB5ADBC9913D3329AF36A7C5359038
+963383D68357C48B254DC2508706B1D5B71B66E2589214A336ACB11EA0E4070E
+3F993DACD86186718E488D4734F024DB314643A9488841654924DF275A1A2221
+2FCDFDB677FC3FB49409A644CEB01B260A4210613C0AB3FA3BBA7CFD4CF2867B
+B261875B9C592124D8A5609FCE7B376A39F6AC86E94F40587F69BE0E8B4C2E64
+DDBFADD699BCAA66A856556CDE4620A3C104EE29F9523D0ECBE6552A1B8211CF
+66D12AFAA3E9611858D51B46039B5EF0F3E9A020A6370B34E80F83195A643F15
+86934B5BA8B60ECCD0D3C9496F8D32E70ABE513FCBB85A77D992E73AF8B955DD
+5AE1FDC1CD972E81DF6816DBBDB583FC1410D2486F7479F1A466182482EFFE44
+DAC31E1F059370329DE19FE4629F33433576C1E3E6B49F122F2F7333C36AC744
+BA663E209AB384C9AC13B5AF8E9D0D7182D5F4D1EA874AE24DBA41DDB6586535
+8CA487EE4084602F3F2A7A46A1DEF17DE9B98728FB8113FD1BC2A62D3EAF7F83
+EEB13A260689B6BC369064D027601C48AF68CF0B507BD5AA8426833B11D5F086
+E0759BF00A3044F0719679D27D8D8AFA8FC303917255FBE6C1317702DAAB2C88
+4669AE63FDC111F7FDF28CDBADD14E9D82CB39340F567FFDFA4716CB99CED1C5
+871E005ED9EF2A8C3BD948CAD403F180EC8649FA7C4258DB0E1CA5F1ACA24DBD
+B59A2D1D7D920103457822D0F03F7D4CA5FA2D944B13FAFE51C031FC9416E5E3
+4987815ABCD52F279B7E1A86F659576B57860004E6E22A6FF097760138E683C0
+638CA1E808E4B88CE859772171D8F864F99FA82FBB5909E75603C5010D49C62F
+256EF48E28DB392A15716DCDEE0993D3C8B9D7A8DEE99AF3401FA9A39521767B
+F04344EBC10A08F880FE13DB7E11AFE3372B8691EA9807B11BAE3C4B7536B7CC
+B58A3DED042A85AE55ADA24E74A0A50BC5747F9C8E816A132CBB3987FAEBF451
+22FE85DD817E8E6B9DA980F189103C5E972614AE92FD7506CC61589B2284BC84
+A4486A73B619585F82FDE4410A3841729C2A26E7E6FD5052FEEAEFF792EC1B58
+0131564B3C5FF80F3FDB1132BC1D83FD8D0B4961AA68000BFB9A0989036BB0E2
+CDDB585566EADC55623BDEA1F218DFD343324776DD201CDC9AEE023DF5B98195
+AD23DE4BB8EC522DDC094D15A76FD38B85964AAAD1E2DF9513B87281F7106032
+D833B6E2019EA1E9D05C7AB6CB34DA376FD9BA187E8BDA5DF7EE06134DA2F577
+115F6E891601CAE2BFDB23FEB902E2B1A43F7A834632B6A7784EF9E9A659DE56
+5E7E66BD19DC11ED276BC0E117C8968E955629700B639BAE108F342BF38220BC
+A4C110641D1F70F6843206711275F5C33A6100CD20825B2ECE39EBA78631E349
+FAAB77A671146B5A712B40F644B86BB1BF3EE8F75E49ABBC757485C1A53BD9B9
+34BCFF603FFF6AE40A641E9626B0F9259F79B06BA573D6A42DCFA21A7D69BF63
+E1BCCFE3816EB1247C9F6DFC07A59656D89D69DB5DAB731BC84B77EFE8860EE2
+AD317C5F30763FF2C1B9C00C0FD480282FC591C84D7E5AB2A795B1D2B3E50E5D
+6061F96ADC97AA2DA0B04E96F8E3961CCE37109474963F05E9C15FDF55214DD5
+210DD9C43391D12018AE5480429C9D0738CCB2B0178A8824968536C99CB0BE77
+B649AB272EDCF07F46DE28AC2DB08DEABD47C1EADB1B2193EB614BC26FF58583
+B4543394A1C8DCB80606EE803B273D8E313179922EA334B26E58EDA4C2BDFF7D
+3A7D83E0EE66A4FC9C6BC9863F8F9752D66CD473F28194B9F26D624F30FF8DBC
+77A700D39436E16839628F46B0F3637AA4E8BF1B6F5B95CFECD5626B13634939
+C46CE51287BCD099E31DADA771D251961E311640C0623956B2AADBD1F18A5F74
+8DAFFBD0C0AD49F4EF2880A60AE0DF30AD1425B79DB0CDCF9472D2EA009E9829
+56EA40DF5941215E176B1AF92C6374AF78D9E6622CB915537EB9F5DD807EFE7C
+9749B43CD46272AE2101C1172A5210A4F71421E75C874046540050485E27FC7E
+C4A5DF6E3679343F161F3BDEDE5BF274D8B052224E987F4A135D2D8FE7F84EE1
+E0BF07ACF7C40DC3A9C50CEDFB0EB5EDE8FE341E696ADC8710EFA61526629305
+AC390632DE1B80CBE8B55B2A9600D8B94CBB43F4E0728C08B250A8F4FE484720
+E6A260E226D420DE06A87617A3264792743639A0FE4A2ED4D9627E78B0222991
+A583A5A87AEA5D695EBEF083D770C5771D7304E17ED5FDA30485E82FC8C41B86
+4D68C82CC51D87AF64B277E0DF3E97BD5887C7E1D913185D2FA7F29FF0BEC2BE
+14A3E6D029DEA2D9DB4A08B5B3ED8157FEDA81F552EF0918ADCDE7580C48FD58
+B0FC972EE053225A5B2264685C7A14AFF0706B13EA016721DAE4F8525B8C1E80
+A3213A33114A3007B7EA5CD2B1AF43487F191D22A5C106D3BA83A22673131EE2
+5B370CC9430E2FCA3B5E3D181FF1FE29DF3A9E6823F243708D19260EC2BF31CB
+BCBF8684B4E663F3B93AE10A636CC9E2F075C29F2AC4951E85DEE75B87FE2438
+C389B91443C821D4183C0C35E916FF970B51856FB04B61FF8A265206898EA5AB
+CF60214736A9A0A9C320F462E7B6F7CB43C084589B88DF4217C69434107D8DFB
+A9F3D9C248D26EC0F1225F842581F27265516AFCD19B9FDB23A18ACBEDA6AE5B
+0C8445E30DA6F2611E3173B7E7A6C2BE8BCEE2FC8D688AE82CA35AA85B47C48D
+A64FDC522636F50ABFC0B2EA41EA35D67B308CBF6C2A86B0CCB58A025DEF703B
+FD186ED17A94B64DE3F9830621D11F0D94F518030A232D7C5927625B2B61F414
+ECEC88EC56CE35BD4AC7F7D4257BA661D2856B8043F236CE60FBAC9186E0B245
+9CA6DAA942CB5E4D5A4A59A48AEDE5EB78FE118F766FA9A16ECBB6CDEB641421
+7267F61338AEC49F83A9DEA6DD1F7FBC53ECF8DF0C6C2EB871518A94CD832E53
+1DA38A4390638D9115136C9D7E3FF7494DD7C2033D39D21FAC65512164664997
+785058E339CBD84ADC911F1FF4633667B7C172748F83235C241EF9083A29B907
+AC96C96B45CB517099E62B7E1DFC89390DBF51D02F1BF2A1AFD3AE38E3026990
+5E9F5A6FA9746C9E61DB1A6EB4F484C4EFCEC8F915F46E196ADBA0D2FDB82E3B
+1A97DA40A76874B349BA4D480C360FEC74B1CC187C76128624D1C063D077BB8D
+F3E50D3CB072C7ACA0F3346BFB1D112EBED706BC035F8C8A6A23474BC914E551
+1CA4FA8B354772352F7A0EEBDBCE9CBD523CC03E2C5C03084FD372DC9F7113A8
+8ACEBCDA2378AD0570714AD3879C7A05F120D18DC6C0AC7C5950117B9C8D24A1
+D59CBFEAAC8E439E52FE8438B59A7164CAF45C78E8396FE323FF38EA05B2107C
+F20D2000F220EDF53987710F0C0E2DF4230391E545C2D21CC810A8E902323A2B
+BA82A938A9221298D214BA068ACA55C690B7B7A508BD6595860E880F7AA9F030
+27E4243410CAFFD55BA49F5CA06A8FF416F194D3E3AB7192ACF871C7478DF987
+16540ABBB52520CBAEEB922BF441D940E813995D4ED3D8DD707A631707D5F553
+D73223CDE27A4699C2B377C319C1A0896AA544018FE978F5E65B24B278A108B9
+8F3D7FAEFB97C51F9AC0CC60BD9CC620B315C91027B83F0153BA8F7CF627934D
+6D44536CE65F562ABF7A46DD66401FA9158F3B603ED6EE02C14B1919613FEC58
+8243E4215173307F4EAE1FDAB515F26419DE06FF2DF62D0E0E60563BCA2A7634
+4B58344AFFA0F104229A6BBAAB5CC149573A19C5903CBC58009807EB095ED97F
+BFC664A073337252DFCF946620B1679778D6EEA5C1015B0F73E4DBC798F90AE1
+5CC47F90690314CDAAF1FA54C47C9DA655DAD56FE577468C6199C346CE0D5C14
+F3190325FEE8CD9F9545625F5F00EBA1B449F55FDD4E53FAE7C5286468677ED6
+2F324DB5A9C804C8A2BEA08625C37E2341E5C5A49C06C15F23BBBD08D56FA07D
+2E6FDF1CCB9143BDD8EF3C48079B16324FA502C29DB5120878BDAD0A783CFF92
+19AF72D3844B77A18BF1D2BCE1C41134761176794957AF3B8634D9C5A269671F
+5676B9D71F99E56EF7F84374F15099EB73515268827EAE0B114A10FDA6171656
+249A963A32C88761299004EC6848BD76B6D8D68379EB302D2528ABBEB85CA4DB
+DCB6B0C376D86530F4FE8E17B93952C50D2136CDFB1E217748CEBF8AA6B46BAB
+73034165C62F02628CA60EACBEE01864323CD45EAC63832BDACEE0C39BF6952C
+A07095AD3D82C80E2875ED7B998F8D9F5D26D7416AA70E53760C04D2F07CF734
+E9AC0CBE98C1642B93075D96E35AF27717A52EEB4898F148BCD6F792194681E5
+F0A396D7E2FC5676FA380A34EFC2085A7D0A5DDBA1476D0823BB77CEF027B833
+A144BC9D0DDD83A6986D4153664226DEEA70796247B400AB0C53148D61BC69C6
+BA4C4A288ABD172909EDEDB5CE6494B4F86A42572D0BCBCF857A64A13503EC6E
+4B495640064B9C4299C0B6AE174DEEB07DB173AB3CD0A00F03E9545386A3AE24
+717387668FD6EDFB94402E3512A7A6F14ED8F079ABD4E161D42B40BE5027E3E4
+22D8EFD20D83D85AEDA43557FC14973ABDA50ED56948FAC97B44BF6EBBB6DAB2
+E05C768D80E843837DAAFE5F4781812CE3364155672C77AB66301A94E2A9E6DB
+85EF7C07FA61CB474C2CFC6A2F7D90962B4C0D9B95F391420EA0938BFA21461F
+B979C547DD7144D2C73A0DB184D4E1152F82A559F09EBF4620BC1B9313E03FEC
+0CA4C8D1EBDE10514F3ED772C73E76E67E3B20805A93BBC4E9646827276C758F
+B57CEE6AF20227134072637C357683DE58A7830FA2227FA344860C2E4B332268
+22E6346071A229CA44AF26E180BA8AF72645D356C8AC2DD443F8C9E4775316D4
+F832981E22EBCC3D707DF08F12114D104341F83E27734D81A56005E5C0AA55F9
+DBF4FB0D4B17BDBBDDB80B3EAA35925C70B846BC4C49D0ACFDDAAB55280E838E
+A962BB1FB63870089E1670EA0F1E6F810830E100D00759E16688AF88C5E832A7
+01EBEAB36927754AD34FBCF10F6B787B6CB1F90EE1C119A62E88B81BA82E71B2
+97ED389F742FEF4B76CE6A17D0516BCFBEFE6F7185A54397B3538E190CC19E2E
+4CCB233AD9126D64977FF2E89C12CBA5EB2ABF6E91289728CEB3CF67950765BD
+B6CB85DDBC55A6F452561F0AF5350DFEFAC063CE5F25C6F00C7D2CEF0B880324
+A82CBFF49C6796AA0C943440218E59C2A98E43C2D2764CAD05C0C5C4EA10F598
+F97288CCEE303179D86191444516A79AE6C4FD1E9E60615E3B547CAB7D471F32
+0CD1AF2B3F69C8C047FE1A01845D1F1A6EFED268601F87F8A92211BAB650913A
+0A2D98053C511FA63A8B3813E2E2B3FEDC870C5E6206101C4DD70AD1CA223A32
+FB276691EDF2421D12A4B330C4BC655A1218AAF015A384B8057A71B8696FBC73
+CFA6A9CCEC4AD7B0789E290F483E96E741325E6062C5F0B37C50F75A81D00344
+966F1FFDB35329F1653AC58EEE4C4B9E97F89EE4A3DAC15D67B6FA4C814A0995
+7460E20953FBD68438F0FCC139724701242D7C45AD30C72141A695453D003D72
+AFC26291C1F4BF991BEA7404DD85C825B840301B9215060870B1E5177D0AF621
+83FE4365ADF6FF293B7F9627ABA242F0A3E4A608570E46682A0CCF1284961F63
+B3E68FAD31F3452B5ACE03F95505B3BC194C783DE0F8BF66CAB795BAC0544191
+4D98F68ED7E13FA2A535722B667F6DA5E91E74A01D815F8F3CCFB5B4820E0797
+3553604F9341EC1B735D9F96457879D61A216A449D7B8A94C928154358253459
+AF775289AD8E86DA52D05A2C58387ADC92B18E1F0D1C04CFBEE4877F49953FF2
+42A7654DC8812CB057B305A68B6C22C8BAAE86855EC1ADFF0B3E00D60C853807
+20B98B49E7B0A9E1583E685716F6C2CC58162127FC8558AB128B53554A679763
+512DC6999BE36C0110423659F580491D0071B4AC2374D5D305AB506B24E63E44
+BBD84371A903BF4CC762A0E0D3142BAF794A332B629C0C8F87366F0130FB6E7B
+84BF4D812759F2AC831D1E3703177215908039D66CF07D17258BA2B34EBC5D68
+E86A5F0252A7FD1EDACB59639A56C710049D5612818EBEE157A773D8AF209CD4
+4A6816A6BA050D5C23B85C53E6C50CD2ACE0B218C8F87A54671E271EA0A8477F
+4A1DD5D223C0C644580373A57CD67EF1CCF7FADAFCD53843526AA357F666B835
+4BB78097E85D4D9211DD8F506380056F03D9C9DD9EF63EE9AE3A5FF0F74C654A
+EDB34C3E9894E6248A583032501A0C4B3816262300859EDDEFC8B4B095130B91
+A0E583759F16CB9E5B38C42CE172DE2DE760A9E994233F006CD772964A621DDD
+686F4DE3DAA62A937ADCE746FADF3BEF3FC2F90C3661FCCCFAD07CD4C22A2F8C
+4DF29BEC9C4ED7FB3006301DE829E18EC81C8B7F27EE3AEBE4292548C844523D
+A6F07705F4F16891D5C310B62BC698014846F9887925163C732666B6595A19CF
+4344B5391DC011EDA337BB0D00891E6CAA8A6DC61C87C467181950BDCF13A7E7
+BECB71FBD2BFCD3D93135D5A508D172C3F63394A741E1F6764735A61B90353F7
+B67797C681A1AB28131E8E29CD12906A9EE1E2844451FE9DD9B0228AB93C7310
+F2FC310DDABB8418B1C29DB475E42233826FD9D0800196D6A825F380165E27EB
+EE33F99FCEC55AB289E5D5BC4B02DE34008BA722EF503608673CAEEFC884E36B
+2D2BF1B6410DE582CE243523ACDBBBDF75A886CA62C634F99A8216AAC0B762BC
+4312371C42DF685CD54923B02A5C7610CFBC2F1AA39F0FB7EEE423B787308DE5
+634071E08F7659C70A6EBB94826EFF8C817AD6A01B13E91F0F15F43100B0DB6D
+052DB9CED475535E482A58E3528B50D66BF785454A17DA4E4280AAF58F6441FF
+0D18F744E745FCD33024713DA26FD532E640E9BAB1195BCA469E9FF2476E9008
+AEF4A4A68B5114A7C2A29448DB7A9E93AD6B06429D760AAD16B48FD9D5395480
+36315FE778F795CD7B4F4F5081F8636FE81681E643BBE83740B8393E22293B6D
+008C845E6B3B5F518B34337644792AC0169B793093D308641F4A4DD3DE51AABE
+95E16160C170D0DCA01374D0EF9C0C1138AB40F2DF6E4E7E5C45C8707182F8DD
+DD59586336662C831FD0228595D89E5818A85E6D2C461A252BC1A2DC5895D28F
+C2CF0BCE8DE71A094B7BFB56A0640AF9274CDF166B0AA5F9E32C5F595ED7CECE
+10F6DE434D4CE74211A93C88625E508546DD3715A18800E4829D27A0F1067F0A
+31BF17B596F13E728FBCC9FC0EA5D01AA51B5CD8B76258FC9A283D7E7B8CF14C
+80D2EAE16E5F6BFE3F773B6609BA7473B9431C7DF9560AD9FC6E4D64DCE17C7E
+9AA26089E18C5AD0FCB8F1838E58124B0028B2C2E4D5CDE965D02195C16E968C
+51714CCF9206576B6D07128DE08529C4D94A1E2986E9060CCBF3AD61C605035B
+F78A0F954F3E1E5227526C47631375202CE7B71F014053C68652EC5DD89001E2
+780310E4BDBE74B38CDABB12B604CA278AF003A951F7361A607A3AF0E1CD8C8D
+065668CB80022EB608FFD13A49FFF3DDE556B4F8BB7D8B379120AAB86D71AD8E
+64CFFB848D698536EF379DF427309125FDCAF1F521A767B8722DDC88A64F50AF
+EA8043686A2BF63A8B447B6B588ED2985C773661881ABC98E09DE56F7F1FA305
+78055AB3C1C99FB40A4FAA548BD9CA0B95C29D74E6A32F3058EBD42AC47B427B
+98D24AEEBDC0F957EB5887100659B402AB542EB5EC0A4CD278ACAC36BD87798C
+C41B89E8888E23552B06434635D39D6E4011F9E155D648029FBB2D9F8837774D
+BB8A7D722A8EBAF520E0CCB55EF124E5E189BD7332E0EA5A90B10AB63FE405A1
+6A40F4B356482ABADD9EFE8E7D2876F5BEE9405EAA684BEFCD179271C29AF089
+097C485E4D7911EDA8997D29A67B9C225D592EE5B3B79C3F8931FD7B1A6E3960
+328E1E2718E7F999714A6439F2DD59B5FA553106F3CA3F82D7247F61020C7440
+F88FE379239A75D25FE3B3F20EAADEE28864FE249EE86664C792D92FB6E0EB6A
+9D3F154EE8B06501A347761BEAE8929E122790A718E2389AF824728904A8D449
+8DC150E294B5C9F4607019120F7255944A9A8D269ADB25FA6CF19FC52B50FE7C
+B86962C94561EC3386D0D54E476AE255B82A242DF5676D26242C59391D0796E8
+63039DC728F0787DAD489F3DD3F7DE89561892A5E8A38A3B28B7E942CD331E9C
+DA010D80EE13169C73F055F2941462B954C1602E2BA63DAD5578DA5ED29F68C5
+50A869EBA6FCE2683FBF6A22EC68D25B306A27B79AAF8E889E82E2986A8088DA
+7934ACB4168DF49CB75BDA561940C8DD8A7800E4D0A7C1DA6A23C48AA319FFC9
+3AD59846534F647DA0263EAB436564B6A501473795D2E5B5BD1E071292F958F0
+909A4247E8714F06A959A5FD8407A4B5D701CAAA3D7AA7931E091EADA1821DB9
+A795A21744000A01933981BC2C3382CC6C2878BE0F3C91DAD353C9182ECD3DE0
+C8A7B8921F87CEF6A6124BEA3D7F77A4AE68731C0AA996A9BFD86D7E78BC99F7
+E6B1BA1CB38EB0F4F36CE7537C3476E85123D3DCFE3B925BD5564705E204B101
+FD0DBF5377E44978B52DBA6BCA2780DC42620ADB6EFCB026C148EFDE93DAE351
+9388DCF162AD385FD4F9F3A671FB07570878A52DE86C00255E93B45D928449A0
+36A0E59C8881CC43A72ABF81819AE18FBBACECB668E0F062591EE485CEEEE60D
+F4F218CB633F7A0260B4884CF2EECF06E5705A197D2990DA5D9A7456129FB40F
+C0C6B3B6B2FC22D4264BB48337A98C375DFCBF80080DF4AA0753293E91C96FA5
+12A0B8136C7C4C80FB032C68EA75660EBD1FFB27491B7A6D984054D35FECA9D1
+5FCCE108B2F3C4C23202CBF5B85BEE7F0F420FCD74CC5D558A016874EEE3B5D7
+8E046B303D46468BEAB588ED948712DE467C5ED1F42DF22C9B402C596D24B72D
+2F609E7CACDD293B5BF0C9553D22C47EA88339AFD06EB3AE466EC2333C1C85A1
+00CA808A4264FFC89A485AAD982CE70C5EB9070BE28B380BC239FEE14C455994
+726DD99D74920AFA174CE979BF410E72A22D151FD7BAC732B7BDD1A4142BDB99
+70B521BAFCA51DED5829A9A36F7FAE6E41BFA981FF2F209C9F3DDD617890BA28
+E2CDAB7E51D49C22F338ECAE92B418855FC59577F8F199F5E372AF73701CD030
+273B84196E718BA54284A26D724ABF7E698A94A47CE3917467540AEC57B31E4D
+3B8691B200EAEE8444AD5BA8C24A602B7EFAFDE2EF05BE950222229FE68CF9D2
+7B5F40456B0C5A884385AE655B9AA57095B4A0B0199E7C787CCE1E0C1CAB4E18
+506587C792DC259D0EA306972DB6170F008FC9582D4930BEC21D5DEED3670071
+85EB62A3BA27A30C9245F0380F3FD20A085DD77661C3408378172F830AE09837
+8380D1C07DA549314DFA349E9566259888581E212CCABA00BBAFF7FEABD4F848
+6672980B30A1968293CC7E8A6D7DE4A5CFC7BA3708A76122A3D2552F69B6E79C
+0D6C120A098404EC2B2B67E80DE56BE7BAC2A05FA3EE6B68596E98E3A997303A
+D0A072D846360D0321F3F856A8C7007F489B82BE253435DE87C8163ECD0489E7
+585ECEC657A0E040A9C1FF28C94BE2B2471AE2C5966778FAA120DB1DE340E3BB
+9164EB236F63D8663566C306F263A79D03FA3C26F0A3A6DA8D0AA119EF05A515
+CECB66F7D06EE72C00E2AE1363D5DA802AE6FDD5DC07F994B332332FC17A7AB7
+258A0328BEC8F828CD3833F6066DADB4B62C42FE93F07E35D1C8483D12D52954
+42795EB0130CF2A6A2600FEDED32D288DFFEB25FBA5EB70E4B78601A0A653162
+5F6A3D4DB999E0AE48E8CAB9E332048EDE4ED293CC62B7867F3159C28D6D73B1
+3A951C22096D1A77A68E37C2F6CDF58FBA5CE7D6B4E5E3FA78AC2B0845F7CE15
+A27B284DEEAB751B1088C9E190F4B90D3D9E068AFE56EB07ED0C8E332A49E8B4
+65570124F18665724A3E52A204BDB06D68B452A4D63F4B0CA4DFA3CED2FEEA1A
+D86ABA5D4B3EC7943FA2DDB74F93D3D4A1CF559D2EB3CBA0B986E939137EE099
+42CB3160219BB791799DDB079A10836EC5AC37E12137FC33266A7A6273987E57
+C97EC1F6207AE4517CA2D4E08CA90A5DD27015C65D22DADC6D06DEBC6BA5989E
+F64BB70FC214E1536882F72ECCF238CB5BE51A261CE55661ABA44D00DBDAE487
+ABFE21C5178A131B5CB3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 33 /exclam put
+dup 34 /quotedblright put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /exclamdown put
+dup 61 /equal put
+dup 62 /questiondown put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA
+2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9
+0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4
+7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1
+767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182
+3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E
+56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8
+A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7
+581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C
+636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58
+2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8
+DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF
+653026524A2D101334AA3DF02A3CFA410836E6001561C00FB34AB04FF97302F0
+7CCD024F8C61577E82FF229A45F7FE22ACEDD95AE8052044A41EDF46B8F84346
+7275F5423171DF88188EE93BCFE0A84AE5C999E9C774A32B7A2826CEA8A8560B
+2F61A42F967BCBE2081DCA5547D9EC53467ACF8A6AADFC54CEDB7305DD661ECC
+3FE33D8C93D2425ED57BA83F360A384F6B94023EF8938DC136ED1F66CDB618EA
+F40377CDEE0F17653E011F5CDE11C81A3FA5F7168681C02167B275AC0F73EF89
+521A152823FCFC811C71E5D05D99094EB69E5724B34217D101BAA302B5BFDDF1
+4DE66F7887BFD458C2A97A835C72E7A6EC2500577B0B057BA1B4773094EA1954
+589FE5B1D1B4520FFBEFB6ECD015B606A244E605E78D39EDC316D97D99862CCE
+898341583D28F141A02877B76050B07694737E9F107F153E5A5C7393CD479A09
+114F07D12DE0185B971BD526301914EBAE20A38DC804C2319EFF3C8C4186630D
+C91141528F408EEB02C718A0A3E0D39D1C9853F71113AC07DD209828B4873031
+3E7A4E45D95025D9C558CC0C313BA3333EFCEB2D95B7BDA88C062E5243DFBD99
+744C678DF4AE3478C68B4F7BF5C52DFD8A81DA0BD2C95229BA43D15986717CB8
+A925638049C2A15A6913B9819B3642F68A07C4FDB2552C97D29211FAE2F16E40
+076342D4C5A72E0D5185CE8EFB7A8D87D7F345E776512E8B41609794052B9A08
+87EE0DECF203189379B9DEFB8DEC9585DEF2B44C7F64B4DEE827C74B975BD1F0
+82D7E511A5A0FEBD52702F7E68157B509F303378B191BAFFB4229495AE65C558
+D72D9AC8286E61633B29CF90917E4A01030D6B82CBF263751BCA8AB219284B04
+80A8F4B34D0592EEAB82D64F9A5EB6A08A6CC5A7F3D3EE2B61710DB386AEA658
+7A059E9633123EFEC39FADEA37C4205112063F7BD3D2F8319A30DA796E55BA23
+00DE2B3C15511F87044ABDD9DDA9247B5E785A01A05B39F1A395E36AEA4D3D4E
+ACACCB99E99DDB1AD1329069714FF050311B274E495FFE43D33DB3BE958098AC
+61150EBC4F9DB7BFC8F6C81047DF0BABBBE67970D14524C82334B693724A0818
+0007E4E848CE4AC8F07E72F02D74CC5C06DE0A67A63156F9567DEB913E874E56
+B993FF1EF6774A9C582D8DABECD1EE1D1731457305A989E9BCCE8CCA4872B3C7
+7635D840A0FC8FD9A40CB7B2FAAAFAE3274A2BD0CF7F681E877830103D2DD3DB
+761F3D925AED45E0427BCCF205201BF0DFC16C0109A4389F37F25AC6E4E70C85
+1BF6A47B91F62079EAD1D983BDD249D0EF82B21F89FE58CCF2612BA50EA48901
+6757149BA3C3FE22E61F80F62CCB355082A71F1C85E8819E71E8997CAD75ABB6
+070F0CEE40E3A9CDBCDE24D59F2DDEA887568EBE585EA8D40BB4D0677097E73C
+1C76DE3BD95B2BD843B1522540C5CDBBE4E1E6FA4A77F93E724F4942757B50C4
+40E316CA4DAD1D9D36823BDAA73E3BEC72B03F6DB2E99C89D2C3F840C15CBBAA
+0EC7330D23A3EC2780813F0C1F56C891FC040B958C7861DCA654743DB8FFCE0C
+EF4EDF238CD820A3EC97CA497B2C2504E43B9F29707D7F92114E8053CE90C494
+4C3E681028257FAE5E2C60C3E1A33E40A7C5920A8E6FBCD4686135296590D866
+1359BCA5B650EF33AB7582BC61158A573F93C4ACD4BE3D0E36EF1A7683B85438
+1FFA47955F8C1EBB80BEBC9427F239EFB50BA42D8C72AC0F77A511AF3832F819
+FC3576C4A28B6154B8B14B9B88A84B2E9DD9AECEC59A9CD717151FAA26CACA64
+FF6B2A5F561F77E9DBD2285695F0B1DD8D1D174EC5ED48DA7324EE88698105B1
+E28FB0EDB30067AAAB1AE5EF6527DD1A83DA04B50E5E2B7F2A63F0E8F924B2B3
+734ED216DFF4E41E2C074741FEBDBB01A103B5A68961A12C571A0A35CEDB11E7
+DB6C9046AA97B45F756EF5B32CD3E1446C9616BB8A7F57308679AD7E5368648C
+37F5CB0CB4C95D49C8DF2D30A8C17D8870BE3C4D9A077BAC5EDF794050C793D8
+D26A5DBAB2025FBE4841308D5FFCD592C37514D1EA9F7286EE8789D41BD9E38A
+905038AD5FA8405AA7568F9B34F43DD17FD575EAB5067147CAD8E9C0A454B292
+74635B10585CE8D8F891A07360DEED0DAFE9836B006C3ED2B6E10674CC17CD8C
+9A862C5C51EFEFB1AA02F313DB95969B90714C62F32BBE3062E2D805989EDA55
+0684402A5FFD3B330B194B1EE4490D05044859619A7A6A7AFEB4909B63CBE907
+34CA9F2B19D27DC59F737344E1298EF87FD4210D08FF55E143319DDDF5E94582
+1FD4C58EFB00CB9C840ACF598F300B9F6BBC4C83A89E7CBDE9F37C0EBC924777
+9337FD42AE2B208FC6CA3E0D9FF9AA07BF7BB68ED07EE307267BE7547020AF1B
+B3D65F802A95A69A2CC366B51AD5771EC679B23253F21CDF12E8584ABEA58D92
+38F3B4710D434F5F967A9868BCAB5C4B57F5E1650356F9509050F03FAD247F06
+607D717C4C183CE793BA995DCC37C836BC994465C1785517466DED4A2CCA2AB3
+32F2D92C7DA918D720341298C650B4ECC780A457CF6CFB2120313BEE25A34AD9
+3B2C2B587AA791104E38D27C117C3B4255791862E6750FEC3C32A5B965D72FB6
+E333DBAA452661F88B7CFBF442A9CF467D01B1AEFE817317BE81CE3479E17E71
+6C24D0A6C08978B3DB9EA09567FFD14118259E858E88648222DFEB2A655E0A0A
+98F08F3D13539005E85DDFD0B1CA60E48C0DC80FE0AF9550344B07548E9B3039
+E9ACAE903B7A3AB6FE24324319DD792FC5140A2A368D233140DA5690D5A8DE57
+A42AB04F6E9D167CC3D0348FA7CB3EB537AEF89B99C7C93F398C9360A0B1E2CB
+CC7E403B1E439CE040F958BAA50E36980FB3EA7F789FDA23F4292E566BCBB731
+38BCA4A234E2A205D815FE2A450DB6586D56E8C1AC62A50DCA49CB76E122D050
+E1A3413CE5BA8BF96F34990DCA2668FCA06BA66D9031AD98650EFF39D881929A
+28D99CFCA94FDB163F970F29F3A2617F83F4894EB997EA7AFB67A6293A08E00F
+37D5A50FC0C360BC4B7F9C876A6351F9D4B3279C1083D6DC79F5A63EA48CD5F7
+02FB3C581F446AA9F19603AC165BAEE2EAA7B2574268947479540B5801FFB122
+AEA27CE208AE86BFE14B8D139C16ADFD5D7ECED40EB0E258B38E509A8A1E07F6
+EFEED540300ED1EF27AEA5A9B1B0FCF027F626B7258F4485B8A17399188CEDB4
+8CCD037D55F8EE4BA5D2E876DF7083409DCD95F644F43778567B61F3A41894B5
+485A87B1381E9E98C713E2BDE4594977B85C7A4F58D542C634F9F76B9403E23A
+87D1091723B30E53CBB97A1406EBB78A7E06DA949505FA40F0D5CD0675EC4B6B
+207B7210210E7145ED707377A9A1534FF7ABD8395083EC23928A03E3016F636D
+1697B161377879568A752DDBE939BECABDE106790248103F1C6D75D474584F85
+33DD684D3E4927EAE6DA1C2020EB78B226A43708351B8844E4A491E82D018AA5
+AB46821A444373FF2CF81F996193D0C6AC98E2302BD0D7909BE77D97F1A6CC58
+959CDBFE69014EA8F95224F2D2EC70DFCF8A38EDFA77581CABF0921B863A6544
+24740A40AC91E315E97FAAB8D490AD44AE6805A9C7471AE945A40886A2DA1F03
+7B94629ACBFD5C307ECACB6DE6FDD477F439CDBAC935A94679F037F1FD6DEDA4
+F4EABA6C9837CD7679DCF343E823FE70D065D0379ED0EA0C51DF0700B7F97775
+4EEDBD920782FF119223FAA23689358F35C8A68566DA0D9097C6D0FBF163EE2F
+656EEE4291F0DF40C5F4910DBBF3A9A33A0B349A2FF1D01811857F9335FF04B6
+EDDCEDA0172528348FED69047FFA80E2EEDB6A612082134CED2E167A061EB226
+CAB50190F731B40DAB9650D4BC581BFEE93A2CEB9E9BBF5860760405127A1E3E
+7FBEC40343D0D2E8EB80083B354C095C483A8405B7BC144FCC23E8F25E745A4E
+8C527635AC995A1065A7FCFD805C6CA7CF611C06845EEE14D07B81E3B404E727
+20CCC5BD3657D1575949FF993A71F5F8C5236135963F13D8C09B1F3B08CAB6B3
+58460385AE220AE727B0CB9C05020EB678240921E0735D7A28E6C17CE22AE05E
+6C9DE888DC5D3E24C60BB94289910B3723F60A74A8B48ADD5E03B6886044DE90
+69236204BB7411A3D9119333D328F3A7BC446AE7C2C4C529D5E3D501EB99C900
+D040D670DA581CF03FE6243093192F5E91A13B79BEF60D605A2EF3BB93B569A6
+9C533A1AAE2CC70151A0BB5992A5B8269472E626D299F66D3DC25952AD9CC205
+25572F56F774E156EB78B0406C4DE584660E1AC7E629DADC0BC41E725BACEE76
+FE217A7B0190A4CB69E9F32F4F7A184BF53EED2B1659DAC33A2EE695A88D9F07
+D076E3ABCEA448A576DB7B0C5549A5A2D63710141F4E539DECF167EFAD871552
+7BC24AE52DF04152173D6E4CA827DEEDEFB7E9C3E72B5934C5DF97BC1EB23749
+F776539AD43E9200A04341EC0594EAB62A0C7050DCA43945E58C4890350F3ECE
+5BA67C3D716D5360A5C1FCB6EAE1EC00D59B46402B16B14B821EEAB4758701D4
+4CECA59735D67B099AD9CC4BFF50B846CFE14E35E4D3D1F5A3ED2641ED940775
+0067986ABE6AA117DA321122636AF7FA88AF53A473BDC12A4844F46F43D94ED9
+CBB72CF2CCB37469C2E63661BCA5A298D5E9C6BD3D41853FB4867DF938DF0391
+2F7ADC04FD1B0D6B0D5478581D4A2E51BDA015A4FAA53378696FB50A3297DD3D
+20C365B963BBEAC22789E0073AA921F0640F63DE0833764999F02B66E800991A
+438223368F1AD8FADC75E2C5130F76148FBB0ABCE3B1270C6F1CAB55259B5290
+A10A1CD5419F9254ACE5834A4B8A71B8068EC21E6C4AFE9E790C74EDF7411289
+3AEF976BB7A42A7CC1AABE4634CC1700272E6B272BC6CA5F1549F3172537FED6
+C4047BBA4FE5776BEB53E8AA82BB17AB4796C1F91264A7B7E95EC14C0F74710F
+9E9CFD51DB71C3CFA152D6BAD9E60B38D688C7CC5B587F37BC2301C2938DE2E7
+88E1607E5B0CE6AFD63989315A9AE3BACA1E0C0E0F6CBAFF02685282033A7532
+3E5B0AFB7AF6F4E3FB5801D175D02551F9746503A2E50AE9AA8AB56DE79BDE79
+74B4550F3890818AE801957A3B6A822614EB8D12FCA584EA8C41B814D30856A5
+97C3ABB9F665D1B72B8D19C4D2BEA46AE1332F8BD2A6FD2C2A1183E48F62C4DF
+4175B4CD65A9B145D400D1CAD7E00D0D154182126764BFD3A267F85BC623A575
+92FFC5A063A9205A02C89CA4B40C4D489F17D383FAF081A3C0B2C94E21BAED8B
+1D06A4495F917C37F8B04070E9A90F60AFE3A8F0073086F00C5A707A96D4E1D2
+BE5A637EC1C614997446262573426452FA5872FF661B519E24A34E3C58D4A07E
+BBB6C294D4DED3EE01A853EF8E153D905B0598241F97301CA600C09B7D116901
+77EA1F6C40CBF7CAD5991EAF92890305BC710270FBD575B626A59EBEBE2A9A21
+D02700440C57557225CEAD5FC1EBA1763746A061A7F4DFF5558F6CF9160F7CD8
+7C84BE7407ED508BEB2338DE3C5207A7804FF21C4E0FEED254C0DE812FC8DFF3
+4B5B890B24BE5AC7C00DC1C193C88A6B33A442E184B4F5EFF79F4CACB8A56DC4
+05098C620D63A0135F8FE2959A396398A421FC16F8AFF99F702C1B10F92ECFC2
+2D86DB2489887879926E2AD34DB4F7A9CC460E12812C24FAB08ED0F2C3DF3FCF
+AB41034C07225F20ADA5B5AD6AF5349319D3F937DD64B2E0A0887B880BE636CD
+F814C498584F19BBB3FC146035E4EB4A3B7EB436E7713D968B24840EE00C019E
+D08263764CF0839260BE71F875E5408AF4A8AB1603F7F694C2DB705F6E13E1C9
+4CCB224D0E2B610FDC729EE8E33366D0AFB0A014C3AAC6B915C2268C27A65624
+261E38226363108AB1C12BA960649782D0A02F87404350EB7F58C6C54463C1B1
+334F936DDA18C96B577D4409F18E63A79F708A816096A6FA1071B1FBBA3DD470
+C00F032534140440012988D81DBFFEDD0F6B02827CF76A92F638A685BB1686E5
+D0624C445A765E6527B4D2FA2B8BBF035D9B0BEAA0CA35D937FA9B4A79224387
+CD974CC0A052A5C78C4CA12379413303DBFD11DC6B78507875E6643D36679EC8
+3CBB213B5116E5A262300890D85018D550C69365D717BD3AD5579C906F8BA35F
+1C07EE6B17F394FDEEDFF5340A86E28FDA9ABD8803D832117A74BA868326A1D3
+4004DE8942437EC0123075F2C6B97B306AA3C806FBCE7CAFC83C2CBC77E25C3A
+082DFAD7D69D36ACE654CD17916062449BDA3C3AF3806416B16C718128326DDB
+062CC9FFDE6FEC2D0451C4994F5C681A18D7E5310917B2994756AC8FD055F7D6
+92FBD23FF685754DC09F36AD98201040626C381FBC63217DDDF511ADE6D13101
+0043EFEBFB8C49652EF4FED438B5322D83C6B998BB46BD5B5F31BA2DADD76B78
+ECB3D44A2AD40518C22914CF53AC408E8015F2E828F6F4908FE0C85DFE30B8AF
+7A1E91B6AC7E25BE17F971DEE8271DF880E440EC95E45A6C909AB0DD6259AFAE
+35B3AF9B04936FCE351DA6D244D34EF22D0B8156A583845423E93A3E5C827287
+EEB8E89E19E4FA0D6406506B73285484A75082DF8E0219FB5543B57AAF63C47A
+0C5616682F22DEE96A8CBC70BEB556DF3E719CE0E70FEAB87448B0FBF45EA6E0
+2006416E39CAAC51A4568736D8F0270144CEAA8CFF832AD16907E09E49444BC2
+80306B769125A50595838E76514A7FB0F1392AFE209D8817FDBCA2DBC8CBF8C8
+5948F7E471B6B94D7FAFC382B02824888D3C5860D1AF18F729678899932A1AB6
+A6A7A3FAC08BFFEC6FFA3CD9543D36AECD2AED91B0D8674EBD6A9728FE8BAB6B
+4D3E8E175D0941775B3F96144DEA873B48F3F6B7B6A30D2FAB960AB555AA441E
+69DA76ACF6894AEFF47BE6BCC094E42D735EC1B9D65474C31F0468FDD3CEAAF4
+333F60053CFEEAABF43569FD1C216FFD77EDD13C344A0024CBDBFAB9CEDEC95C
+115192A65A818C166A5C4441FBC0A1379D0F3FE58922EE49BB91857A03BCA8F4
+0067F324EFA67755AC0943EA80D0EED33A817BCE9D5676F9963844F6A2DDA48E
+C9B3D9B1E9F8CA3FF805CEE70807B028510D0AC5B13259280021D06260FAB24A
+0143CFCEE0C3FDDD6D817C717DF925DF5022C37A19FF63F77D464F699F585E93
+CF29D5AC1F2CD04E992E5E714C1EEA2FD56400E45A42813E4BBF87BF0849834C
+F54A730E4B399FF3BB4E14D9CBAAACD79CF06AF35C128CEFCA1C43C8A5ADC1BC
+3AB187E52F70A2562F7A705C58396C3B9198C78AFB0BCAD890956F7D463C70FC
+0DD0AD6AF96D778AEE93A3A79A514A16C0324421D5DD3F7BD1002252E0F24DDA
+3EDB1856E47B979C235BCFE8D6B2FF68864FBAF0CCBC3BCA811760643E0B2E73
+551BA0BCDC4037F497911B8A5CCEA5AC79B2C8229F317B690108ED2C52E7429C
+01DFA8C97FD5FF794EA69BCE240C02A9640CB5194CA6AE598C605AA92086AC82
+C983661FE88DB62A3B732F78F43B93E9C22A09B29FCD79E41053D4E27CE6F3EA
+FF365338B03B87AA0D48063D02B8E4C88075FB2354A05EC177E3FC76FE4E4DB7
+7337F0AA30608A6775C928A39A515C20A285D0C4541A2A6F06E6844A6CA428B1
+68D522A3EA084A2EFD17E3FE423F2F55C9F19E842D2E30CB79026C2D2DA9CAEB
+8C4DE6394771D9C2D071F1B17047FC66A2ADA0FDEFECD6FAD63EA5F2196CCBEA
+A4DB2C62A0948DD2A8A0D30E7F6808FCB912704E647E1FCB8E54D27039F67009
+4E995339D198156D3F6522EC70AEB3F22ABD6699C36386B98E0992A57FD9BED5
+D9EBCD492CE373E46A35A906C17AD2C4C490A9F74039075C8AFD8EB52C9631F4
+0CAFAAF50E8C6B4C565D859F6DEB844846D560318367C21967D6100DBE5D3A1B
+DD12DF6B8A3633BBD59EE865445D2F1E8814D8D64C3BC913183B59DF20361B66
+6F3DC614B9AC2C2CA4C30E1A01C1C2A2054FB4BE7D58C6BFFEFAA4E13087C434
+ADC6D8F1185F68B2003E7EA12A991128037E54D2A88EEA2E794D89BF531E107C
+54278EE82F49454FC13638CD0B83C142BA3E0F5462CF92FDF0FA223EBF69D12F
+3D99BA804FC467F40945B1B0AC23DF88BE1BDE21E296A82870F6322630C06823
+27629EA02637E6E3E10F16747B3EB3E479AB8A347FD46D581608D453684278A4
+AA58BC490F673269CBE7356CA4F9E523CDC3F5D98EA1B95CB686BCD17366B609
+72BB6B2167EAA0D66E36EF6A1170EA56A8485A659E55C8D50108F6455F1C4227
+6CB5DED36763E54089C6C04BE71D5B762254EA4374C136F98900F25B239652FA
+71A14A43F046EC8171C490A5755F90DE4ED09F8AE5EA1A6A98EC026B612BCC35
+6879F1942C6B45DF7A50F4E49B8C8013164CA04DAC46F1D799071BA6402EDCD8
+F55BC6B064A2264A37D4BFE59754703B2C13BC4C2586A61EE4A9F9915F00FC13
+05072451125EB001CE97BE3933239DF6501A664B45FFB5E63467CDA463A5AA14
+504AFA4C8D4A976B459D8B41046615E06DD43760FFB72488397A34C4648C8B4F
+C56454126529C50AB1D3B328136D31F79EFA1EA011C8C6FD6AC27FF2D4218B34
+3F99304558FE4B1C81BBF4807AA89ACF653EB74E9A2C85D8DEAE86F1A7B3B5F4
+077D09031A32E48C069539410F68EEE2A7ACE7B200CA099BE59009268219DB52
+27A2D68DE15C91ADBB30775AD1701708749754BC4F0BADF52540EFEBCEEA9FC0
+E00ED70078142201E897E93EEB6B8C033B2B21617162BB54060D3A14BA41D481
+9B2BCBFA81A176BF324C8425310DE6C313113A9DA8A950C6439996C957ECD22A
+BEC6631437954D043A5F0F83508A7EB24EBE9058841DC13E42E5A817928965A1
+0566C3B7A4593733E519AB17F3995C6702E3378822FA575A537E720BF26BD14E
+D08755D999FA4AF6D0BBC2A54CBC279C8E75514733DF7F2C19B84F043A4C9A03
+979FEF3A622C92ADC58FE94C3C6C6ED45472D1E48290173613F991036368E036
+1F8A871A66BE125074CAC7887A69AD92D96F157BE10A6604CE0647E5D2F6E4B0
+8E3CB6AD0E830C18B4C239094238357D1D371F643F50E81CAF234EC88E0CD6C7
+BF0B0626895B812E489153B01F94C0D86769A239879CEDBCF2402894B6E79566
+1AA9B48033407926F18C7399C641C3B0C898AC99AE6595E865726374CCE03954
+92D48AD6A336888DC372676F0E1BB9821F638924976163976175D2A687324741
+912DF146F8C7F6EA428814DF6F235728386BD3558CD588BB1699B43C1DD6B4E5
+CC4E75E69FE0158E8666CD4E86BE2E79148680287615041E559DF70923831A27
+63D40F0F873B3DCFCE27E0BA3F396EF61417E77DE37C0D11902FD961CF5174EE
+8EB1DBC17A1B0FED2BB385C9475096D7EF37BE12B0D75F6C1883229F3A62A679
+828645A2E71DC2818B037613531463FFB0F84EBC614F6A9C3BDD29807805E580
+0200984E41C66B9C99A62EED7E91DF58C72EEA135B03B08292FF4532728086CB
+5ADD2170758529CCFD0E652138B55D545DBFB5C1DD4FFEFFA87DB31F24DCECDC
+203A0B9D242B8F0ABFA7484545FA7BC22CC5F30C28629086ABD681555FD8C060
+00F4B5444B0C79EA2F1EBA2CBF0C45689B6D4B09A1292DE9F6E92A9C52A4F601
+924EBAEDC0F478330826DC36A3E3AC35DE0B82145E378108A75D4DB79B78A713
+4A54643465AB3D1127B69467DF7AAB30EA92ECF0B5C475FD5922EE8310F8913B
+7B1AD24A93EE946C8E6DAF09C3697934E94DD0074D8DB4582D26F9807786CD8C
+D8CF959020822AA23D57077A73126BC5716FCFBFC6271C9F1BBEE9730198EDDC
+41BF84898B24CD5A42D6D060C281B1810B323C5AC6032870041F007EFF54BD07
+63F24FED3250E1F67F98E4B73678A5BEFAB99103F09E59E5E80D4BC9A2977FE4
+3AE53E66D4185F52A001E6CFE374CB6A934187664F782F63E3C3359C66017383
+99693E9A5AF425BE05A681BF7073A3108C77C2A31A9ABFCB24384010E36CDAB1
+86219786B68AB2A6A7065167EF57C5EB79D790824A459A137E7CAE466F1EFF55
+8BA7CF2E9382C1BDBBEDB381E7BFF677DF252886AF2BF19B2E2D8C44E0C35957
+A0491E4723DA85E67BC6182EA0803EDF4BAFE302BFD52D84BB888A70232F7D64
+3CA598EF660B77E88A6A8A4A4D63AAEBB88E400D20581F2DB42ED3B2B184DF15
+6DC8E586726B5074EE71F347494C84B2365830A932A4F05F3EF70FAD933EE655
+12834498F3A58AC270D74CBAEF756CB8A499D3EA9B99C37DBD8D84970B188530
+82AFCAE63D692E6A72777CB1BB9523C75F9EBD4DC7F6E5D6F39862BB1D7AE93E
+5BBD3E135E919421C3DE94A2EF81914B6EC5224906F83EF47292301C59C3836C
+3F359945C40C61D9FC0AEA5A88A9A93DE5CB8DD195725FE145E79B7DF33B1FAA
+F14A457C39D12AA5881FE5607251BADC4CA3A1FD901BEB971C765D568803D1D9
+832D5444A1D8332E125B7D865D5B28CD78C7043D8A86AB4DCFA769A183FB4B05
+749DFD67A669B7DBF6A6283CA516B94704D74F64C3FBEEAC15CD1A2D939CCF23
+3A7837791AA06E6167291EC2DB0C34846D7D158EF594C6499288ECB69EDFD50B
+4AA7F1E37993781A3933174BDB9F8EA0D41BDF7896BECC4BD9E6FE17738AE1F5
+FC0B9D80D6247E861AA03A36B3BC648FC8610203AB27DB18B48BD494A5798406
+BD74B5D1631C2844DE39ABECFC6518C45A89E117D7C498348FAB6C512DE91210
+1C07826D1D6131AFC8B138B595641D80C8753C45ABA3EA94D2B175F382508B1D
+B85D1133FAB93F41187C9399ECA60142A1356B1E5CFD821108C347CEA7ADBF08
+0B124290E9D736E2043039D49D7D297ECF51BB2D2A9BF589761AB8C1E7249722
+BB558C01661AFF993684BEEBD24DA09D0184440581B53FF4BF3C0129422E8F94
+F214FD0FE66F14DE284435437600C6B9CBB80CF7CBD3CECB34757BAC210DA30A
+2DE252E3DE81792D101F032EFD210853B4D37CCAF643D71C4733C81202D5212E
+4E75DE6E19A3F1905A22B668DEED9A8BCABC2365A1B2C6DA539FFC709B85038F
+99A65DE1C6782F0C757D402F59F11968695061FD1EB1293BD54FC33E1C2CA4BB
+AEA897043AA9FE619649D835D131E18DF17A9D1ED6163BBA1A9DD12B9BB42A74
+F67DEBE8DAED8AEA55A7F022159138F97FF379566A42354358FD09DC88FA9EAA
+5CF2ED8B4D13C1339C07D398E96D0287FFCECA5C5C32218BB43BFE08196D3D1E
+23973D34833CD9BACE28436A5FFD4816542473B7CEAAE489D7FC0F5012BCE6F8
+4D28102E67187E50603942FE7514770BB9157E67F1459F77B2D8FBAAE9A4C987
+295D1DACC6AD96A0818C9E875FEB5354BC2A1D28E2A1F45C8628D8D5B0C58651
+5083D10F070C42724CB17BD93D598ACE9762EB5060E2687FF9EFB1F58A95A5CA
+1AF7B72010131F0618EF48E9BFD21C17B297812190CC427B569313B025C39843
+57E25E37934EA128680771B49E7A3F1978B3A6238EA54D83CFB84EC2A296791E
+3990AC7AA99A9A5EC4A560E59F27DE1680C81E5930C136A83E8E7B4ACE6AAAB5
+57DFB10D605F501081A8808BBE3F6E297A90F5E09A3CDF26FC387399EF4D5C70
+E7A3E9AD46B0305E86DA98263A7F44357D4E950A63D7BEEB9D2E3DF3D066A6B7
+9E940CC10E8007B2CEA1C11521D2095EED15F3152F92B10E0B4E9AB74138F241
+4303245DED32F590E1FA35275F2A0A26FC74F9A04F1CE9280B9A5F136644B77E
+9F4A7CD818309F8FF436B07EECB4E6D4168501F32B348446AB6D693C81FBA667
+80FCA9390E36759B14F7A406E66F7BFE7E91BCD495A53097E55EEAD39F8A89DC
+FB4CFB345F075FA37C763528DCC7D80FAD8F674B107E60FA76597DE95BAEB3C9
+A3BA95633F1A44F20A2679BAC5D867A8ADE1270B3A87CF973424372BAF552056
+C9C37ED61E8A791D32997F15AA52A1F259FD02267DD7F43A218224DA371093A2
+2945C99A06AE36A43107BEA63FE56A9A2FC0EFDB46DF08C2752AF493035A5595
+EA90BD9847126368DF8E22FE380E50A893FB21914E78BAED3AE5F9F03F7027DC
+D10B91264F4459B8D0136A8C4139C416C64E304128104B6EBB0F3978C69FBF5B
+E090B5C295B98578A79FAD2AF4233821A08C375DF4C4429C93623C43907B99D4
+527E67CE7A73786E4D2F817A612AAC7B4D9E3F4A79BF382F15008DE76A9A8DF3
+47C60F100B09D971EC4690B1A04173A1CB66A2269BE80708FC29D82C552151CC
+385F1F179889059D5D70D252C99D0F84D12FDC13FFDFADC11A731262BC8E2AAC
+FD8FA176352F9D114322CAAC7278113C9B48C869D5EACE4215CD50A125EFAC99
+88312CF4E12FC1DA63029140E8EB1BFE1D79A7A338BA2188B599A1C224A0FBA1
+3CF40EFC11D7D3333FF371DED67318D2F6DC8B5F34A5728233AC9BB2EF214D67
+B3F2D0FDAA10F2C932F7AAC4EF557E31909175A3F61B0804CA0C762C53F20A83
+53A8A6FFC37E002EFC441614A8E540921635FE855CBF1338431AC8F66FB1E17E
+6770C99ACCE479A366F00211F8915AEF2940F44E43FBDAB05FE2D64565BD2584
+59F65129BD9695C4787C6CEF7FBA70E2E0FE4FB7051F65AA824782F9887E5F96
+DF2527C15E39CD1D5BDDD48765BC0C528037F69F8C5F168810DFC2D974AA0E62
+20104E3F291DB79BFE816FAAC5765BA298797EA491EF82AF07769675D60F4E4D
+F088426BF9CF41B0DF5D840BEA5ACFB5382015DD26ABB0851AC610B12553BBD1
+788032FDFAF98C64AF5E2FD0B08FDB9582CDBCCFDA38F256930349697AF7566D
+F980076F5E072279EF92BE37DB65AC1D702B0E85C856482A8BA9B44CC43BF3EB
+BB7504F1F2696B597A0FB8085E3F6E3BF178837363F750679CF2CCF7B01027F8
+747E1DA4597C8F93CE8F07D304FA72C64972CF08CD8B8F3331285EB0ECEDF8B0
+64B53AD633C6D90340797802DFB81D424DB73D68BADB7811765D83C2C57E3BAB
+F543E327CB8B0356D4A84CA1BF0AAAD57FB9EA0E5C70090A04745C916A3EA2E9
+2AEFBFC64AECCA2DDA387A3A8AE1D27C6B031A28E8FB3F871576BBBBF7217CB5
+4ECD354B391D4661B278B1DAD9B3AA0F39883F31537E158075D73A5C4D37FAD0
+4181846C724986DA122D84914611B7C50DC964E21B40ECBCDE2FBCCA5A30E11C
+5AF792173E502843DB785CD34583FF25251C712087589EA26D73257EB7B9D484
+72FCB8988317B1F886C5EB9791F4688F087DC8D2D0B82B5EC38CC026C45C406F
+F0BDC2C47011AAAFC765C2E520BF3C90C85E0D4AD3D59E75585FA2AD70B3C527
+2383D7582779217F435224718C04EC8467BA8C9319F99F3F033B148B24CA80C8
+C2A35C0B3BB874DE6AA03D3DBED072A45DBC5C8A746F83ABB578F872D535EC21
+D16BE93537193CD36DFCAA9BC9FA95033EECDB3853532452385A71D1E92D12A3
+9AE044E7142F0911125B2C2C881678886AA4E924B5718172A3161C790E2E6F04
+9A28709CB38269D8D460A8415E68F64D6BD3C9ED9D9744DB7AE04B9F19B8DB63
+EF85CEF8DA88F8442E2AC150FDD3A15BCF9740CAE7FFA1DE92E2571CF2C0E0F6
+90F13F5ECB3CB88FE13D4B8963B51ABFB9040A25ACC10B08166441D7275106C7
+D5F58C5A80F4F5472181D985237B431B8DED88BFBE1215B6DB506B7838A26C4E
+C129AADF9C36C4177C76930CF6008104E0B5E3A387A13CBBBB8109AEA38FC35B
+E7DF40B4734AAF9A7CB819D94DFE944E994DD21EE7E9BC4014BA7F0A1FD7C098
+6F7A699E77867DA25507D723B6CF9174782B58AB59D89BAE119F145D61F83687
+2C2A1653B501E71415A0978D2FF39468686E2481CE4F06B981FC398F93555A87
+E93A098C9FF28BDCBAF0637CD63BEE7FA448538FACC04B11C068A16E687BAF4B
+5D722363F7E1EF39B8DDCE5C947DC2A69DF4A4FCF40C397FB446A37E74502E49
+571846E8951AED1102A7B67B7038EA1C7ED210A077D83222E988C0E5D2B88BF2
+C71DF6C9F4400104F2E8DEA364D3A45CA1C1E6651C3972E89E5CF31881322FFE
+AED481E2602E19D31A735C14F3C7A8D585C46ABF0C5C64BDD64EDD35D0ACF67A
+5C91C26E2D53C47EEE126FCCAC1F7E9A67A0A02DBAC2C3EDFC15F55DD73EE385
+A7A32431AE18BD4F2C612FD5F5AF4380A259C0C38D22FEEE403A7B9CCC4EF62A
+6CCFE803F270AA5FB5C4DF8419CCBF6AC611A721688ED51B82C1E5647F2B988E
+2B84B5343C26D8495A23908A6EAB2D2376DB03F96D493A892B6548E0369988CA
+A2ABCECD47663BFE45F4F3F910952056A5314843DBF4A8862ECF20B9C6427E86
+E90CF8132B2A03E1A0109C2C1973B5830B9AADC952F41D92EC44FA3E79C77155
+AD89D10EA1E3B30126889BA190C86ADD788045D0F933226A4AC2FF91A9406F6F
+976F337400FF3921D372AD11C929109E7F2D7C2A494888CD85BD790C8119681D
+83B11275991898106C693C0EDF1C19B8731A84A94470D2BF52F0123E5BB89E56
+39D5CCA023BF0625DA16DE7DB7611108CEA00E3CD4B8C03F31787EE00A94B542
+A88B4369139836FAFCFDA51CDD5ACCD351C567663F1140357C1414E3301174F9
+0FAAF917EC9C19DDA2F41C671B3175F49DA30593FA6C93A067560053822D9A9D
+0A440C3DE6C4422E0EB2F7E86082F7734BA83D02C30EDA9A22354D1DCBC8D186
+6A43BF3DDC5209DD661A87CEDF97BA43262C6D418DAFFD943846120FC5E1A06A
+5C7D847154E41CDBE66B0538189C130DC4094D7F1709F15460AA982DC438F380
+766D6937A65D1E01B70FC903E2D906FC31448FEBDB937051BD538019D849F81D
+9C28FD74ADCA7996C9F319EA011A00AD195FFB5149F1B0B550ACB239D6D161A9
+E45FC9F9018F471885D62869831C55EBC118920B864BE49244DAE14794EACD02
+A096A5D16B4800B0A1AF3EAD075EA2476743425FE2214BDE468A20749C6FA35C
+9CAC2363798D17891339B28F8BB6D0BE628DB425FAE39D65D3C034D041BBF7CF
+4EF74A6AB6F656144930C034E57F02C528E054F65828BDE71083109F43FAF0FF
+E520EB4BF5D92932BDE44D54797E58DFAFCBF5C819474A7B9282D087F819AFA7
+F13B47F2CDD0BDDA2D8ABE8D6A0886407EB8550B96844FEE859BB61C799975C7
+056361974EBA586DB2D3DDC859CFA0FF493C5C8DA81B2673AE6C94CAEECE4B0B
+498E9F060E9948D0CB5C47040265075BBF6B40382EC26C5822DF3632F1F24973
+DE14BBECF72DD8535F05BF15276DBCD457432FDA386EA8131FE695CF61F11B37
+1C917751B54637348823C481D4C2B0DD4C98671BF1EB42919C6E11554D86490B
+8E2823073B9F1DB5B04EE262840352032E1B9E4B688FCFB1144E43BFE455AE25
+F914AD37E6A694900C5CEA010A04631BA180B9D126989E46566101B868EF178B
+6BDE396797925C90780A1840369DD3F7AFA7C6A2D46FFC8024B12C356D5FEEA7
+9270B37CD936AF7AA2F041836B00D3DA2F190F4E8C97FB7E9903446F8847BE6D
+32A1772991AB24ADD997BB3B97452F21A25591459AA9F15A0B5395DE1D23B038
+07D3B35338E4BA1214570B83D730F9FE2F0C0695A331B8E391D1FD879FA2174D
+3F83FCAE5E1441C51B7CC7AE625CE6F6EE29604FAFF1DD5C1FFA48599AA073E4
+E54E56028BD64FDACB47C715566D193332542E7A45F27F87F9BD0E7CFEC8EDD0
+C604549AA0831EE8CA7C68A8A4A6549B1E7C0BF2B6EEA70AFE13024C41557568
+D11E69C2F8D7962F5FFB6367016D93125A92DA39E25F30D5E4B85F66D34B0528
+DCD0D71BB767B7EC0A58272DBB90D0D0D0F661B783F724929CAAD9843E044752
+C5D1F2F6DBA6CBC67410623EC23D7C7EF15B18484315CEA679FC1526B576F54E
+D1DFDD0E8ED5F2B1449A05501D0110DB989F62F815A30E84BCB0042A0FA14855
+77D07A326FA8F2B85E67E20935F9DF0068B107572BA80DCFFD90F922B79A85C9
+821363FF5AD881CF7C0212B2E6238B49813FEDCE319FC0FE40A42797235DFCA2
+0F1B939645B97D26A23CC5D1ED56CA253AA1E5C8E88E93C74F410835E3D5C2C9
+731649584619ECCBF3A50F95DD7EF36A8C1B5F63222863F0D8223CB787B88027
+54835558B8E4CD6FA1BD7E4024B6C7267C1266AE9E7D7CACD4448342BEDE1EA2
+717FD60DE846878BA67710AF4508F33E2D8D1827B7AD0A8C94531079BF2550BB
+87B73A3848857F32B5D7AF2CC07DF0590D6090B7D820D701E669ACA06BA8F194
+02672D01ECD7E2BD4E29FE18176D8317BF9523D2900B7CCACE98E9B46DEDE394
+0CB3B65538418147C93E77FADEB94B66FD048E47A0F1C3BC92A51633F83E68EE
+D239C0F2F5EB9EC68A048EB809B5B9F2DFE41F815CD33623CC2F6AA0C06C9F53
+ADF903E40B50945A7A288A016839EBA12CA78156F617ECF3BFC8AC106A0B1CD9
+9E2474C0DE1B88B5B18117CC68187DF5EF78C5B1AAE36D39946EEE1D931E704A
+9D0A315054F5362FDE90A0C04F159F93715B4082554A6FBBC03AC4C2BB6E3A33
+8563FB20B664A350BE0CED555FF8DCF2AEF4FADEE74A09522BC31CF7E4FFA014
+DCA45475437866FAD01AAC47DA6951197066B69E6E850D4076C0F8B3F04355B0
+E26711458BA45DA22AB577B6D71C8697816ACCDCA0C59E1BD92FA8C730D09863
+ACFA216600EEE43FC54E9BBBCB873C64D0C9FE41DDCC573AEDA8A699F780950E
+A63B8EA80A78E89724BC77DE5F7ED67FA860EE16D7E847FCFC198CFACF6FD4F5
+7A25146DD526769E6A4080E908C16F7CEB0EBEC4778A6A888414FD67BC2593FA
+6D0111E37BE74CA96748A43A7345622CEDA9D1DD5482E8119DBA73E73A35FA0D
+ADA16A14CDDB54D76DE1D407BB39C00AB23EA1CECAC9C4DBD64DB5AEC80AC9D7
+FAB6A1A3C4CA84F630A8D3A143A3490818A7BF0C8F16F6220BBEC2B8CCD528A3
+4A5F899039BB3E21B9554E3BD873E2C1DAE37F0700B43CD1939CE5D16773520E
+7A915895E74BB21222996FB5623FC6F077F44AAB49FD6E8B6AE3C8A9A93DA0C3
+445FCFA9EC73F98378C5B4EF3E67978B7FED5FED1EDA85BBD4D0108D3E059E63
+28E11EC677315B68DD63C517853C1A65967BF1B859A9203DBC2F03C4AF6A20AA
+E17C7103917CDB42303D88E4A1997B34201FCC208C941249624D039D069C2977
+B28AB8D215B245CC115024E3FD2ACB74184C8548DCE81F4D65D4CE268E360C03
+FB719F335050EFE6B13EAB0B9580437C6067F0251660588FB519409390F94326
+97C1C7A485E28C199DFB746BFD1CECE61C6F66D20946A54D9F05CC7F14BC7BE5
+9F0C229CD87F1A35D1AB547EBE307B0A5CB61F8E7661DFE503FF2EB3344EF7B1
+FED24165DAC30B5B6F39D1D1FA414A19E7FFEFCDF93808EDD4493AFDCA0BE31D
+03EC07BBF75FFF1654E5D3AA64DAA505454A499E398C2F53DCB93BF548451764
+3E4D7004D97DEA315CB51588F654CDF6FEABADA788D6DCABAC86E3DC9BB7E42B
+FBC1381C47277801E353B58400F9B9AA4DE2E1BF4E6433688C8569182F0F4568
+6D5E7931C695A5CC181A815B3D3252AFE7F25EAFCD8B07FB7B127731A25D951F
+51506723A896F8DA4027296D11DD4123FE93BCC81914409D2E6381F1F2840852
+4214BDD7C2671B85AB24BF24F895E67A91DF23E21C5663797F049467329F3DB0
+A74763B8C6458A5C9FF1157F9DD08C37351A6F074E1E5A05F9827AC15FFF4A68
+93E1D010E02D82B63C1661BBF9113D415052C4C5070E6542E5E07223745355F7
+3DD76EDECF1C5328A29473B07BDEB0D4223C5D3DAA6BF3E639C2FF860AADA0EF
+05A9BBEAABD8389112937B0F282A0D6C50A7CFFB0D214523EB8618583DF0EFBB
+D98086ABDF5EC23F57F1101E86AFFD2CE314B4240380C6FFBE4530E6576180C2
+3A3695E4D70DAC730C2057578AA0CF3E8E464500C0F2C7ADFADCB41E1DB62D83
+86DAD27D800C797B01D3A701C62A3A1D0E1C18D76CEE1AC9F581CC1C697A6E50
+62053E7EB21754BA9D9763654CD7FC08B53A12408A4CD4B99F4061C41FD06922
+ADCD8518DFA056B825A24965B576EF1DE31E3A4E2E54AEFBAFC8BDF5E833AE8C
+929405416A91A45AF0977E396ACE32C969C87FC93DEA7888A35B7C9E8ECCC350
+C9388F9953925A208E63514E9BCBDB99BD47D146DE4EEF08810C81DD6DC06EBB
+DC1F0035A6DA0D99F32696E8B4A226435376E26C0ADC8846D28C8B875BD03663
+73592B3FB5D5A0C927140F27B6CFC0FE2A8DBDC77CBEE70C0E2005EBBAFB8BD0
+5B24447CEC27AD4225DB0DC1CBBBE69AE423F9622A4A8BBD9466962FB54B64AE
+726060F18B3EC8D945009E8FB6C2ECA462758A78BE369F00AA4FB8534468F700
+A9376FB42130ED96EF9DA17B7B9589474D1427D0D8FF5152F6306527B12D4329
+3CF929105E04AF564DE552C4F06B466F16A8724945CDA9E098AB31A032CB2D05
+BBC3CD225A51D818A9695D6E32DA429E702632B32FECC25722652F67165695E6
+D9819D5B200EB3626FAE8FF7376DED2B1720CABD8AE2BC1A0A39B7BA427BCEFA
+936F934DC88685CAAC7DE19929C9F99984CA938BE0044FB341AED41B19F97F41
+2C31E2C4DB232FF90BC0D15F1991DB60E7E944D90F7FF591136E1F260D3764C8
+8BA791589D455192A19ECEB8A9E80FB5506A479EE444322C4E8E8FF0DD9BCB8F
+749C69C488E816625DF57EF673DB1A85BFB19D960461EA8E6718A1325D878D37
+FC7BC693F15D8A85AAF4C42216490BEA3D1638BE006CA2EC9D4DDEBE3C641754
+A78F6EB4B71D7517351A91A711CEE1FFC4FD57B0EF71E2959EAF82AB5494234D
+FAAB49B1EC4DA7A2F3657458CC1CF6229901C2AF5339E2E36F92197762A8E446
+5F8F9D24A57B80850DE4264FA9F23C947C35801C2B557CFF02B15637D5B9B059
+9994ACD938E826E4DAAF9581A63EE82995E793ADE573CB2B9628BD7B899A1C1F
+D437749137278A36B921206B70495E0DF379B7B7315FC02058EAC7F9128A3B4A
+30E20BCFEEE17A99CFC9795F193E4356AEF6DB94A7CAC8880FAC9227A0BF78D8
+B7BC18F6DAC8E5CBA63996CFD5E4F78461AFECE7EF62C585B5E5DD40789AEAD2
+597E24874B3BA77799D67DF746E70FC9DA4CCD9BF40F9897092352B3A12682E9
+4A5A92795C8B52E212FBE7323349E867ED8FE78B8B42325C6AD4BEC036BC891F
+0AFDCBDA2A75DB64EDD020A39A4AF0387B68D64BFED1C5FC11C58919C6FA0C96
+F617CA7860D5C10188376F31F1E323A95AB36138D4C8AEABFFF46CB6A3618ED2
+88C3BEC6184BDC2522388424FCAC44EC1DCF68E6B0A19B01A223BD7193EED9C3
+F5B838BE944E6C4CFEE7742EEFCCCF9F60EF632849E3306B990B2CA74B8F6AF3
+465A0BF22E1E59798302338B06682323B19C4E44FEFE84C0A210031F132E015E
+E74264B3B0DA6E09E116572E707C45FE7010C8D291BE49657248E416B4F244F6
+E557295AC3633C4B84B5638EDA1B2767D0FD770654C2667EBE9494B1DC28825E
+C12B1244900CF0F45EDD038BD90A98497250F897F1221A1733DBD4540D1B374F
+827C8C10FA84F5A1F6A4C921426BCD3EAFB1B8C654131F15B4BA3E8D489F00EA
+9BCECF58E9D15BFC1B16E4A08F0D5459D26559144278DD721DAC117E4C0F6EE3
+19930DF91DEDD9664287F11ADAD823DBAB597729C554DA905BC72A6686481108
+7FA7B78D41FFEDE9830955C6309749DE1ABD705BD346019D4ABC4C340C9A2A9D
+CA7D20D6CEB59E8B7836043C49D33C86469D27CA62851DBB00E6B8F4E28714C4
+B5F277CC2CFF502F0E47352F296EE242318D73197E754E4620A9B7DBD075C93E
+5225C68C47BAC50FCB58A6D33E1B55A39D131DBDD4E014C126DD320293BA9748
+4712E66FBBA2BA24BC8F4B1A285AA123F7B8146F4684CD922EBD333A7B493CE4
+F9C7BDE8FEC45429EC26DF8569130F0898C3D43F7CA90C210B103117911B27C1
+A14E0068595867748609ED646B5E08485E7467C36A528C738C1B7CFA362CA720
+C088CB808926A1D895DDFA944468AB702AA7F91D8A4BFA372E6D7640A8E24273
+75C1C8466DA13AC7BC57CC6ADAEC27CDCCB29BFA5473CED983B9E2EC94132E18
+6D77798D59EDAA1BA98A0618A1066374D655D55066BCF81FAB2E4511E1928ED7
+C77FB148D57D8EA24EE0720AB527AA3A76285B696FD2FF3546901E849A5B3802
+F21F7205C80F9A4A102DFE192C5C5A5403C6A8AE106C10746A550F7CDFC992DB
+E3A64BE4A2726AF22D403EAD6AC921F48D6535E9E850BEC1E5B0AC79AF04502A
+1FBD5043391104C6DD0B09CAA3654A7A21A52D6164FA2E7A4FDBE9CB328C3A53
+05406F4A2F45A1FD4B2CF998E94B7DAF2E3CB584A8AD83CB32844979EA560E0F
+6EB5215F705141320F1BAF1504E210D3690FBC58830BACA500624F7A7ED3EEA2
+789738814E197DAAF6DA815029368B28818561F044171ADDCB73B6DE459C3E9B
+64196B66F8A12A1BE100124EF86CAB8B7A10822DF4951766AF568D826E0B91E5
+E640EB8D3D8B188912C510D456231E46972B177019A807DA6AE89E76400E82B4
+EF3EC27BCD8F879A5A7A04BB4D5E290514EF7ED3A976A5B2D5B4F9359B283DE1
+1D7BFB356B3F3F02BB45FA93F0B442330A9AA29F8680260D1071BC27829EA312
+0ED69BFF2730E0F550F35CF2CF16AEC7D8CFDECE336F95789FA1C76B4C6BECB4
+D6400166ECB6FA2A44C587F15DD55F55A1F7FFD8F07CA99EDD2052218828B191
+D52CFD56538ECE62E946AF57C39CDAED30DE6FE58491181ED84E700092A061BC
+821B6A5C32A0F436DA74826E0790EBC7D55F14223DDA0234680D41A5BAC55EBD
+8D657911A3C10F9537AC9D3388EBBD5856F043A544AF4E60CA7243DA6D38BB28
+4646E77BF92BFA763150C7E4543E844B01097CEA61AF0CA802CD8055BEDD63C0
+6D91EE700452A400496DCAB0632DBC58C5285E8722F9BEB4860842B48B1D9FAE
+B266B6381548CA943B5EEF047A6805D99AF761A42AA6850CC458E1C147E3ACC4
+E41653EE36F6BF8C938DF808E8DF9220690A1E36BF5C7924DE8944C261955F25
+A7976C3FF10C79A10D8EACBEE51C00E961588131E35B08BD2B07962EF33769D8
+8A7FA9BA8EA90C38B846963030FB463511992396C25B4F83D6E6842BB7408064
+B979DF1E0A1C20719C8F9430C1F46B36DAD548471A37B4328DDA480F3274900C
+E33879F1C6AE71A76437DA0F6712297CE10B14552768C06315EB48500514BC14
+AD86EF94E5AE2390B6D9ABC097BF1A9CB666988EC3797A3464930867433F7F95
+D26D8DED9791F0C49EE8AEB9017CCBA02B4B68D639B58C864EAD6067B3D1FD22
+E989551D11DB9BF2A8D833391D25109F007D9E3F7ECDE5F21C64AAE0B0D4C4CC
+C511D9E7251286551308E976F1C69422457B9F6544A768188EC36C7964D158C5
+09ED5CF20C62955EEBFB0C4A851943CB1BEDEFC216A5F11051C9074C8971A13C
+59EF979D9C6C90E545E7569F16A202E0488548C6AAD14AA2D3F5C15E5807F39A
+00752DDE0B2537CEF6F67A921342CD30B85CD65841BA2B92156F2ABA110F9193
+1D8F5C3E7BC15D1F2A1B45FC37DA6EB07B9D77EC0C8F507F49599A3CFFA76C0F
+4EE4037576BE710FD8D22424899D80D389FF23B8760FFDCB88B5BBB17345D278
+42286B59AFC25036261678551AF7CB98432D66CB6C49E3ABE73B47B0568839B0
+9820B34D98B0B2312CE07F438A94F7DC4C5D50066AF6FC3399BB9D58AF4E4F7B
+8271B178FB44B6C9A286FF4925C920DBC35D5AF5E24B60C5637C4D1343312EE2
+FA5625B6AD5ED764EA7D670761365EFDB46FB8153E23072885C3225ED394EFAE
+6B319D543ABA7005821D8B857D06235F83FED9697FDB48074BE3E797D96811F0
+10BC6392B1B9D4A896B3993C0A77E94B57CBBE264C12463687BCEAE30C575B1E
+16DE09B2D92E58155BC5AF9339C62F48DC0C66831B7F519B236A7F1AD6E2EF6C
+7216A0304F415B8C95E46AC28A0C2EED00A5E22B193338BA67F78735D8C26F7A
+994D25DD5FBD72BD3B1DCA1E2B0F7151439313824FA3811C01FEDE345439CC7D
+604ED31A684426939CB3F2B9DB05D509A7B0EAAB0583662991FC3ADB4C50A515
+3B881A40DB960A9D6226C4B8BE7DE1CE38363BBF3537A68E269787913EF43FE0
+AEFBCFA0C199AD0337F48564CCA04DBB0442A4C8BC13B0072BE782817F59C8D7
+4A052705029F8986F888C498825819171C12E4CD2A33BEF7FAFC3447FB5CE42B
+B3BC34F3F2B61E0E43048E32522CE84FBFD8B7E36F9C83320D5C8692AED52588
+A2359603E13A2F2E43B310D433B83713F94D77557C9C8EFBA9B5E5419B75BE5C
+25E87490EFF8A2C54734079826AC3CC2B77B982F3D11141FEA98B417603EFE94
+240F453DD6E62737EFCD0A104ED9009B009C4A62A2188A7FAAA0778F36E3CC25
+D3E6D192B338E69B6C6A63ECB42EB981B08D2B65646EBF09DBCE03940135D76A
+E22D04BA3C8293534A9BEC2969B54A12B346AD976FACA36C07376C9A8F2A198E
+BF0BE85F63EE43845F761274E0D9CB7531C451516EF085BDF6A02833E38B8B87
+D141D8C9F39F6F032880A6E39022707C2D318613A800E1F5A312B300115EF120
+744D58CFF4C7BD46757945D541C1349225F2C0BB4ED39A2457B7D8E3DBE1C5D1
+D150794D5EB2081B8F4C13F73ED220A7FCF5E2DAB5CD77926FB66CE3063A21DB
+1B76BDC2C8B2AA374B9F362404AA707E3E4751848540E83B712DEA3423FE49B6
+0AE4D96AAFCB9D6198918EF460E585BBC2A37B3318643CECF4D3F865E14692D9
+74267716BA6CC117B13CF185717F6FA0C8602041CE79E696CCA1FECA4AA4CD31
+A06916B369B7FAEA1F66AE081DF3D44236F012C557C8076772576CB116783153
+C2DEAB8CD542F0B08C75E00AC57C816B372E20C2660374BF09AC498FB3AC9A3E
+1BE52953FA41686599DC7213845478725D54DA531A0375CEC8BA1827C27DBAFD
+6555A364CD1AEDA1A5DB57
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 77 /M put
+dup 86 /V put
+dup 97 /a put
+dup 101 /e put
+dup 105 /i put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 115 /s put
+dup 121 /y put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
+59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
+51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
+DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
+AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
+45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
+821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
+96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
+9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
+26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
+140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
+1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
+1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
+377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A
+0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03
+5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4
+ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15
+FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEBFCF38BC60
+5BF06A0E01053B7F105ED5140FA4FA37A4F45ABFB58DD41780629C7FA7594F8E
+9488B074D45BA0E761190A94DBFF4CF204D5812EB1DFBC0C456D6A044C558945
+8DF6D6AF8A51131AB5913EF2544E475F489FE776FA45E7C0EB62096CF4517450
+8A57DD2B80EF97DBD17036EB9B73FCB82DC4F671BCFEF06A6F86189A2012F53C
+E518466A9385D08942279391EF5C2B3567F2E53B2148AAA0625BDB358ECD2C9B
+730A59F8DF70FD3E09378E24AEE772A69C96E09C0D0703350A75F3843DEDD822
+B364988376CE8027EF12F0453575AE9AE46296E13925BACECA8B8808DA388222
+BA35B431F56BC3C349B8CA6D4AB83664A991FED51478BFE25B0399B54EF27B18
+65E2E39E57DFC5F57371FB4643D7EC0AD41840CA7C682EE7A1B4FE3E06E40238
+B07A2E7A7FB3F35502F1CCA283F9420F2FAB9EC0A8C8982BF4AFE69A3D2690B3
+CF5DB716B3CB9936C49A12944973F14C2D9A368E4067BDBF91E413A3321B3BFA
+B84463D3C680604A4C4E4B49D0F9F9B59D5B68ECD3891FEEDE9B29B9C432212D
+82505A8D423BA734A53DEB930A392BA6011C6EA6EBA7ABAA6AAC003721FB34A6
+1544EEE16F6AD73E6C5743EFF09975C186A9C769A4732F78AA09218AE576FB14
+70E1697B813AC1B09FFAB762678BA9320043C256766AF1BACD3702CED1228B94
+57E353589810F99AF74109EFDA0740CB0475DE7870AA7218120462B23441BB1A
+60ACAF3B8B171E7509854D1C05C8FBF62979D2B52030B4C91F9D038EF26F2C11
+346D0E9955B491C3168E030B9CCE2964883B824F0DCF27EECA6C6E0478CF6B36
+AF2D33C9265A5F8D76FCC46AA30E6093E3822CE70C1ED22CDB8A8F910F5BCF45
+2C9D2D41B342B43DB5FE5EFCFEB5D378F78684296CAED9A39FC3834929073B6E
+A934014457B89A61253E0924D3C6BB4FE4ADFBD0C9B3C61D08E3DB2B26785A1D
+3B5E0E23258AE12276B63E9D79B2EAB305B8108A0987216C0EBF033A839BF611
+CB208A9B3B26699B201DD3662676B77C66EAFD20FAEB3021619FC123433D1CAE
+53B0EDF00827F374A95DA1E89A01226DB951EC0F09366357A5A86C4DA2AD2A5A
+0CCCB8304C4CDB9CDBA1068E98B2CCD4671E960ED12921F7B41100ABD48768C1
+BD5863591593D6ED9E604857B67D08C0CBE36A2E3D2EF5A9451345693A2F2FC1
+617F954916295D06A6A0805CA62EF2DAB67BC449674B238CCFAB92D628617FDB
+9B3BA7FEE1FF29E7BB9CD5FEAB8F27E592B511CCFF9FDF4271CEF44F73CAA97A
+30DDA0FE944A6C4B23D82797C4D2B53BE303031FC99A32D20F03D840E42BD088
+143E95C4E0CDA56BF86846A476E84C1ACC34A64C3A1EBC0A2B53380DEAB37DAB
+692D21B1C485FD1D08080F8F3909C512F013BC14572FF66CF1ED026E2E81B3D9
+091D0C7196E99F937B4C2FB4719E8ACE48810BFAC898677969B176250A019DA8
+27BE209FCC3A0CD35219C47CC18E771C0A8E49B03CF3DD19F4118287DBC7C4A2
+2B23D2250E0C97C4C6EF38AF4960BB4E8963DBC38A11ACE3B46E1A3A36799FAE
+3D53A874A1323CFBFF769064B7698CD5289E648D1B3968A48452362C9806DEA7
+D51B4C18267A88BE072D1C05B697417503C36206260DAFC1E4B989FDEA80FE19
+196EBF09046E43DD0138B1DFF846C34C7F14A126675BE530B671D23F3D5B4EF9
+9DE0484411942D59073707193132040B3786C02AF197A9520EF649BC55EAAFE1
+3F974A85D1FCA84BFE5B214F555C7F5F939977945559616160776D4369DBEE13
+0486617F2E364E8846175E02FE51D16728C08342DC1D8BC09C69A769E7165954
+A609FFD0174EA5236FE01BA8EF1BA4F43020C81683F9D83C7460A6B73650D81F
+840A5085455A0CBBD4C148F065433693096FA50A32823F9E9CFE73921FE7A89B
+4465255C2DE2722F176A410C0ABEC6619B7E5E2877B5F71DD65E1D83FD3AEBF1
+174CDEF7792366D9D8F965D7B894514552C8689AD98C3D47A5BDF0B62BE36A5E
+EC4FED48090B02FADADE831409D8A12BF26C59DCED4FAB2D855B0AADE1E1E92D
+7C12F644051C522C64DDC7D78663241BCD0077D29498143804A43C8D239B8240
+D27B1DC8264A08A7FD490BDB994C5F76175297570508141E3CA66C464E803F35
+3E203A80B56E0EF34C6CF7DF41E926F0B1C65C963E2EEFF7223D0F23C6637662
+8AD35E5E3DC3916E386945DE7F9459DEB136996E1DCD2C52EACD7EA23FEBD7FB
+B2EE5067521FB56F7AB6A3DD411866A469FE6BAED525316A9E397096CCD9AD60
+227ED9887B9E199242512AE8A30ADB1647CA80A3DAF4F37367EE3A2D6E10B10F
+20B04AADE3FB78AC92BDEFED7C7FEC071596FF33D00B9DF125BFD3E1A23F3E28
+06B1FB28E40FD8B9F7F56326F61D6F0ACC6B5BB5075FE00BF27D077531C87910
+7AC03290749574181B95B7968C79076CB25308FEC5F1D2E2D5EEE5EA026F841A
+E1D347FA7149FAB5C64EF67A2A17C885D51C665DE67793C9E0E025A9AEC6C958
+EFBDD6E9C13CDF596CC58E28E284F6FE9700505C5B0F5D85501EB8C8668AF610
+5FF15864D7DA8F3A06CBEA58045321141099EF4FB952F9EF8848AF3A722646A8
+74336EF9927DC3451C787C2760E768DF4AD19EF9FCC27057C4602193DA5CBAF6
+404BE06ED2FF9DE5FDE00A9F2488A4FC0CAB5CE4A5C7767BAC50F2C84ADB20A6
+D0DB2AC57A490F7D0290664FC560202C2DBB5911BE6018945FC455FCA992F301
+C93F454A189878A215CEB421930E0CA6BC0C48CD297980CBAF9283B8D973078C
+D40886E0C31CB1F44C36BFAC44CEA466011B72BC301552153893ABB2D2CB11B8
+AA14FB14B20E897D2A04D4B0643558B9247B8C9304286C4C26E8375258639E55
+8B004CD7B7CCE046DC730087543B0237A363C7A6B9A6D3CAB81310E2557CC57A
+D43F163D5D81ADB9EB797C88E685E0E11C88400E3B0106DB9B8637B361A4FE44
+B911AAE93675C201493B5F2B24FA53A5D40E2CB99727AEE3740A620531C377CC
+C9BF247FA8551E1B7AB95BA669C7EB321FE9950998496ECD49EB4131E352D217
+826587C051273B13878588F410EBB4C02820B8ECBA8FB7C860998B57FABE9C1F
+816B32CE914F150EBCDF989A257F79F76F3603C9F891C2349909C87BF56EC7E7
+E7017616EDCEBE98B60C0F678D3B0F1DC838FF0A543E6A094F82A15EAA55987C
+2A261E4CA71933EC92CBBCBB0E3F560659B6C3E402EBAF480B509892EC9242B6
+BFB23B9F70902A2AB6CCFED2E8FCA63DBC53244116C7612A94F198F36BA097C2
+7B63D740677C4B229AEF0256E6860F15FB800E60B522F9E70B0455D9C1871F22
+BDB77851B3885608E4FB1A8F830159DA098DE17C0EC61E54822DC61E21CD6C3B
+288884430EE3017B35E742553AD08A264B38A42F3EFA5A709AB46563FF56CBF8
+73909325C6AF397E9524997CFBFA89376D9997D8EA7009A7D4433A73FFC98D13
+DBEDB05B41908A6D74CE3E28F5ECA3D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (fitsio.dvi)
+@start /Fa 193[71 62[{}1 90.9091 /CMMI10 rf /Fb 133[50
+59 59 81 59 62 44 44 46 1[62 56 62 93 31 59 1[31 62 56
+34 51 62 50 62 54 9[116 85 86 78 62 84 1[77 84 88 106
+67 88 1[42 88 88 70 74 86 81 80 85 6[31 1[56 56 56 56
+56 56 56 56 1[56 31 37 32[62 12[{}58 99.6264 /CMBX12
+rf /Fc 149[25 2[45 45 86[45 15[{}4 90.9091 /CMSY10 rf
+/Fd 133[60 71 71 97 71 75 52 53 55 1[75 67 75 112 37
+71 1[37 75 67 41 61 75 60 75 65 9[139 102 103 94 75 100
+1[92 101 105 128 81 105 1[50 105 106 85 88 103 97 96
+102 6[37 67 67 67 67 67 67 67 67 67 67 67 37 45 3[52
+52 27[75 78 11[{}63 119.552 /CMBX12 rf /Fe 129[48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 33[{}93 90.9091 /CMTT10 rf /Ff 139[75 1[79 1[108
+7[108 2[88 3[94 29[140 9[97 97 97 97 97 97 97 97 97 97
+48[{}17 172.188 /CMBX12 rf /Fg 165[56 68 68 93 68 68
+66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 69 66 64
+68 6[25 45 45 45 45 45 45 45 45 45 45 45 25 30 45[{}38
+90.9091 /CMSL10 rf /Fh 134[55 55 1[55 58 41 41 43 1[58
+52 58 87 29 2[29 58 52 32 48 58 46 58 51 11[80 73 58
+78 1[71 79 82 4[40 1[82 66 69 80 76 74 79 7[52 52 52
+52 52 52 52 52 52 52 52 1[35 32[58 12[{}49 90.9091 /CMBX10
+rf /Fi 132[45 40 48 48 66 48 51 35 36 36 48 51 45 51
+76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25
+56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33
+68 71 59 62 69 66 64 68 71 43 43 71 25 25 25 45 45 45
+45 45 45 45 45 45 45 45 25 30 25 71 45 35 35 25 71 76
+45 76 45 25 18[76 51 51 53 11[{}93 90.9091 /CMR10 rf
+/Fj 134[62 5[46 46 2[59 65 4[33 3[52 3[59 10[88 8[107
+25[59 59 59 59 1[33 46[{}15 119.552 /CMR12 rf /Fk 138[90
+63 64 66 2[81 90 134 45 2[45 1[81 49 74 1[72 90 78 12[112
+90 2[110 6[60 2[101 4[122 65[{}21 143.462 /CMBX12 rf
+/Fl 134[123 123 1[123 129 90 92 95 1[129 116 129 194
+65 2[65 129 116 71 106 129 103 129 113 11[179 162 129
+173 1[159 175 182 4[87 1[183 146 153 178 168 165 175
+17[116 1[77 5[65 26[129 12[{}40 206.559 /CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 861 1940 a Fl(FITSIO)76 b(User's)g(Guide)356
+2399 y Fk(A)54 b(Subroutine)d(In)l(terface)i(to)g(FITS)h(F)-13
+b(ormat)54 b(Files)1055 2659 y(for)g(F)-13 b(ortran)53
+b(Programmers)1667 3155 y Fj(V)-10 b(ersion)38 b(3.0)1727
+4058 y Fi(HEASAR)m(C)1764 4170 y(Co)s(de)30 b(662)1363
+4283 y(Go)s(ddard)f(Space)i(Fligh)m(t)h(Cen)m(ter)1522
+4396 y(Green)m(b)s(elt,)f(MD)h(20771)1857 4509 y(USA)1701
+5298 y Fj(Ma)m(y)39 b(2011)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 0 299 a Fi(ii)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 0 1267 a Fl(Con)-6 b(ten)g(ts)0
+1858 y Fh(1)84 b(In)m(tro)s(duction)3136 b(1)0 2118 y(2)119
+b(Creating)34 b(FITSIO/CFITSIO)2405 b(3)136 2280 y Fi(2.1)94
+b(Building)31 b(the)f(Library)58 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(3)136 2442
+y(2.2)94 b(T)-8 b(esting)32 b(the)e(Library)j(.)46 b(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(6)136 2604 y(2.3)94 b(Linking)31 b(Programs)f(with)g(FITSIO)40
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(8)136 2766 y(2.4)94 b(Getting)32 b(Started)f(with)f(FITSIO)55
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(8)136 2928 y(2.5)94 b(Example)31 b(Program)86 b(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)131 b(8)136 3090 y(2.6)94 b(Legal)32 b(Stu\013)92
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)136 3252 y(2.7)94
+b(Ac)m(kno)m(wledgmen)m(ts)30 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0
+3511 y Fh(3)119 b(A)35 b(FITS)f(Primer)2918 b(13)0 3771
+y(4)84 b(FITSIO)34 b(Con)m(v)m(en)m(tions)h(and)g(Guidelines)1993
+b(15)136 3933 y Fi(4.1)94 b(CFITSIO)29 b(Size)i(Limitations)42
+b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(15)136 4095 y(4.2)94 b(Multiple)32 b(Access)f(to)g(the)g(Same)f(FITS)
+g(File)h(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(16)136
+4257 y(4.3)94 b(Curren)m(t)30 b(Header)h(Data)h(Unit)e(\(CHDU\))87
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(16)136 4419
+y(4.4)94 b(Subroutine)29 b(Names)79 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(16)136
+4581 y(4.5)94 b(Subroutine)29 b(F)-8 b(amilies)33 b(and)c(Datat)m(yp)s
+(es)44 b(.)i(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(17)136
+4742 y(4.6)94 b(Implicit)31 b(Data)h(T)m(yp)s(e)e(Con)m(v)m(ersion)65
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(17)136 4904 y(4.7)94 b(Data)32 b(Scaling)89 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(18)136 5066 y(4.8)94 b(Error)30
+b(Status)g(V)-8 b(alues)32 b(and)d(the)i(Error)e(Message)j(Stac)m(k)44
+b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)85 b(18)136 5228 y(4.9)94 b(V)-8 b(ariable-Length)33
+b(Arra)m(y)d(F)-8 b(acilit)m(y)34 b(in)c(Binary)g(T)-8
+b(ables)26 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(19)136 5390 y(4.10)49
+b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)g(V)-8 b(alues)68
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(20)136
+5552 y(4.11)49 b(When)31 b(the)f(Final)h(Size)g(of)g(the)f(FITS)g(HDU)h
+(is)f(Unkno)m(wn)k(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)136 5714 y(4.12)49
+b(Lo)s(cal)32 b(FITS)d(Con)m(v)m(en)m(tions)j(supp)s(orted)c(b)m(y)j
+(FITSIO)72 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)1912 5942 y(iii)p
+eop end
+%%Page: 4 4
+TeXDict begin 4 3 bop 0 299 a Fi(iv)3311 b Fg(CONTENTS)345
+555 y Fi(4.12.1)61 b(Supp)s(ort)29 b(for)h(Long)g(String)g(Keyw)m(ord)g
+(V)-8 b(alues.)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(21)345 716 y(4.12.2)61
+b(Arra)m(ys)31 b(of)f(Fixed-Length)h(Strings)f(in)g(Binary)h(T)-8
+b(ables)70 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(22)345 876 y(4.12.3)61 b(Keyw)m(ord)30 b(Units)h(Strings)i
+(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(23)345 1037 y(4.12.4)61 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)h(for)
+e(Extended)g(Keyw)m(ord)g(Names)83 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)85 b(23)136 1197 y(4.13)49 b(Optimizing)31
+b(Co)s(de)f(for)g(Maxim)m(um)h(Pro)s(cessing)g(Sp)s(eed)44
+b(.)i(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)85 b(24)345 1358 y(4.13.1)61 b(Bac)m(kground)31
+b(Information:)41 b(Ho)m(w)31 b(CFITSIO)e(Manages)j(Data)g(I/O)91
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)345 1518
+y(4.13.2)61 b(Optimization)32 b(Strategies)69 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)0
+1771 y Fh(5)119 b(Basic)36 b(In)m(terface)e(Routines)2504
+b(29)136 1931 y Fi(5.1)94 b(FITSIO)30 b(Error)f(Status)h(Routines)84
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(29)136 2092 y(5.2)94 b(File)32 b(I/O)e(Routines)e(.)46
+b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)f(.)85 b(30)136 2252 y(5.3)94 b(Keyw)m(ord)31 b(I/O)f(Routines)36
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(32)136 2412 y(5.4)94 b(Data)32 b(I/O)f(Routines)53
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)85 b(33)0 2665 y Fh(6)119 b(Adv)-6 b(anced)36
+b(In)m(terface)e(Subroutines)2159 b(35)136 2826 y Fi(6.1)94
+b(FITS)30 b(File)i(Op)s(en)d(and)g(Close)i(Subroutines:)76
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(35)136 2986 y(6.2)94
+b(HDU-Lev)m(el)33 b(Op)s(erations)108 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(38)136 3146
+y(6.3)94 b(De\014ne)31 b(or)f(Rede\014ne)g(the)h(structure)f(of)g(the)h
+(CHDU)99 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(41)136 3307 y(6.4)94
+b(FITS)30 b(Header)h(I/O)f(Subroutines)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(43)345 3467 y(6.4.1)106
+b(Header)31 b(Space)g(and)f(P)m(osition)h(Routines)60
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(43)345 3628 y(6.4.2)106
+b(Read)31 b(or)f(W)-8 b(rite)32 b(Standard)d(Header)i(Routines)67
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)85 b(43)345 3788 y(6.4.3)106 b(W)-8 b(rite)32
+b(Keyw)m(ord)e(Subroutines)116 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+85 b(45)345 3949 y(6.4.4)106 b(Insert)30 b(Keyw)m(ord)g(Subroutines)108
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(47)345 4109
+y(6.4.5)106 b(Read)31 b(Keyw)m(ord)f(Subroutines)64 b(.)46
+b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(47)345 4270
+y(6.4.6)106 b(Mo)s(dify)30 b(Keyw)m(ord)h(Subroutines)55
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(49)345 4430
+y(6.4.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Subroutines)116
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(50)345 4591
+y(6.4.8)106 b(Delete)33 b(Keyw)m(ord)d(Subroutines)87
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(50)136 4751
+y(6.5)94 b(Data)32 b(Scaling)g(and)d(Unde\014ned)g(Pixel)i(P)m
+(arameters)113 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(51)136 4912 y(6.6)94
+b(FITS)30 b(Primary)g(Arra)m(y)h(or)f(IMA)m(GE)h(Extension)g(I/O)f
+(Subroutines)117 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(52)136 5072 y(6.7)94 b(FITS)30 b(ASCI)s(I)f(and)h(Binary)g(T)-8
+b(able)31 b(Data)h(I/O)e(Subroutines)d(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(55)345
+5232 y(6.7.1)106 b(Column)30 b(Information)g(Subroutines)121
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(55)345 5393 y(6.7.2)106
+b(Lo)m(w-Lev)m(el)33 b(T)-8 b(able)31 b(Access)g(Subroutines)60
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(58)345 5553 y(6.7.3)106
+b(Edit)31 b(Ro)m(ws)f(or)h(Columns)106 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)85 b(58)345 5714 y(6.7.4)106 b(Read)31
+b(and)f(W)-8 b(rite)31 b(Column)f(Data)i(Routines)66
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(60)p eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop 0 299 a Fg(CONTENTS)3334 b Fi(v)136
+555 y(6.8)94 b(Ro)m(w)31 b(Selection)h(and)e(Calculator)i(Routines)95
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(64)136 717 y(6.9)94
+b(Celestial)33 b(Co)s(ordinate)d(System)g(Subroutines)98
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(65)136 879 y(6.10)49
+b(File)32 b(Chec)m(ksum)e(Subroutines)75 b(.)45 b(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(67)136 1041 y(6.11)80
+b(Date)32 b(and)d(Time)i(Utilit)m(y)h(Routines)69 b(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(68)136
+1204 y(6.12)49 b(General)32 b(Utilit)m(y)g(Subroutines)61
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(69)0 1464 y Fh(7)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9
+b(unction)2154 b(75)0 1725 y(8)119 b(Extended)35 b(File)f(Name)h(Syn)m
+(tax)2330 b(77)136 1887 y Fi(8.1)94 b(Ov)m(erview)84
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(77)136 2049 y(8.2)94
+b(Filet)m(yp)s(e)62 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(80)345 2211 y(8.2.1)106 b(Notes)32 b(ab)s(out)e(HTTP)g(pro)m(xy)g
+(serv)m(ers)k(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(80)345
+2373 y(8.2.2)106 b(Notes)32 b(ab)s(out)e(the)h(stream)f(\014let)m(yp)s
+(e)h(driv)m(er)54 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(81)345 2536
+y(8.2.3)106 b(Notes)32 b(ab)s(out)e(the)h(gsiftp)f(\014let)m(yp)s(e)83
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(82)345 2698
+y(8.2.4)106 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f(\014let)m(yp)s(e)68
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(82)345 2860
+y(8.2.5)106 b(Notes)32 b(ab)s(out)e(the)h(shmem)e(\014let)m(yp)s(e:)70
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136 3022 y(8.3)94
+b(Base)32 b(Filename)90 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(84)136
+3184 y(8.4)94 b(Output)30 b(File)h(Name)g(when)f(Op)s(ening)f(an)h
+(Existing)h(File)81 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(86)136 3346 y(8.5)94
+b(T)-8 b(emplate)32 b(File)g(Name)f(when)e(Creating)i(a)g(New)f(File)57
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(88)136 3508 y(8.6)94 b(Image)32
+b(Tile-Compression)e(Sp)s(eci\014cation)91 b(.)45 b(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)f(.)85 b(88)136 3670 y(8.7)94 b(HDU)32 b(Lo)s(cation)f(Sp)s
+(eci\014cation)47 b(.)e(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)85 b(88)136 3832 y(8.8)94 b(Image)32 b(Section)39
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)85 b(89)136 3994 y(8.9)94 b(Image)32
+b(T)-8 b(ransform)29 b(Filters)54 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(90)136 4156 y(8.10)49
+b(Column)30 b(and)g(Keyw)m(ord)g(Filtering)h(Sp)s(eci\014cation)91
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)85 b(92)136 4318 y(8.11)49 b(Ro)m(w)31
+b(Filtering)h(Sp)s(eci\014cation)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(94)345 4481 y(8.11.1)61
+b(General)32 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(94)345 4643 y(8.11.2)61
+b(Bit)32 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(97)345 4805 y(8.11.3)61
+b(V)-8 b(ector)32 b(Columns)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(98)345 4967 y(8.11.4)61
+b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)62
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(99)345 5129
+y(8.11.5)61 b(Spatial)31 b(Region)h(Filtering)59 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(100)345
+5291 y(8.11.6)61 b(Example)31 b(Ro)m(w)g(Filters)h(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(103)136 5453 y(8.12)80 b(Binning)30 b(or)g(Histogramming)i(Sp)s
+(eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(104)0
+5714 y Fh(9)84 b(T)-9 b(emplate)35 b(Files)2933 b(107)p
+eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 0 299 a Fi(vi)3311 b Fg(CONTENTS)136
+555 y Fi(9.1)94 b(Detailed)33 b(T)-8 b(emplate)31 b(Line)g(F)-8
+b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(107)136 715 y(9.2)94 b(Auto-indexing)31 b(of)g(Keyw)m(ords)73
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(108)136 876 y(9.3)94 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m(es)
+87 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(109)136 1036 y(9.4)94 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32
+b(Syn)m(tax)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)40 b(109)136 1196 y(9.5)94 b(Errors)63 b(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(110)136 1356 y(9.6)94
+b(Examples)72 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(110)0
+1607 y Fh(10)67 b(Summary)36 b(of)f(all)f(FITSIO)g(User-In)m(terface)h
+(Subroutines)1215 b(113)0 1858 y(11)67 b(P)m(arameter)35
+b(De\014nitions)2563 b(121)0 2109 y(12)67 b(FITSIO)33
+b(Error)i(Status)g(Co)s(des)2295 b(127)p eop end
+%%Page: 1 7
+TeXDict begin 1 6 bop 0 1225 a Ff(Chapter)65 b(1)0 1687
+y Fl(In)-6 b(tro)6 b(duction)0 2180 y Fi(This)33 b(do)s(cumen)m(t)i
+(describ)s(es)e(the)h(F)-8 b(ortran-callable)38 b(subroutine)33
+b(in)m(terface)j(that)f(is)f(pro)m(vided)g(as)g(part)g(of)h(the)0
+2293 y(CFITSIO)f(library)h(\(whic)m(h)h(is)g(written)g(in)f(ANSI)g
+(C\).)h(This)f(is)h(a)g(companion)g(do)s(cumen)m(t)f(to)i(the)e
+(CFITSIO)0 2406 y(User's)k(Guide)f(whic)m(h)h(should)e(b)s(e)h
+(consulted)h(for)f(further)g(information)h(ab)s(out)f(the)h(underlying)
+e(CFITSIO)0 2518 y(library)-8 b(.)50 b(In)32 b(the)i(remainder)f(of)g
+(this)h(do)s(cumen)m(t,)g(the)g(terms)f(FITSIO)f(and)h(CFITSIO)f(are)i
+(in)m(terc)m(hangeable)0 2631 y(and)c(refer)g(to)h(the)g(same)f
+(library)-8 b(.)0 2791 y(FITSIO/CFITSIO)31 b(is)j(a)f(mac)m(hine-indep)
+s(enden)m(t)g(library)g(of)h(routines)f(for)g(reading)h(and)f(writing)g
+(data)h(\014les)0 2904 y(in)c(the)g(FITS)g(\(Flexible)i(Image)f(T)-8
+b(ransp)s(ort)29 b(System\))h(data)h(format.)41 b(It)31
+b(can)f(also)h(read)g(IRAF)f(format)h(image)0 3017 y(\014les)40
+b(and)e(ra)m(w)i(binary)f(data)h(arra)m(ys)g(b)m(y)g(con)m(v)m(erting)h
+(them)e(on)h(the)g(\015y)f(in)m(to)h(a)g(virtual)g(FITS)f(format)h
+(\014le.)0 3130 y(This)32 b(library)h(w)m(as)g(written)g(to)h(pro)m
+(vide)f(a)h(p)s(o)m(w)m(erful)f(y)m(et)h(simple)f(in)m(terface)h(for)f
+(accessing)i(FITS)d(\014les)h(whic)m(h)0 3243 y(will)j(run)e(on)h(most)
+h(commonly)g(used)e(computers)h(and)g(w)m(orkstations.)57
+b(FITSIO)34 b(supp)s(orts)g(all)i(the)g(features)0 3356
+y(describ)s(ed)21 b(in)i(the)f(o\016cial)i(NOST)e(de\014nition)g(of)h
+(the)f(FITS)g(format)h(and)f(can)h(read)f(and)g(write)h(all)g(the)g
+(curren)m(tly)0 3469 y(de\014ned)40 b(t)m(yp)s(es)h(of)g(extensions,)j
+(including)d(ASCI)s(I)e(tables)j(\(T)-8 b(ABLE\),)42
+b(Binary)f(tables)h(\(BINT)-8 b(ABLE\))43 b(and)0 3582
+y(IMA)m(GE)36 b(extensions.)56 b(The)34 b(FITSIO)g(subroutines)g
+(insulate)i(the)f(programmer)g(from)g(ha)m(ving)h(to)g(deal)f(with)0
+3695 y(the)25 b(complicated)h(formatting)g(details)f(in)f(the)h(FITS)f
+(\014le,)i(ho)m(w)m(ev)m(er,)i(it)d(is)f(assumed)g(that)h(users)f(ha)m
+(v)m(e)i(a)f(general)0 3808 y(kno)m(wledge)31 b(ab)s(out)f(the)h
+(structure)f(and)g(usage)h(of)f(FITS)g(\014les.)0 3968
+y(The)20 b(CFITSIO)f(pac)m(k)-5 b(age)23 b(w)m(as)e(initially)i(dev)m
+(elop)s(ed)e(b)m(y)f(the)h(HEASAR)m(C)g(\(High)h(Energy)e(Astroph)m
+(ysics)h(Science)0 4081 y(Arc)m(hiv)m(e)35 b(Researc)m(h)g(Cen)m(ter\))
+f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j(Fligh)m(t)g(Cen)m(ter)f(to)h
+(con)m(v)m(ert)g(v)-5 b(arious)34 b(existing)0 4194 y(and)25
+b(newly)h(acquired)g(astronomical)i(data)e(sets)h(in)m(to)g(FITS)e
+(format)h(and)f(to)i(further)e(analyze)i(data)g(already)f(in)0
+4307 y(FITS)h(format.)41 b(New)28 b(features)g(con)m(tin)m(ue)h(to)g(b)
+s(e)e(added)h(to)g(CFITSIO)f(in)g(large)i(part)f(due)g(to)g(con)m
+(tributions)h(of)0 4419 y(ideas)k(or)g(actual)h(co)s(de)f(from)f(users)
+g(of)h(the)g(pac)m(k)-5 b(age.)49 b(The)33 b(In)m(tegral)h(Science)f
+(Data)h(Cen)m(ter)f(in)g(Switzerland,)0 4532 y(and)g(the)g(XMM/ESTEC)h
+(pro)5 b(ject)34 b(in)f(The)g(Netherlands)g(made)g(esp)s(ecially)i
+(signi\014can)m(t)f(con)m(tributions)g(that)0 4645 y(resulted)c(in)g
+(man)m(y)h(of)f(the)h(new)f(features)g(that)h(app)s(eared)f(in)g(v2.0)i
+(of)e(CFITSIO.)0 4805 y(The)22 b(latest)i(v)m(ersion)f(of)g(the)f
+(CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21
+b(example)j(programs)e(are)h(a)m(v)-5 b(ailable)0 4918
+y(on)30 b(the)h(W)-8 b(orld-Wide)32 b(W)-8 b(eb)31 b(or)f(via)h(anon)m
+(ymous)f(ftp)g(from:)382 5178 y Fe(http://heasarc.gsfc.nasa)o(.go)o
+(v/fi)o(tsio)382 5291 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o
+(/fi)o(tsio)o(/c)1927 5942 y Fi(1)p eop end
+%%Page: 2 8
+TeXDict begin 2 7 bop 0 299 a Fi(2)2452 b Fg(CHAPTER)30
+b(1.)71 b(INTR)m(ODUCTION)0 555 y Fi(An)m(y)28 b(questions,)g(bug)f
+(rep)s(orts,)h(or)f(suggested)i(enhancemen)m(ts)f(related)g(to)h(the)e
+(CFITSIO)f(pac)m(k)-5 b(age)30 b(should)d(b)s(e)0 668
+y(sen)m(t)k(to)g(the)g(primary)e(author:)382 928 y Fe(Dr.)47
+b(William)f(Pence)810 b(Telephone:)92 b(\(301\))47 b(286-4599)382
+1041 y(HEASARC,)e(Code)i(662)811 b(E-mail:)45 b
+(William.D.Pence@nasa.gov)382 1154 y(NASA/Goddard)f(Space)j(Flight)f
+(Center)382 1267 y(Greenbelt,)f(MD)i(20771,)f(USA)0 1526
+y Fi(This)40 b(User's)i(Guide)f(assumes)g(that)h(readers)f(already)g
+(ha)m(v)m(e)i(a)f(general)g(understanding)d(of)j(the)f(de\014nition)0
+1639 y(and)31 b(structure)g(of)h(FITS)e(format)i(\014les.)44
+b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f(formats)g(is)h(a)m
+(v)-5 b(ailable)34 b(from)d(the)0 1752 y(FITS)h(Supp)s(ort)f(O\016ce)i
+(at)g Fe(http://fits.gsfc.nasa.gov)o Fi(.)42 b(In)32
+b(particular,)i(the)f('NOST)f(FITS)g(Standard')0 1865
+y(giv)m(es)j(the)g(authoritativ)m(e)h(de\014nition)e(of)g(the)g(FITS)g
+(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')g(pro)m(vides)0
+1978 y(additional)d(historical)h(bac)m(kground)e(and)g(practical)i
+(advice)f(on)f(using)g(FITS)g(\014les.)0 2138 y(CFITSIO)j(users)g(ma)m
+(y)h(also)h(b)s(e)f(in)m(terested)h(in)f(the)g(FTOOLS)f(pac)m(k)-5
+b(age)36 b(of)e(programs)g(that)g(can)h(b)s(e)e(used)g(to)0
+2251 y(manipulate)k(and)e(analyze)j(FITS)e(format)g(\014les.)59
+b(Information)36 b(ab)s(out)g(FTOOLS)f(can)i(b)s(e)f(obtained)g(on)h
+(the)0 2364 y(W)-8 b(eb)31 b(or)f(via)h(anon)m(ymous)g(ftp)f(at:)382
+2624 y Fe(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools)382
+2737 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o(/ft)o(ools)o
+(/rel)o(eas)o(e)p eop end
+%%Page: 3 9
+TeXDict begin 3 8 bop 0 1225 a Ff(Chapter)65 b(2)0 1687
+y Fl(Creating)77 b(FITSIO/CFITSIO)0 2216 y Fd(2.1)135
+b(Building)45 b(the)h(Library)0 2467 y Fi(T)-8 b(o)43
+b(use)g(the)g(FITSIO)f(subroutines)f(one)j(m)m(ust)e(\014rst)g(build)g
+(the)h(CFITSIO)f(library)-8 b(,)46 b(whic)m(h)d(requires)f(a)h(C)0
+2580 y(compiler.)73 b(gcc)43 b(is)e(ideal,)j(or)d(most)h(other)f
+(ANSI-C)g(compilers)g(will)h(also)g(w)m(ork.)73 b(The)40
+b(CFITSIO)g(co)s(de)h(is)0 2692 y(con)m(tained)25 b(in)f(ab)s(out)f(40)
+i(C)f(source)g(\014les)f(\(*.c\))j(and)d(header)h(\014les)g(\(*.h\).)39
+b(On)23 b(V)-10 b(AX/VMS)25 b(systems)f(2)g(assem)m(bly-)0
+2805 y(co)s(de)31 b(\014les)f(\(vmsieeed.mar)h(and)f(vmsieeer.mar\))h
+(are)g(also)g(needed.)0 2965 y(The)45 b(F)-8 b(ortran)46
+b(in)m(terface)g(subroutines)e(to)i(the)f(C)g(CFITSIO)f(routines)h(are)
+g(lo)s(cated)i(in)e(the)g(f77)p 3538 2965 28 4 v 33 w(wrap1.c,)0
+3078 y(through)22 b(f77)p 459 3078 V 33 w(wrap4.c)h(\014les.)38
+b(These)22 b(are)h(relativ)m(ely)i(simple)d('wrapp)s(ers')f(that)i
+(translate)h(the)f(argumen)m(ts)g(in)f(the)0 3191 y(F)-8
+b(ortran)26 b(subroutine)e(in)m(to)j(the)e(appropriate)h(format)g(for)f
+(the)g(corresp)s(onding)g(C)g(routine.)39 b(This)24 b(translation)j(is)
+0 3304 y(p)s(erformed)19 b(transparen)m(tly)i(to)g(the)g(user)f(b)m(y)g
+(a)h(set)h(of)e(C)h(macros)g(lo)s(cated)h(in)e(the)h(cfortran.h)f
+(\014le.)38 b(Unfortunately)0 3417 y(cfortran.h)28 b(do)s(es)g(not)g
+(supp)s(ort)f(ev)m(ery)h(com)m(bination)i(of)e(C)g(and)f(F)-8
+b(ortran)29 b(compilers)g(so)f(the)h(F)-8 b(ortran)28
+b(in)m(terface)0 3530 y(is)i(not)h(supp)s(orted)e(on)h(all)h
+(platforms.)41 b(\(see)31 b(further)e(notes)i(b)s(elo)m(w\).)0
+3690 y(A)f(standard)f(com)m(bination)j(of)e(C)f(and)h(F)-8
+b(ortran)30 b(compilers)h(will)f(b)s(e)f(assumed)h(b)m(y)f(default,)i
+(but)e(one)h(ma)m(y)h(also)0 3803 y(sp)s(ecify)f(a)h(particular)f(F)-8
+b(ortran)32 b(compiler)e(b)m(y)h(doing:)48 4064 y Fe(>)95
+b(setenv)46 b(CFLAGS)g(-DcompilerName=1)0 4324 y Fi(\(where)33
+b('compilerName')h(is)f(the)g(name)f(of)h(the)g(compiler\))h(b)s(efore)
+e(running)f(the)i(con\014gure)f(command.)47 b(The)0 4437
+y(curren)m(tly)30 b(recognized)i(compiler)f(names)f(are:)48
+4698 y Fe(g77Fortran)48 4811 y(IBMR2Fortran)48 4924 y(CLIPPERFortran)48
+5036 y(pgiFortran)48 5149 y(NAGf90Fortran)48 5262 y(f2cFortran)48
+5375 y(hpuxFortran)48 5488 y(apolloFortran)48 5601 y(sunFortran)48
+5714 y(CRAYFortran)1927 5942 y Fi(3)p eop end
+%%Page: 4 10
+TeXDict begin 4 9 bop 0 299 a Fi(4)1896 b Fg(CHAPTER)30
+b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)48 555
+y Fe(mipsFortran)48 668 y(DECFortran)48 781 y(vmsFortran)48
+894 y(CONVEXFortran)48 1007 y(PowerStationFortran)48
+1120 y(AbsoftUNIXFortran)48 1233 y(AbsoftProFortran)48
+1346 y(SXFortran)0 1609 y Fi(Alternativ)m(ely)-8 b(,)42
+b(one)c(ma)m(y)g(edit)g(the)f(CFLA)m(GS)h(line)f(in)h(the)f(Mak)m
+(e\014le)i(to)f(add)f(the)h('-DcompilerName')i(\015ag)0
+1722 y(after)31 b(running)e(the)h('./con\014gure')h(command.)0
+1882 y(The)f(CFITSIO)f(library)h(is)g(built)g(on)h(Unix)f(systems)g(b)m
+(y)g(t)m(yping:)48 2146 y Fe(>)95 b(./configure)45 b
+([--prefix=/target/insta)o(llat)o(ion)o(/pat)o(h])764
+2259 y([--enable-sse2])e([--enable-ssse3])48 2372 y(>)95
+b(make)476 b(\(or)95 b('make)46 b(shared'\))48 2485 y(>)95
+b(make)47 b(install)93 b(\(this)46 b(step)h(is)g(optional\))0
+2749 y Fi(at)24 b(the)g(op)s(erating)g(system)g(prompt.)38
+b(The)23 b(con\014gure)g(command)g(customizes)i(the)f(Mak)m(e\014le)h
+(for)f(the)g(particular)0 2861 y(system,)g(then)d(the)g(`mak)m(e')i
+(command)e(compiles)h(the)f(source)h(\014les)f(and)g(builds)f(the)h
+(library)-8 b(.)38 b(T)m(yp)s(e)21 b(`./con\014gure')0
+2974 y(and)34 b(not)h(simply)f(`con\014gure')h(to)h(ensure)e(that)h
+(the)g(con\014gure)g(script)f(in)h(the)g(curren)m(t)f(directory)h(is)g
+(run)f(and)0 3087 y(not)29 b(some)g(other)g(system-wide)g(con\014gure)f
+(script.)40 b(The)29 b(optional)h('pre\014x')e(argumen)m(t)h(to)g
+(con\014gure)g(giv)m(es)h(the)0 3200 y(path)e(to)i(the)f(directory)g
+(where)f(the)h(CFITSIO)f(library)g(and)g(include)h(\014les)f(should)g
+(b)s(e)g(installed)i(via)f(the)g(later)0 3313 y('mak)m(e)j(install')f
+(command.)41 b(F)-8 b(or)31 b(example,)143 3577 y Fe(>)48
+b(./configure)c(--prefix=/usr1/local)0 3841 y Fi(will)25
+b(cause)h(the)f('mak)m(e)h(install')g(command)f(to)h(cop)m(y)g(the)f
+(CFITSIO)e(lib)s(c\014tsio)i(\014le)h(to)f(/usr1/lo)s(cal/lib)i(and)e
+(the)0 3953 y(necessary)33 b(include)e(\014les)i(to)f(/usr1/lo)s
+(cal/include)j(\(assuming)d(of)g(course)g(that)h(the)f(pro)s(cess)g
+(has)g(p)s(ermission)0 4066 y(to)f(write)g(to)g(these)g(directories\).)
+0 4227 y(The)24 b(optional)i({enable-sse2)g(and)e({enable-ssse3)i
+(\015ags)e(will)h(cause)g(con\014gure)f(to)h(attempt)h(to)f(build)e
+(CFITSIO)0 4339 y(using)31 b(faster)h(b)m(yte-sw)m(apping)g
+(algorithms.)46 b(See)32 b(the)g("Optimizing)g(Programs")g(section)h
+(of)f(this)f(man)m(ual)h(for)0 4452 y(more)f(information)f(ab)s(out)g
+(these)h(options.)0 4613 y(By)37 b(default,)i(the)f(Mak)m(e\014le)g
+(will)g(b)s(e)e(con\014gured)g(to)i(build)e(the)h(set)h(of)f(F)-8
+b(ortran-callable)40 b(wrapp)s(er)35 b(routines)0 4725
+y(whose)30 b(calling)i(sequences)f(are)f(describ)s(ed)g(later)h(in)f
+(this)g(do)s(cumen)m(t.)0 4886 y(The)e('mak)m(e)h(shared')f(option)h
+(builds)e(a)i(shared)e(or)i(dynamic)f(v)m(ersion)h(of)f(the)h(CFITSIO)d
+(library)-8 b(.)40 b(When)28 b(using)0 4999 y(the)f(shared)f(library)h
+(the)g(executable)h(co)s(de)f(is)g(not)g(copied)g(in)m(to)h(y)m(our)f
+(program)g(at)g(link)g(time)g(and)g(instead)g(the)0 5111
+y(program)g(lo)s(cates)i(the)f(necessary)g(library)f(co)s(de)h(at)g
+(run)e(time,)j(normally)f(through)e(LD)p 3065 5111 28
+4 v 33 w(LIBRAR)-8 b(Y)p 3514 5111 V 34 w(P)g(A)g(TH)28
+b(or)0 5224 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5
+b(an)m(tages)33 b(of)d(using)g(a)h(shared)e(library)h(are:)143
+5488 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h
+(than)f(1)i(program)143 5601 y(2.)95 b(Less)47 b(memory)f(if)h(more)g
+(than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334
+5714 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g
+(system)f(is)h(smart)p eop end
+%%Page: 5 11
+TeXDict begin 5 10 bop 0 299 a Fg(2.1.)72 b(BUILDING)31
+b(THE)f(LIBRAR)-8 b(Y)2507 b Fi(5)334 555 y Fe(enough)46
+b(to)h(share)g(copies)f(of)h(the)g(shared)f(library)g(at)h(run)g(time.)
+143 668 y(3.)95 b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new)
+g(version)f(of)h(the)g(shared)334 781 y(library)f(can)h(be)g(installed)
+e(without)h(relinking)f(all)i(the)g(software)334 894
+y(that)g(uses)f(it)i(\(as)e(long)h(as)g(the)g(subroutine)e(names)i(and)
+f(calling)334 1007 y(sequences)f(remain)h(unchanged\).)143
+1120 y(4.)95 b(No)47 b(run-time)f(penalty.)0 1346 y Fi(The)30
+b(disadv)-5 b(an)m(tages)32 b(are:)143 1572 y Fe(1.)47
+b(More)g(hassle)f(at)h(runtime.)94 b(You)46 b(have)h(to)g(either)f
+(build)h(the)g(programs)286 1685 y(specially)f(or)h(have)f
+(LD_LIBRARY_PATH)e(set)j(right.)143 1798 y(2.)g(There)g(may)g(be)g(a)g
+(slight)f(start)h(up)g(penalty,)e(depending)h(on)h(where)f(you)h(are)
+286 1911 y(reading)f(the)h(shared)f(library)g(and)h(the)g(program)f
+(from)g(and)h(if)g(your)g(CPU)g(is)286 2024 y(either)f(really)h(slow)f
+(or)h(really)f(heavily)g(loaded.)0 2250 y Fi(On)30 b(HP/UX)i(systems,)g
+(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)32 b(CFLA)m(GS)f(should)f(b)s
+(e)h(set)g(to)h(-Ae)g(b)s(efore)f(running)e(con-)0 2363
+y(\014gure)h(to)h(enable)g("extended)g(ANSI")f(features.)0
+2523 y(It)j(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)g(to)h(statically)i
+(link)e(programs)f(that)h(use)g(CFITSIO)e(on)h(some)h(platforms)g
+(\(namely)-8 b(,)0 2636 y(on)28 b(Solaris)h(2.6\))h(due)e(to)h(the)g
+(net)m(w)m(ork)g(driv)m(ers)f(\(whic)m(h)h(pro)m(vide)g(FTP)f(and)g
+(HTTP)g(access)h(to)h(FITS)d(\014les\).)41 b(It)0 2749
+y(is)33 b(p)s(ossible)f(to)i(mak)m(e)f(b)s(oth)g(a)g(dynamic)f(and)g(a)
+i(static)g(v)m(ersion)f(of)g(the)g(CFITSIO)e(library)-8
+b(,)34 b(but)e(net)m(w)m(ork)i(\014le)0 2862 y(access)e(will)e(not)h(b)
+s(e)f(p)s(ossible)g(using)g(the)g(static)i(v)m(ersion.)0
+3022 y(On)c(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)m
+(e)p 2100 3022 28 4 v 34 w(g\015oat.com)h(command)e(\014le)g(ma)m(y)h
+(b)s(e)f(executed)h(to)0 3135 y(build)35 b(the)i(c\014tsio.olb)g(ob)5
+b(ject)37 b(library)f(using)g(the)g(default)h(G-\015oating)g(p)s(oin)m
+(t)g(option)f(for)g(double)g(v)-5 b(ariables.)0 3248
+y(The)37 b(mak)m(e)p 405 3248 V 33 w(d\015oat.com)i(and)d(mak)m(e)p
+1279 3248 V 34 w(ieee.com)j(\014les)f(ma)m(y)f(b)s(e)g(used)f(instead)i
+(to)g(build)e(the)h(library)g(with)g(the)0 3361 y(other)26
+b(\015oating)i(p)s(oin)m(t)e(options.)39 b(Note)28 b(that)f(the)f
+(getcwd)h(function)f(that)h(is)f(used)f(in)h(the)h(group.c)f(mo)s(dule)
+f(ma)m(y)0 3474 y(require)44 b(that)i(programs)e(using)g(CFITSIO)f(b)s
+(e)h(link)m(ed)i(with)e(the)h(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB)
+0 3587 y(library)g(.)41 b(See)30 b(the)h(example)g(link)f(line)h(in)f
+(the)h(next)f(section)i(of)e(this)h(do)s(cumen)m(t.)0
+3747 y(On)25 b(Windo)m(ws)h(IBM-PC)g(t)m(yp)s(e)g(platforms)f(the)h
+(situation)h(is)e(more)h(complicated)i(b)s(ecause)d(of)h(the)g(wide)g
+(v)-5 b(ariet)m(y)0 3860 y(of)43 b(F)-8 b(ortran)43 b(compilers)h(that)
+f(are)g(a)m(v)-5 b(ailable)45 b(and)d(b)s(ecause)h(of)g(the)g(inheren)m
+(t)g(complexities)i(of)d(calling)j(the)0 3973 y(CFITSIO)25
+b(C)g(routines)h(from)g(F)-8 b(ortran.)40 b(Tw)m(o)26
+b(di\013eren)m(t)h(v)m(ersions)f(of)g(the)h(CFITSIO)d(dll)i(library)g
+(are)g(a)m(v)-5 b(ailable,)0 4085 y(compiled)28 b(with)e(the)i(Borland)
+f(C++)f(compiler)i(and)e(the)i(Microsoft)g(Visual)g(C++)e(compiler,)i
+(resp)s(ectiv)m(ely)-8 b(,)30 b(in)0 4198 y(the)g(\014les)g(c\014tsio)s
+(dll)p 679 4198 V 33 w(2xxx)p 901 4198 V 34 w(b)s(orland.zip)f(and)g
+(c\014tsio)s(dll)p 1924 4198 V 33 w(3xxx)p 2146 4198
+V 33 w(v)m(cc.zip,)j(where)e('3xxx')h(represen)m(ts)f(the)g(curren)m(t)
+0 4311 y(release)44 b(n)m(um)m(b)s(er.)76 b(Both)43 b(these)g(dll)g
+(libraries)g(con)m(tain)h(a)f(set)g(of)f(F)-8 b(ortran)44
+b(wrapp)s(er)d(routines)h(whic)m(h)g(ma)m(y)0 4424 y(b)s(e)37
+b(compatible)i(with)e(some,)j(but)d(probably)g(not)g(all,)k(a)m(v)-5
+b(ailable)40 b(F)-8 b(ortran)38 b(compilers.)63 b(T)-8
+b(o)38 b(test)g(if)g(they)g(are)0 4537 y(compatible,)29
+b(compile)f(the)f(program)g(testf77.f)h(and)f(try)f(linking)i(to)f
+(these)h(dll)e(libraries.)40 b(If)27 b(these)g(libraries)g(do)0
+4650 y(not)i(w)m(ork)g(with)f(a)h(particular)g(F)-8 b(ortran)30
+b(compiler,)g(then)e(there)h(are)g(2)g(p)s(ossible)g(solutions.)40
+b(The)28 b(\014rst)g(solution)0 4763 y(w)m(ould)h(b)s(e)h(to)g(mo)s
+(dify)f(the)h(\014le)f(cfortran.h)h(for)f(that)i(particular)f(com)m
+(bination)h(of)f(C)f(and)g(F)-8 b(ortran)30 b(compilers,)0
+4876 y(and)k(then)g(rebuild)f(the)i(CFITSIO)d(dll)j(library)-8
+b(.)52 b(This)34 b(will)h(require,)g(ho)m(w)m(ev)m(er,)i(a)e(some)f
+(exp)s(ertise)h(in)f(mixed)0 4989 y(language)e(programming.)40
+b(The)30 b(other)h(solution)f(is)h(to)g(use)f(the)g(older)h(v5.03)h(F)
+-8 b(ortran-77)32 b(implemen)m(tation)g(of)0 5102 y(FITSIO)25
+b(that)h(is)g(still)h(a)m(v)-5 b(ailable)28 b(from)d(the)h(FITSIO)f(w)m
+(eb-site.)40 b(This)25 b(v)m(ersion)h(is)g(no)g(longer)g(supp)s(orted,)
+f(but)g(it)0 5215 y(do)s(es)k(pro)m(vide)h(the)g(basic)h(functions)e
+(for)g(reading)h(and)f(writing)h(FITS)f(\014les)h(and)f(should)g(b)s(e)
+g(compatible)i(with)0 5327 y(most)g(F)-8 b(ortran)31
+b(compilers.)0 5488 y(CFITSIO)e(has)h(curren)m(tly)g(b)s(een)g(tested)h
+(on)f(the)h(follo)m(wing)h(platforms:)95 5714 y Fe(OPERATING)46
+b(SYSTEM)523 b(COMPILER)p eop end
+%%Page: 6 12
+TeXDict begin 6 11 bop 0 299 a Fi(6)1896 b Fg(CHAPTER)30
+b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)143 555
+y Fe(Sun)47 b(OS)1002 b(gcc)47 b(and)g(cc)g(\(3.0.1\))143
+668 y(Sun)g(Solaris)762 b(gcc)47 b(and)g(cc)143 781 y(Silicon)f
+(Graphics)g(IRIX)285 b(gcc)47 b(and)g(cc)143 894 y(Silicon)f(Graphics)g
+(IRIX64)189 b(MIPS)143 1007 y(Dec)47 b(Alpha)f(OSF/1)572
+b(gcc)47 b(and)g(cc)143 1120 y(DECstation)93 b(Ultrix)428
+b(gcc)143 1233 y(Dec)47 b(Alpha)f(OpenVMS)476 b(cc)143
+1346 y(DEC)47 b(VAX/VMS)762 b(gcc)47 b(and)g(cc)143 1458
+y(HP-UX)1049 b(gcc)143 1571 y(IBM)47 b(AIX)954 b(gcc)143
+1684 y(Linux)1049 b(gcc)143 1797 y(MkLinux)953 b(DR3)143
+1910 y(Windows)46 b(95/98/NT)523 b(Borland)46 b(C++)h(V4.5)143
+2023 y(Windows)f(95/98/NT/ME/XP)235 b(Microsoft/Compaq)43
+b(Visual)j(C++)h(v5.0,)g(v6.0)143 2136 y(Windows)f(95/98/NT)523
+b(Cygwin)46 b(gcc)143 2249 y(OS/2)1097 b(gcc)47 b(+)g(EMX)143
+2362 y(MacOS)g(7.1)f(or)i(greater)332 b(Metrowerks)45
+b(10.+)0 2591 y Fi(CFITSIO)26 b(will)j(probably)e(run)f(on)i(most)g
+(other)h(Unix)e(platforms.)40 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j
+(curren)m(tly)f(not)0 2704 y(supp)s(orted.)0 3033 y Fd(2.2)135
+b(T)-11 b(esting)46 b(the)f(Library)0 3283 y Fi(The)40
+b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f(building)f(and)
+g(running)g(the)h(testprog.c)h(program)f(that)h(is)0
+3396 y(included)30 b(with)g(the)g(release.)42 b(On)30
+b(Unix)g(systems)g(t)m(yp)s(e:)191 3625 y Fe(\045)47
+b(make)g(testprog)191 3738 y(\045)g(testprog)f(>)h(testprog.lis)191
+3850 y(\045)g(diff)g(testprog.lis)d(testprog.out)191
+3963 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 4192
+y Fi(On)30 b(VMS)g(systems,)g(\(assuming)h(cc)g(is)f(the)h(name)f(of)h
+(the)f(C)g(compiler)h(command\),)g(t)m(yp)s(e:)191 4421
+y Fe($)47 b(cc)h(testprog.c)191 4534 y($)f(link)g(testprog,)e
+(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 4647
+y($)i(run)g(testprog)0 4876 y Fi(The)30 b(testprog)h(program)g(should)e
+(pro)s(duce)g(a)i(FITS)f(\014le)g(called)i(`testprog.\014t')g(that)f
+(is)f(iden)m(tical)j(to)e(the)f(`test-)0 4989 y(prog.std')25
+b(FITS)f(\014le)g(included)g(with)g(this)h(release.)40
+b(The)24 b(diagnostic)i(messages)g(\(whic)m(h)e(w)m(ere)h(pip)s(ed)f
+(to)h(the)g(\014le)0 5102 y(testprog.lis)h(in)e(the)h(Unix)f(example\))
+i(should)d(b)s(e)h(iden)m(tical)j(to)e(the)g(listing)g(con)m(tained)h
+(in)e(the)h(\014le)f(testprog.out.)0 5215 y(The)30 b('di\013)7
+b(')31 b(and)e('cmp')i(commands)f(sho)m(wn)g(ab)s(o)m(v)m(e)h(should)f
+(not)g(rep)s(ort)g(an)m(y)h(di\013erences)g(in)f(the)g(\014les.)41
+b(\(There)0 5328 y(ma)m(y)35 b(b)s(e)e(some)h(minor)g(formatting)g
+(di\013erences,)i(suc)m(h)d(as)i(the)f(presence)g(or)g(absence)g(of)g
+(leading)h(zeros,)h(or)e(3)0 5441 y(digit)d(exp)s(onen)m(ts)f(in)g(n)m
+(um)m(b)s(ers,)g(whic)m(h)g(can)g(b)s(e)g(ignored\).)0
+5601 y(The)f(F)-8 b(ortran)31 b(wrapp)s(ers)d(in)h(CFITSIO)f(ma)m(y)j
+(b)s(e)e(tested)h(with)g(the)g(testf77)h(program.)40
+b(On)29 b(Unix)h(systems)g(the)0 5714 y(fortran)g(compilation)i(and)e
+(link)g(command)g(ma)m(y)h(b)s(e)f(called)h('f77')h(or)e('g77',)j(dep)s
+(ending)c(on)h(the)g(system.)p eop end
+%%Page: 7 13
+TeXDict begin 7 12 bop 0 299 a Fg(2.2.)72 b(TESTING)29
+b(THE)h(LIBRAR)-8 b(Y)2555 b Fi(7)143 555 y Fe(\045)48
+b(f77)f(-o)g(testf77)f(testf77.f)f(-L.)i(-lcfitsio)e(-lnsl)h(-lsocket)
+48 668 y(or)143 781 y(\045)i(f77)f(-f)g(-o)g(testf77)f(testf77.f)f(-L.)
+i(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))48 894 y(or)143
+1007 y(\045)h(f77)f(-o)g(testf77)f(testf77.f)f(-Wl,-L.)h(-lcfitsio)f
+(-lm)i(-lnsl)f(-lsocket)g(\(HP/UX\))48 1120 y(or)143
+1233 y(\045)i(g77)f(-o)g(testf77)f(-s)h(testf77.f)e(-lcfitsio)g
+(-lcc_dynamic)g(-lncurses)g(\(Mac)i(OS-X\))143 1458 y(\045)h(testf77)d
+(>)j(testf77.lis)143 1571 y(\045)g(diff)e(testf77.lis)f(testf77.out)143
+1684 y(\045)j(cmp)f(testf77.fit)d(testf77.std)0 1934
+y Fi(On)31 b(mac)m(hines)h(running)f(SUN)g(O/S,)h(F)-8
+b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)h(with)g(the)g('-f)
+7 b(')32 b(option)h(to)f(force)0 2047 y(double)24 b(precision)g(v)-5
+b(ariables)25 b(to)g(b)s(e)e(aligned)i(on)f(8-b)m(yte)i(b)s(oundaries)c
+(to)j(mak)m(e)g(the)g(fortran-declared)f(v)-5 b(ariables)0
+2160 y(compatible)34 b(with)e(C.)g(A)h(similar)g(compiler)g(option)g
+(ma)m(y)g(b)s(e)f(required)g(on)g(other)h(platforms.)48
+b(F)-8 b(ailing)34 b(to)f(use)0 2273 y(this)26 b(option)g(ma)m(y)g
+(cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)g(that)i
+(read)f(or)f(write)h(double)g(precision)0 2386 y(v)-5
+b(ariables.)0 2546 y(On)27 b(Windo)m(ws)h(platforms,)g(linking)g(F)-8
+b(ortran)28 b(programs)f(with)h(a)g(C)f(library)g(often)h(dep)s(ends)e
+(on)i(the)g(particular)0 2659 y(compilers)40 b(in)m(v)m(olv)m(ed.)71
+b(Some)40 b(users)f(ha)m(v)m(e)i(found)d(the)i(follo)m(wing)i(commands)
+d(w)m(ork)h(when)f(using)g(the)h(In)m(tel)0 2772 y(F)-8
+b(ortran)31 b(compiler:)0 3022 y Fe(ifort)46 b(/libs.dll)g(cfitsio.lib)
+e(/MD)j(testf77.f)f(/Gm)0 3247 y(or)h(possibly,)0 3473
+y(ifort)f(/libs:dll)g(cfitsio.lib)e(/MD)j(/fpp)g
+(/extfpp:cfortran.h,fitsi)o(o.h)191 3586 y(/iface:cvf)e(testf77.f)0
+3836 y Fi(Also)32 b(note)h(that)f(on)g(some)g(systems)f(the)h(output)g
+(listing)g(of)g(the)g(testf77)h(program)f(ma)m(y)g(di\013er)f(sligh)m
+(tly)i(from)0 3949 y(the)f(testf77.std)i(template)g(if)e(leading)h
+(zeros)g(are)g(not)g(prin)m(ted)e(b)m(y)i(default)f(b)s(efore)g(the)g
+(decimal)i(p)s(oin)m(t)e(when)0 4062 y(using)e(F)h(format.)0
+4222 y(A)f(few)h(other)f(utilit)m(y)i(programs)e(are)h(included)e(with)
+h(CFITSIO:)191 4472 y Fe(speed)46 b(-)i(measures)d(the)i(maximum)f
+(throughput)f(\(in)i(MB)g(per)g(second\))668 4585 y(for)g(writing)f
+(and)h(reading)f(FITS)g(files)h(with)f(CFITSIO)191 4811
+y(listhead)f(-)j(lists)e(all)h(the)g(header)f(keywords)g(in)h(any)g
+(FITS)f(file)191 5036 y(fitscopy)f(-)j(copies)e(any)h(FITS)g(file)f
+(\(especially)f(useful)h(in)h(conjunction)811 5149 y(with)g(the)g
+(CFITSIO's)e(extended)h(input)g(filename)g(syntax\))191
+5375 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h(performs)e(common)i
+(read)f(and)811 5488 y(write)h(operations)e(on)i(a)g(FITS)g(file.)191
+5714 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f(of)h(the)g(CFITSIO)f
+(iterator)f(routine)p eop end
+%%Page: 8 14
+TeXDict begin 8 13 bop 0 299 a Fi(8)1896 b Fg(CHAPTER)30
+b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)0 555 y
+Fi(The)f(\014rst)f(4)i(of)g(these)g(utilit)m(y)g(programs)f(can)h(b)s
+(e)f(compiled)h(and)e(link)m(ed)i(b)m(y)f(t)m(yping)143
+816 y Fe(\045)95 b(make)47 b(program_name)0 1151 y Fd(2.3)135
+b(Linking)45 b(Programs)h(with)f(FITSIO)0 1402 y Fi(When)31
+b(linking)g(applications)i(soft)m(w)m(are)f(with)f(the)g(FITSIO)f
+(library)-8 b(,)32 b(sev)m(eral)h(system)e(libraries)g(usually)g(need)0
+1515 y(to)26 b(b)s(e)f(sp)s(eci\014ed)g(on)g(the)h(link)g(comman)f
+(Unix)h(systems,)h(the)e(most)h(reliable)h(w)m(a)m(y)f(to)h(determine)e
+(what)h(libraries)0 1627 y(are)32 b(required)f(is)g(to)i(t)m(yp)s(e)e
+('mak)m(e)i(testprog')g(and)e(see)h(what)f(libraries)h(the)g
+(con\014gure)f(script)h(has)f(added.)43 b(The)0 1740
+y(t)m(ypical)25 b(libraries)f(that)g(ma)m(y)g(need)f(to)h(b)s(e)f
+(added)g(are)g(-lm)h(\(the)g(math)f(library\))h(and)f(-lnsl)g(and)g
+(-lso)s(c)m(k)m(et)j(\(needed)0 1853 y(only)h(for)f(FTP)g(and)g(HTTP)g
+(\014le)h(access\).)41 b(These)26 b(latter)i(2)f(libraries)g(are)g(not)
+g(needed)f(on)g(VMS)h(and)f(Windo)m(ws)0 1966 y(platforms,)31
+b(b)s(ecause)f(FTP)g(\014le)h(access)g(is)g(not)f(curren)m(tly)h(supp)s
+(orted)d(on)i(those)h(platforms.)0 2126 y(Note)i(that)g(when)e
+(upgrading)g(to)i(a)f(new)m(er)g(v)m(ersion)g(of)g(CFITSIO)f(it)h(is)g
+(usually)g(necessary)g(to)h(recompile,)h(as)0 2239 y(w)m(ell)d(as)g
+(relink,)g(the)f(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i(the)f
+(de\014nitions)g(in)g(\014tsio.h)h(often)f(c)m(hange.)0
+2574 y Fd(2.4)135 b(Getting)46 b(Started)g(with)f(FITSIO)0
+2825 y Fi(In)32 b(order)h(to)h(e\013ectiv)m(ely)i(use)d(the)g(FITSIO)f
+(library)h(as)h(quic)m(kly)g(as)f(p)s(ossible,)h(it)g(is)f(recommended)
+g(that)g(new)0 2938 y(users)d(follo)m(w)h(these)g(steps:)0
+3098 y(1.)62 b(Read)38 b(the)f(follo)m(wing)i(`FITS)e(Primer')g(c)m
+(hapter)h(for)g(a)f(brief)g(o)m(v)m(erview)i(of)f(the)g(structure)e(of)
+i(FITS)f(\014les.)0 3211 y(This)25 b(is)h(esp)s(ecially)h(imp)s(ortan)m
+(t)g(for)e(users)h(who)f(ha)m(v)m(e)i(not)g(previously)e(dealt)i(with)f
+(the)g(FITS)f(table)i(and)f(image)0 3324 y(extensions.)0
+3484 y(2.)41 b(W)-8 b(rite)32 b(a)f(simple)f(program)g(to)h(read)g(or)f
+(write)g(a)h(FITS)f(\014le)g(using)g(the)h(Basic)g(In)m(terface)h
+(routines.)0 3644 y(3.)41 b(Refer)28 b(to)i(the)f(co)s(okb)s(o)s(ok.f)g
+(program)f(that)i(is)f(included)f(with)g(this)h(release)h(for)e
+(examples)i(of)f(routines)f(that)0 3757 y(p)s(erform)h(v)-5
+b(arious)30 b(common)h(FITS)f(\014le)g(op)s(erations.)0
+3917 y(4.)52 b(Read)34 b(Chapters)g(4)g(and)f(5)i(to)g(b)s(ecome)f
+(familiar)h(with)e(the)i(con)m(v)m(en)m(tions)h(and)d(adv)-5
+b(anced)34 b(features)h(of)f(the)0 4030 y(FITSIO)29 b(in)m(terface.)0
+4190 y(5.)47 b(Scan)32 b(through)f(the)h(more)h(extensiv)m(e)g(set)g
+(of)g(routines)f(that)g(are)h(pro)m(vided)f(in)g(the)g(`Adv)-5
+b(anced)32 b(In)m(terface'.)0 4303 y(These)22 b(routines)f(p)s(erform)g
+(more)h(sp)s(ecialized)h(functions)e(than)g(are)i(pro)m(vided)e(b)m(y)h
+(the)g(Basic)h(In)m(terface)g(routines.)0 4638 y Fd(2.5)135
+b(Example)46 b(Program)0 4888 y Fi(The)32 b(follo)m(wing)i(listing)f
+(sho)m(ws)f(an)g(example)i(of)e(ho)m(w)h(to)g(use)f(the)g(FITSIO)g
+(routines)g(in)g(a)h(F)-8 b(ortran)33 b(program.)0 5001
+y(Refer)38 b(to)h(the)g(co)s(okb)s(o)s(ok.f)f(program)g(that)h(is)f
+(included)f(with)h(the)h(FITSIO)e(distribution)g(for)h(examples)h(of)0
+5114 y(other)31 b(FITS)e(programs.)286 5375 y Fe(program)46
+b(writeimage)0 5601 y(C)238 b(Create)46 b(a)i(FITS)f(primary)e(array)i
+(containing)e(a)i(2-D)g(image)p eop end
+%%Page: 9 15
+TeXDict begin 9 14 bop 0 299 a Fg(2.5.)72 b(EXAMPLE)31
+b(PR)m(OGRAM)2664 b Fi(9)286 555 y Fe(integer)46 b
+(status,unit,blocksize,bit)o(pix,)o(nax)o(is,n)o(axes)o(\(2\))286
+668 y(integer)g(i,j,group,fpixel,nelement)o(s,ar)o(ray)o(\(300)o(,200)o
+(\))286 781 y(character)g(filename*80)286 894 y(logical)g
+(simple,extend)286 1120 y(status=0)0 1233 y(C)238 b(Name)47
+b(of)g(the)g(FITS)g(file)f(to)i(be)f(created:)286 1346
+y(filename='ATESTFILE.FITS')0 1571 y(C)238 b(Get)47 b(an)g(unused)g
+(Logical)e(Unit)i(Number)f(to)h(use)g(to)g(create)f(the)h(FITS)g(file)
+286 1684 y(call)g(ftgiou\(unit,status\))0 1910 y(C)238
+b(create)46 b(the)h(new)g(empty)g(FITS)f(file)286 2023
+y(blocksize=1)286 2136 y(call)h(ftinit\(unit,filename,blo)o(cksi)o
+(ze,s)o(tat)o(us\))0 2362 y(C)238 b(initialize)45 b(parameters)g(about)
+i(the)g(FITS)f(image)h(\(300)f(x)i(200)f(16-bit)f(integers\))286
+2475 y(simple=.true.)286 2588 y(bitpix=16)286 2700 y(naxis=2)286
+2813 y(naxes\(1\)=300)286 2926 y(naxes\(2\)=200)286 3039
+y(extend=.true.)0 3265 y(C)238 b(write)47 b(the)g(required)e(header)h
+(keywords)286 3378 y(call)h(ftphpr\(unit,simple,bitpi)o(x,na)o(xis,)o
+(nax)o(es,0)o(,1,e)o(xte)o(nd,s)o(tatu)o(s\))0 3604 y(C)238
+b(initialize)45 b(the)i(values)f(in)i(the)e(image)h(with)f(a)i(linear)e
+(ramp)h(function)286 3717 y(do)h(j=1,naxes\(2\))477 3830
+y(do)f(i=1,naxes\(1\))668 3942 y(array\(i,j\)=i+j)477
+4055 y(end)g(do)286 4168 y(end)g(do)0 4394 y(C)238 b(write)47
+b(the)g(array)f(to)h(the)g(FITS)g(file)286 4507 y(group=1)286
+4620 y(fpixel=1)286 4733 y(nelements=naxes\(1\)*naxes\(2)o(\))286
+4846 y(call)g(ftpprj\(unit,group,fpixel)o(,nel)o(emen)o(ts,)o(arra)o
+(y,st)o(atu)o(s\))0 5072 y(C)238 b(write)47 b(another)f(optional)f
+(keyword)h(to)h(the)g(header)286 5185 y(call)g
+(ftpkyj\(unit,'EXPOSURE',1)o(500,)o('Tot)o(al)41 b(Exposure)46
+b(Time',status\))0 5410 y(C)238 b(close)47 b(the)g(file)f(and)h(free)g
+(the)g(unit)f(number)286 5523 y(call)h(ftclos\(unit,)d(status\))286
+5636 y(call)j(ftfiou\(unit,)d(status\))p eop end
+%%Page: 10 16
+TeXDict begin 10 15 bop 0 299 a Fi(10)1851 b Fg(CHAPTER)30
+b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)286 555
+y Fe(end)0 948 y Fd(2.6)135 b(Legal)46 b(Stu\013)0 1210
+y Fi(Cop)m(yrigh)m(t)37 b(\(Unpublished{all)g(righ)m(ts)g(reserv)m(ed)g
+(under)e(the)i(cop)m(yrigh)m(t)h(la)m(ws)f(of)g(the)g(United)g
+(States\),)j(U.S.)0 1323 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m
+(ted)e(b)m(y)h(the)g(Administrator)g(of)g(the)g(National)h(Aeronautics)
+g(and)e(Space)h(Adminis-)0 1436 y(tration.)42 b(No)31
+b(cop)m(yrigh)m(t)g(is)g(claimed)g(in)f(the)h(United)f(States)h(under)e
+(Title)j(17,)f(U.S.)f(Co)s(de.)0 1596 y(P)m(ermission)g(to)g(freely)f
+(use,)h(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)29 b(and)g(distribute)g
+(this)g(soft)m(w)m(are)i(and)e(its)h(do)s(cumen)m(tation)g(without)0
+1709 y(fee)f(is)f(hereb)m(y)g(gran)m(ted,)i(pro)m(vided)e(that)h(this)f
+(cop)m(yrigh)m(t)i(notice)f(and)f(disclaimer)h(of)f(w)m(arran)m(t)m(y)i
+(app)s(ears)d(in)h(all)0 1822 y(copies.)0 1982 y(DISCLAIMER:)0
+2142 y(THE)33 b(SOFTW)-10 b(ARE)32 b(IS)g(PR)m(O)m(VIDED)i('AS)f(IS')g
+(WITHOUT)f(ANY)i(W)-10 b(ARRANTY)33 b(OF)g(ANY)h(KIND,)f(EI-)0
+2255 y(THER)42 b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43
+b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 2368 y(ANY)33
+b(W)-10 b(ARRANTY)33 b(THA)-8 b(T)32 b(THE)g(SOFTW)-10
+b(ARE)32 b(WILL)g(CONF)m(ORM)g(TO)g(SPECIFICA)-8 b(TIONS,)30
+b(ANY)0 2481 y(IMPLIED)38 b(W)-10 b(ARRANTIES)37 b(OF)h(MER)m(CHANT)-8
+b(ABILITY,)38 b(FITNESS)f(F)m(OR)h(A)g(P)-8 b(AR)g(TICULAR)38
+b(PUR-)0 2594 y(POSE,)24 b(AND)i(FREEDOM)f(FR)m(OM)h(INFRINGEMENT,)g
+(AND)f(ANY)h(W)-10 b(ARRANTY)25 b(THA)-8 b(T)25 b(THE)g(DOC-)0
+2707 y(UMENT)-8 b(A)g(TION)31 b(WILL)f(CONF)m(ORM)h(TO)e(THE)h(SOFTW)
+-10 b(ARE,)30 b(OR)g(ANY)h(W)-10 b(ARRANTY)31 b(THA)-8
+b(T)30 b(THE)0 2819 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g
+(FREE.)g(IN)g(NO)g(EVENT)f(SHALL)g(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0
+2932 y(D)m(AMA)m(GES,)26 b(INCLUDING,)e(BUT)f(NOT)g(LIMITED)h(TO,)f
+(DIRECT,)g(INDIRECT,)g(SPECIAL)f(OR)h(CON-)0 3045 y(SEQUENTIAL)28
+b(D)m(AMA)m(GES,)k(ARISING)d(OUT)g(OF,)h(RESUL)-8 b(TING)29
+b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)0
+3158 y(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25
+b(WHETHER)g(OR)g(NOT)g(BASED)g(UPON)g(W)-10 b(ARRANTY,)26
+b(CON-)0 3271 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10
+b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10
+b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 3384 y(SONS)h(OR)i(PR)m
+(OPER)-8 b(TY)26 b(OR)g(OTHER)-10 b(WISE,)26 b(AND)h(WHETHER)g(OR)f
+(NOT)g(LOSS)f(W)-10 b(AS)26 b(SUST)-8 b(AINED)0 3497
+y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f(OF)h(THE)g(RESUL)-8
+b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35
+b(OR)g(SER-)0 3610 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")0
+4002 y Fd(2.7)135 b(Ac)l(kno)l(wledgmen)l(ts)0 4264 y
+Fi(The)29 b(dev)m(elopmen)m(t)h(of)g(man)m(y)f(of)h(the)f(p)s(o)m(w)m
+(erful)g(features)g(in)g(CFITSIO)f(w)m(as)i(made)f(p)s(ossible)g
+(through)f(collab-)0 4377 y(orations)35 b(with)f(man)m(y)h(p)s(eople)f
+(or)h(organizations)h(from)e(around)f(the)i(w)m(orld.)52
+b(The)34 b(follo)m(wing,)j(in)d(particular,)0 4490 y(ha)m(v)m(e)e(made)
+e(esp)s(ecially)i(signi\014can)m(t)f(con)m(tributions:)0
+4650 y(Programmers)25 b(from)h(the)f(In)m(tegral)i(Science)g(Data)g
+(Cen)m(ter,)g(Switzerland)f(\(namely)-8 b(,)28 b(Jurek)c(Bork)m(o)m
+(wski,)29 b(Bruce)0 4763 y(O'Neel,)34 b(and)e(Don)h(Jennings\),)f
+(designed)g(the)h(concept)g(for)f(the)h(plug-in)f(I/O)g(driv)m(ers)g
+(that)h(w)m(as)g(in)m(tro)s(duced)0 4876 y(with)i(CFITSIO)e(2.0.)56
+b(The)34 b(use)h(of)g(`driv)m(ers')g(greatly)h(simpli\014ed)f(the)g(lo)
+m(w-lev)m(el)j(I/O,)d(whic)m(h)f(in)h(turn)f(made)0 4989
+y(other)40 b(new)f(features)i(in)e(CFITSIO)f(\(e.g.,)45
+b(supp)s(ort)38 b(for)h(compressed)h(FITS)f(\014les)h(and)f(supp)s(ort)
+f(for)i(IRAF)0 5102 y(format)32 b(image)g(\014les\))g(m)m(uc)m(h)f
+(easier)i(to)f(implemen)m(t.)44 b(Jurek)31 b(Bork)m(o)m(wski)h(wrote)g
+(the)g(Shared)e(Memory)i(driv)m(er,)0 5215 y(and)23 b(Bruce)i(O'Neel)g
+(wrote)f(the)g(driv)m(ers)g(for)f(accessing)j(FITS)d(\014les)h(o)m(v)m
+(er)h(the)f(net)m(w)m(ork)h(using)e(the)i(FTP)-8 b(,)24
+b(HTTP)-8 b(,)0 5328 y(and)30 b(R)m(OOT)g(proto)s(cols.)0
+5488 y(The)45 b(ISDC)g(also)h(pro)m(vided)f(the)h(template)h(parsing)e
+(routines)g(\(written)h(b)m(y)f(Jurek)g(Bork)m(o)m(wski\))i(and)e(the)0
+5601 y(hierarc)m(hical)39 b(grouping)d(routines)h(\(written)h(b)m(y)f
+(Don)h(Jennings\).)60 b(The)37 b(ISDC)f(D)m(AL)i(\(Data)h(Access)f(La)m
+(y)m(er\))0 5714 y(routines)30 b(are)h(la)m(y)m(ered)h(on)e(top)h(of)f
+(CFITSIO)f(and)h(mak)m(e)h(extensiv)m(e)h(use)e(of)h(these)g(features.)
+p eop end
+%%Page: 11 17
+TeXDict begin 11 16 bop 0 299 a Fg(2.7.)72 b(A)m(CKNO)m(WLEDGMENTS)2577
+b Fi(11)0 555 y(Uw)m(e)25 b(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g
+(Netherlands\))g(designed)g(the)g(high-p)s(erformance)f(lexical)j
+(pars-)0 668 y(ing)42 b(algorithm)h(that)f(is)g(used)f(to)i(do)e
+(on-the-\015y)h(\014ltering)g(of)g(FITS)f(tables.)76
+b(This)41 b(algorithm)i(essen)m(tially)0 781 y(pre-compiles)36
+b(the)g(user-supplied)e(selection)k(expression)d(in)m(to)i(a)f(form)g
+(that)g(can)g(b)s(e)f(rapidly)g(ev)-5 b(aluated)37 b(for)0
+894 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 b(Wilson)f(\(RSTX,)f
+(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)f(routines)g(used)g(b)m
+(y)g(CFITSIO)0 1007 y(based)i(on)f(Lammers')h(design,)g(com)m(bined)g
+(with)g(other)g(tec)m(hniques)g(suc)m(h)g(as)g(the)g(CFITSIO)f
+(iterator)i(routine)0 1120 y(to)g(further)e(enhance)h(the)h(data)g(pro)
+s(cessing)f(throughput.)42 b(This)31 b(e\013ort)h(also)g(b)s
+(ene\014ted)e(from)h(a)h(m)m(uc)m(h)f(earlier)0 1233
+y(lexical)25 b(parsing)f(routine)f(that)h(w)m(as)g(dev)m(elop)s(ed)g(b)
+m(y)g(Ken)m(t)g(Blac)m(kburn)f(\(NASA/GSF)m(C\).)i(More)g(recen)m(tly)
+-8 b(,)27 b(Craig)0 1346 y(Markw)m(ardt)i(\(NASA/GSF)m(C\))g(implemen)m
+(ted)g(additional)g(functions)f(\(median,)h(a)m(v)m(erage,)j(stddev\))c
+(and)g(other)0 1458 y(enhancemen)m(ts)j(to)g(the)g(lexical)h(parser.)0
+1619 y(The)40 b(CFITSIO)g(iterator)i(function)e(is)h(lo)s(osely)h
+(based)f(on)f(similar)i(ideas)f(dev)m(elop)s(ed)g(for)g(the)g(XMM)g
+(Data)0 1732 y(Access)31 b(La)m(y)m(er.)0 1892 y(P)m(eter)25
+b(Wilson)g(\(RSTX,)f(NASA/GSF)m(C\))h(wrote)g(the)f(complete)i(set)e
+(of)h(F)-8 b(ortran-callable)27 b(wrapp)s(ers)22 b(for)i(all)h(the)0
+2005 y(CFITSIO)k(routines,)h(whic)m(h)g(in)g(turn)g(rely)g(on)h(the)f
+(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)g(b)m(y)f(Burkhard)f
+(Buro)m(w.)0 2165 y(The)h(syn)m(tax)i(used)e(b)m(y)h(CFITSIO)f(for)g
+(\014ltering)i(or)f(binning)e(input)h(FITS)h(\014les)g(is)g(based)f(on)
+h(ideas)h(dev)m(elop)s(ed)0 2278 y(for)41 b(the)g(AXAF)h(Science)g(Cen)
+m(ter)g(Data)h(Mo)s(del)e(b)m(y)g(Jonathan)g(McDo)m(w)m(ell,)47
+b(An)m(tonella)c(F)-8 b(ruscione,)45 b(Aneta)0 2391 y(Siemigino)m(wsk)
+-5 b(a)27 b(and)e(Bill)i(Jo)m(y)m(e.)41 b(See)26 b(h)m
+(ttp://heasarc.gsfc.nasa.go)m(v/do)s(cs/journal/axa)q(f7.h)m(t)q(ml)32
+b(for)25 b(further)0 2503 y(description)30 b(of)h(the)g(AXAF)g(Data)h
+(Mo)s(del.)0 2664 y(The)j(\014le)g(decompression)g(co)s(de)g(w)m(ere)h
+(tak)m(en)g(directly)g(from)e(the)i(gzip)f(\(GNU)h(zip\))g(program)f
+(dev)m(elop)s(ed)g(b)m(y)0 2777 y(Jean-loup)30 b(Gailly)i(and)e
+(others.)0 2937 y(Doug)h(Mink,)g(SA)m(O,)f(pro)m(vided)g(the)h
+(routines)f(for)g(con)m(v)m(erting)i(IRAF)f(format)g(images)g(in)m(to)g
+(FITS)f(format.)0 3097 y(Martin)j(Reinec)m(k)m(e)i(\(Max)f(Planc)m(k)f
+(Institute,)h(Garc)m(hing\)\))g(pro)m(vided)f(the)g(mo)s(di\014cations)
+f(to)i(cfortran.h)e(that)0 3210 y(are)d(necessary)h(to)f(supp)s(ort)e
+(64-bit)k(in)m(teger)f(v)-5 b(alues)29 b(when)f(calling)i(C)f(routines)
+g(from)f(fortran)h(programs.)39 b(The)0 3323 y(cfortran.h)30
+b(macros)h(w)m(ere)g(originally)h(dev)m(elop)s(ed)e(b)m(y)h(Burkhard)e
+(Buro)m(w)h(\(CERN\).)0 3483 y(Julian)f(T)-8 b(a)m(ylor)31
+b(\(ESO,)e(Garc)m(hing\))i(pro)m(vided)e(the)g(fast)h(b)m(yte-sw)m
+(apping)g(algorithms)h(that)f(use)f(the)h(SSE2)f(and)0
+3596 y(SSSE3)g(mac)m(hine)i(instructions)f(a)m(v)-5 b(ailable)33
+b(on)d(x86)p 1784 3596 28 4 v 34 w(64)h(CPUs.)0 3756
+y(In)c(addition,)i(man)m(y)f(other)g(p)s(eople)g(ha)m(v)m(e)h(made)f(v)
+-5 b(aluable)29 b(con)m(tributions)f(to)h(the)f(dev)m(elopmen)m(t)h(of)
+f(CFITSIO.)0 3869 y(These)i(include)g(\(with)h(ap)s(ologies)h(to)f
+(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m(tly)g(b)s(een)d
+(omitted\):)0 4029 y(Stev)m(e)g(Allen,)g(Carl)f(Ak)m(erlof,)h(Keith)f
+(Arnaud,)g(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t)f(Blac)m(kburn,)h
+(G)f(Bo)s(dammer,)0 4142 y(Romk)m(e)h(Bon)m(tek)m(o)s(e,)i(Lucio)d
+(Chiapp)s(etti,)g(Keith)g(Costorf,)g(Robin)g(Corb)s(et,)g(John)e(Da)m
+(vis,)k(Ric)m(hard)e(Fink,)h(Ning)0 4255 y(Gan,)g(Emily)e(Greene,)i(Jo)
+s(e)f(Harrington,)h(Cheng)e(Ho,)i(Phil)e(Ho)s(dge,)i(Jim)f(Ingham,)g(Y)
+-8 b(oshitak)j(a)29 b(Ishisaki,)f(Diab)0 4368 y(Jerius,)j(Mark)h
+(Levine,)g(T)-8 b(o)s(dd)30 b(Karak)-5 b(askian,)32 b(Edw)m(ard)f
+(King,)g(Scott)i(Ko)s(c)m(h,)e(Claire)h(Larkin,)f(Rob)h(Managan,)0
+4481 y(Eric)38 b(Mandel,)i(John)d(Matto)m(x,)43 b(Carsten)37
+b(Mey)m(er,)42 b(Emi)37 b(Miy)m(ata,)43 b(Stefan)38 b(Mo)s(c)m(hnac)m
+(ki,)j(Mik)m(e)f(Noble,)g(Oliv)m(er)0 4594 y(Ob)s(erdorf,)c(Cliv)m(e)i
+(P)m(age,)i(Arvind)35 b(P)m(armar,)j(Je\013)f(P)m(edelt)m(y)-8
+b(,)40 b(Tim)c(P)m(earson,)j(Maren)e(Purv)m(es,)h(Scott)f(Randall,)0
+4706 y(Chris)d(Rogers,)j(Arnold)e(Rots,)i(Barry)f(Sc)m(hlesinger,)h
+(Robin)e(Stebbins,)g(Andrew)f(Szymk)m(o)m(wiak,)k(Allyn)e(T)-8
+b(en-)0 4819 y(nan)m(t,)31 b(P)m(eter)g(T)-8 b(eub)s(en,)30
+b(James)g(Theiler,)h(Doug)g(T)-8 b(o)s(dy)g(,)31 b(Shiro)e(Ueno,)j
+(Stev)m(e)f(W)-8 b(alton,)33 b(Arc)m(hie)e(W)-8 b(arno)s(c)m(k,)32
+b(Alan)0 4932 y(W)-8 b(atson,)32 b(Dan)f(Whipple,)f(Wim)h(Wimmers,)g(P)
+m(eter)g(Y)-8 b(oung,)31 b(Jianjun)e(Xu,)h(and)g(Nelson)h(Zarate.)p
+eop end
+%%Page: 12 18
+TeXDict begin 12 17 bop 0 299 a Fi(12)1851 b Fg(CHAPTER)30
+b(2.)111 b(CREA)-8 b(TING)31 b(FITSIO/CFITSIO)p eop end
+%%Page: 13 19
+TeXDict begin 13 18 bop 0 1225 a Ff(Chapter)65 b(3)0
+1687 y Fl(A)78 b(FITS)f(Primer)0 2180 y Fi(This)23 b(section)j(giv)m
+(es)f(a)g(brief)e(o)m(v)m(erview)j(of)e(the)h(structure)e(of)i(FITS)e
+(\014les.)38 b(Users)24 b(should)g(refer)f(to)i(the)g(do)s(cumen-)0
+2293 y(tation)j(a)m(v)-5 b(ailable)30 b(from)d(the)g(NOST,)f(as)i
+(describ)s(ed)e(in)h(the)g(in)m(tro)s(duction,)h(for)f(more)g(detailed)
+i(information)e(on)0 2406 y(FITS)j(formats.)0 2566 y(FITS)37
+b(w)m(as)g(\014rst)g(dev)m(elop)s(ed)h(in)f(the)g(late)i(1970's)g(as)f
+(a)f(standard)g(data)h(in)m(terc)m(hange)h(format)f(b)s(et)m(w)m(een)g
+(v)-5 b(ar-)0 2679 y(ious)38 b(astronomical)h(observ)-5
+b(atories.)64 b(Since)37 b(then)g(FITS)g(has)h(b)s(ecome)g(the)g
+(defacto)g(standard)f(data)i(format)0 2791 y(supp)s(orted)29
+b(b)m(y)h(most)h(astronomical)h(data)f(analysis)g(soft)m(w)m(are)g(pac)
+m(k)-5 b(ages.)0 2952 y(A)34 b(FITS)f(\014le)g(consists)h(of)g(one)g
+(or)g(more)g(Header)g(+)f(Data)i(Units)f(\(HDUs\),)i(where)d(the)h
+(\014rst)f(HDU)h(is)g(called)0 3065 y(the)j(`Primary)f(HDU',)i(or)f
+(`Primary)f(Arra)m(y'.)60 b(The)36 b(primary)g(arra)m(y)h(con)m(tains)h
+(an)e(N-dimensional)i(arra)m(y)f(of)0 3177 y(pixels,)32
+b(suc)m(h)g(as)f(a)h(1-D)h(sp)s(ectrum,)e(a)h(2-D)h(image,)g(or)f(a)g
+(3-D)g(data)h(cub)s(e.)43 b(Six)31 b(di\013eren)m(t)h(primary)f(datat)m
+(yp)s(es)0 3290 y(are)g(supp)s(orted:)39 b(Unsigned)30
+b(8-bit)h(b)m(ytes,)g(16,)g(32,)h(and)e(64-bit)h(signed)g(in)m(tegers,)
+h(and)d(32)j(and)d(64-bit)j(\015oating)0 3403 y(p)s(oin)m(t)d(reals.)41
+b(FITS)29 b(also)i(has)e(a)h(con)m(v)m(en)m(tion)h(for)e(storing)h
+(unsigned)f(in)m(tegers)h(\(see)h(the)e(later)i(section)f(en)m(titled)0
+3516 y(`Unsigned)h(In)m(tegers')h(for)f(more)g(details\).)43
+b(The)31 b(primary)f(HDU)i(ma)m(y)f(also)h(consist)g(of)f(only)g(a)g
+(header)g(with)g(a)0 3629 y(n)m(ull)f(arra)m(y)h(con)m(taining)h(no)e
+(data)h(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s(er)e(of)h(additional)i
+(HDUs)f(ma)m(y)g(follo)m(w)h(the)e(primary)g(arra)m(y;)i(these)f
+(additional)h(HDUs)f(are)g(called)0 3902 y(FITS)d(`extensions'.)41
+b(There)30 b(are)h(curren)m(tly)f(3)h(t)m(yp)s(es)g(of)f(extensions)h
+(de\014ned)e(b)m(y)h(the)h(FITS)f(standard:)136 4171
+y Fc(\017)46 b Fi(Image)31 b(Extension)g(-)g(a)f(N-dimensional)h(arra)m
+(y)g(of)g(pixels,)g(lik)m(e)g(in)f(a)h(primary)e(arra)m(y)136
+4368 y Fc(\017)46 b Fi(ASCI)s(I)29 b(T)-8 b(able)31 b(Extension)g(-)f
+(ro)m(ws)h(and)e(columns)h(of)h(data)g(in)f(ASCI)s(I)f(c)m(haracter)j
+(format)136 4564 y Fc(\017)46 b Fi(Binary)31 b(T)-8 b(able)31
+b(Extension)f(-)h(ro)m(ws)f(and)g(columns)g(of)h(data)g(in)f(binary)f
+(represen)m(tation)0 4833 y(In)k(eac)m(h)i(case)g(the)f(HDU)h(consists)
+g(of)f(an)g(ASCI)s(I)e(Header)i(Unit)h(follo)m(w)m(ed)g(b)m(y)f(an)g
+(optional)h(Data)g(Unit.)52 b(F)-8 b(or)0 4946 y(historical)37
+b(reasons,)g(eac)m(h)f(Header)g(or)g(Data)h(unit)e(m)m(ust)g(b)s(e)g
+(an)g(exact)i(m)m(ultiple)f(of)g(2880)h(8-bit)f(b)m(ytes)g(long.)0
+5059 y(An)m(y)30 b(un)m(used)g(space)g(is)h(padded)e(with)h(\014ll)g(c)
+m(haracters)i(\(ASCI)s(I)d(blanks)h(or)h(zeros\).)0 5219
+y(Eac)m(h)i(Header)f(Unit)h(consists)g(of)f(an)m(y)g(n)m(um)m(b)s(er)f
+(of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images')
+g(whic)m(h)0 5332 y(ha)m(v)m(e)f(the)e(general)i(form:)95
+5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95
+5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i
+(value)1905 5942 y Fi(13)p eop end
+%%Page: 14 20
+TeXDict begin 14 19 bop 0 299 a Fi(14)2398 b Fg(CHAPTER)30
+b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fi(The)35 b(k)m(eyw)m(ord)i
+(names)f(ma)m(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)g(and)e
+(can)h(only)h(con)m(tain)g(upp)s(ercase)e(letters,)k(the)0
+668 y(digits)25 b(0-9,)i(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c)
+m(haracter.)41 b(The)24 b(k)m(eyw)m(ord)h(name)g(is)f(\(usually\))h
+(follo)m(w)m(ed)i(b)m(y)d(an)0 781 y(equals)29 b(sign)g(and)f(a)g
+(space)i(c)m(haracter)g(\(=)e(\))h(in)f(columns)h(9)g(-)f(10)i(of)f
+(the)f(record,)h(follo)m(w)m(ed)i(b)m(y)d(the)h(v)-5
+b(alue)29 b(of)g(the)0 894 y(k)m(eyw)m(ord)34 b(whic)m(h)g(ma)m(y)g(b)s
+(e)f(either)h(an)g(in)m(teger,)i(a)e(\015oating)g(p)s(oin)m(t)g(n)m(um)
+m(b)s(er,)g(a)g(c)m(haracter)h(string)e(\(enclosed)i(in)0
+1007 y(single)28 b(quotes\),)i(or)e(a)g(b)s(o)s(olean)g(v)-5
+b(alue)28 b(\(the)g(letter)h(T)f(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m
+(y)h(also)f(ha)m(v)m(e)h(a)g(n)m(ull)e(or)h(unde\014ned)0
+1120 y(v)-5 b(alue)31 b(if)f(there)h(is)f(no)g(sp)s(eci\014ed)g(v)-5
+b(alue)31 b(string,)g(as)f(in)g(the)h(second)f(example.)0
+1280 y(The)42 b(last)h(k)m(eyw)m(ord)g(in)f(the)h(header)f(is)g(alw)m
+(a)m(ys)i(the)f(`END')g(k)m(eyw)m(ord)g(whic)m(h)f(has)g(no)h(v)-5
+b(alue)42 b(or)h(commen)m(t)0 1393 y(\014elds.)d(There)30
+b(are)h(man)m(y)f(rules)g(go)m(v)m(erning)i(the)e(exact)i(format)f(of)f
+(a)h(k)m(eyw)m(ord)f(record)h(\(see)g(the)f(NOST)g(FITS)0
+1506 y(Standard\))h(so)h(it)g(is)f(b)s(etter)h(to)g(rely)g(on)f
+(standard)g(in)m(terface)i(soft)m(w)m(are)g(lik)m(e)g(FITSIO)d(to)j
+(correctly)g(construct)0 1619 y(or)d(to)h(parse)g(the)f(k)m(eyw)m(ord)h
+(records)f(rather)g(than)h(try)f(to)h(deal)g(directly)g(with)f(the)g
+(ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)f(b)s
+(egins)g(with)g(a)g(series)h(of)f(required)g(k)m(eyw)m(ords)g(whic)m(h)
+g(dep)s(end)f(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892
+y(These)31 b(required)g(k)m(eyw)m(ords)h(sp)s(ecify)g(the)f(size)i(and)
+e(format)h(of)g(the)g(follo)m(wing)h(Data)g(Unit.)45
+b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)h(other)f(optional)g(k)m
+(eyw)m(ords)g(to)h(describ)s(e)e(other)g(asp)s(ects)h(of)g(the)g(data,)
+g(suc)m(h)g(as)g(the)f(units)g(or)h(scaling)0 2118 y(v)-5
+b(alues.)44 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30
+b(k)m(eyw)m(ords)i(are)g(also)g(frequen)m(tly)g(added)e(to)i(further)e
+(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391
+y(The)36 b(optional)h(Data)h(Unit)f(immediately)g(follo)m(ws)h(the)e
+(last)h(2880-b)m(yte)i(blo)s(c)m(k)e(in)f(the)g(Header)h(Unit.)59
+b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)f
+(and)f(only)g(consist)h(of)g(the)f(Header)h(Unit.)0 2664
+y(If)24 b(there)i(is)f(more)g(than)f(one)h(HDU)h(in)f(the)g(FITS)f
+(\014le,)i(then)f(the)g(Header)h(Unit)f(of)g(the)g(next)g(HDU)h
+(immediately)0 2777 y(follo)m(ws)g(the)e(last)i(2880-b)m(yte)h(blo)s(c)
+m(k)e(of)g(the)f(previous)g(Data)j(Unit)d(\(or)h(Header)g(Unit)g(if)f
+(there)h(is)g(no)f(Data)i(Unit\).)0 2937 y(The)k(main)g(required)g(k)m
+(eyw)m(ords)g(in)g(FITS)g(primary)g(arra)m(ys)g(or)h(image)g
+(extensions)g(are:)136 3172 y Fc(\017)46 b Fi(BITPIX)33
+b({)h(de\014nes)e(the)i(datat)m(yp)s(e)g(of)f(the)g(arra)m(y:)47
+b(8,)35 b(16,)g(32,)g(64,)g(-32,)g(-64)g(for)e(unsigned)f(8{bit)i(b)m
+(yte,)227 3284 y(16{bit)27 b(signed)e(in)m(teger,)i(32{bit)g(signed)e
+(in)m(teger,)j(64{bit)e(signed)f(in)m(teger,)j(32{bit)e(IEEE)f
+(\015oating)h(p)s(oin)m(t,)227 3397 y(and)k(64{bit)i(IEEE)e(double)f
+(precision)i(\015oating)g(p)s(oin)m(t,)g(resp)s(ectiv)m(ely)-8
+b(.)136 3585 y Fc(\017)46 b Fi(NAXIS)30 b({)h(the)g(n)m(um)m(b)s(er)e
+(of)h(dimensions)g(in)g(the)h(arra)m(y)-8 b(,)31 b(usually)f(0,)h(1,)g
+(2,)g(3,)g(or)g(4.)136 3773 y Fc(\017)46 b Fi(NAXISn)30
+b({)h(\(n)f(ranges)g(from)g(1)h(to)g(NAXIS\))g(de\014nes)e(the)i(size)g
+(of)g(eac)m(h)g(dimension.)0 4008 y(FITS)e(tables)i(start)g(with)f(the)
+g(k)m(eyw)m(ord)g(XTENSION)g(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f
+(tables\))i(or)f(XTENSION)f(=)0 4120 y(`BINT)-8 b(ABLE')32
+b(\(for)e(binary)g(tables\))h(and)f(ha)m(v)m(e)i(the)e(follo)m(wing)i
+(main)e(k)m(eyw)m(ords:)136 4355 y Fc(\017)46 b Fi(TFIELDS)30
+b({)h(n)m(um)m(b)s(er)e(of)h(\014elds)g(or)h(columns)f(in)g(the)g
+(table)136 4543 y Fc(\017)46 b Fi(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of)
+h(ro)m(ws)h(in)f(the)g(table)136 4731 y Fc(\017)46 b
+Fi(TTYPEn)29 b({)i(for)f(eac)m(h)i(column)e(\(n)g(ranges)h(from)f(1)g
+(to)h(TFIELDS\))g(giv)m(es)g(the)g(name)f(of)h(the)f(column)136
+4918 y Fc(\017)46 b Fi(TF)m(ORMn)31 b({)f(the)h(datat)m(yp)s(e)g(of)g
+(the)f(column)136 5106 y Fc(\017)46 b Fi(TUNITn)30 b({)g(the)h(ph)m
+(ysical)g(units)f(of)g(the)h(column)f(\(optional\))0
+5341 y(Users)k(should)f(refer)h(to)h(the)f(FITS)g(Supp)s(ort)e(O\016ce)
+i(at)h Fe(http://fits.gsfc.nasa.gov)27 b Fi(for)34 b(further)f(infor-)0
+5454 y(mation)e(ab)s(out)f(the)h(FITS)e(format)i(and)f(related)h(soft)m
+(w)m(are)h(pac)m(k)-5 b(ages.)p eop end
+%%Page: 15 21
+TeXDict begin 15 20 bop 0 1225 a Ff(Chapter)65 b(4)0
+1687 y Fl(FITSIO)76 b(Con)-6 b(v)g(en)g(tions)76 b(and)h(Guidelines)0
+2216 y Fd(4.1)135 b(CFITSIO)44 b(Size)h(Limitations)0
+2524 y Fi(CFITSIO)31 b(places)i(few)g(restrictions)g(on)g(the)f(size)i
+(of)e(FITS)g(\014les)h(that)g(it)g(reads)f(or)h(writes.)47
+b(There)32 b(are)h(a)g(few)0 2636 y(limits,)e(ho)m(w)m(ev)m(er,)h(whic)
+m(h)e(ma)m(y)h(a\013ect)h(some)f(extreme)g(cases:)0 2797
+y(1.)43 b(The)31 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(FITS)f(\014les)h
+(that)h(ma)m(y)g(b)s(e)e(sim)m(ultaneously)i(op)s(ened)f(b)m(y)g
+(CFITSIO)e(is)i(set)h(b)m(y)0 2910 y(NMAXFILES)i(as)g(de\014ned)f(in)h
+(\014tsio2.h.)52 b(It)34 b(is)g(curren)m(tly)g(set)h(=)f(300)h(b)m(y)f
+(default.)52 b(CFITSIO)32 b(will)i(allo)s(cate)0 3022
+y(ab)s(out)f(80)g(*)h(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g(in)m
+(ternal)g(use.)48 b(Note)34 b(that)g(the)f(underlying)f(C)g(compiler)0
+3135 y(or)39 b(op)s(erating)h(system,)j(ma)m(y)d(ha)m(v)m(e)g(a)g
+(smaller)g(limit)h(on)e(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened)e
+(\014les.)68 b(The)39 b(C)h(sym)m(b)s(olic)0 3248 y(constan)m(t)31
+b(F)m(OPEN)p 690 3248 28 4 v 34 w(MAX)f(is)g(in)m(tended)g(to)h
+(de\014ne)e(the)i(maxim)m(um)f(n)m(um)m(b)s(er)e(of)j(\014les)f(that)g
+(ma)m(y)h(op)s(en)e(at)i(once)0 3361 y(\(including)g(an)m(y)g(other)g
+(text)h(or)f(binary)f(\014les)h(that)h(ma)m(y)f(b)s(e)g(op)s(en,)f(not)
+h(just)g(FITS)f(\014les\).)43 b(On)30 b(some)h(systems)0
+3474 y(it)g(has)f(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h
+(maxim)m(um)h(of)f(255)i(op)s(ened)e(\014les.)0 3634
+y(2.)54 b(By)35 b(default,)h(CFITSIO)d(can)i(handle)g(FITS)f(\014les)g
+(up)g(to)h(2.1)h(GB)g(in)e(size)i(\(2**31)h(b)m(ytes\).)54
+b(This)34 b(\014le)h(size)0 3747 y(limit)41 b(is)g(often)f(imp)s(osed)g
+(b)m(y)g(32-bit)i(op)s(erating)e(systems.)71 b(More)41
+b(recen)m(tly)-8 b(,)45 b(as)c(64-bit)g(op)s(erating)g(systems)0
+3860 y(b)s(ecome)33 b(more)g(common,)g(an)g(industry-wide)e(standard)h
+(\(at)i(least)f(on)g(Unix)f(systems\))h(has)g(b)s(een)f(dev)m(elop)s
+(ed)0 3973 y(to)39 b(supp)s(ort)d(larger)i(sized)h(\014les)f(\(see)g(h)
+m(ttp://ftp.sas.com/standards/large.\014le/\).)69 b(Starting)38
+b(with)f(v)m(ersion)0 4086 y(2.1)45 b(of)e(CFITSIO,)f(larger)i(FITS)f
+(\014les)g(up)g(to)h(6)g(terab)m(ytes)h(in)e(size)h(ma)m(y)g(b)s(e)f
+(read)g(and)g(written)h(on)f(sup-)0 4199 y(p)s(orted)f(platforms.)76
+b(In)42 b(order)g(to)h(supp)s(ort)e(these)h(larger)h(\014les,)j
+(CFITSIO)41 b(m)m(ust)h(b)s(e)g(compiled)h(with)f(the)0
+4312 y('-D)p 129 4312 V 34 w(LAR)m(GEFILE)p 696 4312
+V 33 w(SOUR)m(CE')g(and)g(`-D)p 1491 4312 V 34 w(FILE)p
+1736 4312 V 33 w(OFFSET)p 2137 4312 V 32 w(BITS=64')h(compiler)g
+(\015ags.)78 b(Some)43 b(platforms)0 4425 y(ma)m(y)c(also)g(require)f
+(the)g(`-D)p 1002 4425 V 34 w(LAR)m(GE)p 1358 4425 V
+33 w(FILES')g(compiler)h(\015ag.)64 b(This)38 b(causes)g(the)h
+(compiler)g(to)g(allo)s(cate)h(8-)0 4538 y(b)m(ytes)k(instead)g(of)g
+(4-b)m(ytes)h(for)f(the)g(`o\013)p 1473 4538 V 33 w(t')g(datat)m(yp)s
+(e)h(whic)m(h)f(is)f(used)g(to)i(store)f(\014le)g(o\013set)h(p)s
+(ositions.)81 b(It)0 4650 y(app)s(ears)31 b(that)i(in)e(most)i(cases)g
+(it)f(is)g(not)g(necessary)h(to)f(also)h(include)f(these)g(compiler)h
+(\015ags)f(when)f(compiling)0 4763 y(programs)f(that)h(link)f(to)h(the)
+g(CFITSIO)e(library)-8 b(.)0 4924 y(If)21 b(CFITSIO)e(is)i(compiled)h
+(with)f(the)g(-D)p 1386 4924 V 33 w(LAR)m(GEFILE)p 1952
+4924 V 34 w(SOUR)m(CE)f(and)g(-D)p 2654 4924 V 34 w(FILE)p
+2899 4924 V 33 w(OFFSET)p 3300 4924 V 32 w(BITS=64)h(\015ags)0
+5036 y(on)36 b(a)g(platform)g(that)g(supp)s(orts)e(large)j(\014les,)h
+(then)d(it)i(can)f(read)g(and)f(write)h(FITS)f(\014les)h(that)g(con)m
+(tain)h(up)e(to)0 5149 y(2**31)k(2880-b)m(yte)g(FITS)d(records,)j(or)d
+(appro)m(ximately)i(6)f(terab)m(ytes)h(in)f(size.)60
+b(It)37 b(is)g(still)h(required)d(that)j(the)0 5262 y(v)-5
+b(alue)30 b(of)f(the)g(NAXISn)f(and)h(PCOUNT)f(k)m(eyw)m(ords)h(in)g
+(eac)m(h)h(extension)g(b)s(e)e(within)h(the)g(range)h(of)f(a)g(signed)g
+(4-)0 5375 y(b)m(yte)c(in)m(teger)h(\(max)f(v)-5 b(alue)26
+b(=)e(2,147,483,648\).)44 b(Th)m(us,)25 b(eac)m(h)h(dimension)e(of)h
+(an)f(image)i(\(giv)m(en)g(b)m(y)f(the)g(NAXISn)0 5488
+y(k)m(eyw)m(ords\),)32 b(the)f(total)i(width)d(of)h(a)g(table)h
+(\(NAXIS1)g(k)m(eyw)m(ord\),)g(the)f(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g
+(in)f(a)h(table)h(\(NAXIS2)0 5601 y(k)m(eyw)m(ord\),)c(and)d(the)h
+(total)i(size)f(of)f(the)g(v)-5 b(ariable-length)28 b(arra)m(y)e(heap)g
+(in)g(binary)f(tables)i(\(PCOUNT)e(k)m(eyw)m(ord\))0
+5714 y(m)m(ust)30 b(b)s(e)g(less)h(than)f(this)g(limit.)1905
+5942 y(15)p eop end
+%%Page: 16 22
+TeXDict begin 16 21 bop 0 299 a Fi(16)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(Curren)m(tly)-8 b(,)31 b(supp)s(ort)e(for)i(large)h(\014les)f
+(within)f(CFITSIO)f(has)i(b)s(een)f(tested)i(on)f(the)g(Lin)m(ux,)g
+(Solaris,)g(and)f(IBM)0 668 y(AIX)g(op)s(erating)h(systems.)0
+1133 y Fd(4.2)135 b(Multiple)46 b(Access)e(to)i(the)f(Same)g(FITS)f
+(File)0 1409 y Fi(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)i(read)f
+(and)g(write)h(access)g(to)h(m)m(ultiple)f(HDUs)g(in)f(the)h(same)g
+(FITS)f(\014le.)0 1522 y(Th)m(us,)43 b(one)e(can)h(op)s(en)e(the)h
+(same)h(FITS)e(\014le)h(t)m(wice)i(within)d(a)i(single)f(program)g(and)
+g(mo)m(v)m(e)h(to)g(2)f(di\013eren)m(t)0 1635 y(HDUs)30
+b(in)f(the)h(\014le,)g(and)f(then)g(read)h(and)e(write)i(data)g(or)g(k)
+m(eyw)m(ords)g(to)g(the)g(2)f(extensions)i(just)d(as)i(if)g(one)f(w)m
+(ere)0 1748 y(accessing)f(2)f(completely)h(separate)f(FITS)f(\014les.)
+39 b(Since)27 b(in)f(general)h(it)g(is)g(not)g(p)s(ossible)f(to)h(ph)m
+(ysically)g(op)s(en)f(the)0 1861 y(same)36 b(\014le)g(t)m(wice)h(and)e
+(then)g(exp)s(ect)h(to)g(b)s(e)f(able)h(to)h(sim)m(ultaneously)f(\(or)g
+(in)f(alternating)i(succession\))g(write)0 1974 y(to)e(2)f(di\013eren)m
+(t)h(lo)s(cations)h(in)d(the)i(\014le,)g(CFITSIO)e(recognizes)j(when)d
+(the)h(\014le)g(to)h(b)s(e)f(op)s(ened)f(\(in)h(the)h(call)g(to)0
+2087 y(\014ts)p 127 2087 28 4 v 32 w(op)s(en)p 349 2087
+V 33 w(\014le\))29 b(has)f(already)h(b)s(een)f(op)s(ened)g(and)g
+(instead)h(of)g(actually)h(op)s(ening)e(the)h(\014le)g(again,)h(just)e
+(logically)0 2199 y(links)i(the)h(new)f(\014le)h(to)g(the)g(old)f
+(\014le.)42 b(\(This)30 b(only)h(applies)f(if)h(the)g(\014le)f(is)h(op)
+s(ened)f(more)g(than)g(once)i(within)e(the)0 2312 y(same)e(program,)g
+(and)f(do)s(es)h(not)f(prev)m(en)m(t)i(the)f(same)g(\014le)f(from)g(b)s
+(eing)h(sim)m(ultaneously)g(op)s(ened)f(b)m(y)g(more)h(than)0
+2425 y(one)h(program\).)40 b(Then)28 b(b)s(efore)g(CFITSIO)f(reads)h
+(or)h(writes)g(to)g(either)g(\(logical\))j(\014le,)d(it)g(mak)m(es)h
+(sure)d(that)j(an)m(y)0 2538 y(mo)s(di\014cations)i(made)f(to)h(the)g
+(other)g(\014le)f(ha)m(v)m(e)i(b)s(een)e(completely)i(\015ushed)c(from)
+i(the)h(in)m(ternal)g(bu\013ers)f(to)h(the)0 2651 y(\014le.)44
+b(Th)m(us,)30 b(in)h(principle,)h(one)f(could)g(op)s(en)g(a)h(\014le)f
+(t)m(wice,)i(in)e(one)h(case)g(p)s(oin)m(ting)g(to)g(the)f(\014rst)g
+(extension)h(and)0 2764 y(in)i(the)h(other)g(p)s(oin)m(ting)f(to)i(the)
+e(2nd)g(extension)i(and)d(then)i(write)f(data)i(to)f(b)s(oth)f
+(extensions,)i(in)e(an)m(y)h(order,)0 2877 y(without)25
+b(danger)h(of)f(corrupting)h(the)f(\014le,)i(There)e(ma)m(y)h(b)s(e)f
+(some)h(e\016ciency)g(p)s(enalties)g(in)f(doing)h(this)f(ho)m(w)m(ev)m
+(er,)0 2990 y(since)j(CFITSIO)f(has)h(to)h(\015ush)d(all)j(the)f(in)m
+(ternal)h(bu\013ers)e(related)i(to)g(one)f(\014le)g(b)s(efore)g(switc)m
+(hing)g(to)h(the)f(other,)0 3103 y(so)i(it)h(w)m(ould)f(still)h(b)s(e)f
+(pruden)m(t)f(to)i(minimize)g(the)f(n)m(um)m(b)s(er)f(of)i(times)f(one)
+h(switc)m(hes)g(bac)m(k)g(and)e(forth)h(b)s(et)m(w)m(een)0
+3216 y(doing)g(I/O)h(to)g(di\013eren)m(t)g(HDUs)g(in)f(the)g(same)h
+(\014le.)0 3680 y Fd(4.3)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g
+(\(CHDU\))0 3957 y Fi(In)32 b(general,)j(a)f(FITS)e(\014le)i(can)f(con)
+m(tain)h(m)m(ultiple)g(Header)g(Data)h(Units,)f(also)g(called)g
+(extensions.)49 b(CFITSIO)0 4070 y(only)38 b(op)s(erates)h(within)f
+(one)g(HDU)h(at)g(an)m(y)g(giv)m(en)g(time,)i(and)d(the)g(curren)m(tly)
+g(selected)i(HDU)f(is)f(called)i(the)0 4183 y(Curren)m(t)f(Header)h
+(Data)h(Unit)f(\(CHDU\).)h(When)f(a)g(FITS)f(\014le)h(is)f(\014rst)g
+(created)i(or)f(op)s(ened)f(the)h(CHDU)g(is)0 4295 y(automatically)28
+b(de\014ned)23 b(to)j(b)s(e)e(the)h(\014rst)f(HDU)i(\(i.e.,)h(the)e
+(primary)f(arra)m(y\).)40 b(CFITSIO)23 b(routines)i(are)g(pro)m(vided)0
+4408 y(to)36 b(mo)m(v)m(e)h(to)g(and)e(op)s(en)g(an)m(y)h(other)g
+(existing)g(HDU)h(within)e(the)h(FITS)f(\014le)g(or)h(to)g(app)s(end)e
+(or)i(insert)f(a)h(new)0 4521 y(HDU)31 b(in)f(the)h(FITS)e(\014le)i
+(whic)m(h)f(then)g(b)s(ecomes)h(the)f(CHDU.)0 4986 y
+Fd(4.4)135 b(Subroutine)45 b(Names)0 5262 y Fi(All)26
+b(FITSIO)f(subroutine)g(names)h(b)s(egin)f(with)h(the)g(letters)h('ft')
+f(to)h(distinguish)e(them)h(from)f(other)h(subroutines)0
+5375 y(and)34 b(are)h(5)g(or)f(6)h(c)m(haracters)h(long.)54
+b(Users)34 b(should)g(not)g(name)h(their)g(o)m(wn)f(subroutines)f(b)s
+(eginning)h(with)g('ft')0 5488 y(to)e(a)m(v)m(oid)i(con\015icts.)45
+b(\(The)32 b(SPP)f(in)m(terface)i(routines)e(all)i(b)s(egin)e(with)h
+('fs'\).)45 b(Subroutines)30 b(whic)m(h)h(read)h(or)g(get)0
+5601 y(information)e(from)g(the)h(FITS)e(\014le)h(ha)m(v)m(e)i(names)e
+(b)s(eginning)f(with)h('ftg...'.)43 b(Subroutines)28
+b(whic)m(h)i(write)g(or)h(put)0 5714 y(information)g(in)m(to)g(the)g
+(FITS)e(\014le)i(ha)m(v)m(e)g(names)g(b)s(eginning)e(with)h('ftp...'.)p
+eop end
+%%Page: 17 23
+TeXDict begin 17 22 bop 0 299 a Fg(4.5.)72 b(SUBR)m(OUTINE)30
+b(F)-10 b(AMILIES)30 b(AND)h(D)m(A)-8 b(T)g(A)g(TYPES)1697
+b Fi(17)0 555 y Fd(4.5)135 b(Subroutine)45 b(F)-11 b(amilies)46
+b(and)f(Datat)l(yp)t(es)0 805 y Fi(Man)m(y)h(of)g(the)g(subroutines)e
+(come)j(in)e(families)h(whic)m(h)g(di\013er)f(only)h(in)f(the)h(datat)m
+(yp)s(e)g(of)g(the)f(asso)s(ciated)0 918 y(parameter\(s\))34
+b(.)47 b(The)32 b(datat)m(yp)s(e)i(of)f(these)g(subroutines)e(is)i
+(indicated)g(b)m(y)g(the)g(last)g(letter)h(of)f(the)g(subroutine)0
+1031 y(name)d(\(e.g.,)j('j')d(in)g('ftpkyj'\))h(as)f(follo)m(ws:)382
+1284 y Fe(x)47 b(-)h(bit)382 1397 y(b)f(-)h(character*1)c(\(unsigned)i
+(byte\))382 1510 y(i)h(-)h(short)e(integer)g(\(I*2\))382
+1623 y(j)h(-)h(integer)e(\(I*4,)g(32-bit)g(integer\))382
+1735 y(k)h(-)h(long)e(long)h(integer)f(\(I*8,)g(64-bit)g(integer\))382
+1848 y(e)h(-)h(real)e(exponential)f(floating)h(point)g(\(R*4\))382
+1961 y(f)h(-)h(real)e(fixed-format)f(floating)g(point)i(\(R*4\))382
+2074 y(d)g(-)h(double)e(precision)f(real)i(floating-point)d(\(R*8\))382
+2187 y(g)j(-)h(double)e(precision)f(fixed-format)g(floating)g(point)h
+(\(R*8\))382 2300 y(c)h(-)h(complex)e(reals)g(\(pairs)g(of)h(R*4)g
+(values\))382 2413 y(m)g(-)h(double)e(precision)f(complex)h(\(pairs)g
+(of)h(R*8)g(values\))382 2526 y(l)g(-)h(logical)e(\(L*4\))382
+2639 y(s)h(-)h(character)d(string)0 2891 y Fi(When)23
+b(dealing)h(with)f(the)g(FITS)g(b)m(yte)g(datat)m(yp)s(e,)j(it)e(is)f
+(imp)s(ortan)m(t)h(to)f(remem)m(b)s(er)g(that)h(the)f(ra)m(w)g(v)-5
+b(alues)24 b(\(b)s(efore)0 3004 y(an)m(y)h(scaling)g(b)m(y)f(the)h
+(BSCALE)e(and)h(BZER)m(O,)g(or)h(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m
+(ord)i(v)-5 b(alues\))25 b(in)f(b)m(yte)h(arra)m(ys)0
+3117 y(\(BITPIX)37 b(=)f(8\))h(or)f(b)m(yte)i(columns)e(\(TF)m(ORMn)h
+(=)f('B'\))h(are)g(in)m(terpreted)g(as)g(unsigned)e(b)m(ytes)i(with)g
+(v)-5 b(alues)0 3230 y(ranging)40 b(from)f(0)i(to)f(255.)71
+b(Some)40 b(F)-8 b(ortran)40 b(compilers)h(supp)s(ort)d(a)i
+(non-standard)f(b)m(yte)h(datat)m(yp)s(e)h(suc)m(h)f(as)0
+3343 y(INTEGER*1,)34 b(LOGICAL*1,)g(or)f(BYTE,)g(whic)m(h)f(can)h
+(sometimes)h(b)s(e)e(used)g(instead)h(of)g(CHARA)m(CTER*1)0
+3456 y(v)-5 b(ariables.)39 b(Man)m(y)23 b(mac)m(hines)g(p)s(ermit)g
+(passing)f(a)h(n)m(umeric)g(datat)m(yp)s(e)g(\(suc)m(h)g(as)g
+(INTEGER*1\))h(to)f(the)g(FITSIO)0 3569 y(subroutines)41
+b(whic)m(h)i(are)g(exp)s(ecting)g(a)g(CHARA)m(CTER*1)h(datat)m(yp)s(e,)
+j(but)42 b(this)g(tec)m(hnically)j(violates)g(the)0 3682
+y(F)-8 b(ortran-77)29 b(standard)d(and)g(is)h(not)g(supp)s(orted)e(on)i
+(all)h(mac)m(hines)f(\(e.g.,)j(on)c(a)i(V)-10 b(AX/VMS)27
+b(mac)m(hine)h(one)f(m)m(ust)0 3795 y(use)j(the)h(V)-10
+b(AX-sp)s(eci\014c)31 b(\045DESCR)e(function\).)0 3955
+y(One)22 b(feature)h(of)g(the)g(CFITSIO)e(routines)i(is)f(that)i(they)f
+(can)g(op)s(erate)g(on)f(a)h(`X')h(\(bit\))f(column)g(in)f(a)h(binary)f
+(table)0 4068 y(as)35 b(though)e(it)i(w)m(ere)g(a)g(`B')g(\(b)m(yte\))g
+(column.)53 b(F)-8 b(or)35 b(example)g(a)f(`11X')i(datat)m(yp)s(e)f
+(column)f(can)h(b)s(e)f(in)m(terpreted)0 4181 y(the)28
+b(same)h(as)f(a)g(`2B')i(column)e(\(i.e.,)i(2)e(unsigned)f(8-bit)i(b)m
+(ytes\).)41 b(In)27 b(some)i(instances,)g(it)f(can)h(b)s(e)e(more)h
+(e\016cien)m(t)0 4294 y(to)j(read)f(and)g(write)h(whole)f(b)m(ytes)h
+(at)g(a)g(time,)g(rather)g(than)f(reading)g(or)h(writing)f(eac)m(h)i
+(individual)d(bit.)0 4454 y(The)41 b(double)h(precision)g(complex)g
+(datat)m(yp)s(e)h(is)f(not)g(a)g(standard)f(F)-8 b(ortran-77)43
+b(datat)m(yp)s(e.)76 b(If)41 b(a)i(particular)0 4567
+y(F)-8 b(ortran)35 b(compiler)g(do)s(es)f(not)h(directly)g(supp)s(ort)e
+(this)i(datat)m(yp)s(e,)h(then)f(one)f(ma)m(y)h(instead)g(pass)f(an)h
+(arra)m(y)g(of)0 4680 y(pairs)d(of)h(double)f(precision)h(v)-5
+b(alues)32 b(to)i(these)f(subroutines.)45 b(The)33 b(\014rst)e(v)-5
+b(alue)33 b(in)f(eac)m(h)i(pair)e(is)h(the)g(real)g(part,)0
+4792 y(and)d(the)g(second)h(is)f(the)h(imaginary)g(part.)0
+5125 y Fd(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)
+0 5375 y Fi(The)22 b(FITSIO)g(routines)h(that)h(read)e(and)h(write)g(n)
+m(umerical)g(data)h(can)f(p)s(erform)f(implicit)i(data)f(t)m(yp)s(e)g
+(con)m(v)m(ersion.)0 5488 y(This)i(means)g(that)h(the)g(data)g(t)m(yp)s
+(e)g(of)g(the)g(v)-5 b(ariable)26 b(or)g(arra)m(y)g(in)f(the)h(program)
+f(do)s(es)g(not)h(need)g(to)g(b)s(e)f(the)h(same)0 5601
+y(as)i(the)f(data)h(t)m(yp)s(e)g(of)f(the)h(v)-5 b(alue)28
+b(in)f(the)g(FITS)g(\014le.)40 b(Data)28 b(t)m(yp)s(e)g(con)m(v)m
+(ersion)h(is)e(supp)s(orted)f(for)h(n)m(umerical)h(and)0
+5714 y(string)33 b(data)h(t)m(yp)s(es)f(\(if)h(the)g(string)f(con)m
+(tains)h(a)g(v)-5 b(alid)33 b(n)m(um)m(b)s(er)f(enclosed)i(in)f
+(quotes\))h(when)f(reading)g(a)h(FITS)p eop end
+%%Page: 18 24
+TeXDict begin 18 23 bop 0 299 a Fi(18)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(header)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(and)g(for)f(n)m
+(umeric)h(v)-5 b(alues)31 b(when)f(reading)h(or)g(writing)g(v)-5
+b(alues)31 b(in)f(the)h(primary)f(arra)m(y)0 668 y(or)40
+b(a)h(table)h(column.)70 b(CFITSIO)39 b(returns)h(status)g(=)h(NUM)p
+2185 668 28 4 v 33 w(O)m(VERFLO)m(W)g(if)g(the)f(con)m(v)m(erted)i
+(data)f(v)-5 b(alue)0 781 y(exceeds)33 b(the)g(range)g(of)g(the)f
+(output)g(data)i(t)m(yp)s(e.)47 b(Implicit)33 b(data)g(t)m(yp)s(e)g
+(con)m(v)m(ersion)h(is)e(not)h(supp)s(orted)d(within)0
+894 y(binary)g(tables)h(for)f(string,)g(logical,)k(complex,)d(or)f
+(double)g(complex)h(data)g(t)m(yp)s(es.)0 1054 y(In)g(addition,)h(an)m
+(y)f(table)h(column)f(ma)m(y)h(b)s(e)f(read)g(as)h(if)f(it)h(con)m
+(tained)g(string)f(v)-5 b(alues.)44 b(In)31 b(the)g(case)i(of)e(n)m
+(umeric)0 1167 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f
+(formatted)h(using)e(the)i(TDISPn)e(displa)m(y)i(format)f(if)h(it)g
+(exists.)0 1496 y Fd(4.7)135 b(Data)46 b(Scaling)0 1746
+y Fi(When)38 b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38
+b(in)f(the)h(primary)f(arra)m(y)h(or)g(a)g(table)h(column,)h(the)d(v)-5
+b(alues)38 b(will)h(b)s(e)0 1859 y(scaled)f(automatically)j(b)m(y)c
+(the)h(BSCALE)f(and)g(BZER)m(O)h(\(or)g(TSCALn)d(and)i(TZER)m(On\))g
+(header)g(k)m(eyw)m(ord)0 1972 y(v)-5 b(alues)33 b(if)f(they)g(are)h
+(presen)m(t)g(in)f(the)g(header.)47 b(The)31 b(scaled)j(data)f(that)g
+(is)f(returned)f(to)i(the)g(reading)f(program)0 2085
+y(will)f(ha)m(v)m(e)382 2316 y Fe(output)46 b(value)g(=)i(\(FITS)e
+(value\))g(*)i(BSCALE)e(+)h(BZERO)0 2546 y Fi(\(a)30
+b(corresp)s(onding)e(form)m(ula)h(using)g(TSCALn)e(and)i(TZER)m(On)e
+(is)i(used)g(when)f(reading)h(from)g(table)h(columns\).)0
+2659 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5
+b(alues)32 b(the)h(\015oating)g(p)s(oin)m(t)f(scaled)g(v)-5
+b(alue)33 b(is)f(truncated)g(to)h(an)f(in)m(teger)h(\(not)0
+2772 y(rounded)38 b(to)i(the)g(nearest)g(in)m(teger\).)70
+b(The)39 b(ftpscl)g(and)g(fttscl)i(subroutines)d(ma)m(y)i(b)s(e)f(used)
+g(to)h(o)m(v)m(erride)h(the)0 2885 y(scaling)30 b(parameters)f
+(de\014ned)e(in)h(the)h(header)f(\(e.g.,)j(to)e(turn)f(o\013)h(the)f
+(scaling)i(so)f(that)g(the)g(program)f(can)h(read)0 2998
+y(the)i(ra)m(w)f(unscaled)g(v)-5 b(alues)31 b(from)f(the)g(FITS)g
+(\014le\).)0 3158 y(When)44 b(writing)h(n)m(umerical)g(data)g(to)g(the)
+g(primary)f(arra)m(y)h(or)f(to)h(a)g(table)h(column)e(the)h(data)g(v)-5
+b(alues)45 b(will)0 3271 y(generally)29 b(b)s(e)f(automatically)j(in)m
+(v)m(ersely)f(scaled)f(b)m(y)f(the)g(v)-5 b(alue)29 b(of)f(the)h
+(BSCALE)e(and)h(BZER)m(O)g(\(or)h(TSCALn)0 3384 y(and)h(TZER)m(On\))g
+(header)g(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(if)g(they)g(they)g(exist)g
+(in)f(the)h(header.)42 b(These)30 b(k)m(eyw)m(ords)h(m)m(ust)g(ha)m(v)m
+(e)0 3497 y(b)s(een)f(written)h(to)h(the)g(header)e(b)s(efore)h(an)m(y)
+h(data)f(is)g(written)h(for)e(them)i(to)f(ha)m(v)m(e)i(an)m(y)e
+(e\013ect.)44 b(Otherwise,)32 b(one)0 3610 y(ma)m(y)i(use)f(the)g
+(ftpscl)g(and)g(fttscl)h(subroutines)d(to)j(de\014ne)f(or)g(o)m(v)m
+(erride)h(the)f(scaling)i(k)m(eyw)m(ords)e(in)g(the)g(header)0
+3723 y(\(e.g.,)h(to)f(turn)d(o\013)j(the)f(scaling)h(so)f(that)g(the)g
+(program)g(can)g(write)g(the)g(ra)m(w)g(unscaled)g(v)-5
+b(alues)32 b(in)m(to)h(the)f(FITS)0 3836 y(\014le\).)43
+b(If)30 b(scaling)i(is)f(p)s(erformed,)e(the)i(in)m(v)m(erse)h(scaled)g
+(output)e(v)-5 b(alue)32 b(that)f(is)g(written)g(in)m(to)h(the)f(FITS)f
+(\014le)h(will)0 3949 y(ha)m(v)m(e)430 4179 y Fe(FITS)46
+b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0
+4410 y Fi(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e
+(and)h(TZER)m(On)g(is)h(used)f(when)f(writing)i(to)h(table)g
+(columns\).)0 4523 y(Rounding)19 b(to)i(the)g(nearest)g(in)m(teger,)i
+(rather)e(than)f(truncation,)j(is)d(p)s(erformed)f(when)g(writing)h(in)
+m(teger)i(datat)m(yp)s(es)0 4636 y(to)31 b(the)g(FITS)e(\014le.)0
+4965 y Fd(4.8)135 b(Error)46 b(Status)f(V)-11 b(alues)45
+b(and)g(the)g(Error)g(Message)h(Stac)l(k)0 5215 y Fi(The)33
+b(last)i(parameter)f(in)g(nearly)g(ev)m(ery)g(FITSIO)f(subroutine)g(is)
+h(the)g(error)f(status)h(v)-5 b(alue)35 b(whic)m(h)e(is)h(b)s(oth)f(an)
+0 5328 y(input)j(and)f(an)i(output)f(parameter.)60 b(A)36
+b(returned)f(p)s(ositiv)m(e)j(v)-5 b(alue)37 b(for)f(this)h(parameter)g
+(indicates)g(an)f(error)0 5441 y(w)m(as)31 b(detected.)42
+b(A)30 b(listing)h(of)g(all)g(the)g(FITSIO)e(status)i(co)s(de)f(v)-5
+b(alues)31 b(is)f(giv)m(en)i(at)f(the)f(end)g(of)h(this)f(do)s(cumen)m
+(t.)0 5601 y(The)22 b(FITSIO)g(library)g(uses)h(an)f(`inherited)h
+(status')g(con)m(v)m(en)m(tion)i(for)e(the)g(status)g(parameter)g(whic)
+m(h)g(means)f(that)0 5714 y(if)i(a)h(subroutine)f(is)g(called)i(with)e
+(a)h(p)s(ositiv)m(e)g(input)f(v)-5 b(alue)25 b(of)g(the)f(status)h
+(parameter,)h(then)f(the)f(subroutine)g(will)p eop end
+%%Page: 19 25
+TeXDict begin 19 24 bop 0 299 a Fg(4.9.)72 b(V)-10 b(ARIABLE-LENGTH)31
+b(ARRA)-8 b(Y)31 b(F)-10 b(A)m(CILITY)30 b(IN)h(BINAR)-8
+b(Y)31 b(T)-8 b(ABLES)956 b Fi(19)0 555 y(exit)26 b(immediately)f
+(without)g(c)m(hanging)h(the)e(v)-5 b(alue)25 b(of)g(the)g(status)g
+(parameter.)39 b(Th)m(us,)25 b(if)g(one)f(passes)h(the)g(status)0
+668 y(v)-5 b(alue)31 b(returned)e(from)h(eac)m(h)i(FITSIO)d(routine)h
+(as)h(input)f(to)h(the)f(next)h(FITSIO)e(subroutine,)h(then)g(whenev)m
+(er)0 781 y(an)39 b(error)g(is)h(detected)g(all)h(further)d(FITSIO)g
+(pro)s(cessing)h(will)h(cease.)69 b(This)39 b(con)m(v)m(en)m(tion)i
+(can)f(simplify)f(the)0 894 y(error)30 b(c)m(hec)m(king)j(in)d
+(application)i(programs)f(b)s(ecause)g(it)g(is)g(not)g(necessary)g(to)g
+(c)m(hec)m(k)i(the)e(v)-5 b(alue)31 b(of)g(the)g(status)0
+1007 y(parameter)j(after)g(ev)m(ery)g(single)h(FITSIO)d(subroutine)g
+(call.)52 b(If)33 b(a)h(program)f(con)m(tains)i(a)f(sequence)g(of)g
+(sev)m(eral)0 1120 y(FITSIO)23 b(calls,)j(one)e(can)g(just)g(c)m(hec)m
+(k)h(the)f(status)g(v)-5 b(alue)24 b(after)h(the)f(last)g(call.)40
+b(Since)24 b(the)g(returned)e(status)j(v)-5 b(alues)0
+1233 y(are)36 b(generally)h(distinctiv)m(e,)i(it)d(should)f(b)s(e)g(p)s
+(ossible)g(to)h(determine)g(whic)m(h)f(subroutine)g(originally)i
+(returned)0 1346 y(the)31 b(error)f(status.)0 1506 y(FITSIO)i(also)i
+(main)m(tains)f(an)g(in)m(ternal)h(stac)m(k)g(of)f(error)g(messages)h
+(\(80-c)m(haracter)i(maxim)m(um)d(length\))g(whic)m(h)0
+1619 y(in)j(man)m(y)g(cases)h(pro)m(vide)f(a)g(more)g(detailed)i
+(explanation)f(of)f(the)g(cause)h(of)f(the)g(error)g(than)f(is)h(pro)m
+(vided)g(b)m(y)0 1732 y(the)k(error)e(status)i(n)m(um)m(b)s(er)e
+(alone.)69 b(It)39 b(is)h(recommended)f(that)g(the)h(error)f(message)h
+(stac)m(k)h(b)s(e)e(prin)m(ted)g(out)0 1844 y(whenev)m(er)31
+b(a)h(program)g(detects)g(a)g(FITSIO)e(error.)44 b(T)-8
+b(o)32 b(do)f(this,)h(call)h(the)f(FTGMSG)g(routine)f(rep)s(eatedly)h
+(to)0 1957 y(get)h(the)g(successiv)m(e)g(messages)h(on)e(the)g(stac)m
+(k.)48 b(When)32 b(the)h(stac)m(k)g(is)g(empt)m(y)f(FTGMSG)h(will)g
+(return)e(a)h(blank)0 2070 y(string.)41 b(Note)31 b(that)g(this)f(is)g
+(a)g(`First)h(In)e({)i(First)f(Out')g(stac)m(k,)i(so)e(the)h(oldest)g
+(error)e(message)j(is)e(returned)f(\014rst)0 2183 y(b)m(y)h(ftgmsg.)0
+2557 y Fd(4.9)135 b(V)-11 b(ariable-Length)46 b(Arra)l(y)f(F)-11
+b(acilit)l(y)46 b(in)f(Binary)g(T)-11 b(ables)0 2815
+y Fi(FITSIO)38 b(pro)m(vides)i(easy-to-use)h(supp)s(ort)d(for)h
+(reading)g(and)g(writing)h(data)g(in)f(v)-5 b(ariable)40
+b(length)g(\014elds)f(of)h(a)0 2928 y(binary)35 b(table.)56
+b(The)35 b(v)-5 b(ariable)36 b(length)f(columns)g(ha)m(v)m(e)i(TF)m
+(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)35 b(of)h(the)f(form)g
+(`1Pt\(len\)')0 3041 y(or)30 b(`1Qt\(len\)')h(where)f(`t')g(is)g(the)g
+(datat)m(yp)s(e)h(co)s(de)f(\(e.g.,)i(I,)e(J,)f(E,)h(D,)h(etc.\))42
+b(and)29 b(`len')h(is)g(an)g(in)m(teger)h(sp)s(ecifying)0
+3154 y(the)f(maxim)m(um)g(length)g(of)g(the)g(v)m(ector)h(in)f(the)g
+(table.)41 b(If)30 b(the)g(v)-5 b(alue)30 b(of)g(`len')g(is)g(not)g(sp)
+s(eci\014ed)f(when)g(the)h(table)0 3267 y(is)j(created)g(\(e.g.,)i(if)e
+(the)f(TF)m(ORM)h(k)m(eyw)m(ord)g(v)-5 b(alue)33 b(is)g(simply)f(sp)s
+(eci\014ed)g(as)h('1PE')g(instead)g(of)f('1PE\(400\))j(\),)0
+3380 y(then)28 b(FITSIO)f(will)h(automatically)k(scan)c(the)g(table)h
+(when)f(it)g(is)h(closed)g(to)g(determine)f(the)g(maxim)m(um)h(length)0
+3493 y(of)i(the)f(v)m(ector)i(and)e(will)h(app)s(end)d(this)j(v)-5
+b(alue)30 b(to)i(the)e(TF)m(ORMn)g(v)-5 b(alue.)0 3653
+y(The)25 b(same)h(routines)g(whic)m(h)f(read)h(and)f(write)h(data)g(in)
+f(an)h(ordinary)f(\014xed)g(length)h(binary)f(table)h(extension)h(are)0
+3766 y(also)k(used)e(for)h(v)-5 b(ariable)31 b(length)g(\014elds,)e(ho)
+m(w)m(ev)m(er,)j(the)e(subroutine)f(parameters)i(tak)m(e)h(on)e(a)g
+(sligh)m(tly)h(di\013eren)m(t)0 3878 y(in)m(terpretation)h(as)e
+(describ)s(ed)g(b)s(elo)m(w.)0 4039 y(All)37 b(the)f(data)h(in)f(a)h(v)
+-5 b(ariable)37 b(length)f(\014eld)g(is)g(written)h(in)m(to)g(an)f
+(area)h(called)h(the)e(`heap')g(whic)m(h)g(follo)m(ws)i(the)0
+4152 y(main)26 b(\014xed-length)g(FITS)f(binary)h(table.)40
+b(The)25 b(size)i(of)g(the)f(heap,)h(in)f(b)m(ytes,)h(is)f(sp)s
+(eci\014ed)g(with)f(the)i(PCOUNT)0 4264 y(k)m(eyw)m(ord)21
+b(in)f(the)h(FITS)f(header.)37 b(When)20 b(creating)i(a)f(new)f(binary)
+g(table,)j(the)e(initial)h(v)-5 b(alue)21 b(of)f(PCOUNT)g(should)0
+4377 y(usually)31 b(b)s(e)f(set)i(to)g(zero.)44 b(FITSIO)30
+b(will)h(recompute)h(the)f(size)h(of)g(the)f(heap)g(as)g(the)h(data)g
+(is)f(written)g(and)g(will)0 4490 y(automatically)d(up)s(date)c(the)i
+(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)26 b(when)e(the)h(table)h(is)f
+(closed.)40 b(When)25 b(writing)g(v)-5 b(ariable)0 4603
+y(length)34 b(data)g(to)g(a)g(table,)i(CFITSIO)c(will)h(automatically)k
+(extend)c(the)h(size)g(of)g(the)g(heap)f(area)h(if)g(necessary)-8
+b(,)0 4716 y(so)31 b(that)g(an)m(y)f(follo)m(wing)i(HDUs)f(do)f(not)h
+(get)h(o)m(v)m(erwritten.)0 4876 y(By)e(default)f(the)h(heap)f(data)i
+(area)f(starts)g(immediately)h(after)f(the)f(last)i(ro)m(w)e(of)h(the)g
+(\014xed-length)f(table.)42 b(This)0 4989 y(default)27
+b(starting)g(lo)s(cation)i(ma)m(y)e(b)s(e)f(o)m(v)m(erridden)h(b)m(y)g
+(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)f(is)h(not)g(recommended.)0
+5102 y(If)34 b(additional)h(ro)m(ws)f(of)g(data)h(are)g(added)e(to)i
+(the)f(table,)j(CFITSIO)32 b(will)j(automatically)i(shift)c(the)i(the)f
+(heap)0 5215 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g(for)f(the)h(new)f(ro)
+m(ws,)i(but)e(it)i(is)e(ob)m(viously)i(b)s(e)e(more)h(e\016cien)m(t)h
+(to)f(initially)h(create)h(the)0 5328 y(table)31 b(with)e(the)h
+(necessary)g(n)m(um)m(b)s(er)f(of)h(blank)f(ro)m(ws,)h(so)g(that)g(the)
+g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s(e)f(constan)m(tly)0
+5441 y(mo)m(v)m(ed.)0 5601 y(When)40 b(writing)h(to)g(a)g(v)-5
+b(ariable)41 b(length)g(\014eld,)i(the)e(en)m(tire)h(arra)m(y)f(of)f(v)
+-5 b(alues)41 b(for)f(a)h(giv)m(en)h(ro)m(w)f(of)f(the)h(table)0
+5714 y(m)m(ust)36 b(b)s(e)g(written)g(with)g(a)g(single)h(call)h(to)f
+(FTPCLx.)57 b(The)36 b(total)i(length)f(of)f(the)g(arra)m(y)h(is)f
+(calculated)i(from)p eop end
+%%Page: 20 26
+TeXDict begin 20 25 bop 0 299 a Fi(20)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(\(NELEM+FELEM-1\).)44 b(One)30 b(cannot)i(app)s(end)d(more)i
+(elemen)m(ts)h(to)g(an)e(existing)i(\014eld)f(at)g(a)h(later)g(time;)g
+(an)m(y)0 668 y(attempt)j(to)f(do)g(so)g(will)g(simply)f(o)m(v)m
+(erwrite)j(all)e(the)g(data)h(whic)m(h)e(w)m(as)h(previously)g
+(written.)51 b(Note)35 b(also)f(that)0 781 y(the)g(new)g(data)g(will)h
+(b)s(e)e(written)h(to)h(a)f(new)g(area)g(of)g(the)h(heap)e(and)h(the)g
+(heap)g(space)g(used)f(b)m(y)h(the)g(previous)0 894 y(write)j(cannot)h
+(b)s(e)e(reclaimed.)62 b(F)-8 b(or)38 b(this)f(reason)g(it)h(is)f
+(advised)g(that)h(eac)m(h)g(ro)m(w)f(of)h(a)f(v)-5 b(ariable)38
+b(length)f(\014eld)0 1007 y(only)c(b)s(e)g(written)g(once.)50
+b(An)33 b(exception)h(to)g(this)f(general)h(rule)f(o)s(ccurs)g(when)f
+(setting)i(elemen)m(ts)h(of)e(an)g(arra)m(y)0 1120 y(as)38
+b(unde\014ned.)63 b(One)37 b(m)m(ust)i(\014rst)e(write)h(a)h(dumm)m(y)e
+(v)-5 b(alue)39 b(in)m(to)g(the)g(arra)m(y)f(with)g(FTPCLx,)i(and)e
+(then)g(call)0 1233 y(FTPCLU)33 b(to)i(\015ag)f(the)f(desired)h(elemen)
+m(ts)h(as)e(unde\014ned.)49 b(\(Do)35 b(not)f(use)f(the)h(FTPCNx)f
+(family)h(of)g(routines)0 1346 y(with)28 b(v)-5 b(ariable)30
+b(length)f(\014elds\).)40 b(Note)30 b(that)f(the)g(ro)m(ws)g(of)g(a)g
+(table,)h(whether)e(\014xed)g(or)h(v)-5 b(ariable)29
+b(length,)h(do)f(not)0 1458 y(ha)m(v)m(e)j(to)f(b)s(e)e(written)i
+(consecutiv)m(ely)h(and)e(ma)m(y)h(b)s(e)f(written)g(in)g(an)m(y)h
+(order.)0 1619 y(When)40 b(writing)h(to)g(a)g(v)-5 b(ariable)41
+b(length)g(ASCI)s(I)e(c)m(haracter)j(\014eld)e(\(e.g.,)45
+b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)d(a)h(single)0
+1732 y(c)m(haracter)33 b(string)f(written.)44 b(FTPCLS)30
+b(writes)i(the)g(whole)f(length)h(of)g(the)g(input)e(string)i(\(min)m
+(us)f(an)m(y)h(trailing)0 1844 y(blank)37 b(c)m(haracters\),)42
+b(th)m(us)37 b(the)h(NELEM)f(and)g(FELEM)h(parameters)g(are)g(ignored.)
+62 b(If)37 b(the)h(input)e(string)i(is)0 1957 y(completely)28
+b(blank)f(then)f(FITSIO)g(will)h(write)g(one)g(blank)f(c)m(haracter)j
+(to)e(the)g(FITS)f(\014le.)40 b(Similarly)-8 b(,)28 b(FTGCVS)0
+2070 y(and)35 b(FTGCFS)g(read)g(the)h(en)m(tire)g(string)g(\(truncated)
+f(to)i(the)e(width)g(of)g(the)h(c)m(haracter)h(string)e(argumen)m(t)h
+(in)0 2183 y(the)31 b(subroutine)e(call\))j(and)e(also)h(ignore)g(the)f
+(NELEM)h(and)f(FELEM)g(parameters.)0 2343 y(The)35 b(FTPDES)h
+(subroutine)e(is)i(useful)f(in)g(situations)i(where)e(m)m(ultiple)i(ro)
+m(ws)e(of)h(a)g(v)-5 b(ariable)37 b(length)f(column)0
+2456 y(ha)m(v)m(e)c(the)e(iden)m(tical)i(arra)m(y)f(of)g(v)-5
+b(alues.)41 b(One)30 b(can)g(simply)g(write)h(the)f(arra)m(y)h(once)g
+(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0 2569 y(use)36
+b(FTPDES)g(to)h(write)g(the)f(same)h(descriptor)g(v)-5
+b(alues)36 b(in)m(to)i(the)e(other)h(ro)m(ws)f(\(use)h(the)f(FTGDES)h
+(routine)0 2682 y(to)f(read)f(the)h(\014rst)f(descriptor)g(v)-5
+b(alue\);)39 b(all)d(the)g(ro)m(ws)f(will)h(then)f(p)s(oin)m(t)g(to)h
+(the)g(same)f(storage)i(lo)s(cation)g(th)m(us)0 2795
+y(sa)m(ving)31 b(disk)f(space.)0 2955 y(When)35 b(reading)g(from)f(a)i
+(v)-5 b(ariable)35 b(length)h(arra)m(y)f(\014eld)g(one)g(can)g(only)h
+(read)e(as)i(man)m(y)f(elemen)m(ts)h(as)f(actually)0
+3068 y(exist)i(in)e(that)i(ro)m(w)e(of)h(the)g(table;)k(reading)c(do)s
+(es)g(not)g(automatically)i(con)m(tin)m(ue)f(with)f(the)g(next)g(ro)m
+(w)g(of)g(the)0 3181 y(table)29 b(as)f(o)s(ccurs)g(when)f(reading)h(an)
+g(ordinary)g(\014xed)f(length)h(table)h(\014eld.)40 b(A)m(ttempts)29
+b(to)g(read)f(more)g(than)g(this)0 3294 y(will)k(cause)h(an)e(error)h
+(status)g(to)g(b)s(e)f(returned.)44 b(One)32 b(can)g(determine)g(the)g
+(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h(in)f(eac)m(h)h(ro)m(w)0
+3407 y(of)e(a)f(v)-5 b(ariable)31 b(column)g(with)f(the)g(FTGDES)h
+(subroutine.)0 3859 y Fd(4.10)136 b(Supp)t(ort)44 b(for)h(IEEE)g(Sp)t
+(ecial)h(V)-11 b(alues)0 4133 y Fi(The)26 b(ANSI/IEEE-754)h
+(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(er)d(standard)g(de\014nes)h
+(certain)h(sp)s(ecial)g(v)-5 b(alues)26 b(that)h(are)g(used)e(to)0
+4246 y(represen)m(t)j(suc)m(h)g(quan)m(tities)h(as)f(Not-a-Num)m(b)s
+(er)h(\(NaN\),)h(denormalized,)f(under\015o)m(w,)e(o)m(v)m(er\015o)m
+(w,)j(and)d(in\014nit)m(y)-8 b(.)0 4359 y(\(See)29 b(the)f(App)s(endix)
+e(in)i(the)g(NOST)g(FITS)f(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h
+(Guide)g(for)g(a)g(list)h(of)f(these)0 4472 y(v)-5 b(alues\).)41
+b(The)30 b(FITSIO)f(subroutines)g(that)i(read)f(\015oating)i(p)s(oin)m
+(t)e(data)h(in)f(FITS)f(\014les)i(recognize)h(these)f(IEEE)0
+4585 y(sp)s(ecial)40 b(v)-5 b(alues)39 b(and)g(b)m(y)g(default)g(in)m
+(terpret)h(the)f(o)m(v)m(er\015o)m(w)i(and)d(in\014nit)m(y)h(v)-5
+b(alues)40 b(as)f(b)s(eing)g(equiv)-5 b(alen)m(t)41 b(to)f(a)0
+4698 y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h
+(denormalized)h(v)-5 b(alues)34 b(in)m(to)h(zeros.)51
+b(In)33 b(some)h(cases)h(programmers)0 4811 y(ma)m(y)d(w)m(an)m(t)g
+(access)g(to)g(the)g(ra)m(w)f(IEEE)g(v)-5 b(alues,)32
+b(without)f(an)m(y)h(mo)s(di\014cation)f(b)m(y)g(FITSIO.)g(This)f(can)i
+(b)s(e)e(done)0 4924 y(b)m(y)k(calling)j(the)d(FTGPVx)h(or)g(FTGCVx)g
+(routines)f(while)h(sp)s(ecifying)f(0.0)i(as)f(the)f(v)-5
+b(alue)35 b(of)g(the)g(NULL)-10 b(V)g(AL)0 5036 y(parameter.)72
+b(This)39 b(will)i(force)g(FITSIO)e(to)j(simply)e(pass)g(the)g(IEEE)g
+(v)-5 b(alues)41 b(through)f(to)h(the)g(application)0
+5149 y(program,)30 b(without)g(an)m(y)g(mo)s(di\014cation.)41
+b(This)30 b(do)s(es)f(not)h(w)m(ork)g(for)g(double)g(precision)g(v)-5
+b(alues)30 b(on)g(V)-10 b(AX/VMS)0 5262 y(mac)m(hines,)38
+b(ho)m(w)m(ev)m(er,)h(where)d(there)g(is)g(no)g(easy)g(w)m(a)m(y)h(to)g
+(b)m(ypass)f(the)g(default)g(in)m(terpretation)h(of)f(the)h(IEEE)0
+5375 y(sp)s(ecial)45 b(v)-5 b(alues.)83 b(This)44 b(is)h(also)g(not)g
+(supp)s(orted)d(when)i(reading)h(\015oating-p)s(oin)m(t)g(images)h
+(that)f(ha)m(v)m(e)h(b)s(een)0 5488 y(compressed)29 b(with)h(the)f
+(FITS)g(tiled)i(image)f(compression)g(con)m(v)m(en)m(tion)i(that)e(is)g
+(discussed)e(in)i(section)h(5.6;)g(the)0 5601 y(pixels)k(v)-5
+b(alues)35 b(in)g(tile)g(compressed)g(images)h(are)f(represen)m(ted)g
+(b)m(y)f(scaled)i(in)m(tegers,)h(and)d(a)i(reserv)m(ed)f(in)m(teger)0
+5714 y(v)-5 b(alue)31 b(\(not)g(a)g(NaN\))g(is)f(used)g(to)h(represen)m
+(t)g(unde\014ned)d(pixels.)p eop end
+%%Page: 21 27
+TeXDict begin 21 26 bop 0 299 a Fg(4.11.)73 b(WHEN)31
+b(THE)f(FINAL)g(SIZE)f(OF)i(THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978
+b Fi(21)0 555 y Fd(4.11)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g
+(FITS)f(HDU)h(is)g(Unkno)l(wn)0 805 y Fi(It)27 b(is)h(not)f(required)f
+(to)i(kno)m(w)f(the)h(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g
+(or)f(table)h(b)s(efore)f(b)s(eginning)f(to)i(write)g(the)0
+918 y(data)k(to)f(the)g(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f
+(the)g(primary)f(arra)m(y)h(or)g(an)f(image)j(extension,)e(one)h
+(should)d(initially)0 1031 y(create)i(the)e(arra)m(y)h(with)e(the)i
+(size)g(of)f(the)g(highest)g(dimension)g(\(largest)i(NAXISn)d(k)m(eyw)m
+(ord\))i(set)g(to)g(a)f(dumm)m(y)0 1144 y(v)-5 b(alue,)26
+b(suc)m(h)e(as)g(1.)39 b(Then)23 b(after)i(all)g(the)g(data)f(ha)m(v)m
+(e)i(b)s(een)d(written)h(and)g(the)g(true)g(dimensions)g(are)g(kno)m
+(wn,)h(then)0 1257 y(the)31 b(NAXISn)e(v)-5 b(alue)31
+b(should)f(b)s(e)g(up)s(dated)f(using)h(the)h(\014ts)p
+2051 1257 28 4 v 62 w(up)s(date)p 2389 1257 V 32 w(k)m(ey)h(routine)e
+(b)s(efore)g(mo)m(ving)i(to)f(another)0 1370 y(extension)g(or)f
+(closing)i(the)e(FITS)g(\014le.)0 1530 y(When)f(writing)g(to)g(FITS)g
+(tables,)h(CFITSIO)d(automatically)32 b(k)m(eeps)e(trac)m(k)g(of)f(the)
+g(highest)h(ro)m(w)f(n)m(um)m(b)s(er)e(that)0 1643 y(is)32
+b(written)g(to,)h(and)e(will)h(increase)h(the)f(size)h(of)f(the)g
+(table)g(if)g(necessary)-8 b(.)46 b(CFITSIO)30 b(will)i(also)h
+(automatically)0 1756 y(insert)j(space)h(in)f(the)g(FITS)f(\014le)i(if)
+f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f(data)h('heap',)h(if)
+e(it)h(exists,)h(and/or)f(an)m(y)0 1869 y(additional)29
+b(HDUs)g(that)g(follo)m(w)g(the)g(table)g(do)f(not)h(get)g(o)m(v)m
+(erwritten)h(as)e(new)g(ro)m(ws)g(are)h(written)f(to)h(the)g(table.)0
+2029 y(As)37 b(a)h(general)g(rule)f(it)h(is)f(b)s(est)g(to)h(sp)s
+(ecify)f(the)h(initial)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(=)g(0)g(when)
+g(the)g(table)h(is)g(created,)0 2142 y(then)g(let)h(CFITSIO)e(k)m(eep)i
+(trac)m(k)g(of)g(the)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(that)h(are)f
+(actually)i(written.)65 b(The)38 b(application)0 2255
+y(program)e(should)f(not)i(man)m(ually)g(up)s(date)e(the)i(n)m(um)m(b)s
+(er)e(of)h(ro)m(ws)g(in)g(the)h(table)g(\(as)g(giv)m(en)g(b)m(y)f(the)h
+(NAXIS2)0 2368 y(k)m(eyw)m(ord\))j(since)f(CFITSIO)e(do)s(es)i(this)g
+(automatically)-8 b(.)69 b(If)38 b(a)i(table)f(is)g(initially)i
+(created)f(with)e(more)h(than)0 2481 y(zero)i(ro)m(ws,)j(then)c(this)h
+(will)f(usually)h(b)s(e)f(considered)g(as)h(the)g(minim)m(um)f(size)h
+(of)g(the)g(table,)j(ev)m(en)d(if)g(few)m(er)0 2594 y(ro)m(ws)30
+b(are)g(actually)h(written)f(to)h(the)f(table.)41 b(Th)m(us,)30
+b(if)f(a)i(table)f(is)g(initially)h(created)g(with)f(NAXIS2)g(=)g(20,)h
+(and)0 2706 y(CFITSIO)g(only)i(writes)f(10)i(ro)m(ws)e(of)h(data)g(b)s
+(efore)f(closing)i(the)f(table,)h(then)e(NAXIS2)h(will)g(remain)f
+(equal)h(to)0 2819 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)
+e(of)g(data)h(are)g(written)f(to)h(this)f(table,)i(then)e(NAXIS2)h
+(will)f(b)s(e)g(increased)g(from)g(20)0 2932 y(to)f(30.)44
+b(The)31 b(one)g(exception)i(to)f(this)f(automatic)i(up)s(dating)d(of)h
+(the)h(NAXIS2)f(k)m(eyw)m(ord)h(is)f(if)g(the)h(application)0
+3045 y(program)c(directly)g(mo)s(di\014es)f(the)i(v)-5
+b(alue)28 b(of)g(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)h(just)e(b)s
+(efore)h(closing)h(the)f(table.)41 b(In)0 3158 y(this)28
+b(case,)i(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)h
+(since)f(it)g(assumes)f(that)h(the)f(application)i(program)0
+3271 y(m)m(ust)i(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f(c)m
+(hanging)h(the)f(v)-5 b(alue)33 b(directly)-8 b(.)47
+b(This)31 b(is)h(not)h(recommended,)f(ho)m(w)m(ev)m(er,)0
+3384 y(and)j(is)h(only)g(pro)m(vided)g(for)f(bac)m(kw)m(ard)h
+(compatibilit)m(y)i(with)e(soft)m(w)m(are)h(that)g(initially)g(creates)
+g(a)f(table)h(with)0 3497 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m
+(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)34
+b(to)h(the)f(actual)h(smaller)g(v)-5 b(alue)34 b(just)f(b)s(efore)0
+3610 y(closing)e(the)g(table.)0 3941 y Fd(4.12)136 b(Lo)t(cal)45
+b(FITS)e(Con)l(v)l(en)l(tions)k(supp)t(orted)d(b)l(y)h(FITSIO)0
+4191 y Fi(CFITSIO)25 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)f(FITS)f
+(con)m(v)m(en)m(tions)j(whic)m(h)d(are)h(not)g(de\014ned)e(in)h(the)h
+(o\016cial)h(NOST)e(FITS)0 4304 y(standard)k(and)g(whic)m(h)h(are)g
+(not)g(necessarily)g(recognized)h(or)f(supp)s(orted)e(b)m(y)i(other)g
+(FITS)f(soft)m(w)m(are)i(pac)m(k)-5 b(ages.)0 4417 y(Programmers)36
+b(should)f(b)s(e)g(cautious)i(ab)s(out)e(using)h(these)g(features,)i
+(esp)s(ecially)f(if)f(the)g(FITS)f(\014les)h(that)h(are)0
+4530 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to)g(b)s(e)f(pro)s(cessed)g
+(b)m(y)h(other)f(soft)m(w)m(are)i(systems)f(whic)m(h)f(do)h(not)f(use)h
+(the)f(CFITSIO)0 4642 y(in)m(terface.)0 4930 y Fb(4.12.1)113
+b(Supp)s(ort)37 b(for)h(Long)g(String)f(Keyw)m(ord)h(V)-9
+b(alues.)0 5149 y Fi(The)23 b(length)i(of)f(a)g(standard)f(FITS)g
+(string)h(k)m(eyw)m(ord)g(is)g(limited)h(to)f(68)h(c)m(haracters)g(b)s
+(ecause)f(it)g(m)m(ust)g(\014t)g(en)m(tirely)0 5262 y(within)35
+b(a)h(single)h(FITS)e(header)h(k)m(eyw)m(ord)g(record.)57
+b(In)35 b(some)h(instances)g(it)h(is)e(necessary)i(to)f(enco)s(de)g
+(strings)0 5375 y(longer)27 b(than)f(this)g(limit,)i(so)e(FITSIO)f
+(supp)s(orts)f(a)j(lo)s(cal)g(con)m(v)m(en)m(tion)h(in)e(whic)m(h)g
+(the)g(string)g(v)-5 b(alue)27 b(is)f(con)m(tin)m(ued)0
+5488 y(o)m(v)m(er)34 b(m)m(ultiple)g(k)m(eyw)m(ords.)49
+b(This)32 b(con)m(tin)m(uation)j(con)m(v)m(en)m(tion)h(uses)c(an)h(amp)
+s(ersand)f(c)m(haracter)i(at)g(the)f(end)g(of)0 5601
+y(eac)m(h)c(substring)d(to)i(indicate)h(that)f(it)g(is)g(con)m(tin)m
+(ued)g(on)f(the)h(next)g(k)m(eyw)m(ord,)h(and)d(the)i(con)m(tin)m
+(uation)i(k)m(eyw)m(ords)0 5714 y(all)44 b(ha)m(v)m(e)h(the)f(name)f
+(CONTINUE)g(without)g(an)h(equal)g(sign)f(in)g(column)h(9.)80
+b(The)43 b(string)h(v)-5 b(alue)43 b(ma)m(y)i(b)s(e)p
+eop end
+%%Page: 22 28
+TeXDict begin 22 27 bop 0 299 a Fi(22)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(con)m(tin)m(ued)e(in)f(this)h(w)m(a)m(y)g(o)m(v)m(er)h(as)e
+(man)m(y)h(additional)g(CONTINUE)f(k)m(eyw)m(ords)g(as)h(is)f
+(required.)40 b(The)27 b(follo)m(wing)0 668 y(lines)k(illustrate)g
+(this)f(con)m(tin)m(uation)j(con)m(v)m(en)m(tion)f(whic)m(h)e(is)h
+(used)e(in)h(the)h(v)-5 b(alue)31 b(of)f(the)h(STRKEY)e(k)m(eyw)m(ord:)
+0 920 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')524 b(/)47 b(The)g(OGIP)g(Long)f
+(String)g(Convention)f(may)i(be)g(used.)0 1033 y(STRKEY)94
+b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93
+b(/)47 b(Optional)f(Comment)0 1146 y(CONTINUE)93 b(')48
+b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95
+b(')0 1259 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f
+(optional)g(comment.)0 1511 y Fi(It)29 b(is)g(recommended)f(that)h(the)
+g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)i(b)
+s(e)d(included)g(in)g(an)m(y)h(HDU)0 1624 y(that)f(uses)e(this)h
+(longstring)h(con)m(v)m(en)m(tion.)42 b(A)27 b(subroutine)f(called)i
+(FTPLSW)f(has)g(b)s(een)f(pro)m(vided)h(in)f(CFITSIO)0
+1737 y(to)31 b(write)g(this)f(k)m(eyw)m(ord)h(if)f(it)h(do)s(es)f(not)h
+(already)g(exist.)0 1897 y(This)23 b(long)i(string)g(con)m(v)m(en)m
+(tion)h(is)e(supp)s(orted)f(b)m(y)h(the)g(follo)m(wing)i(FITSIO)d
+(subroutines)g(that)i(deal)g(with)f(string-)0 2010 y(v)-5
+b(alued)30 b(k)m(eyw)m(ords:)286 2262 y Fe(ftgkys)46
+b(-)i(read)f(a)g(string)f(keyword)286 2375 y(ftpkls)g(-)i(write)e
+(\(append\))g(a)h(string)f(keyword)286 2488 y(ftikls)g(-)i(insert)e(a)h
+(string)g(keyword)286 2601 y(ftmkls)f(-)i(modify)e(the)h(value)f(of)h
+(an)h(existing)d(string)h(keyword)286 2714 y(ftukls)g(-)i(update)e(an)h
+(existing)f(keyword,)f(or)i(write)g(a)g(new)g(keyword)286
+2827 y(ftdkey)f(-)i(delete)e(a)h(keyword)0 3079 y Fi(These)41
+b(routines)f(will)h(transparen)m(tly)g(read,)j(write,)g(or)d(delete)h
+(a)f(long)g(string)g(v)-5 b(alue)41 b(in)g(the)g(FITS)f(\014le,)k(so)0
+3192 y(programmers)36 b(in)g(general)h(do)f(not)h(ha)m(v)m(e)g(to)g(b)s
+(e)f(concerned)g(ab)s(out)g(the)g(details)i(of)e(the)h(con)m(v)m(en)m
+(tion)h(that)f(is)0 3304 y(used)32 b(to)i(enco)s(de)f(the)g(long)g
+(string)g(in)g(the)g(FITS)f(header.)48 b(When)33 b(reading)g(a)g(long)h
+(string,)g(one)f(m)m(ust)g(ensure)0 3417 y(that)h(the)f(c)m(haracter)i
+(string)f(parameter)g(used)e(in)h(these)h(subroutine)e(calls)j(has)e(b)
+s(een)f(declared)i(long)g(enough)0 3530 y(to)d(hold)f(the)h(en)m(tire)g
+(string,)g(otherwise)f(the)h(returned)e(string)h(v)-5
+b(alue)31 b(will)g(b)s(e)f(truncated.)0 3690 y(Note)d(that)e(the)h
+(more)f(commonly)h(used)e(FITSIO)g(subroutine)h(to)h(write)f(string)g
+(v)-5 b(alued)25 b(k)m(eyw)m(ords)h(\(FTPKYS\))0 3803
+y(do)s(es)38 b(NOT)g(supp)s(ort)f(this)h(long)h(string)g(con)m(v)m(en)m
+(tion)h(and)e(only)h(supp)s(orts)d(strings)i(up)g(to)h(68)g(c)m
+(haracters)h(in)0 3916 y(length.)i(This)30 b(has)g(b)s(een)g(done)h
+(delib)s(erately)g(to)h(prev)m(en)m(t)f(programs)g(from)f(inadv)m
+(erten)m(tly)i(writing)f(k)m(eyw)m(ords)0 4029 y(using)38
+b(this)h(non-standard)e(con)m(v)m(en)m(tion)k(without)e(the)f(explicit)
+i(in)m(ten)m(t)g(of)f(the)g(programmer)f(or)h(user.)64
+b(The)0 4142 y(FTPKLS)28 b(subroutine)g(m)m(ust)h(b)s(e)g(called)h
+(instead)g(to)g(write)f(long)h(strings.)40 b(This)28
+b(routine)i(can)f(also)h(b)s(e)f(used)f(to)0 4255 y(write)j(ordinary)e
+(string)i(v)-5 b(alues)30 b(less)h(than)f(68)h(c)m(haracters)h(in)e
+(length.)0 4544 y Fb(4.12.2)113 b(Arra)m(ys)37 b(of)g(Fixed-Length)j
+(Strings)e(in)f(Binary)h(T)-9 b(ables)0 4763 y Fi(CFITSIO)25
+b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp)s(ecify)f(that)i(a)f(c)m
+(haracter)h(column)e(in)g(a)h(binary)f(table)i(con)m(tains)f(an)g(arra)
+m(y)g(of)0 4876 y(\014xed-length)32 b(strings.)46 b(The)32
+b(\014rst)f(w)m(a)m(y)-8 b(,)34 b(whic)m(h)e(is)g(o\016cially)i(supp)s
+(orted)c(b)m(y)i(the)h(FITS)e(Standard)g(do)s(cumen)m(t,)0
+4989 y(uses)38 b(the)g(TDIMn)g(k)m(eyw)m(ord.)65 b(F)-8
+b(or)39 b(example,)i(if)d(TF)m(ORMn)g(=)g('60A')h(and)f(TDIMn)g(=)g
+('\(12,5\)')i(then)e(that)0 5102 y(column)30 b(will)h(b)s(e)f(in)m
+(terpreted)g(as)h(con)m(taining)h(an)e(arra)m(y)h(of)g(5)f(strings,)h
+(eac)m(h)g(12)g(c)m(haracters)h(long.)0 5262 y(FITSIO)40
+b(also)i(supp)s(orts)d(a)i(lo)s(cal)h(con)m(v)m(en)m(tion)h(for)e(the)g
+(format)h(of)f(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)g(v)-5
+b(alue)42 b(of)f(the)0 5375 y(form)h('rAw')g(where)g('r')g(is)h(an)f
+(in)m(teger)i(sp)s(ecifying)e(the)g(total)j(width)c(in)h(c)m(haracters)
+i(of)f(the)f(column,)k(and)0 5488 y('w')36 b(is)g(an)g(in)m(teger)h(sp)
+s(ecifying)f(the)g(\(\014xed\))g(length)h(of)f(an)g(individual)f(unit)h
+(string)f(within)h(the)g(v)m(ector.)59 b(F)-8 b(or)0
+5601 y(example,)47 b(TF)m(ORM1)d(=)f('120A10')j(w)m(ould)d(indicate)h
+(that)f(the)h(binary)e(table)i(column)f(is)g(120)h(c)m(haracters)0
+5714 y(wide)32 b(and)g(consists)h(of)g(12)g(10-c)m(haracter)i(length)e
+(strings.)47 b(This)31 b(con)m(v)m(en)m(tion)k(is)d(recognized)i(b)m(y)
+e(the)h(FITSIO)p eop end
+%%Page: 23 29
+TeXDict begin 23 28 bop 0 299 a Fg(4.12.)73 b(LOCAL)29
+b(FITS)h(CONVENTIONS)f(SUPPOR)-8 b(TED)29 b(BY)i(FITSIO)1168
+b Fi(23)0 555 y(subroutines)40 b(that)h(read)g(or)g(write)g(strings)f
+(in)h(binary)f(tables.)73 b(The)40 b(Binary)h(T)-8 b(able)42
+b(de\014nition)e(do)s(cumen)m(t)0 668 y(sp)s(eci\014es)31
+b(that)i(other)e(optional)i(c)m(haracters)g(ma)m(y)g(follo)m(w)g(the)e
+(datat)m(yp)s(e)i(co)s(de)f(in)f(the)h(TF)m(ORM)g(k)m(eyw)m(ord,)h(so)0
+781 y(this)j(lo)s(cal)i(con)m(v)m(en)m(tion)h(is)e(in)f(compliance)i
+(with)e(the)h(FITS)f(standard,)h(although)g(other)g(FITS)f(readers)h
+(are)0 894 y(not)31 b(required)e(to)i(recognize)h(this)f(con)m(v)m(en)m
+(tion.)0 1054 y(The)25 b(Binary)h(T)-8 b(able)27 b(de\014nition)e(do)s
+(cumen)m(t)h(that)h(w)m(as)f(appro)m(v)m(ed)g(b)m(y)g(the)g(IA)m(U)g
+(in)g(1994)i(con)m(tains)f(an)e(app)s(endix)0 1167 y(describing)d(an)h
+(alternate)h(con)m(v)m(en)m(tion)h(for)e(sp)s(ecifying)f(arra)m(ys)h
+(of)g(\014xed)f(or)h(v)-5 b(ariable)24 b(length)f(strings)f(in)h(a)g
+(binary)0 1280 y(table)35 b(c)m(haracter)g(column)f(\(with)g(the)h
+(form)e('rA:SSTRw/nnn\)'.)50 b(This)33 b(app)s(endix)f(w)m(as)j(not)f
+(o\016cially)i(v)m(oted)0 1393 y(on)30 b(b)m(y)h(the)f(IA)m(U)h(and)f
+(hence)g(is)h(still)g(pro)m(visional.)42 b(FITSIO)29
+b(do)s(es)h(not)h(curren)m(tly)f(supp)s(ort)f(this)h(prop)s(osal.)0
+1687 y Fb(4.12.3)113 b(Keyw)m(ord)37 b(Units)h(Strings)0
+1907 y Fi(One)f(de\014ciency)h(of)g(the)g(curren)m(t)g(FITS)f(Standard)
+f(is)i(that)h(it)f(do)s(es)f(not)h(de\014ne)f(a)i(sp)s(eci\014c)e(con)m
+(v)m(en)m(tion)j(for)0 2020 y(recording)30 b(the)g(ph)m(ysical)h(units)
+f(of)g(a)g(k)m(eyw)m(ord)h(v)-5 b(alue.)41 b(The)30 b(TUNITn)f(k)m(eyw)
+m(ord)h(can)g(b)s(e)g(used)f(to)i(sp)s(ecify)f(the)0
+2133 y(ph)m(ysical)36 b(units)f(of)g(the)h(v)-5 b(alues)36
+b(in)f(a)g(table)i(column,)f(but)f(there)g(is)h(no)f(analogous)i(con)m
+(v)m(en)m(tion)g(for)e(k)m(eyw)m(ord)0 2246 y(v)-5 b(alues.)42
+b(The)30 b(commen)m(t)h(\014eld)g(of)f(the)h(k)m(eyw)m(ord)g(is)g
+(often)g(used)f(for)g(this)g(purp)s(ose,)g(but)f(the)i(units)f(are)h
+(usually)0 2359 y(not)g(sp)s(eci\014ed)e(in)h(a)h(w)m(ell)g(de\014ned)f
+(format)g(that)h(FITS)f(readers)g(can)h(easily)g(recognize)h(and)e
+(extract.)0 2519 y(T)-8 b(o)28 b(solv)m(e)h(this)e(de\014ciency)-8
+b(,)30 b(FITSIO)c(uses)h(a)h(lo)s(cal)h(con)m(v)m(en)m(tion)h(in)d
+(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)0
+2632 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in)
+f(the)f(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)j(more)d(sp)s
+(eci\014cally)-8 b(,)24 b(the)d(op)s(ening)f(square)0
+2745 y(brac)m(k)m(et)28 b(immediately)g(follo)m(ws)f(the)g(slash)f('/')
+h(commen)m(t)h(\014eld)e(delimiter)h(and)f(a)g(single)h(space)g(c)m
+(haracter.)41 b(The)0 2858 y(follo)m(wing)32 b(examples)f(illustrate)g
+(k)m(eyw)m(ords)g(that)g(use)f(this)g(con)m(v)m(en)m(tion:)0
+3121 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f
+(time)0 3234 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e
+(heliocentric)g(velocity)0 3347 y(LAMBDA)94 b(=)763 b(5400.)47
+b(/)g([angstrom])e(central)h(wavelength)0 3460 y(FLUX)190
+b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h
+(flux)0 3723 y Fi(In)28 b(general,)h(the)g(units)e(named)h(in)g(the)h
+(IA)m(U\(1988\))i(St)m(yle)e(Guide)f(are)h(recommended,)f(with)g(the)h
+(main)f(excep-)0 3836 y(tion)j(that)g(the)f(preferred)g(unit)f(for)i
+(angle)g(is)f('deg')i(for)e(degrees.)0 3996 y(The)24
+b(FTPUNT)g(and)g(FTGUNT)h(subroutines)f(in)g(FITSIO)f(write)i(and)f
+(read,)i(resp)s(ectiv)m(ely)-8 b(,)28 b(the)c(k)m(eyw)m(ord)h(unit)0
+4109 y(strings)30 b(in)g(an)h(existing)g(k)m(eyw)m(ord.)0
+4403 y Fb(4.12.4)113 b(HIERAR)m(CH)34 b(Con)m(v)m(en)m(tion)k(for)f
+(Extended)h(Keyw)m(ord)f(Names)0 4623 y Fi(CFITSIO)k(supp)s(orts)g(the)
+i(HIERAR)m(CH)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tion)i(whic)m(h)e(allo)m
+(ws)h(k)m(eyw)m(ord)f(names)g(that)h(are)0 4736 y(longer)34
+b(then)e(8)i(c)m(haracters)g(and)f(ma)m(y)h(con)m(tain)g(the)f(full)g
+(range)g(of)h(prin)m(table)f(ASCI)s(I)e(text)j(c)m(haracters.)51
+b(This)0 4849 y(con)m(v)m(en)m(tion)39 b(w)m(as)f(dev)m(elop)s(ed)f(at)
+h(the)f(Europ)s(ean)f(Southern)g(Observ)-5 b(atory)37
+b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0 4962
+y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 5225 y Fe(HIERARCH)46
+b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j(Focus)e(position)0
+5488 y Fi(Basically)-8 b(,)55 b(this)47 b(con)m(v)m(en)m(tion)j(uses)d
+(the)h(FITS)f(k)m(eyw)m(ord)h('HIERAR)m(CH')h(to)f(indicate)h(that)f
+(this)f(con)m(v)m(en-)0 5601 y(tion)e(is)f(b)s(eing)g(used,)j(then)d
+(the)g(actual)i(k)m(eyw)m(ord)e(name)h(\()p Fe('ESO)i(INS)f(FOCU)h
+(POS')c Fi(in)h(this)g(example\))h(b)s(e-)0 5714 y(gins)40
+b(in)f(column)g(10)i(and)e(can)h(con)m(tain)g(an)m(y)g(prin)m(table)g
+(ASCI)s(I)e(text)j(c)m(haracters,)i(including)d(spaces.)68
+b(The)p eop end
+%%Page: 24 30
+TeXDict begin 24 29 bop 0 299 a Fi(24)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(equals)44 b(sign)h(marks)e(the)h(end)g(of)g(the)g(k)m(eyw)m
+(ord)h(name)f(and)f(is)i(follo)m(w)m(ed)g(b)m(y)f(the)g(usual)g(v)-5
+b(alue)45 b(and)e(com-)0 668 y(men)m(t)31 b(\014elds)f(just)g(as)h(in)f
+(standard)g(FITS)g(k)m(eyw)m(ords.)41 b(F)-8 b(urther)30
+b(details)i(of)f(this)f(con)m(v)m(en)m(tion)j(are)e(describ)s(ed)e(at)0
+781 y(h)m(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.)q(h)m(tml)36
+b(\(searc)m(h)c(for)e(HIERAR)m(CH\).)0 941 y(This)43
+b(con)m(v)m(en)m(tion)k(allo)m(ws)f(a)e(m)m(uc)m(h)h(broader)e(range)i
+(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)f(allo)m(w)m(ed)i(b)m(y)e(the)h
+(FITS)0 1054 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)g(of)f
+(suc)m(h)g(k)m(eyw)m(ords:)0 1296 y Fe(HIERARCH)46 b(LongKeyword)e(=)k
+(47.5)e(/)i(Keyword)e(has)h(>)g(8)g(characters,)e(and)i(mixed)f(case)0
+1409 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h
+('$')g(character)0 1522 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/)
+h(Keyword)d(contains)h(embedded)f(spaces)0 1764 y Fi(CFITSIO)40
+b(will)i(transparen)m(tly)g(read)g(and)f(write)g(these)i(k)m(eyw)m
+(ords,)i(so)d(application)h(programs)e(do)g(not)h(in)0
+1877 y(general)33 b(need)f(to)h(kno)m(w)f(an)m(ything)h(ab)s(out)f(the)
+g(sp)s(eci\014c)g(implemen)m(tation)i(details)f(of)g(the)f(HIERAR)m(CH)
+g(con-)0 1990 y(v)m(en)m(tion.)50 b(In)32 b(particular,)j(application)f
+(programs)e(do)h(not)h(need)e(to)i(sp)s(ecify)f(the)g(`HIERAR)m(CH')h
+(part)f(of)g(the)0 2103 y(k)m(eyw)m(ord)g(name)f(when)g(reading)g(or)g
+(writing)h(k)m(eyw)m(ords)f(\(although)h(it)g(ma)m(y)g(b)s(e)f
+(included)f(if)i(desired\).)46 b(When)0 2216 y(writing)35
+b(a)g(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g
+(if)g(the)g(k)m(eyw)m(ord)g(name)f(is)h(legal)h(as)f(a)g(standard)f
+(FITS)0 2328 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h
+(long)f(and)f(con)m(taining)i(only)e(letters,)k(digits,)f(or)e(a)g(min)
+m(us)e(sign)i(or)0 2441 y(underscore\).)68 b(If)39 b(so)h(it)g(writes)g
+(it)g(as)f(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)d(it)g
+(uses)f(the)h(hierarc)m(h)f(con-)0 2554 y(v)m(en)m(tion)34
+b(to)f(write)g(the)f(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)g(k)m(eyw)
+m(ord)h(name)f(length)h(is)g(67)g(c)m(haracters,)i(whic)m(h)d(lea)m(v)m
+(es)0 2667 y(only)c(1)h(space)g(for)f(the)h(v)-5 b(alue)29
+b(\014eld.)39 b(A)29 b(more)f(practical)i(limit)f(is)g(ab)s(out)f(40)h
+(c)m(haracters,)i(whic)m(h)d(lea)m(v)m(es)i(enough)0
+2780 y(ro)s(om)e(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)41
+b(CFITSIO)27 b(returns)g(an)h(error)h(if)f(there)h(is)f(not)h(enough)f
+(ro)s(om)h(for)f(b)s(oth)g(the)0 2893 y(k)m(eyw)m(ord)k(name)f(and)f
+(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)32 b(on)f(the)h(80-c)m(haracter)h
+(card,)f(except)g(for)f(string-v)-5 b(alued)32 b(k)m(eyw)m(ords)0
+3006 y(whic)m(h)h(are)g(simply)f(truncated)h(so)g(that)h(the)f(closing)
+h(quote)g(c)m(haracter)g(falls)f(in)g(column)g(80.)49
+b(In)32 b(the)h(curren)m(t)0 3119 y(implemen)m(tation,)e(CFITSIO)c
+(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)h(when)e(writing)h(the)
+g(k)m(eyw)m(ord)g(name,)g(but)f(it)0 3232 y(is)d(case-insensitiv)m(e)i
+(when)d(reading)h(or)g(searc)m(hing)h(for)f(a)g(k)m(eyw)m(ord.)40
+b(The)24 b(curren)m(t)h(implemen)m(tation)h(allo)m(ws)h(an)m(y)0
+3345 y(ASCI)s(I)i(text)j(c)m(haracter)h(\(ASCI)s(I)c(32)j(to)f(ASCI)s
+(I)f(126\))i(in)f(the)g(k)m(eyw)m(ord)g(name)g(except)h(for)e(the)h
+('=')g(c)m(haracter.)0 3458 y(A)f(space)h(is)g(also)g(required)f(on)g
+(either)h(side)f(of)h(the)f(equal)h(sign.)0 3788 y Fd(4.13)136
+b(Optimizing)45 b(Co)t(de)g(for)h(Maxim)l(um)f(Pro)t(cessing)g(Sp)t
+(eed)0 4039 y Fi(CFITSIO)22 b(has)h(b)s(een)f(carefully)i(designed)f
+(to)h(obtain)g(the)f(highest)h(p)s(ossible)e(sp)s(eed)h(when)f(reading)
+h(and)g(writing)0 4152 y(FITS)33 b(\014les.)51 b(In)33
+b(order)h(to)g(ac)m(hiev)m(e)i(the)e(b)s(est)g(p)s(erformance,)g(ho)m
+(w)m(ev)m(er,)i(application)g(programmers)d(m)m(ust)h(b)s(e)0
+4264 y(careful)24 b(to)h(call)g(the)f(CFITSIO)f(routines)g
+(appropriately)i(and)e(in)h(an)f(e\016cien)m(t)j(sequence;)h
+(inappropriate)c(usage)0 4377 y(of)31 b(CFITSIO)d(routines)j(can)f
+(greatly)i(slo)m(w)f(do)m(wn)f(the)h(execution)g(sp)s(eed)f(of)g(a)h
+(program.)0 4538 y(The)f(maxim)m(um)h(p)s(ossible)f(I/O)h(sp)s(eed)f
+(of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)g
+(computer)g(system)0 4650 y(that)g(it)f(is)g(running)e(on.)41
+b(As)30 b(a)g(rough)g(guide,)g(the)g(curren)m(t)g(generation)h(of)f(w)m
+(orkstations)h(can)g(ac)m(hiev)m(e)h(sp)s(eeds)0 4763
+y(of)j(2)g({)g(10)g(MB/s)h(when)e(reading)h(or)f(writing)h(FITS)f
+(images)i(and)e(similar,)i(or)f(sligh)m(tly)h(slo)m(w)m(er)g(sp)s(eeds)
+d(with)0 4876 y(FITS)c(binary)h(tables.)41 b(Reading)31
+b(of)f(FITS)g(\014les)g(can)h(o)s(ccur)f(at)h(ev)m(en)f(higher)g(rates)
+h(\(30MB/s)i(or)d(more\))h(if)f(the)0 4989 y(FITS)c(\014le)h(is)f
+(still)i(cac)m(hed)g(in)e(system)h(memory)f(follo)m(wing)j(a)e
+(previous)f(read)g(or)h(write)g(op)s(eration)g(on)g(the)g(same)0
+5102 y(\014le.)44 b(T)-8 b(o)32 b(more)g(accurately)h(predict)e(the)h
+(b)s(est)f(p)s(erformance)g(that)h(is)f(p)s(ossible)g(on)h(an)m(y)g
+(particular)f(system,)i(a)0 5215 y(diagnostic)h(program)f(called)h
+(\\sp)s(eed.c")f(is)g(included)f(with)h(the)g(CFITSIO)e(distribution)h
+(whic)m(h)h(can)g(b)s(e)f(run)0 5328 y(to)f(appro)m(ximately)h(measure)
+e(the)h(maxim)m(um)f(p)s(ossible)g(sp)s(eed)f(of)i(writing)f(and)g
+(reading)h(a)f(test)i(FITS)d(\014le.)0 5488 y(The)k(follo)m(wing)h(2)g
+(sections)g(pro)m(vide)g(some)f(bac)m(kground)g(on)h(ho)m(w)f(CFITSIO)f
+(in)m(ternally)i(manages)g(the)f(data)0 5601 y(I/O)g(and)g(describ)s
+(es)f(some)i(strategies)h(that)f(ma)m(y)g(b)s(e)e(used)h(to)h(optimize)
+g(the)g(pro)s(cessing)f(sp)s(eed)f(of)h(soft)m(w)m(are)0
+5714 y(that)e(uses)f(CFITSIO.)p eop end
+%%Page: 25 31
+TeXDict begin 25 30 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29
+b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971
+b Fi(25)0 555 y Fb(4.13.1)113 b(Bac)m(kground)38 b(Information:)50
+b(Ho)m(w)37 b(CFITSIO)h(Manages)h(Data)f(I/O)0 776 y
+Fi(Man)m(y)22 b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i
+(transferring)d(only)h(a)g(small)g(n)m(um)m(b)s(er)f(of)h(b)m(ytes)g
+(to)g(or)g(from)f(the)h(FITS)f(\014le)0 889 y(\(e.g,)31
+b(reading)e(a)g(k)m(eyw)m(ord,)h(or)f(writing)g(a)g(ro)m(w)g(in)f(a)h
+(table\);)i(it)f(w)m(ould)e(b)s(e)g(v)m(ery)i(ine\016cien)m(t)g(to)f
+(ph)m(ysically)h(read)0 1002 y(or)i(write)h(suc)m(h)f(small)g(blo)s(c)m
+(ks)h(of)f(data)h(directly)g(in)f(the)g(FITS)g(\014le)g(on)g(disk,)h
+(therefore)f(CFITSIO)f(main)m(tains)0 1115 y(a)38 b(set)g(of)g(in)m
+(ternal)h(Input{Output)c(\(IO\))j(bu\013ers)f(in)g(RAM)h(memory)g(that)
+g(eac)m(h)h(con)m(tain)g(one)f(FITS)f(blo)s(c)m(k)0 1228
+y(\(2880)27 b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25
+b(CFITSIO)f(needs)g(to)i(access)g(data)g(in)f(the)g(FITS)f(\014le,)j
+(it)e(\014rst)f(transfers)h(the)0 1341 y(FITS)30 b(blo)s(c)m(k)h(con)m
+(taining)h(those)f(b)m(ytes)g(in)m(to)g(one)g(of)f(the)h(IO)f
+(bu\013ers)f(in)h(memory)-8 b(.)42 b(The)30 b(next)g(time)h(CFITSIO)0
+1454 y(needs)36 b(to)g(access)i(b)m(ytes)e(in)g(the)g(same)h(blo)s(c)m
+(k)f(it)h(can)f(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h
+(than)g(using)g(a)0 1567 y(m)m(uc)m(h)c(slo)m(w)m(er)i(system)e(disk)g
+(access)h(routine.)46 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5
+b(ailable)35 b(IO)d(bu\013ers)f(is)h(determined)g(b)m(y)g(the)0
+1680 y(NIOBUF)f(parameter)g(\(in)f(\014tsio2.h\))h(and)f(is)h(curren)m
+(tly)f(set)h(to)g(40.)0 1840 y(Whenev)m(er)24 b(CFITSIO)f(reads)g(or)h
+(writes)g(data)g(it)h(\014rst)e(c)m(hec)m(ks)i(to)g(see)f(if)g(that)g
+(blo)s(c)m(k)h(of)f(the)g(FITS)f(\014le)g(is)h(already)0
+1953 y(loaded)33 b(in)m(to)g(one)f(of)g(the)g(IO)g(bu\013ers.)44
+b(If)32 b(not,)h(and)e(if)h(there)g(is)g(an)g(empt)m(y)h(IO)e(bu\013er)
+g(a)m(v)-5 b(ailable,)35 b(then)d(it)h(will)0 2066 y(load)g(that)h(blo)
+s(c)m(k)f(in)m(to)g(the)g(IO)g(bu\013er)e(\(when)h(reading)h(a)g(FITS)f
+(\014le\))h(or)g(will)g(initialize)i(a)e(new)f(blo)s(c)m(k)i(\(when)0
+2179 y(writing)j(to)h(a)g(FITS)f(\014le\).)62 b(If)37
+b(all)h(the)g(IO)e(bu\013ers)h(are)g(already)h(full,)h(it)f(m)m(ust)g
+(decide)f(whic)m(h)g(one)h(to)g(reuse)0 2291 y(\(generally)c(the)f(one)
+g(that)g(has)f(b)s(een)g(accessed)i(least)f(recen)m(tly\),)i(and)d
+(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)f(if)g(it)0
+2404 y(has)e(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g(new)
+f(blo)s(c)m(k.)0 2565 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f
+(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g(whenev)m(er)g(a)g
+(large)i(con)m(tiguous)f(set)g(of)f(b)m(ytes)h(are)0
+2677 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f
+(writing)g(a)h(FITS)f(image.)54 b(In)34 b(this)g(case)h(CFITSIO)e(b)m
+(ypasses)0 2790 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h
+(reads)g(or)g(writes)h(the)f(desired)g(b)m(ytes)g(directly)h(in)f(the)g
+(disk)g(\014le)g(with)0 2903 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev)
+m(el)i(\014le)d(read)g(or)h(write)f(routine.)58 b(The)36
+b(minim)m(um)g(threshold)f(for)h(the)h(n)m(um)m(b)s(er)e(of)0
+3016 y(b)m(ytes)40 b(to)g(read)f(or)g(write)g(this)h(w)m(a)m(y)g(is)f
+(set)h(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)i(curren)m(tly)f
+(set)h(to)g(3)0 3129 y(FITS)28 b(blo)s(c)m(ks)g(=)g(8640)i(b)m(ytes.)41
+b(This)28 b(is)g(the)g(most)h(e\016cien)m(t)h(w)m(a)m(y)f(to)g(read)g
+(or)f(write)h(large)g(c)m(h)m(unks)f(of)g(data)i(and)0
+3242 y(can)37 b(ac)m(hiev)m(e)i(IO)d(transfer)g(rates)h(of)g(5)g({)g
+(10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)g(fast)g(direct)g
+(IO)f(pro)s(cess)g(is)0 3355 y(not)29 b(applicable)g(when)e(accessing)j
+(columns)f(of)f(data)h(in)f(a)h(FITS)f(table)h(b)s(ecause)g(the)f(b)m
+(ytes)h(are)g(generally)h(not)0 3468 y(con)m(tiguous)g(since)f(they)g
+(are)h(in)m(terlea)m(v)m(ed)h(b)m(y)e(the)g(other)g(columns)g(of)g
+(data)g(in)g(the)g(table.)41 b(This)28 b(explains)h(wh)m(y)0
+3581 y(the)i(sp)s(eed)e(for)h(accessing)i(FITS)e(tables)h(is)f
+(generally)i(slo)m(w)m(er)f(than)g(accessing)g(FITS)f(images.)0
+3741 y(Giv)m(en)i(this)g(bac)m(kground)f(information,)h(the)g(general)g
+(strategy)h(for)e(e\016cien)m(tly)i(accessing)g(FITS)e(\014les)g
+(should)0 3854 y(no)m(w)36 b(b)s(e)g(apparen)m(t:)52
+b(when)35 b(dealing)i(with)f(FITS)g(images,)j(read)d(or)g(write)g
+(large)i(c)m(h)m(unks)e(of)g(data)h(at)g(a)f(time)0 3967
+y(so)30 b(that)h(the)f(direct)h(IO)e(mec)m(hanism)h(will)h(b)s(e)e(in)m
+(v)m(ok)m(ed;)j(when)d(accessing)j(FITS)d(headers)h(or)g(FITS)f
+(tables,)i(on)0 4080 y(the)k(other)g(hand,)g(once)g(a)g(particular)h
+(FITS)e(blo)s(c)m(k)h(has)f(b)s(een)g(loading)i(in)m(to)g(one)f(of)g
+(the)f(IO)h(bu\013ers,)g(try)f(to)0 4193 y(access)39
+b(all)f(the)f(needed)g(information)h(in)f(that)h(blo)s(c)m(k)g(b)s
+(efore)f(it)h(gets)g(\015ushed)d(out)j(of)g(the)f(IO)g(bu\013er.)60
+b(It)38 b(is)0 4305 y(imp)s(ortan)m(t)31 b(to)h(a)m(v)m(oid)g(the)f
+(situation)h(where)f(the)g(same)g(FITS)f(blo)s(c)m(k)i(is)f(b)s(eing)f
+(read)h(then)g(\015ushed)e(from)h(a)h(IO)0 4418 y(bu\013er)e(m)m
+(ultiple)i(times.)0 4578 y(The)f(follo)m(wing)i(section)f(giv)m(es)h
+(more)e(sp)s(eci\014c)h(suggestions)g(for)f(optimizing)i(the)e(use)g
+(of)h(CFITSIO.)0 4881 y Fb(4.13.2)113 b(Optimization)38
+b(Strategies)0 5102 y Fi(1.)43 b(Because)32 b(the)f(data)g(in)g(FITS)f
+(\014les)h(is)g(alw)m(a)m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f
+(order,)g(where)f(the)h(\014rst)f(b)m(yte)0 5215 y(of)g(n)m(umeric)h(v)
+-5 b(alues)30 b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f
+(and)g(the)g(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can)
+m(t)0 5328 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h
+(the)h(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g
+(when)f(running)0 5441 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i
+(Lin)m(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g
+(running)d(on)j(PCs)0 5554 y(with)c(x86)h(CPUs\).)0 5714
+y(On)i(fairly)h(new)f(CPUs)g(that)i(supp)s(ort)d("SSSE3")h(mac)m(hine)h
+(instructions)g(\(e.g.,)i(starting)f(with)e(In)m(tel)i(Core)f(2)p
+eop end
+%%Page: 26 32
+TeXDict begin 26 31 bop 0 299 a Fi(26)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(CPUs)21 b(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g
+(in)h(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h(and)e(8-b)m
+(yte)i(sw)m(apping)0 668 y(algorithms)k(are)g(a)m(v)-5
+b(ailable.)42 b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g
+(are)h(not)g(used)e(b)m(y)i(default)f(in)g(CFITSIO)0
+781 y(\(b)s(ecause)c(of)f(the)h(p)s(oten)m(tial)g(co)s(de)g(p)s
+(ortablilit)m(y)g(issues\),)i(but)c(users)h(can)g(enable)h(them)f(on)h
+(supp)s(orted)d(platforms)0 894 y(b)m(y)38 b(adding)f(the)h
+(appropriate)f(compiler)i(\015ags)e(\(-mssse3)i(with)e(gcc)i(or)f(icc)g
+(on)g(lin)m(ux\))g(when)e(compiling)j(the)0 1007 y(sw)m(appro)s(c.c)30
+b(source)g(\014le,)g(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h
+(generate)h(co)s(de)e(using)f(the)h(SSSE3)f(instruction)0
+1120 y(set.)41 b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g
+(this)f(is)g(to)h(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g
+(follo)m(wing)i(command:)95 1386 y Fe(>)96 b(./configure)44
+b(--enable-ssse3)0 1652 y Fi(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g
+(binary)f(executable)j(\014le)e(that)g(is)g(created)h(using)e(these)h
+(faster)g(functions)g(will)g(only)0 1765 y(run)c(on)h(mac)m(hines)g
+(that)h(supp)s(ort)d(the)i(SSSE3)f(mac)m(hine)i(instructions.)45
+b(It)33 b(will)f(crash)g(on)g(mac)m(hines)g(that)h(do)0
+1878 y(not)e(supp)s(ort)d(them.)0 2038 y(F)-8 b(or)36
+b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g(all)h(x86-64)h(CPUs)
+e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s(ort)d(SSSE3\),)j(a)0
+2151 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2)g(instructions)h
+(exists.)39 b(SSE2)24 b(is)h(enabled)f(b)m(y)h(default)g(on)f(x86)p
+3066 2151 28 4 v 34 w(64)h(CPUs)f(with)h(64-bit)0 2264
+y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h
+(enabled)d(b)m(y)g(the)g({enable-ssse3)i(\015ag\).)41
+b(When)30 b(running)d(on)0 2377 y(x86)p 143 2377 V 34
+w(64)k(CPUs)g(with)f(32-bit)i(op)s(erating)g(systems,)f(these)g(faster)
+h(2-b)m(yte)g(sw)m(apping)f(algorithms)g(are)h(not)f(used)0
+2490 y(b)m(y)f(default)h(in)f(CFITSIO,)f(but)h(can)g(b)s(e)g(enabled)g
+(explicitly)i(with:)0 2756 y Fe(./configure)45 b(--enable-sse2)0
+3022 y Fi(Preliminary)f(testing)h(indicates)g(that)g(these)f(SSSE3)f
+(and)g(SSE2)g(based)h(b)m(yte-sw)m(apping)h(algorithms)g(can)0
+3135 y(b)s(o)s(ost)31 b(the)h(CFITSIO)e(p)s(erformance)h(when)f
+(reading)i(or)f(writing)h(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g
+(or)f(more.)45 b(It)0 3248 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho)
+m(w)m(ev)m(er,)h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f
+(turned)f(on)i(\(e.g.,)j(b)m(y)d(using)f(the)0 3361 y(-O1)f(or)g(-O2)g
+(\015ags)g(in)g(gcc\))h(when)e(building)g(programs)h(that)g(use)g
+(these)g(fast)g(b)m(yte-sw)m(apping)h(algorithms)f(in)0
+3474 y(order)d(to)h(reap)f(the)h(full)f(b)s(ene\014t)g(of)g(the)h
+(SSSE3)e(and)h(SSE2)g(instructions;)h(without)f(optimization,)j(the)e
+(co)s(de)0 3587 y(ma)m(y)f(actually)h(run)d(slo)m(w)m(er)i(than)f(when)
+g(using)g(more)g(traditional)i(b)m(yte-sw)m(apping)f(tec)m(hniques.)0
+3747 y(2.)54 b(When)34 b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m
+(y)h(or)g(IMA)m(GE)g(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f
+(read)g(or)0 3860 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g
+(at)h(a)e(time)h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b)
+m(ytes\))f(so)g(that)g(the)f(direct)0 3973 y(IO)j(mec)m(hanism)h(will)f
+(b)s(e)g(used)g(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51
+b(Smaller)34 b(c)m(h)m(unks)f(of)g(data)h(are)g(read)0
+4086 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g
+(somewhat)g(less)g(e\016cien)m(t)i(b)s(ecause)e(of)g(the)g(extra)h(cop)
+m(y)f(op)s(eration)0 4199 y(and)26 b(additional)h(b)s(o)s(okk)m(eeping)
+g(steps)g(that)g(are)g(required.)39 b(In)26 b(principle)g(it)h(is)g
+(more)f(e\016cien)m(t)i(to)g(read)e(or)h(write)0 4312
+y(as)i(big)g(an)g(arra)m(y)h(of)f(image)h(pixels)f(at)h(one)f(time)g
+(as)h(p)s(ossible,)f(ho)m(w)m(ev)m(er,)h(if)f(the)h(arra)m(y)f(b)s
+(ecomes)g(so)g(large)h(that)0 4425 y(the)i(op)s(erating)g(system)f
+(cannot)h(store)g(it)g(all)h(in)e(RAM,)h(then)f(the)h(p)s(erformance)f
+(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 4538 y(of)g(the)f(increased)h
+(sw)m(apping)f(of)g(virtual)h(memory)f(to)h(disk.)0 4698
+y(3.)51 b(When)33 b(dealing)i(with)e(FITS)g(tables,)j(the)e(most)g(imp)
+s(ortan)m(t)g(e\016ciency)g(factor)h(in)e(the)h(soft)m(w)m(are)h
+(design)f(is)0 4811 y(to)j(read)f(or)g(write)g(the)g(data)h(in)f(the)g
+(FITS)g(\014le)g(in)g(a)g(single)h(pass)f(through)f(the)h(\014le.)58
+b(An)36 b(example)h(of)f(p)s(o)s(or)0 4924 y(program)g(design)h(w)m
+(ould)f(b)s(e)g(to)h(read)g(a)f(large,)k(3-column)d(table)g(b)m(y)g
+(sequen)m(tially)h(reading)f(the)f(en)m(tire)i(\014rst)0
+5036 y(column,)25 b(then)f(going)h(bac)m(k)f(to)h(read)e(the)h(2nd)g
+(column,)h(and)e(\014nally)h(the)g(3rd)f(column;)j(this)e(ob)m(viously)
+g(requires)0 5149 y(3)h(passes)f(through)f(the)i(\014le)f(whic)m(h)g
+(could)h(triple)f(the)h(execution)g(time)g(of)g(an)f(I/O)g(limited)h
+(program.)38 b(F)-8 b(or)25 b(small)0 5262 y(tables)31
+b(this)f(is)h(not)f(imp)s(ortan)m(t,)h(but)f(when)f(reading)h(m)m
+(ulti-megab)m(yte)j(sized)e(tables)g(these)g(ine\016ciencies)h(can)0
+5375 y(b)s(ecome)d(signi\014can)m(t.)41 b(The)28 b(more)h(e\016cien)m
+(t)h(pro)s(cedure)d(in)i(this)f(case)i(is)e(to)i(read)e(or)h(write)g
+(only)f(as)h(man)m(y)g(ro)m(ws)0 5488 y(of)g(the)g(table)h(as)f(will)h
+(\014t)e(in)m(to)i(the)g(a)m(v)-5 b(ailable)31 b(in)m(ternal)f(I/O)f
+(bu\013ers,)f(then)h(access)h(all)g(the)f(necessary)g(columns)0
+5601 y(of)i(data)h(within)e(that)i(range)f(of)g(ro)m(ws.)43
+b(Then)29 b(after)j(the)f(program)g(is)g(completely)h(\014nished)e
+(with)g(the)i(data)f(in)0 5714 y(those)i(ro)m(ws)e(it)i(can)f(mo)m(v)m
+(e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)f(\014t)
+g(in)g(the)g(bu\013ers,)f(con)m(tin)m(uing)i(in)f(this)p
+eop end
+%%Page: 27 33
+TeXDict begin 27 32 bop 0 299 a Fg(4.13.)73 b(OPTIMIZING)29
+b(CODE)h(F)m(OR)h(MAXIMUM)g(PR)m(OCESSING)f(SPEED)971
+b Fi(27)0 555 y(w)m(a)m(y)28 b(un)m(til)f(the)f(en)m(tire)i(\014le)f
+(has)f(b)s(een)g(pro)s(cessed.)39 b(By)27 b(using)f(this)h(pro)s
+(cedure)e(of)i(accessing)h(all)g(the)e(columns)h(of)0
+668 y(a)j(table)g(in)f(parallel)h(rather)f(than)g(sequen)m(tially)-8
+b(,)32 b(eac)m(h)e(blo)s(c)m(k)g(of)g(the)f(FITS)g(\014le)g(will)g
+(only)h(b)s(e)e(read)i(or)f(written)0 781 y(once.)0 941
+y(The)g(optimal)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(to)i(read)e(or)g
+(write)h(at)g(one)g(time)g(in)f(a)h(giv)m(en)g(table)h(dep)s(ends)c(on)
+j(the)f(width)g(of)0 1054 y(the)j(table)h(ro)m(w,)g(on)f(the)g(n)m(um)m
+(b)s(er)f(of)h(I/O)g(bu\013ers)f(that)i(ha)m(v)m(e)g(b)s(een)e(allo)s
+(cated)j(in)e(FITSIO,)f(and)h(also)h(on)f(the)0 1167
+y(n)m(um)m(b)s(er)27 b(of)i(other)f(FITS)g(\014les)g(that)h(are)g(op)s
+(en)f(at)h(the)g(same)g(time)g(\(since)g(one)g(I/O)f(bu\013er)f(is)i
+(alw)m(a)m(ys)h(reserv)m(ed)0 1280 y(for)k(eac)m(h)h(op)s(en)f(FITS)f
+(\014le\).)53 b(F)-8 b(ortunately)g(,)37 b(a)e(FITSIO)e(routine)h(is)h
+(a)m(v)-5 b(ailable)36 b(that)f(will)f(return)g(the)g(optimal)0
+1393 y(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(for)g(a)g(giv)m(en)g(table:)49
+b(call)35 b(ftgrsz\(unit,)g(nro)m(ws,)f(status\).)52
+b(It)34 b(is)g(not)g(critical)h(to)g(use)e(exactly)0
+1506 y(the)f(v)-5 b(alue)32 b(of)f(nro)m(ws)g(returned)g(b)m(y)g(this)g
+(routine,)h(as)g(long)g(as)g(one)g(do)s(es)f(not)h(exceed)g(it.)45
+b(Using)32 b(a)g(v)m(ery)f(small)0 1619 y(v)-5 b(alue)32
+b(ho)m(w)m(ev)m(er)i(can)e(also)h(lead)f(to)h(p)s(o)s(or)e(p)s
+(erformance)g(b)s(ecause)h(of)g(the)g(o)m(v)m(erhead)h(from)f(the)g
+(larger)g(n)m(um)m(b)s(er)0 1732 y(of)f(subroutine)e(calls.)0
+1892 y(The)36 b(optimal)h(n)m(um)m(b)s(er)f(of)g(ro)m(ws)h(returned)e
+(b)m(y)h(ftgrsz)h(is)g(v)-5 b(alid)37 b(only)f(as)h(long)g(as)g(the)f
+(application)i(program)0 2005 y(is)c(only)h(reading)g(or)f(writing)g
+(data)h(in)g(the)f(sp)s(eci\014ed)g(table.)54 b(An)m(y)34
+b(other)h(calls)g(to)g(access)h(data)f(in)f(the)h(table)0
+2118 y(header)26 b(w)m(ould)f(cause)i(additional)f(blo)s(c)m(ks)h(of)f
+(data)g(to)h(b)s(e)e(loaded)h(in)m(to)h(the)f(I/O)g(bu\013ers)f
+(displacing)h(data)g(from)0 2230 y(the)j(original)h(table,)g(and)e
+(should)f(b)s(e)h(a)m(v)m(oided)i(during)e(the)h(critical)h(p)s(erio)s
+(d)e(while)g(the)h(table)h(is)e(b)s(eing)g(read)h(or)0
+2343 y(written.)0 2503 y(4.)39 b(Use)24 b(binary)f(table)h(extensions)g
+(rather)f(than)h(ASCI)s(I)e(table)i(extensions)g(for)f(b)s(etter)h
+(e\016ciency)h(when)d(dealing)0 2616 y(with)37 b(tabular)h(data.)62
+b(The)37 b(I/O)g(to)h(ASCI)s(I)e(tables)i(is)g(slo)m(w)m(er)g(b)s
+(ecause)g(of)f(the)h(o)m(v)m(erhead)h(in)e(formatting)h(or)0
+2729 y(parsing)30 b(the)h(ASCI)s(I)f(data)h(\014elds,)g(and)f(b)s
+(ecause)h(ASCI)s(I)e(tables)i(are)g(ab)s(out)g(t)m(wice)h(as)f(large)h
+(as)f(binary)f(tables)0 2842 y(with)g(the)h(same)f(information)h(con)m
+(ten)m(t.)0 3002 y(5.)64 b(Design)39 b(soft)m(w)m(are)g(so)g(that)f(it)
+h(reads)f(the)g(FITS)f(header)h(k)m(eyw)m(ords)g(in)g(the)g(same)h
+(order)e(in)h(whic)m(h)g(they)0 3115 y(o)s(ccur)33 b(in)g(the)g
+(\014le.)49 b(When)32 b(reading)i(k)m(eyw)m(ords,)g(FITSIO)e(searc)m
+(hes)i(forw)m(ard)e(starting)i(from)e(the)i(p)s(osition)f(of)0
+3228 y(the)c(last)i(k)m(eyw)m(ord)e(that)h(w)m(as)g(read.)40
+b(If)29 b(it)g(reac)m(hes)i(the)e(end)g(of)g(the)h(header)f(without)g
+(\014nding)f(the)h(k)m(eyw)m(ord,)h(it)0 3341 y(then)j(go)s(es)h(bac)m
+(k)g(to)h(the)e(start)h(of)g(the)g(header)f(and)g(con)m(tin)m(ues)h
+(the)g(searc)m(h)g(do)m(wn)f(to)h(the)g(p)s(osition)f(where)g(it)0
+3454 y(started.)41 b(In)30 b(practice,)i(as)e(long)h(as)g(the)f(en)m
+(tire)i(FITS)d(header)h(can)h(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m
+(v)-5 b(ailable)33 b(in)m(ternal)0 3567 y(I/O)g(bu\013ers,)h(then)f
+(the)h(header)f(k)m(eyw)m(ord)h(access)h(will)e(b)s(e)g(v)m(ery)h(fast)
+g(and)f(it)h(mak)m(es)g(little)h(di\013erence)f(whic)m(h)0
+3680 y(order)c(they)g(are)h(accessed.)0 3840 y(6.)40
+b(Av)m(oid)29 b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h
+(BSCALE)e(and)h(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m
+(ords\))0 3953 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s
+(erations)f(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read)
+f(or)g(write)g(the)0 4066 y(data.)60 b(In)36 b(some)i(cases)f(it)g(ma)m
+(y)h(b)s(e)e(more)h(e\016cien)m(t)h(to)f(temp)s(orarily)g(turn)f(o\013)
+h(the)g(scaling)h(\(using)e(ftpscl)h(or)0 4179 y(fttscl\))32
+b(and)d(then)h(read)h(or)f(write)h(the)f(ra)m(w)h(unscaled)f(v)-5
+b(alues)31 b(in)f(the)g(FITS)g(\014le.)0 4339 y(7.)40
+b(Av)m(oid)27 b(using)g(the)g('implicit)h(datat)m(yp)s(e)f(con)m(v)m
+(ersion')h(capabilit)m(y)h(in)d(FITSIO.)g(F)-8 b(or)28
+b(instance,)g(when)e(reading)0 4452 y(a)f(FITS)e(image)j(with)e(BITPIX)
+g(=)g(-32)i(\(32-bit)g(\015oating)f(p)s(oin)m(t)f(pixels\),)j(read)d
+(the)h(data)g(in)m(to)g(a)g(single)g(precision)0 4565
+y(\015oating)e(p)s(oin)m(t)e(data)i(arra)m(y)f(in)g(the)g(program.)37
+b(F)-8 b(orcing)23 b(FITSIO)e(to)h(con)m(v)m(ert)i(the)e(data)g(to)h(a)
+f(di\013eren)m(t)g(datat)m(yp)s(e)0 4678 y(can)31 b(signi\014can)m(tly)
+g(slo)m(w)g(the)g(program.)0 4838 y(8.)57 b(Where)36
+b(feasible,)i(design)e(FITS)f(binary)g(tables)h(using)f(v)m(ector)j
+(column)d(elemen)m(ts)i(so)f(that)g(the)g(data)h(are)0
+4951 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g
+(rather)g(than)f(as)h(single)g(elemen)m(ts)h(in)f(m)m(ultiple)g(ro)m
+(ws.)41 b(F)-8 b(or)30 b(example,)0 5064 y(it)36 b(is)g(faster)g(to)g
+(access)h(the)f(data)h(in)e(a)h(table)h(that)f(con)m(tains)h(a)f
+(single)g(ro)m(w)g(and)f(2)h(columns)f(with)h(TF)m(ORM)0
+5176 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than)
+d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)f(a)g
+(table)0 5289 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g
+(with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g(to)g('1E')h(and)e
+('1J'.)h(In)f(the)0 5402 y(former)27 b(case)i(the)f(10000)i(\015oating)
+f(p)s(oin)m(t)f(v)-5 b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g
+(all)h(written)f(in)f(a)h(con)m(tiguous)h(blo)s(c)m(k)0
+5515 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g
+(written)h(quic)m(kly)-8 b(,)28 b(whereas)d(in)g(the)h(second)f(case)i
+(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 5628
+y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m(terlea)m(v)m(ed)j(with)c
+(the)h(in)m(teger)i(v)-5 b(alue)34 b(in)g(the)g(second)g(column)f(of)h
+(the)g(same)h(ro)m(w)f(so)p eop end
+%%Page: 28 34
+TeXDict begin 28 33 bop 0 299 a Fi(28)1277 b Fg(CHAPTER)29
+b(4.)72 b(FITSIO)29 b(CONVENTIONS)g(AND)i(GUIDELINES)0
+555 y Fi(CFITSIO)e(has)h(to)h(explicitly)h(mo)m(v)m(e)g(to)f(the)g(p)s
+(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f(b)s(e)f(read)g(or)g
+(written.)0 715 y(9.)52 b(Av)m(oid)35 b(the)g(use)e(of)i(v)-5
+b(ariable)34 b(length)h(v)m(ector)h(columns)d(in)h(binary)g(tables,)i
+(since)e(an)m(y)h(reading)f(or)g(writing)0 828 y(of)f(these)g(data)g
+(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s(ok)j(up)d(or)i(compute)g
+(the)f(starting)i(address)e(of)g(eac)m(h)i(ro)m(w)f(of)0
+941 y(data)e(in)f(the)h(heap.)40 b(In)30 b(practice,)i(this)e(is)g
+(probably)g(not)h(a)f(signi\014can)m(t)i(e\016ciency)f(issue.)0
+1101 y(10.)39 b(When)24 b(cop)m(ying)h(data)f(from)f(one)i(FITS)e
+(table)h(to)h(another,)g(it)g(is)f(faster)g(to)g(transfer)f(the)h(ra)m
+(w)g(b)m(ytes)h(instead)0 1214 y(of)h(reading)g(then)g(writing)g(eac)m
+(h)h(column)e(of)i(the)f(table.)40 b(The)25 b(FITSIO)g(subroutines)g
+(FTGTBS)g(and)h(FTPTBS)0 1327 y(\(for)i(ASCI)s(I)f(tables\),)j(and)d
+(FTGTBB)i(and)e(FTPTBB)i(\(for)f(binary)f(tables\))i(will)g(p)s(erform)
+d(lo)m(w-lev)m(el)31 b(reads)d(or)0 1440 y(writes)34
+b(of)h(an)m(y)f(con)m(tiguous)i(range)f(of)f(b)m(ytes)h(in)f(a)h(table)
+g(extension.)53 b(These)34 b(routines)g(can)h(b)s(e)e(used)h(to)h(read)
+0 1553 y(or)29 b(write)g(a)g(whole)g(ro)m(w)f(\(or)i(m)m(ultiple)f(ro)m
+(ws\))g(of)g(a)g(table)h(with)e(a)h(single)g(subroutine)f(call.)41
+b(These)29 b(routines)g(are)0 1666 y(fast)38 b(b)s(ecause)f(they)h(b)m
+(ypass)f(all)h(the)g(usual)f(data)h(scaling,)j(error)c(c)m(hec)m(king)i
+(and)e(mac)m(hine)h(dep)s(enden)m(t)e(data)0 1779 y(con)m(v)m(ersion)41
+b(that)g(is)e(normally)i(done)e(b)m(y)h(FITSIO,)f(and)g(they)h(allo)m
+(w)h(the)f(program)g(to)h(write)f(the)g(data)g(to)0 1892
+y(the)34 b(output)g(\014le)g(in)g(exactly)i(the)e(same)h(b)m(yte)g
+(order.)51 b(F)-8 b(or)35 b(these)g(same)f(reasons,)i(use)e(of)g(these)
+h(routines)f(can)0 2005 y(b)s(e)f(somewhat)h(risky)f(b)s(ecause)g(no)g
+(v)-5 b(alidation)35 b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m
+(ersion)j(is)e(p)s(erformed)f(b)m(y)h(these)0 2118 y(routines.)40
+b(In)27 b(general)h(these)h(routines)e(are)h(only)g(recommended)f(for)h
+(optimizing)h(critical)g(pieces)g(of)f(co)s(de)g(and)0
+2230 y(should)e(only)i(b)s(e)f(used)f(b)m(y)i(programmers)e(who)h
+(thoroughly)h(understand)d(the)j(in)m(ternal)g(b)m(yte)g(structure)f
+(of)h(the)0 2343 y(FITS)i(tables)h(they)f(are)h(reading)g(or)f
+(writing.)0 2503 y(11.)41 b(Another)30 b(strategy)g(for)g(impro)m(ving)
+f(the)h(sp)s(eed)e(of)i(writing)g(a)f(FITS)g(table,)i(similar)f(to)g
+(the)f(previous)g(one,)0 2616 y(is)j(to)g(directly)h(construct)f(the)f
+(en)m(tire)i(b)m(yte)f(stream)g(for)g(a)g(whole)g(table)g(ro)m(w)g
+(\(or)g(m)m(ultiple)h(ro)m(ws\))f(within)f(the)0 2729
+y(application)k(program)f(and)g(then)f(write)i(it)f(to)h(the)f(FITS)f
+(\014le)i(with)e(ftptbb.)51 b(This)33 b(a)m(v)m(oids)j(all)f(the)f(o)m
+(v)m(erhead)0 2842 y(normally)g(presen)m(t)g(in)f(the)h(column-orien)m
+(ted)h(CFITSIO)d(write)i(routines.)51 b(This)33 b(tec)m(hnique)h
+(should)f(only)h(b)s(e)0 2955 y(used)26 b(for)h(critical)i
+(applications,)g(b)s(ecause)d(it)i(mak)m(es)g(the)f(co)s(de)g(more)g
+(di\016cult)g(to)g(understand)e(and)i(main)m(tain,)0
+3068 y(and)d(it)h(mak)m(es)h(the)f(co)s(de)g(more)f(system)h(dep)s
+(enden)m(t)f(\(e.g.,)k(do)c(the)h(b)m(ytes)g(need)g(to)g(b)s(e)f(sw)m
+(app)s(ed)g(b)s(efore)g(writing)0 3181 y(to)31 b(the)g(FITS)e
+(\014le?\).)0 3341 y(12.)53 b(Finally)-8 b(,)37 b(external)e(factors)h
+(suc)m(h)e(as)g(the)h(t)m(yp)s(e)f(of)h(magnetic)g(disk)f(con)m
+(troller)i(\(SCSI)d(or)i(IDE\),)g(the)f(size)0 3454 y(of)h(the)g(disk)g
+(cac)m(he,)j(the)d(a)m(v)m(erage)i(seek)f(sp)s(eed)e(of)h(the)g(disk,)h
+(the)f(amoun)m(t)h(of)f(disk)f(fragmen)m(tation,)k(and)d(the)0
+3567 y(amoun)m(t)29 b(of)g(RAM)f(a)m(v)-5 b(ailable)31
+b(on)e(the)f(system)h(can)g(all)g(ha)m(v)m(e)h(a)f(signi\014can)m(t)g
+(impact)h(on)e(o)m(v)m(erall)j(I/O)d(e\016ciency)-8 b(.)0
+3680 y(F)g(or)36 b(critical)h(applications,)g(a)f(system)f
+(administrator)g(should)f(review)h(the)h(prop)s(osed)d(system)j(hardw)m
+(are)e(to)0 3793 y(iden)m(tify)d(an)m(y)g(p)s(oten)m(tial)g(I/O)g(b)s
+(ottlenec)m(ks.)p eop end
+%%Page: 29 35
+TeXDict begin 29 34 bop 0 1225 a Ff(Chapter)65 b(5)0
+1687 y Fl(Basic)77 b(In)-6 b(terface)77 b(Routines)0
+2180 y Fi(This)27 b(section)h(de\014nes)f(a)h(basic)g(set)g(of)g
+(subroutines)e(that)i(can)g(b)s(e)f(used)g(to)h(p)s(erform)e(the)i
+(most)g(common)g(t)m(yp)s(es)0 2293 y(of)d(read)g(and)f(write)h(op)s
+(erations)g(on)g(FITS)f(\014les.)39 b(New)25 b(users)f(should)g(start)h
+(with)g(these)g(subroutines)f(and)g(then,)0 2406 y(as)33
+b(needed,)h(explore)f(the)h(more)f(adv)-5 b(ance)33 b(routines)g
+(describ)s(ed)f(in)h(the)g(follo)m(wing)i(c)m(hapter)e(to)h(p)s(erform)
+e(more)0 2518 y(complex)f(or)f(sp)s(ecialized)i(op)s(erations.)0
+2679 y(A)e(righ)m(t)g(arro)m(w)g(sym)m(b)s(ol)f(\()p
+Fa(>)p Fi(\))h(is)g(used)f(to)h(separate)h(the)e(input)g(parameters)h
+(from)f(the)h(output)f(parameters)h(in)0 2791 y(the)i(de\014nition)f
+(of)g(eac)m(h)i(routine.)44 b(This)30 b(sym)m(b)s(ol)i(is)f(not)h
+(actually)h(part)e(of)h(the)f(calling)i(sequence.)45
+b(Note)32 b(that)0 2904 y(the)f(status)h(parameter)g(is)f(b)s(oth)g(an)
+g(input)f(and)h(an)g(output)g(parameter)h(and)e(m)m(ust)h(b)s(e)g
+(initialized)i(=)e(0)h(prior)0 3017 y(to)f(calling)h(the)f(FITSIO)e
+(subroutines.)0 3177 y(Refer)h(to)i(Chapter)d(9)i(for)f(the)h
+(de\014nition)f(of)g(all)i(the)e(parameters)h(used)e(b)m(y)i(these)g
+(in)m(terface)g(routines.)0 3525 y Fd(5.1)135 b(FITSIO)44
+b(Error)h(Status)h(Routines)0 3773 y Fh(1)81 b Fi(Return)24
+b(the)i(curren)m(t)f(v)m(ersion)h(n)m(um)m(b)s(er)e(of)i(the)f
+(\014tsio)h(library)-8 b(.)39 b(The)25 b(v)m(ersion)h(n)m(um)m(b)s(er)e
+(will)i(b)s(e)e(incremen)m(ted)227 3886 y(with)30 b(eac)m(h)i(new)e
+(release)h(of)g(CFITSIO.)382 4157 y Fe(FTVERS\()46 b(>)h(version\))0
+4429 y Fh(2)81 b Fi(Return)45 b(the)i(descriptiv)m(e)g(text)g(string)g
+(corresp)s(onding)e(to)i(a)g(FITSIO)e(error)h(status)h(co)s(de.)89
+b(The)46 b(30-)227 4541 y(c)m(haracter)32 b(length)f(string)f(con)m
+(tains)i(a)f(brief)f(description)g(of)g(the)h(cause)g(of)f(the)h
+(error.)382 4813 y Fe(FTGERR\(status,)44 b(>)j(errtext\))0
+5084 y Fh(3)81 b Fi(Return)40 b(the)h(top)g(\(oldest\))h(80-c)m
+(haracter)i(error)c(message)i(from)f(the)g(in)m(ternal)g(FITSIO)f(stac)
+m(k)i(of)f(error)227 5197 y(messages)29 b(and)f(shift)g(an)m(y)g
+(remaining)g(messages)h(on)f(the)g(stac)m(k)i(up)d(one)h(lev)m(el.)42
+b(An)m(y)28 b(FITSIO)f(error)h(will)227 5310 y(generate)h(one)e(or)g
+(more)h(messages)g(on)f(the)g(stac)m(k.)41 b(Call)28
+b(this)f(routine)g(rep)s(eatedly)g(to)h(get)h(eac)m(h)f(message)227
+5422 y(in)i(sequence.)41 b(The)30 b(error)g(stac)m(k)i(is)f(empt)m(y)f
+(when)g(a)g(blank)g(string)h(is)f(returned.)382 5694
+y Fe(FTGMSG\()46 b(>)h(errmsg\))1905 5942 y Fi(29)p eop
+end
+%%Page: 30 36
+TeXDict begin 30 35 bop 0 299 a Fi(30)1747 b Fg(CHAPTER)30
+b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)0
+555 y Fh(4)81 b Fi(The)33 b(FTPMRK)h(routine)g(puts)g(an)g(in)m
+(visible)h(mark)m(er)f(on)g(the)h(CFITSIO)d(error)i(stac)m(k.)54
+b(The)33 b(FTCMRK)227 668 y(routine)41 b(can)g(then)g(b)s(e)f(used)g
+(to)h(delete)h(an)m(y)f(more)g(recen)m(t)h(error)e(messages)i(on)f(the)
+g(stac)m(k,)k(bac)m(k)c(to)227 781 y(the)32 b(p)s(osition)f(of)g(the)g
+(mark)m(er.)43 b(This)31 b(preserv)m(es)g(an)m(y)g(older)h(error)e
+(messages)i(on)f(the)h(stac)m(k.)44 b(FTCMSG)227 894
+y(simply)23 b(clears)g(the)g(en)m(tire)h(error)e(message)i(stac)m(k.)40
+b(These)23 b(routines)f(are)h(called)h(without)f(an)m(y)g(argumen)m
+(ts.)382 1152 y Fe(FTPMRK)382 1265 y(FTCMRK)382 1378
+y(FTCMSG)0 1637 y Fh(5)81 b Fi(Prin)m(t)30 b(out)h(the)g(error)f
+(message)i(corresp)s(onding)e(to)h(the)g(input)f(status)h(v)-5
+b(alue)31 b(and)f(all)i(the)f(error)f(messages)227 1750
+y(on)g(the)h(FITSIO)e(stac)m(k)i(to)g(the)g(sp)s(eci\014ed)e(\014le)i
+(stream)f(\(stream)h(can)g(b)s(e)e(either)i(the)f(string)g('STDOUT')227
+1863 y(or)h('STDERR'\).)f(If)g(the)h(input)e(status)i(v)-5
+b(alue)31 b(=)f(0)h(then)f(this)g(routine)g(do)s(es)g(nothing.)334
+2121 y Fe(FTRPRT)46 b(\(stream,)g(>)h(status\))0 2380
+y Fh(6)81 b Fi(W)-8 b(rite)39 b(an)f(80-c)m(haracter)j(message)e(to)g
+(the)f(FITSIO)f(error)h(stac)m(k.)65 b(Application)39
+b(programs)f(should)f(not)227 2493 y(normally)31 b(write)f(to)i(the)e
+(stac)m(k,)i(but)e(there)g(ma)m(y)h(b)s(e)f(some)h(situations)g(where)f
+(this)g(is)h(desirable.)382 2751 y Fe(FTPMSG\(errmsg\))0
+3085 y Fd(5.2)135 b(File)46 b(I/O)f(Routines)0 3325 y
+Fh(1)81 b Fi(Op)s(en)34 b(an)h(existing)i(FITS)d(\014le)i(with)f
+(readonly)h(or)f(readwrite)h(access.)58 b(This)34 b(routine)i(alw)m(a)m
+(ys)h(op)s(ens)e(the)227 3438 y(primary)30 b(arra)m(y)i(\(the)f
+(\014rst)f(HDU\))i(of)f(the)h(\014le,)f(and)f(do)s(es)h(not)g(mo)m(v)m
+(e)h(to)g(a)f(follo)m(wing)i(extension,)f(if)f(one)227
+3551 y(w)m(as)c(sp)s(eci\014ed)f(as)g(part)h(of)f(the)h(\014lename.)39
+b(Use)27 b(the)g(FTNOPN)f(routine)g(to)h(automatically)j(mo)m(v)m(e)e
+(to)f(the)227 3664 y(extension.)44 b(This)31 b(routine)g(will)h(also)g
+(op)s(en)f(IRAF)g(images)i(\(.imh)e(format)h(\014les\))g(and)e(ra)m(w)i
+(binary)e(data)227 3776 y(arra)m(ys)e(with)f(READONL)-8
+b(Y)28 b(access)h(b)m(y)e(\014rst)g(con)m(v)m(erting)i(them)e(on)g(the)
+h(\015y)f(in)m(to)h(virtual)g(FITS)f(images.)227 3889
+y(See)39 b(the)f(`Extended)g(File)h(Name)g(Syn)m(tax')f(c)m(hapter)h
+(for)f(more)g(details.)65 b(The)38 b(FTDK)m(OPEN)g(routine)227
+4002 y(simply)f(op)s(ens)g(the)h(sp)s(eci\014ed)f(\014le)h(without)f
+(trying)h(to)g(in)m(terpret)g(the)g(\014lename)g(using)f(the)h
+(extended)227 4115 y(\014lename)31 b(syn)m(tax.)382 4374
+y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b
+(blocksize,status\))382 4487 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)41
+b(>)48 b(blocksize,status\))0 4745 y Fh(2)81 b Fi(Op)s(en)24
+b(an)i(existing)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g
+(access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227
+4858 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h
+(\014lename.)63 b(\(e.g.,)42 b('\014lename.\014ts+2')c(or)g
+('\014lename.\014ts[2]')i(will)227 4971 y(mo)m(v)m(e)e(to)g(the)e(3rd)g
+(HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h
+(di\013ers)f(from)g(FTOPEN)g(in)g(that)h(it)227 5084
+y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize)
+j(argumen)m(t.)382 5342 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Op)s(en)31 b(an)h(existing)h
+(FITS)f(\014le)g(with)g(readonly)h(or)f(readwrite)h(access)g(and)f
+(then)g(mo)m(v)m(e)i(to)f(the)g(\014rst)e(HDU)227 5714
+y(con)m(taining)c(signi\014can)m(t)g(data,)g(if)e(a\))i(an)e(HDU)h
+(name)g(or)f(n)m(um)m(b)s(er)f(to)i(op)s(en)f(w)m(as)h(not)g
+(explicitly)h(sp)s(eci\014ed)p eop end
+%%Page: 31 37
+TeXDict begin 31 36 bop 0 299 a Fg(5.2.)72 b(FILE)30
+b(I/O)h(R)m(OUTINES)2693 b Fi(31)227 555 y(as)31 b(part)g(of)g(the)g
+(\014lename,)h(and)e(b\))h(if)g(the)g(FITS)f(\014le)h(con)m(tains)h(a)g
+(n)m(ull)e(primary)g(arra)m(y)i(\(i.e.,)h(NAXIS)d(=)227
+668 y(0\).)41 b(In)26 b(this)i(case,)h(it)f(will)g(lo)s(ok)g(for)f(the)
+h(\014rst)e(IMA)m(GE)j(HDU)f(with)f(NAXIS)g(>)h(0,)g(or)g(the)f
+(\014rst)g(table)h(that)227 781 y(do)s(es)g(not)g(con)m(tain)g(the)g
+(strings)g(`GTI')g(\(Go)s(o)s(d)f(Time)h(In)m(terv)-5
+b(al\))29 b(or)f(`OBST)-8 b(ABLE')28 b(in)f(the)h(EXTNAME)227
+894 y(k)m(eyw)m(ord)37 b(v)-5 b(alue.)61 b(FTTOPN)36
+b(is)g(similar,)j(except)f(it)f(will)g(mo)m(v)m(e)i(to)e(the)g(\014rst)
+f(signi\014can)m(t)i(table)f(HDU)227 1007 y(\(skipping)26
+b(o)m(v)m(er)g(an)m(y)g(image)h(HDUs\))g(in)e(the)h(\014le)g(if)f(a)h
+(sp)s(eci\014c)g(HDU)g(name)g(or)g(n)m(um)m(b)s(er)e(is)i(not)f(sp)s
+(eci\014ed.)227 1120 y(FTIOPN)30 b(will)h(mo)m(v)m(e)h(to)f(the)f
+(\014rst)g(non-n)m(ull)g(image)i(HDU,)f(skipping)f(o)m(v)m(er)h(an)m(y)
+g(tables.)382 1376 y Fe(FTDOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 1489 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 1602 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))0 1858 y Fh(4)81 b Fi(Op)s(en)38 b(and)i(initialize)j
+(a)e(new)e(empt)m(y)i(FITS)f(\014le.)70 b(A)41 b(template)h(\014le)e
+(ma)m(y)h(also)g(b)s(e)f(sp)s(eci\014ed)g(to)h(de\014ne)227
+1971 y(the)34 b(structure)e(of)h(the)h(new)e(\014le)h(\(see)h(section)g
+(4.2.4\).)51 b(The)33 b(FTDKINIT)g(routine)g(simply)f(creates)j(the)227
+2084 y(sp)s(eci\014ed)30 b(\014le)g(without)h(trying)f(to)h(in)m
+(terpret)g(the)g(\014lename)f(using)g(the)h(extended)f(\014lename)h
+(syn)m(tax.)382 2340 y Fe(FTINIT\(unit,filename,blo)o(cks)o(ize,)41
+b(>)48 b(status\))382 2453 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o
+(e,)42 b(>)47 b(status\))0 2709 y Fh(5)81 b Fi(Close)31
+b(a)f(FITS)g(\014le)g(previously)g(op)s(ened)g(with)g(ftop)s(en)g(or)g
+(ftinit)382 2965 y Fe(FTCLOS\(unit,)44 b(>)k(status\))0
+3221 y Fh(6)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f
+(\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f
+(the)g(FITS)g(primary)f(arra)m(y\))382 3478 y Fe(FTMAHD\(unit,nhdu,)43
+b(>)k(hdutype,status\))0 3734 y Fh(7)81 b Fi(Create)30
+b(a)f(primary)f(arra)m(y)i(\(if)g(none)f(already)g(exists\),)i(or)e
+(insert)g(a)h(new)f(IMA)m(GE)h(extension)g(immediately)227
+3847 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g(a)g(new)g(Primary)
+f(Arra)m(y)h(at)h(the)f(b)s(eginning)f(of)h(the)g(\014le.)38
+b(An)m(y)23 b(follo)m(wing)227 3960 y(extensions)29 b(in)g(the)g
+(\014le)f(will)h(b)s(e)f(shifted)h(do)m(wn)f(to)h(mak)m(e)h(ro)s(om)e
+(for)h(the)g(new)f(extension.)40 b(If)29 b(the)g(CHDU)227
+4072 y(is)h(the)g(last)g(HDU)g(in)g(the)f(\014le)h(then)f(the)h(new)f
+(image)i(extension)f(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)g
+(end)227 4185 y(of)k(the)h(\014le.)52 b(One)33 b(can)h(force)h(a)g(new)
+e(primary)g(arra)m(y)i(to)g(b)s(e)e(inserted)h(at)h(the)f(b)s(eginning)
+f(of)h(the)h(FITS)227 4298 y(\014le)29 b(b)m(y)f(setting)i(status)e(=)h
+(-9)g(prior)e(to)j(calling)g(the)e(routine.)40 b(In)28
+b(this)g(case)i(the)e(existing)i(primary)d(arra)m(y)227
+4411 y(will)f(b)s(e)f(con)m(v)m(erted)i(to)g(an)e(IMA)m(GE)h
+(extension.)40 b(The)25 b(new)g(extension)i(\(or)f(primary)e(arra)m
+(y\))j(will)f(b)s(ecome)227 4524 y(the)32 b(CHDU.)f(The)g(FTI)s(IMGLL)f
+(routine)i(is)f(iden)m(tical)i(to)e(the)h(FTI)s(IMG)f(routine)g(except)
+h(that)f(the)h(4th)227 4637 y(parameter)25 b(\(the)g(length)g(of)f(eac)
+m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather)
+f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 4750 y(in)m(tegers.)382
+5006 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48
+b(status\))382 5119 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)41
+b(>)47 b(status\))0 5375 y Fh(8)81 b Fi(Insert)30 b(a)i(new)f(ASCI)s(I)
+f(T)-8 b(ABLE)31 b(extension)h(immediately)h(follo)m(wing)f(the)g
+(CHDU.)g(An)m(y)f(follo)m(wing)i(exten-)227 5488 y(sions)26
+b(will)g(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)s(om)e(for)h
+(the)f(new)g(extension.)40 b(If)25 b(there)h(are)g(no)g(other)f(follo)m
+(wing)227 5601 y(extensions)32 b(then)f(the)h(new)f(table)h(extension)g
+(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)f(end)g(of)h(the)f
+(\014le.)44 b(The)227 5714 y(new)33 b(extension)h(will)f(b)s(ecome)h
+(the)f(CHDU.)h(The)f(FTIT)-8 b(ABLL)33 b(routine)g(is)g(iden)m(tical)i
+(to)f(the)g(FTIT)-8 b(AB)p eop end
+%%Page: 32 38
+TeXDict begin 32 37 bop 0 299 a Fi(32)1747 b Fg(CHAPTER)30
+b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)227
+555 y Fi(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g
+(parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\))i(are)
+f(64-bit)227 668 y(in)m(tegers)43 b(rather)f(than)f(32-bit)i(in)m
+(tegers.)76 b(Under)41 b(normal)g(circumstances,)46 b(the)c(nro)m(ws)f
+(and)g(nro)m(wsll)227 781 y(paramen)m(ters)f(should)e(ha)m(v)m(e)j(a)f
+(v)-5 b(alue)40 b(of)f(0;)45 b(CFITSIO)38 b(will)h(automatically)k(up)s
+(date)38 b(the)i(n)m(um)m(b)s(er)e(of)227 894 y(ro)m(ws)31
+b(as)f(data)h(is)g(written)f(to)h(the)g(table.)382 1158
+y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o(ol,t)
+o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716 1271
+y(status\))382 1384 y(FTITABLL\(unit,rowlenll,n)o(row)o(sll,)o(tfie)o
+(lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o(xtna)o(me,)f(>)
+716 1497 y(status\))0 1761 y Fh(9)81 b Fi(Insert)26 b(a)h(new)g(binary)
+f(table)h(extension)h(immediately)g(follo)m(wing)h(the)e(CHDU.)g(An)m
+(y)g(follo)m(wing)h(extensions)227 1874 y(will)39 b(b)s(e)f(shifted)g
+(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)66
+b(If)38 b(there)h(are)f(no)h(other)f(follo)m(wing)227
+1987 y(extensions)f(then)g(the)f(new)g(bin)m(table)h(extension)h(will)f
+(simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of)h(the)g(\014le.)227
+2100 y(The)23 b(new)g(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The)
+f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f(the)g(FTIBIN)227
+2213 y(routine)30 b(except)i(that)e(the)h(2nd)e(parameter)i(\(that)g
+(giv)m(es)g(the)g(length)f(of)h(the)f(table\))h(is)g(a)f(64-bit)i(in)m
+(teger)227 2325 y(rather)24 b(than)g(a)g(32-bit)h(in)m(teger.)40
+b(Under)23 b(normal)h(circumstances,)i(the)e(nro)m(ws)f(and)h(nro)m
+(wsll)g(paramen)m(ters)227 2438 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5
+b(alue)32 b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date)30
+b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227
+2551 y(written)f(to)g(the)f(table.)382 2815 y Fe
+(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o(rm,)o(tuni)o(t,ex)o
+(tna)o(me,v)o(arid)o(at)41 b(>)48 b(status\))382 2928
+y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o(type)o(,tf)o(orm,)o(tuni)o
+(t,e)o(xtna)o(me,v)o(ari)o(dat)41 b(>)48 b(status\))0
+3380 y Fd(5.3)135 b(Keyw)l(ord)46 b(I/O)f(Routines)0
+3624 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j
+(record)e(in)m(to)g(the)g(CHU.)382 3888 y Fe(FTPREC\(unit,card,)43
+b(>)k(status\))0 4152 y Fh(2)81 b Fi(Put)28 b(\(app)s(end\))g(a)h(new)g
+(k)m(eyw)m(ord)g(of)g(the)g(appropriate)g(datat)m(yp)s(e)h(in)m(to)g
+(the)f(CHU.)g(The)f(E)h(and)f(D)i(v)m(ersions)227 4265
+y(of)24 b(this)f(routine)g(ha)m(v)m(e)h(the)g(added)e(feature)i(that)g
+(if)f(the)g('decimals')i(parameter)f(is)f(negativ)m(e,)k(then)c(the)g
+('G')227 4378 y(displa)m(y)30 b(format)g(rather)f(then)g(the)h('E')f
+(format)h(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m
+(ord)h(v)-5 b(alue,)227 4490 y(taking)27 b(the)g(absolute)g(v)-5
+b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39
+b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227
+4603 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp)
+s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227
+4716 y(the)31 b(v)-5 b(alue.)382 4980 y Fe(FTPKY[JKLS]\(unit,keyword)o
+(,ke)o(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382
+5093 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o
+(omme)o(nt,)41 b(>)48 b(status\))0 5357 y Fh(3)81 b Fi(Get)37
+b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f(the)h(CHU.)
+h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)e(the)h(header)g(is)g(at)227
+5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49
+b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h
+(subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter)
+f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g
+(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g
+(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i
+(blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p
+eop end
+%%Page: 33 39
+TeXDict begin 33 38 bop 0 299 a Fg(5.4.)72 b(D)m(A)-8
+b(T)g(A)32 b(I/O)f(R)m(OUTINES)2650 b Fi(33)382 555 y
+Fe(FTGREC\(unit,key_no,)42 b(>)48 b(card,status\))0 804
+y Fh(4)81 b Fi(Get)31 b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30
+b(\(with)h(the)f(appropriate)h(datat)m(yp)s(e\))g(and)f(commen)m(t)i
+(from)e(the)g(CHU)382 1052 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41
+b(>)48 b(keyval,comment,status\))0 1301 y Fh(5)81 b Fi(Delete)32
+b(an)e(existing)i(k)m(eyw)m(ord)f(record.)382 1550 y
+Fe(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 1881
+y Fd(5.4)135 b(Data)46 b(I/O)g(Routines)0 2132 y Fi(The)32
+b(follo)m(wing)i(routines)e(read)h(or)f(write)h(data)g(v)-5
+b(alues)33 b(in)f(the)h(curren)m(t)f(HDU)i(of)e(the)h(FITS)f(\014le.)47
+b(Automatic)0 2245 y(datat)m(yp)s(e)28 b(con)m(v)m(ersion)h(will)e(b)s
+(e)g(attempted)h(for)g(n)m(umerical)f(datat)m(yp)s(es)i(if)e(the)g(sp)s
+(eci\014ed)g(datat)m(yp)s(e)h(is)f(di\013eren)m(t)0 2357
+y(from)j(the)g(actual)i(datat)m(yp)s(e)g(of)e(the)h(FITS)e(arra)m(y)i
+(or)f(table)i(column.)0 2606 y Fh(1)81 b Fi(W)-8 b(rite)31
+b(elemen)m(ts)h(in)m(to)f(the)g(primary)e(data)j(arra)m(y)e(or)h(image)
+g(extension.)382 2855 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o
+(,nel)o(eme)o(nts,)o(valu)o(es,)41 b(>)48 b(status\))0
+3103 y Fh(2)81 b Fi(Read)30 b(elemen)m(ts)j(from)d(the)h(primary)e
+(data)j(arra)m(y)f(or)g(image)h(extension.)42 b(Unde\014ned)29
+b(arra)m(y)j(elemen)m(ts)g(will)227 3216 y(b)s(e)f(returned)f(with)h(a)
+h(v)-5 b(alue)31 b(=)g(n)m(ullv)-5 b(al,)33 b(unless)d(n)m(ullv)-5
+b(al)32 b(=)f(0)h(in)f(whic)m(h)g(case)h(no)f(c)m(hec)m(ks)i(for)e
+(unde\014ned)227 3329 y(pixels)h(will)f(b)s(e)f(p)s(erformed.)42
+b(The)30 b(an)m(yf)i(parameter)f(is)g(set)h(to)g(true)f(\(=)g(.true.\))
+43 b(if)31 b(an)m(y)h(of)f(the)g(returned)227 3442 y(elemen)m(ts)h(w)m
+(ere)f(unde\014ned.)382 3691 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o
+(ixel)o(,nel)o(eme)o(nts,)o(null)o(val)o(,)42 b(>)47
+b(values,anyf,status\))0 3939 y Fh(3)81 b Fi(W)-8 b(rite)36
+b(elemen)m(ts)h(in)m(to)f(an)f(ASCI)s(I)e(or)i(binary)g(table)h
+(column.)54 b(The)35 b(`felem')h(parameter)g(applies)f(only)g(to)227
+4052 y(v)m(ector)d(columns)e(in)g(binary)g(tables)h(and)f(is)g(ignored)
+h(when)e(writing)i(to)g(ASCI)s(I)d(tables.)382 4301 y
+Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o
+(ent)o(s,va)o(lues)o(,)42 b(>)47 b(status\))0 4549 y
+Fh(4)81 b Fi(Read)22 b(elemen)m(ts)h(from)e(an)g(ASCI)s(I)g(or)g
+(binary)g(table)i(column.)38 b(Unde\014ned)20 b(arra)m(y)i(elemen)m(ts)
+h(will)f(b)s(e)f(returned)227 4662 y(with)32 b(a)h(v)-5
+b(alue)33 b(=)f(n)m(ullv)-5 b(al,)34 b(unless)e(n)m(ullv)-5
+b(al)32 b(=)h(0)f(\(or)h(=)f(')h(')f(for)g(ftgcvs\))i(in)e(whic)m(h)g
+(case)i(no)e(c)m(hec)m(king)i(for)227 4775 y(unde\014ned)23
+b(v)-5 b(alues)25 b(will)g(b)s(e)g(p)s(erformed.)37 b(The)24
+b(ANYF)i(parameter)f(is)g(set)h(to)f(true)g(if)g(an)m(y)g(of)g(the)g
+(returned)227 4888 y(elemen)m(ts)32 b(are)f(unde\014ned.)227
+5036 y(An)m(y)d(column,)h(regardless)f(of)g(it's)h(in)m(trinsic)f
+(datat)m(yp)s(e,)i(ma)m(y)e(b)s(e)f(read)h(as)g(a)h(string.)40
+b(It)28 b(should)e(b)s(e)i(noted)227 5149 y(ho)m(w)m(ev)m(er)k(that)f
+(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)g(string)f(is)g(10)i(-)e
+(100)i(times)f(slo)m(w)m(er)g(than)f(reading)h(the)227
+5262 y(same)36 b(column)f(as)h(a)g(n)m(um)m(b)s(er)e(due)g(to)j(the)e
+(large)i(o)m(v)m(erhead)f(in)f(constructing)h(the)g(formatted)g
+(strings.)227 5375 y(The)i(displa)m(y)g(format)g(of)g(the)g(returned)f
+(strings)g(will)h(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m
+(ord,)j(if)227 5488 y(it)d(exists,)h(otherwise)f(b)m(y)f(the)g(datat)m
+(yp)s(e)h(of)f(the)h(column.)57 b(The)36 b(length)g(of)h(the)f
+(returned)f(strings)h(can)227 5601 y(b)s(e)29 b(determined)f(with)h
+(the)g(ftgcdw)g(routine.)40 b(The)28 b(follo)m(wing)j(TDISPn)c(displa)m
+(y)j(formats)f(are)g(curren)m(tly)227 5714 y(supp)s(orted:)p
+eop end
+%%Page: 34 40
+TeXDict begin 34 39 bop 0 299 a Fi(34)1747 b Fg(CHAPTER)30
+b(5.)111 b(BASIC)30 b(INTERF)-10 b(A)m(CE)30 b(R)m(OUTINES)418
+555 y Fe(Iw.m)142 b(Integer)418 668 y(Ow.m)g(Octal)47
+b(integer)418 781 y(Zw.m)142 b(Hexadecimal)45 b(integer)418
+894 y(Fw.d)142 b(Fixed)47 b(floating)e(point)418 1007
+y(Ew.d)142 b(Exponential)45 b(floating)h(point)418 1120
+y(Dw.d)142 b(Exponential)45 b(floating)h(point)418 1233
+y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)e(not)i
+(lost,)f(else)h(Ew.d)227 1483 y Fi(where)24 b(w)h(is)f(the)h(width)f
+(in)g(c)m(haracters)i(of)f(the)g(displa)m(y)m(ed)g(v)-5
+b(alues,)27 b(m)d(is)h(the)f(minim)m(um)g(n)m(um)m(b)s(er)g(of)g
+(digits)227 1595 y(displa)m(y)m(ed,)31 b(and)e(d)h(is)f(the)i(n)m(um)m
+(b)s(er)d(of)i(digits)g(to)h(the)f(righ)m(t)h(of)f(the)g(decimal.)41
+b(The)29 b(.m)h(\014eld)g(is)g(optional.)382 1855 y Fe
+(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o
+(nts)o(,nul)o(lval)o(,)42 b(>)1098 1968 y(values,anyf,status\))0
+2228 y Fh(5)81 b Fi(Get)42 b(the)g(table)h(column)e(n)m(um)m(b)s(er)g
+(and)g(full)g(name)h(of)g(the)f(column)h(whose)f(name)h(matc)m(hes)h
+(the)f(input)227 2341 y(template)35 b(string.)48 b(See)33
+b(the)h(`Adv)-5 b(anced)33 b(In)m(terface)h(Routines')f(c)m(hapter)h
+(for)f(a)g(full)g(description)g(of)g(this)227 2454 y(routine.)382
+2714 y Fe(FTGCNN\(unit,casesen,colt)o(emp)o(late)o(,)42
+b(>)47 b(colname,colnum,status\))p eop end
+%%Page: 35 41
+TeXDict begin 35 40 bop 0 1225 a Ff(Chapter)65 b(6)0
+1687 y Fl(Adv)-13 b(anced)78 b(In)-6 b(terface)77 b(Subroutines)0
+2180 y Fi(This)31 b(c)m(hapter)h(de\014nes)f(all)h(the)g(a)m(v)-5
+b(ailable)34 b(subroutines)d(in)g(the)h(FITSIO)e(user)h(in)m(terface.)
+46 b(F)-8 b(or)33 b(completeness,)0 2293 y(the)43 b(basic)g
+(subroutines)e(describ)s(ed)g(in)i(the)f(previous)h(c)m(hapter)g(are)g
+(also)g(rep)s(eated)g(here.)77 b(A)43 b(righ)m(t)g(arro)m(w)0
+2406 y(sym)m(b)s(ol)29 b(is)f(used)g(here)h(to)g(separate)h(the)f
+(input)f(parameters)h(from)f(the)h(output)g(parameters)g(in)f(the)h
+(de\014nition)0 2518 y(of)k(eac)m(h)h(subroutine.)47
+b(This)32 b(sym)m(b)s(ol)h(is)g(not)g(actually)i(part)d(of)h(the)h
+(calling)g(sequence.)49 b(An)32 b(alphab)s(etical)i(list)0
+2631 y(and)c(de\014nition)g(of)g(all)i(the)e(parameters)h(is)f(giv)m
+(en)i(at)f(the)f(end)g(of)h(this)f(section.)0 2961 y
+Fd(6.1)135 b(FITS)44 b(File)i(Op)t(en)e(and)h(Close)h(Subroutines:)0
+3197 y Fh(1)81 b Fi(Op)s(en)25 b(an)i(existing)h(FITS)f(\014le)g(with)g
+(readonly)g(or)g(readwrite)g(access.)41 b(The)27 b(FTDK)m(OPEN)g
+(routine)g(simply)227 3310 y(op)s(ens)32 b(the)g(sp)s(eci\014ed)g
+(\014le)h(without)f(trying)h(to)g(in)m(terpret)g(the)f(\014lename)h
+(using)f(the)g(extended)h(\014lename)227 3423 y(syn)m(tax.)41
+b(FTDOPN)28 b(op)s(ens)e(the)i(\014le)g(and)f(also)i(mo)m(v)m(es)g(to)g
+(the)f(\014rst)f(HDU)h(con)m(taining)h(signi\014can)m(t)g(data,)227
+3536 y(if)35 b(no)h(sp)s(eci\014c)f(HDU)h(is)f(sp)s(eci\014ed)f(as)i
+(part)f(of)g(the)h(\014lename.)55 b(FTTOPN)35 b(and)f(FTIOPN)h(are)h
+(similar)227 3649 y(except)26 b(that)f(they)g(will)g(mo)m(v)m(e)h(to)g
+(the)f(\014rst)f(table)h(HDU)h(or)e(image)i(HDU,)g(resp)s(ectiv)m(ely)
+-8 b(,)28 b(if)c(a)h(HDU)h(name)227 3762 y(or)31 b(n)m(um)m(b)s(er)e
+(is)h(not)h(sp)s(eci\014ed)e(as)i(part)f(of)h(the)f(\014lename.)382
+3996 y Fe(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47
+b(blocksize,status\))382 4108 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)
+41 b(>)48 b(blocksize,status\))382 4334 y(FTDOPN\(unit,filename,rwm)o
+(ode)o(,)42 b(>)47 b(status\))382 4447 y(FTTOPN\(unit,filename,rwm)o
+(ode)o(,)42 b(>)47 b(status\))382 4560 y(FTIOPN\(unit,filename,rwm)o
+(ode)o(,)42 b(>)47 b(status\))0 4794 y Fh(2)81 b Fi(Op)s(en)24
+b(an)i(existing)h(FITS)e(\014le)h(with)f(readonly)h(or)g(readwrite)g
+(access)h(and)f(mo)m(v)m(e)h(to)f(a)h(follo)m(wing)g(extension,)227
+4907 y(if)38 b(one)g(w)m(as)g(sp)s(eci\014ed)g(as)g(part)f(of)h(the)h
+(\014lename.)63 b(\(e.g.,)42 b('\014lename.\014ts+2')c(or)g
+('\014lename.\014ts[2]')i(will)227 5020 y(mo)m(v)m(e)e(to)g(the)e(3rd)g
+(HDU)i(in)e(the)h(\014le\).)60 b(Note)37 b(that)h(this)e(routine)h
+(di\013ers)f(from)g(FTOPEN)g(in)g(that)h(it)227 5133
+y(do)s(es)30 b(not)h(ha)m(v)m(e)h(the)e(redundan)m(t)f(blo)s(c)m(ksize)
+j(argumen)m(t.)382 5367 y Fe(FTNOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))0 5601 y Fh(3)81 b Fi(Reop)s(en)38
+b(a)i(FITS)e(\014le)i(that)f(w)m(as)h(previously)f(op)s(ened)f(with)h
+(FTOPEN,)g(FTNOPN,)g(or)h(FTINIT.)e(The)227 5714 y(newunit)f(n)m(um)m
+(b)s(er)f(ma)m(y)j(then)e(b)s(e)g(treated)i(as)f(a)g(separate)g
+(\014le,)i(and)d(one)h(ma)m(y)h(sim)m(ultaneously)f(read)1905
+5942 y(35)p eop end
+%%Page: 36 42
+TeXDict begin 36 41 bop 0 299 a Fi(36)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)227 555 y Fi(or)36 b(write)g(to)g(2)g(\(or)g(more\))g
+(di\013eren)m(t)g(extensions)g(in)f(the)h(same)g(\014le.)56
+b(The)35 b(FTOPEN)g(and)g(FTNOPN)227 668 y(routines)f(\(ab)s(o)m(v)m
+(e\))h(automatically)h(detects)f(cases)g(where)e(a)g(previously)h(op)s
+(ened)e(\014le)i(is)g(b)s(eing)f(op)s(ened)227 781 y(again,)c(and)e
+(then)g(in)m(ternally)h(call)g(FTREOPEN,)f(so)h(programs)e(should)h
+(rarely)g(need)g(to)h(explicitly)h(call)227 894 y(this)i(routine.)334
+1136 y Fe(FTREOPEN\(unit,)44 b(>)j(newunit,)f(status\))0
+1377 y Fh(4)81 b Fi(Op)s(en)24 b(and)g(initialize)k(a)e(new)f(empt)m(y)
+g(FITS)g(\014le.)39 b(The)25 b(FTDKINIT)g(routine)g(simply)g(creates)i
+(the)f(sp)s(eci\014ed)227 1490 y(\014le)31 b(without)f(trying)h(to)g
+(in)m(terpret)f(the)h(\014lename)g(using)e(the)i(extended)f(\014lename)
+h(syn)m(tax.)334 1732 y Fe(FTINIT\(unit,filename,bloc)o(ksi)o(ze,)41
+b(>)48 b(status\))334 1845 y(FTDKINIT\(unit,filename,bl)o(ock)o(size)o
+(,)42 b(>)47 b(status\))0 2087 y Fh(5)81 b Fi(Create)24
+b(a)g(new)f(FITS)g(\014le,)i(using)e(a)h(template)h(\014le)e(to)i
+(de\014ne)d(its)i(initial)h(size)g(and)e(structure.)37
+b(The)24 b(template)227 2199 y(ma)m(y)39 b(b)s(e)f(another)h(FITS)e
+(HDU)i(or)g(an)f(ASCI)s(I)f(template)j(\014le.)64 b(If)38
+b(the)h(input)e(template)j(\014le)e(name)h(is)227 2312
+y(blank,)28 b(then)f(this)g(routine)g(b)s(eha)m(v)m(es)h(the)f(same)h
+(as)f(FTINIT.)g(The)f(curren)m(tly)i(supp)s(orted)d(format)i(of)h(the)
+227 2425 y(ASCI)s(I)c(template)j(\014le)f(is)f(describ)s(ed)g(under)f
+(the)i(\014ts)p 2037 2425 28 4 v 32 w(parse)p 2277 2425
+V 33 w(template)g(routine)g(\(in)g(the)f(general)i(Utilities)227
+2538 y(section\),)32 b(but)e(this)g(ma)m(y)h(c)m(hange)h(sligh)m(tly)g
+(later)f(releases)g(of)g(CFITSIO.)334 2780 y Fe(FTTPLT\(unit,)45
+b(filename,)g(tplfilename,)f(>)k(status\))0 3022 y Fh(6)81
+b Fi(Flush)33 b(in)m(ternal)h(bu\013ers)f(of)h(data)g(to)g(the)g
+(output)g(FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)h
+(or)f(ftinit.)227 3135 y(The)j(routine)h(usually)f(nev)m(er)h(needs)f
+(to)i(b)s(e)e(called,)j(but)d(doing)h(so)g(will)g(ensure)f(that)h(if)f
+(the)h(program)227 3247 y(subsequen)m(tly)30 b(ab)s(orts,)g(then)h(the)
+f(FITS)g(\014le)g(will)h(ha)m(v)m(e)h(at)f(least)g(b)s(een)f(closed)h
+(prop)s(erly)-8 b(.)382 3489 y Fe(FTFLUS\(unit,)44 b(>)k(status\))0
+3731 y Fh(7)81 b Fi(Close)31 b(a)f(FITS)g(\014le)g(previously)g(op)s
+(ened)g(with)g(ftop)s(en)g(or)g(ftinit)382 3973 y Fe(FTCLOS\(unit,)44
+b(>)k(status\))0 4214 y Fh(8)81 b Fi(Close)34 b(and)f(DELETE)g(a)h
+(FITS)f(\014le)h(previously)f(op)s(ened)g(with)g(ftop)s(en)g(or)h
+(ftinit.)51 b(This)33 b(routine)g(ma)m(y)i(b)s(e)227
+4327 y(useful)29 b(in)h(cases)g(where)g(a)g(FITS)f(\014le)g(is)h
+(created,)h(but)e(an)h(error)f(o)s(ccurs)h(whic)m(h)f(prev)m(en)m(ts)i
+(the)e(complete)227 4440 y(\014le)i(from)f(b)s(eing)g(written.)382
+4682 y Fe(FTDELT\(unit,)44 b(>)k(status\))0 4924 y Fh(9)81
+b Fi(Get)31 b(the)g(v)-5 b(alue)31 b(of)f(an)g(un)m(used)g(I/O)g(unit)g
+(n)m(um)m(b)s(er)f(whic)m(h)h(ma)m(y)h(then)f(b)s(e)g(used)g(as)g
+(input)g(to)h(FTOPEN)f(or)227 5036 y(FTINIT.)36 b(This)f(routine)h
+(searc)m(hes)h(for)f(the)g(\014rst)f(un)m(used)g(unit)g(n)m(um)m(b)s
+(er)g(in)g(the)i(range)f(from)f(with)h(99)227 5149 y(do)m(wn)d(to)h
+(50.)50 b(This)32 b(routine)h(just)g(k)m(eeps)h(an)f(in)m(ternal)h
+(list)f(of)h(the)f(allo)s(cated)i(unit)e(n)m(um)m(b)s(ers)f(and)g(do)s
+(es)227 5262 y(not)26 b(ph)m(ysically)g(c)m(hec)m(k)g(that)g(the)g(F)-8
+b(ortran)25 b(unit)g(is)g(a)m(v)-5 b(ailable)28 b(\(to)e(b)s(e)f
+(compatible)h(with)f(the)g(SPP)f(v)m(ersion)227 5375
+y(of)35 b(FITSIO\).)g(Th)m(us)f(users)g(m)m(ust)h(not)g(indep)s(enden)m
+(tly)f(allo)s(cate)j(an)m(y)f(unit)e(n)m(um)m(b)s(ers)g(in)h(the)g
+(range)g(50)227 5488 y(-)42 b(99)g(if)f(this)g(routine)g(is)g(also)h
+(to)g(b)s(e)f(used)f(in)h(the)g(same)h(program.)73 b(This)40
+b(routine)h(is)g(pro)m(vided)g(for)227 5601 y(con)m(v)m(enience)34
+b(only)-8 b(,)32 b(and)e(it)i(is)f(not)h(required)e(that)i(the)f(unit)g
+(n)m(um)m(b)s(ers)f(used)g(b)m(y)h(FITSIO)f(b)s(e)h(allo)s(cated)227
+5714 y(b)m(y)g(this)f(routine.)p eop end
+%%Page: 37 43
+TeXDict begin 37 42 bop 0 299 a Fg(6.1.)72 b(FITS)30
+b(FILE)g(OPEN)g(AND)h(CLOSE)e(SUBR)m(OUTINES:)1561 b
+Fi(37)382 555 y Fe(FTGIOU\()46 b(>)h(iounit,)f(status\))0
+807 y Fh(10)g Fi(F)-8 b(ree)34 b(\(deallo)s(cate\))i(an)d(I/O)g(unit)f
+(n)m(um)m(b)s(er)g(whic)m(h)g(w)m(as)h(previously)g(allo)s(cated)i
+(with)e(FTGIOU.)g(All)g(pre-)227 919 y(viously)28 b(allo)s(cated)i
+(unit)d(n)m(um)m(b)s(ers)f(ma)m(y)i(b)s(e)f(deallo)s(cated)j(at)e(once)
+h(b)m(y)e(calling)i(FTFIOU)f(with)f(iounit)h(=)227 1032
+y(-1.)382 1284 y Fe(FTFIOU\(iounit,)44 b(>)j(status\))0
+1535 y Fh(11)f Fi(Return)30 b(the)h(F)-8 b(ortran)31
+b(unit)g(n)m(um)m(b)s(er)e(that)i(corresp)s(onds)f(to)h(the)g(C)g
+(\014ts\014le)f(p)s(oin)m(ter)h(v)-5 b(alue,)32 b(or)e(vice)i(v)m
+(ersa.)227 1648 y(These)37 b(2)h(C)f(routines)g(ma)m(y)g(b)s(e)g
+(useful)f(in)h(mixed)g(language)i(programs)e(where)f(b)s(oth)h(C)g(and)
+f(F)-8 b(ortran)227 1761 y(subroutines)25 b(need)g(to)i(access)g(the)f
+(same)g(\014le.)40 b(F)-8 b(or)26 b(example,)i(if)e(a)g(FITS)f(\014le)h
+(is)g(op)s(ened)f(with)g(unit)g(12)i(b)m(y)227 1874 y(a)k(F)-8
+b(ortran)31 b(subroutine,)f(then)g(a)h(C)f(routine)h(within)f(the)g
+(same)h(program)g(could)f(get)i(the)e(\014t\014le)h(p)s(oin)m(ter)227
+1987 y(v)-5 b(alue)39 b(to)f(access)h(the)f(same)h(\014le)f(b)m(y)f
+(calling)j('fptr)d(=)h(CUnit2FITS\(12\)'.)64 b(These)38
+b(routines)g(return)f(a)227 2100 y(v)-5 b(alue)31 b(of)g(zero)g(if)f
+(an)g(error)g(o)s(ccurs.)286 2351 y Fe(int)334 b(CFITS2Unit\(fitsfile)
+42 b(*ptr\);)286 2464 y(fitsfile*)k(CUnit2FITS\(int)e(unit\);)0
+2715 y Fh(11)i Fi(P)m(arse)32 b(the)g(input)e(\014lename)i(and)f
+(return)f(the)i(HDU)g(n)m(um)m(b)s(er)e(that)i(w)m(ould)f(b)s(e)g(mo)m
+(v)m(ed)i(to)f(if)f(the)h(\014le)f(w)m(ere)227 2828 y(op)s(ened)i(with)
+g(FTNOPN.)g(The)f(returned)g(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)h(with)g
+(1)g(for)g(the)g(primary)g(arra)m(y)-8 b(,)35 b(so)227
+2941 y(for)d(example,)g(if)g(the)g(input)f(\014lename)g(=)h(`m)m
+(y\014le.\014ts[2]')h(then)e(hdun)m(um)e(=)j(3)g(will)g(b)s(e)f
+(returned.)43 b(FIT-)227 3054 y(SIO)35 b(do)s(es)h(not)g(op)s(en)g(the)
+g(\014le)g(to)h(c)m(hec)m(k)h(if)e(the)g(extension)h(actually)h(exists)
+e(if)h(an)e(extension)i(n)m(um)m(b)s(er)227 3167 y(is)43
+b(sp)s(eci\014ed.)75 b(If)42 b(an)g(extension)h(*name*)g(is)f(included)
+g(in)g(the)g(\014le)g(name)h(sp)s(eci\014cation)g(\(e.g.)77
+b(`m)m(y-)227 3280 y(\014le.\014ts[EVENTS]')30 b(then)f(this)h(routine)
+g(will)g(ha)m(v)m(e)h(to)f(op)s(en)f(the)h(FITS)f(\014le)h(and)f(lo)s
+(ok)h(for)g(the)g(p)s(osition)227 3393 y(of)38 b(the)h(named)e
+(extension,)k(then)d(close)h(\014le)f(again.)64 b(This)38
+b(is)g(not)g(p)s(ossible)f(if)h(the)g(\014le)g(is)g(b)s(eing)g(read)227
+3506 y(from)e(the)g(stdin)f(stream,)j(and)d(an)h(error)f(will)h(b)s(e)g
+(returned)e(in)i(this)g(case.)58 b(If)35 b(the)h(\014lename)g(do)s(es)g
+(not)227 3619 y(sp)s(ecify)29 b(an)g(explicit)h(extension)g(\(e.g.)42
+b('m)m(y\014le.\014ts'\))30 b(then)f(hdun)m(um)e(=)h(-99)j(will)e(b)s
+(e)g(returned,)f(whic)m(h)h(is)227 3731 y(functionally)34
+b(equiv)-5 b(alen)m(t)35 b(to)g(hdun)m(um)c(=)i(1.)50
+b(This)33 b(routine)g(is)h(mainly)g(used)e(for)i(bac)m(kw)m(ard)g
+(compati-)227 3844 y(bilit)m(y)g(in)e(the)g(fto)s(ols)h(soft)m(w)m(are)
+h(pac)m(k)-5 b(age)34 b(and)e(is)g(not)g(recommended)g(for)g(general)i
+(use.)46 b(It)32 b(is)h(generally)227 3957 y(b)s(etter)i(and)g(more)g
+(e\016cien)m(t)h(to)g(\014rst)e(op)s(en)g(the)h(FITS)f(\014le)h(with)g
+(FTNOPN,)g(then)g(use)f(FTGHDN)i(to)227 4070 y(determine)30
+b(whic)m(h)g(HDU)g(in)f(the)h(\014le)g(has)g(b)s(een)f(op)s(ened,)g
+(rather)g(than)h(calling)h(FTEXTN)f(follo)m(w)m(ed)h(b)m(y)227
+4183 y(a)g(call)h(to)f(FTNOPN.)382 4434 y Fe(FTEXTN\(filename,)43
+b(>)48 b(nhdu,)e(status\))0 4686 y Fh(12)g Fi(Return)30
+b(the)g(name)h(of)f(the)h(op)s(ened)e(FITS)h(\014le.)382
+4937 y Fe(FTFLNM\(unit,)44 b(>)k(filename,)d(status\))0
+5188 y Fh(13)h Fi(Return)30 b(the)g(I/O)g(mo)s(de)g(of)h(the)g(op)s(en)
+e(FITS)h(\014le)g(\(READONL)-8 b(Y)32 b(=)e(0,)h(READ)m(WRITE)g(=)f
+(1\).)382 5440 y Fe(FTFLMD\(unit,)44 b(>)k(iomode,)e(status\))0
+5691 y Fh(14)g Fi(Return)30 b(the)g(\014le)h(t)m(yp)s(e)f(of)h(the)f
+(op)s(ened)g(FITS)g(\014le)g(\(e.g.)42 b('\014le://',)32
+b('ftp://',)g(etc.\).)p eop end
+%%Page: 38 44
+TeXDict begin 38 43 bop 0 299 a Fi(38)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTURLT\(unit,)44 b(>)k(urltype,)d
+(status\))0 819 y Fh(15)h Fi(P)m(arse)27 b(the)f(input)f(\014lename)i
+(or)f(URL)g(in)m(to)h(its)g(comp)s(onen)m(t)f(parts:)39
+b(the)26 b(\014le)g(t)m(yp)s(e)h(\(\014le://,)h(ftp://,)g(h)m(ttp://,)
+227 932 y(etc\),)34 b(the)e(base)g(input)e(\014le)i(name,)g(the)g(name)
+g(of)g(the)g(output)f(\014le)h(that)g(the)g(input)f(\014le)g(is)h(to)g
+(b)s(e)f(copied)227 1045 y(to)38 b(prior)e(to)h(op)s(ening,)h(the)f
+(HDU)g(or)f(extension)i(sp)s(eci\014cation,)h(the)e(\014ltering)f(sp)s
+(eci\014er,)i(the)f(binning)227 1157 y(sp)s(eci\014er,)e(and)e(the)i
+(column)f(sp)s(eci\014er.)51 b(Blank)34 b(strings)g(will)h(b)s(e)e
+(returned)g(for)h(an)m(y)g(comp)s(onen)m(ts)g(that)227
+1270 y(are)d(not)g(presen)m(t)f(in)g(the)h(input)e(\014le)i(name.)334
+1534 y Fe(FTIURL\(filename,)43 b(>)48 b(filetype,)d(infile,)h(outfile,)
+g(extspec,)f(filter,)716 1647 y(binspec,)g(colspec,)h(status\))0
+1910 y Fh(16)g Fi(P)m(arse)e(the)g(input)f(\014le)h(name)f(and)g
+(return)g(the)h(ro)s(ot)g(\014le)f(name.)81 b(The)43
+b(ro)s(ot)h(name)g(includes)f(the)h(\014le)227 2023 y(t)m(yp)s(e)35
+b(if)g(sp)s(eci\014ed,)h(\(e.g.)56 b('ftp://')37 b(or)e('h)m(ttp://'\))
+i(and)d(the)h(full)g(path)g(name,)h(to)g(the)f(exten)m(t)i(that)e(it)h
+(is)227 2136 y(sp)s(eci\014ed)26 b(in)f(the)i(input)e(\014lename.)39
+b(It)26 b(do)s(es)g(not)g(include)g(the)g(HDU)h(name)f(or)g(n)m(um)m(b)
+s(er,)g(or)g(an)m(y)h(\014ltering)227 2249 y(sp)s(eci\014cations.)334
+2513 y Fe(FTRTNM\(filename,)43 b(>)48 b(rootname,)d(status\))0
+2776 y Fh(16)h Fi(T)-8 b(est)36 b(if)g(the)g(input)f(\014le)h(or)f(a)i
+(compressed)e(v)m(ersion)h(of)g(the)g(\014le)g(\(with)g(a)g(.gz,)i(.Z,)
+e(.z,)i(or)e(.zip)g(extension\))227 2889 y(exists)j(on)f(disk.)63
+b(The)37 b(returned)g(v)-5 b(alue)38 b(of)g(the)h('exists')g(parameter)
+f(will)g(ha)m(v)m(e)i(1)e(of)g(the)g(4)g(follo)m(wing)227
+3002 y(v)-5 b(alues:)370 3257 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f
+(exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370
+3370 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370
+3483 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e
+(version)h(of)h(the)g(file)g(exist)323 3596 y(-1:)94
+b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f
+(be)h(a)g(ftp,)g(http,)561 3709 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h
+(file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))286
+3973 y(FTEXIST\(filename,)d(>)48 b(exists,)e(status\);)0
+4311 y Fd(6.2)135 b(HDU-Lev)l(el)47 b(Op)t(erations)0
+4562 y Fi(When)30 b(a)h(FITS)f(\014le)g(is)h(\014rst)e(op)s(ened)h(or)g
+(created,)i(the)f(in)m(ternal)g(bu\013ers)e(in)h(FITSIO)f
+(automatically)34 b(p)s(oin)m(t)c(to)0 4675 y(the)g(\014rst)g(HDU)h(in)
+f(the)g(\014le.)41 b(The)29 b(follo)m(wing)j(routines)e(ma)m(y)h(b)s(e)
+e(used)h(to)h(mo)m(v)m(e)g(to)g(another)f(HDU)h(in)f(the)h(\014le.)0
+4788 y(Note)j(that)f(the)g(HDU)g(n)m(um)m(b)s(ering)f(con)m(v)m(en)m
+(tion)i(used)e(in)g(FITSIO)g(denotes)h(the)f(primary)g(arra)m(y)h(as)g
+(the)g(\014rst)0 4901 y(HDU,)e(the)g(\014rst)f(extension)h(in)f(a)g
+(FITS)g(\014le)g(is)h(the)f(second)h(HDU,)g(and)f(so)h(on.)0
+5164 y Fh(1)81 b Fi(Mo)m(v)m(e)32 b(to)f(a)g(sp)s(eci\014ed)f
+(\(absolute\))h(HDU)g(in)g(the)f(FITS)g(\014le)g(\(nhdu)f(=)h(1)h(for)f
+(the)g(FITS)g(primary)f(arra)m(y\))382 5428 y Fe(FTMAHD\(unit,nhdu,)43
+b(>)k(hdutype,status\))0 5691 y Fh(2)81 b Fi(Mo)m(v)m(e)32
+b(to)f(a)g(new)f(\(existing\))i(HDU)f(forw)m(ard)f(or)g(bac)m(kw)m
+(ards)h(relativ)m(e)h(to)f(the)g(CHDU)p eop end
+%%Page: 39 45
+TeXDict begin 39 44 bop 0 299 a Fg(6.2.)72 b(HDU-LEVEL)31
+b(OPERA)-8 b(TIONS)2414 b Fi(39)382 555 y Fe(FTMRHD\(unit,nmove,)43
+b(>)k(hdutype,status\))0 788 y Fh(3)81 b Fi(Mo)m(v)m(e)22
+b(to)f(the)f(\(\014rst\))h(HDU)g(whic)m(h)f(has)g(the)g(sp)s(eci\014ed)
+g(extension)h(t)m(yp)s(e)f(and)g(EXTNAME)g(\(or)h(HDUNAME\))227
+901 y(and)34 b(EXTVER)g(k)m(eyw)m(ord)h(v)-5 b(alues.)53
+b(The)34 b(hdut)m(yp)s(e)f(parameter)i(ma)m(y)g(ha)m(v)m(e)g(a)g(v)-5
+b(alue)35 b(of)f(IMA)m(GE)p 3665 901 28 4 v 34 w(HDU)227
+1014 y(\(0\),)43 b(ASCI)s(I)p 669 1014 V 31 w(TBL)c(\(1\),)j(BINAR)-8
+b(Y)p 1468 1014 V 34 w(TBL)39 b(\(2\),)j(or)d(ANY)p 2234
+1014 V 34 w(HDU)g(\(-1\))i(where)d(ANY)p 3173 1014 V
+34 w(HDU)h(means)g(that)227 1127 y(only)30 b(the)g(extname)h(and)e
+(extv)m(er)i(v)-5 b(alues)30 b(will)g(b)s(e)f(used)g(to)i(lo)s(cate)g
+(the)f(correct)h(extension.)42 b(If)29 b(the)h(input)227
+1240 y(v)-5 b(alue)27 b(of)f(extv)m(er)h(is)f(0)g(then)g(the)g(EXTVER)g
+(k)m(eyw)m(ord)g(is)g(ignored)g(and)g(the)g(\014rst)f(HDU)i(with)e(a)i
+(matc)m(hing)227 1353 y(EXTNAME)g(\(or)g(HDUNAME\))h(k)m(eyw)m(ord)f
+(will)g(b)s(e)f(found.)38 b(If)26 b(no)h(matc)m(hing)h(HDU)f(is)g
+(found)e(in)h(the)h(\014le)227 1466 y(then)i(the)g(curren)m(t)g(HDU)h
+(will)f(remain)g(unc)m(hanged)g(and)g(a)g(status)g(=)g(BAD)p
+2884 1466 V 34 w(HDU)p 3123 1466 V 33 w(NUM)h(\(301\))h(will)f(b)s(e)
+227 1578 y(returned.)382 1811 y Fe(FTMNHD\(unit,)44 b(hdutype,)i
+(extname,)f(extver,)h(>)i(status\))0 2044 y Fh(4)81 b
+Fi(Get)31 b(the)g(n)m(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(HDU)h(in)f
+(the)h(FITS)e(\014le)i(\(primary)f(arra)m(y)g(=)g(1\))382
+2277 y Fe(FTGHDN\(unit,)44 b(>)k(nhdu\))0 2510 y Fh(5)81
+b Fi(Return)39 b(the)i(t)m(yp)s(e)g(of)g(the)g(curren)m(t)f(HDU)i(in)e
+(the)h(FITS)f(\014le.)71 b(The)41 b(p)s(ossible)f(v)-5
+b(alues)41 b(for)f(hdut)m(yp)s(e)g(are)227 2623 y(IMA)m(GE)p
+546 2623 V 34 w(HDU)31 b(\(0\),)h(ASCI)s(I)p 1242 2623
+V 31 w(TBL)e(\(1\),)i(or)e(BINAR)-8 b(Y)p 2133 2623 V
+34 w(TBL)30 b(\(2\).)382 2856 y Fe(FTGHDT\(unit,)44 b(>)k(hdutype,)d
+(status\))0 3089 y Fh(6)81 b Fi(Return)29 b(the)i(total)h(n)m(um)m(b)s
+(er)d(of)i(HDUs)f(in)h(the)f(FITS)g(\014le.)41 b(The)29
+b(CHDU)i(remains)f(unc)m(hanged.)382 3322 y Fe(FTTHDU\(unit,)44
+b(>)k(hdunum,)e(status\))0 3554 y Fh(7)81 b Fi(Create)36
+b(\(app)s(end\))e(a)h(new)g(empt)m(y)g(HDU)h(follo)m(wing)h(the)e(last)
+h(extension)g(that)g(has)f(b)s(een)f(previously)h(ac-)227
+3667 y(cessed)41 b(b)m(y)f(the)g(program.)70 b(This)40
+b(will)g(o)m(v)m(erwrite)i(an)m(y)f(extensions)g(in)e(an)i(existing)g
+(FITS)e(\014le)i(if)f(the)227 3780 y(program)31 b(has)g(not)g(already)h
+(mo)m(v)m(ed)g(to)f(that)h(\(or)f(a)h(later\))g(extension)g(using)e
+(the)h(FTMAHD)h(or)f(FTM-)227 3893 y(RHD)24 b(routines.)38
+b(F)-8 b(or)25 b(example,)g(if)f(an)f(existing)h(FITS)f(\014le)g(con)m
+(tains)i(a)f(primary)e(arra)m(y)i(and)f(5)g(extensions)227
+4006 y(and)31 b(a)h(program)f(\(1\))h(op)s(ens)f(the)g(FITS)g(\014le,)h
+(\(2\))g(mo)m(v)m(es)h(to)f(extension)g(4,)g(\(3\))g(mo)m(v)m(es)h(bac)
+m(k)f(to)g(the)f(pri-)227 4119 y(mary)36 b(arra)m(y)-8
+b(,)38 b(and)e(\(4\))h(then)e(calls)i(FTCRHD,)f(then)g(the)g(new)g
+(extension)g(will)g(b)s(e)g(written)f(follo)m(wing)227
+4232 y(the)c(4th)f(extension,)i(o)m(v)m(erwriting)g(the)e(existing)h
+(5th)g(extension.)382 4465 y Fe(FTCRHD\(unit,)44 b(>)k(status\))0
+4698 y Fh(8)81 b Fi(Create)30 b(a)f(primary)f(arra)m(y)i(\(if)g(none)f
+(already)g(exists\),)i(or)e(insert)g(a)h(new)f(IMA)m(GE)h(extension)g
+(immediately)227 4811 y(follo)m(wing)25 b(the)e(CHDU,)g(or)g(insert)g
+(a)g(new)g(Primary)f(Arra)m(y)h(at)h(the)f(b)s(eginning)f(of)h(the)g
+(\014le.)38 b(An)m(y)23 b(follo)m(wing)227 4924 y(extensions)29
+b(in)g(the)g(\014le)f(will)h(b)s(e)f(shifted)h(do)m(wn)f(to)h(mak)m(e)h
+(ro)s(om)e(for)h(the)g(new)f(extension.)40 b(If)29 b(the)g(CHDU)227
+5036 y(is)h(the)g(last)g(HDU)g(in)g(the)f(\014le)h(then)f(the)h(new)f
+(image)i(extension)f(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)g
+(end)227 5149 y(of)k(the)h(\014le.)52 b(One)33 b(can)h(force)h(a)g(new)
+e(primary)g(arra)m(y)i(to)g(b)s(e)e(inserted)h(at)h(the)f(b)s(eginning)
+f(of)h(the)h(FITS)227 5262 y(\014le)29 b(b)m(y)f(setting)i(status)e(=)h
+(-9)g(prior)e(to)j(calling)g(the)e(routine.)40 b(In)28
+b(this)g(case)i(the)e(existing)i(primary)d(arra)m(y)227
+5375 y(will)f(b)s(e)f(con)m(v)m(erted)i(to)g(an)e(IMA)m(GE)h
+(extension.)40 b(The)25 b(new)g(extension)i(\(or)f(primary)e(arra)m
+(y\))j(will)f(b)s(ecome)227 5488 y(the)32 b(CHDU.)f(The)g(FTI)s(IMGLL)f
+(routine)i(is)f(iden)m(tical)i(to)e(the)h(FTI)s(IMG)f(routine)g(except)
+h(that)f(the)h(4th)227 5601 y(parameter)25 b(\(the)g(length)g(of)f(eac)
+m(h)h(axis\))g(is)g(an)f(arra)m(y)h(of)f(64-bit)i(in)m(tegers)f(rather)
+f(than)g(an)g(arra)m(y)h(of)g(32-bit)227 5714 y(in)m(tegers.)p
+eop end
+%%Page: 40 46
+TeXDict begin 40 45 bop 0 299 a Fi(40)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41
+b(>)48 b(status\))382 668 y(FTIIMGLL\(unit,bitpix,nax)o(is,)o(naxe)o
+(sll,)41 b(>)47 b(status\))0 921 y Fh(9)81 b Fi(Insert)30
+b(a)i(new)f(ASCI)s(I)f(T)-8 b(ABLE)31 b(extension)h(immediately)h
+(follo)m(wing)f(the)g(CHDU.)g(An)m(y)f(follo)m(wing)i(exten-)227
+1034 y(sions)26 b(will)g(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)h(ro)
+s(om)e(for)h(the)f(new)g(extension.)40 b(If)25 b(there)h(are)g(no)g
+(other)f(follo)m(wing)227 1147 y(extensions)32 b(then)f(the)h(new)f
+(table)h(extension)g(will)g(simply)f(b)s(e)g(app)s(ended)f(to)i(the)f
+(end)g(of)h(the)f(\014le.)44 b(The)227 1260 y(new)33
+b(extension)h(will)f(b)s(ecome)h(the)f(CHDU.)h(The)f(FTIT)-8
+b(ABLL)33 b(routine)g(is)g(iden)m(tical)i(to)f(the)g(FTIT)-8
+b(AB)227 1373 y(routine)36 b(except)g(that)g(the)f(2nd)g(and)g(3rd)g
+(parameters)g(\(that)i(giv)m(e)g(the)e(size)h(of)g(the)f(table\))i(are)
+f(64-bit)227 1486 y(in)m(tegers)c(rather)e(than)g(32-bit)i(in)m
+(tegers.)382 1739 y Fe(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o
+(ype)o(,tbc)o(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42
+b(>)716 1852 y(status\))382 1965 y(FTITABLL\(unit,rowlenll,n)o(row)o
+(sll,)o(tfie)o(lds)o(,tty)o(pe,t)o(bco)o(l,tf)o(orm,)o(tun)o(it,e)o
+(xtna)o(me,)f(>)716 2077 y(status\))0 2331 y Fh(10)46
+b Fi(Insert)25 b(a)h(new)f(binary)f(table)j(extension)f(immediately)g
+(follo)m(wing)h(the)f(CHDU.)g(An)m(y)g(follo)m(wing)g(extensions)227
+2443 y(will)39 b(b)s(e)f(shifted)g(do)m(wn)g(to)h(mak)m(e)g(ro)s(om)g
+(for)f(the)g(new)g(extension.)66 b(If)38 b(there)h(are)f(no)h(other)f
+(follo)m(wing)227 2556 y(extensions)f(then)g(the)f(new)g(bin)m(table)h
+(extension)h(will)f(simply)f(b)s(e)g(app)s(ended)e(to)k(the)e(end)g(of)
+h(the)g(\014le.)227 2669 y(The)23 b(new)g(extension)h(will)f(b)s(ecome)
+h(the)f(CHDU.)h(The)f(FTIBINLL)g(routine)g(is)g(iden)m(tical)i(to)f
+(the)g(FTIBIN)227 2782 y(routine)30 b(except)i(that)e(the)h(2nd)e
+(parameter)i(\(that)g(giv)m(es)g(the)g(length)f(of)h(the)f(table\))h
+(is)g(a)f(64-bit)i(in)m(teger)227 2895 y(rather)f(than)f(a)g(32-bit)i
+(in)m(teger.)382 3148 y Fe(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o
+(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41
+b(>)48 b(status\))382 3261 y(FTIBINLL\(unit,nrowsll,tf)o(iel)o(ds,t)o
+(type)o(,tf)o(orm,)o(tuni)o(t,e)o(xtna)o(me,v)o(ari)o(dat)41
+b(>)48 b(status\))0 3627 y Fh(11)e Fi(Resize)26 b(an)e(image)i(b)m(y)e
+(mo)s(di\014ng)f(the)i(size,)i(dimensions,)e(and/or)f(datat)m(yp)s(e)h
+(of)g(the)g(curren)m(t)f(primary)f(arra)m(y)227 3740
+y(or)29 b(image)i(extension.)40 b(If)29 b(the)g(new)g(image,)i(as)e(sp)
+s(eci\014ed)f(b)m(y)h(the)g(input)f(argumen)m(ts,)i(is)f(larger)h(than)
+f(the)227 3853 y(curren)m(t)34 b(existing)h(image)g(in)f(the)g(FITS)f
+(\014le)h(then)f(zero)i(\014ll)f(data)h(will)f(b)s(e)f(inserted)h(at)g
+(the)g(end)g(of)g(the)227 3966 y(curren)m(t)25 b(image)h(and)e(an)m(y)i
+(follo)m(wing)g(extensions)g(will)f(b)s(e)f(mo)m(v)m(ed)i(further)e
+(bac)m(k)h(in)g(the)g(\014le.)39 b(Similarly)-8 b(,)27
+b(if)227 4079 y(the)h(new)e(image)j(is)e(smaller)h(than)f(the)g(curren)
+m(t)g(image)h(then)f(an)m(y)h(follo)m(wing)h(extensions)e(will)h(b)s(e)
+e(shifted)227 4192 y(up)32 b(to)m(w)m(ards)i(the)g(b)s(eginning)e(of)h
+(the)h(FITS)e(\014le)h(and)g(the)g(image)h(data)g(will)g(b)s(e)e
+(truncated)h(to)h(the)f(new)227 4304 y(size.)41 b(This)25
+b(routine)h(rewrites)h(the)f(BITPIX,)h(NAXIS,)f(and)g(NAXISn)g(k)m(eyw)
+m(ords)g(with)g(the)h(appropriate)227 4417 y(v)-5 b(alues)37
+b(for)f(new)h(image.)60 b(The)36 b(FTRSIMLL)g(routine)g(is)h(iden)m
+(tical)h(to)g(the)e(FTRSIM)g(routine)h(except)227 4530
+y(that)30 b(the)g(4th)g(parameter)g(\(the)g(length)g(of)f(eac)m(h)i
+(axis\))f(is)g(an)f(arra)m(y)h(of)g(64-bit)h(in)m(tegers)f(rather)g
+(than)f(an)227 4643 y(arra)m(y)i(of)g(32-bit)g(in)m(tegers.)382
+4896 y Fe(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o(us\))382
+5009 y(FTRSIMLL\(unit,bitpix,nax)o(is,)o(naxe)o(sll,)o(sta)o(tus\))0
+5262 y Fh(12)46 b Fi(Delete)34 b(the)f(CHDU)g(in)f(the)g(FITS)f
+(\014le.)47 b(An)m(y)32 b(follo)m(wing)i(HDUs)f(will)g(b)s(e)e(shifted)
+h(forw)m(ard)g(in)g(the)g(\014le,)h(to)227 5375 y(\014ll)38
+b(in)f(the)g(gap)h(created)g(b)m(y)g(the)f(deleted)h(HDU.)h(In)d(the)i
+(case)g(of)g(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227
+5488 y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m
+(t)f(primary)f(arra)m(y)i(will)g(b)s(e)f(replace)h(b)m(y)g(a)g(n)m(ull)
+f(primary)f(arra)m(y)227 5601 y(con)m(taining)k(the)f(minim)m(um)e(set)
+i(of)g(required)e(k)m(eyw)m(ords)i(and)e(no)i(data.)44
+b(If)31 b(there)g(are)h(more)f(extensions)227 5714 y(in)f(the)g(\014le)
+g(follo)m(wing)i(the)e(one)g(that)h(is)f(deleted,)h(then)f(the)g(the)g
+(CHDU)h(will)f(b)s(e)g(rede\014ned)e(to)j(p)s(oin)m(t)f(to)p
+eop end
+%%Page: 41 47
+TeXDict begin 41 46 bop 0 299 a Fg(6.3.)72 b(DEFINE)31
+b(OR)f(REDEFINE)h(THE)f(STR)m(UCTURE)f(OF)h(THE)g(CHDU)1042
+b Fi(41)227 555 y(the)27 b(follo)m(wing)h(extension.)41
+b(If)26 b(there)h(are)g(no)g(follo)m(wing)h(extensions)f(then)g(the)g
+(CHDU)g(will)g(b)s(e)f(rede\014ned)227 668 y(to)35 b(p)s(oin)m(t)f(to)h
+(the)f(previous)f(HDU.)i(The)e(output)h(HDUTYPE)g(parameter)h
+(indicates)f(the)h(t)m(yp)s(e)f(of)g(the)227 781 y(new)c(CHDU)h(after)g
+(the)f(previous)g(CHDU)h(has)f(b)s(een)g(deleted.)382
+1001 y Fe(FTDHDU\(unit,)44 b(>)k(hdutype,status\))0 1222
+y Fh(13)e Fi(Cop)m(y)36 b(all)h(or)f(part)g(of)g(the)g(input)f(FITS)g
+(\014le)h(and)g(app)s(end)e(it)i(to)h(the)f(end)g(of)g(the)g(output)g
+(FITS)f(\014le.)57 b(If)227 1335 y('previous')39 b(\(an)g(in)m(teger)h
+(parameter\))g(is)f(not)g(equal)g(to)h(0,)h(then)e(an)m(y)g(HDUs)g
+(preceding)g(the)g(curren)m(t)227 1448 y(HDU)f(in)e(the)h(input)e
+(\014le)i(will)g(b)s(e)f(copied)h(to)g(the)g(output)f(\014le.)60
+b(Similarly)-8 b(,)39 b('curren)m(t')e(and)f('follo)m(wing')227
+1561 y(determine)j(whether)f(the)h(curren)m(t)g(HDU,)h(and/or)e(an)m(y)
+i(follo)m(wing)g(HDUs)f(in)g(the)g(input)f(\014le)g(will)i(b)s(e)227
+1674 y(copied)32 b(to)g(the)g(output)f(\014le.)43 b(If)31
+b(all)h(3)g(parameters)g(are)g(not)f(equal)h(to)g(zero,)h(then)e(the)g
+(en)m(tire)h(input)f(\014le)227 1786 y(will)g(b)s(e)e(copied.)41
+b(On)30 b(return,)f(the)h(curren)m(t)g(HDU)h(in)f(the)g(input)f(\014le)
+h(will)h(b)s(e)e(unc)m(hanged,)h(and)g(the)g(last)227
+1899 y(copied)h(HDU)g(will)g(b)s(e)f(the)g(curren)m(t)g(HDU)i(in)e(the)
+g(output)g(\014le.)382 2120 y Fe(FTCPFL\(iunit,)44 b(ounit,)i
+(previous,)f(current,)h(following,)f(>)i(status\))0 2340
+y Fh(14)f Fi(Cop)m(y)35 b(the)f(en)m(tire)i(CHDU)f(from)f(the)g(FITS)g
+(\014le)h(asso)s(ciated)h(with)e(IUNIT)g(to)i(the)e(CHDU)h(of)g(the)g
+(FITS)227 2453 y(\014le)g(asso)s(ciated)h(with)e(OUNIT.)g(The)g(output)
+g(HDU)h(m)m(ust)f(b)s(e)g(empt)m(y)h(and)e(not)i(already)g(con)m(tain)h
+(an)m(y)227 2566 y(k)m(eyw)m(ords.)41 b(Space)29 b(will)g(b)s(e)g
+(reserv)m(ed)g(for)g(MOREKEYS)f(additional)h(k)m(eyw)m(ords)h(in)e(the)
+i(output)e(header)227 2679 y(if)j(there)f(is)h(not)f(already)h(enough)f
+(space.)382 2899 y Fe(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42
+b(>)47 b(status\))0 3120 y Fh(15)f Fi(Cop)m(y)27 b(the)h(header)f
+(\(and)g(not)g(the)g(data\))i(from)d(the)i(CHDU)g(asso)s(ciated)g(with)
+f(in)m(unit)g(to)h(the)f(CHDU)h(asso-)227 3233 y(ciated)f(with)e
+(outunit.)39 b(If)25 b(the)g(curren)m(t)h(output)f(HDU)h(is)f(not)h
+(completely)h(empt)m(y)-8 b(,)27 b(then)e(the)h(CHDU)g(will)227
+3346 y(b)s(e)e(closed)i(and)e(a)i(new)e(HDU)h(will)h(b)s(e)e(app)s
+(ended)f(to)j(the)f(output)f(\014le.)39 b(This)24 b(routine)h(will)g
+(automatically)227 3459 y(transform)31 b(the)g(necessary)h(k)m(eyw)m
+(ords)f(when)g(cop)m(ying)h(a)f(primary)g(arra)m(y)h(to)f(and)g(image)i
+(extension,)f(or)227 3572 y(an)27 b(image)h(extension)f(to)g(a)h
+(primary)d(arra)m(y)-8 b(.)41 b(An)26 b(empt)m(y)h(output)f(data)i
+(unit)e(will)h(b)s(e)f(created)i(\(all)g(v)-5 b(alues)227
+3684 y(=)30 b(0\).)382 3905 y Fe(FTCPHD\(inunit,)44 b(outunit,)h(>)j
+(status\))0 4125 y Fh(16)e Fi(Cop)m(y)d(just)g(the)g(data)h(from)f(the)
+g(CHDU)h(asso)s(ciated)g(with)f(IUNIT)g(to)h(the)f(CHDU)h(asso)s
+(ciated)g(with)227 4238 y(OUNIT.)26 b(This)f(will)h(o)m(v)m(erwrite)h
+(an)m(y)f(data)g(previously)g(in)f(the)h(OUNIT)f(CHDU.)h(This)f(lo)m(w)
+i(lev)m(el)g(routine)227 4351 y(is)g(used)e(b)m(y)i(FTCOPY,)f(but)g(it)
+g(ma)m(y)i(also)f(b)s(e)f(useful)f(in)i(certain)g(application)h
+(programs)e(whic)m(h)g(w)m(an)m(t)h(to)227 4464 y(cop)m(y)j(the)f(data)
+h(from)f(one)g(FITS)f(\014le)h(to)h(another)f(but)g(also)h(w)m(an)m(t)g
+(to)g(mo)s(dify)e(the)h(header)g(k)m(eyw)m(ords)g(in)227
+4577 y(the)j(pro)s(cess.)44 b(all)33 b(the)f(required)f(header)g(k)m
+(eyw)m(ords)h(m)m(ust)g(b)s(e)f(written)h(to)g(the)g(OUNIT)f(CHDU)h(b)s
+(efore)227 4690 y(calling)g(this)e(routine)382 4910 y
+Fe(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0 5238 y
+Fd(6.3)135 b(De\014ne)45 b(or)g(Rede\014ne)h(the)f(structure)g(of)g
+(the)g(CHDU)0 5488 y Fi(It)32 b(should)f(rarely)h(b)s(e)g(necessary)g
+(to)h(call)g(the)f(subroutines)f(in)g(this)h(section.)47
+b(FITSIO)30 b(in)m(ternally)j(calls)g(these)0 5601 y(routines)h(whenev)
+m(er)g(necessary)-8 b(,)36 b(so)e(an)m(y)g(calls)h(to)g(these)f
+(routines)g(b)m(y)g(application)h(programs)f(will)g(lik)m(ely)i(b)s(e)0
+5714 y(redundan)m(t.)p eop end
+%%Page: 42 48
+TeXDict begin 42 47 bop 0 299 a Fi(42)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fh(1)81 b Fi(This)36 b(routine)h(forces)h
+(FITSIO)e(to)i(scan)f(the)g(curren)m(t)g(header)g(k)m(eyw)m(ords)h
+(that)f(de\014ne)g(the)g(structure)g(of)227 668 y(the)31
+b(HDU)f(\(suc)m(h)g(as)h(the)f(NAXISn,)g(PCOUNT)f(and)g(GCOUNT)h(k)m
+(eyw)m(ords\))h(so)f(that)h(it)f(can)h(initialize)227
+781 y(the)36 b(in)m(ternal)g(bu\013ers)e(that)i(describ)s(e)f(the)h
+(HDU)g(structure.)55 b(This)35 b(routine)h(ma)m(y)g(b)s(e)e(used)h
+(instead)h(of)227 894 y(the)j(more)g(complicated)i(calls)f(to)f(ftp)s
+(def,)h(ftadef)f(or)g(ftb)s(def.)65 b(This)38 b(routine)h(is)g(also)h
+(v)m(ery)f(useful)f(for)227 1007 y(reinitializing)e(the)e(structure)g
+(of)g(an)f(HDU,)i(if)f(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)g(a)g
+(table,)i(as)e(sp)s(eci\014ed)f(b)m(y)h(the)227 1120
+y(NAXIS2)d(k)m(eyw)m(ord,)g(has)f(b)s(een)g(mo)s(di\014ed)f(from)h(its)
+h(initial)g(v)-5 b(alue.)382 1361 y Fe(FTRDEF\(unit,)44
+b(>)k(status\))141 b(\(DEPRECATED\))0 1602 y Fh(2)81
+b Fi(De\014ne)27 b(the)g(structure)g(of)g(the)g(primary)f(arra)m(y)i
+(or)f(IMA)m(GE)h(extension.)40 b(When)27 b(writing)g(GR)m(OUP)m(ed)h
+(FITS)227 1715 y(\014les)43 b(that)h(b)m(y)e(con)m(v)m(en)m(tion)k(set)
+d(the)g(NAXIS1)g(k)m(eyw)m(ord)h(equal)f(to)h(0,)i(ftp)s(def)c(m)m(ust)
+h(b)s(e)f(called)i(with)227 1828 y(naxes\(1\))27 b(=)e(1,)i(NOT)e(0,)i
+(otherwise)f(FITSIO)e(will)i(rep)s(ort)f(an)g(error)g(status=308)i
+(when)d(trying)i(to)g(write)227 1941 y(data)31 b(to)g(a)g(group.)40
+b(Note:)i(it)31 b(is)g(usually)f(simpler)g(to)h(call)h(FTRDEF)e(rather)
+h(than)f(this)g(routine.)382 2182 y Fe(FTPDEF\(unit,bitpix,naxis)o(,na)
+o(xes,)o(pcou)o(nt,)o(gcou)o(nt,)41 b(>)48 b(status\))93
+b(\(DEPRECATED\))0 2424 y Fh(3)81 b Fi(De\014ne)32 b(the)h(structure)f
+(of)g(an)h(ASCI)s(I)e(table)i(\(T)-8 b(ABLE\))33 b(extension.)48
+b(Note:)e(it)33 b(is)f(usually)g(simpler)g(to)i(call)227
+2537 y(FTRDEF)d(rather)f(than)h(this)f(routine.)382 2778
+y Fe(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42
+b(>)47 b(status\))f(\(DEPRECATED\))0 3019 y Fh(4)81 b
+Fi(De\014ne)35 b(the)h(structure)f(of)g(a)h(binary)f(table)h(\(BINT)-8
+b(ABLE\))37 b(extension.)56 b(Note:)d(it)36 b(is)f(usually)g(simpler)g
+(to)227 3132 y(call)d(FTRDEF)f(rather)f(than)g(this)g(routine.)382
+3373 y Fe(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42
+b(>)47 b(status\))f(\(DEPRECATED\))0 3615 y Fh(5)81 b
+Fi(De\014ne)34 b(the)g(size)h(of)f(the)g(Curren)m(t)f(Data)i(Unit,)h(o)
+m(v)m(erriding)e(the)g(length)h(of)f(the)g(data)h(unit)e(as)h
+(previously)227 3728 y(de\014ned)e(b)m(y)h(ftp)s(def,)g(ftadef,)i(or)e
+(ftb)s(def.)48 b(This)33 b(is)g(useful)f(if)i(one)f(do)s(es)g(not)h
+(kno)m(w)f(the)g(total)i(size)f(of)g(the)227 3841 y(data)f(unit)f(un)m
+(til)h(after)f(the)h(data)g(ha)m(v)m(e)g(b)s(een)f(written.)46
+b(The)32 b(size)h(\(in)f(b)m(ytes\))h(of)g(an)f(ASCI)s(I)f(or)h(Binary)
+227 3954 y(table)27 b(is)f(giv)m(en)g(b)m(y)g(NAXIS1)g(*)g(NAXIS2.)40
+b(\(Note)27 b(that)f(to)h(determine)f(the)f(v)-5 b(alue)27
+b(of)f(NAXIS1)f(it)i(is)f(often)227 4066 y(more)32 b(con)m(v)m(enien)m
+(t)h(to)f(read)f(the)g(v)-5 b(alue)32 b(of)f(the)h(NAXIS1)f(k)m(eyw)m
+(ord)h(from)e(the)i(output)e(\014le,)i(rather)f(than)227
+4179 y(computing)f(the)g(ro)m(w)g(length)h(directly)f(from)f(all)i(the)
+f(TF)m(ORM)h(k)m(eyw)m(ord)f(v)-5 b(alues\).)41 b(Note:)h(it)30
+b(is)g(usually)227 4292 y(simpler)g(to)h(call)h(FTRDEF)f(rather)f(than)
+g(this)g(routine.)382 4534 y Fe(FTDDEF\(unit,bytlen,)42
+b(>)48 b(status\))e(\(DEPRECATED\))0 4775 y Fh(6)81 b
+Fi(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i(o\013set)g(of)g(the)f
+('heap')h(measured)e(from)h(the)h(start)g(of)f(the)g(binary)g(table)h
+(data.)227 4888 y(By)30 b(default)g(the)f(heap)h(is)f(assumed)g(to)h
+(start)g(immediately)h(follo)m(wing)g(the)f(regular)f(table)i(data,)f
+(i.e.,)h(at)227 5001 y(lo)s(cation)38 b(NAXIS1)f(x)g(NAXIS2.)59
+b(This)36 b(routine)g(is)h(only)f(relev)-5 b(an)m(t)38
+b(for)e(binary)g(tables)h(whic)m(h)g(con)m(tain)227 5114
+y(v)-5 b(ariable)36 b(length)g(arra)m(y)f(columns)g(\(with)h(TF)m(ORMn)
+f(=)f('Pt'\).)57 b(This)34 b(subroutine)g(also)i(automatically)227
+5227 y(writes)23 b(the)g(v)-5 b(alue)23 b(of)g(theap)g(to)h(a)f(k)m
+(eyw)m(ord)g(in)g(the)g(extension)g(header.)38 b(This)22
+b(subroutine)g(m)m(ust)h(b)s(e)f(called)227 5339 y(after)27
+b(the)f(required)f(k)m(eyw)m(ords)i(ha)m(v)m(e)g(b)s(een)e(written)h
+(\(with)g(ftph)m(bn\))f(and)h(after)g(the)h(table)g(structure)e(has)227
+5452 y(b)s(een)30 b(de\014ned)f(\(with)h(ftb)s(def)7
+b(\))30 b(but)g(b)s(efore)g(an)m(y)g(data)h(is)g(written)f(to)h(the)g
+(table.)382 5694 y Fe(FTPTHP\(unit,theap,)43 b(>)k(status\))p
+eop end
+%%Page: 43 49
+TeXDict begin 43 48 bop 0 299 a Fg(6.4.)72 b(FITS)30
+b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(43)0 555 y
+Fd(6.4)135 b(FITS)44 b(Header)i(I/O)f(Subroutines)0 809
+y Fb(6.4.1)112 b(Header)38 b(Space)h(and)f(P)m(osition)f(Routines)0
+1019 y Fh(1)81 b Fi(Reserv)m(e)37 b(space)g(in)f(the)h(CHU)f(for)h
+(MOREKEYS)e(more)i(header)f(k)m(eyw)m(ords.)59 b(This)36
+b(subroutine)f(ma)m(y)j(b)s(e)227 1132 y(called)e(to)g(reserv)m(e)g
+(space)f(for)g(k)m(eyw)m(ords)g(whic)m(h)g(are)g(to)h(b)s(e)e(written)h
+(at)g(a)h(later)g(time,)h(after)e(the)g(data)227 1245
+y(unit)h(or)g(subsequen)m(t)f(extensions)h(ha)m(v)m(e)h(b)s(een)e
+(written)h(to)h(the)f(FITS)f(\014le.)58 b(If)35 b(this)h(subroutine)f
+(is)h(not)227 1358 y(explicitly)29 b(called,)g(then)e(the)g(initial)i
+(size)e(of)h(the)f(FITS)f(header)h(will)h(b)s(e)e(limited)i(to)g(the)f
+(space)h(a)m(v)-5 b(ailable)227 1471 y(at)24 b(the)g(time)g(that)g(the)
+g(\014rst)f(data)h(is)g(written)f(to)h(the)g(asso)s(ciated)h(data)f
+(unit.)38 b(FITSIO)22 b(has)i(the)f(abilit)m(y)i(to)227
+1584 y(dynamically)g(add)e(more)h(space)h(to)g(the)f(header)g(if)g
+(needed,)h(ho)m(w)m(ev)m(er)g(it)g(is)f(more)g(e\016cien)m(t)h(to)g
+(preallo)s(cate)227 1697 y(the)31 b(required)e(space)i(if)g(the)f(size)
+h(is)g(kno)m(wn)f(in)g(adv)-5 b(ance.)382 1958 y Fe
+(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))0 2219 y
+Fh(2)81 b Fi(Return)23 b(the)i(n)m(um)m(b)s(er)e(of)h(existing)i(k)m
+(eyw)m(ords)e(in)h(the)f(CHU)g(\(NOT)h(including)f(the)g(END)h(k)m(eyw)
+m(ord)g(whic)m(h)f(is)227 2332 y(not)g(considered)f(a)g(real)h(k)m(eyw)
+m(ord\))g(and)f(the)g(remaining)h(space)f(a)m(v)-5 b(ailable)26
+b(to)e(write)f(additional)i(k)m(eyw)m(ords)227 2445 y(in)39
+b(the)h(CHU.)f(\(returns)f(KEYSADD)i(=)f(-1)h(if)f(the)g(header)g(has)g
+(not)h(y)m(et)g(b)s(een)e(closed\).)69 b(Note)40 b(that)227
+2558 y(FITSIO)23 b(will)i(attempt)g(to)g(dynamically)g(add)e(space)i
+(for)f(more)g(k)m(eyw)m(ords)h(if)f(required)f(when)g(app)s(ending)227
+2671 y(new)30 b(k)m(eyw)m(ords)h(to)g(a)g(header.)382
+2932 y Fe(FTGHSP\(iunit,)44 b(>)j(keysexist,keysadd,status\))0
+3194 y Fh(3)81 b Fi(Return)38 b(the)i(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m
+(ords)h(in)f(the)g(header)g(and)g(the)g(curren)m(t)h(p)s(osition)f(in)g
+(the)g(header.)68 b(This)227 3307 y(returns)37 b(the)g(n)m(um)m(b)s(er)
+f(of)i(the)g(k)m(eyw)m(ord)g(record)f(that)h(will)g(b)s(e)f(read)g
+(next)h(\(or)g(one)g(greater)g(than)g(the)227 3420 y(p)s(osition)29
+b(of)f(the)h(last)g(k)m(eyw)m(ord)g(that)g(w)m(as)f(read)g(or)h
+(written\).)40 b(A)29 b(v)-5 b(alue)28 b(of)h(1)g(is)f(returned)f(if)h
+(the)h(p)s(oin)m(ter)227 3533 y(is)i(p)s(ositioned)f(at)h(the)g(b)s
+(eginning)e(of)i(the)g(header.)382 3794 y Fe(FTGHPS\(iunit,)44
+b(>)j(keysexist,key_no,status\))0 4086 y Fb(6.4.2)112
+b(Read)38 b(or)f(W)-9 b(rite)37 b(Standard)i(Header)e(Routines)0
+4306 y Fi(These)31 b(subroutines)e(pro)m(vide)i(a)g(simple)g(metho)s(d)
+f(of)h(reading)g(or)g(writing)g(most)g(of)g(the)g(k)m(eyw)m(ord)g(v)-5
+b(alues)31 b(that)0 4419 y(are)d(normally)g(required)f(in)h(a)g(FITS)f
+(\014les.)40 b(These)27 b(subroutines)g(are)h(pro)m(vided)f(for)h(con)m
+(v)m(enience)h(only)f(and)g(are)0 4532 y(not)36 b(required)e(to)i(b)s
+(e)f(used.)55 b(If)35 b(preferred,)h(users)e(ma)m(y)i(call)h(the)f(lo)m
+(w)m(er-lev)m(el)i(subroutines)c(describ)s(ed)h(in)g(the)0
+4644 y(previous)30 b(section)i(to)g(individually)f(read)f(or)h(write)g
+(the)g(required)f(k)m(eyw)m(ords.)43 b(Note)32 b(that)g(in)e(most)i
+(cases,)g(the)0 4757 y(required)26 b(k)m(eyw)m(ords)h(suc)m(h)g(as)g
+(NAXIS,)f(TFIELD,)h(TTYPEn,)g(etc,)i(whic)m(h)d(de\014ne)g(the)h
+(structure)f(of)h(the)g(HDU)0 4870 y(m)m(ust)j(b)s(e)g(written)g(to)i
+(the)e(header)g(b)s(efore)g(an)m(y)h(data)g(can)g(b)s(e)e(written)i(to)
+g(the)g(image)g(or)g(table.)0 5132 y Fh(1)81 b Fi(Put)37
+b(the)i(primary)e(header)h(or)g(IMA)m(GE)h(extension)f(k)m(eyw)m(ords)h
+(in)m(to)g(the)f(CHU.)g(There)g(are)g(2)h(a)m(v)-5 b(ailable)227
+5245 y(routines:)39 b(The)27 b(simpler)f(FTPHPS)h(routine)g(is)g(equiv)
+-5 b(alen)m(t)29 b(to)e(calling)i(ftphpr)c(with)i(the)g(default)h(v)-5
+b(alues)227 5357 y(of)35 b(SIMPLE)f(=)g(true,)i(p)s(coun)m(t)e(=)g(0,)i
+(gcoun)m(t)g(=)e(1,)i(and)e(EXTEND)h(=)f(true.)53 b(PCOUNT,)34
+b(GCOUNT)227 5470 y(and)23 b(EXTEND)h(k)m(eyw)m(ords)g(are)h(not)f
+(required)f(in)g(the)h(primary)f(header)g(and)h(are)g(only)g(written)g
+(if)f(p)s(coun)m(t)227 5583 y(is)31 b(not)g(equal)h(to)g(zero,)g(gcoun)
+m(t)g(is)f(not)g(equal)g(to)h(zero)g(or)f(one,)g(and)g(if)g(extend)g
+(is)g(TR)m(UE,)g(resp)s(ectiv)m(ely)-8 b(.)227 5696 y(When)30
+b(writing)h(to)g(an)f(IMA)m(GE)i(extension,)f(the)f(SIMPLE)g(and)g
+(EXTEND)g(parameters)h(are)g(ignored.)p eop end
+%%Page: 44 50
+TeXDict begin 44 49 bop 0 299 a Fi(44)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41
+b(>)48 b(status\))382 781 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o
+(,nax)o(es,)o(pcou)o(nt,g)o(cou)o(nt,e)o(xten)o(d,)41
+b(>)48 b(status\))0 1082 y Fh(2)81 b Fi(Get)44 b(primary)e(header)h(or)
+h(IMA)m(GE)g(extension)g(k)m(eyw)m(ords)g(from)f(the)g(CHU.)h(When)f
+(reading)g(from)g(an)227 1195 y(IMA)m(GE)32 b(extension)f(the)f(SIMPLE)
+g(and)f(EXTEND)i(parameters)g(are)f(ignored.)382 1495
+y Fe(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o
+(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 1608 y(status\))0
+1909 y Fh(3)81 b Fi(Put)34 b(the)h(ASCI)s(I)f(table)i(header)f(k)m(eyw)
+m(ords)g(in)m(to)h(the)f(CHU.)h(The)e(optional)i(TUNITn)e(and)h
+(EXTNAME)227 2021 y(k)m(eyw)m(ords)c(are)g(written)f(only)h(if)f(the)h
+(input)e(string)h(v)-5 b(alues)31 b(are)g(not)f(blank.)382
+2322 y Fe(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o
+(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716
+2435 y(status\))0 2736 y Fh(4)81 b Fi(Get)31 b(the)g(ASCI)s(I)d(table)k
+(header)e(k)m(eyw)m(ords)h(from)e(the)i(CHU)382 3036
+y Fe(FTGHTB\(unit,maxdim,)42 b(>)48 b(rowlen,nrows,tfields,tty)o(pe,)o
+(tbco)o(l,tf)o(orm)o(,tun)o(it,)716 3149 y(extname,status\))0
+3450 y Fh(5)81 b Fi(Put)34 b(the)h(binary)f(table)i(header)e(k)m(eyw)m
+(ords)i(in)m(to)f(the)g(CHU.)g(The)g(optional)h(TUNITn)e(and)g(EXTNAME)
+227 3563 y(k)m(eyw)m(ords)i(are)g(written)f(only)g(if)h(the)f(input)f
+(string)i(v)-5 b(alues)35 b(are)h(not)f(blank.)55 b(The)35
+b(p)s(coun)m(t)g(parameter,)227 3675 y(whic)m(h)f(sp)s(eci\014es)g(the)
+h(size)g(of)g(the)f(v)-5 b(ariable)35 b(length)g(arra)m(y)g(heap,)g
+(should)f(initially)h(=)f(0;)j(FITSIO)d(will)227 3788
+y(automatically)27 b(up)s(date)c(the)h(PCOUNT)f(k)m(eyw)m(ord)h(v)-5
+b(alue)24 b(if)g(an)m(y)g(v)-5 b(ariable)25 b(length)f(arra)m(y)h(data)
+f(is)g(written)227 3901 y(to)31 b(the)e(heap.)41 b(The)29
+b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)30 b(for)g(v)-5
+b(ariable)30 b(length)g(v)m(ector)h(columns)e(should)g(ha)m(v)m(e)i
+(the)227 4014 y(form)c('Pt\(len\)')j(or)d('1Pt\(len\)')j(where)d(`t')h
+(is)g(the)g(data)g(t)m(yp)s(e)g(co)s(de)f(letter)i(\(A,I,J,E,D,)g
+(etc.\))42 b(and)27 b(`len')h(is)227 4127 y(an)g(in)m(teger)i(sp)s
+(ecifying)e(the)g(maxim)m(um)g(length)g(of)h(the)f(v)m(ectors)h(in)f
+(that)h(column)f(\(len)g(m)m(ust)g(b)s(e)g(greater)227
+4240 y(than)j(or)h(equal)f(to)i(the)e(longest)i(v)m(ector)f(in)f(the)h
+(column\).)44 b(If)30 b(`len')i(is)g(not)f(sp)s(eci\014ed)g(when)f(the)
+i(table)g(is)227 4353 y(created)27 b(\(e.g.,)i(the)d(input)f(TF)m(ORMn)
+h(v)-5 b(alue)26 b(is)g(just)f('1Pt'\))j(then)d(FITSIO)g(will)h(scan)g
+(the)g(column)g(when)227 4466 y(the)k(table)g(is)f(\014rst)g(closed)h
+(and)f(will)g(app)s(end)f(the)h(maxim)m(um)h(length)f(to)h(the)g(TF)m
+(ORM)f(k)m(eyw)m(ord)h(v)-5 b(alue.)227 4579 y(Note)28
+b(that)e(if)g(the)g(table)h(is)f(subsequen)m(tly)g(mo)s(di\014ed)f(to)i
+(increase)f(the)h(maxim)m(um)f(length)g(of)g(the)g(v)m(ectors)227
+4692 y(then)k(the)h(mo)s(difying)f(program)g(is)g(resp)s(onsible)g(for)
+g(also)h(up)s(dating)e(the)i(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5
+b(alue.)382 4992 y Fe(FTPHBN\(unit,nrows,tfield)o(s,t)o(type)o(,tfo)o
+(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at,)41 b(>)48
+b(status\))0 5293 y Fh(6)81 b Fi(Get)31 b(the)g(binary)e(table)i
+(header)g(k)m(eyw)m(ords)f(from)g(the)h(CHU)382 5593
+y Fe(FTGHBN\(unit,maxdim,)42 b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o
+(unit)o(,ext)o(nam)o(e,va)o(rida)o(t,)716 5706 y(status\))p
+eop end
+%%Page: 45 51
+TeXDict begin 45 50 bop 0 299 a Fg(6.4.)72 b(FITS)30
+b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(45)0 555 y
+Fb(6.4.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Subroutines)0
+764 y Fh(1)81 b Fi(Put)30 b(\(app)s(end\))f(an)h(80-c)m(haracter)j
+(record)e(in)m(to)g(the)g(CHU.)382 1020 y Fe(FTPREC\(unit,card,)43
+b(>)k(status\))0 1276 y Fh(2)81 b Fi(Put)36 b(\(app)s(end\))g(a)i
+(COMMENT)f(k)m(eyw)m(ord)g(in)m(to)h(the)g(CHU.)f(Multiple)h(COMMENT)f
+(k)m(eyw)m(ords)g(will)h(b)s(e)227 1389 y(written)31
+b(if)f(the)h(input)e(commen)m(t)i(string)g(is)f(longer)h(than)f(72)i(c)
+m(haracters.)382 1645 y Fe(FTPCOM\(unit,comment,)42 b(>)48
+b(status\))0 1901 y Fh(3)81 b Fi(Put)24 b(\(app)s(end\))g(a)h(HISTOR)-8
+b(Y)25 b(k)m(eyw)m(ord)g(in)m(to)h(the)f(CHU.)g(Multiple)h(HISTOR)-8
+b(Y)24 b(k)m(eyw)m(ords)h(will)h(b)s(e)e(written)227
+2014 y(if)31 b(the)f(input)g(history)g(string)g(is)h(longer)g(than)f
+(72)h(c)m(haracters.)382 2270 y Fe(FTPHIS\(unit,history,)42
+b(>)48 b(status\))0 2526 y Fh(4)81 b Fi(Put)36 b(\(app)s(end\))f(the)h
+(D)m(A)-8 b(TE)38 b(k)m(eyw)m(ord)f(in)m(to)g(the)f(CHU.)h(The)f(k)m
+(eyw)m(ord)g(v)-5 b(alue)37 b(will)g(con)m(tain)h(the)e(curren)m(t)227
+2639 y(system)c(date)g(as)g(a)f(c)m(haracter)i(string)f(in)f
+('dd/mm/yy')g(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32
+b(k)m(eyw)m(ord)g(already)g(exists)227 2752 y(in)j(the)g(header,)i
+(then)d(this)h(subroutine)f(will)i(simply)e(up)s(date)h(the)g(k)m(eyw)m
+(ord)g(v)-5 b(alue)36 b(in-place)g(with)f(the)227 2865
+y(curren)m(t)30 b(date.)382 3121 y Fe(FTPDAT\(unit,)44
+b(>)k(status\))0 3377 y Fh(5)81 b Fi(Put)22 b(\(app)s(end\))f(a)i(new)f
+(k)m(eyw)m(ord)h(of)g(the)f(appropriate)h(datat)m(yp)s(e)g(in)m(to)h
+(the)e(CHU.)h(Note)h(that)f(FTPKYS)f(will)227 3490 y(only)33
+b(write)g(string)f(v)-5 b(alues)33 b(up)e(to)j(68)f(c)m(haracters)h(in)
+e(length;)i(longer)f(strings)g(will)f(b)s(e)g(truncated.)47
+b(The)227 3603 y(FTPKLS)27 b(routine)h(can)h(b)s(e)f(used)f(to)i(write)
+f(longer)h(strings,)g(using)e(a)i(non-standard)e(FITS)h(con)m(v)m(en)m
+(tion.)227 3716 y(The)23 b(E)h(and)f(D)h(v)m(ersions)g(of)g(this)f
+(routine)h(ha)m(v)m(e)h(the)f(added)f(feature)h(that)g(if)g(the)g
+('decimals')h(parameter)f(is)227 3829 y(negativ)m(e,)i(then)20
+b(the)i('G')g(displa)m(y)f(format)g(rather)g(then)g(the)g('E')h(format)
+f(will)h(b)s(e)e(used)g(when)g(constructing)227 3942
+y(the)25 b(k)m(eyw)m(ord)f(v)-5 b(alue,)26 b(taking)f(the)g(absolute)g
+(v)-5 b(alue)24 b(of)h('decimals')g(for)f(the)g(precision.)39
+b(This)23 b(will)i(suppress)227 4055 y(trailing)35 b(zeros,)h(and)d
+(will)i(use)e(a)i(\014xed)e(format)h(rather)g(than)f(an)h(exp)s(onen)m
+(tial)h(format,)h(dep)s(ending)c(on)227 4168 y(the)f(magnitude)f(of)h
+(the)f(v)-5 b(alue.)382 4424 y Fe(FTPKY[JKLS]\(unit,keyword)o(,ke)o
+(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382 4537
+y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
+(nt,)41 b(>)48 b(status\))0 4793 y Fh(6)81 b Fi(Put)33
+b(\(app)s(end\))h(a)g(string)g(v)-5 b(alued)34 b(k)m(eyw)m(ord)h(in)m
+(to)g(the)g(CHU)f(whic)m(h)g(ma)m(y)g(b)s(e)g(longer)h(than)e(68)i(c)m
+(haracters)227 4906 y(in)j(length.)64 b(This)37 b(uses)h(the)g(Long)g
+(String)g(Keyw)m(ord)g(con)m(v)m(en)m(tion)i(that)e(is)g(describ)s(ed)f
+(in)h(the)g("Usage)227 5019 y(Guidelines)33 b(and)e(Suggestions")j
+(section)f(of)g(this)f(do)s(cumen)m(t.)46 b(Since)33
+b(this)f(uses)g(a)g(non-standard)g(FITS)227 5132 y(con)m(v)m(en)m(tion)
+38 b(to)d(enco)s(de)h(the)f(long)h(k)m(eyw)m(ord)f(string,)i(programs)d
+(whic)m(h)h(use)g(this)g(routine)g(should)f(also)227
+5245 y(call)e(the)e(FTPLSW)g(routine)h(to)g(add)e(some)i(COMMENT)f(k)m
+(eyw)m(ords)h(to)g(w)m(arn)f(users)f(of)i(the)f(FITS)g(\014le)227
+5357 y(that)36 b(this)f(con)m(v)m(en)m(tion)j(is)d(b)s(eing)g(used.)55
+b(FTPLSW)35 b(also)h(writes)g(a)f(k)m(eyw)m(ord)h(called)h(LONGSTRN)d
+(to)227 5470 y(record)c(the)h(v)m(ersion)f(of)h(the)f(longstring)h(con)
+m(v)m(en)m(tion)h(that)f(has)f(b)s(een)g(used,)f(in)h(case)h(a)g(new)f
+(con)m(v)m(en)m(tion)227 5583 y(is)f(adopted)g(at)g(some)g(p)s(oin)m(t)
+f(in)h(the)f(future.)40 b(If)28 b(the)g(LONGSTRN)g(k)m(eyw)m(ord)h(is)g
+(already)g(presen)m(t)f(in)h(the)227 5696 y(header,)i(then)f(FTPLSW)g
+(will)g(simply)g(return)g(and)f(will)i(not)g(write)f(duplicate)h(k)m
+(eyw)m(ords.)p eop end
+%%Page: 46 52
+TeXDict begin 46 51 bop 0 299 a Fi(46)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTPKLS\(unit,keyword,keyv)o(al,)o(comm)o
+(ent,)41 b(>)47 b(status\))382 668 y(FTPLSW\(unit,)d(>)k(status\))0
+889 y Fh(7)81 b Fi(Put)30 b(\(app)s(end\))g(a)h(new)f(k)m(eyw)m(ord)h
+(with)f(an)h(unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)31
+b(in)m(to)h(the)f(CHU.)g(The)f(v)-5 b(alue)31 b(string)227
+1002 y(of)g(the)f(k)m(eyw)m(ord)h(is)g(left)g(blank)f(in)g(this)g
+(case.)382 1223 y Fe(FTPKYU\(unit,keyword,comm)o(ent)o(,)42
+b(>)47 b(status\))0 1445 y Fh(8)81 b Fi(Put)41 b(\(app)s(end\))g(a)i(n)
+m(um)m(b)s(ered)d(sequence)j(of)f(k)m(eyw)m(ords)g(in)m(to)h(the)g
+(CHU.)f(One)f(ma)m(y)i(app)s(end)d(the)j(same)227 1558
+y(commen)m(t)37 b(to)g(ev)m(ery)g(k)m(eyw)m(ord)g(\(and)f(eliminate)h
+(the)g(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)h(of)f(iden)m(tical)i
+(commen)m(t)227 1670 y(strings,)g(one)e(for)g(eac)m(h)h(k)m(eyw)m
+(ord\))g(b)m(y)f(including)g(the)g(amp)s(ersand)e(c)m(haracter)k(as)e
+(the)h(last)g(non-blank)227 1783 y(c)m(haracter)g(in)e(the)h
+(\(\014rst\))f(COMMENTS)f(string)h(parameter.)56 b(This)35
+b(same)g(string)h(will)f(then)g(b)s(e)g(used)227 1896
+y(for)30 b(the)g(commen)m(t)h(\014eld)f(in)f(all)i(the)f(k)m(eyw)m
+(ords.)41 b(\(Note)32 b(that)e(the)g(SPP)f(v)m(ersion)i(of)f(these)g
+(routines)g(only)227 2009 y(supp)s(orts)f(a)i(single)g(commen)m(t)g
+(string\).)382 2230 y Fe(FTPKN[JKLS]\(unit,keyroot)o(,st)o(artn)o(o,no)
+o(_ke)o(ys,k)o(eyva)o(ls,)o(comm)o(ents)o(,)42 b(>)47
+b(status\))382 2343 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o(o,no)o
+(_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41
+b(>)907 2456 y(status\))0 2677 y Fh(9)81 b Fi(Cop)m(y)21
+b(an)h(indexed)f(k)m(eyw)m(ord)i(from)e(one)h(HDU)h(to)f(another,)i(mo)
+s(difying)e(the)g(index)f(n)m(um)m(b)s(er)f(of)i(the)g(k)m(eyw)m(ord)
+227 2790 y(name)37 b(in)f(the)g(pro)s(cess.)58 b(F)-8
+b(or)37 b(example,)i(this)d(routine)h(could)f(read)g(the)h(TLMIN3)f(k)m
+(eyw)m(ord)h(from)f(the)227 2903 y(input)28 b(HDU)h(\(b)m(y)f(giving)h
+(k)m(eyro)s(ot)h(=)d("TLMIN")i(and)f(inn)m(um)f(=)h(3\))h(and)f(write)g
+(it)h(to)g(the)f(output)g(HDU)227 3016 y(with)36 b(the)g(k)m(eyw)m(ord)
+h(name)f(TLMIN4)g(\(b)m(y)g(setting)i(outn)m(um)d(=)h(4\).)58
+b(If)36 b(the)g(input)f(k)m(eyw)m(ord)i(do)s(es)f(not)227
+3129 y(exist,)c(then)e(this)g(routine)g(simply)g(returns)f(without)i
+(indicating)g(an)f(error.)382 3350 y Fe(FTCPKY\(inunit,)44
+b(outunit,)h(innum,)h(outnum,)g(keyroot,)g(>)h(status\))0
+3571 y Fh(10)f Fi(Put)33 b(\(app)s(end\))f(a)h('triple)h(precision')g
+(k)m(eyw)m(ord)f(in)m(to)h(the)g(CHU)f(in)g(F28.16)i(format.)49
+b(The)33 b(\015oating)h(p)s(oin)m(t)227 3684 y(k)m(eyw)m(ord)c(v)-5
+b(alue)30 b(is)f(constructed)h(b)m(y)f(concatenating)j(the)d(input)g
+(in)m(teger)i(v)-5 b(alue)29 b(with)g(the)h(input)e(double)227
+3797 y(precision)22 b(fraction)h(v)-5 b(alue)23 b(\(whic)m(h)f(m)m(ust)
+g(ha)m(v)m(e)h(a)f(v)-5 b(alue)23 b(b)s(et)m(w)m(een)g(0.0)g(and)e
+(1.0\).)40 b(The)21 b(FTGKYT)h(routine)227 3910 y(should)35
+b(b)s(e)h(used)f(to)i(read)f(this)f(k)m(eyw)m(ord)i(v)-5
+b(alue,)38 b(b)s(ecause)e(the)g(other)h(k)m(eyw)m(ord)f(reading)g
+(subroutines)227 4023 y(will)31 b(not)g(preserv)m(e)f(the)h(full)f
+(precision)g(of)h(the)f(v)-5 b(alue.)382 4244 y Fe
+(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41
+b(>)48 b(status\))0 4466 y Fh(11)e Fi(W)-8 b(rite)36
+b(k)m(eyw)m(ords)g(to)f(the)h(CHDU)f(that)h(are)f(de\014ned)f(in)g(an)h
+(ASCI)s(I)f(template)i(\014le.)55 b(The)34 b(format)i(of)f(the)227
+4578 y(template)d(\014le)f(is)f(describ)s(ed)f(under)g(the)i(ftgthd)f
+(routine)g(b)s(elo)m(w.)382 4800 y Fe(FTPKTP\(unit,)44
+b(filename,)i(>)h(status\))0 5021 y Fh(12)f Fi(App)s(end)28
+b(the)i(ph)m(ysical)g(units)g(string)g(to)g(an)g(existing)h(k)m(eyw)m
+(ord.)41 b(This)29 b(routine)h(uses)f(a)h(lo)s(cal)i(con)m(v)m(en)m
+(tion,)227 5134 y(sho)m(wn)g(in)g(the)h(follo)m(wing)h(example,)g(in)e
+(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)f(square)
+g(brac)m(k)m(ets)227 5247 y(in)e(the)h(b)s(eginning)f(of)g(the)h(k)m
+(eyw)m(ord)g(commen)m(t)g(\014eld.)239 5468 y Fe(VELOCITY=)809
+b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382 5694 y
+(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))p
+eop end
+%%Page: 47 53
+TeXDict begin 47 52 bop 0 299 a Fg(6.4.)72 b(FITS)30
+b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(47)0 555 y
+Fb(6.4.4)112 b(Insert)38 b(Keyw)m(ord)f(Subroutines)0
+762 y Fh(1)81 b Fi(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)h(record)g(in)m
+(to)g(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s(osition)h(\(i.e.,)i
+(immediately)f(preceding)227 875 y(the)34 b(\(k)m(eyno\)th)g(k)m(eyw)m
+(ord)g(in)f(the)h(header.\))49 b(This)33 b('insert)g(record')h
+(subroutine)e(is)h(somewhat)h(less)g(e\016-)227 988 y(cien)m(t)28
+b(then)f(the)g('app)s(end)e(record')i(subroutine)f(\(FTPREC\))g
+(describ)s(ed)g(ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)227
+1101 y(k)m(eyw)m(ords)k(in)f(the)h(header)f(ha)m(v)m(e)h(to)g(b)s(e)f
+(shifted)g(do)m(wn)g(one)h(slot.)382 1349 y Fe
+(FTIREC\(unit,key_no,card,)41 b(>)47 b(status\))0 1598
+y Fh(2)81 b Fi(Insert)36 b(a)h(new)f(k)m(eyw)m(ord)i(in)m(to)g(the)f
+(CHU.)g(The)f(new)g(k)m(eyw)m(ord)i(is)f(inserted)f(immediately)i
+(follo)m(wing)h(the)227 1711 y(last)27 b(k)m(eyw)m(ord)g(that)f(has)g
+(b)s(een)g(read)g(from)f(the)h(header.)40 b(The)25 b(FTIKLS)g
+(subroutine)g(w)m(orks)h(the)g(same)h(as)227 1824 y(the)h(FTIKYS)e
+(subroutine,)h(except)i(it)f(also)g(supp)s(orts)e(long)i(string)f(v)-5
+b(alues)28 b(greater)g(than)f(68)h(c)m(haracters)227
+1937 y(in)36 b(length.)59 b(These)36 b('insert)g(k)m(eyw)m(ord')h
+(subroutines)e(are)i(somewhat)g(less)f(e\016cien)m(t)i(then)e(the)g
+('app)s(end)227 2049 y(k)m(eyw)m(ord')30 b(subroutines)e(describ)s(ed)g
+(ab)s(o)m(v)m(e)i(b)s(ecause)f(the)g(remaining)h(k)m(eyw)m(ords)f(in)g
+(the)g(header)g(ha)m(v)m(e)h(to)227 2162 y(b)s(e)g(shifted)g(do)m(wn)g
+(one)h(slot.)382 2411 y Fe(FTIKEY\(unit,)44 b(card,)j(>)g(status\))382
+2524 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o(men)o(t,)42
+b(>)47 b(status\))382 2637 y(FTIKLS\(unit,keyword,keyv)o(al,)o(comm)o
+(ent,)41 b(>)47 b(status\))382 2750 y(FTIKY[EDFG]\(unit,keyword)o(,ke)o
+(yval)o(,dec)o(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))0
+2998 y Fh(3)81 b Fi(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)f(an)h
+(unde\014ned,)e(or)h(n)m(ull,)h(v)-5 b(alue)34 b(in)m(to)h(the)e(CHU.)h
+(The)f(v)-5 b(alue)34 b(string)f(of)h(the)227 3111 y(k)m(eyw)m(ord)d
+(is)g(left)g(blank)f(in)g(this)g(case.)382 3359 y Fe
+(FTIKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
+3648 y Fb(6.4.5)112 b(Read)38 b(Keyw)m(ord)g(Subroutines)0
+3867 y Fi(These)29 b(routines)f(return)g(the)h(v)-5 b(alue)29
+b(of)g(the)g(sp)s(eci\014ed)f(k)m(eyw)m(ord\(s\).)41
+b(Wild)30 b(card)e(c)m(haracters)i(\(*,)h(?,)e(or)g(#\))f(ma)m(y)0
+3980 y(b)s(e)f(used)h(when)f(sp)s(ecifying)h(the)g(name)g(of)g(the)g(k)
+m(eyw)m(ord)h(to)g(b)s(e)e(read:)39 b(a)29 b(')10 b(?')40
+b(will)28 b(matc)m(h)h(an)m(y)g(single)f(c)m(haracter)0
+4093 y(at)38 b(that)g(p)s(osition)f(in)g(the)h(k)m(eyw)m(ord)g(name)f
+(and)g(a)g('*')i(will)e(matc)m(h)h(an)m(y)g(length)g(\(including)f
+(zero\))h(string)g(of)0 4206 y(c)m(haracters.)65 b(The)37
+b('#')h(c)m(haracter)h(will)f(matc)m(h)h(an)m(y)f(consecutiv)m(e)i
+(string)e(of)g(decimal)h(digits)f(\(0)h(-)f(9\).)64 b(Note)0
+4319 y(that)30 b(when)f(a)g(wild)g(card)h(is)f(used)g(in)g(the)h(input)
+e(k)m(eyw)m(ord)i(name,)g(the)g(routine)f(will)h(only)g(searc)m(h)g
+(for)f(a)h(matc)m(h)0 4432 y(from)h(the)h(curren)m(t)g(header)g(p)s
+(osition)g(to)g(the)h(end)e(of)h(the)g(header.)45 b(It)32
+b(will)g(not)g(resume)g(the)g(searc)m(h)g(from)g(the)0
+4545 y(top)i(of)h(the)f(header)g(bac)m(k)h(to)g(the)f(original)h
+(header)f(p)s(osition)g(as)h(is)f(done)g(when)f(no)h(wildcards)f(are)i
+(included)0 4657 y(in)f(the)g(k)m(eyw)m(ord)h(name.)52
+b(If)33 b(the)h(desired)g(k)m(eyw)m(ord)h(string)f(is)g(8-c)m
+(haracters)i(long)f(\(the)f(maxim)m(um)g(length)h(of)0
+4770 y(a)h(k)m(eyw)m(ord)g(name\))g(then)g(a)g('*')g(ma)m(y)h(b)s(e)e
+(app)s(ended)f(as)h(the)h(nin)m(th)g(c)m(haracter)h(of)f(the)f(input)g
+(name)h(to)g(force)0 4883 y(the)31 b(k)m(eyw)m(ord)g(searc)m(h)h(to)f
+(stop)g(at)g(the)g(end)f(of)h(the)g(header)g(\(e.g.,)i('COMMENT)d(*')i
+(will)f(searc)m(h)g(for)g(the)g(next)0 4996 y(COMMENT)37
+b(k)m(eyw)m(ord\).)64 b(The)37 b(\013grec)i(routine)f(ma)m(y)g(b)s(e)f
+(used)g(to)i(set)f(the)g(starting)g(p)s(osition)g(when)f(doing)0
+5109 y(wild)30 b(card)g(searc)m(hes.)0 5357 y Fh(1)81
+b Fi(Get)37 b(the)f(n)m(th)f(80-c)m(haracter)k(header)d(record)g(from)f
+(the)h(CHU.)h(The)e(\014rst)g(k)m(eyw)m(ord)i(in)e(the)h(header)g(is)g
+(at)227 5470 y(k)m(ey)p 365 5470 28 4 v 34 w(no)42 b(=)f(1;)49
+b(if)42 b(k)m(ey)p 996 5470 V 34 w(no)g(=)f(0)i(then)e(this)h
+(subroutine)f(simple)h(mo)m(v)m(es)i(the)e(in)m(ternal)h(p)s(oin)m(ter)
+f(to)h(the)227 5583 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g
+(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g
+(the)g(top)g(of)g(the)227 5696 y(header;)31 b(it)g(also)g(returns)e(a)i
+(blank)f(card)g(v)-5 b(alue)31 b(in)f(this)g(case.)p
+eop end
+%%Page: 48 54
+TeXDict begin 48 53 bop 0 299 a Fi(48)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTGREC\(unit,key_no,)42
+b(>)48 b(card,status\))0 817 y Fh(2)81 b Fi(Get)31 b(the)g(name,)f(v)-5
+b(alue)31 b(\(as)g(a)g(string\),)g(and)f(commen)m(t)i(of)e(the)h(n)m
+(th)f(k)m(eyw)m(ord)h(in)f(CHU.)h(This)f(routine)g(also)227
+930 y(c)m(hec)m(ks)h(that)f(the)g(returned)e(k)m(eyw)m(ord)i(name)f
+(\(KEYW)m(ORD\))i(con)m(tains)g(only)e(legal)i(ASCI)s(I)d(c)m
+(haracters.)227 1043 y(Call)j(FTGREC)f(and)g(FTPSV)m(C)g(to)h(b)m
+(ypass)f(this)g(error)g(c)m(hec)m(k.)382 1305 y Fe
+(FTGKYN\(unit,key_no,)42 b(>)48 b(keyword,value,comment,st)o(atu)o(s\))
+0 1568 y Fh(3)81 b Fi(Get)31 b(the)g(80-c)m(haracter)i(header)d(record)
+g(for)g(the)h(named)f(k)m(eyw)m(ord)382 1830 y Fe
+(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))0 2092
+y Fh(4)81 b Fi(Get)26 b(the)f(next)h(k)m(eyw)m(ord)f(whose)g(name)h
+(matc)m(hes)g(one)f(of)h(the)f(strings)g(in)g('inclist')i(but)d(do)s
+(es)h(not)g(matc)m(h)i(an)m(y)227 2205 y(of)32 b(the)f(strings)g(in)g
+('exclist'.)45 b(The)30 b(strings)h(in)g(inclist)h(and)f(exclist)h(ma)m
+(y)g(con)m(tain)h(wild)d(card)h(c)m(haracters)227 2318
+y(\(*,)38 b(?,)e(and)e(#\))i(as)f(describ)s(ed)f(at)i(the)f(b)s
+(eginning)f(of)i(this)f(section.)56 b(This)34 b(routine)h(searc)m(hes)h
+(from)f(the)227 2431 y(curren)m(t)28 b(header)f(p)s(osition)h(to)g(the)
+g(end)f(of)h(the)g(header,)g(only)-8 b(,)29 b(and)e(do)s(es)g(not)h
+(con)m(tin)m(ue)h(the)f(searc)m(h)g(from)227 2544 y(the)41
+b(top)g(of)g(the)g(header)g(bac)m(k)h(to)f(the)g(original)h(p)s
+(osition.)73 b(The)40 b(curren)m(t)h(header)f(p)s(osition)h(ma)m(y)h(b)
+s(e)227 2657 y(reset)33 b(with)e(the)h(ftgrec)h(routine.)44
+b(Note)33 b(that)g(nexc)f(ma)m(y)g(b)s(e)f(set)h(=)g(0)g(if)f(there)h
+(are)g(no)g(k)m(eyw)m(ords)g(to)h(b)s(e)227 2769 y(excluded.)41
+b(This)29 b(routine)i(returns)e(status)i(=)f(202)h(if)g(a)f(matc)m
+(hing)i(k)m(eyw)m(ord)f(is)f(not)h(found.)382 3032 y
+Fe(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41
+b(>)48 b(card,status\))0 3294 y Fh(5)81 b Fi(Get)30 b(the)g(literal)i
+(k)m(eyw)m(ord)e(v)-5 b(alue)30 b(as)g(a)g(c)m(haracter)i(string.)40
+b(Regardless)31 b(of)f(the)g(datat)m(yp)s(e)g(of)g(the)g(k)m(eyw)m
+(ord,)227 3407 y(this)37 b(routine)g(simply)g(returns)f(the)h(string)g
+(of)g(c)m(haracters)i(in)d(the)i(v)-5 b(alue)37 b(\014eld)g(of)g(the)g
+(k)m(eyw)m(ord)h(along)227 3520 y(with)30 b(the)h(commen)m(t)g
+(\014eld.)382 3782 y Fe(FTGKEY\(unit,keyword,)42 b(>)48
+b(value,comment,status\))0 4044 y Fh(6)81 b Fi(Get)31
+b(a)g(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(\(with)h(the)f(appropriate)h
+(datat)m(yp)s(e\))g(and)f(commen)m(t)i(from)e(the)g(CHU)382
+4306 y Fe(FTGKY[EDJKLS]\(unit,keywo)o(rd,)41 b(>)48 b
+(keyval,comment,status\))0 4568 y Fh(7)81 b Fi(Get)24
+b(a)g(sequence)g(of)g(n)m(um)m(b)s(ered)e(k)m(eyw)m(ord)i(v)-5
+b(alues.)38 b(These)24 b(routines)f(do)g(not)h(supp)s(ort)e(wild)h
+(card)g(c)m(haracters)227 4681 y(in)30 b(the)h(ro)s(ot)g(name.)382
+4943 y Fe(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o(_key)o
+(s,)42 b(>)47 b(keyvals,nfound,status\))0 5206 y Fh(8)81
+b Fi(Get)27 b(the)f(v)-5 b(alue)26 b(of)h(a)f(\015oating)h(p)s(oin)m(t)
+f(k)m(eyw)m(ord,)i(returning)d(the)h(in)m(teger)h(and)f(fractional)h
+(parts)f(of)g(the)g(v)-5 b(alue)227 5319 y(in)32 b(separate)g
+(subroutine)f(argumen)m(ts.)45 b(This)31 b(subroutine)f(ma)m(y)j(b)s(e)
+e(used)g(to)h(read)g(an)m(y)g(k)m(eyw)m(ord)g(but)f(is)227
+5431 y(esp)s(ecially)h(useful)d(for)i(reading)f(the)h('triple)g
+(precision')f(k)m(eyw)m(ords)h(written)g(b)m(y)f(FTPKYT.)382
+5694 y Fe(FTGKYT\(unit,keyword,)42 b(>)48 b(intval,dblval,comment,s)o
+(tat)o(us\))p eop end
+%%Page: 49 55
+TeXDict begin 49 54 bop 0 299 a Fg(6.4.)72 b(FITS)30
+b(HEADER)h(I/O)f(SUBR)m(OUTINES)2086 b Fi(49)0 555 y
+Fh(9)81 b Fi(Get)24 b(the)g(ph)m(ysical)h(units)e(string)g(in)h(an)f
+(existing)i(k)m(eyw)m(ord.)39 b(This)23 b(routine)h(uses)f(a)h(lo)s
+(cal)h(con)m(v)m(en)m(tion,)j(sho)m(wn)227 668 y(in)33
+b(the)h(follo)m(wing)g(example,)h(in)e(whic)m(h)g(the)g(k)m(eyw)m(ord)h
+(units)f(are)g(enclosed)h(in)f(square)g(brac)m(k)m(ets)i(in)e(the)227
+781 y(b)s(eginning)h(of)h(the)g(k)m(eyw)m(ord)g(commen)m(t)h(\014eld.)
+53 b(A)35 b(blank)g(string)f(is)h(returned)f(if)g(no)h(units)f(are)h
+(de\014ned)227 894 y(for)30 b(the)h(k)m(eyw)m(ord.)191
+1132 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)382
+1358 y(FTGUNT\(unit,keyword,)c(>)48 b(units,status\))0
+1645 y Fb(6.4.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e(Subroutines)0
+1864 y Fi(Wild)32 b(card)f(c)m(haracters,)j(as)e(describ)s(ed)e(in)h
+(the)h(Read)g(Keyw)m(ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e)
+d(used)h(when)g(sp)s(eci-)0 1977 y(fying)f(the)h(name)f(of)h(the)f(k)m
+(eyw)m(ord)h(to)g(b)s(e)f(mo)s(di\014ed.)0 2215 y Fh(1)81
+b Fi(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i(the)f(n)m(th)f(80-c)m
+(haracter)j(header)d(record)h(in)f(the)g(CHU)382 2453
+y Fe(FTMREC\(unit,key_no,card,)41 b(>)47 b(status\))0
+2692 y Fh(2)81 b Fi(Mo)s(dify)37 b(\(o)m(v)m(erwrite\))j(the)e(80-c)m
+(haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)m(ord)h(in)g
+(the)g(CHU.)g(This)227 2805 y(can)31 b(b)s(e)f(used)f(to)i(o)m(v)m
+(erwrite)h(the)f(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m(ell)g(as)g
+(its)g(v)-5 b(alue)30 b(and)g(commen)m(t)i(\014elds.)382
+3043 y Fe(FTMCRD\(unit,keyword,card)o(,)42 b(>)47 b(status\))0
+3281 y Fh(3)81 b Fi(Mo)s(dify)33 b(\(o)m(v)m(erwrite\))k(the)d(name)g
+(of)h(an)f(existing)h(k)m(eyw)m(ord)f(in)g(the)h(CHU)f(preserving)f
+(the)i(curren)m(t)e(v)-5 b(alue)227 3394 y(and)30 b(commen)m(t)h
+(\014elds.)382 3632 y Fe(FTMNAM\(unit,oldkey,keywo)o(rd,)41
+b(>)48 b(status\))0 3870 y Fh(4)81 b Fi(Mo)s(dify)30
+b(\(o)m(v)m(erwrite\))i(the)f(commen)m(t)g(\014eld)f(of)h(an)f
+(existing)h(k)m(eyw)m(ord)g(in)f(the)h(CHU)382 4108 y
+Fe(FTMCOM\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
+4347 y Fh(5)81 b Fi(Mo)s(dify)24 b(the)h(v)-5 b(alue)25
+b(and)f(commen)m(t)i(\014elds)e(of)h(an)f(existing)i(k)m(eyw)m(ord)f
+(in)f(the)h(CHU.)g(The)f(FTMKLS)g(subrou-)227 4459 y(tine)35
+b(w)m(orks)e(the)h(same)h(as)f(the)g(FTMKYS)f(subroutine,)h(except)h
+(it)g(also)f(supp)s(orts)e(long)j(string)f(v)-5 b(alues)227
+4572 y(greater)38 b(than)f(68)h(c)m(haracters)g(in)f(length.)60
+b(Optionally)-8 b(,)40 b(one)d(ma)m(y)h(mo)s(dify)e(only)h(the)g(v)-5
+b(alue)37 b(\014eld)g(and)227 4685 y(lea)m(v)m(e)32 b(the)d(commen)m(t)
+i(\014eld)e(unc)m(hanged)g(b)m(y)g(setting)h(the)g(input)e(COMMENT)h
+(parameter)h(equal)g(to)g(the)227 4798 y(amp)s(ersand)f(c)m(haracter)k
+(\(&\).)42 b(The)30 b(E)g(and)g(D)h(v)m(ersions)g(of)g(this)g(routine)f
+(ha)m(v)m(e)i(the)f(added)f(feature)h(that)227 4911 y(if)26
+b(the)h('decimals')g(parameter)g(is)f(negativ)m(e,)k(then)c(the)g('G')h
+(displa)m(y)f(format)h(rather)f(then)g(the)g('E')h(format)227
+5024 y(will)i(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)
+h(v)-5 b(alue,)30 b(taking)f(the)g(absolute)g(v)-5 b(alue)29
+b(of)f('decimals')i(for)227 5137 y(the)37 b(precision.)60
+b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a)
+g(\014xed)e(format)i(rather)g(than)f(an)227 5250 y(exp)s(onen)m(tial)c
+(format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5
+b(alue.)382 5488 y Fe(FTMKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o
+(men)o(t,)42 b(>)47 b(status\))382 5601 y(FTMKLS\(unit,keyword,keyv)o
+(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 5714 y
+(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
+(nt,)41 b(>)48 b(status\))p eop end
+%%Page: 50 56
+TeXDict begin 50 55 bop 0 299 a Fi(50)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fh(6)81 b Fi(Mo)s(dify)22 b(the)g(v)-5
+b(alue)23 b(of)f(an)g(existing)i(k)m(eyw)m(ord)e(to)h(b)s(e)f
+(unde\014ned,)g(or)g(n)m(ull.)38 b(The)22 b(v)-5 b(alue)22
+b(string)h(of)f(the)g(k)m(eyw)m(ord)227 668 y(is)30 b(set)h(to)g
+(blank.)40 b(Optionally)-8 b(,)31 b(one)f(ma)m(y)h(lea)m(v)m(e)h(the)f
+(commen)m(t)g(\014eld)e(unc)m(hanged)h(b)m(y)g(setting)h(the)f(input)
+227 781 y(COMMENT)g(parameter)h(equal)g(to)g(the)g(amp)s(ersand)e(c)m
+(haracter)j(\(&\).)382 1034 y Fe(FTMKYU\(unit,keyword,comm)o(ent)o(,)42
+b(>)47 b(status\))0 1324 y Fb(6.4.7)112 b(Up)s(date)39
+b(Keyw)m(ord)e(Subroutines)0 1532 y Fh(1)81 b Fi(Up)s(date)36
+b(an)g(80-c)m(haracter)j(record)d(in)g(the)h(CHU.)f(If)g(the)g(sp)s
+(eci\014ed)g(k)m(eyw)m(ord)h(already)f(exists)h(then)f(that)227
+1645 y(header)j(record)f(will)h(b)s(e)f(replaced)i(with)e(the)h(input)f
+(CARD)g(string.)66 b(If)38 b(it)i(do)s(es)e(not)h(exist)g(then)g(the)
+227 1758 y(new)f(record)g(will)g(b)s(e)f(added)h(to)g(the)g(header.)64
+b(The)37 b(FTUKLS)g(subroutine)g(w)m(orks)h(the)g(same)h(as)f(the)227
+1870 y(FTUKYS)28 b(subroutine,)g(except)i(it)f(also)h(supp)s(orts)c
+(long)j(string)g(v)-5 b(alues)29 b(greater)h(than)e(68)h(c)m(haracters)
+h(in)227 1983 y(length.)382 2237 y Fe(FTUCRD\(unit,keyword,card)o(,)42
+b(>)47 b(status\))0 2490 y Fh(2)81 b Fi(Up)s(date)44
+b(the)i(v)-5 b(alue)45 b(and)g(commen)m(t)h(\014elds)e(of)h(a)h(k)m
+(eyw)m(ord)f(in)g(the)g(CHU.)h(The)e(sp)s(eci\014ed)g(k)m(eyw)m(ord)i
+(is)227 2603 y(mo)s(di\014ed)38 b(if)g(it)h(already)g(exists)g(\(b)m(y)
+g(calling)h(FTMKYx\))f(otherwise)f(a)h(new)f(k)m(eyw)m(ord)h(is)g
+(created)g(b)m(y)227 2716 y(calling)f(FTPKYx.)58 b(The)36
+b(E)g(and)f(D)i(v)m(ersions)f(of)h(this)f(routine)g(ha)m(v)m(e)h(the)g
+(added)e(feature)i(that)g(if)f(the)227 2828 y('decimals')c(parameter)g
+(is)f(negativ)m(e,)i(then)d(the)h('G')h(displa)m(y)f(format)g(rather)g
+(then)f(the)h('E')g(format)h(will)227 2941 y(b)s(e)41
+b(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5
+b(alue,)45 b(taking)d(the)f(absolute)h(v)-5 b(alue)42
+b(of)g('decimals')g(for)227 3054 y(the)37 b(precision.)60
+b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a)
+g(\014xed)e(format)i(rather)g(than)f(an)227 3167 y(exp)s(onen)m(tial)c
+(format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5
+b(alue.)382 3420 y Fe(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o
+(men)o(t,)42 b(>)47 b(status\))382 3533 y(FTUKLS\(unit,keyword,keyv)o
+(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 3646 y
+(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
+(nt,)41 b(>)48 b(status\))0 3899 y Fh(3)81 b Fi(Up)s(date)23
+b(the)g(v)-5 b(alue)24 b(of)g(an)f(existing)i(k)m(eyw)m(ord)f(to)g(b)s
+(e)f(unde\014ned,)f(or)i(n)m(ull,)h(or)e(insert)h(a)f(new)g
+(unde\014ned-v)-5 b(alue)227 4012 y(k)m(eyw)m(ord)30
+b(if)f(it)h(do)s(esn't)f(already)h(exist.)41 b(The)29
+b(v)-5 b(alue)30 b(string)f(of)g(the)h(k)m(eyw)m(ord)f(is)h(left)g
+(blank)f(in)f(this)i(case.)382 4265 y Fe(FTUKYU\(unit,keyword,comm)o
+(ent)o(,)42 b(>)47 b(status\))0 4555 y Fb(6.4.8)112 b(Delete)38
+b(Keyw)m(ord)f(Subroutines)0 4763 y Fh(1)81 b Fi(Delete)32
+b(an)e(existing)h(k)m(eyw)m(ord)g(record.)40 b(The)30
+b(space)h(previously)f(o)s(ccupied)g(b)m(y)g(the)g(k)m(eyw)m(ord)h(is)f
+(reclaimed)227 4876 y(b)m(y)c(mo)m(ving)h(all)g(the)f(follo)m(wing)i
+(header)e(records)g(up)f(one)h(ro)m(w)h(in)e(the)i(header.)39
+b(The)25 b(\014rst)h(routine)g(deletes)227 4989 y(a)34
+b(k)m(eyw)m(ord)f(at)h(a)g(sp)s(eci\014ed)e(p)s(osition)h(in)g(the)g
+(header)g(\(the)h(\014rst)e(k)m(eyw)m(ord)i(is)f(at)h(p)s(osition)f
+(1\),)i(whereas)227 5102 y(the)d(second)g(routine)g(deletes)h(a)f(sp)s
+(eci\014cally)g(named)f(k)m(eyw)m(ord.)46 b(Wild)32 b(card)f(c)m
+(haracters,)j(as)e(describ)s(ed)227 5215 y(in)f(the)g(Read)g(Keyw)m
+(ord)f(section,)i(ab)s(o)m(v)m(e,)g(ma)m(y)g(b)s(e)e(used)g(when)f(sp)s
+(ecifying)i(the)g(name)g(of)g(the)f(k)m(eyw)m(ord)227
+5328 y(to)h(b)s(e)f(deleted)h(\(b)s(e)f(careful!\).)382
+5581 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382
+5694 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))p eop
+end
+%%Page: 51 57
+TeXDict begin 51 56 bop 0 299 a Fg(6.5.)72 b(D)m(A)-8
+b(T)g(A)32 b(SCALING)e(AND)h(UNDEFINED)h(PIXEL)e(P)-8
+b(ARAMETERS)1083 b Fi(51)0 555 y Fd(6.5)135 b(Data)46
+b(Scaling)g(and)e(Unde\014ned)h(Pixel)h(P)l(arameters)0
+805 y Fi(These)24 b(subroutines)f(de\014ne)h(or)h(mo)s(dify)e(the)i(in)
+m(ternal)g(parameters)g(used)f(b)m(y)g(FITSIO)g(to)h(either)g(scale)h
+(the)e(data)0 918 y(or)33 b(to)i(represen)m(t)e(unde\014ned)e(pixels.)
+50 b(Generally)35 b(FITSIO)d(will)i(scale)g(the)g(data)g(according)g
+(to)g(the)g(v)-5 b(alues)34 b(of)0 1031 y(the)e(BSCALE)g(and)f(BZER)m
+(O)h(\(or)h(TSCALn)d(and)i(TZER)m(On\))f(k)m(eyw)m(ords,)i(ho)m(w)m(ev)
+m(er)h(these)e(subroutines)f(ma)m(y)0 1144 y(b)s(e)h(used)h(to)h(o)m(v)
+m(erride)g(the)f(k)m(eyw)m(ord)h(v)-5 b(alues.)49 b(This)32
+b(ma)m(y)i(b)s(e)f(useful)f(when)g(one)i(w)m(an)m(ts)f(to)h(read)f(or)g
+(write)h(the)0 1257 y(ra)m(w)c(unscaled)f(v)-5 b(alues)29
+b(in)h(the)f(FITS)g(\014le.)40 b(Similarly)-8 b(,)31
+b(FITSIO)d(generally)j(uses)e(the)g(v)-5 b(alue)30 b(of)g(the)f(BLANK)h
+(or)0 1370 y(TNULLn)35 b(k)m(eyw)m(ord)h(to)g(signify)f(an)h
+(unde\014ned)d(pixel,)k(but)e(these)h(routines)g(ma)m(y)g(b)s(e)e(used)
+h(to)h(o)m(v)m(erride)h(this)0 1483 y(v)-5 b(alue.)41
+b(These)30 b(subroutines)f(do)i(not)f(create)i(or)f(mo)s(dify)e(the)i
+(corresp)s(onding)e(header)h(k)m(eyw)m(ord)h(v)-5 b(alues.)0
+1727 y Fh(1)81 b Fi(Reset)26 b(the)g(scaling)g(factors)g(in)f(the)h
+(primary)f(arra)m(y)h(or)f(image)i(extension;)h(do)s(es)d(not)g(c)m
+(hange)i(the)f(BSCALE)227 1840 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h(v)-5
+b(alues)28 b(and)g(only)g(a\013ects)i(the)e(automatic)j(scaling)e(p)s
+(erformed)e(when)g(the)h(data)227 1953 y(elemen)m(ts)f(are)f
+(written/read)g(to/from)g(the)g(FITS)f(\014le.)39 b(When)25
+b(reading)h(from)f(a)h(FITS)f(\014le)g(the)h(returned)227
+2066 y(data)i(v)-5 b(alue)28 b(=)f(\(the)h(v)-5 b(alue)28
+b(giv)m(en)h(in)e(the)g(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.)
+g(The)g(in)m(v)m(erse)i(form)m(ula)227 2179 y(is)34 b(used)f(when)g
+(writing)h(data)h(v)-5 b(alues)34 b(to)g(the)g(FITS)g(\014le.)51
+b(\(NOTE:)34 b(BSCALE)f(and)g(BZER)m(O)h(m)m(ust)g(b)s(e)227
+2292 y(declared)d(as)g(Double)g(Precision)g(v)-5 b(ariables\).)382
+2536 y Fe(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))0
+2780 y Fh(2)81 b Fi(Reset)39 b(the)f(scaling)i(parameters)e(for)h(a)f
+(table)h(column;)k(do)s(es)38 b(not)g(c)m(hange)i(the)e(TSCALn)f(or)h
+(TZER)m(On)227 2893 y(k)m(eyw)m(ord)29 b(v)-5 b(alues)29
+b(and)e(only)i(a\013ects)g(the)g(automatic)h(scaling)f(p)s(erformed)e
+(when)g(the)i(data)g(elemen)m(ts)h(are)227 3006 y(written/read)i
+(to/from)g(the)g(FITS)f(\014le.)44 b(When)31 b(reading)g(from)g(a)h
+(FITS)f(\014le)g(the)h(returned)e(data)i(v)-5 b(alue)227
+3119 y(=)40 b(\(the)h(v)-5 b(alue)40 b(giv)m(en)h(in)f(the)g(FITS)g
+(arra)m(y\))g(*)h(TSCAL)e(+)g(TZER)m(O.)h(The)f(in)m(v)m(erse)i(form)m
+(ula)g(is)f(used)227 3232 y(when)33 b(writing)h(data)h(v)-5
+b(alues)35 b(to)f(the)h(FITS)e(\014le.)52 b(\(NOTE:)34
+b(TSCAL)f(and)g(TZER)m(O)g(m)m(ust)h(b)s(e)f(declared)227
+3345 y(as)e(Double)g(Precision)g(v)-5 b(ariables\).)382
+3589 y Fe(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48
+b(status\))0 3833 y Fh(3)81 b Fi(De\014ne)36 b(the)g(in)m(teger)i(v)-5
+b(alue)36 b(to)h(b)s(e)e(used)h(to)h(signify)f(unde\014ned)e(pixels)i
+(in)g(the)g(primary)f(arra)m(y)i(or)f(image)227 3946
+y(extension.)59 b(This)35 b(is)h(only)g(used)g(if)g(BITPIX)g(=)f(8,)j
+(16,)h(32.)59 b(or)36 b(64)h(This)e(do)s(es)h(not)g(create)i(or)e(c)m
+(hange)227 4059 y(the)27 b(v)-5 b(alue)28 b(of)f(the)g(BLANK)g(k)m(eyw)
+m(ord)h(in)e(the)i(header.)39 b(FTPNULLL)27 b(is)g(iden)m(tical)h(to)g
+(FTPNUL)f(except)227 4172 y(that)k(the)g(blank)f(v)-5
+b(alue)31 b(is)f(a)h(64-bit)g(in)m(teger)h(instead)f(of)f(a)h(32-bit)h
+(in)m(teger.)382 4416 y Fe(FTPNUL\(unit,blank,)43 b(>)k(status\))382
+4529 y(FTPNULLL\(unit,blankll,)42 b(>)47 b(status\))0
+4774 y Fh(4)81 b Fi(De\014ne)36 b(the)g(string)g(to)g(b)s(e)f(used)g
+(to)i(signify)f(unde\014ned)e(pixels)i(in)f(a)h(column)g(in)g(an)f
+(ASCI)s(I)g(table.)58 b(This)227 4887 y(do)s(es)30 b(not)h(create)h(or)
+e(c)m(hange)i(the)e(v)-5 b(alue)31 b(of)g(the)f(TNULLn)g(k)m(eyw)m
+(ord.)382 5131 y Fe(FTSNUL\(unit,colnum,snull)41 b(>)47
+b(status\))0 5375 y Fh(5)81 b Fi(De\014ne)34 b(the)h(v)-5
+b(alue)34 b(to)h(b)s(e)f(used)g(to)h(signify)f(unde\014ned)e(pixels)j
+(in)f(an)g(in)m(teger)i(column)e(in)g(a)g(binary)g(table)227
+5488 y(\(where)42 b(TF)m(ORMn)f(=)g('B',)i('I',)f('J',)f(or)h('K'\).)g
+(This)f(do)s(es)g(not)h(create)h(or)e(c)m(hange)i(the)e(v)-5
+b(alue)42 b(of)g(the)227 5601 y(TNULLn)d(k)m(eyw)m(ord.)71
+b(FTTNULLL)39 b(is)i(iden)m(tical)h(to)e(FTTNUL)g(except)h(that)g(the)f
+(tn)m(ull)h(v)-5 b(alue)40 b(is)h(a)227 5714 y(64-bit)32
+b(in)m(teger)g(instead)e(of)h(a)g(32-bit)g(in)m(teger.)p
+eop end
+%%Page: 52 58
+TeXDict begin 52 57 bop 0 299 a Fi(52)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTTNUL\(unit,colnum,tnull)41
+b(>)47 b(status\))382 668 y(FTTNULLL\(unit,colnum,tnu)o(lll)o(l)42
+b(>)47 b(status\))0 1001 y Fd(6.6)135 b(FITS)44 b(Primary)h(Arra)l(y)g
+(or)g(IMA)l(GE)g(Extension)h(I/O)f(Subroutines)0 1251
+y Fi(These)26 b(subroutines)f(put)h(or)h(get)g(data)h(v)-5
+b(alues)26 b(in)h(the)f(primary)g(data)h(arra)m(y)g(\(i.e.,)i(the)e
+(\014rst)f(HDU)h(in)f(the)h(FITS)0 1364 y(\014le\))35
+b(or)g(an)f(IMA)m(GE)i(extension.)54 b(The)34 b(data)i(arra)m(y)f(is)f
+(represen)m(ted)h(as)g(a)g(single)g(one-dimensional)h(arra)m(y)f(of)0
+1477 y(pixels)h(regardless)h(of)f(the)g(actual)h(dimensionalit)m(y)g
+(of)g(the)f(arra)m(y)-8 b(,)38 b(and)e(the)g(FPIXEL)g(parameter)g(giv)m
+(es)i(the)0 1590 y(p)s(osition)28 b(within)e(this)i(1-D)g(arra)m(y)g
+(of)g(the)g(\014rst)e(pixel)i(to)g(read)g(or)f(write.)40
+b(Automatic)29 b(data)f(t)m(yp)s(e)g(con)m(v)m(ersion)h(is)0
+1703 y(p)s(erformed)g(for)i(n)m(umeric)g(data)g(\(except)i(for)d
+(complex)i(data)f(t)m(yp)s(es\))h(if)f(the)g(data)g(t)m(yp)s(e)g(of)g
+(the)g(primary)f(arra)m(y)0 1816 y(\(de\014ned)e(b)m(y)g(the)h(BITPIX)f
+(k)m(eyw)m(ord\))h(di\013ers)g(from)f(the)g(data)i(t)m(yp)s(e)e(of)h
+(the)g(arra)m(y)g(in)f(the)h(calling)h(subroutine.)0
+1929 y(The)41 b(data)i(v)-5 b(alues)42 b(are)g(also)h(scaled)f(b)m(y)g
+(the)g(BSCALE)f(and)g(BZER)m(O)h(header)f(v)-5 b(alues)42
+b(as)g(they)g(are)g(b)s(eing)0 2042 y(written)32 b(or)g(read)g(from)g
+(the)g(FITS)g(arra)m(y)-8 b(.)47 b(The)31 b(ftpscl)i(subroutine)e(MUST)
+g(b)s(e)h(called)h(to)g(de\014ne)e(the)i(scaling)0 2155
+y(parameters)h(when)e(writing)i(data)g(to)g(the)g(FITS)f(arra)m(y)h(or)
+f(to)h(o)m(v)m(erride)h(the)f(default)f(scaling)i(v)-5
+b(alue)34 b(giv)m(en)g(in)0 2267 y(the)d(header)f(when)f(reading)i(the)
+f(FITS)g(arra)m(y)-8 b(.)0 2428 y(Tw)m(o)41 b(sets)f(of)h(subroutines)e
+(are)i(pro)m(vided)f(to)h(read)g(the)f(data)i(arra)m(y)f(whic)m(h)f
+(di\013er)g(in)g(the)h(w)m(a)m(y)g(unde\014ned)0 2541
+y(pixels)35 b(are)h(handled.)55 b(The)35 b(\014rst)f(set)i(of)g
+(routines)f(\(FTGPVx\))h(simply)f(return)f(an)h(arra)m(y)h(of)g(data)g
+(elemen)m(ts)0 2653 y(in)c(whic)m(h)g(unde\014ned)e(pixels)i(are)h(set)
+f(equal)h(to)g(a)g(v)-5 b(alue)32 b(sp)s(eci\014ed)g(b)m(y)g(the)g
+(user)g(in)g(the)g('n)m(ullv)-5 b(al')33 b(parameter.)0
+2766 y(An)h(additional)i(feature)f(of)f(these)h(subroutines)f(is)g
+(that)i(if)e(the)h(user)f(sets)h(n)m(ullv)-5 b(al)35
+b(=)f(0,)i(then)f(no)f(c)m(hec)m(ks)i(for)0 2879 y(unde\014ned)d
+(pixels)j(will)g(b)s(e)e(p)s(erformed,)i(th)m(us)f(increasing)h(the)g
+(sp)s(eed)e(of)i(the)g(program.)55 b(The)35 b(second)h(set)g(of)0
+2992 y(routines)31 b(\(FTGPFx\))i(returns)d(the)i(data)g(elemen)m(t)h
+(arra)m(y)f(and,)f(in)h(addition,)g(a)g(logical)i(arra)m(y)e(whic)m(h)f
+(de\014nes)0 3105 y(whether)40 b(the)g(corresp)s(onding)f(data)i(pixel)
+g(is)f(unde\014ned.)69 b(The)39 b(latter)j(set)f(of)f(subroutines)f(ma)
+m(y)i(b)s(e)f(more)0 3218 y(con)m(v)m(enien)m(t)33 b(to)g(use)e(in)g
+(some)g(circumstances,)i(ho)m(w)m(ev)m(er,)g(it)f(requires)f(an)g
+(additional)h(arra)m(y)g(of)g(logical)i(v)-5 b(alues)0
+3331 y(whic)m(h)36 b(can)g(b)s(e)g(un)m(wieldy)f(when)h(w)m(orking)g
+(with)g(large)h(data)g(arra)m(ys.)58 b(Also)37 b(for)f(programmer)g
+(con)m(v)m(enience,)0 3444 y(sets)j(of)g(subroutines)f(to)h(directly)h
+(read)e(or)h(write)g(2)g(and)g(3)g(dimensional)g(arra)m(ys)g(ha)m(v)m
+(e)h(b)s(een)e(pro)m(vided,)j(as)0 3557 y(w)m(ell)31
+b(as)f(a)g(set)g(of)g(subroutines)e(to)i(read)g(or)g(write)f(an)m(y)h
+(con)m(tiguous)h(rectangular)g(subset)e(of)h(pixels)g(within)f(the)0
+3670 y(n-dimensional)h(arra)m(y)-8 b(.)0 3925 y Fh(1)81
+b Fi(Get)39 b(the)g(data)h(t)m(yp)s(e)e(of)h(the)g(image)h(\(=)f
+(BITPIX)f(v)-5 b(alue\).)67 b(P)m(ossible)39 b(returned)f(v)-5
+b(alues)39 b(are:)58 b(8,)41 b(16,)h(32,)227 4038 y(64,)36
+b(-32,)h(or)d(-64)h(corresp)s(onding)e(to)h(unsigned)f(b)m(yte,)j
+(signed)e(2-b)m(yte)h(in)m(teger,)i(signed)d(4-b)m(yte)h(in)m(teger,)
+227 4151 y(signed)c(8-b)m(yte)g(in)m(teger,)h(real,)g(and)d(double.)227
+4300 y(The)d(second)f(subroutine)g(is)h(similar)g(to)g(FTGIDT,)h
+(except)f(that)h(if)f(the)f(image)j(pixel)e(v)-5 b(alues)26
+b(are)g(scaled,)227 4413 y(with)h(non-default)g(v)-5
+b(alues)27 b(for)g(the)h(BZER)m(O)f(and)f(BSCALE)g(k)m(eyw)m(ords,)j
+(then)e(this)g(routine)g(will)g(return)227 4526 y(the)32
+b('equiv)-5 b(alen)m(t')33 b(data)e(t)m(yp)s(e)h(that)f(is)g(needed)g
+(to)h(store)g(the)f(scaled)h(v)-5 b(alues.)43 b(F)-8
+b(or)32 b(example,)g(if)f(BITPIX)227 4639 y(=)39 b(16)g(and)g(BSCALE)f
+(=)g(0.1)i(then)f(the)g(equiv)-5 b(alen)m(t)40 b(data)f(t)m(yp)s(e)g
+(is)g(\015oating)h(p)s(oin)m(t,)h(and)d(-32)i(will)g(b)s(e)227
+4752 y(returned.)65 b(There)39 b(are)g(2)g(sp)s(ecial)h(cases:)58
+b(if)39 b(the)g(image)h(con)m(tains)g(unsigned)e(2-b)m(yte)i(in)m
+(teger)g(v)-5 b(alues,)227 4865 y(with)40 b(BITPIX)g(=)f(16,)44
+b(BSCALE)39 b(=)h(1,)j(and)c(BZER)m(O)h(=)g(32768,)45
+b(then)39 b(this)h(routine)g(will)h(return)e(a)227 4978
+y(non-standard)26 b(v)-5 b(alue)27 b(of)g(20)h(for)f(the)g(bitpix)g(v)
+-5 b(alue.)40 b(Similarly)27 b(if)f(the)i(image)g(con)m(tains)g
+(unsigned)e(4-b)m(yte)227 5091 y(in)m(tegers,)32 b(then)e(bitpix)g
+(will)h(b)s(e)f(returned)f(with)h(a)h(v)-5 b(alue)31
+b(of)f(40.)382 5346 y Fe(FTGIDT\(unit,)44 b(>)k(bitpix,status\))382
+5459 y(FTGIET\(unit,)c(>)k(bitpix,status\))0 5714 y Fh(2)81
+b Fi(Get)31 b(the)g(dimension)e(\(n)m(um)m(b)s(er)h(of)g(axes)h(=)f
+(NAXIS\))h(of)f(the)h(image)p eop end
+%%Page: 53 59
+TeXDict begin 53 58 bop 0 299 a Fg(6.6.)72 b(FITS)30
+b(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)e(I/O)i
+(SUBR)m(OUTINES)589 b Fi(53)382 555 y Fe(FTGIDM\(unit,)44
+b(>)k(naxis,status\))0 807 y Fh(3)81 b Fi(Get)38 b(the)f(size)h(of)f
+(all)h(the)f(dimensions)g(of)g(the)g(image.)62 b(The)37
+b(FTGISZLL)e(routine)i(returns)f(an)h(arra)m(y)h(of)227
+920 y(64-bit)32 b(in)m(tegers)g(instead)e(of)h(32-bit)g(in)m(tegers.)
+382 1172 y Fe(FTGISZ\(unit,)44 b(maxdim,)i(>)i(naxes,status\))382
+1285 y(FTGISZLL\(unit,)c(maxdim,)i(>)h(naxesll,status\))0
+1537 y Fh(4)81 b Fi(Get)35 b(the)f(parameters)g(that)h(de\014ne)e(the)h
+(t)m(yp)s(e)g(and)g(size)g(of)h(the)f(image.)53 b(This)33
+b(routine)h(simply)f(com)m(bines)227 1649 y(calls)40
+b(to)f(the)g(ab)s(o)m(v)m(e)h(3)f(routines.)65 b(The)38
+b(FTGIPRLL)g(routine)h(returns)e(an)i(arra)m(y)g(of)g(64-bit)h(in)m
+(tegers)227 1762 y(instead)31 b(of)f(32-bit)i(in)m(tegers.)382
+2014 y Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,)d(naxis,)h(naxes,)h
+(int)f(*status\))382 2127 y(FTGIPRLL\(unit,)e(maxdim,)i(>)h(bitpix,)f
+(naxis,)g(naxesll,)f(int)i(*status\))0 2379 y Fh(5)81
+b Fi(Put)30 b(elemen)m(ts)h(in)m(to)h(the)e(data)h(arra)m(y)382
+2631 y Fe(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o
+(valu)o(es,)41 b(>)48 b(status\))0 2883 y Fh(6)81 b Fi(Put)30
+b(elemen)m(ts)i(in)m(to)f(the)g(data)g(arra)m(y)-8 b(,)32
+b(substituting)e(the)g(appropriate)h(FITS)f(n)m(ull)g(v)-5
+b(alue)31 b(for)f(all)i(elemen)m(ts)227 2996 y(whic)m(h)c(are)f(equal)i
+(to)f(the)f(v)-5 b(alue)28 b(of)g(NULL)-10 b(V)g(AL.)28
+b(F)-8 b(or)28 b(in)m(teger)h(FITS)e(arra)m(ys,)i(the)e(n)m(ull)h(v)-5
+b(alue)28 b(de\014ned)e(b)m(y)227 3109 y(the)k(previous)f(call)i(to)g
+(FTPNUL)e(will)h(b)s(e)f(substituted;)h(for)f(\015oating)i(p)s(oin)m(t)
+f(FITS)f(arra)m(ys)h(\(BITPIX)f(=)227 3221 y(-32)j(or)e(-64\))i(then)e
+(the)h(sp)s(ecial)g(IEEE)e(NaN)i(\(Not-a-Num)m(b)s(er\))h(v)-5
+b(alue)31 b(will)g(b)s(e)f(substituted.)382 3473 y Fe
+(FTPPN[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o
+(es,)o(null)o(val)41 b(>)48 b(status\))0 3725 y Fh(7)81
+b Fi(Set)30 b(data)h(arra)m(y)g(elemen)m(ts)h(as)e(unde\014ned)382
+3977 y Fe(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o(nts,)41
+b(>)47 b(status\))0 4229 y Fh(8)81 b Fi(Get)36 b(elemen)m(ts)g(from)f
+(the)g(data)h(arra)m(y)-8 b(.)55 b(Unde\014ned)34 b(arra)m(y)h(elemen)m
+(ts)i(will)e(b)s(e)g(returned)f(with)g(a)i(v)-5 b(alue)35
+b(=)227 4342 y(n)m(ullv)-5 b(al,)31 b(unless)f(n)m(ullv)-5
+b(al)31 b(=)f(0)h(in)f(whic)m(h)g(case)h(no)g(c)m(hec)m(ks)g(for)g
+(unde\014ned)d(pixels)i(will)h(b)s(e)f(p)s(erformed.)382
+4594 y Fe(FTGPV[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o
+(null)o(val)o(,)42 b(>)47 b(values,anyf,status\))0 4845
+y Fh(9)81 b Fi(Get)32 b(elemen)m(ts)g(and)f(n)m(ull\015ags)g(from)g
+(data)h(arra)m(y)-8 b(.)44 b(An)m(y)32 b(unde\014ned)d(arra)m(y)i
+(elemen)m(ts)i(will)e(ha)m(v)m(e)i(the)e(corre-)227 4958
+y(sp)s(onding)e(\015agv)-5 b(als)31 b(elemen)m(t)h(set)f(equal)g(to)g
+(.TR)m(UE.)382 5210 y Fe(FTGPF[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)
+o(eme)o(nts,)41 b(>)48 b(values,flagvals,anyf,st)o(atu)o(s\))0
+5462 y Fh(10)e Fi(Put)30 b(v)-5 b(alues)31 b(in)m(to)g(group)f
+(parameters)382 5714 y Fe(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o
+(npar)o(m,v)o(alue)o(s,)42 b(>)47 b(status\))p eop end
+%%Page: 54 60
+TeXDict begin 54 59 bop 0 299 a Fi(54)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fh(11)46 b Fi(Get)31 b(v)-5
+b(alues)31 b(from)f(group)g(parameters)382 809 y Fe
+(FTGGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,)41
+b(>)48 b(values,status\))0 1062 y Fi(The)32 b(follo)m(wing)h(4)g
+(subroutines)e(transfer)g(FITS)h(images)h(with)f(2)g(or)g(3)h
+(dimensions)e(to)i(or)f(from)g(a)h(data)f(arra)m(y)0
+1175 y(whic)m(h)h(has)g(b)s(een)g(declared)g(in)g(the)h(calling)h
+(program.)49 b(The)33 b(dimensionalit)m(y)h(of)g(the)f(FITS)g(image)h
+(is)f(passed)0 1288 y(b)m(y)26 b(the)g(naxis1,)h(naxis2,)h(and)d
+(naxis3)i(parameters)f(and)f(the)h(declared)h(dimensions)e(of)h(the)g
+(program)g(arra)m(y)h(are)0 1401 y(passed)k(in)f(the)i(dim1)e(and)h
+(dim2)g(parameters.)43 b(Note)32 b(that)g(the)f(program)g(arra)m(y)g
+(do)s(es)g(not)g(ha)m(v)m(e)i(to)e(ha)m(v)m(e)i(the)0
+1514 y(same)28 b(dimensions)f(as)h(the)g(FITS)e(arra)m(y)-8
+b(,)30 b(but)d(m)m(ust)g(b)s(e)g(at)i(least)f(as)g(big.)40
+b(F)-8 b(or)29 b(example)f(if)f(a)h(FITS)f(image)i(with)0
+1627 y(NAXIS1)i(=)f(NAXIS2)h(=)f(400)i(is)e(read)h(in)m(to)g(a)g
+(program)f(arra)m(y)h(whic)m(h)f(is)h(dimensioned)f(as)g(512)i(x)f(512)
+g(pixels,)0 1739 y(then)d(the)g(image)i(will)e(just)g(\014ll)g(the)h
+(lo)m(w)m(er)g(left)g(corner)f(of)h(the)f(arra)m(y)h(with)f(pixels)g
+(in)g(the)h(range)f(1)h(-)f(400)i(in)e(the)0 1852 y(X)k(an)g(Y)h
+(directions.)47 b(This)31 b(has)h(the)h(e\013ect)g(of)g(taking)g(a)g
+(con)m(tiguous)g(set)g(of)f(pixel)h(v)-5 b(alue)33 b(in)e(the)i(FITS)e
+(arra)m(y)0 1965 y(and)k(writing)g(them)g(to)h(a)g(non-con)m(tiguous)g
+(arra)m(y)f(in)g(program)g(memory)g(\(i.e.,)j(there)e(are)f(no)m(w)h
+(some)f(blank)0 2078 y(pixels)c(around)e(the)h(edge)i(of)e(the)h(image)
+g(in)f(the)h(program)f(arra)m(y\).)0 2332 y Fh(11)46
+b Fi(Put)30 b(2-D)i(image)f(in)m(to)h(the)e(data)h(arra)m(y)382
+2585 y Fe(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o
+(2,im)o(age)o(,)42 b(>)47 b(status\))0 2838 y Fh(12)f
+Fi(Put)30 b(3-D)i(cub)s(e)d(in)m(to)j(the)e(data)h(arra)m(y)382
+3092 y Fe(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o
+(naxi)o(s2,)o(naxi)o(s3,c)o(ube)o(,)42 b(>)47 b(status\))0
+3345 y Fh(13)f Fi(Get)29 b(2-D)f(image)h(from)f(the)f(data)i(arra)m(y)
+-8 b(.)41 b(Unde\014ned)26 b(pixels)h(in)h(the)g(arra)m(y)g(will)g(b)s
+(e)f(set)h(equal)g(to)h(the)e(v)-5 b(alue)227 3458 y(of)31
+b('n)m(ullv)-5 b(al',)31 b(unless)f(n)m(ullv)-5 b(al=0)31
+b(in)f(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)e(pixels)i
+(will)h(b)s(e)f(p)s(erformed.)382 3712 y Fe(FTG2D[BIJKED]\(unit,group)o
+(,nu)o(llva)o(l,di)o(m1,)o(naxi)o(s1,n)o(axi)o(s2,)41
+b(>)48 b(image,anyf,status\))0 3965 y Fh(14)e Fi(Get)31
+b(3-D)h(cub)s(e)e(from)g(the)g(data)h(arra)m(y)-8 b(.)42
+b(Unde\014ned)29 b(pixels)i(in)f(the)g(arra)m(y)h(will)g(b)s(e)f(set)h
+(equal)g(to)g(the)f(v)-5 b(alue)227 4078 y(of)31 b('n)m(ullv)-5
+b(al',)31 b(unless)f(n)m(ullv)-5 b(al=0)31 b(in)f(whic)m(h)g(case)i(no)
+e(testing)i(for)e(unde\014ned)e(pixels)i(will)h(b)s(e)f(p)s(erformed.)
+382 4331 y Fe(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o
+(dim2)o(,nax)o(is1)o(,nax)o(is2,)o(nax)o(is3,)41 b(>)1002
+4444 y(cube,anyf,status\))0 4698 y Fi(The)i(follo)m(wing)h(subroutines)
+e(transfer)h(a)h(rectangular)g(subset)e(of)i(the)f(pixels)g(in)g(a)h
+(FITS)e(N-dimensional)0 4811 y(image)31 b(to)g(or)f(from)f(an)h(arra)m
+(y)g(whic)m(h)g(has)g(b)s(een)f(declared)h(in)g(the)g(calling)i
+(program.)40 b(The)29 b(fpixels)h(and)f(lpixels)0 4924
+y(parameters)e(are)h(in)m(teger)g(arra)m(ys)g(whic)m(h)f(sp)s(ecify)f
+(the)i(starting)g(and)e(ending)h(pixels)g(in)g(eac)m(h)h(dimension)e
+(of)i(the)0 5036 y(FITS)36 b(image)i(that)f(are)g(to)h(b)s(e)e(read)g
+(or)h(written.)60 b(\(Note)38 b(that)g(these)f(are)g(the)g(starting)g
+(and)f(ending)h(pixels)0 5149 y(in)d(the)h(FITS)f(image,)k(not)d(in)f
+(the)h(declared)g(arra)m(y\).)55 b(The)34 b(arra)m(y)i(parameter)f(is)g
+(treated)g(simply)g(as)g(a)g(large)0 5262 y(one-dimensional)c(arra)m(y)
+f(of)h(the)f(appropriate)g(datat)m(yp)s(e)h(con)m(taining)h(the)e
+(pixel)g(v)-5 b(alues;)31 b(The)e(pixel)i(v)-5 b(alues)30
+b(in)0 5375 y(the)c(FITS)f(arra)m(y)i(are)f(read/written)g(from/to)h
+(this)f(program)f(arra)m(y)i(in)e(strict)i(sequence)f(without)g(an)m(y)
+h(gaps;)g(it)0 5488 y(is)i(up)e(to)j(the)f(calling)h(routine)f(to)g
+(correctly)h(in)m(terpret)f(the)g(dimensionalit)m(y)h(of)f(this)g(arra)
+m(y)-8 b(.)41 b(The)28 b(t)m(w)m(o)i(families)0 5601
+y(of)d(FITS)g(reading)g(routines)g(\(FTGSVx)g(and)g(FTGSFx)g
+(subroutines\))f(also)j(ha)m(v)m(e)f(an)f('incs')h(parameter)f(whic)m
+(h)0 5714 y(de\014nes)j(the)h(data)h(sampling)e(in)m(terv)-5
+b(al)32 b(in)f(eac)m(h)h(dimension)e(of)h(the)g(FITS)f(arra)m(y)-8
+b(.)43 b(F)-8 b(or)32 b(example,)g(if)f(incs\(1\)=2)p
+eop end
+%%Page: 55 61
+TeXDict begin 55 60 bop 0 299 a Fg(6.7.)72 b(FITS)30
+b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8
+b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(55)0 555 y(and)33
+b(incs\(2\)=3)h(when)f(reading)g(a)h(2-dimensional)g(FITS)f(image,)i
+(then)e(only)h(ev)m(ery)g(other)f(pixel)h(in)f(the)h(\014rst)0
+668 y(dimension)e(and)h(ev)m(ery)h(3rd)e(pixel)i(in)f(the)g(second)g
+(dimension)f(will)i(b)s(e)e(returned)g(in)h(the)g('arra)m(y')h
+(parameter.)0 781 y([Note:)39 b(the)25 b(FTGSSx)f(family)i(of)e
+(routines)h(whic)m(h)g(w)m(ere)g(presen)m(t)g(in)f(previous)g(v)m
+(ersions)h(of)g(FITSIO)f(ha)m(v)m(e)i(b)s(een)0 894 y(sup)s(erseded)i
+(b)m(y)j(the)f(more)h(general)g(FTGSVx)f(family)h(of)g(routines.])0
+1152 y Fh(15)46 b Fi(Put)30 b(an)g(arbitrary)g(data)h(subsection)g(in)m
+(to)g(the)g(data)g(arra)m(y)-8 b(.)382 1411 y Fe
+(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o
+(pix)o(els,)o(arra)o(y,)41 b(>)48 b(status\))0 1669 y
+Fh(16)e Fi(Get)30 b(an)e(arbitrary)g(data)i(subsection)e(from)g(the)h
+(data)g(arra)m(y)-8 b(.)42 b(Unde\014ned)27 b(pixels)h(in)h(the)f(arra)
+m(y)i(will)e(b)s(e)g(set)227 1782 y(equal)k(to)h(the)e(v)-5
+b(alue)33 b(of)e('n)m(ullv)-5 b(al',)33 b(unless)e(n)m(ullv)-5
+b(al=0)33 b(in)e(whic)m(h)g(case)i(no)e(testing)i(for)e(unde\014ned)f
+(pixels)227 1895 y(will)h(b)s(e)f(p)s(erformed.)382 2154
+y Fe(FTGSV[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)
+o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)42 b(>)1002 2266
+y(array,anyf,status\))0 2525 y Fh(17)k Fi(Get)34 b(an)f(arbitrary)g
+(data)g(subsection)g(from)g(the)g(data)g(arra)m(y)-8
+b(.)50 b(An)m(y)33 b(Unde\014ned)e(pixels)i(in)g(the)g(arra)m(y)h(will)
+227 2638 y(ha)m(v)m(e)e(the)e(corresp)s(onding)g('\015agv)-5
+b(als')31 b(elemen)m(t)h(set)f(equal)g(to)g(.TR)m(UE.)382
+2896 y Fe(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o
+(ls,l)o(pix)o(els,)o(incs)o(,)42 b(>)1002 3009 y
+(array,flagvals,anyf,statu)o(s\))0 3343 y Fd(6.7)135
+b(FITS)44 b(ASCI)t(I)g(and)h(Binary)g(T)-11 b(able)45
+b(Data)h(I/O)f(Subroutines)0 3596 y Fb(6.7.1)112 b(Column)39
+b(Information)f(Subroutines)0 3805 y Fh(1)81 b Fi(Get)37
+b(the)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(or)g(columns)g(in)g(the)h
+(curren)m(t)f(FITS)g(table.)59 b(The)36 b(n)m(um)m(b)s(er)f(of)h(ro)m
+(ws)h(is)f(giv)m(en)227 3918 y(b)m(y)f(the)h(NAXIS2)f(k)m(eyw)m(ord)h
+(and)f(the)g(n)m(um)m(b)s(er)f(of)h(columns)g(is)g(giv)m(en)h(b)m(y)g
+(the)f(TFIELDS)g(k)m(eyw)m(ord)g(in)227 4031 y(the)d(header)f(of)h(the)
+g(table.)45 b(The)31 b(FTGNR)-10 b(WLL)32 b(routine)g(is)f(iden)m
+(tical)i(to)g(FTGNR)-10 b(W)32 b(except)h(that)f(the)227
+4144 y(n)m(um)m(b)s(er)d(of)i(ro)m(ws)f(is)h(returned)e(as)h(a)h
+(64-bit)h(in)m(teger)g(rather)e(than)g(a)h(32-bit)g(in)m(teger.)382
+4402 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))382
+4515 y(FTGNRWLL\(unit,)e(>)j(nrowsll,)f(status\))382
+4628 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))0 4886 y
+Fh(2)81 b Fi(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f(\(and)h
+(name\))h(of)f(the)h(column)f(whose)g(name)g(matc)m(hes)i(an)e(input)g
+(template)227 4999 y(name.)38 b(The)21 b(table)i(column)e(names)h(are)g
+(de\014ned)e(b)m(y)i(the)g(TTYPEn)e(k)m(eyw)m(ords)i(in)f(the)h(FITS)f
+(header.)37 b(If)22 b(a)227 5112 y(column)i(do)s(es)g(not)g(ha)m(v)m(e)
+h(a)f(TTYPEn)f(k)m(eyw)m(ord,)j(then)d(these)h(routines)g(assume)g
+(that)g(the)h(name)e(consists)227 5225 y(of)i(all)h(blank)f(c)m
+(haracters.)40 b(These)25 b(2)g(subroutines)e(p)s(erform)h(the)h(same)g
+(function)g(except)h(that)f(FTGCNO)227 5338 y(only)j(returns)e(the)h(n)
+m(um)m(b)s(er)f(of)h(the)g(matc)m(hing)i(column)e(whereas)g(FTGCNN)g
+(also)h(returns)e(the)i(name)f(of)227 5451 y(the)k(column.)40
+b(If)30 b(CASESEN)f(=)h(.true.)41 b(then)30 b(the)h(column)f(name)g
+(matc)m(h)i(will)e(b)s(e)g(case-sensitiv)m(e.)227 5601
+y(The)41 b(input)e(column)i(name)g(template)h(\(COL)-8
+b(TEMPLA)g(TE\))41 b(is)g(\(1\))g(either)h(the)f(exact)h(name)f(of)g
+(the)227 5714 y(column)36 b(to)i(b)s(e)d(searc)m(hed)i(for,)h(or)e
+(\(2\))i(it)f(ma)m(y)g(con)m(tain)g(wild)f(cards)g(c)m(haracters)i
+(\(*,)h(?,)f(or)e(#\),)i(or)f(\(3\))p eop end
+%%Page: 56 62
+TeXDict begin 56 61 bop 0 299 a Fi(56)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)227 555 y Fi(it)k(ma)m(y)g(con)m(tain)g(the)f(n)m(um)m
+(b)s(er)f(of)h(the)g(desired)g(column)g(\(where)g(the)g(n)m(um)m(b)s
+(er)f(is)h(expressed)f(as)h(ASCI)s(I)227 668 y(digits\).)41
+b(The)28 b(\014rst)g(2)h(wild)f(cards)g(b)s(eha)m(v)m(e)h(similarly)g
+(to)g(UNIX)g(\014lename)g(matc)m(hing:)40 b(the)29 b('*')g(c)m
+(haracter)227 781 y(matc)m(hes)e(an)m(y)g(sequence)f(of)h(c)m
+(haracters)g(\(including)f(zero)h(c)m(haracters\))h(and)d(the)i(')10
+b(?')39 b(c)m(haracter)28 b(matc)m(hes)227 894 y(an)m(y)40
+b(single)h(c)m(haracter.)71 b(The)39 b(#)h(wildcard)f(will)h(matc)m(h)h
+(an)m(y)f(consecutiv)m(e)i(string)e(of)g(decimal)g(digits)227
+1007 y(\(0-9\).)45 b(As)31 b(an)g(example,)h(the)f(template)h(strings)f
+('AB?DE',)h('AB*E',)h(and)d('AB*CDE')j(will)e(all)h(matc)m(h)227
+1120 y(the)26 b(string)g('ABCDE'.)i(If)d(more)h(than)g(one)g(column)g
+(name)g(in)g(the)g(table)h(matc)m(hes)g(the)f(template)i(string,)227
+1233 y(then)33 b(the)h(\014rst)f(matc)m(h)h(is)f(returned)g(and)f(the)i
+(status)g(v)-5 b(alue)34 b(will)f(b)s(e)g(set)h(to)g(237)h(as)f(a)f(w)m
+(arning)h(that)g(a)227 1346 y(unique)g(matc)m(h)i(w)m(as)f(not)g
+(found.)53 b(T)-8 b(o)35 b(\014nd)f(the)h(other)g(cases)g(that)h(matc)m
+(h)g(the)f(template,)i(simply)e(call)227 1458 y(the)27
+b(subroutine)f(again)i(lea)m(ving)h(the)e(input)f(status)h(v)-5
+b(alue)28 b(equal)f(to)h(237)g(and)f(the)g(next)g(matc)m(hing)h(name)
+227 1571 y(will)k(then)g(b)s(e)f(returned.)43 b(Rep)s(eat)32
+b(this)g(pro)s(cess)f(un)m(til)h(a)g(status)g(=)g(219)h(\(column)e
+(name)h(not)g(found\))f(is)227 1684 y(returned.)40 b(If)30
+b(these)h(subroutines)e(fail)i(to)g(matc)m(h)g(the)g(template)h(to)f
+(an)m(y)g(of)f(the)h(columns)f(in)g(the)h(table,)227
+1797 y(they)i(lastly)g(c)m(hec)m(k)h(if)f(the)f(template)i(can)f(b)s(e)
+e(in)m(terpreted)i(as)g(a)g(simple)f(p)s(ositiv)m(e)h(in)m(teger)h
+(\(e.g.,)h('7',)f(or)227 1910 y('512'\))i(and)d(if)g(so,)i(they)f
+(return)e(that)j(column)e(n)m(um)m(b)s(er.)49 b(If)33
+b(no)g(matc)m(hes)i(are)f(found)e(then)h(a)h(status)g(=)227
+2023 y(219)e(error)e(is)g(returned.)227 2187 y(Note)h(that)e(the)h
+(FITS)e(Standard)g(recommends)g(that)i(only)f(letters,)i(digits,)f(and)
+f(the)g(underscore)f(c)m(har-)227 2300 y(acter)44 b(b)s(e)e(used)g(in)h
+(column)f(names)h(\(with)g(no)f(em)m(b)s(edded)g(spaces)h(in)g(the)g
+(name\).)78 b(T)-8 b(railing)43 b(blank)227 2412 y(c)m(haracters)32
+b(are)f(not)f(signi\014can)m(t.)382 2699 y Fe
+(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)42 b(>)47
+b(colnum,status\))382 2812 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o
+(,)42 b(>)47 b(colname,colnum,status\))0 3098 y Fh(3)81
+b Fi(Get)39 b(the)g(datat)m(yp)s(e)h(of)e(a)h(column)g(in)f(an)g(ASCI)s
+(I)g(or)g(binary)g(table.)66 b(This)38 b(routine)h(returns)e(an)i(in)m
+(teger)227 3211 y(co)s(de)34 b(v)-5 b(alue)33 b(corresp)s(onding)f(to)i
+(the)g(datat)m(yp)s(e)g(of)f(the)g(column.)49 b(\(See)34
+b(the)f(FTBNFM)i(and)d(FT)-8 b(ASFM)227 3324 y(subroutines)27
+b(in)h(the)g(Utilities)j(section)e(of)f(this)g(do)s(cumen)m(t)g(for)g
+(a)h(list)g(of)f(the)h(co)s(de)f(v)-5 b(alues\).)41 b(The)27
+b(v)m(ector)227 3437 y(rep)s(eat)38 b(coun)m(t)g(\(whic)m(h)g(is)g(alw)
+m(a)m(y)h(1)f(for)g(ASCI)s(I)e(table)i(columns\))g(is)g(also)g
+(returned.)62 b(If)37 b(the)h(sp)s(eci\014ed)227 3550
+y(column)32 b(has)f(an)g(ASCI)s(I)f(c)m(haracter)j(datat)m(yp)s(e)g
+(\(co)s(de)f(=)f(16\))i(then)e(the)h(width)e(of)i(a)g(unit)f(string)h
+(in)f(the)227 3663 y(column)i(is)g(also)h(returned.)48
+b(Note)34 b(that)g(this)e(routine)h(supp)s(orts)f(the)h(lo)s(cal)h(con)
+m(v)m(en)m(tion)h(for)e(sp)s(ecifying)227 3776 y(arra)m(ys)f(of)f
+(strings)g(within)f(a)i(binary)e(table)i(c)m(haracter)g(column,)g
+(using)e(the)h(syn)m(tax)h(TF)m(ORM)f(=)g('rAw')227 3889
+y(where)f('r')g(is)h(the)f(total)i(n)m(um)m(b)s(er)d(of)i(c)m
+(haracters)g(\(=)g(the)f(width)g(of)g(the)g(column\))h(and)f('w')g(is)g
+(the)h(width)227 4002 y(of)39 b(a)f(unit)g(string)g(within)g(the)g
+(column.)64 b(Th)m(us)37 b(if)h(the)g(column)g(has)g(TF)m(ORM)h(=)f
+('60A12')i(then)e(this)227 4114 y(routine)29 b(will)g(return)f(dataco)s
+(de)i(=)e(16,)i(rep)s(eat)f(=)f(60,)j(and)d(width)g(=)g(12.)41
+b(\(The)29 b(TDIMn)f(k)m(eyw)m(ord)h(ma)m(y)227 4227
+y(also)35 b(b)s(e)e(used)g(to)h(sp)s(ecify)f(the)h(unit)f(string)h
+(length;)i(The)d(pair)g(of)h(k)m(eyw)m(ords)g(TF)m(ORMn)f(=)g('60A')j
+(and)227 4340 y(TDIMn)30 b(=)g('\(12,5\)')j(w)m(ould)e(ha)m(v)m(e)g
+(the)g(same)g(e\013ect)g(as)g(TF)m(ORMn)f(=)g('60A12'\).)227
+4504 y(The)h(second)h(routine,)g(FTEQTY)f(is)g(similar)h(except)h(that)
+f(in)f(the)h(case)g(of)g(scaled)g(in)m(teger)h(columns)e(it)227
+4617 y(returns)23 b(the)h('equiv)-5 b(alen)m(t')25 b(data)f(t)m(yp)s(e)
+g(that)h(is)e(needed)h(to)g(store)g(the)g(scaled)g(v)-5
+b(alues,)26 b(and)d(not)h(necessarily)227 4730 y(the)38
+b(ph)m(ysical)h(data)f(t)m(yp)s(e)g(of)g(the)g(unscaled)g(v)-5
+b(alues)38 b(as)g(stored)g(in)g(the)g(FITS)f(table.)64
+b(F)-8 b(or)38 b(example)h(if)227 4843 y(a)c('1I')g(column)f(in)g(a)g
+(binary)g(table)h(has)f(TSCALn)f(=)g(1)i(and)f(TZER)m(On)f(=)g(32768,)
+38 b(then)c(this)g(column)227 4956 y(e\013ectiv)m(ely)27
+b(con)m(tains)e(unsigned)e(short)g(in)m(teger)j(v)-5
+b(alues,)25 b(and)f(th)m(us)f(the)h(returned)f(v)-5 b(alue)24
+b(of)g(t)m(yp)s(eco)s(de)h(will)227 5068 y(b)s(e)32 b(the)h(co)s(de)g
+(for)g(an)f(unsigned)g(short)g(in)m(teger,)j(not)e(a)g(signed)g(short)f
+(in)m(teger.)49 b(Similarly)-8 b(,)34 b(if)f(a)g(column)227
+5181 y(has)d(TTYPEn)g(=)g('1I')h(and)f(TSCALn)e(=)i(0.12,)j(then)d(the)
+g(returned)g(t)m(yp)s(eco)s(de)g(will)h(b)s(e)f(the)h(co)s(de)f(for)h
+(a)227 5294 y('real')h(column.)382 5581 y Fe(FTGTCL\(unit,colnum,)42
+b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382 5694
+y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)o
+(s\))p eop end
+%%Page: 57 63
+TeXDict begin 57 62 bop 0 299 a Fg(6.7.)72 b(FITS)30
+b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8
+b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(57)0 555 y
+Fh(4)81 b Fi(Return)22 b(the)i(displa)m(y)g(width)f(of)g(a)h(column.)39
+b(This)22 b(is)i(the)g(length)g(of)f(the)h(string)g(that)g(will)g(b)s
+(e)f(returned)f(when)227 668 y(reading)33 b(the)g(column)g(as)g(a)g
+(formatted)g(string.)48 b(The)32 b(displa)m(y)h(width)f(is)h
+(determined)g(b)m(y)f(the)h(TDISPn)227 781 y(k)m(eyw)m(ord,)e(if)g
+(presen)m(t,)f(otherwise)h(b)m(y)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h
+(column.)382 1012 y Fe(FTGCDW\(unit,)44 b(colnum,)i(>)i(dispwidth,)d
+(status\))0 1243 y Fh(5)81 b Fi(Get)29 b(information)f(ab)s(out)g(an)g
+(existing)h(ASCI)s(I)e(table)i(column.)40 b(\(NOTE:)28
+b(TSCAL)f(and)g(TZER)m(O)h(m)m(ust)g(b)s(e)227 1356 y(declared)j(as)g
+(Double)g(Precision)g(v)-5 b(ariables\).)41 b(All)31
+b(the)g(returned)e(parameters)i(are)f(scalar)i(quan)m(tities.)382
+1586 y Fe(FTGACL\(unit,colnum,)42 b(>)716 1699 y
+(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o(ll,)o(tdis)o
+(p,st)o(atu)o(s\))0 1930 y Fh(6)81 b Fi(Get)29 b(information)f(ab)s
+(out)f(an)h(existing)h(binary)e(table)i(column.)40 b(\(NOTE:)28
+b(TSCAL)e(and)i(TZER)m(O)f(m)m(ust)h(b)s(e)227 2043 y(declared)j(as)f
+(Double)g(Precision)h(v)-5 b(ariables\).)41 b(D)m(A)-8
+b(T)g(A)g(TYPE)32 b(is)e(a)g(c)m(haracter)i(string)d(whic)m(h)h
+(returns)f(the)227 2156 y(datat)m(yp)s(e)35 b(of)g(the)f(column)g(as)g
+(de\014ned)f(b)m(y)h(the)g(TF)m(ORMn)g(k)m(eyw)m(ord)h(\(e.g.,)i('I',)e
+('J','E',)g('D',)g(etc.\).)54 b(In)227 2269 y(the)27
+b(case)g(of)g(an)f(ASCI)s(I)f(c)m(haracter)j(column,)f(D)m(A)-8
+b(T)g(A)g(TYPE)29 b(will)d(ha)m(v)m(e)i(a)f(v)-5 b(alue)27
+b(of)f(the)h(form)f('An')g(where)227 2382 y('n')34 b(is)g(an)g(in)m
+(teger)i(expressing)e(the)g(width)f(of)h(the)h(\014eld)e(in)h(c)m
+(haracters.)53 b(F)-8 b(or)35 b(example,)h(if)e(TF)m(ORM)g(=)227
+2495 y('160A8')39 b(then)e(FTGBCL)f(will)h(return)f(D)m(A)-8
+b(T)g(A)g(TYPE='A8')39 b(and)d(REPEA)-8 b(T=20.)60 b(All)37
+b(the)g(returned)227 2608 y(parameters)31 b(are)g(scalar)g(quan)m
+(tities.)382 2838 y Fe(FTGBCL\(unit,colnum,)42 b(>)716
+2951 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o
+(ull,)o(tdis)o(p,s)o(tatu)o(s\))0 3182 y Fh(7)81 b Fi(Put)31
+b(\(app)s(end\))g(a)i(TDIMn)f(k)m(eyw)m(ord)g(whose)g(v)-5
+b(alue)33 b(has)f(the)g(form)g('\(l,m,n...\)')47 b(where)32
+b(l,)h(m,)f(n...)46 b(are)33 b(the)227 3295 y(dimensions)d(of)g(a)h(m)m
+(ultidimensional)g(arra)m(y)g(column)f(in)g(a)h(binary)f(table.)382
+3526 y Fe(FTPTDM\(unit,colnum,naxis)o(,na)o(xes,)41 b(>)48
+b(status\))0 3757 y Fh(8)81 b Fi(Return)29 b(the)h(n)m(um)m(b)s(er)e
+(of)i(and)g(size)g(of)g(the)g(dimensions)g(of)g(a)g(table)h(column.)40
+b(Normally)31 b(this)f(information)227 3870 y(is)h(giv)m(en)h(b)m(y)f
+(the)g(TDIMn)f(k)m(eyw)m(ord,)i(but)e(if)h(this)g(k)m(eyw)m(ord)g(is)g
+(not)g(presen)m(t)g(then)g(this)f(routine)h(returns)227
+3983 y(NAXIS)f(=)g(1)h(and)f(NAXES\(1\))h(equal)g(to)g(the)g(rep)s(eat)
+g(coun)m(t)g(in)f(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)382
+4213 y Fe(FTGTDM\(unit,colnum,maxdi)o(m,)41 b(>)48 b
+(naxis,naxes,status\))0 4444 y Fh(9)81 b Fi(Deco)s(de)33
+b(the)g(input)f(TDIMn)h(k)m(eyw)m(ord)g(string)f(\(e.g.)50
+b('\(100,200\)'\))37 b(and)32 b(return)g(the)h(n)m(um)m(b)s(er)e(of)i
+(and)f(size)227 4557 y(of)c(the)g(dimensions)f(of)h(a)g(binary)f(table)
+h(column.)40 b(If)27 b(the)h(input)f(tdimstr)g(c)m(haracter)i(string)f
+(is)g(n)m(ull,)g(then)227 4670 y(this)d(routine)f(returns)f(naxis)h(=)h
+(1)f(and)g(naxes[0])i(equal)e(to)i(the)e(rep)s(eat)h(coun)m(t)g(in)f
+(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)227 4783 y(This)30 b(routine)g(is)h
+(called)g(b)m(y)f(FTGTDM.)382 5014 y Fe(FTDTDM\(unit,tdimstr,coln)o
+(um,)o(maxd)o(im,)41 b(>)48 b(naxis,naxes,)c(status\))0
+5245 y Fh(10)i Fi(Return)32 b(the)h(optimal)h(n)m(um)m(b)s(er)e(of)h
+(ro)m(ws)g(to)h(read)f(or)g(write)g(at)h(one)f(time)h(for)e(maxim)m(um)
+h(I/O)g(e\016ciency)-8 b(.)227 5358 y(Refer)31 b(to)g(the)g
+(\\Optimizing)g(Co)s(de")f(section)i(in)e(Chapter)g(5)g(for)h(more)f
+(discussion)g(on)g(ho)m(w)h(to)g(use)f(this)227 5470
+y(routine.)382 5701 y Fe(FFGRSZ\(unit,)44 b(>)k(nrows,status\))p
+eop end
+%%Page: 58 64
+TeXDict begin 58 63 bop 0 299 a Fi(58)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fb(6.7.2)112 b(Lo)m(w-Lev)m(el)39
+b(T)-9 b(able)38 b(Access)f(Subroutines)0 774 y Fi(The)d(follo)m(wing)h
+(subroutines)e(pro)m(vide)i(lo)m(w-lev)m(el)i(access)e(to)g(the)g(data)
+g(in)f(ASCI)s(I)e(or)i(binary)g(tables)h(and)f(are)0
+887 y(mainly)29 b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m(a)m(y)g(to)g
+(cop)m(y)g(all)g(or)f(part)g(of)g(a)g(table)h(from)f(one)g(lo)s(cation)
+i(to)f(another.)40 b(These)0 1000 y(routines)24 b(simply)g(read)g(or)h
+(write)f(the)h(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g(of)i(consecutiv)m(e)h
+(b)m(ytes)f(in)f(an)g(ASCI)s(I)f(or)h(binary)g(table,)0
+1113 y(without)37 b(regard)g(for)f(column)h(b)s(oundaries)e(or)i(the)g
+(ro)m(w)g(length)h(in)e(the)h(table.)61 b(The)37 b(\014rst)f(t)m(w)m(o)
+i(subroutines)0 1226 y(read)29 b(or)h(write)g(consecutiv)m(e)h(b)m
+(ytes)f(in)f(a)h(table)g(to)h(or)e(from)g(a)h(c)m(haracter)h(string)e
+(v)-5 b(ariable,)31 b(while)f(the)f(last)i(t)m(w)m(o)0
+1339 y(subroutines)f(read)i(or)g(write)g(consecutiv)m(e)h(b)m(ytes)g
+(to)f(or)g(from)f(a)h(v)-5 b(ariable)33 b(declared)f(as)g(a)g(n)m
+(umeric)f(data)i(t)m(yp)s(e)0 1452 y(\(e.g.,)40 b(INTEGER,)d
+(INTEGER*2,)i(REAL,)d(DOUBLE)h(PRECISION\).)f(These)g(routines)h(do)f
+(not)h(p)s(erform)0 1564 y(an)m(y)c(mac)m(hine)g(dep)s(enden)m(t)f
+(data)i(con)m(v)m(ersion)g(or)e(b)m(yte)i(sw)m(apping,)f(except)h(that)
+f(con)m(v)m(ersion)h(to/from)f(ASCI)s(I)0 1677 y(format)d(is)g(p)s
+(erformed)e(b)m(y)h(the)h(FTGTBS)f(and)g(FTPTBS)g(routines)h(on)f(mac)m
+(hines)h(whic)m(h)g(do)f(not)h(use)f(ASCI)s(I)0 1790
+y(c)m(haracter)j(co)s(des)e(in)g(the)h(in)m(ternal)g(data)g(represen)m
+(tations)h(\(e.g.,)g(on)e(IBM)h(mainframe)f(computers\).)0
+2049 y Fh(1)81 b Fi(Read)26 b(a)h(consecutiv)m(e)h(string)f(of)f(c)m
+(haracters)i(from)e(an)g(ASCI)s(I)f(table)i(in)m(to)h(a)e(c)m(haracter)
+i(v)-5 b(ariable)28 b(\(spanning)227 2162 y(columns)k(and)g(m)m
+(ultiple)h(ro)m(ws)f(if)g(necessary\))h(This)f(routine)g(should)f(not)i
+(b)s(e)e(used)h(with)g(binary)f(tables)227 2275 y(b)s(ecause)g(of)f
+(complications)i(related)g(to)f(passing)f(string)g(v)-5
+b(ariables)31 b(b)s(et)m(w)m(een)g(C)f(and)g(F)-8 b(ortran.)382
+2533 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41
+b(>)48 b(string,status\))0 2792 y Fh(2)81 b Fi(W)-8 b(rite)31
+b(a)g(consecutiv)m(e)h(string)e(of)h(c)m(haracters)g(to)g(an)f(ASCI)s
+(I)f(table)i(from)f(a)h(c)m(haracter)h(v)-5 b(ariable)31
+b(\(spanning)227 2905 y(columns)h(and)g(m)m(ultiple)h(ro)m(ws)f(if)g
+(necessary\))h(This)f(routine)g(should)f(not)i(b)s(e)e(used)h(with)g
+(binary)f(tables)227 3018 y(b)s(ecause)g(of)f(complications)i(related)g
+(to)f(passing)f(string)g(v)-5 b(ariables)31 b(b)s(et)m(w)m(een)g(C)f
+(and)g(F)-8 b(ortran.)382 3277 y Fe(FTPTBS\(unit,frow,startch)o(ar,)o
+(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))0 3535
+y Fh(3)81 b Fi(Read)27 b(a)h(consecutiv)m(e)i(arra)m(y)e(of)g(b)m(ytes)
+g(from)f(an)g(ASCI)s(I)f(or)i(binary)e(table)j(in)m(to)f(a)g(n)m
+(umeric)g(v)-5 b(ariable)28 b(\(span-)227 3648 y(ning)k(columns)f(and)h
+(m)m(ultiple)g(ro)m(ws)g(if)g(necessary\).)46 b(The)32
+b(arra)m(y)g(parameter)g(ma)m(y)h(b)s(e)e(declared)h(as)h(an)m(y)227
+3761 y(n)m(umerical)i(datat)m(yp)s(e)g(as)g(long)g(as)g(the)f(arra)m(y)
+h(is)f(at)h(least)h('nc)m(hars')f(b)m(ytes)f(long,)j(e.g.,)f(if)f(nc)m
+(hars)f(=)g(17,)227 3874 y(then)c(declare)i(the)e(arra)m(y)h(as)g
+(INTEGER*4)g(ARRA)-8 b(Y\(5\).)382 4133 y Fe(FTGTBB\(unit,frow,startch)
+o(ar,)o(ncha)o(rs,)41 b(>)48 b(array,status\))0 4391
+y Fh(4)81 b Fi(W)-8 b(rite)32 b(a)f(consecutiv)m(e)i(arra)m(y)f(of)f(b)
+m(ytes)g(to)h(an)e(ASCI)s(I)g(or)h(binary)f(table)i(from)e(a)i(n)m
+(umeric)e(v)-5 b(ariable)32 b(\(span-)227 4504 y(ning)j(columns)f(and)g
+(m)m(ultiple)h(ro)m(ws)g(if)f(necessary\))i(The)e(arra)m(y)h(parameter)
+g(ma)m(y)h(b)s(e)e(declared)h(as)g(an)m(y)227 4617 y(n)m(umerical)g
+(datat)m(yp)s(e)g(as)g(long)g(as)g(the)f(arra)m(y)h(is)f(at)h(least)h
+('nc)m(hars')f(b)m(ytes)f(long,)j(e.g.,)f(if)f(nc)m(hars)f(=)g(17,)227
+4730 y(then)c(declare)i(the)e(arra)m(y)h(as)g(INTEGER*4)g(ARRA)-8
+b(Y\(5\).)382 4989 y Fe(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,a)o
+(rra)o(y,)42 b(>)47 b(status\))0 5279 y Fb(6.7.3)112
+b(Edit)37 b(Ro)m(ws)g(or)h(Columns)0 5488 y Fh(1)81 b
+Fi(Insert)26 b(blank)h(ro)m(ws)h(in)m(to)g(an)f(existing)h(ASCI)s(I)e
+(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)h(All)g(the)g(ro)m(ws)f(F)m
+(OLLO)m(W-)227 5601 y(ING)35 b(ro)m(w)g(FR)m(O)m(W)g(are)g(shifted)f
+(do)m(wn)g(b)m(y)h(NR)m(O)m(WS)g(ro)m(ws.)53 b(If)34
+b(FR)m(O)m(W)i(or)e(FR)m(O)m(WLL)i(equals)e(0)h(then)227
+5714 y(the)27 b(blank)f(ro)m(ws)h(are)g(inserted)f(at)h(the)g(b)s
+(eginning)f(of)g(the)h(table.)41 b(These)26 b(routines)g(mo)s(dify)g
+(the)h(NAXIS2)p eop end
+%%Page: 59 65
+TeXDict begin 59 64 bop 0 299 a Fg(6.7.)72 b(FITS)30
+b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8
+b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(59)227 555
+y(k)m(eyw)m(ord)35 b(to)h(re\015ect)f(the)g(new)f(n)m(um)m(b)s(er)f(of)
+i(ro)m(ws)g(in)f(the)h(table.)54 b(Note)36 b(that)f(it)h(is)e(*not*)i
+(necessary)f(to)227 668 y(insert)c(ro)m(ws)f(in)g(a)h(table)g(b)s
+(efore)f(writing)g(data)i(to)f(those)g(ro)m(ws)f(\(indeed,)g(it)h(w)m
+(ould)g(b)s(e)e(ine\016cien)m(t)j(to)f(do)227 781 y(so\).)54
+b(Instead,)35 b(one)g(ma)m(y)g(simply)f(write)h(data)g(to)g(an)m(y)g
+(ro)m(w)f(of)h(the)g(table,)h(whether)e(that)h(ro)m(w)g(of)f(data)227
+894 y(already)d(exists)g(or)g(not.)382 1116 y Fe
+(FTIROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 1229
+y(FTIROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0
+1451 y Fh(2)81 b Fi(Delete)25 b(ro)m(ws)f(from)f(an)g(existing)i(ASCI)s
+(I)c(or)j(binary)f(table)h(\(in)f(the)h(CDU\).)g(The)f(NR)m(O)m(WS)h
+(\(or)g(NR)m(O)m(WSLL\))227 1564 y(is)e(the)g(n)m(um)m(b)s(er)f(of)h
+(ro)m(ws)g(are)g(deleted,)i(starting)f(with)f(ro)m(w)g(FR)m(O)m(W)h
+(\(or)f(FR)m(O)m(WLL\),)h(and)f(an)m(y)g(remaining)227
+1677 y(ro)m(ws)f(in)g(the)f(table)i(are)f(shifted)g(up)e(to)j(\014ll)f
+(in)f(the)h(space.)38 b(These)21 b(routines)f(mo)s(dify)g(the)h(NAXIS2)
+g(k)m(eyw)m(ord)227 1790 y(to)31 b(re\015ect)g(the)g(new)f(n)m(um)m(b)s
+(er)f(of)h(ro)m(ws)h(in)f(the)g(table.)382 2012 y Fe
+(FTDROW\(unit,frow,nrows,)41 b(>)48 b(status\))382 2125
+y(FTDROWLL\(unit,frowll,nro)o(wsl)o(l,)42 b(>)47 b(status\))0
+2348 y Fh(3)81 b Fi(Delete)26 b(a)f(list)g(of)g(ro)m(ws)f(from)g(an)h
+(ASCI)s(I)e(or)h(binary)g(table)h(\(in)g(the)f(CDU\).)i(In)e(the)g
+(\014rst)g(routine,)i('ro)m(wrange')227 2461 y(is)i(a)g(c)m(haracter)h
+(string)f(listing)h(the)f(ro)m(ws)f(or)h(ro)m(w)g(ranges)g(to)g(delete)
+h(\(e.g.,)i('2-4,)e(5,)g(8-9'\).)42 b(In)27 b(the)h(second)227
+2574 y(routine,)37 b('ro)m(wlist')f(is)f(an)f(in)m(teger)j(arra)m(y)e
+(of)g(ro)m(w)g(n)m(um)m(b)s(ers)e(to)j(b)s(e)e(deleted)i(from)e(the)h
+(table.)56 b(nro)m(ws)34 b(is)227 2686 y(the)e(n)m(um)m(b)s(er)e(of)h
+(ro)m(w)h(n)m(um)m(b)s(ers)e(in)h(the)g(list.)45 b(The)31
+b(\014rst)f(ro)m(w)i(in)f(the)g(table)i(is)e(1)h(not)f(0.)44
+b(The)31 b(list)h(of)g(ro)m(w)227 2799 y(n)m(um)m(b)s(ers)d(m)m(ust)h
+(b)s(e)g(sorted)h(in)f(ascending)g(order.)382 3022 y
+Fe(FTDRRG\(unit,rowrange,)42 b(>)47 b(status\))382 3135
+y(FTDRWS\(unit,rowlist,nrow)o(s,)41 b(>)48 b(status\))0
+3357 y Fh(4)81 b Fi(Insert)43 b(a)i(blank)f(column)h(\(or)f(columns\))h
+(in)m(to)g(an)f(existing)i(ASCI)s(I)d(or)h(binary)g(table)h(\(in)g(the)
+f(CDU\).)227 3470 y(COLNUM)c(sp)s(eci\014es)g(the)h(column)f(n)m(um)m
+(b)s(er)f(that)i(the)f(\(\014rst\))g(new)g(column)g(should)f(o)s(ccup)m
+(y)i(in)f(the)227 3583 y(table.)58 b(NCOLS)34 b(sp)s(eci\014es)h(ho)m
+(w)h(man)m(y)g(columns)f(are)h(to)g(b)s(e)f(inserted.)57
+b(An)m(y)35 b(existing)i(columns)e(from)227 3696 y(this)k(p)s(osition)f
+(and)g(higher)g(are)h(mo)m(v)m(ed)g(o)m(v)m(er)h(to)f(allo)m(w)h(ro)s
+(om)e(for)h(the)f(new)g(column\(s\).)65 b(The)38 b(index)227
+3808 y(n)m(um)m(b)s(er)j(on)h(all)h(the)f(follo)m(wing)h(k)m(eyw)m
+(ords)g(will)f(b)s(e)f(incremen)m(ted)i(if)f(necessary)g(to)h
+(re\015ect)f(the)g(new)227 3921 y(p)s(osition)32 b(of)f(the)g
+(column\(s\))h(in)f(the)g(table:)43 b(TBCOLn,)30 b(TF)m(ORMn,)i
+(TTYPEn,)e(TUNITn,)h(TNULLn,)227 4034 y(TSCALn,)22 b(TZER)m(On,)g
+(TDISPn,)g(TDIMn,)h(TLMINn,)g(TLMAXn,)f(TDMINn,)i(TDMAXn,)f(TCTYPn,)227
+4147 y(TCRPXn,)30 b(TCR)-10 b(VLn,)29 b(TCDL)-8 b(Tn,)30
+b(TCR)m(OTn,)f(and)g(TCUNIn.)382 4370 y Fe(FTICOL\(unit,colnum,ttype)o
+(,tf)o(orm,)41 b(>)48 b(status\))382 4482 y(FTICLS\(unit,colnum,ncols)o
+(,tt)o(ype,)o(tfor)o(m,)41 b(>)48 b(status\))0 4705 y
+Fh(5)81 b Fi(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h(binary)
+e(table)i(column)f(\(e.g.,)k(c)m(hange)e(a)e(column)g(from)g(TF)m(ORMn)
+g(=)227 4818 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)e(ma)
+m(y)h(b)s(e)f(increased)h(or)f(decreased)h(from)f(the)g(curren)m(t)h(v)
+-5 b(alue.)382 5040 y Fe(FTMVEC\(unit,colnum,newve)o(cle)o(n,)42
+b(>)47 b(status\))0 5262 y Fh(6)81 b Fi(Delete)29 b(a)f(column)g(from)f
+(an)g(existing)i(ASCI)s(I)d(or)i(binary)e(table)j(\(in)f(the)f(CDU\).)i
+(The)e(index)g(n)m(um)m(b)s(er)f(of)i(all)227 5375 y(the)k(k)m(eyw)m
+(ords)h(listed)f(ab)s(o)m(v)m(e)i(\(for)e(FTICOL\))f(will)h(b)s(e)g
+(decremen)m(ted)g(if)g(necessary)h(to)g(re\015ect)f(the)g(new)227
+5488 y(p)s(osition)26 b(of)g(the)g(column\(s\))g(in)f(the)h(table.)40
+b(Those)26 b(index)f(k)m(eyw)m(ords)h(that)g(refer)f(to)i(the)f
+(deleted)g(column)227 5601 y(will)33 b(also)g(b)s(e)f(deleted.)47
+b(Note)33 b(that)g(the)g(ph)m(ysical)g(size)g(of)f(the)h(FITS)e(\014le)
+i(will)f(not)h(b)s(e)e(reduced)h(b)m(y)g(this)227 5714
+y(op)s(eration,)e(and)e(the)h(empt)m(y)g(FITS)f(blo)s(c)m(ks)h(if)g(an)
+m(y)g(at)g(the)g(end)f(of)h(the)g(\014le)g(will)g(b)s(e)f(padded)g
+(with)g(zeros.)p eop end
+%%Page: 60 66
+TeXDict begin 60 65 bop 0 299 a Fi(60)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTDCOL\(unit,colnum,)42
+b(>)48 b(status\))0 795 y Fh(7)81 b Fi(Cop)m(y)30 b(a)g(column)g(from)g
+(one)g(HDU)h(to)g(another)f(\(or)h(to)g(the)f(same)h(HDU\).)g(If)f
+(createcol)j(=)c(TR)m(UE,)i(then)f(a)227 908 y(new)20
+b(column)g(will)h(b)s(e)f(inserted)g(in)g(the)h(output)f(table,)k(at)d
+(p)s(osition)f(`outcolumn',)j(otherwise)e(the)g(existing)227
+1021 y(output)29 b(column)f(will)h(b)s(e)f(o)m(v)m(erwritten)i(\(in)f
+(whic)m(h)f(case)i(it)f(m)m(ust)f(ha)m(v)m(e)i(a)f(compatible)h(datat)m
+(yp)s(e\).)42 b(Note)227 1134 y(that)31 b(the)g(\014rst)e(column)i(in)f
+(a)g(table)i(is)e(at)h(coln)m(um)g(=)f(1.)382 1373 y
+Fe(FTCPCL\(inunit,outunit,in)o(col)o(num,)o(outc)o(oln)o(um,c)o(reat)o
+(eco)o(l,)42 b(>)47 b(status\);)0 1661 y Fb(6.7.4)112
+b(Read)38 b(and)h(W)-9 b(rite)36 b(Column)j(Data)e(Routines)0
+1880 y Fi(These)22 b(subroutines)f(put)h(or)g(get)i(data)f(v)-5
+b(alues)22 b(in)g(the)h(curren)m(t)f(ASCI)s(I)f(or)h(Binary)g(table)i
+(extension.)38 b(Automatic)0 1992 y(data)21 b(t)m(yp)s(e)g(con)m(v)m
+(ersion)g(is)f(p)s(erformed)f(for)h(n)m(umerical)h(data)g(t)m(yp)s(es)g
+(\(B,I,J,E,D\))h(if)e(the)h(data)g(t)m(yp)s(e)f(of)h(the)f(column)0
+2105 y(\(de\014ned)32 b(b)m(y)i(the)f(TF)m(ORM)h(k)m(eyw)m(ord\))g
+(di\013ers)f(from)f(the)i(data)g(t)m(yp)s(e)f(of)h(the)f(calling)i
+(subroutine.)48 b(The)33 b(data)0 2218 y(v)-5 b(alues)30
+b(are)h(also)g(scaled)f(b)m(y)g(the)g(TSCALn)f(and)g(TZER)m(On)g
+(header)h(v)-5 b(alues)30 b(as)g(they)g(are)h(b)s(eing)e(written)h(to)h
+(or)0 2331 y(read)j(from)f(the)h(FITS)f(arra)m(y)-8 b(.)51
+b(The)33 b(fttscl)i(subroutine)d(MUST)i(b)s(e)f(used)g(to)h(de\014ne)f
+(the)h(scaling)h(parameters)0 2444 y(when)d(writing)h(data)h(to)g(the)f
+(table)h(or)f(to)h(o)m(v)m(erride)g(the)g(default)f(scaling)h(v)-5
+b(alues)34 b(giv)m(en)g(in)f(the)g(header)g(when)0 2557
+y(reading)27 b(from)g(the)g(table.)40 b(Note)29 b(that)e(it)h(is)f
+(*not*)h(necessary)f(to)h(insert)f(ro)m(ws)g(in)f(a)i(table)g(b)s
+(efore)e(writing)h(data)0 2670 y(to)j(those)h(ro)m(ws)e(\(indeed,)h(it)
+g(w)m(ould)g(b)s(e)f(ine\016cien)m(t)i(to)f(do)g(so\).)41
+b(Instead,)30 b(one)g(ma)m(y)g(simply)f(write)h(data)g(to)h(an)m(y)0
+2783 y(ro)m(w)f(of)h(the)g(table,)g(whether)f(that)h(ro)m(w)f(of)h
+(data)g(already)g(exists)g(or)f(not.)0 2943 y(In)i(the)i(case)g(of)f
+(binary)g(tables)h(with)f(v)m(ector)h(elemen)m(ts,)i(the)d('felem')h
+(parameter)g(de\014nes)e(the)i(starting)g(pixel)0 3056
+y(within)k(the)g(elemen)m(t)i(v)m(ector.)65 b(This)38
+b(parameter)g(is)g(ignored)h(with)e(ASCI)s(I)g(tables.)65
+b(Similarly)-8 b(,)41 b(in)d(the)g(case)0 3169 y(of)45
+b(binary)e(tables)i(the)g('nelemen)m(ts')h(parameter)f(sp)s(eci\014es)f
+(the)g(total)i(n)m(um)m(b)s(er)d(of)i(v)m(ector)h(v)-5
+b(alues)45 b(read)f(or)0 3282 y(written)36 b(\(con)m(tin)m(uing)h(on)f
+(subsequen)m(t)f(ro)m(ws)g(if)h(required\))f(and)h(not)g(the)g(n)m(um)m
+(b)s(er)e(of)i(table)h(elemen)m(ts.)58 b(Tw)m(o)0 3395
+y(sets)36 b(of)f(subroutines)g(are)g(pro)m(vided)g(to)i(get)f(the)g
+(column)f(data)h(whic)m(h)f(di\013er)g(in)h(the)f(w)m(a)m(y)i
+(unde\014ned)c(pixels)0 3508 y(are)f(handled.)42 b(The)31
+b(\014rst)g(set)h(of)f(routines)h(\(FTGCV\))g(simply)f(return)f(an)h
+(arra)m(y)h(of)f(data)h(elemen)m(ts)h(in)e(whic)m(h)0
+3620 y(unde\014ned)41 b(pixels)j(are)g(set)g(equal)g(to)h(a)f(v)-5
+b(alue)44 b(sp)s(eci\014ed)f(b)m(y)g(the)h(user)f(in)g(the)h('n)m(ullv)
+-5 b(al')44 b(parameter.)81 b(An)0 3733 y(additional)44
+b(feature)g(of)g(these)g(subroutines)e(is)i(that)g(if)f(the)h(user)e
+(sets)i(n)m(ullv)-5 b(al)44 b(=)f(0,)48 b(then)43 b(no)g(c)m(hec)m(ks)i
+(for)0 3846 y(unde\014ned)33 b(pixels)j(will)g(b)s(e)e(p)s(erformed,)i
+(th)m(us)f(increasing)h(the)g(sp)s(eed)e(of)i(the)g(program.)55
+b(The)35 b(second)h(set)g(of)0 3959 y(routines)h(\(FTGCF\))h(returns)d
+(the)i(data)h(elemen)m(t)g(arra)m(y)g(and)e(in)h(addition)g(a)g
+(logical)j(arra)m(y)d(of)g(\015ags)g(whic)m(h)0 4072
+y(de\014nes)29 b(whether)h(the)h(corresp)s(onding)e(data)i(pixel)g(is)f
+(unde\014ned.)0 4232 y(An)m(y)41 b(column,)i(regardless)e(of)g(it's)g
+(in)m(trinsic)g(datat)m(yp)s(e,)k(ma)m(y)c(b)s(e)f(read)h(as)g(a)g
+(string.)71 b(It)41 b(should)f(b)s(e)g(noted)0 4345 y(ho)m(w)m(ev)m(er)
+32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)f(string)h(is)f
+(10)h(-)g(100)g(times)g(slo)m(w)m(er)h(than)e(reading)g(the)h(same)0
+4458 y(column)g(as)h(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)h(o)m
+(v)m(erhead)f(in)g(constructing)g(the)g(formatted)g(strings.)44
+b(The)31 b(displa)m(y)0 4571 y(format)26 b(of)g(the)h(returned)d
+(strings)i(will)g(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m
+(ord,)j(if)d(it)i(exists,)h(otherwise)e(b)m(y)0 4684
+y(the)i(datat)m(yp)s(e)h(of)g(the)f(column.)40 b(The)28
+b(length)g(of)h(the)f(returned)f(strings)h(can)g(b)s(e)g(determined)g
+(with)f(the)i(ftgcdw)0 4797 y(routine.)41 b(The)30 b(follo)m(wing)h
+(TDISPn)f(displa)m(y)g(formats)h(are)f(curren)m(tly)h(supp)s(orted:)191
+5036 y Fe(Iw.m)142 b(Integer)191 5149 y(Ow.m)g(Octal)46
+b(integer)191 5262 y(Zw.m)142 b(Hexadecimal)45 b(integer)191
+5375 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 5488
+y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 5601
+y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 5714
+y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)d(not)j
+(lost,)g(else)f(Ew.d)p eop end
+%%Page: 61 67
+TeXDict begin 61 66 bop 0 299 a Fg(6.7.)72 b(FITS)30
+b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8
+b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(61)0 555 y(where)37
+b(w)h(is)g(the)g(width)f(in)h(c)m(haracters)h(of)f(the)h(displa)m(y)m
+(ed)f(v)-5 b(alues,)41 b(m)c(is)h(the)g(minim)m(um)g(n)m(um)m(b)s(er)e
+(of)i(digits)0 668 y(displa)m(y)m(ed,)31 b(and)f(d)g(is)g(the)h(n)m(um)
+m(b)s(er)e(of)h(digits)h(to)g(the)g(righ)m(t)g(of)g(the)f(decimal.)42
+b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 920 y Fh(1)81
+b Fi(Put)30 b(elemen)m(ts)i(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)f
+(table)i(column)e(\(in)h(the)g(CDU\).)g(\(The)g(SPP)f(FSPCLS)f(routine)
+227 1033 y(has)38 b(an)f(additional)i(in)m(teger)g(argumen)m(t)f(after)
+h(the)f(V)-10 b(ALUES)37 b(c)m(haracter)i(string)f(whic)m(h)f(sp)s
+(eci\014es)h(the)227 1145 y(size)31 b(of)g(the)g(1st)g(dimension)e(of)i
+(this)f(2-D)i(CHAR)e(arra)m(y\).)227 1294 y(The)24 b(alternate)i(v)m
+(ersion)f(of)g(these)g(routines,)h(whose)e(names)g(end)g(in)g('LL')h
+(after)g(the)g(datat)m(yp)s(e)g(c)m(haracter,)227 1407
+y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f(then)h(2*31)h(ro)m
+(ws.)57 b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and)
+227 1520 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m
+(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i
+(in)m(tegers.)382 1772 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o
+(row,)o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42
+b(>)47 b(status\))382 1885 y(FTPCL[LBIJKEDCM]LL\(unit,)o(col)o(num,)o
+(frow)o(,fe)o(lem,)o(nele)o(men)o(ts,v)o(alue)o(s,)41
+b(>)48 b(status\))0 2136 y Fh(2)81 b Fi(Put)29 b(elemen)m(ts)i(in)m(to)
+g(an)f(ASCI)s(I)e(or)i(binary)f(table)i(column)e(\(in)h(the)g(CDU\))g
+(substituting)g(the)g(appropriate)227 2249 y(FITS)c(n)m(ull)g(v)-5
+b(alue)26 b(for)g(an)m(y)h(elemen)m(ts)g(that)g(are)f(equal)h(to)g
+(NULL)-10 b(V)g(AL.)26 b(F)-8 b(or)27 b(ASCI)s(I)e(T)-8
+b(ABLE)26 b(extensions,)227 2362 y(the)31 b(n)m(ull)f(v)-5
+b(alue)31 b(de\014ned)e(b)m(y)h(the)g(previous)g(call)i(to)f(FTSNUL)f
+(will)g(b)s(e)g(substituted;)g(F)-8 b(or)31 b(in)m(teger)h(FITS)227
+2475 y(columns,)39 b(in)e(a)h(binary)f(table)h(the)f(n)m(ull)h(v)-5
+b(alue)37 b(de\014ned)g(b)m(y)g(the)g(previous)g(call)i(to)f(FTTNUL)f
+(will)h(b)s(e)227 2588 y(substituted;)28 b(F)-8 b(or)28
+b(\015oating)h(p)s(oin)m(t)e(FITS)f(columns)h(a)h(sp)s(ecial)g(IEEE)f
+(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)28 b(will)227
+2701 y(b)s(e)i(substituted.)227 2850 y(The)24 b(alternate)i(v)m(ersion)
+f(of)g(these)g(routines,)h(whose)e(names)g(end)g(in)g('LL')h(after)g
+(the)g(datat)m(yp)s(e)g(c)m(haracter,)227 2963 y(supp)s(ort)34
+b(large)j(tables)f(with)g(more)f(then)h(2*31)h(ro)m(ws.)57
+b(When)35 b(calling)i(these)f(routines,)h(the)f(fro)m(w)g(and)227
+3075 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s(e)f(64-bit)h(in)m
+(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g(normal)f(4-b)m(yte)i
+(in)m(tegers.)382 3327 y Fe(FTPCN[SBIJKED]\(unit,coln)o(um,)o(frow)o
+(,fel)o(em,)o(nele)o(ment)o(s,v)o(alue)o(s,nu)o(llv)o(al)42
+b(>)47 b(status\))382 3440 y(FTPCN[SBIJKED]LL\(unit,co)o(lnu)o(m,\(I)o
+(*8\))41 b(frow,\(I*8\))k(felem,nelements,values,)764
+3553 y(nullval)g(>)j(status\))0 3804 y Fh(3)81 b Fi(Put)37
+b(bit)h(v)-5 b(alues)38 b(in)m(to)h(a)f(binary)f(b)m(yte)h(\('B'\))i
+(or)d(bit)h(\('X'\))h(table)g(column)f(\(in)f(the)h(CDU\).)h(LRA)-8
+b(Y)38 b(is)g(an)227 3917 y(arra)m(y)c(of)g(logical)h(v)-5
+b(alues)34 b(corresp)s(onding)e(to)i(the)g(sequence)f(of)h(bits)f(to)h
+(b)s(e)f(written.)49 b(If)33 b(LRA)-8 b(Y)34 b(is)f(true)227
+4030 y(then)f(the)g(corresp)s(onding)f(bit)h(is)g(set)g(to)h(1,)g
+(otherwise)f(the)g(bit)g(is)g(set)h(to)g(0.)45 b(Note)34
+b(that)e(in)g(the)g(case)h(of)227 4143 y('X')g(columns,)g(FITSIO)e
+(will)i(write)f(to)h(all)g(8)g(bits)f(of)g(eac)m(h)i(b)m(yte)f(whether)
+e(they)i(are)g(formally)f(v)-5 b(alid)33 b(or)227 4256
+y(not.)46 b(Th)m(us)31 b(if)h(the)g(column)g(is)f(de\014ned)g(as)h
+('4X',)i(and)d(one)h(calls)h(FTPCLX)f(with)f(fbit=1)h(and)f(n)m(bit=8,)
+227 4369 y(then)j(all)h(8)f(bits)g(will)g(b)s(e)f(written)h(in)m(to)h
+(the)f(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)e(to)i(writing)e(the)i
+(\014rst)e(4)h(bits)g(in)m(to)227 4482 y(the)d(\014rst)f(ro)m(w)g(and)g
+(then)g(the)h(next)f(4)h(bits)f(in)m(to)i(the)e(next)h(ro)m(w\),)g(ev)m
+(en)g(though)f(the)h(last)g(4)g(bits)f(of)h(eac)m(h)227
+4595 y(b)m(yte)g(are)g(formally)g(not)g(de\014ned.)382
+4846 y Fe(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o(ray)o(,)42
+b(>)47 b(status\))0 5098 y Fh(4)81 b Fi(Set)30 b(table)h(elemen)m(ts)h
+(in)e(a)h(column)f(as)h(unde\014ned)382 5349 y Fe
+(FTPCLU\(unit,colnum,frow,)o(fel)o(em,n)o(elem)o(ent)o(s,)42
+b(>)47 b(status\))0 5601 y Fh(5)81 b Fi(Get)34 b(elemen)m(ts)g(from)f
+(an)g(ASCI)s(I)f(or)h(binary)g(table)h(column)f(\(in)g(the)g(CDU\).)i
+(These)e(routines)g(return)f(the)227 5714 y(v)-5 b(alues)30
+b(of)g(the)g(table)h(column)f(arra)m(y)g(elemen)m(ts.)42
+b(Unde\014ned)28 b(arra)m(y)j(elemen)m(ts)g(will)f(b)s(e)f(returned)g
+(with)h(a)p eop end
+%%Page: 62 68
+TeXDict begin 62 67 bop 0 299 a Fi(62)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)227 555 y Fi(v)-5 b(alue)26 b(=)g(n)m(ullv)-5
+b(al,)27 b(unless)e(n)m(ullv)-5 b(al)26 b(=)f(0)h(\(or)g(=)f(')h(')g
+(for)f(ftgcvs\))i(in)e(whic)m(h)g(case)i(no)e(c)m(hec)m(king)j(for)d
+(unde\014ned)227 668 y(v)-5 b(alues)28 b(will)g(b)s(e)f(p)s(erformed.)
+39 b(The)27 b(ANYF)h(parameter)g(is)g(set)g(to)g(true)g(if)g(an)m(y)f
+(of)h(the)g(returned)f(elemen)m(ts)227 781 y(are)f(unde\014ned.)37
+b(\(Note:)i(the)26 b(ftgcl)g(routine)f(simple)g(gets)h(an)g(arra)m(y)f
+(of)g(logical)j(data)e(v)-5 b(alues)25 b(without)h(an)m(y)227
+894 y(c)m(hec)m(ks)39 b(for)e(unde\014ned)e(v)-5 b(alues;)41
+b(use)c(the)g(ftgc\015)h(routine)f(to)h(c)m(hec)m(k)g(for)f
+(unde\014ned)e(logical)40 b(elemen)m(ts\).)227 1007 y(\(The)29
+b(SPP)f(FSGCVS)g(routine)g(has)h(an)f(additional)i(in)m(teger)g
+(argumen)m(t)f(after)g(the)g(V)-10 b(ALUES)28 b(c)m(haracter)227
+1120 y(string)j(whic)m(h)f(sp)s(eci\014es)g(the)g(size)i(of)e(the)h
+(1st)g(dimension)e(of)i(this)f(2-D)i(CHAR)e(arra)m(y\).)227
+1272 y(The)24 b(alternate)i(v)m(ersion)f(of)g(these)g(routines,)h
+(whose)e(names)g(end)g(in)g('LL')h(after)g(the)g(datat)m(yp)s(e)g(c)m
+(haracter,)227 1385 y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f
+(then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h
+(the)f(fro)m(w)g(and)227 1498 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s
+(e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g
+(normal)f(4-b)m(yte)i(in)m(tegers.)382 1761 y Fe
+(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42
+b(>)47 b(values,status\))382 1874 y(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o
+(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,nul)o(lval)o(,)42
+b(>)1098 1987 y(values,anyf,status\))382 2100 y
+(FTGCV[BIJKEDCM]LL\(unit,c)o(oln)o(um,\()o(I*8\))f(frow,)46
+b(\(I*8\))h(felem,)f(nelements,)716 2213 y(nullval,)f(>)j
+(values,anyf,status\))0 2476 y Fh(6)81 b Fi(Get)44 b(elemen)m(ts)h(and)
+d(n)m(ull)i(\015ags)f(from)g(an)h(ASCI)s(I)d(or)j(binary)e(table)j
+(column)e(\(in)g(the)h(CHDU\).)g(These)227 2589 y(routines)29
+b(return)e(the)i(v)-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m
+(y)i(elemen)m(ts.)41 b(An)m(y)29 b(unde\014ned)d(arra)m(y)k(elemen)m
+(ts)227 2702 y(will)37 b(ha)m(v)m(e)h(the)f(corresp)s(onding)f(\015agv)
+-5 b(als)37 b(elemen)m(t)i(set)e(equal)g(to)h(.TR)m(UE.)f(The)f(ANYF)i
+(parameter)f(is)227 2815 y(set)30 b(to)g(true)g(if)f(an)m(y)h(of)f(the)
+h(returned)e(elemen)m(ts)j(are)f(unde\014ned.)38 b(\(The)29
+b(SPP)f(FSGCFS)h(routine)h(has)f(an)227 2928 y(additional)e(in)m(teger)
+h(argumen)m(t)e(after)h(the)f(V)-10 b(ALUES)26 b(c)m(haracter)i(string)
+e(whic)m(h)f(sp)s(eci\014es)h(the)h(size)f(of)h(the)227
+3041 y(1st)k(dimension)f(of)h(this)f(2-D)h(CHAR)g(arra)m(y\).)227
+3193 y(The)24 b(alternate)i(v)m(ersion)f(of)g(these)g(routines,)h
+(whose)e(names)g(end)g(in)g('LL')h(after)g(the)g(datat)m(yp)s(e)g(c)m
+(haracter,)227 3306 y(supp)s(ort)34 b(large)j(tables)f(with)g(more)f
+(then)h(2*31)h(ro)m(ws.)57 b(When)35 b(calling)i(these)f(routines,)h
+(the)f(fro)m(w)g(and)227 3418 y(felem)31 b(parameters)g(*m)m(ust*)g(b)s
+(e)f(64-bit)h(in)m(teger*8)i(v)-5 b(ariables,)31 b(instead)g(of)g
+(normal)f(4-b)m(yte)i(in)m(tegers.)382 3682 y Fe
+(FTGCF[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o
+(ent)o(s,)42 b(>)1193 3795 y(values,flagvals,anyf,stat)o(us\))382
+3908 y(FTGCF[BIJKED]LL\(unit,col)o(num)o(,)g(\(I*8\))k(frow,)h(\(I*8\))
+f(felem,nelements,)d(>)1193 4021 y(values,flagvals,anyf,stat)o(us\))0
+4284 y Fh(7)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from)
+g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h
+(column.)227 4397 y(Unde\014ned)k(pixels)h(in)g(the)h(arra)m(y)g(will)f
+(b)s(e)g(set)h(equal)f(to)h(the)g(v)-5 b(alue)36 b(of)f('n)m(ullv)-5
+b(al',)38 b(unless)c(n)m(ullv)-5 b(al=0)36 b(in)227 4510
+y(whic)m(h)d(case)i(no)e(testing)i(for)e(unde\014ned)e(pixels)j(will)f
+(b)s(e)g(p)s(erformed.)49 b(The)32 b(\014rst)h(and)g(last)h(ro)m(ws)g
+(in)f(the)227 4623 y(table)28 b(to)f(b)s(e)f(read)g(are)h(sp)s
+(eci\014ed)e(b)m(y)i(fpixels\(naxis+1\))g(and)f(lpixels\(naxis+1\),)j
+(and)d(hence)g(are)h(treated)227 4736 y(as)f(the)f(next)h(higher)f
+(dimension)g(of)g(the)h(FITS)e(N-dimensional)i(arra)m(y)-8
+b(.)40 b(The)25 b(INCS)f(parameter)i(sp)s(eci\014es)227
+4848 y(the)31 b(sampling)f(in)m(terv)-5 b(al)32 b(in)e(eac)m(h)h
+(dimension)f(b)s(et)m(w)m(een)h(the)g(data)g(elemen)m(ts)g(that)g(will)
+g(b)s(e)f(returned.)382 5112 y Fe(FTGSV[BIJKED]\(unit,colnu)o(m,n)o
+(axis)o(,nax)o(es,)o(fpix)o(els,)o(lpi)o(xels)o(,inc)o(s,n)o(ullv)o
+(al,)41 b(>)1002 5225 y(array,anyf,status\))0 5488 y
+Fh(8)81 b Fi(Get)29 b(an)f(arbitrary)g(data)h(subsection)f(from)g(an)g
+(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g(table)h(v)m(ector)h
+(column.)227 5601 y(An)m(y)39 b(Unde\014ned)e(pixels)i(in)g(the)g(arra)
+m(y)g(will)g(ha)m(v)m(e)h(the)f(corresp)s(onding)f('\015agv)-5
+b(als')40 b(elemen)m(t)g(set)f(equal)227 5714 y(to)d(.TR)m(UE.)f(The)f
+(\014rst)g(and)g(last)i(ro)m(ws)f(in)f(the)h(table)h(to)f(b)s(e)g(read)
+f(are)h(sp)s(eci\014ed)f(b)m(y)h(fpixels\(naxis+1\))p
+eop end
+%%Page: 63 69
+TeXDict begin 63 68 bop 0 299 a Fg(6.7.)72 b(FITS)30
+b(ASCI)s(I)f(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(D)m(A)-8
+b(T)g(A)32 b(I/O)e(SUBR)m(OUTINES)979 b Fi(63)227 555
+y(and)39 b(lpixels\(naxis+1\),)k(and)38 b(hence)i(are)f(treated)i(as)e
+(the)g(next)h(higher)f(dimension)f(of)i(the)f(FITS)g(N-)227
+668 y(dimensional)g(arra)m(y)-8 b(.)66 b(The)38 b(INCS)g(parameter)h
+(sp)s(eci\014es)f(the)g(sampling)h(in)m(terv)-5 b(al)40
+b(in)e(eac)m(h)i(dimension)227 781 y(b)s(et)m(w)m(een)31
+b(the)g(data)g(elemen)m(ts)h(that)f(will)f(b)s(e)g(returned.)382
+1028 y Fe(FTGSF[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o
+(els,)o(lpi)o(xels)o(,inc)o(s,)41 b(>)1002 1141 y
+(array,flagvals,anyf,statu)o(s\))0 1389 y Fh(9)81 b Fi(Get)33
+b(bit)g(v)-5 b(alues)34 b(from)e(a)h(b)m(yte)h(\('B'\))g(or)f(bit)g
+(\(`X`\))h(table)g(column)f(\(in)g(the)g(CDU\).)g(LRA)-8
+b(Y)34 b(is)f(an)f(arra)m(y)i(of)227 1502 y(logical)41
+b(v)-5 b(alues)39 b(corresp)s(onding)f(to)h(the)g(sequence)f(of)h(bits)
+g(to)g(b)s(e)f(read.)65 b(If)38 b(LRA)-8 b(Y)39 b(is)f(true)h(then)f
+(the)227 1615 y(corresp)s(onding)c(bit)g(w)m(as)g(set)h(to)g(1,)h
+(otherwise)f(the)f(bit)h(w)m(as)f(set)h(to)g(0.)53 b(Note)35
+b(that)g(in)f(the)h(case)g(of)f('X')227 1728 y(columns,)41
+b(FITSIO)d(will)h(read)f(all)i(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)f
+(whether)f(they)h(are)g(formally)h(v)-5 b(alid)39 b(or)f(not.)227
+1840 y(Th)m(us)c(if)g(the)h(column)f(is)g(de\014ned)f(as)i('4X',)h(and)
+d(one)i(calls)h(FTGCX)e(with)g(fbit=1)h(and)e(n)m(bit=8,)j(then)227
+1953 y(all)30 b(8)g(bits)f(will)g(b)s(e)g(read)g(from)g(the)g(\014rst)f
+(b)m(yte)i(\(as)g(opp)s(osed)e(to)i(reading)f(the)h(\014rst)e(4)i(bits)
+f(from)f(the)i(\014rst)227 2066 y(ro)m(w)g(and)e(then)h(the)h(\014rst)e
+(4)i(bits)f(from)g(the)g(next)g(ro)m(w\),)i(ev)m(en)f(though)f(the)g
+(last)h(4)g(bits)f(of)g(eac)m(h)i(b)m(yte)f(are)227 2179
+y(formally)h(not)g(de\014ned.)382 2427 y Fe(FTGCX\(unit,colnum,frow,f)o
+(bit)o(,nbi)o(t,)42 b(>)47 b(lray,status\))0 2674 y Fh(10)f
+Fi(Read)31 b(an)m(y)g(consecutiv)m(e)h(set)f(of)g(bits)g(from)f(an)g
+('X')i(or)e('B')i(column)e(and)g(in)m(terpret)h(them)g(as)g(an)f
+(unsigned)227 2787 y(n-bit)k(in)m(teger.)54 b(NBIT)35
+b(m)m(ust)f(b)s(e)f(less)i(than)f(or)g(equal)h(to)g(16)g(when)f
+(calling)h(FTGCXI,)g(and)f(less)g(than)227 2900 y(or)e(equal)g(to)g(32)
+g(when)e(calling)j(FTGCXJ;)f(there)f(is)h(no)f(limit)h(on)g(the)f(v)-5
+b(alue)32 b(of)g(NBIT)f(for)g(FTGCXD,)227 3013 y(but)38
+b(the)h(returned)e(double)i(precision)f(v)-5 b(alue)39
+b(only)g(has)f(48)i(bits)e(of)h(precision)g(on)f(most)h(32-bit)h(w)m
+(ord)227 3126 y(mac)m(hines.)64 b(The)37 b(NBITS)g(bits)h(are)g(in)m
+(terpreted)g(as)g(an)g(unsigned)e(in)m(teger)k(unless)d(NBITS)g(=)g(16)
+i(\(in)227 3239 y(FTGCXI\))e(or)g(32)g(\(in)g(FTGCXJ\))f(in)g(whic)m(h)
+h(case)g(the)g(string)g(of)f(bits)h(are)g(in)m(terpreted)f(as)h(16-bit)
+h(or)227 3352 y(32-bit)j(2's)f(complemen)m(t)h(signed)e(in)m(tegers.)69
+b(If)39 b(NR)m(O)m(WS)i(is)e(greater)i(than)e(1)h(then)f(the)h(same)g
+(set)g(of)227 3464 y(bits)34 b(will)g(b)s(e)f(read)h(from)f(sequen)m
+(tial)i(ro)m(ws)f(in)f(the)h(table)g(starting)h(with)e(ro)m(w)h(FR)m(O)
+m(W.)h(Note)g(that)g(the)227 3577 y(n)m(um)m(b)s(ering)27
+b(con)m(v)m(en)m(tion)j(used)d(here)g(for)h(the)g(FBIT)f(parameter)i
+(adopts)e(1)h(for)g(the)g(\014rst)f(elemen)m(t)i(of)f(the)227
+3690 y(v)m(ector)k(of)f(bits;)f(this)h(is)f(the)h(Most)g(Signi\014can)m
+(t)g(Bit)g(of)g(the)f(in)m(teger)i(v)-5 b(alue.)382 3938
+y Fe(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)42
+b(>)47 b(array,status\))0 4185 y Fh(11)f Fi(Get)37 b(the)e(descriptor)h
+(for)f(a)h(v)-5 b(ariable)37 b(length)f(column)f(in)g(a)h(binary)f
+(table.)57 b(The)35 b(descriptor)h(consists)g(of)227
+4298 y(2)c(in)m(teger)g(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of)
+h(elemen)m(ts)i(in)d(the)h(arra)m(y)h(and)e(the)h(starting)h(o\013set)g
+(relativ)m(e)h(to)227 4411 y(the)28 b(start)f(of)g(the)h(heap.)39
+b(The)27 b(\014rst)f(routine)h(returns)f(a)h(single)h(descriptor)f
+(whereas)g(the)g(second)g(routine)227 4524 y(returns)i(the)i
+(descriptors)f(for)g(a)h(range)g(of)f(ro)m(ws)h(in)f(the)g(table.)382
+4771 y Fe(FTGDES\(unit,colnum,rownu)o(m,)41 b(>)48 b
+(nelements,offset,status\))382 4884 y(FTGDESLL\(unit,colnum,row)o(num)o
+(,)42 b(>)47 b(nelementsll,offsetll,statu)o(s\))382 5110
+y(FFGDESS\(unit,colnum,firs)o(tro)o(w,nr)o(ows)41 b(>)48
+b(nelements,offset,)43 b(status\))382 5223 y(FFGDESSLL\(unit,colnum,fi)
+o(rst)o(row,)o(nrow)o(s)f(>)47 b(nelementsll,offsetll,)42
+b(status\))0 5470 y Fh(12)k Fi(W)-8 b(rite)33 b(the)f(descriptor)g(for)
+f(a)i(v)-5 b(ariable)32 b(length)g(column)g(in)f(a)i(binary)e(table.)45
+b(These)32 b(subroutines)e(can)j(b)s(e)227 5583 y(used)f(in)h
+(conjunction)g(with)g(FTGDES)g(to)g(enable)h(2)f(or)g(more)g(arra)m(ys)
+h(to)f(p)s(oin)m(t)g(to)h(the)f(same)g(storage)227 5696
+y(lo)s(cation)f(to)f(sa)m(v)m(e)h(storage)g(space)f(if)f(the)h(arra)m
+(ys)g(are)g(iden)m(tical.)p eop end
+%%Page: 64 70
+TeXDict begin 64 69 bop 0 299 a Fi(64)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)382 555 y Fe(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o
+(ents)o(,of)o(fset)o(,)42 b(>)47 b(status\))382 668 y
+(FTPDESLL\(unit,colnum,row)o(num)o(,nel)o(emen)o(tsl)o(l,of)o(fset)o
+(ll,)41 b(>)48 b(status\))0 1001 y Fd(6.8)135 b(Ro)l(w)46
+b(Selection)g(and)f(Calculator)h(Routines)0 1252 y Fi(These)21
+b(routines)f(all)i(parse)f(and)f(ev)-5 b(aluate)23 b(an)d(input)g
+(string)h(con)m(taining)i(a)e(user)f(de\014ned)g(arithmetic)i
+(expression.)0 1365 y(The)29 b(\014rst)f(3)i(routines)f(select)i(ro)m
+(ws)e(in)g(a)h(FITS)e(table,)j(based)e(on)g(whether)g(the)g(expression)
+g(ev)-5 b(aluates)31 b(to)f(true)0 1477 y(\(not)e(equal)f(to)h(zero\))g
+(or)f(false)h(\(zero\).)41 b(The)27 b(other)g(routines)g(ev)-5
+b(aluate)29 b(the)e(expression)g(and)f(calculate)k(a)d(v)-5
+b(alue)0 1590 y(for)35 b(eac)m(h)h(ro)m(w)g(of)f(the)h(table.)56
+b(The)35 b(allo)m(w)m(ed)i(expression)e(syn)m(tax)g(is)h(describ)s(ed)e
+(in)h(the)g(ro)m(w)h(\014lter)f(section)h(in)0 1703 y(the)h(earlier)h
+(`Extended)e(File)i(Name)f(Syn)m(tax')g(c)m(hapter)h(of)f(this)f(do)s
+(cumen)m(t.)60 b(The)36 b(expression)h(ma)m(y)g(also)h(b)s(e)0
+1816 y(written)28 b(to)i(a)e(text)i(\014le,)f(and)f(the)h(name)f(of)h
+(the)f(\014le,)h(prep)s(ended)e(with)h(a)h('@')f(c)m(haracter)i(ma)m(y)
+f(b)s(e)f(supplied)f(for)0 1929 y(the)34 b('expr')g(parameter)g(\(e.g.)
+53 b('@\014lename.txt'\).)f(The)34 b(expression)f(in)h(the)g(\014le)g
+(can)g(b)s(e)f(arbitrarily)h(complex)0 2042 y(and)h(extend)h(o)m(v)m
+(er)h(m)m(ultiple)f(lines)g(of)g(the)f(\014le.)57 b(Lines)36
+b(that)g(b)s(egin)f(with)g(2)h(slash)g(c)m(haracters)h(\('//'\))h(will)
+e(b)s(e)0 2155 y(ignored)30 b(and)g(ma)m(y)h(b)s(e)f(used)g(to)h(add)e
+(commen)m(ts)j(to)f(the)f(\014le.)0 2412 y Fh(1)81 b
+Fi(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression)g(o)m(v)m(er)h
+(the)g(indicated)f(ro)m(ws,)i(returning)d(an)h(arra)m(y)h(of)f(\015ags)
+g(indicating)227 2525 y(whic)m(h)30 b(ro)m(ws)h(ev)-5
+b(aluated)31 b(to)g(TR)m(UE/F)-10 b(ALSE)430 2783 y Fe
+(FTFROW\(unit,expr,firstr)o(ow,)41 b(nrows,)46 b(>)i(n_good_rows,)c
+(row_status,)h(status\))0 3040 y Fh(2)81 b Fi(Find)29
+b(the)i(\014rst)f(ro)m(w)g(whic)m(h)g(satis\014es)h(the)g(input)e(b)s
+(o)s(olean)h(expression)430 3298 y Fe(FTFFRW\(unit,)44
+b(expr,)i(>)i(rownum,)e(status\))0 3555 y Fh(3)81 b Fi(Ev)-5
+b(aluate)35 b(an)f(expression)h(on)f(all)h(ro)m(ws)g(of)f(a)h(table.)54
+b(If)34 b(the)g(input)g(and)g(output)g(\014les)g(are)h(not)g(the)f
+(same,)227 3668 y(cop)m(y)i(the)g(TR)m(UE)f(ro)m(ws)g(to)h(the)f
+(output)g(\014le;)j(if)d(the)g(output)g(table)h(is)f(not)h(empt)m(y)-8
+b(,)37 b(then)e(this)g(routine)227 3781 y(will)28 b(app)s(end)e(the)i
+(new)f(selected)i(ro)m(ws)e(after)h(the)g(existing)h(ro)m(ws.)39
+b(If)27 b(the)h(\014les)g(are)f(the)h(same,)h(delete)g(the)227
+3894 y(F)-10 b(ALSE)30 b(ro)m(ws)h(\(preserv)m(e)f(the)h(TR)m(UE)f(ro)m
+(ws\).)430 4151 y Fe(FTSROW\(inunit,)43 b(outunit,)j(expr,)g(>)i
+(status\))0 4409 y Fh(4)81 b Fi(Calculate)28 b(an)f(expression)f(for)h
+(the)f(indicated)i(ro)m(ws)e(of)h(a)g(table,)i(returning)d(the)h
+(results,)g(cast)h(as)f(datat)m(yp)s(e)227 4522 y(\(TSHOR)-8
+b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y)-8 b(.)48
+b(If)31 b(n)m(ulv)-5 b(al==NULL,)33 b(UNDEFs)g(will)f(b)s(e)g(zero)s
+(ed)g(out.)47 b(F)-8 b(or)227 4634 y(v)m(ector)37 b(results,)f(the)f(n)
+m(um)m(b)s(er)e(of)i(elemen)m(ts)i(returned)c(ma)m(y)j(b)s(e)e(less)h
+(than)g(nelemen)m(ts)g(if)g(nelemen)m(ts)h(is)227 4747
+y(not)30 b(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g(dimension.)
+40 b(Call)30 b(FTTEXP)g(to)g(obtain)h(the)f(dimensions)f(of)h(the)227
+4860 y(results.)430 5118 y Fe(FTCROW\(unit,datatype,ex)o(pr,)o(firs)o
+(trow)o(,ne)o(leme)o(nts,)o(nul)o(val,)41 b(>)620 5231
+y(array,anynul,status\))0 5488 y Fh(5)81 b Fi(Ev)-5 b(aluate)33
+b(an)g(expression)f(and)h(write)f(the)h(result)g(either)g(to)h(a)f
+(column)f(\(if)h(the)g(expression)f(is)h(a)g(function)227
+5601 y(of)d(other)g(columns)g(in)f(the)h(table\))h(or)f(to)g(a)h(k)m
+(eyw)m(ord)f(\(if)g(the)g(expression)f(ev)-5 b(aluates)32
+b(to)e(a)g(constan)m(t)i(and)227 5714 y(is)f(not)f(a)h(function)f(of)h
+(other)f(columns)h(in)f(the)g(table\).)42 b(In)30 b(the)h(former)e
+(case,)j(the)f(parName)f(parameter)p eop end
+%%Page: 65 71
+TeXDict begin 65 70 bop 0 299 a Fg(6.9.)72 b(CELESTIAL)29
+b(COORDINA)-8 b(TE)30 b(SYSTEM)f(SUBR)m(OUTINES)1307
+b Fi(65)227 555 y(is)40 b(the)g(name)f(of)h(the)g(column)f(\(whic)m(h)h
+(ma)m(y)g(or)f(ma)m(y)h(not)g(already)g(exist\))h(in)m(to)f(whic)m(h)g
+(to)g(write)g(the)227 668 y(results,)e(and)f(parInfo)e(con)m(tains)j
+(an)f(optional)g(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 b(alue)38
+b(if)e(a)h(new)f(column)h(is)f(b)s(eing)227 781 y(created.)42
+b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)29 b(is)g(not)g(sp)s(eci\014ed)g
+(then)f(a)i(default)f(format)g(will)h(b)s(e)e(used,)h(dep)s(ending)e
+(on)227 894 y(the)35 b(expression.)54 b(If)34 b(the)h(expression)f(ev)
+-5 b(aluates)37 b(to)e(a)g(constan)m(t,)i(then)e(the)g(result)f(will)h
+(b)s(e)f(written)h(to)227 1007 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m
+(en)h(b)m(y)g(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e
+(parameter)i(ma)m(y)g(b)s(e)f(used)227 1120 y(to)k(supply)e(an)h
+(optional)i(commen)m(t)f(for)f(the)g(k)m(eyw)m(ord.)42
+b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not)g(already)h(exist,)g
+(then)227 1233 y(the)f(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s
+(e)g(preceded)g(with)g(a)h('#')f(c)m(haracter,)j(otherwise)e(the)f
+(result)h(will)g(b)s(e)227 1346 y(written)h(to)g(a)g(column)f(with)g
+(that)h(name.)430 1605 y Fe(FTCALC\(inunit,)43 b(expr,)k(outunit,)e
+(parName,)h(parInfo,)f(>)j(status\))0 1865 y Fh(6)81
+b Fi(This)38 b(calculator)k(routine)e(is)f(similar)h(to)g(the)g
+(previous)f(routine,)j(except)f(that)f(the)g(expression)f(is)h(only)227
+1978 y(ev)-5 b(aluated)42 b(o)m(v)m(er)f(the)f(sp)s(eci\014ed)g(ro)m(w)
+g(ranges.)70 b(nranges)39 b(sp)s(eci\014es)h(the)g(n)m(um)m(b)s(er)f
+(of)h(ro)m(w)h(ranges,)i(and)227 2091 y(\014rstro)m(w)30
+b(and)g(lastro)m(w)h(giv)m(e)h(the)f(starting)g(and)f(ending)g(ro)m(w)g
+(n)m(um)m(b)s(er)f(of)i(eac)m(h)g(range.)430 2350 y Fe
+(FTCALC_RNG\(inunit,)42 b(expr,)47 b(outunit,)e(parName,)h(parInfo,)573
+2463 y(nranges,)f(firstrow,)h(lastrow,)f(>)j(status\))0
+2723 y Fh(7)81 b Fi(Ev)-5 b(aluate)36 b(the)f(giv)m(en)h(expression)f
+(and)g(return)f(dimension)g(and)h(t)m(yp)s(e)g(information)g(on)g(the)h
+(result.)54 b(The)227 2836 y(returned)37 b(dimensions)f(corresp)s(ond)g
+(to)j(a)e(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f
+(expression,)j(and)d(are)227 2949 y(equiv)-5 b(alen)m(t)26
+b(to)f(the)g(result)f(of)g(\014ts)p 1380 2949 28 4 v
+33 w(read)p 1585 2949 V 32 w(tdim\(\).)40 b(Note)25 b(that)g(strings)f
+(are)h(considered)f(to)h(b)s(e)f(one)g(elemen)m(t)227
+3062 y(regardless)31 b(of)g(string)f(length.)41 b(If)30
+b(maxdim)g(==)g(0,)h(then)f(naxes)g(is)h(optional.)430
+3321 y Fe(FTTEXP\(unit,)44 b(expr,)i(maxdim)g(>)i(datatype,)d(nelem,)h
+(naxis,)g(naxes,)g(status\))0 3655 y Fd(6.9)135 b(Celestial)48
+b(Co)t(ordinate)e(System)f(Subroutines)0 3905 y Fi(The)36
+b(FITS)g(comm)m(unit)m(y)h(has)f(adopted)h(a)g(set)g(of)g(k)m(eyw)m
+(ord)g(con)m(v)m(en)m(tions)h(that)f(de\014ne)f(the)h(transformations)0
+4018 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m(een)f(pixel)g(lo)s
+(cations)h(in)e(an)h(image)h(and)e(the)g(corresp)s(onding)g(celestial)j
+(co)s(ordinates)0 4131 y(on)25 b(the)h(sky)-8 b(,)27
+b(or)e(more)g(generally)-8 b(,)29 b(that)d(de\014ne)e(w)m(orld)h(co)s
+(ordinates)i(that)e(are)h(to)g(b)s(e)f(asso)s(ciated)i(with)e(an)m(y)h
+(pixel)0 4244 y(lo)s(cation)36 b(in)e(an)h(n-dimensional)f(FITS)g(arra)
+m(y)-8 b(.)54 b(CFITSIO)33 b(is)h(distributed)g(with)g(a)h(couple)f(of)
+h(self-con)m(tained)0 4357 y(W)-8 b(orld)28 b(Co)s(ordinate)f(System)f
+(\(W)m(CS\))i(routines,)g(ho)m(w)m(ev)m(er,)h(these)f(routines)f(DO)g
+(NOT)f(supp)s(ort)f(all)j(the)f(latest)0 4470 y(W)m(CS)38
+b(con)m(v)m(en)m(tions,)k(so)d(it)g(is)f(STR)m(ONGL)-8
+b(Y)38 b(RECOMMENDED)h(that)f(soft)m(w)m(are)i(dev)m(elop)s(ers)e(use)g
+(a)h(more)0 4583 y(robust)30 b(external)h(W)m(CS)f(library)-8
+b(.)41 b(Sev)m(eral)31 b(recommended)f(libraries)h(are:)95
+4842 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95
+4955 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95
+5068 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e
+(project)0 5328 y Fi(More)30 b(information)f(ab)s(out)g(the)g(W)m(CS)g
+(k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)h(and)d(links)h(to)h(all)g(of)f
+(these)g(W)m(CS)g(libraries)h(can)0 5441 y(b)s(e)g(found)f(on)h(the)h
+(FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)i(at)f(h)m
+(ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0
+5601 y(The)i(functions)h(pro)m(vided)g(in)f(these)i(external)f(W)m(CS)g
+(libraries)h(will)f(need)g(access)h(to)g(the)f(W)m(CS)g(information)0
+5714 y(con)m(tained)i(in)f(the)h(FITS)e(\014le)i(headers.)55
+b(One)35 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(pass)f(this)g
+(information)h(to)g(the)f(external)p eop end
+%%Page: 66 72
+TeXDict begin 66 71 bop 0 299 a Fi(66)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fi(library)39 b(is)h(to)h(use)e(FITSIO)g(to)h
+(cop)m(y)h(the)f(header)f(k)m(eyw)m(ords)h(in)m(to)h(one)f(long)g(c)m
+(haracter)i(string,)g(and)d(then)0 668 y(pass)29 b(this)h(string)g(to)g
+(an)g(in)m(terface)h(routine)f(in)g(the)g(external)g(library)g(that)g
+(will)g(extract)i(the)e(necessary)g(W)m(CS)0 781 y(information)h
+(\(e.g.,)h(see)f(the)f(astFitsChan)h(and)f(astPutCards)g(routines)g(in)
+g(the)h(Starlink)f(AST)g(library\).)0 941 y(The)24 b(follo)m(wing)j
+(FITSIO)c(routines)i(DO)g(NOT)f(supp)s(ort)f(the)i(more)g(recen)m(t)h
+(W)m(CS)f(con)m(v)m(en)m(tions)i(that)f(ha)m(v)m(e)g(b)s(een)0
+1054 y(appro)m(v)m(ed)37 b(as)h(part)f(of)g(the)h(FITS)e(standard.)61
+b(Consequen)m(tly)-8 b(,)39 b(the)f(follo)m(wing)g(routines)g(ARE)f(NO)
+m(W)h(DEP-)0 1167 y(RECA)-8 b(TED.)29 b(It)f(is)h(STR)m(ONGL)-8
+b(Y)28 b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)f(not)g
+(use)f(these)h(routines,)0 1280 y(and)h(instead)g(use)g(an)h(external)g
+(W)m(CS)f(library)-8 b(,)31 b(as)g(describ)s(ed)e(ab)s(o)m(v)m(e.)0
+1440 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)g(bac)m(kw)m
+(ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m(are.)39
+b(They)21 b(supp)s(ort)0 1553 y(the)30 b(follo)m(wing)i(standard)d(map)
+g(pro)5 b(jections:)41 b(-SIN,)30 b(-T)-8 b(AN,)31 b(-AR)m(C,)g(-NCP)-8
+b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h(\(these)0 1666
+y(are)f(the)g(legal)h(v)-5 b(alues)29 b(for)f(the)h(co)s(ordt)m(yp)s(e)
+f(parameter\).)41 b(These)28 b(routines)h(are)g(based)f(on)g(similar)h
+(functions)f(in)0 1779 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m
+(tities)i(are)f(giv)m(en)g(in)f(units)g(of)g(degrees.)0
+2048 y Fh(1)81 b Fi(Get)22 b(the)g(v)-5 b(alues)21 b(of)h(all)g(the)g
+(standard)f(FITS)f(celestial)k(co)s(ordinate)f(system)e(k)m(eyw)m(ords)
+h(from)f(the)h(header)f(of)h(a)227 2161 y(FITS)j(image)i(\(i.e.,)h(the)
+d(primary)g(arra)m(y)h(or)f(an)h(image)g(extension\).)40
+b(These)26 b(v)-5 b(alues)25 b(ma)m(y)h(then)g(b)s(e)e(passed)227
+2274 y(to)39 b(the)e(subroutines)g(that)h(p)s(erform)e(the)i(co)s
+(ordinate)g(transformations.)63 b(If)37 b(an)m(y)h(or)g(all)g(of)g(the)
+g(W)m(CS)227 2387 y(k)m(eyw)m(ords)32 b(are)f(not)g(presen)m(t,)h(then)
+f(default)g(v)-5 b(alues)31 b(will)h(b)s(e)e(returned.)41
+b(If)31 b(the)g(\014rst)g(co)s(ordinate)g(axis)h(is)227
+2500 y(the)d(declination-lik)m(e)j(co)s(ordinate,)e(then)e(this)g
+(routine)h(will)g(sw)m(ap)f(them)h(so)g(that)g(the)g(longitudinal-lik)m
+(e)227 2612 y(co)s(ordinate)i(is)g(returned)e(as)i(the)f(\014rst)g
+(axis.)227 2767 y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p
+1454 2767 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m
+(ords)f(instead)h(of)f(old)h(st)m(yle)227 2880 y('CDEL)-8
+b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)f
+(routine)h(will)g(calculate)j(and)c(return)g(the)h(v)-5
+b(alues)227 2993 y(of)33 b(the)g(equiv)-5 b(alen)m(t)35
+b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m
+(ersion)h(from)e(the)i(new-st)m(yle)g(k)m(eyw)m(ords)227
+3106 y(to)e(the)f(old-st)m(yle)h(v)-5 b(alues)31 b(is)g(sometimes)g
+(only)g(an)g(appro)m(ximation,)h(so)e(if)h(the)g(appro)m(ximation)h(is)
+e(larger)227 3219 y(than)37 b(an)h(in)m(ternally)g(de\014ned)e
+(threshold)h(lev)m(el,)k(then)c(CFITSIO)f(will)i(still)g(return)e(the)i
+(appro)m(ximate)227 3332 y(W)m(CS)f(k)m(eyw)m(ord)g(v)-5
+b(alues,)39 b(but)d(will)h(also)h(return)d(with)i(status)g(=)f(506,)k
+(to)e(w)m(arn)e(the)h(calling)h(program)227 3445 y(that)30
+b(appro)m(ximations)f(ha)m(v)m(e)h(b)s(een)e(made.)40
+b(It)29 b(is)g(then)f(up)g(to)h(the)g(calling)i(program)d(to)h(decide)h
+(whether)227 3558 y(the)k(appro)m(ximations)g(are)g(su\016cien)m(tly)g
+(accurate)i(for)d(the)h(particular)f(application,)j(or)e(whether)f
+(more)227 3671 y(precise)e(W)m(CS)f(transformations)h(m)m(ust)f(b)s(e)g
+(p)s(erformed)f(using)h(new-st)m(yle)h(W)m(CS)g(k)m(eyw)m(ords)f
+(directly)-8 b(.)382 3940 y Fe(FTGICS\(unit,)44 b(>)k
+(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o
+(pe,s)o(tatu)o(s\))0 4209 y Fh(2)81 b Fi(Get)34 b(the)f(v)-5
+b(alues)33 b(of)g(all)h(the)f(standard)f(FITS)h(celestial)i(co)s
+(ordinate)f(system)f(k)m(eyw)m(ords)g(from)g(the)g(header)227
+4322 y(of)j(a)h(FITS)e(table)h(where)g(the)g(X)g(and)f(Y)h(\(or)g(RA)g
+(and)g(DEC)f(co)s(ordinates)i(are)f(stored)g(in)g(2)g(separate)227
+4435 y(columns)c(of)g(the)g(table.)46 b(These)31 b(v)-5
+b(alues)32 b(ma)m(y)h(then)e(b)s(e)h(passed)f(to)h(the)g(subroutines)f
+(that)h(p)s(erform)f(the)227 4548 y(co)s(ordinate)g(transformations.)
+382 4817 y Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 4930
+y(xrval,yrval,xrpix,yrpix,)o(xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o
+(e,st)o(atu)o(s\))0 5199 y Fh(3)81 b Fi(Calculate)42
+b(the)g(celestial)h(co)s(ordinate)f(corresp)s(onding)e(to)i(the)f
+(input)f(X)h(and)g(Y)g(pixel)g(lo)s(cation)i(in)e(the)227
+5312 y(image.)382 5581 y Fe(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o
+(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 5694
+y(coordtype,)k(>)i(xpos,ypos,status\))p eop end
+%%Page: 67 73
+TeXDict begin 67 72 bop 0 299 a Fg(6.10.)73 b(FILE)30
+b(CHECKSUM)f(SUBR)m(OUTINES)2080 b Fi(67)0 555 y Fh(4)81
+b Fi(Calculate)42 b(the)g(X)f(and)f(Y)h(pixel)h(lo)s(cation)g(corresp)s
+(onding)e(to)i(the)f(input)f(celestial)k(co)s(ordinate)e(in)f(the)227
+668 y(image.)382 932 y Fe(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o
+(pix,)o(yrp)o(ix,x)o(inc,)o(yin)o(c,ro)o(t,)1241 1045
+y(coordtype,)k(>)i(xpix,ypix,status\))0 1383 y Fd(6.10)136
+b(File)45 b(Chec)l(ksum)g(Subroutines)0 1634 y Fi(The)33
+b(follo)m(wing)h(routines)f(either)h(compute)f(or)h(v)-5
+b(alidate)34 b(the)g(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m(A)
+-8 b(T)g(ASUM)0 1747 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f(the)
+h(n)m(umerical)f(v)-5 b(alue)33 b(of)f(the)g(32-bit,)i(1's)f(complemen)
+m(t)g(c)m(hec)m(ksum)g(for)f(the)g(data)0 1860 y(unit)26
+b(alone.)40 b(If)25 b(there)h(is)h(no)e(data)i(unit)f(then)f(the)h(v)-5
+b(alue)27 b(is)f(set)g(to)h(zero.)40 b(The)26 b(n)m(umerical)g(v)-5
+b(alue)27 b(is)f(stored)g(as)g(an)0 1973 y(ASCI)s(I)20
+b(string)i(of)h(digits,)h(enclosed)f(in)e(quotes,)k(b)s(ecause)d(the)g
+(v)-5 b(alue)23 b(ma)m(y)f(b)s(e)f(to)s(o)i(large)g(to)g(represen)m(t)f
+(as)g(a)h(32-bit)0 2086 y(signed)28 b(in)m(teger.)41
+b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)f(used)f(to)h(store)h(the)f
+(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)0 2199 y(the)f(c)m(hec)m(ksum)
+h(for)f(the)h(en)m(tire)g(HDU.)g(Storing)f(the)h(complemen)m(t,)h
+(rather)e(than)g(the)h(actual)g(c)m(hec)m(ksum,)h(forces)0
+2312 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)f(HDU)h(to)g(equal)g
+(zero.)47 b(If)31 b(the)i(\014le)f(has)g(b)s(een)f(mo)s(di\014ed)g
+(since)i(the)f(c)m(hec)m(ksums)0 2425 y(w)m(ere)39 b(computed,)i(then)e
+(the)g(HDU)g(c)m(hec)m(ksum)h(will)f(usually)f(not)h(equal)h(zero.)66
+b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0 2538 y(con)m(v)m(en)m
+(tions)34 b(are)f(based)f(on)g(a)g(pap)s(er)f(b)m(y)h(Rob)g(Seaman)g
+(published)f(in)h(the)g(pro)s(ceedings)g(of)g(the)h(AD)m(ASS)f(IV)0
+2651 y(conference)f(in)f(Baltimore)i(in)f(No)m(v)m(em)m(b)s(er)g(1994)h
+(and)e(a)h(later)g(revision)g(in)f(June)f(1995.)0 2914
+y Fh(1)81 b Fi(Compute)33 b(and)g(write)h(the)g(D)m(A)-8
+b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5
+b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 3027
+y(curren)m(t)25 b(header.)38 b(The)24 b(D)m(A)-8 b(T)g(ASUM)27
+b(v)-5 b(alue)25 b(is)f(the)h(32-bit)h(c)m(hec)m(ksum)f(for)f(the)h
+(data)g(unit,)h(expressed)e(as)h(a)227 3140 y(decimal)32
+b(in)m(teger)f(enclosed)g(in)f(single)h(quotes.)41 b(The)30
+b(CHECKSUM)g(k)m(eyw)m(ord)g(v)-5 b(alue)31 b(is)f(a)h(16-c)m(haracter)
+227 3253 y(string)j(whic)m(h)f(is)h(the)f(ASCI)s(I-enco)s(ded)f(v)-5
+b(alue)34 b(for)g(the)f(complemen)m(t)i(of)f(the)f(c)m(hec)m(ksum)i
+(for)e(the)h(whole)227 3366 y(HDU.)h(If)e(these)g(k)m(eyw)m(ords)h
+(already)g(exist,)h(their)e(v)-5 b(alues)34 b(will)g(b)s(e)f(up)s
+(dated)f(only)h(if)g(necessary)h(\(i.e.,)i(if)227 3479
+y(the)31 b(\014le)f(has)g(b)s(een)g(mo)s(di\014ed)f(since)i(the)g
+(original)g(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(w)m(ere)g(computed\).)382
+3743 y Fe(FTPCKS\(unit,)44 b(>)k(status\))0 4007 y Fh(2)81
+b Fi(Up)s(date)28 b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5
+b(alue)29 b(in)f(the)h(CHDU,)g(assuming)f(that)h(the)f(D)m(A)-8
+b(T)g(ASUM)30 b(k)m(eyw)m(ord)227 4119 y(exists)36 b(and)f(already)h
+(has)f(the)h(correct)g(v)-5 b(alue.)56 b(This)35 b(routine)g
+(calculates)j(the)e(new)f(c)m(hec)m(ksum)h(for)f(the)227
+4232 y(curren)m(t)40 b(header)g(unit,)j(adds)c(it)i(to)g(the)f(data)h
+(unit)f(c)m(hec)m(ksum,)k(enco)s(des)c(the)g(v)-5 b(alue)41
+b(in)m(to)g(an)f(ASCI)s(I)227 4345 y(string,)31 b(and)f(writes)g(the)h
+(string)f(to)h(the)g(CHECKSUM)e(k)m(eyw)m(ord.)382 4609
+y Fe(FTUCKS\(unit,)44 b(>)k(status\))0 4873 y Fh(3)81
+b Fi(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f(the)h(c)m(hec)m
+(ksums)g(and)f(comparing)h(them)f(with)g(the)h(k)m(eyw)m(ords.)53
+b(The)227 4986 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g(correctly)h(if)f
+(the)h(computed)f(c)m(hec)m(ksum)g(equals)h(the)f(v)-5
+b(alue)34 b(of)f(the)g(D)m(A)-8 b(T)g(ASUM)227 5099 y(k)m(eyw)m(ord.)64
+b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)g(HDU)h(\(header)f
+(plus)f(data)i(unit\))e(is)h(correct)h(if)f(it)h(equals)227
+5212 y(zero.)55 b(The)34 b(output)g(D)m(A)-8 b(T)g(A)m(OK)37
+b(and)d(HDUOK)h(parameters)g(in)f(this)h(subroutine)e(are)i(in)m
+(tegers)h(whic)m(h)227 5325 y(will)27 b(ha)m(v)m(e)g(a)f(v)-5
+b(alue)27 b(=)f(1)g(if)g(the)h(data)f(or)g(HDU)h(is)f(v)m(eri\014ed)h
+(correctly)-8 b(,)29 b(a)d(v)-5 b(alue)27 b(=)e(0)i(if)f(the)g(D)m(A)-8
+b(T)g(ASUM)28 b(or)227 5437 y(CHECKSUM)h(k)m(eyw)m(ord)g(is)h(not)f
+(presen)m(t,)h(or)f(v)-5 b(alue)30 b(=)f(-1)h(if)f(the)h(computed)f(c)m
+(hec)m(ksum)h(is)f(not)h(correct.)382 5701 y Fe(FTVCKS\(unit,)44
+b(>)k(dataok,hduok,status\))p eop end
+%%Page: 68 74
+TeXDict begin 68 73 bop 0 299 a Fi(68)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fh(4)81 b Fi(Compute)25 b(and)h(return)f(the)i
+(c)m(hec)m(ksum)g(v)-5 b(alues)26 b(for)g(the)h(CHDU)f(\(as)h(double)f
+(precision)h(v)-5 b(ariables\))27 b(without)227 668 y(creating)46
+b(or)e(mo)s(difying)g(the)h(CHECKSUM)e(and)h(D)m(A)-8
+b(T)g(ASUM)46 b(k)m(eyw)m(ords.)83 b(This)44 b(routine)g(is)h(used)227
+781 y(in)m(ternally)32 b(b)m(y)e(FTV)m(CKS,)g(but)g(ma)m(y)h(b)s(e)e
+(useful)h(in)g(other)h(situations)g(as)f(w)m(ell.)382
+1050 y Fe(FTGCKS\(unit,)44 b(>)k(datasum,hdusum,status\))0
+1319 y Fh(5)81 b Fi(Enco)s(de)33 b(a)h(c)m(hec)m(ksum)h(v)-5
+b(alue)34 b(\(stored)g(in)g(a)g(double)g(precision)g(v)-5
+b(ariable\))35 b(in)m(to)f(a)h(16-c)m(haracter)h(string.)51
+b(If)227 1432 y(COMPLEMENT)30 b(=)g(.true.)41 b(then)30
+b(the)g(32-bit)i(sum)d(v)-5 b(alue)31 b(will)g(b)s(e)f(complemen)m(ted)
+h(b)s(efore)f(enco)s(ding.)382 1701 y Fe(FTESUM\(sum,complement,)42
+b(>)47 b(checksum\))0 1971 y Fh(6)81 b Fi(Deco)s(de)39
+b(a)f(16)h(c)m(haracter)h(c)m(hec)m(ksum)e(string)g(in)m(to)h(a)g
+(double)e(precision)h(v)-5 b(alue.)65 b(If)37 b(COMPLEMENT)g(=)227
+2083 y(.true.)k(then)30 b(the)h(32-bit)g(sum)f(v)-5 b(alue)31
+b(will)f(b)s(e)g(complemen)m(ted)i(after)e(deco)s(ding.)382
+2353 y Fe(FTDSUM\(checksum,compleme)o(nt,)41 b(>)48 b(sum\))0
+2697 y Fd(6.11)180 b(Date)46 b(and)f(Time)g(Utilit)l(y)i(Routines)0
+2950 y Fi(The)29 b(follo)m(wing)i(routines)f(help)f(to)i(construct)f
+(or)f(parse)h(the)g(FITS)f(date/time)i(strings.)41 b(Starting)30
+b(in)f(the)h(y)m(ear)0 3063 y(2000,)k(the)d(FITS)g(D)m(A)-8
+b(TE)32 b(k)m(eyw)m(ord)g(v)-5 b(alues)31 b(\(and)h(the)f(v)-5
+b(alues)32 b(of)f(other)h(`D)m(A)-8 b(TE-')33 b(k)m(eyw)m(ords\))f(m)m
+(ust)f(ha)m(v)m(e)i(the)0 3176 y(form)j('YYYY-MM-DD')k(\(date)e(only\))
+f(or)g('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))h
+(where)0 3288 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)g(places)g(in)f
+(the)g(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30
+b(times)h(are)f(in)g(UTC.)g(The)g(older)0 3401 y('dd/mm/yy')g(date)h
+(format)g(ma)m(y)g(not)g(b)s(e)e(used)h(for)g(dates)h(after)g(01)g(Jan)
+m(uary)f(2000.)0 3670 y Fh(1)81 b Fi(Get)31 b(the)g(curren)m(t)f
+(system)g(date.)42 b(The)29 b(returned)h(y)m(ear)h(has)f(4)h(digits)g
+(\(1999,)h(2000,)h(etc.\))382 3940 y Fe(FTGSDT\()46 b(>)h(day,)g
+(month,)f(year,)g(status)g(\))0 4209 y Fh(2)81 b Fi(Get)34
+b(the)g(curren)m(t)g(system)f(date)i(and)e(time)h(string)g
+(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)i(will)f(b)s(e)227
+4322 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29
+b(as)e(indicated)f(b)m(y)g(a)g(returned)f(timeref)h(v)-5
+b(alue)27 b(=)e(0.)40 b(If)26 b(the)g(returned)e(v)-5
+b(alue)227 4435 y(of)31 b(timeref)g(=)g(1)g(then)f(this)h(indicates)g
+(that)h(it)f(w)m(as)g(not)g(p)s(ossible)f(to)h(con)m(v)m(ert)i(the)d
+(lo)s(cal)i(time)g(to)f(UTC,)227 4547 y(and)f(th)m(us)g(the)h(lo)s(cal)
+g(time)g(w)m(as)g(returned.)382 4817 y Fe(FTGSTM\(>)45
+b(datestr,)h(timeref,)f(status\))0 5086 y Fh(3)81 b Fi(Construct)26
+b(a)i(date)g(string)f(from)g(the)g(input)f(date)i(v)-5
+b(alues.)40 b(If)27 b(the)g(y)m(ear)h(is)g(b)s(et)m(w)m(een)f(1900)i
+(and)e(1998,)j(inclu-)227 5199 y(siv)m(e,)38 b(then)c(the)i(returned)d
+(date)j(string)f(will)g(ha)m(v)m(e)i(the)e(old)g(FITS)f(format)i
+(\('dd/mm/yy'\),)h(otherwise)227 5312 y(the)32 b(date)g(string)f(will)g
+(ha)m(v)m(e)i(the)e(new)g(FITS)g(format)g(\('YYYY-MM-DD'\).)36
+b(Use)c(FTTM2S)f(instead)g(to)227 5425 y(alw)m(a)m(ys)h(return)d(a)i
+(date)g(string)g(using)e(the)i(new)f(FITS)g(format.)382
+5694 y Fe(FTDT2S\()46 b(year,)g(month,)g(day,)h(>)g(datestr,)f
+(status\))p eop end
+%%Page: 69 75
+TeXDict begin 69 74 bop 0 299 a Fg(6.12.)73 b(GENERAL)30
+b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(69)0 555 y Fh(4)81
+b Fi(Construct)34 b(a)i(new-format)f(date)h(+)f(time)h(string)f
+(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57 b(If)34 b(the)i(y)m(ear,)227
+668 y(mon)m(th,)d(and)e(da)m(y)h(v)-5 b(alues)32 b(all)h(=)e(0)h(then)g
+(only)g(the)g(time)g(is)g(enco)s(ded)f(with)h(format)g
+('hh:mm:ss.ddd...'.)227 781 y(The)j(decimals)h(parameter)g(sp)s
+(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of)f(fractional)i
+(seconds)e(to)h(include)227 894 y(in)30 b(the)h(string.)41
+b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f(only)f(the)h(date)g
+(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)382 1154 y
+Fe(FTTM2S\()46 b(year,)g(month,)g(day,)h(hour,)f(minute,)g(second,)g
+(decimals,)764 1267 y(>)h(datestr,)f(status\))0 1527
+y Fh(5)81 b Fi(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g(input)
+e(string,)49 b(where)44 b(the)h(string)g(ma)m(y)g(b)s(e)f(in)h(either)g
+(the)g(old)227 1640 y(\('dd/mm/yy'\))31 b(or)g(new)e
+(\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))k(FITS)c(format.)382
+1900 y Fe(FTS2DT\(datestr,)43 b(>)48 b(year,)e(month,)g(day,)h
+(status\))0 2160 y Fh(6)81 b Fi(Return)30 b(the)h(date)h(and)f(time)h
+(as)f(read)g(from)g(the)h(input)e(string,)h(where)g(the)h(string)f(ma)m
+(y)h(b)s(e)e(in)h(either)h(the)227 2273 y(old)d(or)f(new)g(FITS)g
+(format.)40 b(The)28 b(returned)f(hours,)h(min)m(utes,)h(and)f(seconds)
+g(v)-5 b(alues)29 b(will)f(b)s(e)g(set)h(to)g(zero)227
+2386 y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g
+(time)h(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8
+b(,)227 2499 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i
+(v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f(the)g(date)h
+(is)f(not)h(included)e(in)227 2612 y(the)d(input)e(string)i
+(\('hh:mm:ss.ddd...'\).)382 2872 y Fe(FTS2TM\(datestr,)43
+b(>)48 b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0
+3206 y Fd(6.12)136 b(General)45 b(Utilit)l(y)i(Subroutines)0
+3456 y Fi(The)30 b(follo)m(wing)i(utilit)m(y)f(subroutines)f(ma)m(y)h
+(b)s(e)e(useful)h(for)g(certain)h(applications:)0 3716
+y Fh(1)81 b Fi(Return)29 b(the)i(starting)g(b)m(yte)g(address)e(of)i
+(the)f(CHDU)h(and)f(the)h(next)f(HDU.)382 3976 y Fe(FTGHAD\(iunit,)44
+b(>)j(curaddr,)f(nextaddr\))0 4236 y Fh(2)81 b Fi(Con)m(v)m(ert)31
+b(a)g(c)m(haracter)h(string)e(to)h(upp)s(ercase)e(\(op)s(erates)j(in)e
+(place\).)382 4496 y Fe(FTUPCH\(string\))0 4756 y Fh(3)81
+b Fi(Compare)43 b(the)i(input)e(template)i(string)f(against)h(the)g
+(reference)f(string)g(to)h(see)g(if)f(they)g(matc)m(h.)82
+b(The)227 4869 y(template)36 b(string)f(ma)m(y)g(con)m(tain)g(wildcard)
+f(c)m(haracters:)51 b('*')35 b(will)g(matc)m(h)g(an)m(y)g(sequence)g
+(of)f(c)m(haracters)227 4982 y(\(including)j(zero)h(c)m(haracters\))g
+(and)e(')10 b(?')60 b(will)38 b(matc)m(h)f(an)m(y)g(single)h(c)m
+(haracter)g(in)f(the)g(reference)g(string.)227 5095 y(The)31
+b('#')g(c)m(haracter)i(will)f(matc)m(h)g(an)m(y)f(consecutiv)m(e)j
+(string)d(of)g(decimal)h(digits)g(\(0)g(-)g(9\).)43 b(If)31
+b(CASESN)f(=)227 5208 y(.true.)45 b(then)31 b(the)g(matc)m(h)i(will)f
+(b)s(e)f(case)h(sensitiv)m(e.)46 b(The)31 b(returned)f(MA)-8
+b(TCH)32 b(parameter)g(will)g(b)s(e)f(.true.)227 5321
+y(if)j(the)h(2)f(strings)g(matc)m(h,)j(and)c(EXA)m(CT)h(will)h(b)s(e)e
+(.true.)53 b(if)34 b(the)g(matc)m(h)h(is)g(exact)g(\(i.e.,)i(if)d(no)g
+(wildcard)227 5434 y(c)m(haracters)e(w)m(ere)f(used)f(in)g(the)g(matc)m
+(h\).)42 b(Both)31 b(strings)f(m)m(ust)h(b)s(e)e(68)j(c)m(haracters)f
+(or)g(less)f(in)g(length.)382 5694 y Fe(FTCMPS\(str_template,)42
+b(string,)k(casesen,)f(>)j(match,)e(exact\))p eop end
+%%Page: 70 76
+TeXDict begin 70 75 bop 0 299 a Fi(70)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)0 555 y Fh(4)81 b Fi(T)-8 b(est)31 b(that)g(the)f(k)m
+(eyw)m(ord)h(name)f(con)m(tains)i(only)e(legal)j(c)m(haracters:)42
+b(A-Z,0-9,)32 b(h)m(yphen,)d(and)h(underscore.)382 820
+y Fe(FTTKEY\(keyword,)43 b(>)48 b(status\))0 1085 y Fh(5)81
+b Fi(T)-8 b(est)31 b(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains)
+i(only)e(legal)i(prin)m(table)f(ASCI)s(I)e(c)m(haracters)382
+1350 y Fe(FTTREC\(card,)44 b(>)k(status\))0 1615 y Fh(6)81
+b Fi(T)-8 b(est)25 b(whether)f(the)h(curren)m(t)f(header)h(con)m(tains)
+g(an)m(y)g(NULL)g(\(ASCI)s(I)e(0\))j(c)m(haracters.)40
+b(These)24 b(c)m(haracters)j(are)227 1728 y(illegal)37
+b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g(undetected)g(b)m(y)f
+(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i(header)227
+1841 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in)m(terpreted)
+g(as)h(the)f(normal)g(end-of-string)h(terminator.)41
+b(This)27 b(routine)227 1954 y(returns)h(the)g(p)s(osition)h(of)g(the)g
+(\014rst)f(n)m(ull)g(c)m(haracter)i(in)f(the)f(header,)h(or)g(zero)g
+(if)g(there)g(are)g(no)f(n)m(ulls.)40 b(F)-8 b(or)227
+2067 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m
+(ould)f(indicate)h(that)g(the)f(\014rst)f(NULL)h(is)g(lo)s(cated)h(in)f
+(the)g(30th)227 2180 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m
+(ord)h(in)f(the)h(header)f(\(recall)i(that)f(eac)m(h)h(header)e(record)
+h(is)f(80)h(c)m(haracters)227 2293 y(long\).)56 b(Note)36
+b(that)g(this)f(is)g(one)g(of)g(the)g(few)g(FITSIO)f(routines)h(in)f
+(whic)m(h)h(the)g(returned)f(v)-5 b(alue)36 b(is)f(not)227
+2406 y(necessarily)d(equal)e(to)i(the)e(status)h(v)-5
+b(alue\).)382 2671 y Fe(FTNCHK\(unit,)44 b(>)k(status\))0
+2935 y Fh(7)81 b Fi(P)m(arse)27 b(a)f(header)h(k)m(eyw)m(ord)g(record)f
+(and)g(return)f(the)i(name)f(of)h(the)f(k)m(eyw)m(ord)h(and)f(the)h
+(length)f(of)h(the)g(name.)227 3048 y(The)34 b(k)m(eyw)m(ord)h(name)f
+(normally)h(o)s(ccupies)f(the)h(\014rst)e(8)i(c)m(haracters)g(of)g(the)
+f(record,)i(except)f(under)e(the)227 3161 y(HIERAR)m(CH)e(con)m(v)m(en)
+m(tion)h(where)e(the)h(name)f(can)h(b)s(e)f(up)f(to)i(70)g(c)m
+(haracters)h(in)e(length.)382 3426 y Fe(FTGKNM\(card,)44
+b(>)k(keyname,)d(keylength,)g(staThe)h('\\#')h(character)e(will)i
+(match)f(any)h(consecutive)e(string)191 3539 y(of)i(decimal)f(digits)g
+(\(0)h(-)h(9\).)f(tus\))0 3804 y Fh(8)81 b Fi(P)m(arse)34
+b(a)h(header)f(k)m(eyw)m(ord)h(record.)52 b(This)33 b(subroutine)g
+(parses)h(the)g(input)g(header)g(record)g(to)h(return)e(the)227
+3917 y(v)-5 b(alue)27 b(\(as)g(a)g(c)m(haracter)g(string\))g(and)f
+(commen)m(t)h(strings.)39 b(If)26 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v)
+-5 b(alue)27 b(\(columns)f(9-10)227 4030 y(not)h(equal)f(to)h('=)f
+('\),)i(then)e(the)g(v)-5 b(alue)27 b(string)f(is)g(returned)f(blank)h
+(and)f(the)h(commen)m(t)i(string)e(is)g(set)g(equal)227
+4143 y(to)31 b(column)g(9)f(-)h(80)g(of)g(the)f(input)g(string.)382
+4408 y Fe(FTPSVC\(card,)44 b(>)k(value,comment,status\))0
+4673 y Fh(9)81 b Fi(Construct)35 b(a)i(sequence)f(k)m(eyw)m(ord)h(name)
+f(\(R)m(OOT)g(+)g(nnn\).)57 b(This)35 b(subroutine)g(app)s(ends)f(the)j
+(sequence)227 4786 y(n)m(um)m(b)s(er)29 b(to)i(the)g(ro)s(ot)g(string)f
+(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f(+)f(2)h
+(=)f('NAXIS2'\))382 5051 y Fe(FTKEYN\(keyroot,seq_no,)42
+b(>)47 b(keyword,status\))0 5316 y Fh(10)f Fi(Construct)30
+b(a)g(sequence)g(k)m(eyw)m(ord)h(name)f(\(n)f(+)h(R)m(OOT\).)g(This)f
+(subroutine)g(concatenates)j(the)f(sequence)227 5429
+y(n)m(um)m(b)s(er)20 b(to)j(the)e(fron)m(t)h(of)g(the)f(ro)s(ot)h
+(string)g(to)g(create)h(a)f(k)m(eyw)m(ord)g(name)g(\(e.g.,)j(1)d(+)f
+('CTYP')g(=)g('1CTYP'\))382 5694 y Fe(FTNKEY\(seq_no,keyroot,)42
+b(>)47 b(keyword,status\))p eop end
+%%Page: 71 77
+TeXDict begin 71 76 bop 0 299 a Fg(6.12.)73 b(GENERAL)30
+b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(71)0 555 y Fh(11)46
+b Fi(Determine)35 b(the)f(datat)m(yp)s(e)g(of)g(a)g(k)m(eyw)m(ord)h(v)
+-5 b(alue)34 b(string.)50 b(This)33 b(subroutine)g(parses)g(the)h(k)m
+(eyw)m(ord)g(v)-5 b(alue)227 668 y(string)31 b(\(usually)f(columns)g
+(11-30)j(of)d(the)h(header)f(record\))g(to)i(determine)e(its)h(datat)m
+(yp)s(e.)382 936 y Fe(FTDTYP\(value,)44 b(>)j(dtype,status\))0
+1204 y Fh(11)f Fi(Return)c(the)i(class)g(of)f(input)f(header)h(record.)
+79 b(The)43 b(record)g(is)g(classi\014ed)g(in)m(to)h(one)g(of)f(the)g
+(follo)m(wing)227 1317 y(categories)36 b(\(the)e(class)f(v)-5
+b(alues)34 b(are)f(de\014ned)f(in)h(\014tsio.h\).)49
+b(Note)35 b(that)e(this)g(is)g(one)h(of)f(the)g(few)g(FITSIO)227
+1430 y(routines)e(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5
+b(alue.)334 1697 y Fe(Class)94 b(Value)619 b(Keywords)95
+1810 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,)
+g(EXTEND,)g(BLOCKED,)1002 1923 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002
+2036 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002
+2149 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary)
+f(array)1002 2262 y(that)h(define)f(the)h(FITS)g(format.)95
+2375 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used)
+i(in)g(the)g(compressed)1002 2488 y(image)g(format)f(ZIMAGE,)g
+(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 2601 y(ZTILEn,)g(ZBITPIX,)g
+(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 2714 y(TYP_SCAL_KEY)140
+b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 2826
+y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 2939
+y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 3052 y(TYP_RANG_KEY)140
+b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f
+(DATAMAX)95 3165 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46
+b(TUNITn)95 3278 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95
+3391 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f
+(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 3504 y(TYP_CKSUM_KEY)f(100)94
+b(CHECKSUM,)46 b(DATASUM)95 3617 y(TYP_WCS_KEY)141 b(110)94
+b(CTYPEn,)46 b(CUNITn,)g(CRVALn,)g(CRPIXn,)g(CROTAn,)f(CDELTn)1002
+3730 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs)1002
+3843 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h
+(TCRPXn,)1002 3956 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f
+(TCDLTn,)h(TCROTn)1002 4068 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g
+(jCRVLn,)f(jCRVns,)h(iCRPXn,)1002 4181 y(iCRPns,)g(jiCDn,)94
+b(jiCDns,)46 b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002
+4294 y(\(i,j,m,n)g(are)h(integers,)e(s)i(is)h(any)f(letter\))95
+4407 y(TYP_REFSYS_KEY)d(120)j(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f
+(RADECSYS,)g(RADESYSs)95 4520 y(TYP_COMM_KEY)140 b(130)47
+b(COMMENT,)f(HISTORY,)f(\(blank)h(keyword\))95 4633 y(TYP_CONT_KEY)140
+b(140)47 b(CONTINUE)95 4746 y(TYP_USER_KEY)140 b(150)47
+b(all)g(other)g(keywords)430 4972 y(class)f(=)h(FTGKCL)f(\(char)h
+(*card\))0 5240 y Fh(12)f Fi(P)m(arse)f(the)g('TF)m(ORM')h(binary)e
+(table)i(column)e(format)h(string.)84 b(This)44 b(subroutine)g(parses)g
+(the)h(input)227 5352 y(TF)m(ORM)27 b(c)m(haracter)g(string)f(and)g
+(returns)f(the)h(in)m(teger)h(datat)m(yp)s(e)g(co)s(de,)h(the)e(rep)s
+(eat)g(coun)m(t)h(of)f(the)g(\014eld,)227 5465 y(and,)f(in)e(the)h
+(case)g(of)g(c)m(haracter)h(string)e(\014elds,)i(the)e(length)h(of)g
+(the)g(unit)f(string.)38 b(The)23 b(follo)m(wing)i(datat)m(yp)s(e)227
+5578 y(co)s(des)e(are)h(returned)e(\(the)h(negativ)m(e)i(of)f(the)f(v)
+-5 b(alue)23 b(is)g(returned)f(if)h(the)g(column)g(con)m(tains)h(v)-5
+b(ariable-length)227 5691 y(arra)m(ys\):)p eop end
+%%Page: 72 78
+TeXDict begin 72 77 bop 0 299 a Fi(72)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)764 555 y Fe(Datatype)761 b(DATACODE)46
+b(value)764 668 y(bit,)g(X)907 b(1)764 781 y(byte,)46
+b(B)811 b(11)764 894 y(logical,)45 b(L)668 b(14)764 1007
+y(ASCII)46 b(character,)f(A)286 b(16)764 1120 y(short)46
+b(integer,)g(I)381 b(21)764 1233 y(integer,)45 b(J)668
+b(41)764 1346 y(real,)46 b(E)811 b(42)764 1458 y(double)46
+b(precision,)f(D)238 b(82)764 1571 y(complex)809 b(83)764
+1684 y(double)46 b(complex)475 b(163)382 1910 y(FTBNFM\(tform,)44
+b(>)j(datacode,repeat,width,stat)o(us\))0 2147 y Fh(13)f
+Fi(P)m(arse)38 b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5
+b(alue)37 b(that)h(de\014nes)e(the)h(column)g(format)h(in)e(an)h(ASCI)s
+(I)f(table.)62 b(This)227 2260 y(routine)31 b(parses)g(the)g(input)g
+(TF)m(ORM)g(c)m(haracter)i(string)e(and)f(returns)g(the)i(datat)m(yp)s
+(e)g(co)s(de,)f(the)h(width)227 2373 y(of)40 b(the)h(column,)h(and)e
+(\(if)g(it)g(is)h(a)f(\015oating)h(p)s(oin)m(t)f(column\))g(the)g(n)m
+(um)m(b)s(er)f(of)h(decimal)h(places)g(to)g(the)227 2486
+y(righ)m(t)28 b(of)g(the)f(decimal)h(p)s(oin)m(t.)40
+b(The)27 b(returned)f(datat)m(yp)s(e)i(co)s(des)f(are)h(the)g(same)f
+(as)h(for)f(the)g(binary)g(table,)227 2599 y(listed)41
+b(ab)s(o)m(v)m(e,)j(with)c(the)g(follo)m(wing)i(additional)f(rules:)60
+b(in)m(teger)42 b(columns)e(that)g(are)h(b)s(et)m(w)m(een)g(1)g(and)227
+2712 y(4)36 b(c)m(haracters)i(wide)d(are)i(de\014ned)d(to)j(b)s(e)e
+(short)h(in)m(tegers)h(\(co)s(de)f(=)g(21\).)58 b(Wider)36
+b(in)m(teger)h(columns)f(are)227 2825 y(de\014ned)j(to)i(b)s(e)e
+(regular)h(in)m(tegers)i(\(co)s(de)e(=)g(41\).)71 b(Similarly)-8
+b(,)43 b(Fixed)d(decimal)h(p)s(oin)m(t)f(columns)g(\(with)227
+2937 y(TF)m(ORM)30 b(=)g('Fw.d'\))g(are)g(de\014ned)f(to)h(b)s(e)g
+(single)g(precision)g(reals)g(\(co)s(de)h(=)e(42\))i(if)f(w)f(is)h(b)s
+(et)m(w)m(een)g(1)h(and)227 3050 y(7)i(c)m(haracters)h(wide,)f
+(inclusiv)m(e.)47 b(Wider)32 b('F')h(columns)f(will)h(return)e(a)i
+(double)f(precision)g(data)h(co)s(de)g(\(=)227 3163 y(82\).)54
+b('Ew.d')34 b(format)g(columns)g(will)h(ha)m(v)m(e)g(dataco)s(de)g(=)f
+(42,)j(and)c('Dw.d')i(format)f(columns)g(will)h(ha)m(v)m(e)227
+3276 y(dataco)s(de)d(=)e(82.)382 3513 y Fe(FTASFM\(tform,)44
+b(>)j(datacode,width,decimals,st)o(atus)o(\))0 3750 y
+Fh(14)f Fi(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and)
+g(total)i(ASCI)s(I)d(table)j(width)d(based)i(on)f(the)h(input)e(arra)m
+(y)227 3863 y(of)e(ASCI)s(I)e(table)i(TF)m(ORM)g(v)-5
+b(alues.)40 b(The)26 b(SP)-8 b(A)m(CE)27 b(input)e(parameter)i
+(de\014nes)f(ho)m(w)h(man)m(y)f(blank)h(spaces)227 3976
+y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m(een)e(eac)m(h)g(column)g(\(it)g
+(is)f(recommended)g(to)h(ha)m(v)m(e)h(one)e(space)h(b)s(et)m(w)m(een)g
+(columns)f(for)227 4089 y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).)
+382 4326 y Fe(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48
+b(rowlen,tbcol,status\))0 4563 y Fh(15)e Fi(P)m(arse)36
+b(a)f(template)h(string)f(and)g(return)f(a)h(formatted)h(80-c)m
+(haracter)h(string)e(suitable)h(for)f(app)s(ending)e(to)227
+4675 y(\(or)40 b(deleting)h(from\))e(a)h(FITS)f(header)h(\014le.)68
+b(This)39 b(subroutine)f(is)i(useful)f(for)g(parsing)g(lines)h(from)f
+(an)227 4788 y(ASCI)s(I)34 b(template)j(\014le)f(and)e(reformatting)j
+(them)e(in)m(to)i(legal)g(FITS)d(header)i(records.)55
+b(The)35 b(formatted)227 4901 y(string)c(ma)m(y)g(then)f(b)s(e)g
+(passed)g(to)i(the)e(FTPREC,)h(FTMCRD,)g(or)f(FTDKEY)h(subroutines)e
+(to)j(app)s(end)227 5014 y(or)f(mo)s(dify)e(a)i(FITS)f(header)g
+(record.)382 5251 y Fe(FTGTHD\(template,)43 b(>)48 b
+(card,hdtype,status\))0 5488 y Fi(The)23 b(input)h(TEMPLA)-8
+b(TE)23 b(c)m(haracter)j(string)e(generally)h(should)e(con)m(tain)i(3)g
+(tok)m(ens:)38 b(\(1\))25 b(the)f(KEYNAME,)h(\(2\))0
+5601 y(the)h(V)-10 b(ALUE,)26 b(and)f(\(3\))i(the)f(COMMENT)g(string.)
+39 b(The)25 b(TEMPLA)-8 b(TE)26 b(string)g(m)m(ust)f(adhere)h(to)g(the)
+g(follo)m(wing)0 5714 y(format:)p eop end
+%%Page: 73 79
+TeXDict begin 73 78 bop 0 299 a Fg(6.12.)73 b(GENERAL)30
+b(UTILITY)g(SUBR)m(OUTINES)1979 b Fi(73)0 555 y Fh(-)80
+b Fi(The)24 b(KEYNAME)g(tok)m(en)h(m)m(ust)e(b)s(egin)h(in)f(columns)h
+(1-8)h(and)e(b)s(e)h(a)g(maxim)m(um)g(of)g(8)g(c)m(haracters)h(long.)39
+b(If)24 b(the)227 668 y(\014rst)32 b(8)h(c)m(haracters)h(of)e(the)h
+(template)h(line)e(are)h(blank)f(then)g(the)h(remainder)f(of)g(the)h
+(line)g(is)f(considered)227 781 y(to)42 b(b)s(e)e(a)h(FITS)f(commen)m
+(t)h(\(with)g(a)g(blank)f(k)m(eyw)m(ord)h(name\).)72
+b(A)41 b(legal)i(FITS)d(k)m(eyw)m(ord)h(name)f(ma)m(y)227
+894 y(only)35 b(con)m(tain)i(the)e(c)m(haracters)h(A-Z,)f(0-9,)j(and)c
+('-')i(\(min)m(us)f(sign\))g(and)f(underscore.)54 b(This)34
+b(subroutine)227 1007 y(will)42 b(automatically)i(con)m(v)m(ert)f(an)m
+(y)f(lo)m(w)m(ercase)i(c)m(haracters)e(to)h(upp)s(ercase)d(in)h(the)h
+(output)f(string.)73 b(If)227 1120 y(KEYNAME)33 b(=)f('COMMENT')h(or)g
+('HISTOR)-8 b(Y')32 b(then)h(the)f(remainder)g(of)h(the)g(line)g(is)g
+(considered)f(to)227 1233 y(b)s(e)e(a)h(FITS)e(COMMENT)h(or)h(HISTOR)-8
+b(Y)30 b(record,)g(resp)s(ectiv)m(ely)-8 b(.)0 1490 y
+Fh(-)80 b Fi(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s(e)h
+(separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g(more)
+g(spaces)g(and/or)227 1603 y(an)i('=')g(c)m(haracter.)41
+b(The)27 b(datat)m(yp)s(e)i(of)f(the)g(V)-10 b(ALUE)27
+b(tok)m(en)i(\(n)m(umeric,)g(logical,)i(or)d(c)m(haracter)h(string\))f
+(is)227 1716 y(automatically)35 b(determined)c(and)h(the)g(output)f
+(CARD)h(string)g(is)g(formatted)g(accordingly)-8 b(.)47
+b(The)31 b(v)-5 b(alue)227 1829 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f
+(forced)g(to)i(b)s(e)e(in)m(terpreted)g(as)h(a)g(string)g(\(e.g.)48
+b(if)33 b(it)g(is)f(a)h(string)g(of)f(n)m(umeric)h(digits\))g(b)m(y)227
+1942 y(enclosing)g(it)f(in)f(single)h(quotes.)45 b(If)31
+b(the)h(v)-5 b(alue)32 b(tok)m(en)g(is)g(a)g(c)m(haracter)h(string)e
+(that)i(con)m(tains)f(1)g(or)g(more)227 2055 y(em)m(b)s(edded)39
+b(blank)g(space)h(c)m(haracters)h(or)e(slash)h(\('/'\))h(c)m(haracters)
+g(then)e(the)g(en)m(tire)i(c)m(haracter)g(string)227
+2168 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0
+2425 y Fh(-)80 b Fi(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but)
+e(if)g(presen)m(t)g(m)m(ust)g(b)s(e)g(separated)g(from)g(the)h(V)-10
+b(ALUE)28 b(tok)m(en)h(b)m(y)227 2538 y(a)i(blank)f(space)h(or)f(a)h
+('/')g(c)m(haracter.)0 2796 y Fh(-)80 b Fi(One)32 b(exception)i(to)f
+(the)g(ab)s(o)m(v)m(e)h(rules)e(is)g(that)h(if)g(the)f(\014rst)g
+(non-blank)g(c)m(haracter)i(in)e(the)h(template)h(string)227
+2909 y(is)h(a)g(min)m(us)f(sign)h(\('-'\))h(follo)m(w)m(ed)g(b)m(y)f(a)
+g(single)g(tok)m(en,)i(or)e(a)g(single)g(tok)m(en)h(follo)m(w)m(ed)g(b)
+m(y)f(an)f(equal)i(sign,)227 3022 y(then)29 b(it)g(is)g(in)m(terpreted)
+f(as)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)g(whic)m(h)f(is)h(to)g(b)s
+(e)f(deleted)i(from)e(the)h(FITS)f(header.)0 3279 y Fh(-)80
+b Fi(The)40 b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h
+(string)f(starts)g(with)g(a)h(min)m(us)e(sign)h(and)f(is)h(follo)m(w)m
+(ed)227 3392 y(b)m(y)33 b(2)g(tok)m(ens)g(then)g(the)f(second)h(tok)m
+(en)h(is)e(in)m(terpreted)h(as)g(the)g(new)f(name)g(for)h(the)g(k)m
+(eyw)m(ord)g(sp)s(eci\014ed)227 3505 y(b)m(y)h(\014rst)e(tok)m(en.)52
+b(In)33 b(this)g(case)i(the)e(old)h(k)m(eyw)m(ord)g(name)g(\(\014rst)f
+(tok)m(en\))i(is)e(returned)g(in)g(c)m(haracters)i(1-8)227
+3618 y(of)e(the)g(returned)e(CARD)i(string,)g(and)f(the)h(new)f(k)m
+(eyw)m(ord)h(name)g(\(the)g(second)f(tok)m(en\))i(is)f(returned)e(in)
+227 3731 y(c)m(haracters)c(41-48)h(of)e(the)f(returned)g(CARD)g
+(string.)40 b(These)25 b(old)h(and)f(new)g(names)g(ma)m(y)h(then)f(b)s
+(e)g(passed)227 3844 y(to)31 b(the)g(FTMNAM)g(subroutine)f(whic)m(h)g
+(will)g(c)m(hange)i(the)e(k)m(eyw)m(ord)h(name.)0 4101
+y(The)f(HDTYPE)g(output)g(parameter)h(indicates)g(ho)m(w)g(the)f
+(returned)g(CARD)g(string)g(should)g(b)s(e)g(in)m(terpreted:)382
+4359 y Fe(hdtype)857 b(interpretation)382 4472 y(------)523
+b(-------------------------)o(----)o(---)o(----)o(----)o(---)o(----)o
+(--)525 4585 y(-2)572 b(Modify)46 b(the)h(name)g(of)g(the)g(keyword)f
+(given)g(in)h(CARD\(1:8\))1193 4698 y(to)g(the)g(new)g(name)g(given)f
+(in)h(CARD\(41:48\))525 4924 y(-1)572 b(CARD\(1:8\))45
+b(contains)h(the)h(name)g(of)g(a)g(keyword)f(to)h(be)g(deleted)1193
+5036 y(from)g(the)g(FITS)f(header.)573 5262 y(0)572 b(append)46
+b(the)h(CARD)g(string)f(to)h(the)g(FITS)g(header)f(if)h(the)1193
+5375 y(keyword)f(does)h(not)g(already)e(exist,)h(otherwise)g(update)
+1193 5488 y(the)h(value/comment)d(if)j(the)g(keyword)f(is)h(already)f
+(present)1193 5601 y(in)h(the)g(header.)p eop end
+%%Page: 74 80
+TeXDict begin 74 79 bop 0 299 a Fi(74)1319 b Fg(CHAPTER)29
+b(6.)112 b(AD)m(V)-10 b(ANCED)32 b(INTERF)-10 b(A)m(CE)30
+b(SUBR)m(OUTINES)573 555 y Fe(1)572 b(simply)46 b(append)g(this)h
+(keyword)f(to)h(the)g(FITS)g(header)f(\(CARD)1193 668
+y(is)h(either)f(a)i(HISTORY)e(or)h(COMMENT)f(keyword\).)573
+894 y(2)572 b(This)47 b(is)g(a)g(FITS)g(END)g(record;)f(it)h(should)f
+(not)h(be)g(written)1193 1007 y(to)g(the)g(FITS)g(header)f(because)g
+(FITSIO)g(automatically)1193 1120 y(appends)g(the)h(END)g(record)f
+(when)h(the)f(header)h(is)g(closed.)0 1380 y Fi(EXAMPLES:)30
+b(The)g(follo)m(wing)i(lines)e(illustrate)i(v)-5 b(alid)31
+b(input)e(template)j(strings:)286 1639 y Fe(INTVAL)46
+b(7)i(This)f(is)g(an)g(integer)f(keyword)286 1752 y(RVAL)524
+b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f(point)g(keyword)286
+1865 y(EVAL=-12.45E-03)92 b(This)46 b(is)i(a)f(floating)f(point)g
+(keyword)g(in)h(exponential)e(notation)286 1978 y(lval)i(F)g(This)g(is)
+g(a)h(boolean)e(keyword)859 2091 y(This)h(is)g(a)g(comment)f(keyword)g
+(with)h(a)g(blank)f(keyword)g(name)286 2204 y(SVAL1)h(=)g('Hello)f
+(world')142 b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286
+2317 y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword)
+286 2430 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e
+(keyword)g(with)g(the)h(value)g('123+)189 b(')286 2543
+y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g
+(keyword)286 2655 y(-)h(DATE)286 2768 y(#)g(the)f(following)e(template)
+h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286
+2881 y(-)h(NAME)e(OBJECT)0 3141 y Fh(16)g Fi(P)m(arse)35
+b(the)g(input)f(string)h(con)m(taining)h(a)f(list)h(of)f(ro)m(ws)f(or)h
+(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)i(arra)m(ys)f(con-)227
+3254 y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w)f(in)f(eac)m(h)
+i(range.)40 b(F)-8 b(or)26 b(example,)i(if)d(ro)m(wlist)i(=)e("3-5,)k
+(6,)e(8-9")h(then)d(it)i(will)227 3367 y(return)34 b(n)m(umranges)h(=)g
+(3,)h(rangemin)f(=)g(3,)i(6,)g(8)e(and)g(rangemax)g(=)g(5,)i(6,)g(9.)55
+b(A)m(t)36 b(most,)h('maxranges')227 3480 y(n)m(um)m(b)s(er)31
+b(of)h(ranges)f(will)h(b)s(e)g(returned.)43 b('maxro)m(ws')32
+b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(in)f(the)h
+(table;)227 3593 y(an)m(y)e(ro)m(ws)f(or)g(ranges)g(larger)h(than)f
+(this)g(will)g(b)s(e)g(ignored.)40 b(The)29 b(ro)m(ws)g(m)m(ust)g(b)s
+(e)f(sp)s(eci\014ed)h(in)f(increasing)227 3706 y(order,)33
+b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)48
+b(A)33 b(min)m(us)e(sign)i(ma)m(y)g(b)s(e)e(use)h(to)h(sp)s(ecify)f
+(all)h(the)g(ro)m(ws)f(to)227 3819 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er)
+h(b)s(ound,)d(so)i("50-")h(means)e(all)i(the)f(ro)m(ws)f(from)g(50)h
+(to)h(the)e(end)g(of)h(the)f(table,)j(and)227 3931 y("-")d(means)e(all)
+h(the)g(ro)m(ws)f(in)g(the)h(table,)g(from)f(1)h(-)g(maxro)m(ws.)191
+4191 y Fe(FTRWRG\(rowlist,)44 b(maxrows,)h(maxranges,)g(>)525
+4304 y(numranges,)g(rangemin,)g(rangemax,)h(status\))p
+eop end
+%%Page: 75 81
+TeXDict begin 75 80 bop 0 1225 a Ff(Chapter)65 b(7)0
+1687 y Fl(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0
+2180 y Fi(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p
+614 2180 V 34 w(data)i(function)e(in)h(CFITSIO)e(pro)m(vides)i(a)g
+(unique)e(metho)s(d)i(of)g(executing)h(an)e(arbitrary)0
+2293 y(user-supplied)35 b(`w)m(ork')i(function)f(that)h(op)s(erates)g
+(on)g(ro)m(ws)f(of)h(data)g(in)f(FITS)g(tables)h(or)f(on)h(pixels)f(in)
+h(FITS)0 2406 y(images.)i(Rather)24 b(than)e(explicitly)j(reading)e
+(and)g(writing)g(the)g(FITS)g(images)h(or)f(columns)g(of)g(data,)i(one)
+f(instead)0 2518 y(calls)36 b(the)g(CFITSIO)d(iterator)k(routine,)g
+(passing)e(to)h(it)g(the)f(name)g(of)h(the)f(user's)g(w)m(ork)g
+(function)g(that)h(is)f(to)0 2631 y(b)s(e)30 b(executed)h(along)g(with)
+f(a)h(list)g(of)f(all)h(the)f(table)i(columns)e(or)g(image)h(arra)m(ys)
+g(that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744
+y(w)m(ork)37 b(function.)61 b(The)37 b(CFITSIO)e(iterator)k(function)e
+(then)g(do)s(es)g(all)h(the)f(w)m(ork)g(of)h(allo)s(cating)h(memory)e
+(for)0 2857 y(the)28 b(arra)m(ys,)h(reading)f(the)g(input)e(data)j
+(from)e(the)h(FITS)f(\014le,)h(passing)g(them)g(to)g(the)g(w)m(ork)g
+(function,)g(and)f(then)0 2970 y(writing)36 b(an)m(y)h(output)f(data)h
+(bac)m(k)h(to)f(the)f(FITS)g(\014le)g(after)h(the)g(w)m(ork)g(function)
+f(exits.)59 b(Because)38 b(it)f(is)g(often)0 3083 y(more)g(e\016cien)m
+(t)i(to)f(pro)s(cess)f(only)g(a)h(subset)f(of)g(the)g(total)i(table)g
+(ro)m(ws)e(at)h(one)f(time,)j(the)e(iterator)g(function)0
+3196 y(can)31 b(determine)f(the)h(optim)m(um)f(amoun)m(t)h(of)f(data)h
+(to)g(pass)f(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatedly)h(call)g
+(the)g(w)m(ork)0 3309 y(function)f(un)m(til)h(the)f(en)m(tire)i(table)f
+(b)s(een)e(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f
+(applications)h(this)e(single)i(CFITSIO)d(iterator)k(function)d(can)h
+(e\013ectiv)m(ely)j(replace)e(all)g(the)f(other)0 3582
+y(CFITSIO)g(routines)i(for)f(reading)h(or)f(writing)h(data)g(in)f(FITS)
+g(images)i(or)e(tables.)64 b(Using)37 b(the)h(iterator)h(has)0
+3695 y(sev)m(eral)32 b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32
+b(o)m(v)m(er)g(the)f(traditional)g(metho)s(d)f(of)h(reading)f(and)g
+(writing)g(FITS)g(data)h(\014les:)136 3961 y Fc(\017)46
+b Fi(It)33 b(cleanly)h(separates)g(the)f(data)h(I/O)f(from)f(the)h
+(routine)g(that)h(op)s(erates)f(on)g(the)g(data.)49 b(This)32
+b(leads)h(to)227 4074 y(a)e(more)g(mo)s(dular)e(and)h(`ob)5
+b(ject)31 b(orien)m(ted')h(programming)e(st)m(yle.)136
+4268 y Fc(\017)46 b Fi(It)27 b(simpli\014es)f(the)h(application)h
+(program)f(b)m(y)f(eliminating)i(the)f(need)g(to)g(allo)s(cate)i
+(memory)e(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)i
+(most)e(of)h(the)f(calls)i(to)f(the)g(CFITSIO)d(routines)j(that)g
+(explicitly)h(read)e(and)g(write)227 4494 y(the)31 b(data.)136
+4689 y Fc(\017)46 b Fi(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro)
+s(cessed)f(as)h(e\016cien)m(tly)h(as)e(p)s(ossible.)44
+b(This)31 b(is)g(esp)s(ecially)i(imp)s(ortan)m(t)227
+4801 y(when)44 b(pro)s(cessing)g(tabular)h(data)h(since)f(the)g
+(iterator)h(function)e(will)h(calculate)i(the)e(most)g(e\016cien)m(t)
+227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)f(the)h(table)g(to)g
+(b)s(e)f(passed)g(at)i(one)e(time)i(to)f(the)g(user's)e(w)m(ork)i
+(function)f(on)h(eac)m(h)227 5027 y(iteration.)136 5222
+y Fc(\017)46 b Fi(Mak)m(es)39 b(it)e(p)s(ossible)g(for)g(larger)h(pro)5
+b(jects)37 b(to)h(dev)m(elop)g(a)g(library)e(of)i(w)m(ork)f(functions)f
+(that)i(all)g(ha)m(v)m(e)h(a)227 5335 y(uniform)29 b(calling)j
+(sequence)f(and)f(are)h(all)g(indep)s(enden)m(t)e(of)i(the)f(details)i
+(of)e(the)h(FITS)e(\014le)i(format.)0 5601 y(There)f(are)h(basically)h
+(2)g(steps)e(in)h(using)f(the)h(CFITSIO)e(iterator)j(function.)42
+b(The)30 b(\014rst)g(step)h(is)g(to)g(design)g(the)0
+5714 y(w)m(ork)26 b(function)f(itself)h(whic)m(h)f(m)m(ust)h(ha)m(v)m
+(e)g(a)g(prescrib)s(ed)e(set)i(of)g(input)f(parameters.)39
+b(One)25 b(of)h(these)g(parameters)1905 5942 y(75)p eop
+end
+%%Page: 76 82
+TeXDict begin 76 81 bop 0 299 a Fi(76)1455 b Fg(CHAPTER)30
+b(7.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0
+555 y Fi(is)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i
+(the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)e(can)i(p)s
+(erform)d(an)m(y)i(desired)0 668 y(op)s(erations)k(on)h(these)f(arra)m
+(ys)h(and)e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g
+(the)h(input)e(data)i(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)f(or)g
+(ho)m(w)h(the)f(output)g(data)h(get)h(written)e(bac)m(k)h(to)h(the)e
+(\014le.)0 941 y(The)24 b(second)h(step)g(is)f(to)i(design)e(the)h
+(driv)m(er)g(routine)f(that)i(op)s(ens)e(all)h(the)g(necessary)g(FITS)f
+(\014les)h(and)f(initializes)0 1054 y(the)41 b(input)g(parameters)g(to)
+h(the)g(iterator)g(function.)73 b(The)41 b(driv)m(er)g(program)g(calls)
+h(the)g(CFITSIO)e(iterator)0 1167 y(function)30 b(whic)m(h)g(then)g
+(reads)g(the)h(data)g(and)f(passes)g(it)h(to)g(the)g(user's)e(w)m(ork)i
+(function.)0 1327 y(F)-8 b(urther)41 b(details)i(on)f(using)f(the)h
+(iterator)h(function)f(can)g(b)s(e)f(found)f(in)i(the)g(companion)g
+(CFITSIO)e(User's)0 1440 y(Guide,)31 b(and)e(in)h(the)h(iter)p
+874 1440 28 4 v 33 w(a.f,)g(iter)p 1197 1440 V 34 w(b.f)f(and)f(iter)p
+1677 1440 V 34 w(c.f)h(example)h(programs.)p eop end
+%%Page: 77 83
+TeXDict begin 77 82 bop 0 1225 a Ff(Chapter)65 b(8)0
+1687 y Fl(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0
+2216 y Fd(8.1)135 b(Ov)l(erview)0 2466 y Fi(CFITSIO)30
+b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f(sp)s(ecifying)g(the)
+h(name)f(of)h(the)g(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0
+2579 y(created)g(that)g(includes)f(the)h(follo)m(wing)h(features:)136
+2813 y Fc(\017)46 b Fi(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g
+(images)g(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end)
+f(with)g(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g
+(reading)f(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f
+(implemen)m(ted)h(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)
+m(erting)k(the)d(IRAF)h(image)h(in)m(to)f(a)g(temp)s(orary)f(FITS)g
+(format)h(\014le)f(in)g(memory)-8 b(,)227 3152 y(then)35
+b(op)s(ening)f(the)h(FITS)f(\014le.)54 b(An)m(y)35 b(of)g(the)g(usual)f
+(CFITSIO)g(routines)g(then)h(ma)m(y)g(b)s(e)f(used)g(to)i(read)227
+3265 y(the)31 b(image)g(header)f(or)h(data.)41 b(Similarly)-8
+b(,)31 b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m
+(y)g(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h
+(virtual)g(FITS)f(images.)136 3557 y Fc(\017)46 b Fi(FITS)37
+b(\014les)g(on)g(the)g(In)m(ternet)h(can)f(b)s(e)g(read)g(\(and)g
+(sometimes)h(written\))f(using)g(the)g(FTP)-8 b(,)38
+b(HTTP)-8 b(,)37 b(or)227 3670 y(R)m(OOT)30 b(proto)s(cols.)136
+3849 y Fc(\017)46 b Fi(FITS)30 b(\014les)g(can)h(b)s(e)f(pip)s(ed)f(b)s
+(et)m(w)m(een)i(tasks)f(on)h(the)f(stdin)g(and)g(stdout)g(streams.)136
+4028 y Fc(\017)46 b Fi(FITS)20 b(\014les)h(can)g(b)s(e)f(read)g(and)g
+(written)h(in)f(shared)g(memory)-8 b(.)38 b(This)20 b(can)h(p)s(oten)m
+(tially)h(ac)m(hiev)m(e)h(m)m(uc)m(h)e(b)s(etter)227
+4141 y(data)26 b(I/O)e(p)s(erformance)g(compared)h(to)h(reading)f(and)f
+(writing)g(the)h(same)h(FITS)e(\014les)g(on)h(magnetic)h(disk.)136
+4320 y Fc(\017)46 b Fi(Compressed)30 b(FITS)f(\014les)i(in)f(gzip)h(or)
+f(Unix)g(COMPRESS)f(format)h(can)h(b)s(e)f(directly)h(read.)136
+4499 y Fc(\017)46 b Fi(Output)28 b(FITS)h(\014les)g(can)g(b)s(e)g
+(written)g(directly)h(in)e(compressed)h(gzip)h(format,)g(th)m(us)e(sa)m
+(ving)i(disk)f(space.)136 4678 y Fc(\017)46 b Fi(FITS)26
+b(table)h(columns)f(can)h(b)s(e)f(created,)i(mo)s(di\014ed,)f(or)f
+(deleted)h('on-the-\015y')g(as)g(the)g(table)g(is)f(op)s(ened)g(b)m(y)
+227 4791 y(CFITSIO.)32 b(This)h(creates)i(a)e(virtual)h(FITS)f(\014le)g
+(con)m(taining)i(the)f(mo)s(di\014cations)f(that)h(is)g(then)f(op)s
+(ened)227 4904 y(b)m(y)e(the)f(application)i(program.)136
+5083 y Fc(\017)46 b Fi(T)-8 b(able)29 b(ro)m(ws)e(ma)m(y)i(b)s(e)e
+(selected,)j(or)e(\014ltered)g(out,)g(on)g(the)g(\015y)f(when)g(the)h
+(table)h(is)f(op)s(ened)f(b)m(y)g(CFITSIO,)227 5196 y(based)f(on)h(an)f
+(arbitrary)h(user-sp)s(eci\014ed)e(expression.)39 b(Only)26
+b(ro)m(ws)h(for)f(whic)m(h)g(the)h(expression)f(ev)-5
+b(aluates)227 5309 y(to)31 b('TR)m(UE')g(are)g(retained)g(in)f(the)g
+(cop)m(y)i(of)e(the)h(table)g(that)g(is)f(op)s(ened)g(b)m(y)g(the)h
+(application)g(program.)136 5488 y Fc(\017)46 b Fi(Histogram)28
+b(images)g(ma)m(y)f(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g
+(binning)g(the)g(v)-5 b(alues)27 b(in)f(table)i(columns,)f(resulting)
+227 5601 y(in)36 b(a)g(virtual)h(N-dimensional)f(FITS)g(image.)59
+b(The)35 b(application)i(program)f(then)g(only)g(sees)g(the)h(FITS)227
+5714 y(image)32 b(\(in)e(the)h(primary)e(arra)m(y\))j(instead)e(of)h
+(the)f(original)i(FITS)d(table.)1905 5942 y(77)p eop
+end
+%%Page: 78 84
+TeXDict begin 78 83 bop 0 299 a Fi(78)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(The)43 b(latter)i(3)f(features)g(in)f(particular)h(add)f(v)m
+(ery)h(p)s(o)m(w)m(erful)f(data)h(pro)s(cessing)f(capabilities)j
+(directly)e(in)m(to)0 668 y(CFITSIO,)29 b(and)g(hence)h(in)m(to)h(ev)m
+(ery)f(task)h(that)f(uses)g(CFITSIO)e(to)j(read)f(or)g(write)g(FITS)f
+(\014les.)40 b(F)-8 b(or)31 b(example,)0 781 y(these)d(features)f
+(transform)f(a)i(v)m(ery)f(simple)g(program)g(that)h(just)f(copies)h
+(an)f(input)f(FITS)g(\014le)h(to)h(a)g(new)e(output)0
+894 y(\014le)36 b(\(lik)m(e)h(the)f(`\014tscop)m(y')h(program)f(that)g
+(is)g(distributed)f(with)g(CFITSIO\))g(in)m(to)i(a)f(m)m(ultipurp)s
+(ose)f(FITS)g(\014le)0 1007 y(pro)s(cessing)24 b(to)s(ol.)40
+b(By)25 b(app)s(ending)f(fairly)g(simple)h(quali\014ers)g(on)m(to)g
+(the)g(name)g(of)g(the)g(input)f(FITS)g(\014le,)i(the)f(user)0
+1120 y(can)37 b(p)s(erform)f(quite)i(complex)g(table)g(editing)g(op)s
+(erations)f(\(e.g.,)k(create)e(new)d(columns,)j(or)e(\014lter)h(out)f
+(ro)m(ws)0 1233 y(in)g(a)g(table\))h(or)f(create)h(FITS)f(images)h(b)m
+(y)f(binning)e(or)i(histogramming)h(the)f(v)-5 b(alues)37
+b(in)g(table)h(columns.)60 b(In)0 1346 y(addition,)33
+b(these)g(functions)e(ha)m(v)m(e)j(b)s(een)d(co)s(ded)h(using)f(new)h
+(state-of-the)i(art)f(algorithms)g(that)g(are,)g(in)f(some)0
+1458 y(cases,)g(10)f(-)f(100)i(times)f(faster)g(than)f(previous)g
+(widely)g(used)g(implemen)m(tations.)0 1619 y(Before)k(describing)f
+(the)h(complete)h(syn)m(tax)f(for)f(the)h(extended)f(FITS)g(\014le)g
+(names)g(in)g(the)h(next)g(section,)h(here)0 1732 y(are)c(a)g(few)f
+(examples)h(of)f(FITS)g(\014le)g(names)h(that)f(giv)m(e)i(a)f(quic)m(k)
+g(o)m(v)m(erview)h(of)f(the)f(allo)m(w)m(ed)i(syn)m(tax:)136
+1960 y Fc(\017)46 b Fe('myfile.fits')p Fi(:)37 b(the)31
+b(simplest)f(case)i(of)e(a)h(FITS)f(\014le)g(on)h(disk)e(in)i(the)f
+(curren)m(t)g(directory)-8 b(.)136 2137 y Fc(\017)46
+b Fe('myfile.imh')p Fi(:)37 b(op)s(ens)28 b(an)h(IRAF)g(format)g(image)
+i(\014le)e(and)f(con)m(v)m(erts)i(it)g(on)f(the)g(\015y)f(in)m(to)i(a)f
+(temp)s(orary)227 2250 y(FITS)h(format)h(image)g(in)f(memory)h(whic)m
+(h)f(can)g(then)g(b)s(e)g(read)g(with)g(an)m(y)h(other)g(CFITSIO)e
+(routine.)136 2427 y Fc(\017)46 b Fe(rawfile.dat[i512,512])p
+Fi(:)35 b(op)s(ens)30 b(a)g(ra)m(w)h(binary)e(data)i(arra)m(y)g(\(a)g
+(512)g(x)f(512)i(short)e(in)m(teger)h(arra)m(y)g(in)227
+2540 y(this)i(case\))i(and)d(con)m(v)m(erts)j(it)e(on)g(the)g(\015y)g
+(in)m(to)h(a)f(temp)s(orary)g(FITS)f(format)h(image)i(in)d(memory)h
+(whic)m(h)227 2652 y(can)e(then)f(b)s(e)g(read)g(with)g(an)m(y)h(other)
+f(CFITSIO)f(routine.)136 2830 y Fc(\017)46 b Fe(myfile.fits.gz)p
+Fi(:)d(if)33 b(this)g(is)g(the)g(name)g(of)h(a)f(new)g(output)g
+(\014le,)h(the)f('.gz')i(su\016x)d(will)h(cause)h(it)g(to)g(b)s(e)227
+2942 y(compressed)c(in)g(gzip)h(format)g(when)e(it)i(is)g(written)f(to)
+h(disk.)136 3120 y Fc(\017)46 b Fe('myfile.fits.gz[events,)c(2]')p
+Fi(:)59 b(op)s(ens)40 b(and)f(uncompresses)g(the)i(gzipp)s(ed)e(\014le)
+i(m)m(y\014le.\014ts)f(then)227 3232 y(mo)m(v)m(es)34
+b(to)f(the)f(extension)h(whic)m(h)f(has)f(the)i(k)m(eyw)m(ords)f
+(EXTNAME)g(=)g('EVENTS')g(and)g(EXTVER)f(=)227 3345 y(2.)136
+3522 y Fc(\017)46 b Fe('-')p Fi(:)40 b(a)31 b(dash)f(\(min)m(us)g
+(sign\))h(signi\014es)f(that)h(the)g(input)f(\014le)g(is)h(to)g(b)s(e)f
+(read)g(from)g(the)h(stdin)f(\014le)g(stream,)227 3635
+y(or)h(that)g(the)f(output)g(\014le)h(is)f(to)h(b)s(e)f(written)g(to)h
+(the)g(stdout)f(stream.)136 3812 y Fc(\017)46 b Fe
+('ftp://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts')p
+Fi(:)33 b(FITS)28 b(\014les)g(in)g(an)m(y)g(ftp)g(arc)m(hiv)m(e)i(site)
+f(on)f(the)227 3925 y(In)m(ternet)j(ma)m(y)g(b)s(e)f(directly)h(op)s
+(ened)e(with)h(read-only)h(access.)136 4102 y Fc(\017)46
+b Fe('http://legacy.gsfc.nasa.)o(gov/)o(soft)o(war)o(e/te)o(st.f)o(its)
+o(')p Fi(:)d(an)m(y)34 b(v)-5 b(alid)35 b(URL)f(to)h(a)f(FITS)g(\014le)
+g(on)227 4215 y(the)d(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)f(with)
+h(read-only)h(access.)136 4392 y Fc(\017)46 b Fe
+('root://legacy.gsfc.nasa.)o(gov/)o(test)o(/ve)o(la.f)o(its')o
+Fi(:)32 b(similar)24 b(to)g(ftp)f(access)i(except)g(that)f(it)g(pro-)
+227 4505 y(vides)30 b(write)h(as)f(w)m(ell)h(as)g(read)f(access)h(to)g
+(the)f(\014les)h(across)f(the)h(net)m(w)m(ork.)41 b(This)29
+b(uses)h(the)h(ro)s(ot)f(proto)s(col)227 4618 y(dev)m(elop)s(ed)h(at)g
+(CERN.)136 4795 y Fc(\017)46 b Fe('shmem://h2[events]')p
+Fi(:)35 b(op)s(ens)30 b(the)g(FITS)f(\014le)i(in)f(a)g(shared)f(memory)
+i(segmen)m(t)g(and)e(mo)m(v)m(es)j(to)f(the)227 4908
+y(EVENTS)f(extension.)136 5085 y Fc(\017)46 b Fe('mem://')p
+Fi(:)52 b(creates)39 b(a)e(scratc)m(h)i(output)d(\014le)i(in)e(core)i
+(computer)f(memory)-8 b(.)62 b(The)37 b(resulting)g('\014le')h(will)227
+5198 y(disapp)s(ear)25 b(when)f(the)i(program)f(exits,)i(so)f(this)f
+(is)h(mainly)f(useful)g(for)g(testing)i(purp)s(oses)c(when)i(one)g(do)s
+(es)227 5311 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h
+(of)f(the)h(output)f(\014le.)136 5488 y Fc(\017)46 b
+Fe('myfile.fits[3;)e(Images\(10\)]')p Fi(:)49 b(op)s(ens)35
+b(a)i(cop)m(y)g(of)f(the)g(image)i(con)m(tained)f(in)f(the)h(10th)f(ro)
+m(w)h(of)227 5601 y(the)26 b('Images')i(column)d(in)h(the)g(binary)g
+(table)g(in)g(the)g(3th)h(extension)f(of)g(the)h(FITS)e(\014le.)39
+b(The)26 b(application)227 5714 y(just)k(sees)h(this)f(single)h(image)h
+(as)e(the)h(primary)e(arra)m(y)-8 b(.)p eop end
+%%Page: 79 85
+TeXDict begin 79 84 bop 0 299 a Fg(8.1.)72 b(O)m(VER)-10
+b(VIEW)3086 b Fi(79)136 555 y Fc(\017)46 b Fe('myfile.fits[1:512:2,)c
+(1:512:2]')p Fi(:)49 b(op)s(ens)35 b(a)h(section)h(of)e(the)h(input)f
+(image)i(ranging)f(from)f(the)227 668 y(1st)26 b(to)g(the)f(512th)h
+(pixel)g(in)e(X)i(and)e(Y,)i(and)e(selects)j(ev)m(ery)e(second)h(pixel)
+f(in)g(b)s(oth)f(dimensions,)i(resulting)227 781 y(in)k(a)h(256)h(x)e
+(256)i(pixel)e(image)i(in)e(this)g(case.)136 981 y Fc(\017)46
+b Fe('myfile.fits[EVENTS][col)41 b(Rad)47 b(=)h(sqrt\(X**2)d(+)j
+(Y**2\)]')p Fi(:)38 b(creates)30 b(and)f(op)s(ens)f(a)h(temp)s(orary)
+227 1094 y(\014le)f(on)f(the)g(\015y)g(\(in)g(memory)g(or)g(on)h
+(disk\))f(that)g(is)h(iden)m(tical)h(to)f(m)m(y\014le.\014ts)f(except)h
+(that)g(it)g(will)g(con)m(tain)227 1207 y(a)41 b(new)f(column)g(in)h
+(the)f(EVENTS)g(extension)h(called)h('Rad')f(whose)f(v)-5
+b(alue)41 b(is)f(computed)h(using)f(the)227 1320 y(indicated)31
+b(expression)f(whic)m(h)g(is)h(a)g(function)f(of)g(the)h(v)-5
+b(alues)30 b(in)h(the)f(X)h(and)e(Y)i(columns.)136 1520
+y Fc(\017)46 b Fe('myfile.fits[EVENTS][PHA)41 b(>)48
+b(5]')p Fi(:)37 b(creates)27 b(and)e(op)s(ens)g(a)h(temp)s(orary)f
+(FITS)g(\014les)g(that)h(is)g(iden)m(ti-)227 1633 y(cal)k(to)g('m)m
+(y\014le.\014ts')f(except)h(that)f(the)g(EVENTS)f(table)i(will)f(only)g
+(con)m(tain)h(the)f(ro)m(ws)g(that)h(ha)m(v)m(e)g(v)-5
+b(alues)227 1746 y(of)28 b(the)g(PHA)f(column)g(greater)i(than)e(5.)40
+b(In)27 b(general,)i(an)m(y)f(arbitrary)f(b)s(o)s(olean)h(expression)f
+(using)g(a)h(C)f(or)227 1859 y(F)-8 b(ortran-lik)m(e)31
+b(syn)m(tax,)e(whic)m(h)f(ma)m(y)h(com)m(bine)g(AND)g(and)f(OR)f(op)s
+(erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)227
+1972 y(from)g(a)h(table.)136 2172 y Fc(\017)46 b Fe
+('myfile.fits[EVENTS][bin)41 b(\(X,Y\)=1,2048,4]')p Fi(:)46
+b(creates)37 b(a)e(temp)s(orary)g(FITS)f(primary)g(arra)m(y)227
+2285 y(image)c(whic)m(h)f(is)g(computed)f(on)h(the)g(\015y)f(b)m(y)g
+(binning)g(\(i.e,)j(computing)d(the)h(2-dimensional)h(histogram\))227
+2398 y(of)k(the)f(v)-5 b(alues)34 b(in)f(the)h(X)g(and)e(Y)i(columns)f
+(of)h(the)f(EVENTS)g(extension.)50 b(In)33 b(this)g(case)i(the)e(X)h
+(and)f(Y)227 2511 y(co)s(ordinates)h(range)g(from)f(1)h(to)g(2048)h
+(and)e(the)h(image)g(pixel)g(size)g(is)g(4)f(units)g(in)g(b)s(oth)g
+(dimensions,)h(so)227 2624 y(the)d(resulting)f(image)i(is)e(512)i(x)e
+(512)i(pixels)f(in)f(size.)136 2824 y Fc(\017)46 b Fi(The)31
+b(\014nal)g(example)i(com)m(bines)f(man)m(y)f(of)h(these)g(feature)g
+(in)m(to)g(one)g(complex)g(expression)f(\(it)i(is)e(brok)m(en)227
+2937 y(in)m(to)h(sev)m(eral)f(lines)g(for)f(clarit)m(y\):)323
+3206 y Fe('ftp://legacy.gsfc.nasa)o(.gov)o(/dat)o(a/s)o(ampl)o(e.fi)o
+(ts.)o(gz[E)o(VENT)o(S])370 3319 y([col)47 b(phacorr)f(=)h(pha)g(*)h
+(1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g(&&)g(phacorr)f(<=)h(14.0])370
+3432 y([bin)g(\(X,Y\)=32]')227 3701 y Fi(In)37 b(this)h(case,)j
+(CFITSIO)36 b(\(1\))j(copies)g(and)e(uncompresses)g(the)h(FITS)f
+(\014le)h(from)f(the)h(ftp)f(site)i(on)f(the)227 3814
+y(legacy)g(mac)m(hine,)h(\(2\))e(mo)m(v)m(es)g(to)g(the)g('EVENTS')f
+(extension,)i(\(3\))f(calculates)i(a)d(new)g(column)g(called)227
+3927 y('phacorr',)30 b(\(4\))f(selects)h(the)f(ro)m(ws)g(in)f(the)h
+(table)h(that)f(ha)m(v)m(e)h(phacorr)e(in)g(the)h(range)g(5)g(to)h(14,)
+g(and)e(\014nally)227 4040 y(\(5\))35 b(bins)d(the)h(remaining)g(ro)m
+(ws)g(on)h(the)f(X)g(and)g(Y)g(column)g(co)s(ordinates,)i(using)d(a)i
+(pixel)f(size)h(=)f(32)h(to)227 4153 y(create)d(a)f(2D)g(image.)42
+b(All)30 b(this)f(pro)s(cessing)g(is)h(completely)h(transparen)m(t)e
+(to)i(the)e(application)i(program,)227 4266 y(whic)m(h)f(simply)g(sees)
+h(the)g(\014nal)f(2-D)h(image)h(in)e(the)g(primary)g(arra)m(y)h(of)f
+(the)h(op)s(ened)f(\014le.)0 4538 y(The)c(full)h(extended)g(CFITSIO)e
+(FITS)h(\014le)h(name)g(can)g(con)m(tain)h(sev)m(eral)g(di\013eren)m(t)
+g(comp)s(onen)m(ts)f(dep)s(ending)e(on)0 4651 y(the)31
+b(con)m(text.)42 b(These)30 b(comp)s(onen)m(ts)h(are)g(describ)s(ed)e
+(in)h(the)g(follo)m(wing)i(sections:)0 4924 y Fe(When)47
+b(creating)e(a)j(new)f(file:)143 5036 y(filetype://BaseFilename\(t)o
+(empl)o(ate)o(Name)o(\))0 5262 y(When)g(opening)e(an)j(existing)d
+(primary)h(array)g(or)i(image)e(HDU:)143 5375 y
+(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o(loca)o(tio)o(n][I)o
+(mage)o(Sec)o(tion)o(])0 5601 y(When)h(opening)e(an)j(existing)d(table)
+i(HDU:)143 5714 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o
+(loca)o(tio)o(n][c)o(olFi)o(lte)o(r][r)o(owFi)o(lte)o(r][b)o(inSp)o
+(ec])p eop end
+%%Page: 80 86
+TeXDict begin 80 85 bop 0 299 a Fi(80)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(The)41 b(\014let)m(yp)s(e,)k(BaseFilename,)i(outName,)e(HDUlo)
+s(cation,)i(and)41 b(ImageSection)i(comp)s(onen)m(ts,)i(if)d(presen)m
+(t,)0 668 y(m)m(ust)30 b(b)s(e)g(giv)m(en)i(in)e(that)h(order,)g(but)f
+(the)g(colFilter,)j(ro)m(wFilter,)g(and)c(binSp)s(ec)h(sp)s(eci\014ers)
+f(ma)m(y)j(follo)m(w)f(in)g(an)m(y)0 781 y(order.)39
+b(Regardless)29 b(of)g(the)f(order,)g(ho)m(w)m(ev)m(er,)i(the)f
+(colFilter)h(sp)s(eci\014er,)e(if)g(presen)m(t,)h(will)g(b)s(e)e(pro)s
+(cessed)h(\014rst)f(b)m(y)0 894 y(CFITSIO,)i(follo)m(w)m(ed)j(b)m(y)e
+(the)h(ro)m(wFilter)h(sp)s(eci\014er,)e(and)f(\014nally)i(b)m(y)f(the)g
+(binSp)s(ec)f(sp)s(eci\014er.)0 1253 y Fd(8.2)135 b(Filet)l(yp)t(e)0
+1508 y Fi(The)37 b(t)m(yp)s(e)g(of)g(\014le)g(determines)g(the)g
+(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s(cated)g(\(e.g.,)i
+(disk)d(or)g(net)m(w)m(ork\))h(and,)0 1621 y(hence,)f(whic)m(h)e(in)m
+(ternal)h(device)g(driv)m(er)f(is)g(used)f(b)m(y)h(CFITSIO)f(to)i(read)
+f(and/or)g(write)g(the)g(\014le.)56 b(Curren)m(tly)0
+1734 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 2015 y
+Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g
+(\(default\))382 2128 y(ftp://)141 b(-)48 b(a)f(readonly)f(file)g
+(accessed)g(with)h(the)g(anonymous)e(FTP)i(protocol.)907
+2241 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam)
+o(e/..)o(.)907 2354 y(for)47 b(accessing)e(password-protected)e(ftp)k
+(sites.)382 2467 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g
+(with)h(the)g(HTTP)f(protocol.)93 b(It)907 2579 y(supports)45
+b(username:password)e(just)k(like)g(the)g(ftp)g(driver.)907
+2692 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h
+(http_proxy)907 2805 y(environment)e(variable)g(\(see)i(following)e
+(note\).)286 2918 y(stream://)93 b(-)48 b(special)e(driver)g(to)h(read)
+g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 3031
+y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the)g
+(stdout)143 3144 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and)i
+(has)g(limited)143 3257 y(functionality)d(\(see)j(the)g(following)e
+(note\).)286 3370 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h
+(computational)c(grid)j(using)f(the)h(gridftp)907 3483
+y(protocol)e(in)j(the)e(Globus)h(toolkit)e(\(see)i(following)e(note\).)
+382 3596 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e
+(for)i(writing)f(as)h(well)g(as)907 3709 y(reading)f(files)g(over)h
+(the)g(network.)382 3821 y(shmem://)e(-)j(opens)e(or)h(creates)f(a)i
+(file)e(which)h(persists)e(in)i(the)g(computer's)907
+3934 y(shared)f(memory.)382 4047 y(mem://)141 b(-)48
+b(opens)e(a)i(temporary)d(file)i(in)g(core)f(memory.)94
+b(The)47 b(file)907 4160 y(disappears)e(when)h(the)h(program)f(exits)h
+(so)g(this)f(is)i(mainly)907 4273 y(useful)e(for)h(test)f(purposes)g
+(when)h(a)g(permanent)e(output)h(file)907 4386 y(is)h(not)g(desired.)0
+4667 y Fi(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h
+(then)e(t)m(yp)s(e)h(\014le://)h(is)e(assumed.)56 b(The)35
+b(double)g(slashes)h('//')h(are)f(optional)0 4780 y(and)30
+b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 5096
+y Fb(8.2.1)112 b(Notes)37 b(ab)s(out)i(HTTP)d(pro)m(xy)i(serv)m(ers)0
+5320 y Fi(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e(used)g
+(b)m(y)h(de\014ning)f(the)h(address)f(\(URL\))i(and)e(p)s(ort)g(n)m(um)
+m(b)s(er)g(of)h(the)g(pro)m(xy)0 5433 y(serv)m(er)f(with)f(the)g(h)m
+(ttp)p 801 5433 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5
+b(ariable.)42 b(F)-8 b(or)31 b(example)191 5714 y Fe(setenv)46
+b(http_proxy)f(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)p
+eop end
+%%Page: 81 87
+TeXDict begin 81 86 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128
+b Fi(81)0 555 y(will)38 b(cause)g(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i
+(on)f(the)g(heasarc)g(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)g(a)
+g(FITS)f(\014le)0 668 y(with)30 b(HTTP)-8 b(.)0 987 y
+Fb(8.2.2)112 b(Notes)37 b(ab)s(out)i(the)e(stream)h(\014let)m(yp)s(e)g
+(driv)m(er)0 1212 y Fi(The)e(stream)h(driv)m(er)f(can)h(b)s(e)f(used)g
+(to)h(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h(stdin)f
+(\014le)g(stream)h(or)g(write)0 1324 y(a)44 b(FITS)e(to)i(the)g(stdout)
+f(\014le)g(stream.)80 b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43
+b(these)h(input)e(and)h(output)g(streams)g(m)m(ust)h(b)s(e)0
+1437 y(accessed)30 b(sequen)m(tially)-8 b(,)31 b(the)e(FITS)f(\014le)g
+(reading)h(or)f(writing)h(application)h(m)m(ust)e(also)i(read)e(and)g
+(write)h(the)g(\014le)0 1550 y(sequen)m(tially)-8 b(,)33
+b(at)e(least)g(within)f(the)h(tolerances)h(describ)s(ed)d(b)s(elo)m(w.)
+0 1710 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f(metho)s(ds)g
+(for)g(accessing)i(FITS)d(\014les)h(on)h(the)f(stdin)g(and)f(stdout)h
+(streams.)0 1823 y(The)c(original)i(metho)s(d,)f(whic)m(h)f(is)h(in)m
+(v)m(ok)m(ed)h(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m(haracter,)j("-",)
+g(as)d(the)h(name)g(of)g(the)g(\014le)0 1936 y(when)g(op)s(ening)g(or)h
+(creating)h(it,)g(w)m(orks)e(b)m(y)h(storing)g(a)g(complete)h(cop)m(y)g
+(of)f(the)g(en)m(tire)g(FITS)f(\014le)h(in)f(memory)-8
+b(.)0 2049 y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i
+(CFITSIO)d(will)i(cop)m(y)h(the)e(en)m(tire)i(stream)f(in)m(to)h
+(memory)e(b)s(efore)0 2162 y(doing)c(an)m(y)h(pro)s(cessing)f(of)h(the)
+f(\014le.)44 b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g
+(CFITSIO)d(will)j(create)h(a)f(cop)m(y)g(of)0 2275 y(the)h(en)m(tire)g
+(FITS)f(\014le)g(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h
+(\015ushing)e(it)i(out)f(to)i(the)e(stdout)h(stream)g(when)e(the)i
+(FITS)0 2388 y(\014le)g(is)g(closed.)49 b(Bu\013ering)33
+b(the)g(en)m(tire)h(FITS)e(\014le)h(in)g(this)f(w)m(a)m(y)i(allo)m(ws)g
+(the)f(application)i(to)e(randomly)g(access)0 2501 y(an)m(y)h(part)f
+(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h(order,)f(but)g(it)h(also)h
+(requires)e(that)h(the)f(user)g(ha)m(v)m(e)i(su\016cien)m(t)f(a)m(v)-5
+b(ailable)0 2614 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f
+(the)g(en)m(tire)h(\014le,)f(whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s
+(ossible)g(in)h(the)g(case)h(of)f(v)m(ery)0 2727 y(large)h(\014les.)0
+2887 y(The)e(new)m(er)g(stream)h(\014let)m(yp)s(e)g(pro)m(vides)f(a)h
+(more)f(memory-e\016cien)m(t)i(metho)s(d)e(of)h(accessing)h(FITS)d
+(\014les)h(on)h(the)0 3000 y(stdin)37 b(or)h(stdout)g(streams.)64
+b(Instead)38 b(of)g(storing)g(a)g(cop)m(y)h(of)f(the)g(en)m(tire)h
+(FITS)e(\014le)h(in)g(memory)-8 b(,)40 b(CFITSIO)0 3113
+y(only)32 b(uses)g(a)g(set)h(of)f(in)m(ternal)h(bu\013er)e(whic)m(h)h
+(b)m(y)g(default)g(can)g(store)h(40)g(FITS)e(blo)s(c)m(ks,)i(or)g(ab)s
+(out)e(100K)i(b)m(ytes)0 3225 y(of)f(the)f(FITS)g(\014le.)43
+b(The)31 b(application)i(program)e(m)m(ust)g(pro)s(cess)g(the)h(FITS)e
+(\014le)i(sequen)m(tially)h(from)e(b)s(eginning)0 3338
+y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 b(Generally)32
+b(sp)s(eaking)f(the)g(application)h(program)f(m)m(ust)f(conform)h(to)h
+(the)0 3451 y(follo)m(wing)g(restrictions:)136 3735 y
+Fc(\017)46 b Fi(The)36 b(program)f(m)m(ust)h(\014nish)e(reading)i(or)g
+(writing)f(the)h(header)g(k)m(eyw)m(ords)g(b)s(efore)f(reading)h(or)g
+(writing)227 3848 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136
+4060 y Fc(\017)46 b Fi(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h
+(ab)s(out)f(1400)h(header)f(k)m(eyw)m(ords.)39 b(This)24
+b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4172
+y(in)g(the)g(nominal)h(40)g(FITS)e(blo)s(c)m(k)i(bu\013er.)37
+b(In)24 b(principle,)h(this)f(limit)h(could)f(b)s(e)g(increased)g(b)m
+(y)g(recompiling)227 4285 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e
+(limit,)j(whic)m(h)e(is)g(set)h(b)m(y)f(the)h(NIOBUF)g(parameter)g(in)f
+(\014tsio2.h.)136 4497 y Fc(\017)46 b Fi(The)32 b(program)g(m)m(ust)f
+(read)h(or)g(write)h(the)f(data)g(in)g(a)g(sequen)m(tial)i(manner)d
+(from)h(the)g(b)s(eginning)f(to)i(the)227 4610 y(end)26
+b(of)g(the)h(HDU.)g(Note)h(that)f(CFITSIO's)e(in)m(ternal)i(100K)g
+(bu\013er)e(allo)m(ws)j(a)e(little)j(latitude)e(in)f(meeting)227
+4723 y(this)31 b(requiremen)m(t.)136 4934 y Fc(\017)46
+b Fi(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g
+(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5146
+y Fc(\017)46 b Fi(Reading)c(or)f(writing)f(of)h(v)-5
+b(ariable)42 b(length)f(arra)m(y)h(columns)e(in)h(binary)f(tables)i(is)
+f(not)g(supp)s(orted)e(on)227 5259 y(streams,)29 b(b)s(ecause)f(this)g
+(requires)g(mo)m(ving)g(bac)m(k)h(and)f(forth)f(b)s(et)m(w)m(een)i(the)
+f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5372 y(binary)i(table)h
+(and)f(the)g(follo)m(wing)i(heap)e(area)i(where)e(the)g(arra)m(ys)h
+(are)g(actually)h(stored.)136 5583 y Fc(\017)46 b Fi(Reading)25
+b(or)g(writing)f(of)h(tile-compressed)h(images)g(is)e(not)h(supp)s
+(orted)e(on)h(streams,)i(b)s(ecause)f(the)g(images)227
+5696 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5
+b(ariable)31 b(length)g(arra)m(ys.)p eop end
+%%Page: 82 88
+TeXDict begin 82 87 bop 0 299 a Fi(82)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fb(8.2.3)112 b(Notes)37 b(ab)s(out)i(the)e(gsiftp)h(\014let)m(yp)
+s(e)0 774 y Fi(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f
+(higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 b(There)34
+b(are)h(t)m(w)m(o)h(dif-)0 887 y(feren)m(t)31 b(w)m(a)m(ys)g(to)g
+(install)g(GT:)0 1047 y(1\))43 b(goto)h(the)f(globus)f(to)s(olkit)i(w)m
+(eb)e(page)i(www.globus.org)e(and)g(follo)m(w)h(the)g(do)m(wnload)g
+(and)e(compilation)0 1160 y(instructions;)0 1320 y(2\))j(goto)i(the)d
+(Virtual)i(Data)g(T)-8 b(o)s(olkit)45 b(w)m(eb)e(page)i(h)m
+(ttp://vdt.cs.wisc.edu/)g(and)e(follo)m(w)i(the)f(instructions)0
+1433 y(\(STR)m(ONGL)-8 b(Y)31 b(SUGGESTED\);)0 1593 y(Once)23
+b(a)h(globus)f(clien)m(t)h(has)f(b)s(een)g(installed)h(in)e(y)m(our)i
+(system)f(with)g(a)g(sp)s(eci\014c)g(\015a)m(v)m(our)h(it)f(is)g(p)s
+(ossible)g(to)h(compile)0 1706 y(and)30 b(install)h(the)g(CFITSIO)d
+(libraries.)41 b(Sp)s(eci\014c)30 b(con\014guration)h(\015ags)f(m)m
+(ust)h(b)s(e)e(used:)0 1866 y(1\))21 b({with-gsiftp[[=P)-8
+b(A)g(TH]])22 b(Enable)f(Globus)f(T)-8 b(o)s(olkit)21
+b(gsiftp)g(proto)s(col)g(supp)s(ort)d(P)-8 b(A)g(TH=GLOBUS)p
+3532 1866 28 4 v 33 w(LOCA)g(TION)0 1979 y(i.e.)42 b(the)30
+b(lo)s(cation)i(of)f(y)m(our)f(globus)g(installation)0
+2139 y(2\))h({with-gsiftp-\015a)m(v)m(our[[=P)-8 b(A)g(TH])33
+b(de\014nes)d(the)g(sp)s(eci\014c)g(Globus)h(\015a)m(v)m(our)f(ex.)41
+b(gcc32)0 2300 y(Both)31 b(the)g(\015ags)f(m)m(ust)g(b)s(e)g(used)g
+(and)f(it)i(is)g(mandatory)f(to)h(set)g(b)s(oth)f(the)g(P)-8
+b(A)g(TH)31 b(and)f(the)h(\015a)m(v)m(our.)0 2460 y(USA)m(GE:)g(T)-8
+b(o)31 b(access)h(\014les)e(on)g(a)h(gridftp)f(serv)m(er)g(it)h(is)g
+(necessary)f(to)i(use)e(a)g(gsiftp)h(pre\014x:)0 2620
+y(example:)41 b(gsiftp://remote)p 1003 2620 V 35 w(serv)m(er)p
+1271 2620 V 34 w(fqhn/directory/\014lename)0 2780 y(The)f(gridftp)g
+(driv)m(er)g(uses)g(a)g(lo)s(cal)i(bu\013er)d(on)i(a)f(temp)s(orary)g
+(\014le)h(the)f(\014le)h(is)f(lo)s(cated)i(in)e(the)g(/tmp)h(direc-)0
+2893 y(tory)-8 b(.)73 b(If)40 b(y)m(ou)h(ha)m(v)m(e)h(sp)s(ecial)g(p)s
+(ermissions)d(on)i(/tmp)g(or)g(y)m(ou)g(do)f(not)i(ha)m(v)m(e)g(a)f
+(/tmp)g(directory)-8 b(,)44 b(it)e(is)e(p)s(os-)0 3006
+y(sible)d(to)h(force)g(another)g(lo)s(cation)g(setting)h(the)e(GSIFTP)p
+2068 3006 V 32 w(TMPFILE)g(en)m(vironmen)m(t)h(v)-5 b(ariable)38
+b(\(ex.)62 b(exp)s(ort)0 3119 y(GSIFTP)p 347 3119 V 32
+w(TMPFILE=/y)m(our/lo)s(cation/y)m(ourtmp\014le\).)0
+3279 y(Grid)34 b(FTP)g(supp)s(orts)f(m)m(ulti)h(c)m(hannel)h(transfer.)
+52 b(By)35 b(default)f(a)h(single)g(c)m(hannel)g(transmission)f(is)g(a)
+m(v)-5 b(ailable.)0 3392 y(Ho)m(w)m(ev)m(er,)34 b(it)d(is)h(p)s
+(ossible)e(to)i(mo)s(dify)e(this)i(b)s(eha)m(vior)f(setting)h(the)f
+(GSIFTP)p 2691 3392 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5
+b(ari-)0 3505 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p
+1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fb(8.2.4)112 b(Notes)37
+b(ab)s(out)i(the)e(ro)s(ot)g(\014let)m(yp)s(e)0 4009
+y Fi(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e(obtained)
+h(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o(gz)15
+b Fi(but,)22 b(for)0 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h(with)e
+(CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m(ersion)j
+(whic)m(h)e(supp)s(orts)f(a)i(command)0 4235 y(to)41
+b(return)d(the)j(length)f(of)g(the)g(\014le.)70 b(This)39
+b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5 b(ailable)42
+b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0 4348 y(CFITSIO)29
+b(ftp)h(area)h(at)286 4577 y Fe(ftp://legacy.gsfc.nasa.gov)o(/so)o
+(ftwa)o(re/f)o(its)o(io/c)o(/roo)o(t/r)o(ootd)o(.tar)o(.gz)o(.)0
+4805 y Fi(This)j(small)g(serv)m(er)h(is)g(started)f(either)h(b)m(y)g
+(inetd)f(when)f(a)i(clien)m(t)h(requests)e(a)h(connection)h(to)f(a)f
+(ro)s(otd)h(serv)m(er)0 4918 y(or)30 b(b)m(y)g(hand)f(\(i.e.)42
+b(from)30 b(the)g(command)g(line\).)42 b(The)29 b(ro)s(otd)h(serv)m(er)
+h(w)m(orks)f(with)g(the)g(R)m(OOT)g(TNetFile)i(class.)0
+5031 y(It)e(allo)m(ws)g(remote)h(access)f(to)h(R)m(OOT)e(database)h
+(\014les)f(in)g(either)h(read)g(or)f(write)h(mo)s(de.)40
+b(By)30 b(default)f(TNetFile)0 5144 y(assumes)38 b(p)s(ort)g(432)h
+(\(whic)m(h)f(requires)g(ro)s(otd)g(to)h(b)s(e)f(started)h(as)f(ro)s
+(ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)h(inetd)f(add)g(the)0
+5257 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95
+5485 y Fe(rootd)238 b(432/tcp)0 5714 y Fi(and)30 b(to)h
+(/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)p
+eop end
+%%Page: 83 89
+TeXDict begin 83 88 bop 0 299 a Fg(8.2.)72 b(FILETYPE)3128
+b Fi(83)95 555 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h
+(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 829 y
+Fi(F)-8 b(orce)34 b(inetd)e(to)i(reread)e(its)h(conf)f(\014le)h(with)f
+("kill)h(-HUP)g(<pid)f(inetd>".)47 b(Y)-8 b(ou)33 b(can)g(also)g(start)
+g(ro)s(otd)g(b)m(y)f(hand)0 942 y(running)j(directly)i(under)d(y)m(our)
+j(priv)-5 b(ate)37 b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges)
+h(needed\).)59 b(F)-8 b(or)37 b(example)g(to)0 1054 y(start)e(ro)s(otd)
+e(listening)i(on)f(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49
+b Fe(rootd)d(-p)h(5151)33 b Fi(Notice:)50 b(no)34 b(&)f(is)h(needed.)51
+b(Ro)s(otd)35 b(will)0 1167 y(go)c(in)m(to)h(bac)m(kground)e(b)m(y)g
+(itself.)95 1441 y Fe(Rootd)47 b(arguments:)191 1554
+y(-i)763 b(says)47 b(we)g(were)f(started)g(by)h(inetd)191
+1667 y(-p)g(port#)476 b(specifies)45 b(a)j(different)d(port)i(to)g
+(listen)f(on)191 1780 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h
+(written)e(to)j(syslog)1050 1893 y(0)f(=)h(no)f(debug)f(\(default\))
+1050 2005 y(1)h(=)h(minimum)1050 2118 y(2)f(=)h(medium)1050
+2231 y(3)f(=)h(maximum)0 2505 y Fi(Ro)s(otd)29 b(can)f(also)h(b)s(e)f
+(con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)h(anon)m(ymous)e
+(ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0
+2618 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s
+(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Fe(-)48
+b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239
+3117 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o
+(fals)o(e)239 3343 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h
+(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 3456
+y(to)h(suite)f(your)h(system.)143 3681 y(-)h(Add)f(the)f(following)g
+(line)g(to)i(/etc/group:)239 3907 y(rootd:*:72:rootd)239
+4133 y(where)e(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g
+(/etc/passwd.)143 4359 y(-)h(Create)e(the)h(directories:)239
+4585 y(mkdir)f(/var/spool/rootd)239 4698 y(mkdir)g
+(/var/spool/rootd/tmp)239 4811 y(chmod)g(777)h(/var/spool/rootd/tmp)239
+5036 y(Where)f(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f
+(directory)g(as)239 5149 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f
+(entry.)143 5375 y(-)j(To)f(make)f(writeable)g(directories)e(for)j
+(anonymous)f(do,)h(for)f(example:)239 5601 y(mkdir)g
+(/var/spool/rootd/pub)239 5714 y(chown)g(rootd:rootd)f
+(/var/spool/rootd/pub)p eop end
+%%Page: 84 90
+TeXDict begin 84 89 bop 0 299 a Fi(84)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(That's)42 b(all.)76 b(Sev)m(eral)43 b(additional)g(remarks:)64
+b(y)m(ou)42 b(can)g(login)h(to)g(an)f(anon)m(ymous)f(serv)m(er)i
+(either)f(with)g(the)0 668 y(names)31 b("anon)m(ymous")h(or)f("ro)s
+(otd".)43 b(The)31 b(passw)m(ord)f(should)g(b)s(e)h(of)g(t)m(yp)s(e)g
+(user@host.do.main.)43 b(Only)30 b(the)h(@)0 781 y(is)e(enforced)f(for)
+h(the)f(time)i(b)s(eing.)39 b(In)28 b(anon)m(ymous)h(mo)s(de)f(the)g
+(top)h(of)g(the)g(\014le)f(tree)i(is)e(set)h(to)h(the)e(ro)s(otd)h
+(home)0 894 y(directory)-8 b(,)39 b(therefore)e(only)f(\014les)h(b)s
+(elo)m(w)f(the)h(home)f(directory)h(can)f(b)s(e)g(accessed.)60
+b(Anon)m(ymous)36 b(mo)s(de)g(only)0 1007 y(w)m(orks)30
+b(when)g(the)g(serv)m(er)h(is)f(started)h(via)g(inetd.)0
+1296 y Fb(8.2.5)112 b(Notes)37 b(ab)s(out)i(the)e(shmem)i(\014let)m(yp)
+s(e:)0 1515 y Fi(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)g
+(supp)s(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f
+(memory)0 1627 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s
+(erating)h(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d
+(of)i(pro)s(cesses.)40 b(They)0 1740 y(are)34 b(not)g(deleted)h(\(b)m
+(y)f(default\))g(when)f(the)h(pro)s(cess)f(whic)m(h)h(created)h(them)f
+(terminates,)h(although)g(they)f(will)0 1853 y(disapp)s(ear)e(if)h(the)
+h(system)f(is)g(reb)s(o)s(oted.)49 b(Applications)34
+b(can)g(create)h(shared)d(memory)h(\014les)g(in)g(CFITSIO)f(b)m(y)0
+1966 y(calling:)143 2214 y Fe(fit_create_file\(&fitsfile)o(ptr,)41
+b("shmem://h2",)j(&status\);)0 2462 y Fi(where)25 b(the)g(ro)s(ot)h
+(`\014le')f(names)h(are)f(curren)m(tly)g(restricted)h(to)g(b)s(e)f
+('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0
+2575 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5
+b(alue)22 b(of)f(SHARED)p 1746 2575 28 4 v 33 w(MAXSEG)g(\(equal)h(to)f
+(16)h(b)m(y)f(default\).)38 b(This)20 b(is)h(a)g(protot)m(yp)s(e)0
+2688 y(implemen)m(tation)30 b(of)f(the)g(shared)f(memory)g(in)m
+(terface)i(and)e(a)h(more)g(robust)f(in)m(terface,)j(whic)m(h)d(will)h
+(ha)m(v)m(e)h(few)m(er)0 2801 y(restrictions)h(on)f(the)h(n)m(um)m(b)s
+(er)e(of)i(\014les)f(and)g(on)g(their)g(names,)h(ma)m(y)g(b)s(e)f(dev)m
+(elop)s(ed)g(in)g(the)h(future.)0 2961 y(When)23 b(op)s(ening)h(an)f
+(already)h(existing)h(FITS)e(\014le)h(in)f(shared)g(memory)h(one)g
+(calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3209 y
+Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j
+(&status\))0 3457 y Fi(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m
+(WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)f(disk)h(\014les.)39
+b(More)28 b(than)e(one)h(pro)s(cess)0 3570 y(can)35 b(op)s(erate)g(on)f
+(READONL)-8 b(Y)35 b(mo)s(de)f(\014les)h(at)g(the)f(same)h(time.)54
+b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)i(lo)s(c)m(king)0
+3682 y(\(b)s(oth)27 b(in)h(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo)
+s(des\),)h(so)f(calls)h(to)f(\014ts)p 2572 3682 V 33
+w(op)s(en)p 2795 3682 V 32 w(\014le)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed)
+j(out)e(un)m(til)0 3795 y(another)j(other)f(pro)s(cess)g(closes)i(the)e
+(\014le.)0 3956 y(When)g(an)g(application)i(is)e(\014nished)f
+(accessing)j(a)e(FITS)g(\014le)g(in)g(a)h(shared)e(memory)h(segmen)m
+(t,)i(it)f(ma)m(y)g(close)g(it)0 4068 y(\(and)j(the)g(\014le)g(will)g
+(remain)f(in)h(the)g(system\))g(with)g(\014ts)p 1955
+4068 V 32 w(close)p 2173 4068 V 34 w(\014le,)h(or)f(delete)h(it)g(with)
+e(\014ts)p 3191 4068 V 33 w(delete)p 3455 4068 V 34 w(\014le.)51
+b(Ph)m(ys-)0 4181 y(ical)36 b(deletion)g(is)f(p)s(ostp)s(oned)e(un)m
+(til)j(the)f(last)g(pro)s(cess)g(calls)h(\013clos/\013delt.)56
+b(\014ts)p 2801 4181 V 32 w(delete)p 3064 4181 V 34 w(\014le)35
+b(tries)h(to)f(obtain)h(a)0 4294 y(READ)m(WRITE)e(lo)s(c)m(k)g(on)f
+(the)g(\014le)h(to)g(b)s(e)e(deleted,)j(th)m(us)e(it)h(can)f(b)s(e)g
+(blo)s(c)m(k)m(ed)h(if)f(the)h(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s
+(ened)0 4407 y(in)c(READ)m(WRITE)h(mo)s(de.)0 4567 y(A)i(shared)f
+(memory)h(managemen)m(t)h(utilit)m(y)g(program)f(called)h(`smem',)f(is)
+g(included)f(with)h(the)g(CFITSIO)e(dis-)0 4680 y(tribution.)39
+b(It)27 b(can)g(b)s(e)f(built)h(b)m(y)g(t)m(yping)g(`mak)m(e)h(smem';)g
+(then)f(t)m(yp)s(e)g(`smem)f(-h')h(to)h(get)g(a)f(list)g(of)g(v)-5
+b(alid)27 b(options.)0 4793 y(Executing)37 b(smem)f(without)g(an)m(y)h
+(options)g(causes)f(it)h(to)g(list)g(all)g(the)g(shared)e(memory)i
+(segmen)m(ts)g(curren)m(tly)0 4906 y(residing)c(in)g(the)g(system)h
+(and)e(managed)i(b)m(y)f(the)h(shared)e(memory)h(driv)m(er.)49
+b(T)-8 b(o)34 b(get)g(a)g(list)g(of)f(all)h(the)g(shared)0
+5019 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g
+(program)f(`ip)s(cs)h([-a]'.)0 5351 y Fd(8.3)135 b(Base)46
+b(Filename)0 5601 y Fi(The)31 b(base)g(\014lename)h(is)f(the)h(name)f
+(of)h(the)f(\014le)h(optionally)g(including)f(the)h(director/sub)s
+(directory)f(path,)h(and)0 5714 y(in)e(the)h(case)g(of)g(`ftp',)f(`h)m
+(ttp',)i(and)d(`ro)s(ot')j(\014let)m(yp)s(es,)e(the)h(mac)m(hine)g
+(iden)m(ti\014er.)41 b(Examples:)p eop end
+%%Page: 85 91
+TeXDict begin 85 90 bop 0 299 a Fg(8.3.)72 b(BASE)30
+b(FILENAME)2830 b Fi(85)191 555 y Fe(myfile.fits)191
+668 y(!data.fits)191 781 y(/data/myfile.fits)191 894
+y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o(eda)o(ta/m)o(yfil)o(e.f)o(its.)o
+(gz)0 1120 y Fi(When)29 b(creating)h(a)f(new)f(output)h(\014le)g(on)g
+(magnetic)h(disk)e(\(of)i(t)m(yp)s(e)f(\014le://\))h(if)f(the)g(base)g
+(\014lename)g(b)s(egins)f(with)0 1233 y(an)34 b(exclamation)j(p)s(oin)m
+(t)d(\(!\))54 b(then)34 b(an)m(y)g(existing)i(\014le)e(with)g(that)h
+(same)g(basename)g(will)g(b)s(e)e(deleted)i(prior)f(to)0
+1346 y(creating)h(the)f(new)g(FITS)f(\014le.)51 b(Otherwise)34
+b(if)g(the)g(\014le)g(to)g(b)s(e)g(created)h(already)f(exists,)i(then)d
+(CFITSIO)g(will)0 1459 y(return)g(an)h(error)f(and)g(will)i(not)f(o)m
+(v)m(erwrite)h(the)f(existing)h(\014le.)52 b(Note)35
+b(that)g(the)f(exclamation)i(p)s(oin)m(t,)f(')10 b(!',)36
+b(is)e(a)0 1572 y(sp)s(ecial)28 b(UNIX)g(c)m(haracter,)j(so)d(if)f(it)i
+(is)f(used)f(on)g(the)h(command)g(line)g(rather)g(than)f(en)m(tered)h
+(at)h(a)f(task)h(prompt,)0 1685 y(it)j(m)m(ust)f(b)s(e)g(preceded)g(b)m
+(y)h(a)g(bac)m(kslash)g(to)g(force)g(the)g(UNIX)g(shell)f(to)h(pass)f
+(it)i(v)m(erbatim)f(to)g(the)g(application)0 1798 y(program.)0
+1958 y(If)24 b(the)i(output)e(disk)h(\014le)g(name)g(ends)f(with)g(the)
+h(su\016x)f('.gz',)k(then)d(CFITSIO)e(will)i(compress)g(the)g(\014le)g
+(using)g(the)0 2071 y(gzip)g(compression)f(algorithm)h(b)s(efore)f
+(writing)g(it)h(to)g(disk.)38 b(This)23 b(can)i(reduce)f(the)g(amoun)m
+(t)h(of)f(disk)g(space)h(used)0 2184 y(b)m(y)34 b(the)h(\014le.)53
+b(Note)36 b(that)f(this)g(feature)g(requires)f(that)h(the)f
+(uncompressed)g(\014le)g(b)s(e)g(constructed)h(in)f(memory)0
+2297 y(b)s(efore)c(it)h(is)f(compressed)g(and)g(written)h(to)g(disk,)f
+(so)g(it)h(can)g(fail)g(if)f(there)h(is)f(insu\016cien)m(t)h(a)m(v)-5
+b(ailable)33 b(memory)-8 b(.)0 2457 y(An)45 b(input)g(FITS)f(\014le)i
+(ma)m(y)g(b)s(e)f(compressed)g(with)h(the)f(gzip)h(or)g(Unix)f
+(compress)h(algorithms,)k(in)45 b(whic)m(h)0 2570 y(case)38
+b(CFITSIO)e(will)i(uncompress)e(the)i(\014le)g(on)f(the)h(\015y)e(in)m
+(to)j(a)f(temp)s(orary)f(\014le)g(\(in)h(memory)f(or)g(on)h(disk\).)0
+2683 y(Compressed)32 b(\014les)i(ma)m(y)g(only)f(b)s(e)g(op)s(ened)f
+(with)h(read-only)h(p)s(ermission.)49 b(When)33 b(sp)s(ecifying)g(the)h
+(name)f(of)h(a)0 2796 y(compressed)h(FITS)g(\014le)h(it)g(is)g(not)g
+(necessary)g(to)g(app)s(end)e(the)i(\014le)g(su\016x)e(\(e.g.,)39
+b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 2908 y(cannot)24
+b(\014nd)e(the)h(input)f(\014le)i(name)f(without)g(the)g(su\016x,)h
+(then)f(it)h(will)g(automatically)i(searc)m(h)e(for)f(a)g(compressed)0
+3021 y(\014le)36 b(with)f(the)h(same)g(ro)s(ot)g(name.)57
+b(In)35 b(the)h(case)h(of)f(reading)g(ftp)f(and)g(h)m(ttp)h(t)m(yp)s(e)
+g(\014les,)h(CFITSIO)e(generally)0 3134 y(lo)s(oks)j(for)g(a)g
+(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(\014rst,)h(b)s(efore)e
+(trying)h(to)h(op)s(en)e(the)h(uncompressed)e(\014le.)64
+b(By)0 3247 y(default,)37 b(CFITSIO)e(copies)h(\(and)g(uncompressed)e
+(if)i(necessary\))g(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)g(in)m(to)
+i(memory)0 3360 y(on)f(the)g(lo)s(cal)h(mac)m(hine)f(b)s(efore)g(op)s
+(ening)f(it.)58 b(This)35 b(will)h(fail)g(if)g(the)g(lo)s(cal)h(mac)m
+(hine)g(do)s(es)e(not)h(ha)m(v)m(e)h(enough)0 3473 y(memory)g(to)h
+(hold)f(the)g(whole)h(FITS)e(\014le,)k(so)d(in)g(this)g(case,)k(the)c
+(output)g(\014lename)g(sp)s(eci\014er)g(\(see)h(the)g(next)0
+3586 y(section\))32 b(can)f(b)s(e)e(used)h(to)h(further)e(con)m(trol)j
+(ho)m(w)e(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)0
+3746 y(If)i(the)h(input)f(\014le)h(is)g(an)g(IRAF)g(image)h(\014le)f
+(\(*.imh)g(\014le\))h(then)e(CFITSIO)f(will)j(automatically)h(con)m(v)m
+(ert)g(it)e(on)0 3859 y(the)27 b(\015y)g(in)m(to)h(a)g(virtual)f(FITS)f
+(image)j(b)s(efore)e(it)g(is)g(op)s(ened)g(b)m(y)g(the)g(application)i
+(program.)39 b(IRAF)27 b(images)i(can)0 3972 y(only)h(b)s(e)g(op)s
+(ened)g(with)g(READONL)-8 b(Y)31 b(\014le)f(access.)0
+4132 y(Similarly)-8 b(,)32 b(if)f(the)g(input)f(\014le)i(is)f(a)g(ra)m
+(w)g(binary)f(data)i(arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)h(con)m
+(v)m(ert)i(it)e(on)g(the)h(\015y)e(in)m(to)0 4245 y(a)38
+b(virtual)g(FITS)g(image)h(with)e(the)h(basic)h(set)f(of)g(required)f
+(header)h(k)m(eyw)m(ords)g(b)s(efore)g(it)g(is)g(op)s(ened)f(b)m(y)h
+(the)0 4358 y(application)32 b(program)f(\(with)g(READONL)-8
+b(Y)31 b(access\).)44 b(In)30 b(this)h(case)h(the)f(data)g(t)m(yp)s(e)g
+(and)g(dimensions)f(of)h(the)0 4471 y(image)d(m)m(ust)f(b)s(e)f(sp)s
+(eci\014ed)g(in)h(square)g(brac)m(k)m(ets)h(follo)m(wing)g(the)f
+(\014lename)g(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)j(The)0
+4584 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))h
+(de\014nes)e(the)g(datat)m(yp)s(e)h(of)g(the)g(arra)m(y:)239
+4810 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 4923
+y(i)381 b(16-bit)46 b(signed)g(integer)239 5036 y(u)381
+b(16-bit)46 b(unsigned)g(integer)239 5149 y(j)381 b(32-bit)46
+b(signed)g(integer)239 5262 y(r)h(or)g(f)143 b(32-bit)46
+b(floating)g(point)239 5375 y(d)381 b(64-bit)46 b(floating)g(point)0
+5601 y Fi(An)40 b(optional)h(second)f(c)m(haracter)i(sp)s(eci\014es)e
+(the)h(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)60
+b(b)40 b(or)g(B)h(indicates)g(big)0 5714 y(endian)f(\(as)h(in)f(FITS)f
+(\014les)i(and)f(the)g(nativ)m(e)i(format)e(of)h(SUN)f(UNIX)h(w)m
+(orkstations)g(and)f(Mac)i(PCs\))e(and)p eop end
+%%Page: 86 92
+TeXDict begin 86 91 bop 0 299 a Fi(86)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(l)41 b(or)g(L)g(indicates)g(little)i(endian)e(\(nativ)m(e)h
+(format)g(of)f(DEC)f(OSF)h(w)m(orkstations)h(and)e(IBM)i(PCs\).)72
+b(If)40 b(this)0 668 y(c)m(haracter)32 b(is)e(omitted)i(then)e(the)g
+(arra)m(y)h(is)g(assumed)e(to)i(ha)m(v)m(e)h(the)f(nativ)m(e)g(b)m(yte)
+g(order)f(of)h(the)f(lo)s(cal)i(mac)m(hine.)0 781 y(These)d(datat)m(yp)
+s(e)h(c)m(haracters)h(are)e(then)g(follo)m(w)m(ed)i(b)m(y)e(a)h(series)
+f(of)g(one)h(or)f(more)g(in)m(teger)i(v)-5 b(alues)29
+b(separated)h(b)m(y)0 894 y(commas)h(whic)m(h)g(de\014ne)e(the)i(size)h
+(of)e(eac)m(h)i(dimension)e(of)h(the)g(ra)m(w)f(arra)m(y)-8
+b(.)43 b(Arra)m(ys)30 b(with)h(up)e(to)j(5)f(dimensions)0
+1007 y(are)f(curren)m(tly)g(supp)s(orted.)38 b(Finally)-8
+b(,)32 b(a)e(b)m(yte)g(o\013set)g(to)h(the)e(p)s(osition)h(of)g(the)g
+(\014rst)e(pixel)i(in)g(the)f(data)i(\014le)e(ma)m(y)0
+1120 y(b)s(e)d(sp)s(eci\014ed)g(b)m(y)h(separating)h(it)f(with)g(a)g
+(':')39 b(from)27 b(the)g(last)g(dimension)g(v)-5 b(alue.)40
+b(If)26 b(omitted,)j(it)e(is)g(assumed)f(that)0 1233
+y(the)35 b(o\013set)h(=)f(0.)54 b(This)35 b(parameter)g(ma)m(y)h(b)s(e)
+e(used)g(to)i(skip)e(o)m(v)m(er)i(an)m(y)g(header)e(information)i(in)e
+(the)h(\014le)g(that)0 1346 y(precedes)30 b(the)h(binary)f(data.)41
+b(F)-8 b(urther)30 b(examples:)95 1603 y Fe(raw.dat[b10000])521
+b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95
+1715 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point)
+h(big-endian)f(array)95 1828 y(img.fits[ib512,512:2880])89
+b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336
+1941 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header)
+0 2198 y Fi(One)25 b(sp)s(ecial)g(case)h(of)f(input)f(\014le)h(is)g
+(where)g(the)g(\014lename)g(=)g(`-')h(\(a)f(dash)g(or)g(min)m(us)f
+(sign\))h(or)g('stdin')g(or)g('stdout',)0 2311 y(whic)m(h)d
+(signi\014es)h(that)h(the)f(input)e(\014le)i(is)g(to)h(b)s(e)e(read)g
+(from)h(the)g(stdin)f(stream,)j(or)e(written)f(to)i(the)f(stdout)g
+(stream)0 2424 y(if)34 b(a)g(new)g(output)f(\014le)h(is)g(b)s(eing)g
+(created.)52 b(In)33 b(the)h(case)h(of)f(reading)h(from)e(stdin,)h
+(CFITSIO)f(\014rst)g(copies)i(the)0 2537 y(whole)g(stream)h(in)m(to)g
+(a)f(temp)s(orary)g(FITS)f(\014le)i(\(in)f(memory)g(or)g(on)g(disk\),)h
+(and)f(subsequen)m(t)f(reading)h(of)h(the)0 2650 y(FITS)c(\014le)h(o)s
+(ccurs)g(in)f(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)g(to)g
+(stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)g(\014le)g(in)0
+2763 y(memory)h(\(since)i(random)d(access)j(is)e(required\),)i(then)e
+(\015ushes)f(it)i(out)g(to)g(the)f(stdout)h(stream)g(when)e(the)i
+(\014le)0 2876 y(is)30 b(closed.)42 b(In)29 b(addition,)i(if)f(the)g
+(output)g(\014lename)g(=)g('-.gz')i(or)e('stdout.gz')h(then)f(it)h
+(will)f(b)s(e)g(gzip)g(compressed)0 2989 y(b)s(efore)g(b)s(eing)g
+(written)g(to)h(stdout.)0 3149 y(This)25 b(abilit)m(y)j(to)e(read)g
+(and)f(write)h(on)g(the)g(stdin)g(and)f(stdout)h(steams)g(allo)m(ws)i
+(FITS)d(\014les)h(to)g(b)s(e)g(pip)s(ed)e(b)s(et)m(w)m(een)0
+3262 y(tasks)42 b(in)f(memory)g(rather)g(than)h(ha)m(ving)g(to)g
+(create)h(temp)s(orary)e(in)m(termediate)i(FITS)d(\014les)i(on)f(disk.)
+73 b(F)-8 b(or)0 3375 y(example)28 b(if)e(task1)i(creates)h(an)e
+(output)f(FITS)g(\014le,)i(and)f(task2)g(reads)g(an)g(input)f(FITS)g
+(\014le,)i(the)f(FITS)f(\014le)h(ma)m(y)0 3487 y(b)s(e)j(pip)s(ed)f(b)s
+(et)m(w)m(een)i(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)143
+3744 y Fe(task1)47 b(-)g(|)g(task2)g(-)0 4001 y Fi(where)30
+b(the)h(v)m(ertical)i(bar)e(is)f(the)h(Unix)g(piping)f(sym)m(b)s(ol.)42
+b(This)30 b(assumes)g(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0
+4114 y(the)g(FITS)e(\014le)i(o\013)f(of)h(the)g(command)f(line.)0
+4448 y Fd(8.4)135 b(Output)45 b(File)g(Name)h(when)f(Op)t(ening)g(an)g
+(Existing)h(File)0 4698 y Fi(An)36 b(optional)i(output)e(\014lename)h
+(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h
+(follo)m(wing)g(the)f(base)g(\014le)0 4811 y(name)28
+b(to)h(b)s(e)f(op)s(ened.)39 b(This)28 b(is)g(mainly)g(useful)g(in)g
+(those)g(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m
+(y)0 4924 y(of)i(the)f(input)g(FITS)f(\014le)i(b)s(efore)f(it)h(is)f
+(op)s(ened)g(and)f(passed)h(to)h(the)g(application)h(program.)40
+b(This)28 b(happ)s(ens)g(b)m(y)0 5036 y(default)i(when)g(op)s(ening)g
+(a)g(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)h(when)e
+(reading)h(a)h(compressed)f(FITS)g(\014le)g(on)0 5149
+y(a)36 b(lo)s(cal)h(disk,)g(when)e(reading)h(from)g(the)g(stdin)f
+(stream,)j(or)d(when)g(a)i(column)e(\014lter,)j(ro)m(w)e(\014lter,)h
+(or)f(binning)0 5262 y(sp)s(eci\014er)29 b(is)g(included)g(as)h(part)f
+(of)g(the)h(input)f(\014le)g(sp)s(eci\014cation.)41 b(By)30
+b(default)g(this)f(temp)s(orary)g(\014le)g(is)h(created)0
+5375 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)g(not)g(enough)g
+(memory)g(to)h(create)g(the)g(\014le)f(cop)m(y)-8 b(,)31
+b(then)f(CFITSIO)e(will)i(exit)h(with)f(an)0 5488 y(error.)45
+b(In)32 b(these)g(cases)h(one)g(can)f(force)h(a)f(p)s(ermanen)m(t)g
+(\014le)g(to)h(b)s(e)e(created)i(on)f(disk,)g(instead)h(of)f(a)g(temp)s
+(orary)0 5601 y(\014le)38 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)f
+(the)i(name)g(in)f(paren)m(theses)h(immediately)h(follo)m(wing)g(the)e
+(base)h(\014le)g(name.)0 5714 y(The)30 b(output)g(\014lename)g(can)h
+(include)f(the)h(')10 b(!')41 b(clobb)s(er)30 b(\015ag.)p
+eop end
+%%Page: 87 93
+TeXDict begin 87 92 bop 0 299 a Fg(8.4.)72 b(OUTPUT)30
+b(FILE)g(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)e(FILE)967
+b Fi(87)0 555 y(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g
+(CFITSIO)f(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39
+b Fi(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b
+(`\014le1.\014ts.gz')j(in)m(to)f(the)f(lo)s(cal)h(disk)e(\014le)h
+(`\014le2.\014ts')h(b)s(efore)f(op)s(ening)f(it.)70 b(CFITSIO)38
+b(do)s(es)i(not)0 781 y(automatically)33 b(delete)f(the)e(output)g
+(\014le,)h(so)g(it)g(will)f(still)i(exist)f(after)g(the)f(application)i
+(program)e(exits.)0 941 y(In)35 b(some)i(cases,)h(sev)m(eral)f
+(di\013eren)m(t)g(temp)s(orary)e(FITS)h(\014les)g(will)g(b)s(e)f
+(created)i(in)f(sequence,)i(for)e(instance,)i(if)0 1054
+y(one)f(op)s(ens)g(a)g(remote)h(\014le)f(using)g(FTP)-8
+b(,)37 b(then)g(\014lters)g(ro)m(ws)g(in)g(a)h(binary)e(table)i
+(extension,)i(then)c(create)j(an)0 1167 y(image)f(b)m(y)f(binning)f(a)h
+(pair)g(of)g(columns.)60 b(In)36 b(this)h(case,)j(the)d(remote)h
+(\014le)f(will)g(b)s(e)f(copied)h(to)h(a)f(temp)s(orary)0
+1280 y(lo)s(cal)j(\014le,)h(then)d(a)h(second)f(temp)s(orary)h(\014le)f
+(will)h(b)s(e)f(created)i(con)m(taining)g(the)e(\014ltered)h(ro)m(ws)f
+(of)h(the)g(table,)0 1393 y(and)c(\014nally)g(a)h(third)e(temp)s(orary)
+h(\014le)h(con)m(taining)g(the)g(binned)e(image)i(will)g(b)s(e)f
+(created.)57 b(In)34 b(cases)i(lik)m(e)h(this)0 1506
+y(where)28 b(m)m(ultiple)h(\014les)f(are)h(created,)h(the)e(out\014le)h
+(sp)s(eci\014er)f(will)g(b)s(e)g(in)m(terpreted)h(the)f(name)g(of)h
+(the)f(\014nal)g(\014le)h(as)0 1619 y(describ)s(ed)g(b)s(elo)m(w,)i(in)
+f(descending)g(priorit)m(y:)136 1869 y Fc(\017)46 b Fi(as)29
+b(the)g(name)g(of)g(the)g(\014nal)f(image)i(\014le)f(if)f(an)h(image)h
+(within)e(a)h(single)g(binary)f(table)i(cell)g(is)e(op)s(ened)g(or)h
+(if)227 1982 y(an)i(image)g(is)g(created)g(b)m(y)f(binning)g(a)g(table)
+i(column.)136 2167 y Fc(\017)46 b Fi(as)33 b(the)f(name)h(of)f(the)h
+(\014le)f(con)m(taining)i(the)e(\014ltered)g(table)i(if)e(a)h(column)f
+(\014lter)g(and/or)g(a)h(ro)m(w)f(\014lter)h(are)227
+2280 y(sp)s(eci\014ed.)136 2464 y Fc(\017)46 b Fi(as)31
+b(the)f(name)h(of)f(the)h(lo)s(cal)h(cop)m(y)f(of)f(the)h(remote)g(FTP)
+f(or)h(HTTP)e(\014le.)136 2649 y Fc(\017)46 b Fi(as)31
+b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)h(of)g(the)f(FITS)g
+(\014le,)h(if)g(a)g(compressed)f(FITS)g(\014le)h(on)g(lo)s(cal)227
+2762 y(disk)f(has)g(b)s(een)g(op)s(ened.)136 2946 y Fc(\017)46
+b Fi(otherwise,)31 b(the)g(output)f(\014lename)g(is)h(ignored.)0
+3197 y(The)e(output)f(\014le)h(sp)s(eci\014er)g(is)g(useful)f(when)g
+(reading)h(FTP)g(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)h(since)g(it)h
+(can)f(b)s(e)g(used)0 3310 y(to)34 b(create)i(a)e(lo)s(cal)h(disk)e
+(cop)m(y)i(of)f(the)g(\014le)f(that)i(can)f(b)s(e)f(reused)g(in)g(the)h
+(future.)50 b(If)33 b(the)h(output)g(\014le)f(name)h(=)0
+3423 y(`*')i(then)e(a)i(lo)s(cal)g(\014le)f(with)g(the)g(same)g(name)g
+(as)g(the)h(net)m(w)m(ork)f(\014le)g(will)h(b)s(e)e(created.)56
+b(Note)36 b(that)f(CFITSIO)0 3535 y(will)30 b(b)s(eha)m(v)m(e)g
+(di\013eren)m(tly)h(dep)s(ending)d(on)i(whether)f(the)h(remote)g
+(\014le)g(is)g(compressed)f(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0
+3648 y(follo)m(wing)i(examples:)136 3876 y Fc(\017)46
+b Fi(`ftp://remote.mac)m(hine/tmp/m)m(y\014le.\014ts.gz\(*\)')k(-)43
+b(the)g(remote)h(compressed)f(\014le)g(is)g(copied)h(to)g(the)227
+3988 y(lo)s(cal)26 b(compressed)e(\014le)g(`m)m(y\014le.\014ts.gz',)k
+(whic)m(h)c(is)g(then)h(uncompressed)e(in)h(lo)s(cal)h(memory)f(b)s
+(efore)g(b)s(eing)227 4101 y(op)s(ened)30 b(and)g(passed)g(to)h(the)f
+(application)i(program.)136 4286 y Fc(\017)46 b Fi(`ftp://remote.mac)m
+(hine/tmp/m)m(y\014le.\014ts.gz\(m)m(y\014le.\014ts\)')d(-)37
+b(the)g(remote)g(compressed)f(\014le)h(is)f(copied)227
+4399 y(and)h(uncompressed)g(in)m(to)h(the)g(lo)s(cal)h(\014le)f(`m)m
+(y\014le.\014ts'.)64 b(This)36 b(example)j(requires)e(less)h(lo)s(cal)h
+(memory)227 4512 y(than)30 b(the)h(previous)f(example)h(since)g(the)f
+(\014le)h(is)f(uncompressed)f(on)h(disk)g(instead)h(of)f(in)h(memory)-8
+b(.)136 4696 y Fc(\017)46 b Fi(`ftp://remote.mac)m(hine/tmp/m)m
+(y\014le.\014ts\(m)m(y\014le.\014ts.gz\)')28 b(-)21 b(this)g(will)h
+(usually)f(pro)s(duce)f(an)h(error)g(since)227 4809 y(CFITSIO)29
+b(itself)i(cannot)g(compress)f(\014les.)0 5036 y(The)36
+b(exact)i(b)s(eha)m(vior)e(of)h(CFITSIO)e(in)h(the)h(latter)g(case)h
+(dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f(serv)m(er)g(running)f
+(on)0 5149 y(the)c(remote)g(mac)m(hine)g(and)f(ho)m(w)g(it)h(is)f
+(con\014gured.)40 b(In)30 b(some)h(cases,)g(if)f(the)h(\014le)f(`m)m
+(y\014le.\014ts.gz')j(exists)e(on)f(the)0 5262 y(remote)38
+b(mac)m(hine,)h(then)e(the)g(serv)m(er)g(will)h(cop)m(y)f(it)h(to)f
+(the)h(lo)s(cal)g(mac)m(hine.)61 b(In)36 b(other)h(cases)h(the)f(ftp)g
+(serv)m(er)0 5375 y(will)f(automatically)j(create)e(and)f(transmit)g(a)
+g(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(if)g(only)g(the)g
+(uncompressed)0 5488 y(v)m(ersion)27 b(exists.)41 b(This)26
+b(can)h(get)h(rather)f(confusing,)h(so)f(users)f(should)g(use)h(a)g
+(certain)h(amoun)m(t)g(of)f(caution)h(when)0 5601 y(using)34
+b(the)h(output)f(\014le)h(sp)s(eci\014er)f(with)h(FTP)f(or)h(HTTP)f
+(\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s
+(eha)m(vior)0 5714 y(that)c(they)g(exp)s(ect.)p eop end
+%%Page: 88 94
+TeXDict begin 88 93 bop 0 299 a Fi(88)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fd(8.5)135 b(T)-11 b(emplate)46 b(File)g(Name)f(when)g(Creating)h
+(a)g(New)f(File)0 808 y Fi(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g
+(created)g(with)g(a)f(call)i(to)g(\014ts)p 2101 808 28
+4 v 32 w(create)p 2369 808 V 35 w(\014le,)g(the)f(name)g(of)g(a)g
+(template)h(\014le)e(ma)m(y)0 921 y(b)s(e)h(supplied)g(in)h(paren)m
+(theses)g(immediately)h(follo)m(wing)g(the)g(name)f(of)g(the)g(new)f
+(\014le)h(to)h(b)s(e)e(created.)71 b(This)0 1034 y(template)27
+b(is)e(used)g(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g
+(HDUs)g(in)f(the)h(new)f(\014le.)39 b(The)25 b(template)i(\014le)e(ma)m
+(y)0 1147 y(b)s(e)32 b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case)
+i(the)f(newly)g(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e
+(same)g(k)m(eyw)m(ords)g(in)0 1260 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g
+(template)i(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b)
+s(e)f(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0
+1373 y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,)
+g(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h
+(FITS)f(k)m(eyw)m(ord)i(record.)0 1486 y(The)j(format)h(of)f(the)h
+(ASCI)s(I)e(template)i(\014le)g(is)f(describ)s(ed)f(b)s(elo)m(w.)0
+1833 y Fd(8.6)135 b(Image)46 b(Tile-Compression)h(Sp)t(eci\014cation)0
+2086 y Fi(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f
+(FITS)g(\014le)g(to)h(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)i
+(that)f(images)0 2198 y(should)d(b)s(e)h(written)g(in)g
+(tile-compressed)h(format)g(\(see)g(section)g(5.5,)h(\\Primary)e(Arra)m
+(y)h(or)f(IMA)m(GE)h(Extension)0 2311 y(I/O)f(Routines"\))i(b)m(y)e
+(enclosing)h(the)g(compression)f(parameters)h(in)f(square)g(brac)m(k)m
+(ets)i(follo)m(wing)g(the)f(ro)s(ot)f(disk)0 2424 y(\014le)j(name.)41
+b(Here)31 b(are)g(some)g(examples)g(of)f(the)h(syn)m(tax)g(for)f(sp)s
+(ecifying)g(tile-compressed)i(output)e(images:)191 2695
+y Fe(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h
+(default)e(tile)i(size)191 2921 y(myfile.fit[compress)42
+b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191
+3034 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g
+(letter)f(of)h(the)g(algorithm)191 3147 y(myfile.fit[compress)42
+b(PLIO])238 b(name)46 b(is)i(required.)191 3373 y(myfile.fit[compress)
+42 b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f
+(tile)h(size)191 3486 y(myfile.fit[compress)42 b(Rice)47
+b(100,100;2])e(-)j(as)f(above,)f(and)h(use)g(noisebits)e(=)i(2)0
+3833 y Fd(8.7)135 b(HDU)46 b(Lo)t(cation)f(Sp)t(eci\014cation)0
+4086 y Fi(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d
+(de\014nes)h(whic)m(h)g(HDU)h(\(Header-Data)i(Unit,)h(also)d(kno)m(wn)f
+(as)h(an)0 4199 y(`extension'\))36 b(within)d(the)i(FITS)e(\014le)h(to)
+h(initially)h(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)i(follo)m(w)f
+(the)f(base)h(\014le)f(name)0 4312 y(\(or)g(the)g(output)g(\014le)g
+(name)f(if)h(presen)m(t\).)52 b(If)33 b(it)h(is)g(not)g(sp)s(eci\014ed)
+g(then)f(the)h(\014rst)f(HDU)i(\(the)f(primary)f(arra)m(y\))0
+4425 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)h(sp)s
+(eci\014er)e(is)h(required)f(if)g(the)h(colFilter,)i(ro)m(wFilter,)g
+(or)e(binSp)s(ec)e(sp)s(eci\014ers)0 4538 y(are)f(presen)m(t,)f(b)s
+(ecause)h(the)f(primary)f(arra)m(y)i(is)f(not)h(a)f(v)-5
+b(alid)30 b(HDU)g(for)f(these)g(op)s(erations.)41 b(The)29
+b(HDU)h(ma)m(y)g(b)s(e)0 4650 y(sp)s(eci\014ed)e(either)i(b)m(y)e
+(absolute)i(p)s(osition)f(n)m(um)m(b)s(er,)f(starting)i(with)e(0)i(for)
+e(the)h(primary)f(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0
+4763 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)31
+b(the)e(v)m(ersion)g(n)m(um)m(b)s(er)e(and)h(the)h(HDU)g(t)m(yp)s(e)g
+(of)f(the)h(desired)f(extension.)0 4876 y(The)k(lo)s(cation)h(of)f(an)g
+(image)i(within)d(a)i(single)f(cell)i(of)e(a)g(binary)g(table)h(ma)m(y)
+f(also)h(b)s(e)f(sp)s(eci\014ed,)g(as)g(describ)s(ed)0
+4989 y(b)s(elo)m(w.)0 5149 y(The)26 b(absolute)h(p)s(osition)f(of)g
+(the)h(extension)g(is)f(sp)s(eci\014ed)f(either)i(b)m(y)f(enclosed)h
+(the)g(n)m(um)m(b)s(er)e(in)h(square)f(brac)m(k)m(ets)0
+5262 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f(extension)h(follo)m(wing)i
+(the)e(primary)e(arra)m(y\))j(or)f(b)m(y)f(preceded)h(the)g(n)m(um)m(b)
+s(er)e(with)i(a)g(plus)0 5375 y(sign)37 b(\(`+1'\).)63
+b(T)-8 b(o)38 b(sp)s(ecify)f(the)g(HDU)h(b)m(y)g(name,)h(giv)m(e)g(the)
+e(name)h(of)f(the)h(desired)f(HDU)h(\(the)f(v)-5 b(alue)38
+b(of)g(the)0 5488 y(EXTNAME)e(or)g(HDUNAME)h(k)m(eyw)m(ord\))g(and)f
+(optionally)h(the)f(extension)h(v)m(ersion)f(n)m(um)m(b)s(er)f(\(v)-5
+b(alue)37 b(of)f(the)0 5601 y(EXTVER)27 b(k)m(eyw)m(ord\))i(and)e(the)h
+(extension)h(t)m(yp)s(e)e(\(v)-5 b(alue)29 b(of)f(the)g(XTENSION)f(k)m
+(eyw)m(ord:)40 b(IMA)m(GE,)29 b(ASCI)s(I)d(or)0 5714
+y(T)-8 b(ABLE,)36 b(or)f(BINT)-8 b(ABLE\),)36 b(separated)f(b)m(y)g
+(commas)h(and)e(all)i(enclosed)g(in)f(square)g(brac)m(k)m(ets.)56
+b(If)34 b(the)h(v)-5 b(alue)p eop end
+%%Page: 89 95
+TeXDict begin 89 94 bop 0 299 a Fg(8.8.)72 b(IMA)m(GE)31
+b(SECTION)2835 b Fi(89)0 555 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h
+(not)f(sp)s(eci\014ed,)h(then)f(the)h(\014rst)e(extension)j(with)e(the)
+g(correct)i(v)-5 b(alue)34 b(of)0 668 y(EXTNAME)39 b(is)g(op)s(ened.)67
+b(The)38 b(extension)i(name)f(and)f(t)m(yp)s(e)i(are)f(not)h(case)g
+(sensitiv)m(e,)j(and)38 b(the)h(extension)0 781 y(t)m(yp)s(e)29
+b(ma)m(y)g(b)s(e)f(abbreviated)h(to)g(a)g(single)g(letter)h(\(e.g.,)h
+(I)d(=)g(IMA)m(GE)i(extension)f(or)f(primary)g(arra)m(y)-8
+b(,)30 b(A)f(or)f(T)g(=)0 894 y(ASCI)s(I)d(table)i(extension,)h(and)e
+(B)h(=)f(binary)g(table)h(BINT)-8 b(ABLE)27 b(extension\).)41
+b(If)26 b(the)g(HDU)h(lo)s(cation)i(sp)s(eci\014er)0
+1007 y(is)h(equal)h(to)g(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f
+(the)h(primary)e(arra)m(y)i(\(the)g(\014rst)f(HDU\))h(will)g(b)s(e)f
+(op)s(ened.)0 1167 y(FITS)k(images)i(are)f(most)h(commonly)f(stored)g
+(in)g(the)g(primary)f(arra)m(y)h(or)g(an)g(image)h(extension,)h(but)d
+(images)0 1280 y(can)d(also)h(b)s(e)e(stored)h(as)h(a)f(v)m(ector)h(in)
+f(a)g(single)h(cell)g(of)f(a)h(binary)e(table)i(\(i.e.)43
+b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0
+1393 y(con)m(tains)d(a)g(di\013eren)m(t)f(image\).)42
+b(Suc)m(h)27 b(an)h(image)i(can)e(b)s(e)g(op)s(ened)f(with)h(CFITSIO)e
+(b)m(y)i(sp)s(ecifying)g(the)g(desired)0 1506 y(column)k(name)g(and)f
+(the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)f(table)i(HDU)g
+(sp)s(eci\014er)e(as)h(sho)m(wn)g(in)f(the)h(follo)m(wing)0
+1619 y(examples.)71 b(The)40 b(column)g(name)h(is)f(separated)h(from)f
+(the)h(HDU)g(sp)s(eci\014er)f(b)m(y)g(a)h(semicolon)g(and)f(the)h(ro)m
+(w)0 1732 y(n)m(um)m(b)s(er)29 b(is)h(enclosed)h(in)e(paren)m(theses.)
+41 b(In)30 b(this)g(case)h(CFITSIO)d(copies)j(the)f(image)i(from)d(the)
+i(table)g(cell)g(in)m(to)0 1844 y(a)h(temp)s(orary)e(primary)h(arra)m
+(y)g(b)s(efore)g(it)h(is)f(op)s(ened.)43 b(The)30 b(application)j
+(program)e(then)g(just)g(sees)g(the)h(image)0 1957 y(in)i(the)h
+(primary)e(arra)m(y)-8 b(,)37 b(without)d(an)m(y)h(extensions.)53
+b(The)34 b(particular)g(ro)m(w)h(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s
+(e)f(sp)s(eci\014ed)0 2070 y(either)28 b(b)m(y)f(giving)h(an)f
+(absolute)h(in)m(teger)h(ro)m(w)f(n)m(um)m(b)s(er)e(\(starting)i(with)f
+(1)h(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0
+2183 y(a)33 b(b)s(o)s(olean)f(expression)g(that)h(ev)-5
+b(aluates)34 b(to)f(TR)m(UE)g(for)f(the)g(desired)g(ro)m(w.)47
+b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)g(the)0
+2296 y(expression)28 b(will)g(b)s(e)g(used.)39 b(The)28
+b(ro)m(w)g(selection)i(expression)e(has)g(the)g(same)g(syn)m(tax)h(as)f
+(describ)s(ed)f(in)h(the)g(Ro)m(w)0 2409 y(Filter)k(Sp)s(eci\014er)d
+(section,)j(b)s(elo)m(w.)0 2569 y(Examples:)143 2811
+y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i
+(primary)f(array)143 2924 y(myfile.fits+3)92 b(-)48 b(same)e(as)h
+(above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143
+3037 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g
+(EXTNAME)e(=)j('EVENTS')143 3150 y(myfile.fits[EVENTS,)43
+b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h
+(=)i(2)143 3263 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h
+(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 3376
+y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g
+(17)g(of)g(the)g('images')1527 3489 y(column)f(in)i(the)e(3rd)h
+(extension)f(of)h(the)g(file.)143 3602 y(myfile.fits[3;)d
+(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f
+(image)907 3714 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g
+('exposure')e(column)h(value)907 3827 y(greater)g(than)g(100.)0
+4158 y Fd(8.8)135 b(Image)46 b(Section)0 4408 y Fi(A)41
+b(virtual)g(\014le)f(con)m(taining)i(a)f(rectangular)h(subsection)e(of)
+h(an)g(image)g(can)g(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0
+4521 y(sp)s(ecifying)32 b(the)h(range)g(of)g(pixels)g(\(start:end\))g
+(along)h(eac)m(h)g(axis)f(to)g(b)s(e)f(extracted)i(from)e(the)h
+(original)g(image.)0 4634 y(One)d(can)h(also)h(sp)s(ecify)e(an)h
+(optional)h(pixel)f(incremen)m(t)g(\(start:end:step\))h(for)f(eac)m(h)h
+(axis)f(of)g(the)g(input)e(image.)0 4747 y(A)f(pixel)f(step)h(=)f(1)h
+(will)g(b)s(e)f(assumed)f(if)i(it)g(is)f(not)h(sp)s(eci\014ed.)39
+b(If)27 b(the)h(start)g(pixel)g(is)f(larger)i(then)e(the)h(end)e
+(pixel,)0 4860 y(then)32 b(the)g(image)h(will)f(b)s(e)f(\015ipp)s(ed)f
+(\(pro)s(ducing)h(a)h(mirror)g(image\))h(along)g(that)f(dimension.)45
+b(An)32 b(asterisk,)h('*',)0 4973 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp)
+s(ecify)f(the)g(en)m(tire)h(range)g(of)f(an)h(axis,)i(and)c('-*')j
+(will)e(\015ip)g(the)g(en)m(tire)h(axis.)65 b(The)38
+b(input)0 5086 y(image)31 b(can)f(b)s(e)f(in)g(the)h(primary)f(arra)m
+(y)-8 b(,)31 b(in)e(an)g(image)i(extension,)g(or)f(con)m(tained)g(in)g
+(a)g(v)m(ector)h(cell)g(of)f(a)g(binary)0 5199 y(table.)40
+b(In)25 b(the)h(later)h(2)f(cases)h(the)f(extension)h(name)f(or)f(n)m
+(um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)g(b)s(efore)h(the)g
+(image)h(section)0 5312 y(sp)s(eci\014er.)0 5472 y(Examples:)95
+5714 y Fe(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47
+b(a)h(256x256)d(pixel)i(image)p eop end
+%%Page: 90 96
+TeXDict begin 90 95 bop 0 299 a Fi(90)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)668
+555 y Fe(consisting)45 b(of)i(the)g(odd)g(numbered)f(columns)g(\(1st)g
+(axis\))h(and)668 668 y(the)g(even)g(numbered)e(rows)i(\(2nd)g(axis\))f
+(of)h(the)g(image)f(in)i(the)668 781 y(primary)e(array)g(of)i(the)e
+(file.)95 1007 y(myfile.fits[*,)e(512:256])i(-)h(open)g(an)g(image)g
+(consisting)e(of)i(all)g(the)g(columns)668 1120 y(in)g(the)g(input)g
+(image,)f(but)h(only)f(rows)h(256)g(through)f(512.)668
+1233 y(The)h(image)f(will)h(be)g(flipped)f(along)g(the)h(2nd)g(axis)g
+(since)668 1346 y(the)g(starting)f(pixel)g(is)h(greater)f(than)h(the)g
+(ending)f(pixel.)95 1571 y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g
+(as)g(above)f(but)h(keeping)f(only)668 1684 y(every)h(other)f(row)h
+(and)g(column)f(in)h(the)g(input)f(image.)95 1910 y(myfile.fits[-*,)e
+(*])j(-)h(copy)e(the)h(entire)f(image,)g(flipping)g(it)h(along)668
+2023 y(the)g(first)f(axis.)95 2249 y(myfile.fits[3][1:256,1:256)o(])c
+(-)47 b(opens)g(a)g(subsection)e(of)i(the)g(image)g(that)668
+2362 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95
+2588 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48
+b(open)e(an)h(image)g(consisting)286 2700 y(of)h(the)e(first)h(10)g
+(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286
+2813 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f
+(vector)286 2926 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g
+(extension)e(of)i(the)g(file.)0 3203 y Fi(When)23 b(CFITSIO)f(op)s(ens)
+h(an)g(image)h(section)h(it)f(\014rst)f(creates)h(a)g(temp)s(orary)f
+(\014le)h(con)m(taining)h(the)e(image)i(section)0 3315
+y(plus)32 b(a)i(cop)m(y)g(of)g(an)m(y)g(other)f(HDUs)h(in)f(the)h
+(\014le.)50 b(This)32 b(temp)s(orary)h(\014le)h(is)f(then)g(op)s(ened)g
+(b)m(y)g(the)h(application)0 3428 y(program,)28 b(so)g(it)g(is)f(not)h
+(p)s(ossible)f(to)h(write)g(to)g(or)g(mo)s(dify)f(the)g(input)g(\014le)
+g(when)g(sp)s(ecifying)g(an)h(image)h(section.)0 3541
+y(Note)39 b(that)f(CFITSIO)e(automatically)k(up)s(dates)d(the)g(w)m
+(orld)h(co)s(ordinate)g(system)g(k)m(eyw)m(ords)f(in)g(the)h(header)0
+3654 y(of)33 b(the)h(image)g(section,)h(if)e(they)h(exist,)h(so)e(that)
+h(the)f(co)s(ordinate)h(asso)s(ciated)h(with)e(eac)m(h)h(pixel)f(in)g
+(the)h(image)0 3767 y(section)e(will)e(b)s(e)g(computed)g(correctly)-8
+b(.)0 4120 y Fd(8.9)135 b(Image)46 b(T)-11 b(ransform)45
+b(Filters)0 4374 y Fi(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s
+(eci\014ed)e(mathematical)j(function)e(to)h(the)g(v)-5
+b(alue)34 b(of)h(ev)m(ery)g(pixel)f(in)g(a)h(FITS)0 4487
+y(image,)29 b(th)m(us)e(creating)h(a)g(new)e(virtual)h(image)i(in)d
+(computer)h(memory)g(that)h(is)f(then)f(op)s(ened)h(and)f(read)h(b)m(y)
+g(the)0 4600 y(application)32 b(program.)40 b(The)30
+b(original)i(FITS)d(image)j(is)e(not)h(mo)s(di\014ed)e(b)m(y)h(this)h
+(pro)s(cess.)0 4760 y(The)20 b(image)j(transformation)e(sp)s(eci\014er)
+f(is)h(app)s(ended)e(to)j(the)f(input)f(FITS)h(\014le)g(name)g(and)f
+(is)h(enclosed)h(in)e(square)0 4873 y(brac)m(k)m(ets.)42
+b(It)29 b(b)s(egins)f(with)h(the)g(letters)i('PIX')e(to)h(distinguish)e
+(it)i(from)e(other)i(t)m(yp)s(es)f(of)g(FITS)f(\014le)h(\014lters)g
+(that)0 4986 y(are)36 b(recognized)i(b)m(y)e(CFITSIO.)e(The)i(image)h
+(transforming)f(function)f(ma)m(y)i(use)f(an)m(y)g(of)g(the)h
+(mathematical)0 5099 y(op)s(erators)44 b(listed)h(in)f(the)h(follo)m
+(wing)h('Ro)m(w)f(Filtering)g(Sp)s(eci\014cation')g(section)h(of)e
+(this)h(do)s(cumen)m(t.)82 b(Some)0 5212 y(examples)31
+b(of)f(image)i(transform)e(\014lters)g(are:)48 5488 y
+Fe([pix)46 b(X)i(*)f(2.0])715 b(-)48 b(multiply)d(each)i(pixel)f(by)h
+(2.0)48 5601 y([pix)f(sqrt\(X\)])714 b(-)48 b(take)e(the)h(square)f
+(root)h(of)g(each)g(pixel)48 5714 y([pix)f(X)i(+)f(#ZEROPT)571
+b(-)48 b(add)e(the)h(value)g(of)g(the)g(ZEROPT)f(keyword)p
+eop end
+%%Page: 91 97
+TeXDict begin 91 96 bop 0 299 a Fg(8.9.)72 b(IMA)m(GE)31
+b(TRANSF)m(ORM)g(FIL)-8 b(TERS)2237 b Fi(91)48 555 y
+Fe([pix)46 b(X>0)h(?)h(log10\(X\))d(:)j(-99.])e(-)i(if)f(the)g(pixel)f
+(value)g(is)i(greater)1480 668 y(than)e(0,)h(compute)f(the)h(base)g(10)
+g(log,)1480 781 y(else)f(set)h(the)g(pixel)f(=)i(-99.)0
+1013 y Fi(Use)24 b(the)g(letter)h('X')f(in)f(the)h(expression)g(to)g
+(represen)m(t)g(the)g(curren)m(t)f(pixel)h(v)-5 b(alue)24
+b(in)f(the)h(image.)40 b(The)23 b(expression)0 1126 y(is)38
+b(ev)-5 b(aluated)39 b(indep)s(enden)m(tly)e(for)g(eac)m(h)i(pixel)f
+(in)g(the)g(image)h(and)e(ma)m(y)h(b)s(e)g(a)g(function)f(of)h(1\))h
+(the)f(original)0 1239 y(pixel)32 b(v)-5 b(alue,)32 b(2\))g(the)f(v)-5
+b(alue)32 b(of)f(other)h(pixels)f(in)g(the)g(image)i(at)f(a)f(giv)m(en)
+i(relativ)m(e)g(o\013set)f(from)f(the)g(p)s(osition)h(of)0
+1352 y(the)d(pixel)f(that)h(is)g(b)s(eing)f(ev)-5 b(aluated,)30
+b(and)e(3\))h(the)g(v)-5 b(alue)29 b(of)f(an)m(y)h(header)f(k)m(eyw)m
+(ords.)41 b(Header)29 b(k)m(eyw)m(ord)g(v)-5 b(alues)0
+1465 y(are)31 b(represen)m(ted)f(b)m(y)g(the)h(name)f(of)h(the)f(k)m
+(eyw)m(ord)h(preceded)f(b)m(y)h(the)f('#')h(sign.)0 1625
+y(T)-8 b(o)35 b(access)h(the)f(the)g(v)-5 b(alue)35 b(of)g(adjacen)m(t)
+h(pixels)f(in)f(the)h(image,)i(sp)s(ecify)e(the)g(\(1-D\))h(o\013set)g
+(from)e(the)h(curren)m(t)0 1738 y(pixel)c(in)f(curly)g(brac)m(k)m(ets.)
+42 b(F)-8 b(or)31 b(example)48 1970 y Fe([pix)94 b(\(x{-1})46
+b(+)i(x)f(+)h(x{+1}\))e(/)h(3])0 2202 y Fi(will)25 b(replace)g(eac)m(h)
+h(pixel)f(v)-5 b(alue)25 b(with)f(the)h(running)e(mean)i(of)f(the)h(v)
+-5 b(alues)25 b(of)g(that)g(pixel)g(and)f(it's)h(2)g(neigh)m(b)s(oring)
+0 2314 y(pixels.)40 b(Note)30 b(that)g(in)e(this)g(notation)i(the)f
+(image)h(is)f(treated)g(as)g(a)g(1-D)h(arra)m(y)-8 b(,)30
+b(where)e(eac)m(h)i(ro)m(w)f(of)g(the)g(image)0 2427
+y(\(or)c(higher)f(dimensional)g(cub)s(e\))h(is)f(app)s(ended)f(one)h
+(after)h(another)g(in)f(one)h(long)g(arra)m(y)g(of)f(pixels.)39
+b(It)25 b(is)f(p)s(ossible)0 2540 y(to)35 b(refer)f(to)h(pixels)f(in)g
+(the)g(ro)m(ws)g(ab)s(o)m(v)m(e)h(or)g(b)s(elo)m(w)f(the)g(curren)m(t)g
+(pixel)h(b)m(y)f(using)f(the)h(v)-5 b(alue)35 b(of)f(the)h(NAXIS1)0
+2653 y(header)30 b(k)m(eyw)m(ord.)41 b(F)-8 b(or)32 b(example)48
+2885 y Fe([pix)46 b(\(x{-#NAXIS1})f(+)i(x)h(+)f(x{#NAXIS1}\))e(/)i(3])0
+3117 y Fi(will)34 b(compute)f(the)h(mean)f(of)g(eac)m(h)i(image)f
+(pixel)g(and)e(the)i(pixels)f(immediately)i(ab)s(o)m(v)m(e)f(and)f(b)s
+(elo)m(w)g(it)h(in)f(the)0 3230 y(adjacen)m(t)27 b(ro)m(ws)f(of)g(the)f
+(image.)41 b(The)25 b(follo)m(wing)i(more)f(complex)h(example)f
+(creates)h(a)f(smo)s(othed)g(virtual)g(image)0 3343 y(where)k(eac)m(h)h
+(pixel)g(is)g(a)f(3)h(x)f(3)h(b)s(o)m(xcar)g(a)m(v)m(erage)i(of)d(the)h
+(input)e(image)j(pixels:)95 3575 y Fe([pix)47 b(\(X)g(+)h(X{-1})e(+)i
+(X{+1})286 3688 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f
+(X{-#NAXIS1)e(+)j(1})286 3801 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h
+(1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])0 4033 y Fi(If)31
+b(the)h(pixel)g(o\013set)h(extends)f(b)s(ey)m(ond)f(the)h(\014rst)f(or)
+h(last)h(pixel)f(in)f(the)h(image,)i(the)e(function)g(will)g(ev)-5
+b(aluate)33 b(to)0 4145 y(unde\014ned,)28 b(or)j(NULL.)0
+4306 y(F)-8 b(or)39 b(complex)g(or)g(commonly)g(used)e(image)j
+(\014ltering)f(op)s(erations,)i(one)d(can)h(write)g(the)f(expression)h
+(in)m(to)g(an)0 4419 y(external)i(text)h(\014le)f(and)f(then)g(imp)s
+(ort)g(it)h(in)m(to)h(the)e(\014lter)h(using)f(the)h(syn)m(tax)g('[pix)
+g(@\014lename.txt]'.)72 b(The)0 4531 y(mathematical)29
+b(expression)e(can)g(extend)g(o)m(v)m(er)i(m)m(ultiple)e(lines)g(of)h
+(text)g(in)e(the)h(\014le.)40 b(An)m(y)27 b(lines)g(in)g(the)g
+(external)0 4644 y(text)h(\014le)e(that)i(b)s(egin)e(with)g(2)h(slash)f
+(c)m(haracters)i(\('//'\))h(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)h(b)s
+(e)f(used)g(to)h(add)f(commen)m(ts)0 4757 y(in)m(to)31
+b(the)g(\014le.)0 4917 y(By)c(default,)g(the)f(datat)m(yp)s(e)i(of)e
+(the)g(resulting)h(image)g(will)g(b)s(e)e(the)i(same)f(as)h(the)f
+(original)i(image,)g(but)e(one)g(ma)m(y)0 5030 y(force)31
+b(a)g(di\013eren)m(t)g(datat)m(yp)s(e)g(b)m(y)f(app)s(ended)f(a)h(co)s
+(de)h(letter)h(to)f(the)f('pix')h(k)m(eyw)m(ord:)286
+5262 y Fe(pixb)95 b(-)g(8-bit)46 b(byte)190 b(image)46
+b(with)h(BITPIX)f(=)143 b(8)286 5375 y(pixi)95 b(-)47
+b(16-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 b(16)286
+5488 y(pixj)g(-)47 b(32-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95
+b(32)286 5601 y(pixr)g(-)47 b(32-bit)f(float)142 b(image)46
+b(with)h(BITPIX)f(=)i(-32)286 5714 y(pixd)95 b(-)47 b(64-bit)f(float)
+142 b(image)46 b(with)h(BITPIX)f(=)i(-64)p eop end
+%%Page: 92 98
+TeXDict begin 92 97 bop 0 299 a Fi(92)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(Also)23 b(b)m(y)f(default,)j(an)m(y)d(other)h(HDUs)g(in)f(the)
+g(input)g(\014le)g(will)h(b)s(e)e(copied)i(without)g(c)m(hange)g(to)g
+(the)g(output)f(virtual)0 668 y(FITS)k(\014le,)h(but)f(one)g(ma)m(y)h
+(discard)f(the)h(other)f(HDUs)h(b)m(y)f(adding)g(the)h(n)m(um)m(b)s(er)
+e('1')i(to)g(the)g('pix')f(k)m(eyw)m(ord)h(\(and)0 781
+y(follo)m(wing)32 b(an)m(y)f(optional)g(datat)m(yp)s(e)g(co)s(de)g
+(letter\).)42 b(F)-8 b(or)32 b(example:)239 1044 y Fe
+(myfile.fits[3][pixr1)90 b(sqrt\(X\)])0 1307 y Fi(will)23
+b(create)i(a)e(virtual)g(FITS)f(\014le)h(con)m(taining)h(only)f(a)g
+(primary)f(arra)m(y)i(image)g(with)e(32-bit)i(\015oating)g(p)s(oin)m(t)
+f(pixels)0 1420 y(that)29 b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30
+b(equal)f(to)g(the)g(square)g(ro)s(ot)g(of)g(the)g(pixels)f(in)h(the)g
+(image)h(that)f(is)g(in)f(the)h(3rd)f(extension)i(of)0
+1533 y(the)h('m)m(y\014le.\014ts')g(\014le.)0 1870 y
+Fd(8.10)136 b(Column)45 b(and)f(Keyw)l(ord)i(Filtering)g(Sp)t
+(eci\014cation)0 2121 y Fi(The)27 b(optional)i(column/k)m(eyw)m(ord)g
+(\014ltering)f(sp)s(eci\014er)f(is)h(used)f(to)i(mo)s(dify)e(the)h
+(column)g(structure)f(and/or)h(the)0 2234 y(header)38
+b(k)m(eyw)m(ords)h(in)f(the)h(HDU)g(that)h(w)m(as)f(selected)h(with)e
+(the)h(previous)f(HDU)h(lo)s(cation)h(sp)s(eci\014er.)65
+b(This)0 2347 y(\014ltering)42 b(sp)s(eci\014er)f(m)m(ust)h(b)s(e)f
+(enclosed)i(in)e(square)h(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f
+(distinguished)g(from)h(a)g(general)0 2460 y(ro)m(w)d(\014lter)g(sp)s
+(eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)g(the)g(fact)h
+(that)f(it)g(b)s(egins)f(with)h(the)g(string)g('col)h(')f(and)f(is)h
+(not)0 2573 y(immediately)30 b(follo)m(w)m(ed)g(b)m(y)e(an)g(equals)h
+(sign.)40 b(The)28 b(original)h(\014le)f(is)h(not)f(c)m(hanged)h(b)m(y)
+f(this)h(\014ltering)f(op)s(eration,)0 2686 y(and)40
+b(instead)h(the)g(mo)s(di\014cations)g(are)g(made)f(on)h(a)g(cop)m(y)g
+(of)g(the)g(input)f(FITS)g(\014le)g(\(usually)h(in)f(memory\),)0
+2799 y(whic)m(h)33 b(also)h(con)m(tains)g(a)f(cop)m(y)h(of)f(all)h(the)
+g(other)f(HDUs)h(in)e(the)h(\014le.)49 b(This)33 b(temp)s(orary)f
+(\014le)h(is)g(passed)g(to)h(the)0 2912 y(application)f(program)f(and)f
+(will)h(p)s(ersist)f(only)h(un)m(til)g(the)g(\014le)g(is)g(closed)h(or)
+f(un)m(til)g(the)g(program)f(exits,)j(unless)0 3025 y(the)d(out\014le)f
+(sp)s(eci\014er)g(\(see)h(ab)s(o)m(v)m(e\))h(is)f(also)g(supplied.)0
+3185 y(The)g(column/k)m(eyw)m(ord)h(\014lter)f(can)g(b)s(e)g(used)f(to)
+i(p)s(erform)e(the)i(follo)m(wing)g(op)s(erations.)44
+b(More)32 b(than)f(one)g(op)s(er-)0 3298 y(ation)g(ma)m(y)g(b)s(e)f(sp)
+s(eci\014ed)g(b)m(y)g(separating)h(them)f(with)h(commas)f(or)h
+(semi-colons.)136 3561 y Fc(\017)46 b Fi(Cop)m(y)36 b(only)g(a)g(sp)s
+(eci\014ed)g(list)g(of)g(columns)g(columns)f(to)i(the)f(\014ltered)g
+(input)f(\014le.)57 b(The)36 b(list)g(of)g(column)227
+3673 y(name)c(should)f(b)s(e)h(separated)g(b)m(y)g(semi-colons.)48
+b(Wild)32 b(card)g(c)m(haracters)i(ma)m(y)e(b)s(e)g(used)f(in)h(the)g
+(column)227 3786 y(names)37 b(to)h(matc)m(h)g(m)m(ultiple)g(columns.)61
+b(If)37 b(the)g(expression)g(con)m(tains)i(b)s(oth)d(a)i(list)f(of)h
+(columns)f(to)h(b)s(e)227 3899 y(included)h(and)f(columns)h(to)g(b)s(e)
+g(deleted,)j(then)c(all)i(the)f(columns)g(in)g(the)g(original)h(table)g
+(except)g(the)227 4012 y(explicitly)32 b(deleted)f(columns)f(will)g
+(app)s(ear)g(in)g(the)g(\014ltered)g(table)h(\(i.e.,)h(there)e(is)h(no)
+f(need)f(to)i(explicitly)227 4125 y(list)g(the)g(columns)f(to)h(b)s(e)f
+(included)f(if)i(an)m(y)f(columns)g(are)h(b)s(eing)f(deleted\).)136
+4316 y Fc(\017)46 b Fi(Delete)32 b(a)d(column)g(or)g(k)m(eyw)m(ord)h(b)
+m(y)f(listing)h(the)f(name)g(preceded)g(b)m(y)g(a)g(min)m(us)g(sign)g
+(or)g(an)g(exclamation)227 4429 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d
+(will)g(delete)h(the)e(TIME)h(column)f(if)g(it)i(exists,)g(otherwise)f
+(the)g(TIME)f(k)m(eyw)m(ord.)227 4542 y(An)35 b(error)f(is)h(returned)e
+(if)i(neither)f(a)i(column)e(nor)g(k)m(eyw)m(ord)h(with)g(this)f(name)h
+(exists.)54 b(Note)36 b(that)g(the)227 4655 y(exclamation)27
+b(p)s(oin)m(t,)g(')10 b(!',)27 b(is)e(a)g(sp)s(ecial)h(UNIX)f(c)m
+(haracter,)j(so)d(if)g(it)h(is)f(used)f(on)h(the)g(command)g(line)g
+(rather)227 4768 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it)
+h(m)m(ust)f(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)g(to)g(force)g
+(the)f(UNIX)h(shell)227 4881 y(to)d(ignore)g(it.)136
+5071 y Fc(\017)46 b Fi(Rename)29 b(an)g(existing)g(column)f(or)h(k)m
+(eyw)m(ord)g(with)f(the)h(syn)m(tax)g('NewName)h(==)e(OldName'.)40
+b(An)28 b(error)227 5184 y(is)j(returned)e(if)h(neither)h(a)f(column)g
+(nor)g(k)m(eyw)m(ord)h(with)f(this)h(name)f(exists.)136
+5375 y Fc(\017)46 b Fi(App)s(end)37 b(a)j(new)f(column)f(or)i(k)m(eyw)m
+(ord)f(to)h(the)f(table.)68 b(T)-8 b(o)40 b(create)g(a)g(column,)h(giv)
+m(e)g(the)e(new)g(name,)227 5488 y(optionally)e(follo)m(w)m(ed)g(b)m(y)
+e(the)g(datat)m(yp)s(e)h(in)f(paren)m(theses,)i(follo)m(w)m(ed)g(b)m(y)
+e(a)h(single)g(equals)f(sign)g(and)g(an)227 5601 y(expression)g(to)h(b)
+s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)35 b(\(e.g.,)j('new)m
+(col\(1J\))f(=)e(0')g(will)h(create)g(a)f(new)g(32-bit)227
+5714 y(in)m(teger)k(column)e(called)i('new)m(col')f(\014lled)g(with)f
+(zeros\).)62 b(The)37 b(datat)m(yp)s(e)h(is)g(sp)s(eci\014ed)e(using)h
+(the)h(same)p eop end
+%%Page: 93 99
+TeXDict begin 93 98 bop 0 299 a Fg(8.10.)73 b(COLUMN)30
+b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)30 b(SPECIFICA)-8
+b(TION)1075 b Fi(93)227 555 y(syn)m(tax)28 b(that)h(is)e(allo)m(w)m(ed)
+j(for)d(the)h(v)-5 b(alue)28 b(of)g(the)g(FITS)f(TF)m(ORMn)g(k)m(eyw)m
+(ord)h(\(e.g.,)i('I',)f('J',)f('E',)g('D',)h(etc.)227
+668 y(for)37 b(binary)f(tables,)k(and)c('I8',)k(F12.3',)h('E20.12',)g
+(etc.)62 b(for)37 b(ASCI)s(I)e(tables\).)62 b(If)37 b(the)g(datat)m(yp)
+s(e)h(is)f(not)227 781 y(sp)s(eci\014ed)24 b(then)f(an)h(appropriate)h
+(datat)m(yp)s(e)g(will)f(b)s(e)g(c)m(hosen)g(dep)s(ending)f(on)h(the)g
+(form)g(of)g(the)g(expression)227 894 y(\(ma)m(y)f(b)s(e)d(a)i(c)m
+(haracter)h(string,)h(logical,)h(bit,)f(long)e(in)m(teger,)j(or)c
+(double)g(column\).)38 b(An)21 b(appropriate)g(v)m(ector)227
+1007 y(coun)m(t)31 b(\(in)g(the)f(case)i(of)e(binary)g(tables\))h(will)
+g(also)g(b)s(e)f(added)g(if)g(not)h(explicitly)h(sp)s(eci\014ed.)227
+1156 y(When)26 b(creating)h(a)f(new)f(k)m(eyw)m(ord,)j(the)e(k)m(eyw)m
+(ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g(b)m(y)h(a)g(p)s(ound)e(sign)
+h('#',)j(and)227 1269 y(the)h(expression)f(m)m(ust)g(ev)-5
+b(aluate)30 b(to)f(a)g(scalar)g(\(i.e.,)h(cannot)f(ha)m(v)m(e)h(a)f
+(column)f(name)g(in)g(the)h(expression\).)227 1382 y(The)j(commen)m(t)i
+(string)f(for)f(the)h(k)m(eyw)m(ord)h(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)g
+(in)g(paren)m(theses)h(immediately)h(follo)m(wing)227
+1495 y(the)29 b(k)m(eyw)m(ord)f(name)g(\(instead)h(of)f(supplying)f(a)h
+(datat)m(yp)s(e)h(as)g(in)e(the)i(case)g(of)f(creating)h(a)g(new)f
+(column\).)227 1608 y(If)c(the)h(k)m(eyw)m(ord)g(name)f(ends)g(with)g
+(a)h(p)s(ound)d(sign)i('#',)i(then)e(c\014tsio)i(will)e(substitute)h
+(the)f(n)m(um)m(b)s(er)f(of)i(the)227 1720 y(most)31
+b(recen)m(tly)h(referenced)e(column)h(for)f(the)h(#)f(c)m(haracter)i(.)
+41 b(This)29 b(is)i(esp)s(ecially)h(useful)d(when)h(writing)227
+1833 y(a)c(column-related)g(k)m(eyw)m(ord)g(lik)m(e)g(TUNITn)e(for)h(a)
+h(newly)f(created)h(column,)g(as)g(sho)m(wn)e(in)h(the)g(follo)m(wing)
+227 1946 y(examples.)136 2131 y Fc(\017)46 b Fi(Recompute)f(\(o)m(v)m
+(erwrite\))i(the)d(v)-5 b(alues)44 b(in)g(an)g(existing)i(column)e(or)g
+(k)m(eyw)m(ord)g(b)m(y)g(giving)i(the)e(name)227 2244
+y(follo)m(w)m(ed)32 b(b)m(y)f(an)f(equals)h(sign)f(and)g(an)g
+(arithmetic)i(expression.)0 2497 y(The)23 b(expression)g(that)i(is)e
+(used)g(when)g(app)s(ending)f(or)h(recomputing)h(columns)f(or)h(k)m
+(eyw)m(ords)g(can)g(b)s(e)f(arbitrarily)0 2610 y(complex)36
+b(and)g(ma)m(y)g(b)s(e)f(a)h(function)g(of)g(other)g(header)g(k)m(eyw)m
+(ord)g(v)-5 b(alues)36 b(and)f(other)h(columns)g(\(in)g(the)g(same)0
+2723 y(ro)m(w\).)63 b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5
+b(ailable)40 b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed)
+f(b)s(elo)m(w)h(in)f(the)h(ro)m(w)0 2836 y(\014lter)30
+b(sp)s(eci\014cation)i(section.)0 2996 y(If)27 b(the)h(expression)g
+(con)m(tains)g(b)s(oth)f(a)h(list)h(of)f(columns)f(to)h(b)s(e)g
+(included)e(and)i(columns)f(to)h(b)s(e)f(deleted,)j(then)d(all)0
+3109 y(the)34 b(columns)g(in)g(the)g(original)h(table)g(except)g(the)f
+(explicitly)i(deleted)f(columns)e(will)i(app)s(ear)e(in)h(the)g
+(\014ltered)0 3222 y(table.)40 b(If)26 b(no)g(columns)f(to)i(b)s(e)f
+(deleted)g(are)h(sp)s(eci\014ed,)f(then)g(only)g(the)h(columns)e(that)i
+(are)f(explicitly)i(listed)f(will)0 3335 y(b)s(e)k(included)g(in)g(the)
+h(\014ltered)f(output)h(table.)45 b(T)-8 b(o)32 b(include)f(all)i(the)e
+(columns,)h(add)f(the)h('*')g(wildcard)g(sp)s(eci\014er)0
+3447 y(at)f(the)g(end)e(of)i(the)f(list,)i(as)e(sho)m(wn)g(in)g(the)h
+(examples.)0 3608 y(F)-8 b(or)30 b(complex)h(or)e(commonly)h(used)f(op)
+s(erations,)i(one)e(can)h(also)h(place)g(the)e(op)s(erations)h(in)m(to)
+h(an)e(external)i(text)0 3720 y(\014le)g(and)f(imp)s(ort)g(it)h(in)m
+(to)h(the)f(column)g(\014lter)f(using)h(the)g(syn)m(tax)g('[col)h
+(@\014lename.txt]'.)43 b(The)31 b(op)s(erations)g(can)0
+3833 y(extend)26 b(o)m(v)m(er)i(m)m(ultiple)f(lines)g(of)f(the)h
+(\014le,)h(but)d(m)m(ultiple)i(op)s(erations)g(m)m(ust)f(still)i(b)s(e)
+d(separated)i(b)m(y)g(semicolons.)0 3946 y(An)m(y)h(lines)h(in)f(the)g
+(external)i(text)f(\014le)f(that)h(b)s(egin)f(with)g(2)h(slash)f(c)m
+(haracters)i(\('//'\))g(will)f(b)s(e)e(ignored)i(and)e(ma)m(y)0
+4059 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the)e(\014le.)
+0 4219 y(Examples:)143 4472 y Fe([col)47 b(Time;)f(rate])667
+b(-)47 b(only)g(the)g(Time)g(and)g(rate)f(columns)g(will)1670
+4585 y(appear)h(in)g(the)g(filtered)e(input)i(file.)143
+4811 y([col)g(Time,)f(*raw])667 b(-)47 b(include)f(the)h(Time)g(column)
+f(and)h(any)g(other)1670 4924 y(columns)f(whose)h(name)f(ends)h(with)g
+('raw'.)143 5149 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141
+b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 5262
+y(renames)g(the)h(status)f(column)g(to)i('Good')143 5488
+y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2;)e(#TUNIT#\(column)e(units\))i(=)i
+('counts';*])1575 5601 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g
+(values)1670 5714 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)p
+eop end
+%%Page: 94 100
+TeXDict begin 94 99 bop 0 299 a Fi(94)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1670
+555 y Fe(for)47 b(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670
+668 y(expression)f(means)i(preserve)e(all)i(the)1670
+781 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670
+894 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670
+1007 y(the)g(output)f(table)h(would)f(only)h(contain)1670
+1120 y(the)g(single)f('PI')h(column.)143 1346 y([col)g(rate)f(=)i
+(rate/exposure;)c(TUNIT#\(&\))h(=)j('counts/s';*])1575
+1458 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670
+1571 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670
+1684 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670
+1797 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670
+1910 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670
+2023 y(string)h(means)f(preserve)f(the)i(existing)1670
+2136 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670
+2249 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670
+2362 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670
+2475 y(output)g(table.)0 2816 y Fd(8.11)136 b(Ro)l(w)45
+b(Filtering)h(Sp)t(eci\014cation)0 3068 y Fi(When)29
+b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i(that)g(is)e(to)i
+(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g(optional)h(ro)m(w)f
+(\014lter)0 3181 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f(to)h(select)h(a)g
+(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 b(A)31
+b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0
+3294 y(on)25 b(the)h(\015y)e(whic)m(h)h(con)m(tains)h(only)g(those)g
+(ro)m(ws)f(for)g(whic)m(h)g(the)g(ro)m(w)g(\014lter)h(expression)f(ev)
+-5 b(aluates)26 b(to)g(true.)39 b(\(The)0 3407 y(primary)26
+b(arra)m(y)h(and)f(an)m(y)g(other)h(extensions)g(in)f(the)h(input)f
+(\014le)g(are)h(also)h(copied)f(to)g(the)f(temp)s(orary)h(\014le\).)39
+b(The)0 3520 y(original)30 b(FITS)f(\014le)g(is)g(closed)h(and)e(the)i
+(new)e(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h(the)h(application)g
+(program.)40 b(The)29 b(ro)m(w)0 3633 y(\014lter)37 b(expression)g(is)h
+(enclosed)g(in)f(square)g(brac)m(k)m(ets)i(follo)m(wing)g(the)e(\014le)
+h(name)f(and)g(extension)h(name)f(\(e.g.,)0 3745 y('\014le.\014ts[ev)m
+(en)m(ts][GRADE==50]')29 b(selects)d(only)f(those)h(ro)m(ws)f(where)f
+(the)h(GRADE)h(column)f(v)-5 b(alue)25 b(equals)g(50\).)0
+3858 y(When)33 b(dealing)h(with)f(tables)g(where)g(eac)m(h)h(ro)m(w)f
+(has)g(an)g(asso)s(ciated)i(time)f(and/or)f(2D)g(spatial)i(p)s
+(osition,)f(the)0 3971 y(ro)m(w)e(\014lter)h(expression)e(can)i(also)g
+(b)s(e)f(used)f(to)i(select)h(ro)m(ws)e(based)g(on)g(the)g(times)h(in)f
+(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5 b(als)0 4084 y(\(GTI\))31
+b(extension,)g(or)f(on)h(spatial)g(p)s(osition)g(as)f(giv)m(en)i(in)e
+(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)0 4383 y Fb(8.11.1)113
+b(General)38 b(Syn)m(tax)0 4603 y Fi(The)32 b(ro)m(w)h(\014ltering)g
+(expression)g(can)g(b)s(e)f(an)h(arbitrarily)g(complex)g(series)g(of)g
+(op)s(erations)g(p)s(erformed)f(on)g(con-)0 4716 y(stan)m(ts,)39
+b(k)m(eyw)m(ord)e(v)-5 b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f
+(from)f(the)h(sp)s(eci\014ed)e(FITS)h(T)-8 b(ABLE)37
+b(extension.)59 b(The)0 4829 y(expression)37 b(m)m(ust)h(ev)-5
+b(aluate)39 b(to)g(a)f(b)s(o)s(olean)g(v)-5 b(alue)38
+b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k(where)c(a)h(v)-5
+b(alue)39 b(of)e(F)-10 b(ALSE)0 4942 y(means)30 b(that)h(the)g(ro)m(w)f
+(will)h(b)s(e)f(excluded.)0 5102 y(F)-8 b(or)34 b(complex)g(or)g
+(commonly)f(used)g(\014lters,)h(one)g(can)g(place)g(the)g(expression)f
+(in)m(to)h(a)g(text)g(\014le)g(and)f(imp)s(ort)f(it)0
+5215 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g(using)f(the)h(syn)m(tax)g
+('[@\014lename.txt]'.)61 b(The)36 b(expression)h(can)f(b)s(e)g
+(arbitrarily)h(complex)0 5328 y(and)27 b(extend)i(o)m(v)m(er)g(m)m
+(ultiple)g(lines)f(of)g(the)h(\014le.)40 b(An)m(y)28
+b(lines)g(in)g(the)g(external)h(text)g(\014le)f(that)h(b)s(egin)f(with)
+g(2)g(slash)0 5441 y(c)m(haracters)k(\('//'\))g(will)f(b)s(e)f(ignored)
+g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the)
+e(\014le.)0 5601 y(Keyw)m(ord)37 b(and)f(column)g(data)i(are)f
+(referenced)g(b)m(y)g(name.)60 b(An)m(y)37 b(string)f(of)h(c)m
+(haracters)i(not)e(surrounded)d(b)m(y)0 5714 y(quotes)41
+b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w)m(ed)i(b)m(y)f
+(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f(name\))h(will)g
+(b)s(e)p eop end
+%%Page: 95 101
+TeXDict begin 95 100 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(95)0
+555 y(initially)38 b(in)m(terpreted)e(as)h(a)g(column)f(name)g(and)g
+(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f(ro)m(w)g(inserted)g
+(in)m(to)i(the)e(ex-)0 668 y(pression.)k(If)28 b(no)h(suc)m(h)g(column)
+g(exists,)h(a)g(k)m(eyw)m(ord)f(of)h(that)f(name)g(will)h(b)s(e)e
+(searc)m(hed)i(for)f(and)f(its)i(v)-5 b(alue)29 b(used,)0
+781 y(if)36 b(found.)55 b(T)-8 b(o)36 b(force)g(the)g(name)g(to)h(b)s
+(e)e(in)m(terpreted)h(as)g(a)g(k)m(eyw)m(ord)g(\(in)g(case)g(there)g
+(is)g(b)s(oth)f(a)h(column)g(and)0 894 y(k)m(eyw)m(ord)41
+b(with)e(the)i(same)f(name\),)j(precede)d(the)h(k)m(eyw)m(ord)f(name)g
+(with)g(a)h(single)f(p)s(ound)e(sign,)43 b('#',)g(as)d(in)0
+1007 y('#NAXIS2'.)g(Due)27 b(to)g(the)f(generalities)j(of)d(FITS)g
+(column)g(and)g(k)m(eyw)m(ord)h(names,)g(if)f(the)h(column)f(or)g(k)m
+(eyw)m(ord)0 1120 y(name)33 b(con)m(tains)h(a)f(space)h(or)f(a)g(c)m
+(haracter)h(whic)m(h)f(migh)m(t)h(app)s(ear)e(as)h(an)g(arithmetic)h
+(term)f(then)g(enclose)h(the)0 1233 y(name)c(in)g('$')i(c)m(haracters)g
+(as)e(in)g($MAX)i(PHA$)f(or)f(#$MAX-PHA$.)43 b(Names)31
+b(are)f(case)i(insensitiv)m(e.)0 1393 y(T)-8 b(o)32 b(access)g(a)g
+(table)g(en)m(try)g(in)f(a)h(ro)m(w)f(other)h(than)f(the)g(curren)m(t)g
+(one,)h(follo)m(w)h(the)e(column's)h(name)f(with)g(a)h(ro)m(w)0
+1506 y(o\013set)37 b(within)e(curly)g(braces.)57 b(F)-8
+b(or)36 b(example,)i('PHA)p Fc(f)p Fi(-3)p Fc(g)p Fi(')g(will)e(ev)-5
+b(aluate)38 b(to)e(the)g(v)-5 b(alue)36 b(of)g(column)f(PHA,)i(3)0
+1619 y(ro)m(ws)28 b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s
+(eing)g(pro)s(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g
+(absolute)h(ro)m(w)f(n)m(um)m(b)s(er,)g(only)h(a)0 1732
+y(relativ)m(e)j(o\013set.)42 b(Ro)m(ws)31 b(that)g(fall)g(outside)g
+(the)f(table)h(will)g(b)s(e)f(treated)h(as)g(unde\014ned,)d(or)j
+(NULLs.)0 1892 y(Bo)s(olean)h(op)s(erators)f(can)g(b)s(e)f(used)f(in)i
+(the)f(expression)h(in)f(either)h(their)g(F)-8 b(ortran)31
+b(or)f(C)h(forms.)40 b(The)30 b(follo)m(wing)0 2005 y(b)s(o)s(olean)g
+(op)s(erators)h(are)g(a)m(v)-5 b(ailable:)191 2247 y
+Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95 b("not)46 b(equal")476
+b(.ne.)94 b(.NE.)h(!=)191 2360 y("less)46 b(than")238
+b(.lt.)46 b(.LT.)h(<)143 b("less)46 b(than/equal")188
+b(.le.)94 b(.LE.)h(<=)47 b(=<)191 2473 y("greater)e(than")95
+b(.gt.)46 b(.GT.)h(>)143 b("greater)45 b(than/equal")g(.ge.)94
+b(.GE.)h(>=)47 b(=>)191 2585 y("or")572 b(.or.)46 b(.OR.)h(||)95
+b("and")762 b(.and.)46 b(.AND.)h(&&)191 2698 y("negation")236
+b(.not.)46 b(.NOT.)h(!)95 b("approx.)45 b(equal\(1e-7\)")92
+b(~)0 2940 y Fi(Note)32 b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(')
+10 b(!',)33 b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g
+(it)g(is)g(used)f(on)h(the)g(command)0 3053 y(line)i(rather)f(than)h
+(en)m(tered)g(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g
+(preceded)h(b)m(y)f(a)h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0
+3166 y(shell)e(to)g(ignore)g(it.)0 3326 y(The)h(expression)g(ma)m(y)i
+(also)f(include)f(arithmetic)i(op)s(erators)f(and)f(functions.)47
+b(T)-8 b(rigonometric)34 b(functions)e(use)0 3439 y(radians,)23
+b(not)g(degrees.)38 b(The)22 b(follo)m(wing)h(arithmetic)g(op)s
+(erators)g(and)e(functions)g(can)i(b)s(e)e(used)g(in)h(the)g
+(expression)0 3552 y(\(function)38 b(names)f(are)h(case)g(insensitiv)m
+(e\).)64 b(A)37 b(n)m(ull)h(v)-5 b(alue)38 b(will)f(b)s(e)g(returned)g
+(in)g(case)h(of)g(illegal)i(op)s(erations)0 3665 y(suc)m(h)30
+b(as)h(divide)f(b)m(y)g(zero,)i(sqrt\(negativ)m(e\))h(log\(negativ)m
+(e\),)h(log10\(negativ)m(e\),)i(arccos\(.gt.)43 b(1\),)32
+b(arcsin\(.gt.)42 b(1\).)191 3907 y Fe("addition")522
+b(+)477 b("subtraction")d(-)191 4020 y("multiplication")234
+b(*)477 b("division")618 b(/)191 4133 y("negation")522
+b(-)477 b("exponentiation")330 b(**)143 b(^)191 4246
+y("absolute)45 b(value")237 b(abs\(x\))g("cosine")714
+b(cos\(x\))191 4359 y("sine")g(sin\(x\))237 b("tangent")666
+b(tan\(x\))191 4472 y("arc)47 b(cosine")427 b(arccos\(x\))93
+b("arc)47 b(sine")619 b(arcsin\(x\))191 4585 y("arc)47
+b(tangent")379 b(arctan\(x\))93 b("arc)47 b(tangent")475
+b(arctan2\(y,x\))191 4698 y("hyperbolic)45 b(cos")237
+b(cosh\(x\))189 b("hyperbolic)45 b(sin")333 b(sinh\(x\))191
+4811 y("hyperbolic)45 b(tan")237 b(tanh\(x\))189 b("round)46
+b(to)h(nearest)f(int")h(round\(x\))191 4924 y("round)f(down)h(to)g
+(int")94 b(floor\(x\))141 b("round)46 b(up)h(to)h(int")285
+b(ceil\(x\))191 5036 y("exponential")378 b(exp\(x\))237
+b("square)46 b(root")476 b(sqrt\(x\))191 5149 y("natural)45
+b(log")381 b(log\(x\))237 b("common)46 b(log")524 b(log10\(x\))191
+5262 y("modulus")570 b(x)48 b(\045)f(y)286 b("random)46
+b(#)h([0.0,1.0\)")141 b(random\(\))191 5375 y("random)46
+b(Gaussian")188 b(randomn\(\))93 b("random)46 b(Poisson")332
+b(randomp\(x\))191 5488 y("minimum")570 b(min\(x,y\))141
+b("maximum")666 b(max\(x,y\))191 5601 y("cumulative)45
+b(sum")237 b(accum\(x\))93 b("sequential)45 b(difference")g
+(seqdiff\(x\))191 5714 y("if-then-else")330 b(b?x:y)p
+eop end
+%%Page: 96 102
+TeXDict begin 96 101 bop 0 299 a Fi(96)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191
+555 y Fe("angular)45 b(separation")93 b(angsep\(ra1,dec1,ra2,de2\))41
+b(\(all)47 b(in)g(degrees\))191 668 y("substring")283
+b(strmid\(s,p,n\))44 b("string)i(search")428 b(strstr\(s,r\))0
+907 y Fi(Three)30 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(er)f
+(functions)h(are)h(pro)m(vided:)41 b(random\(\),)30 b(with)h(no)f
+(argumen)m(ts,)h(pro)s(duces)f(a)0 1020 y(uniform)g(random)f(deviate)k
+(b)s(et)m(w)m(een)e(0)g(and)f(1;)i(randomn\(\),)e(also)i(with)e(no)h
+(argumen)m(ts,)g(pro)s(duces)f(a)h(normal)0 1133 y(\(Gaussian\))k
+(random)e(deviate)j(with)e(zero)h(mean)f(and)g(unit)f(standard)h
+(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 1245 y(P)m(oisson)27
+b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um)m(b)s(er)e(of)h(coun)
+m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s(ositiv)m(e)g(real)g
+(n)m(um)m(b)s(er)0 1358 y(of)k(exp)s(ected)f(coun)m(ts,)h(including)f
+(fractional)i(v)-5 b(alues,)31 b(but)f(the)g(return)g(v)-5
+b(alue)31 b(is)f(an)g(in)m(teger.)0 1519 y(When)d(the)g(random)g
+(functions)f(are)i(used)e(in)h(a)h(v)m(ector)g(expression,)g(b)m(y)f
+(default)h(the)f(same)h(random)e(v)-5 b(alue)28 b(will)0
+1631 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m
+(t)h(of)f(the)g(v)m(ector.)41 b(If)28 b(di\013eren)m(t)h(random)f(n)m
+(um)m(b)s(ers)f(are)i(desired,)f(then)0 1744 y(the)37
+b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e(b)s(e)i(supplied)e(as)i
+(the)h(single)f(argumen)m(t)g(to)h(the)f(random)f(function)0
+1857 y(\(e.g.,)31 b("\015ux)c(+)h(0.1)h(*)g(random\(\015ux\)",)f(where)
+g("\015ux')g(is)g(the)g(name)h(of)f(a)h(v)m(ector)h(column\).)40
+b(This)27 b(will)i(create)h(a)0 1970 y(v)m(ector)d(of)f(random)f(n)m
+(um)m(b)s(ers)f(that)i(will)g(b)s(e)f(used)f(in)i(sequence)g(when)e(ev)
+-5 b(aluating)27 b(eac)m(h)g(elemen)m(t)g(of)f(the)f(v)m(ector)0
+2083 y(expression.)0 2243 y(An)31 b(alternate)i(syn)m(tax)f(for)f(the)g
+(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g
+(whic)m(h)f(should)f(b)s(e)h(a)0 2356 y(v)m(ector)g(v)-5
+b(alue)30 b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e)
+e(the)i(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e
+(the)0 2469 y(v)m(ector.)0 2629 y(The)35 b(accum\(x\))i(function)f
+(forms)f(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e
+(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 2742
+y(supp)s(orted)h(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g
+(pro)s(cess)f(through)f(all)j(the)f(v)-5 b(alues.)65
+b(Null)39 b(v)-5 b(alues)39 b(are)0 2855 y(treated)30
+b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))h(function)e(forms)h(the)g
+(sequen)m(tial)i(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m
+(t.)41 b(The)0 2968 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g
+(is)g(the)g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37
+b(single)h(n)m(ull)f(v)-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g
+(n)m(ulls)g(in)g(the)0 3081 y(output.)55 b(The)35 b(seqdi\013)g(and)g
+(accum)g(functions)g(are)h(functional)f(in)m(v)m(erses,)j(i.e.,)g
+(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 3194 y(long)c(as)g(no)f(n)m
+(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)0 3354 y(In)36
+b(the)h(if-then-else)i(expression,)f("b?x:y",)i(b)c(is)h(an)g(explicit)
+h(b)s(o)s(olean)f(v)-5 b(alue)37 b(or)g(expression.)61
+b(There)36 b(is)h(no)0 3467 y(automatic)d(t)m(yp)s(e)e(con)m(v)m
+(ersion)h(from)e(n)m(umeric)h(to)g(b)s(o)s(olean)g(v)-5
+b(alues,)33 b(so)f(one)g(needs)f(to)i(use)e("iV)-8 b(al!=0")35
+b(instead)0 3580 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o)
+s(olean)g(argumen)m(t.)41 b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h
+(scalar)h(data)g(t)m(yp)s(e)f(\(including)f(string\).)0
+3740 y(The)22 b(angsep)g(function)f(computes)i(the)f(angular)g
+(separation)h(in)e(degrees)i(b)s(et)m(w)m(een)g(2)f(celestial)j(p)s
+(ositions,)e(where)0 3853 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m
+(e)h(the)f(RA-lik)m(e)i(and)d(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f
+(decimal)g(degrees\))h(of)f(the)g(\014rst)0 3966 y(p)s(osition,)31
+b(and)e(the)i(3rd)f(and)g(4th)g(parameters)h(giv)m(e)h(the)e(co)s
+(ordinates)i(of)e(the)h(second)f(p)s(osition.)0 4126
+y(The)38 b(substring)f(function)i(strmid\(S,P)-8 b(,N\))39
+b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g(string)g(p)s
+(osition)f(P)-8 b(,)0 4239 y(with)33 b(a)h(substring)f(length)h(N.)g
+(The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f(is)h(lab)s(eled)
+g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)0
+4352 y(a)i(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f
+(the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f(P)-8
+b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 4465 y(functions)30
+b(of)g(other)h(columns.)0 4625 y(The)39 b(string)h(searc)m(h)h
+(function)e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s
+(ccurrence)h(of)g(the)g(substring)f(R)h(in)f(S.)0 4738
+y(The)c(result)h(is)f(an)h(in)m(teger,)i(indicating)f(the)e(c)m
+(haracter)i(p)s(osition)f(of)g(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h
+(is)g(the)g(\014rst)0 4851 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f
+(If)g(no)h(matc)m(h)g(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i
+(NULL)f(v)-5 b(alue.)0 5011 y(The)37 b(follo)m(wing)i(t)m(yp)s(e)f
+(casting)g(op)s(erators)g(are)g(a)m(v)-5 b(ailable,)42
+b(where)37 b(the)h(enclosing)g(paren)m(theses)g(are)g(required)0
+5124 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)h(usage.)42
+b(Also,)31 b(the)g(in)m(teger)g(to)h(real)f(casts)g(v)-5
+b(alues)30 b(to)i(double)e(precision:)764 5362 y Fe("real)46
+b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46
+b(x)764 5475 y("integer)f(to)i(real")190 b(\(float\))46
+b(i)143 b(\(FLOAT\))45 b(i)0 5714 y Fi(In)30 b(addition,)g(sev)m(eral)i
+(constan)m(ts)g(are)f(built)f(in)g(for)g(use)g(in)g(n)m(umerical)h
+(expressions:)p eop end
+%%Page: 97 103
+TeXDict begin 97 102 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(97)382
+555 y Fe(#pi)667 b(3.1415...)284 b(#e)620 b(2.7182...)382
+668 y(#deg)f(#pi/180)380 b(#row)524 b(current)46 b(row)h(number)382
+781 y(#null)428 b(undefined)45 b(value)142 b(#snull)428
+b(undefined)45 b(string)0 1040 y Fi(A)40 b(string)f(constan)m(t)i(m)m
+(ust)e(b)s(e)g(enclosed)h(in)g(quotes)g(as)f(in)h('Crab'.)67
+b(The)39 b("n)m(ull")i(constan)m(ts)f(are)g(useful)f(for)0
+1153 y(conditionally)g(setting)g(table)g(v)-5 b(alues)38
+b(to)g(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5 b(alue)39
+b(\(eg.,)i("col1==-99)f(?)62 b(#NULL)38 b(:)0 1266 y(col1"\).)0
+1426 y(There)27 b(is)g(also)i(a)e(function)g(for)h(testing)g(if)f(t)m
+(w)m(o)i(v)-5 b(alues)28 b(are)g(close)g(to)h(eac)m(h)f(other,)h(i.e.,)
+g(if)e(they)h(are)g("near")g(eac)m(h)0 1539 y(other)c(to)h(within)e(a)h
+(user)g(sp)s(eci\014ed)f(tolerance.)40 b(The)24 b(argumen)m(ts,)h(v)-5
+b(alue)p 2502 1539 28 4 v 34 w(1)24 b(and)f(v)-5 b(alue)p
+2979 1539 V 33 w(2)25 b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0
+1652 y(and)32 b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5
+b(alues)33 b(who's)f(pro)m(ximit)m(y)i(is)f(b)s(eing)f(tested)h(to)h(b)
+s(e)e(within)g(the)h(sp)s(eci\014ed)f(tolerance,)0 1765
+y(also)f(an)g(in)m(teger)g(or)g(real:)955 2023 y Fe(near\(value_1,)44
+b(value_2,)h(tolerance\))0 2282 y Fi(When)24 b(a)i(NULL,)e(or)h
+(unde\014ned,)f(v)-5 b(alue)25 b(is)g(encoun)m(tered)g(in)g(the)f(FITS)
+g(table,)j(the)e(expression)g(will)g(ev)-5 b(aluate)26
+b(to)0 2395 y(NULL)31 b(unless)f(the)h(unde\014ned)e(v)-5
+b(alue)31 b(is)g(not)g(actually)h(required)e(for)h(ev)-5
+b(aluation,)33 b(e.g.)43 b("TR)m(UE)31 b(.or.)43 b(NULL")0
+2508 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f(follo)m(wing)h(t)m(w)
+m(o)h(functions)e(allo)m(w)i(some)f(NULL)f(detection)i(and)e(handling:)
+430 2767 y Fe("a)47 b(null)f(value?")667 b(ISNULL\(x\))430
+2880 y("define)45 b(a)j(value)e(for)h(null")190 b(DEFNULL\(x,y\))0
+3139 y Fi(The)36 b(former)h(returns)e(a)i(b)s(o)s(olean)g(v)-5
+b(alue)37 b(of)g(TR)m(UE)g(if)g(the)g(argumen)m(t)g(x)g(is)g(NULL.)g
+(The)f(later)i("de\014nes")f(a)0 3252 y(v)-5 b(alue)35
+b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5 b(alues;)37
+b(it)e(returns)e(the)h(v)-5 b(alue)35 b(of)f(x)g(if)g(x)h(is)f(not)g
+(NULL,)h(otherwise)f(it)0 3365 y(returns)29 b(the)i(v)-5
+b(alue)31 b(of)f(y)-8 b(.)0 3655 y Fb(8.11.2)113 b(Bit)36
+b(Masks)0 3874 y Fi(Bit)g(masks)f(can)h(b)s(e)f(used)f(to)i(select)h
+(out)e(ro)m(ws)h(from)e(bit)i(columns)f(\(TF)m(ORMn)g(=)g(#X\))h(in)f
+(FITS)f(\014les.)55 b(T)-8 b(o)0 3987 y(represen)m(t)30
+b(the)h(mask,)g(binary)-8 b(,)30 b(o)s(ctal,)i(and)e(hex)g(formats)g
+(are)h(allo)m(w)m(ed:)811 4246 y Fe(binary:)142 b
+(b0110xx1010000101xxxx00)o(01)811 4359 y(octal:)190 b(o720x1)46
+b(->)h(\(b111010000xxx001\))811 4471 y(hex:)286 b(h0FxD)94
+b(->)47 b(\(b00001111xxxx1101\))0 4730 y Fi(In)22 b(all)i(the)f
+(represen)m(tations,)j(an)c(x)h(or)g(X)g(is)g(allo)m(w)m(ed)i(in)d(the)
+h(mask)g(as)g(a)h(wild)e(card.)38 b(Note)25 b(that)e(the)g(x)g
+(represen)m(ts)0 4843 y(a)k(di\013eren)m(t)h(n)m(um)m(b)s(er)e(of)h
+(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m(tation.)41
+b(All)27 b(represen)m(tations)h(are)g(case)g(insensitiv)m(e.)0
+5003 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f(expression)h
+(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h(op)s(erator)g
+(describ)s(ed)f(ab)s(o)m(v)m(e)0 5116 y(on)34 b(a)h(bit)g(table)h
+(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou)h(had)f(a)h(7)g
+(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table)i(and)0
+5229 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit)h
+(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s(e:)
+1336 5488 y Fe(flags)47 b(==)g(b0010011)191 5601 y(or)1336
+5714 y(flags)g(.eq.)f(b10011)p eop end
+%%Page: 98 104
+TeXDict begin 98 103 bop 0 299 a Fi(98)1618 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fi(It)35 b(is)g(also)h(p)s(ossible)e(to)i(test)g(if)f(a)g(range)g
+(of)g(bits)g(is)g(less)g(than,)h(less)f(than)g(equal,)i(greater)f(than)
+e(and)h(greater)0 668 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s
+(olean)f(v)-5 b(alue:)1336 922 y Fe(flags)47 b(<=)g(bxxx010xx)1336
+1035 y(flags)g(.gt.)f(bxxx100xx)1336 1148 y(flags)h(.le.)f(b1xxxxxxx)0
+1402 y Fi(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5
+b(alue)31 b(to)g(limit)g(the)f(range)h(of)g(bits)f(b)s(eing)g
+(compared.)0 1563 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h
+(leading)g(\(most)g(signi\014can)m(t\))h(zero)f(\(0\))g(bits)f(in)g
+(the)h(mask,)g(as)g(sho)m(wn)e(in)0 1675 y(the)g(second)f(expression)g
+(ab)s(o)m(v)m(e.)0 1836 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s
+(erations)g(are)g(also)h(p)s(ossible)e(on)h(t)m(w)m(o)h(or)f(more)g
+(bit)g(\014elds)f(using)h(the)0 1949 y('&'\(AND\),)35
+b(')p Fc(j)p Fi('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34
+b(op)s(erators.)51 b(All)34 b(of)f(these)h(op)s(erators)g(result)f(in)h
+(a)g(bit)f(\014eld)g(whic)m(h)0 2061 y(can)e(then)f(b)s(e)f(used)h
+(with)g(the)h(equal)g(op)s(erator.)41 b(F)-8 b(or)31
+b(example:)1241 2316 y Fe(\(!flags\))45 b(==)j(b1101100)1241
+2429 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 2683
+y Fi(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h
+(using)f(the)g('+')g(op)s(erator.)53 b(Strings)33 b(can)i(b)s(e)e
+(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 2796 y(to)s(o.)0
+3086 y Fb(8.11.3)113 b(V)-9 b(ector)36 b(Columns)0 3304
+y Fi(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h
+(building)g(the)g(expression.)56 b(No)36 b(sp)s(ecial)g(syn)m(tax)f(is)
+h(required)e(if)i(one)0 3417 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f
+(all)h(elemen)m(ts)g(of)f(the)h(v)m(ector.)86 b(Simply)44
+b(use)h(the)g(column)g(name)g(as)g(for)g(a)g(scalar)0
+3530 y(column.)d(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h(in)
+m(termixed)h(with)e(scalar)i(columns)e(or)h(constan)m(ts)h(in)f
+(virtually)g(all)0 3643 y(expressions.)40 b(The)29 b(result)g(will)g(b)
+s(e)g(of)g(the)g(same)h(dimension)e(as)i(the)f(v)m(ector.)42
+b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 3756
+y(though,)f(need)e(to)i(ha)m(v)m(e)g(the)f(same)g(n)m(um)m(b)s(er)f(of)
+h(elemen)m(ts)h(and)e(ha)m(v)m(e)j(the)e(same)g(dimensions.)39
+b(The)26 b(only)h(places)0 3869 y(a)35 b(v)m(ector)h(column)e(cannot)h
+(b)s(e)f(used)f(\(for)i(no)m(w,)g(an)m(yw)m(a)m(y\))h(are)f(the)g(SA)m
+(O)f(region)h(functions)f(and)f(the)i(NEAR)0 3982 y(b)s(o)s(olean)30
+b(function.)0 4142 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d
+(are)h(all)g(p)s(erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i
+(basis.)38 b(Comparing)23 b(t)m(w)m(o)0 4255 y(v)m(ector)32
+b(columns,)e(eg)h("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g
+(another)g(v)m(ector)i(of)e(b)s(o)s(olean)h(v)-5 b(alues)30
+b(indicating)0 4368 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h
+(v)m(ectors)f(are)g(equal.)0 4528 y(Eigh)m(t)g(functions)f(are)h(a)m(v)
+-5 b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d
+(return)h(a)g(scalar)i(result:)191 4782 y Fe("minimum")284
+b(MIN\(V\))475 b("maximum")714 b(MAX\(V\))191 4895 y("average")284
+b(AVERAGE\(V\))f("median")762 b(MEDIAN\(V\))191 5008
+y("summation")188 b(SUM\(V\))475 b("standard)46 b(deviation")188
+b(STDDEV\(V\))191 5121 y("#)47 b(of)g(values")94 b(NELEM\(V\))379
+b("#)48 b(of)f(non-null)e(values")94 b(NVALID\(V\))0
+5375 y Fi(where)40 b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m
+(ector)h(column)f(or)g(a)h(man)m(ually)f(constructed)g(v)m(ector)i
+(using)d(curly)0 5488 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)e(b)s
+(elo)m(w.)39 b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)f(ignore)h
+(an)m(y)g(n)m(ull)f(v)-5 b(alues)26 b(in)f(the)h(v)m(ector)h(when)0
+5601 y(computing)k(the)f(result.)41 b(The)30 b(STDDEV\(\))h(function)g
+(computes)f(the)h(sample)g(standard)e(deviation,)j(i.e.)42
+b(it)31 b(is)0 5714 y(prop)s(ortional)f(to)h(1/SQR)-8
+b(T\(N-1\))32 b(instead)f(of)g(1/SQR)-8 b(T\(N\),)31
+b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)p eop end
+%%Page: 99 105
+TeXDict begin 99 104 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)2027 b Fi(99)0
+555 y(The)32 b(SUM)h(function)f(literally)j(sums)c(all)j(the)f(elemen)m
+(ts)h(in)f(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)48
+b(If)32 b(x)h(is)g(a)g(b)s(o)s(olean)0 668 y(v)m(ector,)40
+b(SUM)c(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.)
+60 b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0
+781 y(of)i(elemen)m(ts)h(in)f(v)m(ector)h(x)f(whereas)f(NV)-10
+b(ALID)39 b(return)d(the)i(n)m(um)m(b)s(er)f(of)h(non-n)m(ull)f(elemen)
+m(ts)j(in)d(the)h(v)m(ector.)0 894 y(\(NELEM)28 b(also)h(op)s(erates)f
+(on)g(bit)f(and)g(string)h(columns,)g(returning)f(their)h(column)f
+(widths.\))40 b(As)27 b(an)h(example,)0 1007 y(to)42
+b(test)g(whether)f(all)h(elemen)m(ts)h(of)f(t)m(w)m(o)g(v)m(ectors)h
+(satisfy)f(a)g(giv)m(en)g(logical)i(comparison,)g(one)e(can)g(use)f
+(the)0 1120 y(expression)668 1374 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\))
+g(==)g(NELEM\()f(COL1)h(\))0 1629 y Fi(whic)m(h)32 b(will)g(return)f
+(TR)m(UE)h(if)g(all)h(elemen)m(ts)g(of)f(COL1)g(are)g(greater)h(than)f
+(their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 1742 y(COL2.)0
+1902 y(T)-8 b(o)32 b(sp)s(ecify)f(a)i(single)f(elemen)m(t)h(of)f(a)g(v)
+m(ector,)i(giv)m(e)f(the)f(column)f(name)h(follo)m(w)m(ed)h(b)m(y)f(a)g
+(comma-separated)h(list)0 2015 y(of)c(co)s(ordinates)g(enclosed)h(in)e
+(square)h(brac)m(k)m(ets.)41 b(F)-8 b(or)30 b(example,)g(if)e(a)h(v)m
+(ector)i(column)d(named)h(PHAS)f(exists)h(in)0 2128 y(the)e(table)g(as)
+g(a)g(one)g(dimensional,)h(256)g(comp)s(onen)m(t)f(list)g(of)g(n)m(um)m
+(b)s(ers)e(from)h(whic)m(h)h(y)m(ou)g(w)m(an)m(ted)g(to)g(select)i(the)
+0 2241 y(57th)j(comp)s(onen)m(t)g(for)f(use)g(in)g(the)h(expression,)f
+(then)h(PHAS[57])g(w)m(ould)f(do)h(the)f(tric)m(k.)45
+b(Higher)32 b(dimensional)0 2354 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h
+(app)s(ear)f(in)f(a)i(column.)73 b(But)41 b(in)g(order)f(to)i(in)m
+(terpret)f(them,)j(the)e(TDIMn)e(k)m(eyw)m(ord)0 2466
+y(m)m(ust)34 b(app)s(ear)g(in)g(the)g(header.)52 b(Assuming)34
+b(that)h(a)f(\(4,4,4,4\))k(arra)m(y)c(is)h(pac)m(k)m(ed)g(in)m(to)g
+(eac)m(h)h(ro)m(w)e(of)g(a)h(column)0 2579 y(named)26
+b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m(t)e(elemen)m(t)
+g(of)g(eac)m(h)g(ro)m(w)g(is)f(accessed)i(b)m(y)e(ARRA)-8
+b(Y4D[1,2,3,4].)0 2692 y(Arra)m(ys)33 b(up)e(to)j(dimension)e(5)h(are)f
+(curren)m(tly)h(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h(index)e
+(can)h(itself)g(b)s(e)f(an)h(expression,)0 2805 y(although)39
+b(it)g(m)m(ust)g(ev)-5 b(aluate)40 b(to)f(an)g(in)m(teger)h(v)-5
+b(alue)39 b(within)f(the)h(b)s(ounds)d(of)j(the)g(v)m(ector.)67
+b(V)-8 b(ector)40 b(columns)0 2918 y(whic)m(h)31 b(con)m(tain)h(spaces)
+g(or)f(arithmetic)h(op)s(erators)g(m)m(ust)f(ha)m(v)m(e)h(their)f
+(names)g(enclosed)h(in)f("$")h(c)m(haracters)h(as)0 3031
+y(with)d($ARRA)-8 b(Y-4D$[1,2,3,4].)0 3191 y(A)45 b(more)f(C-lik)m(e)i
+(syn)m(tax)g(for)e(sp)s(ecifying)g(v)m(ector)j(indices)d(is)h(also)h(a)
+m(v)-5 b(ailable.)85 b(The)45 b(elemen)m(t)h(used)d(in)i(the)0
+3304 y(preceding)28 b(example)h(alternativ)m(ely)i(could)d(b)s(e)g(sp)s
+(eci\014ed)g(with)f(the)i(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45
+b(Note)30 b(the)0 3417 y(rev)m(erse)40 b(order)f(of)h(indices)f(\(as)h
+(in)f(C\),)h(as)f(w)m(ell)i(as)e(the)h(fact)g(that)g(the)g(v)-5
+b(alues)40 b(are)f(still)i(ones-based)e(\(as)h(in)0 3530
+y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)h(am)m(biguit)m(y)g
+(for)f(1D)g(v)m(ectors\).)67 b(With)39 b(this)g(syn)m(tax,)i(one)e(do)s
+(es)f(not)h(need)f(to)0 3643 y(sp)s(ecify)30 b(all)h(of)g(the)f
+(indices.)41 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)g(of)g(this)f(4D)
+h(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)0 3803
+y(V)g(ariable-length)33 b(v)m(ector)f(columns)e(are)g(not)h(supp)s
+(orted.)0 3963 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)h
+(constructed)h(within)e(the)h(expression)g(using)f(a)h(comma-separated)
+i(list)f(of)f(elemen)m(ts)0 4076 y(surrounded)35 b(b)m(y)j(curly)g
+(braces)h(\(')p Fc(fg)p Fi('\).)66 b(F)-8 b(or)38 b(example,)j(')p
+Fc(f)p Fi(1,3,6,1)p Fc(g)p Fi(')h(is)d(a)f(4-elemen)m(t)i(v)m(ector)g
+(con)m(taining)g(the)0 4189 y(v)-5 b(alues)26 b(1,)h(3,)g(6,)g(and)e
+(1.)40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)h(only)f(b)s(o)s(olean,)
+g(in)m(teger,)j(and)c(real)h(v)-5 b(alues)26 b(\(or)g(expressions\).)0
+4302 y(The)e(elemen)m(ts)h(will)g(b)s(e)f(promoted)g(to)h(the)g
+(highest)f(datat)m(yp)s(e)h(presen)m(t.)39 b(An)m(y)24
+b(elemen)m(ts)i(whic)m(h)e(are)h(themselv)m(es)0 4415
+y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded)g(out)h(with)g(eac)m(h)g(of)
+g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h(elemen)m(t)h(in)f(the)g
+(constructed)0 4528 y(v)m(ector.)0 4818 y Fb(8.11.4)113
+b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 b(al)37 b(Filtering)0
+5036 y Fi(A)44 b(common)g(\014ltering)h(metho)s(d)e(in)m(v)m(olv)m(es)j
+(selecting)g(ro)m(ws)e(whic)m(h)f(ha)m(v)m(e)j(a)e(time)h(v)-5
+b(alue)44 b(whic)m(h)g(lies)g(within)0 5149 y(what)37
+b(is)g(called)i(a)f(Go)s(o)s(d)f(Time)g(In)m(terv)-5
+b(al)38 b(or)f(GTI.)g(The)g(time)h(in)m(terv)-5 b(als)38
+b(are)g(de\014ned)e(in)h(a)g(separate)i(FITS)0 5262 y(table)i
+(extension)g(whic)m(h)e(con)m(tains)i(2)g(columns)f(giving)g(the)h
+(start)f(and)g(stop)g(time)g(of)g(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5
+b(al.)0 5375 y(The)34 b(\014ltering)h(op)s(eration)h(accepts)g(only)e
+(those)i(ro)m(ws)e(of)h(the)g(input)f(table)i(whic)m(h)e(ha)m(v)m(e)i
+(an)f(asso)s(ciated)h(time)0 5488 y(whic)m(h)f(falls)i(within)e(one)h
+(of)g(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)e(in)g(the)h(GTI)g
+(extension.)57 b(A)36 b(high)g(lev)m(el)h(function,)0
+5601 y(gti\014lter\(a,b,c,d\),)44 b(is)c(a)m(v)-5 b(ailable)42
+b(whic)m(h)d(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)e(of)h(the)f(input)g
+(table)h(and)f(returns)f(TR)m(UE)i(or)0 5714 y(F)-10
+b(ALSE)30 b(dep)s(ending)f(whether)h(the)g(ro)m(w)h(is)f(inside)g(or)g
+(outside)h(the)g(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42
+b(The)30 b(syn)m(tax)h(is)p eop end
+%%Page: 100 106
+TeXDict begin 100 105 bop 0 299 a Fi(100)1573 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)286
+555 y Fe(gtifilter\()45 b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)
+e("STOPCOL")g(])j(])f(])g(\))0 799 y Fi(where)20 b(eac)m(h)h("[]")h
+(demarks)e(optional)h(parameters.)38 b(Note)21 b(that)g(the)g(quotes)f
+(around)g(the)g(gti\014le)i(and)d(ST)-8 b(AR)g(T/STOP)0
+912 y(column)33 b(are)h(required.)50 b(Either)34 b(single)g(or)g
+(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50 b(In)33
+b(cases)h(where)g(this)f(expression)0 1024 y(is)d(en)m(tered)g(on)g
+(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h(expression)
+f(in)f(double)h(quotes,)g(and)g(then)f(use)0 1137 y(single)c(quotes)g
+(within)e(the)i(expression)f(to)h(enclose)g(the)g('gti\014le')h(and)d
+(other)i(terms.)38 b(It)25 b(is)f(also)h(usually)f(p)s(ossible)0
+1250 y(to)38 b(do)e(the)h(rev)m(erse,)j(and)c(enclose)i(the)f(whole)g
+(expression)g(in)f(single)i(quotes)f(and)f(then)h(use)f(double)g
+(quotes)0 1363 y(within)d(the)g(expression.)50 b(The)33
+b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b)s(e)f(blank)g(\(""\))i
+(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h(\014rst)0
+1476 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f(curren)m(t)
+h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,)j("+2",)g
+("[2]",)0 1589 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s(e)f(used)
+f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f(\014le,)h(or)f
+(a)h(regular)g(\014lename)0 1702 y(with)f(or)h(without)f(an)h
+(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)f
+(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0
+1815 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62
+b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i(expression,)f
+(including)f(simply)g(the)0 1928 y(time)f(column)g(name.)57
+b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m
+(ector)h(b)s(o)s(olean)f(result.)57 b(ST)-8 b(AR)g(TCOL)0
+2041 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8
+b(AR)g(T/STOP)26 b(columns)i(in)f(the)h(GTI)g(extension.)41
+b(If)27 b(one)h(of)g(them)0 2154 y(is)i(sp)s(eci\014ed,)g(they)h(b)s
+(oth)f(m)m(ust)g(b)s(e.)0 2314 y(In)21 b(its)h(simplest)g(form,)i(no)d
+(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5
+b(alues)22 b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0
+2427 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31
+b(to)334 2670 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f
+("*STOP*")h(\))0 2913 y Fi(This)31 b(will)g(searc)m(h)h(the)g(curren)m
+(t)f(\014le)g(for)g(a)h(GTI)f(extension,)h(\014lter)g(the)f(TIME)g
+(column)g(in)g(the)h(curren)m(t)f(table,)0 3026 y(using)j(ST)-8
+b(AR)g(T/STOP)34 b(times)i(tak)m(en)f(from)g(columns)f(in)h(the)g(GTI)g
+(extension)g(with)g(names)f(con)m(taining)j(the)0 3139
+y(strings)32 b("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46
+b(The)32 b(wildcards)f(\('*'\))j(allo)m(w)g(sligh)m(t)f(v)-5
+b(ariations)33 b(in)f(naming)g(con)m(v)m(en)m(tions)0
+3252 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8
+b(AR)g(TTIME".)65 b(The)37 b(same)i(default)g(v)-5 b(alues)38
+b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 3365 y(ters)f(when)f(the)h
+(\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)56
+b(The)36 b(function)f(automatically)k(searc)m(hes)e(for)0
+3478 y(TIMEZER)m(O/I/F)g(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f(and)g
+(GTI)g(extensions,)i(applying)f(a)f(relativ)m(e)j(time)e(o\013set,)i
+(if)0 3591 y(necessary)-8 b(.)0 3879 y Fb(8.11.5)113
+b(Spatial)38 b(Region)g(Filtering)0 4098 y Fi(Another)g(common)g
+(\014ltering)g(metho)s(d)f(selects)i(ro)m(ws)f(based)g(on)f(whether)h
+(the)g(spatial)h(p)s(osition)e(asso)s(ciated)0 4211 y(with)32
+b(eac)m(h)i(ro)m(w)e(is)h(lo)s(cated)h(within)e(a)h(giv)m(en)g
+(2-dimensional)g(region.)48 b(The)32 b(syn)m(tax)h(for)f(this)h
+(high-lev)m(el)h(\014lter)0 4324 y(is)334 4567 y Fe(regfilter\()45
+b("regfilename")f([)k(,)f(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g
+(])g(\))0 4811 y Fi(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)i
+(parameters.)38 b(The)22 b(region)h(\014le)g(name)f(is)h(required)f
+(and)g(m)m(ust)g(b)s(e)g(enclosed)0 4924 y(in)34 b(quotes.)51
+b(The)33 b(remaining)h(parameters)h(are)f(optional.)52
+b(There)33 b(are)i(2)f(supp)s(orted)e(formats)i(for)f(the)h(region)0
+5036 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f(binary)g(table.)
+73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f(list)g(of)g(one)g(or)
+g(more)g(geometric)0 5149 y(shap)s(es)30 b(\(circle,)j(ellipse,)g(b)s
+(o)m(x,)e(etc.\))44 b(whic)m(h)31 b(de\014nes)f(a)i(region)g(on)f(the)g
+(celestial)j(sphere)c(or)h(an)g(area)h(within)f(a)0 5262
+y(particular)36 b(2D)g(image.)57 b(The)35 b(region)h(\014le)f(is)g(t)m
+(ypically)j(generated)e(using)f(an)g(image)i(displa)m(y)e(program)g
+(suc)m(h)0 5375 y(as)e(fv/PO)m(W)g(\(distribute)f(b)m(y)h(the)f(HEASAR)
+m(C\),)h(or)g(ds9)f(\(distributed)g(b)m(y)g(the)h(Smithsonian)f
+(Astroph)m(ysical)0 5488 y(Observ)-5 b(atory\).)69 b(Users)39
+b(should)g(refer)g(to)h(the)g(do)s(cumen)m(tation)h(pro)m(vided)e(with)
+g(these)h(programs)f(for)h(more)0 5601 y(details)29 b(on)f(the)g(syn)m
+(tax)h(used)e(in)h(the)h(region)f(\014les.)40 b(The)28
+b(FITS)f(region)i(\014le)f(format)h(is)f(de\014ned)f(in)h(a)g(do)s
+(cumen)m(t)0 5714 y(a)m(v)-5 b(ailable)33 b(from)d(the)g(FITS)g(Supp)s
+(ort)e(O\016ce)j(at)g(h)m(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c
+(region.h)m(tml)p eop end
+%%Page: 101 107
+TeXDict begin 101 106 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(101)0
+555 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h
+(reg\014lter\("region.reg"\))h(\))c(the)g(co)s(ordinates)g(in)g(the)g
+(default)g('X')h(and)e('Y')h(columns)0 668 y(will)43
+b(b)s(e)g(used)f(to)i(determine)f(if)g(eac)m(h)h(ro)m(w)f(is)g(inside)g
+(or)g(outside)g(the)g(area)h(sp)s(eci\014ed)e(in)h(the)g(region)h
+(\014le.)0 781 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f
+(expressions,)h(ma)m(y)g(b)s(e)e(en)m(tered)i(if)g(needed,)f(as)h(in)
+382 1039 y Fe(regfilter\("region.reg",)41 b(XPOS,)47
+b(YPOS\))0 1297 y Fi(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g
+(most)h(unam)m(biguously)f(if)h(the)g(p)s(ositions)g(in)f(the)h(region)
+g(\014le)g(and)f(in)h(the)0 1410 y(table)g(to)g(b)s(e)e(\014ltered)h
+(are)h(b)s(oth)e(giv)m(e)j(in)e(terms)g(of)g(absolute)h(celestial)i(co)
+s(ordinate)e(units.)54 b(In)35 b(this)g(case)h(the)0
+1523 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s
+(es)e(in)g(the)g(region)h(\014le)f(are)h(sp)s(eci\014ed)f(in)g(angular)
+g(units)g(on)g(the)g(sky)0 1636 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en)
+i(in)e(R.A.)g(and)g(Dec.)42 b(and)30 b(sizes)h(in)f(arcseconds)g(or)h
+(arcmin)m(utes\).)41 b(Similarly)-8 b(,)31 b(eac)m(h)h(ro)m(w)0
+1749 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e
+(celestial)j(co)s(ordinate)e(asso)s(ciated)g(with)f(it.)50
+b(This)32 b(asso)s(ciation)j(is)e(usually)0 1862 y(implemen)m(ted)39
+b(using)e(a)i(set)g(of)f(so-called)i('W)-8 b(orld)39
+b(Co)s(ordinate)g(System')f(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g
+(that)0 1975 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g
+(that)g(m)m(ust)f(b)s(e)f(applied)h(to)h(the)g(v)-5 b(alues)27
+b(in)g(the)h('X')g(and)e('Y')i(columns)0 2088 y(to)j(calculate)i(the)d
+(co)s(ordinate.)0 2248 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s
+(erform)e(spatial)j(\014ltering)e(using)g(unitless)h('pixel')g(co)s
+(ordinates)h(for)e(the)h(regions)g(and)0 2361 y(ro)m(w)33
+b(p)s(ositions.)49 b(In)33 b(this)g(case)h(the)f(user)g(m)m(ust)g(b)s
+(e)f(careful)h(to)h(ensure)f(that)g(the)h(p)s(ositions)f(in)g(the)g(2)g
+(\014les)h(are)0 2474 y(self-consisten)m(t.)54 b(A)34
+b(t)m(ypical)i(problem)d(is)h(that)h(the)f(region)h(\014le)f(ma)m(y)h
+(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 2587
+y(but)g(the)h(un)m(binned)e(co)s(ordinates)i(are)g(giv)m(en)h(in)e(the)
+h(ev)m(en)m(t)i(table.)48 b(The)32 b(R)m(OSA)-8 b(T)33
+b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 2700 y(ha)m(v)m(e)f(X)f
+(and)f(Y)g(pixel)h(co)s(ordinates)g(that)h(range)f(from)f(1)h(-)g
+(15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)0
+2812 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i
+(pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h(\014le)f
+(generated)h(from)0 2925 y(this)c(image)i(\(in)f(image)g(pixel)g
+(units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i
+(\014le,)f(then)f(the)h(X)g(and)f(Y)g(column)h(v)-5 b(alues)0
+3038 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e
+(pixel)i(units)f(as)g(in:)382 3296 y Fe(regfilter\("rosat.reg",)42
+b(X/32.+.5,)j(Y/32.+.5\))0 3555 y Fi(Note)h(that)f(this)f(binning)f
+(con)m(v)m(ersion)j(is)e(not)h(necessary)g(if)f(the)h(region)g(\014le)f
+(is)h(sp)s(eci\014ed)e(using)h(celestial)0 3668 y(co)s(ordinate)h
+(units)f(instead)g(of)g(pixel)h(units)f(b)s(ecause)g(CFITSIO)e(is)j
+(then)e(able)i(to)g(directly)g(compare)g(the)0 3780 y(celestial)30
+b(co)s(ordinate)f(of)e(eac)m(h)i(ro)m(w)f(in)f(the)h(table)g(with)g
+(the)f(celestial)k(co)s(ordinates)d(in)f(the)h(region)g(\014le)g
+(without)0 3893 y(ha)m(ving)j(to)g(kno)m(w)f(an)m(ything)h(ab)s(out)f
+(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g(b)s(een)f(binned.)0
+4054 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f(should)e(rarely)h(b)s
+(e)g(needed.)40 b(If)29 b(supplied,)f(this)i(string)f(con)m(tains)i
+(the)e(names)0 4166 y(of)37 b(the)g(2)h(columns)f(\(space)h(or)f(comma)
+g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g(asso)s(ciated)g(W)m(CS)f
+(k)m(eyw)m(ords.)61 b(If)37 b(not)0 4279 y(supplied,)f(the)g(\014lter)g
+(will)h(scan)f(the)g(X)g(and)f(Y)h(expressions)g(for)g(column)f(names.)
+58 b(If)35 b(only)h(one)h(is)f(found)e(in)0 4392 y(eac)m(h)e
+(expression,)e(those)h(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an)
+f(error)g(will)h(b)s(e)f(returned.)0 4552 y(These)g(region)h(shap)s(es)
+f(are)g(supp)s(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334
+4811 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48
+b(One)f(pixel)f(square)g(region)334 4924 y(Line)476 b(\()48
+b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)
+334 5036 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95
+b(<-)48 b(Rest)e(are)h(interiors)e(with)334 5149 y(Rectangle)236
+b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e
+(considered)334 5262 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)
+i(\))143 b(V)47 b(within)f(the)h(region)334 5375 y(Diamond)332
+b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 5488
+y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 5601 y(Annulus)332
+b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 5714 y(Ellipse)332
+b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))p eop end
+%%Page: 102 108
+TeXDict begin 102 107 bop 0 299 a Fi(102)1573 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)334
+555 y Fe(Elliptannulus)44 b(\()k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g
+(Routy,)g(Ain,)h(Aout)g(\))334 668 y(Sector)380 b(\()48
+b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0 1111 y Fi(where)28
+b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h(shap)s(e's)f(cen)m
+(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of)g(the)g(shap)s(e's)
+0 1224 y(edges;)36 b(Rxxx)d(are)h(the)f(shap)s(es')g(v)-5
+b(arious)34 b(Radii)f(or)h(semi-ma)5 b(jor/minor)34 b(axes;)i(and)d
+(Axxx)g(are)h(the)f(angles)i(of)0 1337 y(rotation)e(\(or)e(b)s(ounding)
+f(angles)i(for)f(Sector\))h(in)f(degrees.)44 b(F)-8 b(or)32
+b(rotated)h(shap)s(es,)e(the)g(rotation)i(angle)f(can)g(b)s(e)0
+1450 y(left)g(o\013,)h(indicating)f(no)f(rotation.)46
+b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h(can)g(also)h(b)
+s(e)d(used:)43 b(rotb)s(o)m(x)0 1563 y(=)29 b(b)s(o)m(x;)g
+(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m(bus)e(=)f
+(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42 b(When)28
+b(a)i(shap)s(e's)0 1676 y(name)e(is)g(preceded)f(b)m(y)h(a)g(min)m(us)g
+(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g(the)g(area)h
+(*outside*)g(its)f(b)s(oundary)0 1789 y(\(ie,)36 b(the)e(region)h(is)f
+(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f(within)h(a)g(single)
+h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e(create)0
+1902 y(the)29 b(region,)i(and)d(the)i(order)f(is)g(signi\014can)m(t.)41
+b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s(oking)h(at)g(region)g
+(\014les)f(is)g(that)h(if)f(the)h(\014rst)0 2015 y(region)f(is)g(an)g
+(excluded)g(region)g(then)f(a)i(dumm)m(y)d(included)h(region)i(of)f
+(the)g(whole)g(detector)h(is)f(inserted)f(in)h(the)0
+2128 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s(eci\014cation)h
+(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m(y)g(selections)i
+(inside)d(of)h(that)g(region)0 2240 y(sp)s(eci\014ed)36
+b(b)m(y)g(previous)g(regions.)59 b(Another)37 b(w)m(a)m(y)g(of)g
+(thinking)f(ab)s(out)g(this)g(is)h(that)g(if)f(a)h(previous)f(excluded)
+0 2353 y(region)31 b(is)f(completely)i(inside)f(of)f(a)h(subsequen)m(t)
+e(included)h(region)h(the)g(excluded)f(region)h(is)f(ignored.)0
+2514 y(The)44 b(p)s(ositional)i(co)s(ordinates)g(ma)m(y)f(b)s(e)g(giv)m
+(en)h(either)f(in)g(pixel)g(units,)j(decimal)e(degrees)g(or)f
+(hh:mm:ss.s,)0 2626 y(dd:mm:ss.s)25 b(units.)38 b(The)26
+b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h(in)e(pixels,)j
+(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40 b(Lo)s(ok)0
+2739 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s(duced)d(b)m(y)i
+(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g(the)f(region)h
+(\014le)f(format.)0 2900 y(There)37 b(are)g(three)g(functions)g(that)g
+(are)h(primarily)f(for)f(use)h(with)g(SA)m(O)g(region)g(\014les)g(and)g
+(the)g(FSA)m(OI)g(task,)0 3012 y(but)e(they)h(can)h(b)s(e)e(used)g
+(directly)-8 b(.)59 b(They)36 b(return)f(a)h(b)s(o)s(olean)g(true)g(or)
+g(false)g(dep)s(ending)f(on)h(whether)f(a)i(t)m(w)m(o)0
+3125 y(dimensional)31 b(p)s(oin)m(t)f(is)g(in)g(the)h(region)g(or)f
+(not:)191 3569 y Fe("point)46 b(in)h(a)h(circular)d(region")477
+3681 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
+3907 y("point)h(in)h(an)g(elliptical)e(region")430 4020
+y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)o
+(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 4246 y("point)h(in)h(a)h
+(rectangular)c(region")620 4359 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o
+(_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
+4585 y(where)334 4698 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f
+(position)g(of)h(the)g(center)f(of)h(the)g(region)334
+4811 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h
+(widths)f(of)h(the)g(region)334 4924 y(\(xfll_wdth,yfll_wdth\))42
+b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334
+5036 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334
+5149 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g
+(region)f(is)h(rotated)f(with)620 5262 y(respect)g(to)h
+(\(xcntr,ycntr\))334 5375 y(\(Xcoord,Ycoord\))d(are)j(the)g(\(x,y\))f
+(coordinates)f(to)i(test,)f(usually)g(column)620 5488
+y(names)334 5601 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i(an)f
+(expression,)d(not)j(merely)f(a)620 5714 y(column)h(name)f(or)h
+(constant.)p eop end
+%%Page: 103 109
+TeXDict begin 103 108 bop 0 299 a Fg(8.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)30 b(SPECIFICA)-8 b(TION)1982 b Fi(103)0
+555 y Fb(8.11.6)113 b(Example)38 b(Ro)m(w)f(Filters)191
+859 y Fe([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48
+b(Extract)e(all)h(binary)f(stars)g(brighter)1766 972
+y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766
+1085 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766
+1197 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766
+1310 y(binning)f(specification\))191 1536 y([#row)g(>=)h(125)g(&&)h
+(#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through)
+f(175)191 1762 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48
+b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 1875
+y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766
+1988 y(greater)g(than)g(100)191 2214 y([abs\(sin\(theta)e(*)j(#deg\)\))
+f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766
+2327 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766
+2439 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766
+2552 y(are)g(tabulated)e(in)i(degrees)191 2778 y([SUM\()f(SPEC)h(>)g
+(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a)
+1766 2891 y(spectrum,)g(held)i(in)g(vector)f(column)1766
+3004 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766
+3117 y(times)f(greater)g(than)h(the)g(background)1766
+3230 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191
+3456 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h
+(vector)f(column)1766 3569 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i
+(4,)g(and)1766 3681 y(2.)191 3907 y([@rowFilter.txt])711
+b(-)48 b(Extract)e(rows)g(using)h(the)g(expression)1766
+4020 y(contained)e(within)h(the)h(text)g(file)1766 4133
+y(rowFilter.txt)191 4359 y([gtifilter\(\)])855 b(-)48
+b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 4472
+y(extension,)92 b(filter)i(the)47 b(TIME)239 4585 y(column)f(in)h(the)g
+(current)f(table,)g(using)239 4698 y(START/STOP)f(times)h(taken)g(from)
+239 4811 y(columns)f(in)j(the)f(GTI)94 b(extension)191
+5036 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h
+(have)f(a)i(coordinate)1766 5149 y(\(as)f(given)f(in)h(the)g(X)h(and)f
+(Y)g(columns\))1766 5262 y(within)f(the)h(spatial)f(region)g(specified)
+1766 5375 y(in)h(the)g(pow.reg)f(region)g(file.)191 5601
+y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f
+(except)g(that)h(the)1766 5714 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g
+(used)f(to)p eop end
+%%Page: 104 110
+TeXDict begin 104 109 bop 0 299 a Fi(104)1573 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1766
+555 y Fe(determine)45 b(the)i(coordinate)e(of)i(each)1766
+668 y(row)g(in)g(the)g(table.)0 1001 y Fd(8.12)180 b(Binning)45
+b(or)g(Histogramming)i(Sp)t(eci\014cation)0 1252 y Fi(The)22
+b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed)h(in)f(square)f
+(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g(from)h(a)g
+(general)0 1365 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)g(b)m(y)f
+(the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m(ord)h
+('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 1477 y(b)m(y)41
+b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s(eci\014ed,)i
+(a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra)m(y)0
+1590 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f(the)g
+(v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h(FITS)
+e(table)0 1703 y(extension.)f(After)30 b(the)f(histogram)h(is)g
+(computed)f(the)h(input)e(FITS)h(\014le)h(con)m(taining)h(the)e(table)i
+(is)e(then)g(closed)0 1816 y(and)34 b(the)h(temp)s(orary)f(FITS)g
+(primary)g(arra)m(y)h(is)g(op)s(ened)f(and)g(passed)g(to)h(the)g
+(application)h(program.)54 b(Th)m(us,)0 1929 y(the)39
+b(application)h(program)f(nev)m(er)g(sees)g(the)g(original)h(FITS)e
+(table)i(and)e(only)h(sees)h(the)f(image)h(in)e(the)h(new)0
+2042 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g
+(extensions\).)49 b(Ob)m(viously)-8 b(,)34 b(the)f(application)h
+(program)e(m)m(ust)h(b)s(e)0 2155 y(exp)s(ecting)e(to)g(op)s(en)f(a)h
+(FITS)e(image)j(and)e(not)g(a)h(FITS)f(table)h(in)f(this)g(case.)0
+2315 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i
+(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f(b)m(y)h(app)s(ending)f('b')h(\(for)h
+(8-bit)g(b)m(yte\),)g('i')0 2428 y(\(for)g(16-bit)g(in)m(tegers\),)h
+('j')f(\(for)g(32-bit)g(in)m(teger\),)i('r')d(\(for)h(32-bit)g
+(\015oating)h(p)s(oin)m(ts\),)e(or)h('d')f(\(for)h(64-bit)g(double)0
+2541 y(precision)d(\015oating)h(p)s(oin)m(t\))g(to)f(the)h('bin')e(k)m
+(eyw)m(ord)i(\(e.g.)41 b('[binr)28 b(X]')g(creates)i(a)e(real)h
+(\015oating)g(p)s(oin)m(t)f(image\).)41 b(If)0 2654 y(the)26
+b(datat)m(yp)s(e)h(is)f(not)g(explicitly)i(sp)s(eci\014ed)d(then)h(a)g
+(32-bit)h(in)m(teger)h(image)f(will)f(b)s(e)f(created)i(b)m(y)f
+(default,)i(unless)0 2767 y(the)h(w)m(eigh)m(ting)h(option)f(is)g(also)
+h(sp)s(eci\014ed)e(in)g(whic)m(h)h(case)g(the)g(image)h(will)f(ha)m(v)m
+(e)h(a)f(32-bit)h(\015oating)g(p)s(oin)m(t)e(data)0 2880
+y(t)m(yp)s(e)j(b)m(y)f(default.)0 3040 y(The)24 b(histogram)g(image)i
+(ma)m(y)f(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k
+(dep)s(ending)c(on)h(the)g(n)m(um)m(b)s(er)f(of)h(columns)0
+3153 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f
+(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 3410
+y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47
+b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 3668 y Fi(in)39
+b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m(h)f(corresp)s(onding)e(to)i
+(an)g(axis)f(of)h(the)f(image,)k(are)d(listed.)67 b(The)39
+b(column)0 3781 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h
+(column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s(e)f(giv)m(en)h(instead)g(of)g
+(the)g(name,)g(preceded)f(b)m(y)0 3894 y(a)32 b(p)s(ound)e(sign)i
+(\(e.g.,)i([bin)d(#4=1:512]\).)47 b(If)31 b(the)h(column)g(name)g(is)f
+(not)h(sp)s(eci\014ed,)g(then)f(CFITSIO)g(will)h(\014rst)0
+4007 y(try)37 b(to)h(use)f(the)g('preferred)f(column')i(as)f(sp)s
+(eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m(eyw)m(ord)h(if)f(it)g(exists)h
+(\(e.g.,)j('CPREF)0 4120 y(=)i('DETX,DETY'\),)h(otherwise)g(column)f
+(names)g('X',)h('Y',)g('Z',)f(and)f('T')i(will)f(b)s(e)f(assumed)h(for)
+g(eac)m(h)h(of)0 4233 y(the)37 b(4)h(axes,)i(resp)s(ectiv)m(ely)-8
+b(.)62 b(In)37 b(cases)h(where)e(the)i(column)f(name)g(could)g(b)s(e)f
+(confused)h(with)g(an)g(arithmetic)0 4346 y(expression,)30
+b(enclose)i(the)f(column)f(name)g(in)g(paren)m(theses)h(to)g(force)g
+(the)f(name)h(to)g(b)s(e)f(in)m(terpreted)g(literally)-8
+b(.)0 4506 y(Eac)m(h)33 b(column)f(name)g(ma)m(y)h(b)s(e)f(follo)m(w)m
+(ed)h(b)m(y)g(an)f(equals)g(sign)h(and)e(then)h(the)g(lo)m(w)m(er)i
+(and)e(upp)s(er)e(range)i(of)h(the)0 4619 y(histogram,)f(and)e(the)h
+(size)h(of)f(the)g(histogram)h(bins,)e(separated)h(b)m(y)g(colons.)43
+b(Spaces)31 b(are)g(allo)m(w)m(ed)i(b)s(efore)e(and)0
+4731 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)f(the)h
+('min:max:binsize')g(string.)40 b(The)29 b(min,)f(max)h(and)f(binsize)h
+(v)-5 b(alues)0 4844 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f
+(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)f(or)h(they)g(ma)m(y)g(b)
+s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)g(the)g(header)g(of)0
+4957 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5
+b(alue)31 b(of)g(that)g(k)m(eyw)m(ord)f(is)h(substituted)f(in)m(to)h
+(the)g(expression.)0 5117 y(Default)37 b(v)-5 b(alues)36
+b(for)g(the)g(min,)h(max)f(and)g(binsize)g(quan)m(tities)h(will)f(b)s
+(e)f(used)h(if)f(not)i(explicitly)g(giv)m(en)g(in)f(the)0
+5230 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h
+(examples:)191 5488 y Fe([bin)47 b(x)g(=)g(:512:2])94
+b(-)47 b(use)g(default)f(minimum)g(value)191 5601 y([bin)h(x)g(=)g
+(1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191
+5714 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)p
+eop end
+%%Page: 105 111
+TeXDict begin 105 110 bop 0 299 a Fg(8.12.)113 b(BINNING)31
+b(OR)f(HISTOGRAMMING)h(SPECIFICA)-8 b(TION)1268 b Fi(105)191
+555 y Fe([bin)47 b(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g
+(value)g(and)h(bin)g(size)191 668 y([bin)g(x)g(=)g(:512])190
+b(-)47 b(use)g(default)f(minimum)g(value)g(and)h(bin)g(size)191
+781 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h
+(maximum)f(values)191 894 y([bin)h(x])524 b(-)47 b(use)g(default)f
+(minimum,)g(maximum)g(and)g(bin)h(size)191 1007 y([bin)g(4])524
+b(-)47 b(default)f(2-D)h(image,)f(bin)h(size)g(=)g(4)h(in)f(both)g
+(axes)191 1120 y([bin])619 b(-)47 b(default)f(2-D)h(image)0
+1374 y Fi(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33
+b(of)g(the)g(TLMINn,)f(TLMAXn,)h(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)e
+(they)h(exist,)h(for)0 1487 y(the)j(default)f(min,)i(max,)g(and)e
+(binsize,)i(resp)s(ectiv)m(ely)-8 b(.)61 b(If)36 b(they)h(do)f(not)h
+(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 1600 y(actual)d(minim)m
+(um)e(and)h(maxim)m(um)g(v)-5 b(alues)32 b(in)g(the)g(column)f(for)h
+(the)g(histogram)h(min)e(and)h(max)g(v)-5 b(alues.)45
+b(The)0 1713 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g
+(or)e(\(max)h(-)g(min\))f(/)h(10.,)i(whic)m(hev)m(er)e(is)g(smaller,)h
+(so)e(that)i(the)e(histogram)0 1826 y(will)e(ha)m(v)m(e)g(at)g(least)h
+(10)f(bins)f(along)h(eac)m(h)h(axis.)0 1986 y(A)41 b(shortcut)g
+(notation)h(is)f(allo)m(w)m(ed)i(if)e(all)h(the)f(columns/axes)h(ha)m
+(v)m(e)g(the)f(same)g(binning)f(sp)s(eci\014cation.)74
+b(In)0 2099 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b)
+s(e)f(listed)h(within)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m(y)d(the)
+h(\(single\))h(binning)0 2212 y(sp)s(eci\014cation,)d(as)g(in:)191
+2466 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 2579 y([bin)g(\(X,Y\))f(=)h
+(5])0 2834 y Fi(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g
+(the)g(last)g(item)h(in)e(the)h(binning)f(sp)s(eci\014er)g(and,)h(if)f
+(presen)m(t,)i(is)e(separated)0 2947 y(from)38 b(the)g(list)h(of)f
+(columns)g(b)m(y)g(a)h(semi-colon.)65 b(As)39 b(the)f(histogram)h(is)f
+(accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)0
+3059 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g
+(appropriated)f(bin)h(in)f(the)h(histogram.)52 b(If)34
+b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 3172 y(sp)s(eci\014ed,)24
+b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1)i(is)f(assumed.)37
+b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s(e)g(a)g(constan)m(t)
+i(in)m(teger)f(or)0 3285 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s
+(er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)h(con)m(taining)g(the)g
+(w)m(eigh)m(ting)g(v)-5 b(alue.)41 b(Or)28 b(the)h(w)m(eigh)m(ting)0
+3398 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f
+(in)g(whic)m(h)f(case)j(the)e(v)-5 b(alue)28 b(in)g(that)h(column,)f
+(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 3511 y(basis,)i(will)h(b)s(e)f
+(used.)0 3671 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m
+(ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s(cal)g(of)g(the)g(actual)h(w)m
+(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 3784 y(needed.)49
+b(In)32 b(this)h(case,)i(precede)e(the)h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g
+(or)f(column)g(name)g(b)m(y)g(a)g(slash)g('/')h(to)g(tell)g(CFITSIO)0
+3897 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5
+b(alue)31 b(when)e(constructing)i(the)g(histogram.)0
+4057 y(F)-8 b(or)35 b(complex)f(or)g(commonly)g(used)f(histograms,)j
+(one)e(can)g(also)h(place)g(its)f(description)g(in)m(to)h(a)f(text)h
+(\014le)f(and)0 4170 y(imp)s(ort)44 b(it)g(in)m(to)i(the)e(binning)f
+(sp)s(eci\014cation)i(using)f(the)h(syn)m(tax)f('[bin)g
+(@\014lename.txt]'.)84 b(The)44 b(\014le's)g(con-)0 4283
+y(ten)m(ts)37 b(can)e(extend)h(o)m(v)m(er)h(m)m(ultiple)f(lines,)i
+(although)e(it)g(m)m(ust)f(still)i(conform)f(to)g(the)g(no-spaces)g
+(rule)f(for)h(the)0 4396 y(min:max:binsize)h(syn)m(tax)h(and)e(eac)m(h)
+i(axis)g(sp)s(eci\014cation)g(m)m(ust)f(still)g(b)s(e)g
+(comma-separated.)62 b(An)m(y)37 b(lines)g(in)0 4509
+y(the)32 b(external)h(text)g(\014le)f(that)h(b)s(egin)e(with)h(2)g
+(slash)g(c)m(haracters)h(\('//'\))h(will)e(b)s(e)g(ignored)g(and)f(ma)m
+(y)i(b)s(e)e(used)g(to)0 4622 y(add)f(commen)m(ts)h(in)m(to)g(the)g
+(\014le.)0 4782 y(Examples:)191 5036 y Fe([bini)46 b(detx,)h(dety])762
+b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 5149
+y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 5262
+y(default)h(values)g(for)h(the)g(histogram)1861 5375
+y(range)g(and)g(binsize)191 5601 y([bin)g(\(detx,)f(dety\)=16;)f
+(/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861
+5714 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)p
+eop end
+%%Page: 106 112
+TeXDict begin 106 111 bop 0 299 a Fi(106)1573 b Fg(CHAPTER)30
+b(8.)112 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)1861
+555 y Fe(in)48 b(both)e(axes.)h(The)f(histogram)g(values)1861
+668 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861
+781 y(value.)191 1007 y([bin)h(time=TSTART:TSTOP:0.1])280
+b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861
+1120 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 1233
+y(with)g(0.1)g(unit)g(size)f(bins.)191 1458 y([bin)h(pha,)f
+(time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g
+(binning)1861 1571 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,)
+1861 1684 y(and)f(1000)g(bins)g(in)g(the)g(range)1861
+1797 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191
+2023 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h
+(the)g(text)f(file)1861 2136 y(binFilter.txt)f(for)h(the)h(binning)1861
+2249 y(specifications.)p eop end
+%%Page: 107 113
+TeXDict begin 107 112 bop 0 1225 a Ff(Chapter)65 b(9)0
+1687 y Fl(T)-19 b(emplate)76 b(Files)0 2180 y Fi(When)38
+b(a)h(new)f(FITS)g(\014le)h(is)g(created)g(with)g(a)f(call)i(to)g
+(\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V
+35 w(\014le,)g(the)f(name)g(of)g(a)g(template)h(\014le)e(ma)m(y)0
+2293 y(b)s(e)h(supplied)g(in)h(paren)m(theses)g(immediately)h(follo)m
+(wing)g(the)g(name)f(of)g(the)g(new)f(\014le)h(to)h(b)s(e)e(created.)71
+b(This)0 2406 y(template)27 b(is)e(used)g(to)h(de\014ne)f(the)h
+(structure)f(of)h(one)f(or)h(more)g(HDUs)g(in)f(the)h(new)f(\014le.)39
+b(The)25 b(template)i(\014le)e(ma)m(y)0 2518 y(b)s(e)32
+b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case)i(the)f(newly)g
+(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e(same)g(k)m(eyw)
+m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g(template)i
+(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b)s(e)f
+(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0 2744
+y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,)g
+(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h(FITS)
+f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h(ASCI)s(I)e
+(template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m(wing)i
+(sections.)0 3188 y Fd(9.1)135 b(Detailed)47 b(T)-11
+b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fi(The)30
+b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)k(line)f(closely)h(follo)
+m(ws)f(the)g(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95
+3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926
+y Fi(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f
+(\(e.g.,)25 b(the)d(equals)f(sign)h(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g
+(p)s(osition)f(in)g(the)h(line\))g(and)0 4039 y(T)-8
+b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and)e(are)g(treated)h
+(the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33
+b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)g(are)h
+(optional.)43 b(The)30 b(equals)h(sign)f(c)m(haracter)j(is)d(also)i
+(optional,)g(but)e(it)h(is)f(recommended)0 4264 y(that)42
+b(it)f(b)s(e)g(included)f(for)h(clarit)m(y)-8 b(.)75
+b(An)m(y)41 b(template)i(line)e(that)h(b)s(egins)f(with)f(the)i(p)s
+(ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)30 b(b)m(y)h(the)f
+(template)i(parser)e(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)g(commen)
+m(ts)g(in)m(to)g(the)g(template)h(\014le)e(itself.)0
+4538 y(The)c(KEYW)m(ORD)g(name)g(\014eld)g(is)g(limited)h(to)g(8)f(c)m
+(haracters)h(in)f(length)h(and)e(only)h(the)g(letters)i(A-Z,)e(digits)h
+(0-9,)0 4650 y(and)h(the)g(h)m(yphen)f(and)h(underscore)g(c)m
+(haracters)h(ma)m(y)g(b)s(e)f(used,)g(without)h(an)m(y)f(em)m(b)s
+(edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)22
+b(in)f(the)h(template)g(k)m(eyw)m(ord)g(name)f(will)g(b)s(e)g(con)m(v)m
+(erted)i(to)f(upp)s(ercase.)36 b(Leading)22 b(spaces)f(in)g(the)h
+(template)0 4876 y(line)k(preceding)g(the)f(k)m(eyw)m(ord)h(name)g(are)
+g(generally)h(ignored,)g(except)f(if)g(the)g(\014rst)f(8)h(c)m
+(haracters)h(of)f(a)g(template)0 4989 y(line)f(are)h(all)g(blank,)g
+(then)f(the)g(en)m(tire)h(line)g(is)f(treated)h(as)f(a)h(FITS)e(commen)
+m(t)i(k)m(eyw)m(ord)g(\(with)f(a)h(blank)e(k)m(eyw)m(ord)0
+5102 y(name\))31 b(and)f(is)g(copied)h(v)m(erbatim)g(in)m(to)g(the)g
+(FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37
+b(\014eld)g(ma)m(y)h(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)h(FITS)e(data)
+h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)h(logical,)h(in)m(teger,)0
+5375 y(real,)34 b(complex)f(in)m(teger,)i(or)d(complex)i(real.)47
+b(The)32 b(c)m(haracter)j(string)d(v)-5 b(alues)33 b(need)f(not)h(b)s
+(e)f(enclosed)h(in)f(single)0 5488 y(quote)d(c)m(haracters)h(unless)e
+(they)g(are)h(necessary)g(to)g(distinguish)e(the)i(string)f(from)g(a)h
+(di\013eren)m(t)g(data)g(t)m(yp)s(e)f(\(e.g.)0 5601 y(2.0)h(is)e(a)h
+(real)h(but)e('2.0')i(is)f(a)g(string\).)40 b(The)27
+b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))j(v)-5
+b(alue)29 b(if)e(the)h(template)h(record)0 5714 y(only)h(con)m(tains)i
+(blanks)e(follo)m(wing)i(the)e("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=")
+h(and)f(the)g("/")i(commen)m(t)g(\014eld)d(delimiter.)1882
+5942 y(107)p eop end
+%%Page: 108 114
+TeXDict begin 108 113 bop 0 299 a Fi(108)2295 b Fg(CHAPTER)30
+b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fi(String)c(k)m(eyw)m(ord)h
+(v)-5 b(alues)27 b(longer)g(than)f(68)h(c)m(haracters)h(\(the)f(maxim)m
+(um)f(length)h(that)g(will)g(\014t)f(in)g(a)h(single)g(FITS)0
+668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)f(using)g(the)h
+(CFITSIO)e(long)i(string)g(con)m(v)m(en)m(tion.)74 b(They)40
+b(can)h(either)g(b)s(e)0 781 y(sp)s(eci\014ed)28 b(as)i(a)f(single)h
+(long)f(line)h(in)e(the)i(template,)h(or)e(b)m(y)f(using)h(m)m(ultiple)
+h(lines)f(where)f(the)i(con)m(tin)m(uing)g(lines)0 894
+y(con)m(tain)i(the)e('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)f(this)g
+(example:)95 1139 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e(string)
+g(value)h(that)f(is)i(contin&')95 1252 y(CONTINUE)94
+b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0
+1497 y Fi(The)29 b(format)h(of)g(template)h(lines)e(with)h(CONTINUE)e
+(k)m(eyw)m(ord)i(is)g(v)m(ery)g(strict:)41 b(3)30 b(spaces)g(m)m(ust)f
+(follo)m(w)i(CON-)0 1610 y(TINUE)f(and)g(the)g(rest)h(of)f(the)h(line)g
+(is)f(copied)h(v)m(erbatim)g(to)g(the)g(FITS)e(\014le.)0
+1771 y(The)i(start)h(of)g(the)f(optional)i(COMMENT)e(\014eld)g(m)m(ust)
+h(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)e(is)h(used)f(to)h
+(separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5
+b(alue)30 b(\014eld.)41 b(Exceptions)30 b(are)h(if)f(the)h(KEYW)m(ORD)g
+(name)f(\014eld)g(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8
+b(Y,)30 b(CONTINUE,)g(or)g(if)g(the)h(\014rst)f(8)g(c)m(haracters)i(of)
+f(the)f(template)i(line)f(are)g(blanks.)0 2157 y(More)c(than)f(one)h
+(Header-Data)i(Unit)e(\(HDU\))g(ma)m(y)g(b)s(e)f(de\014ned)f(in)h(the)h
+(template)h(\014le.)39 b(The)26 b(start)h(of)g(an)f(HDU)0
+2269 y(de\014nition)k(is)g(denoted)h(with)f(a)h(SIMPLE)e(or)i(XTENSION)
+e(template)j(line:)0 2430 y(1\))i(SIMPLE)f(b)s(egins)g(a)h(Primary)g
+(HDU)g(de\014nition.)50 b(SIMPLE)33 b(ma)m(y)h(only)g(app)s(ear)f(as)h
+(the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)i(\014le.)
+45 b(If)32 b(the)g(template)i(\014le)e(b)s(egins)f(with)h(XTENSION)f
+(instead)h(of)g(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d
+(Primary)e(HDU)i(is)g(created,)h(and)d(the)i(template)h(is)e(then)g
+(assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0
+2768 y(with)h(the)h(\014rst)e(extension)i(follo)m(wing)h(the)f(Primary)
+f(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)e(of)h
+(a)h(new)e(extension)i(HDU)f(de\014nition.)52 b(The)33
+b(previous)h(HDU)h(will)0 3041 y(b)s(e)30 b(closed)h(at)g(this)f(p)s
+(oin)m(t)h(and)e(pro)s(cessing)i(of)f(the)h(next)f(extension)h(b)s
+(egins.)0 3373 y Fd(9.2)135 b(Auto-indexing)45 b(of)h(Keyw)l(ords)0
+3623 y Fi(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g
+(a)g("#")h(c)m(haracter,)i(it)e(is)f(said)g(to)h(b)s(e)f
+('auto-indexed'.)44 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)f
+(b)s(e)f(replaced)i(b)m(y)e(the)h(curren)m(t)g(in)m(teger)h(index)e(v)
+-5 b(alue,)34 b(whic)m(h)f(gets)g(reset)h(=)e(1)h(at)h(the)e(start)i
+(of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)g(the)g(\014le)g(\(or)g(7)h(in)e
+(the)h(sp)s(ecial)h(case)g(of)f(a)g(GR)m(OUP)h(de\014nition\).)51
+b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)f(eac)m(h)h
+(template)h(HDU)f(de\014nition)f(is)g(used)f(as)i(the)f('incremen)m
+(tor';)j(eac)m(h)e(subsequen)m(t)f(o)s(ccurrence)0 4075
+y(of)k(this)f(SAME)g(k)m(eyw)m(ord)h(will)g(cause)g(the)g(index)f(v)-5
+b(alue)32 b(to)g(b)s(e)f(incremen)m(ted.)44 b(This)31
+b(b)s(eha)m(vior)g(can)h(b)s(e)f(rather)0 4188 y(subtle,)d(as)g
+(illustrated)h(in)e(the)h(follo)m(wing)h(examples)f(in)f(whic)m(h)h
+(the)g(TTYPE)e(k)m(eyw)m(ord)i(is)g(the)g(incremen)m(tor)g(in)0
+4300 y(b)s(oth)i(cases:)95 4546 y Fe(TTYPE#)47 b(=)g(TIME)95
+4659 y(TFORM#)g(=)g(1D)95 4772 y(TTYPE#)g(=)g(RATE)95
+4884 y(TFORM#)g(=)g(1E)0 5130 y Fi(will)26 b(create)i(TTYPE1,)e(TF)m
+(ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40
+b(But)26 b(if)g(the)g(template)h(lo)s(oks)f(lik)m(e,)95
+5375 y Fe(TTYPE#)47 b(=)g(TIME)95 5488 y(TTYPE#)g(=)g(RATE)95
+5601 y(TFORM#)g(=)g(1D)95 5714 y(TFORM#)g(=)g(1E)p eop
+end
+%%Page: 109 115
+TeXDict begin 109 114 bop 0 299 a Fg(9.3.)72 b(TEMPLA)-8
+b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)2028 b Fi(109)0
+555 y(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h
+(TTYPE2,)g(TF)m(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)f(is)g(probably)0
+668 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1000 y Fd(9.3)135
+b(T)-11 b(emplate)46 b(P)l(arser)g(Directiv)l(es)0 1251
+y Fi(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g
+(de\014ne)f(individual)h(k)m(eyw)m(ords,)g(the)g(template)i(parser)d
+(recognizes)0 1363 y(3)h(sp)s(ecial)h(directiv)m(es)g(whic)m(h)f(are)g
+(eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)h(c)m(haracter:)90
+b Fe(\\include,)45 b(\\group)p Fi(,)29 b(and)48 1476
+y Fe(\\end)p Fi(.)0 1637 y(The)37 b('include')h(directiv)m(e)i(m)m(ust)
+d(b)s(e)h(follo)m(w)m(ed)h(b)m(y)f(a)g(\014lename.)63
+b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)f(stop)0
+1749 y(reading)d(the)g(curren)m(t)g(template)h(\014le)f(and)f(b)s(egin)
+h(reading)g(the)g(include)f(\014le.)55 b(Once)35 b(the)g(parser)f(reac)
+m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)f(\014le)h(it)g(con)m
+(tin)m(ues)g(parsing)g(the)f(curren)m(t)h(template)h(\014le.)56
+b(Include)35 b(\014les)h(can)g(b)s(e)f(nested,)0 1975
+y(and)30 b(HDU)h(de\014nitions)f(can)g(span)g(m)m(ultiple)h(template)h
+(\014les.)0 2135 y(The)f(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)e(is)
+h(denoted)g(with)f(the)h('group')g(directiv)m(e,)h(and)f(the)f(end)h
+(of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)k(is)h(denoted)f(with)g(the)h
+('end')f(directiv)m(e.)63 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)i(0)f
+(or)f(more)h(mem)m(b)s(er)f(blo)s(c)m(ks)0 2361 y(\(HDUs)44
+b(or)f(GR)m(OUPs\).)79 b(Mem)m(b)s(er)42 b(blo)s(c)m(ks)i(of)f(t)m(yp)s
+(e)g(GR)m(OUP)g(can)g(con)m(tain)h(their)f(o)m(wn)g(mem)m(b)s(er)f(blo)
+s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)g(itself)h(o)s
+(ccupies)g(one)f(FITS)g(\014le)g(HDU)h(of)f(sp)s(ecial)h(t)m(yp)s(e)f
+(\(GR)m(OUP)h(HDU\),)h(so)e(if)h(a)0 2587 y(template)f(sp)s(eci\014es)e
+(1)h(group)e(with)h(1)h(mem)m(b)s(er)f(HDU)h(lik)m(e:)0
+2838 y Fe(\\group)0 2951 y(grpdescr)46 b(=)h('demo')0
+3064 y(xtension)f(bintable)0 3177 y(#)h(this)g(bintable)f(has)h(0)g
+(cols,)f(0)i(rows)0 3290 y(\\end)0 3541 y Fi(then)30
+b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)g(with)g(3)h(HDUs)g(:)0
+3792 y Fe(1\))47 b(dummy)g(PHDU)0 3905 y(2\))g(GROUP)g(HDU)f(\(has)h(1)
+h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0
+4018 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f
+(2\))0 4269 y Fi(T)-8 b(ec)m(hnically)32 b(sp)s(eaking,)e(the)f(GR)m
+(OUP)i(HDU)f(is)g(a)g(BINT)-8 b(ABLE)30 b(with)g(6)g(columns.)40
+b(Applications)31 b(can)f(de\014ne)0 4382 y(additional)23
+b(columns)f(in)f(a)i(GR)m(OUP)f(HDU)h(using)f(TF)m(ORMn)f(and)h(TTYPEn)
+f(\(where)g(n)h(is)g(7,)i(8,)h(....\))39 b(k)m(eyw)m(ords)0
+4494 y(or)30 b(their)h(auto-indexing)g(equiv)-5 b(alen)m(ts.)0
+4655 y(F)d(or)26 b(a)f(more)g(complicated)h(example)f(of)g(a)h
+(template)g(\014le)f(using)f(the)h(group)f(directiv)m(es,)k(lo)s(ok)d
+(at)g(the)g(sample.tpl)0 4767 y(\014le)30 b(that)h(is)g(included)e(in)i
+(the)f(CFITSIO)f(distribution.)0 5100 y Fd(9.4)135 b(F)-11
+b(ormal)46 b(T)-11 b(emplate)45 b(Syn)l(tax)0 5350 y
+Fi(The)30 b(template)i(syn)m(tax)f(can)f(formally)h(b)s(e)f(de\014ned)f
+(as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e
+(...)h(])p eop end
+%%Page: 110 116
+TeXDict begin 110 115 bop 0 299 a Fi(110)2295 b Fg(CHAPTER)30
+b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)334 555 y Fe(BLOCK)46
+b(=)i({)f(HDU)g(|)h(GROUP)e(})334 781 y(GROUP)g(=)i(\\GROUP)e([)h
+(BLOCK)g(...)g(])g(\\END)430 1007 y(HDU)f(=)i(XTENSION)d([)j(LINE)f
+(...)f(])i({)f(XTENSION)f(|)h(\\GROUP)f(|)i(\\END)f(|)g(EOF)g(})382
+1233 y(LINE)f(=)i([)f(KEYWORD)f([)i(=)f(])h(])f([)g(VALUE)g(])g([)h(/)f
+(COMMENT)f(])191 1458 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f
+(1)h(or)h(more)e(times)191 1571 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y)
+191 1684 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0
+1937 y Fi(A)m(t)34 b(the)f(topmost)g(lev)m(el,)i(the)e(template)i
+(de\014nes)c(1)j(or)e(more)h(template)h(blo)s(c)m(ks.)49
+b(Blo)s(c)m(ks)34 b(can)f(b)s(e)f(either)h(HDU)0 2050
+y(\(Header)27 b(Data)h(Unit\))g(or)e(a)h(GR)m(OUP)-8
+b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)g(the)g(parser)f(creates)
+i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2163 y(\014le)j(HDUs.)0
+2495 y Fd(9.5)135 b(Errors)0 2745 y Fi(In)24 b(general)h(the)f(\014ts)p
+692 2745 28 4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))i
+(function)e(tries)h(to)g(b)s(e)f(as)g(atomic)i(as)f(p)s(ossible,)g(so)f
+(either)h(ev)m(erything)0 2858 y(is)f(done)g(or)g(nothing)f(is)h(done.)
+39 b(If)23 b(an)h(error)f(o)s(ccurs)h(during)f(parsing)g(of)h(the)g
+(template,)j(\014ts)p 3125 2858 V 33 w(execute)p 3452
+2858 V 34 w(template\(\))0 2971 y(will)k(\(try)g(to\))h(delete)g(the)f
+(top)g(lev)m(el)h(BLOCK)e(\(with)h(all)g(its)h(c)m(hildren)e(if)h(an)m
+(y\))g(in)g(whic)m(h)f(the)h(error)f(o)s(ccurred,)0 3084
+y(then)g(it)h(will)g(stop)f(reading)h(the)f(template)i(\014le)e(and)g
+(it)h(will)g(return)e(with)h(an)g(error.)0 3417 y Fd(9.6)135
+b(Examples)0 3667 y Fi(1.)54 b(This)34 b(template)i(\014le)f(will)g
+(create)h(a)f(200)h(x)e(300)i(pixel)f(image,)j(with)c(4-b)m(yte)i(in)m
+(teger)g(pixel)f(v)-5 b(alues,)36 b(in)f(the)0 3780 y(primary)29
+b(HDU:)95 4032 y Fe(SIMPLE)47 b(=)g(T)95 4145 y(BITPIX)g(=)g(32)95
+4258 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95
+4371 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95
+4484 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95
+4597 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0
+4850 y Fi(The)35 b(allo)m(w)m(ed)i(v)-5 b(alues)36 b(of)f(BITPIX)g(are)
+h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)f(resp)s(ectiv)m
+(ely)-8 b(,)39 b(8-bit)d(in)m(teger,)0 4962 y(16-bit)c(in)m(teger,)g
+(32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)f(64)h
+(bit)g(\015oating)g(p)s(oin)m(t)f(pixels.)0 5123 y(2.)39
+b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)26 b(the)c(template)i
+(\014rst)e(needs)g(to)i(include)e(XTENSION)g(=)g(T)-8
+b(ABLE)23 b(or)f(BINT)-8 b(ABLE)0 5235 y(to)31 b(de\014ne)e(whether)g
+(it)h(is)g(an)f(ASCI)s(I)g(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g
+(de\014ne)f(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)h(the)0
+5348 y(table.)50 b(Tw)m(o)34 b(template)g(lines)g(are)g(then)f(needed)f
+(to)i(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0
+5461 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)f(as)h(in)f(this)g(example:)
+95 5714 y Fe(xtension)46 b(=)h(bintable)p eop end
+%%Page: 111 117
+TeXDict begin 111 116 bop 0 299 a Fg(9.6.)72 b(EXAMPLES)3039
+b Fi(111)95 555 y Fe(naxis2)47 b(=)g(40)95 668 y(ttype#)g(=)g(Name)95
+781 y(tform#)g(=)g(10a)95 894 y(ttype#)g(=)g(Npoints)95
+1007 y(tform#)g(=)g(j)95 1120 y(ttype#)g(=)g(Rate)95
+1233 y(tunit#)g(=)g(counts/s)95 1346 y(tform#)g(=)g(e)0
+1605 y Fi(The)26 b(ab)s(o)m(v)m(e)j(example)e(de\014nes)f(a)i(n)m(ull)f
+(primary)f(arra)m(y)h(follo)m(w)m(ed)i(b)m(y)e(a)g(40-ro)m(w)h(binary)e
+(table)i(extension)g(with)f(3)0 1718 y(columns)h(called)h('Name',)h
+('Np)s(oin)m(ts',)f(and)f('Rate',)i(with)e(data)h(formats)f(of)g('10A')
+i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\))
+i(and)d('1E')i(\(\015oating)f(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8
+b(.)50 b(Note)34 b(that)f(the)g(other)g(required)f(FITS)g(k)m(eyw)m
+(ords)0 1944 y(\(BITPIX,)37 b(NAXIS,)g(NAXIS1,)h(PCOUNT,)e(GCOUNT,)h
+(TFIELDS,)f(and)g(END\))h(do)g(not)g(need)f(to)h(b)s(e)f(ex-)0
+2057 y(plicitly)j(de\014ned)d(in)i(the)f(template)i(b)s(ecause)f(their)
+g(v)-5 b(alues)38 b(can)g(b)s(e)f(inferred)f(from)i(the)f(other)h(k)m
+(eyw)m(ords)g(in)0 2170 y(the)d(template.)55 b(This)34
+b(example)i(also)g(illustrates)f(that)h(the)f(templates)h(are)f
+(generally)h(case-insensitiv)m(e)h(\(the)0 2283 y(k)m(eyw)m(ord)29
+b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)30 b(are)f(con)m(v)m(erted)i
+(to)e(upp)s(er-case)g(in)f(the)h(FITS)g(\014le\))g(and)f(that)i(string)
+0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(generally)g(do)f(not)h(need)
+f(to)h(b)s(e)f(enclosed)h(in)f(quotes.)p eop end
+%%Page: 112 118
+TeXDict begin 112 117 bop 0 299 a Fi(112)2295 b Fg(CHAPTER)30
+b(9.)71 b(TEMPLA)-8 b(TE)30 b(FILES)p eop end
+%%Page: 113 119
+TeXDict begin 113 118 bop 0 1225 a Ff(Chapter)65 b(10)0
+1687 y Fl(Summary)76 b(of)i(all)f(FITSIO)0 1937 y(User-In)-6
+b(terface)77 b(Subroutines)0 2429 y Fi(Error)29 b(Status)i(Routines)f
+(page)h(29)382 2696 y Fe(FTVERS\()46 b(>)h(version\))382
+2809 y(FTGERR\(status,)d(>)j(errtext\))382 2922 y(FTGMSG\()f(>)h
+(errmsg\))382 3035 y(FTRPRT)f(\(stream,)f(>)j(status\))382
+3147 y(FTPMSG\(errmsg\))382 3260 y(FTPMRK)382 3373 y(FTCMSG)382
+3486 y(FTCMRK)0 3753 y Fi(FITS)30 b(File)h(Op)s(en)e(and)h(Close)h
+(Subroutines:)39 b(page)31 b(35)382 4020 y Fe
+(FTOPEN\(unit,filename,rwm)o(ode)o(,)42 b(>)47 b(blocksize,status\))382
+4133 y(FTDKOPEN\(unit,filename,r)o(wmo)o(de,)41 b(>)48
+b(blocksize,status\))382 4246 y(FTNOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 4359 y(FTDOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 4472 y(FTTOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 4585 y(FTIOPN\(unit,filename,rwm)o(ode)o(,)42
+b(>)47 b(status\))382 4698 y(FTREOPEN\(unit,)d(>)j(newunit,)f(status\))
+382 4811 y(FTINIT\(unit,filename,blo)o(cks)o(ize,)41
+b(>)48 b(status\))382 4924 y(FTDKINIT\(unit,filename,b)o(loc)o(ksiz)o
+(e,)42 b(>)47 b(status\))382 5036 y(FTTPLT\(unit,)d(filename,)i
+(tplfilename,)e(>)j(status\))382 5149 y(FTFLUS\(unit,)d(>)k(status\))
+382 5262 y(FTCLOS\(unit,)c(>)k(status\))382 5375 y(FTDELT\(unit,)c(>)k
+(status\))382 5488 y(FTGIOU\()e(>)h(iounit,)f(status\))382
+5601 y(FTFIOU\(iounit,)e(>)j(status\))0 5714 y(CFITS2Unit\(fitsfile)c
+(*ptr\))141 b(\(C)48 b(routine\))1882 5942 y Fi(113)p
+eop end
+%%Page: 114 120
+TeXDict begin 114 119 bop 0 299 a Fi(114)281 b Fg(CHAPTER)30
+b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
+b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(CUnit2FITS\(int)44
+b(unit\))380 b(\(C)47 b(routine\))382 668 y(FTEXTN\(filename,)c(>)48
+b(nhdu,)e(status\))382 781 y(FTFLNM\(unit,)e(>)k(filename,)d(status\))
+382 894 y(FTFLMD\(unit,)f(>)k(iomode,)e(status\))382
+1007 y(FFURLT\(unit,)e(>)k(urltype,)d(status\))382 1120
+y(FTIURL\(filename,)e(>)48 b(filetype,)d(infile,)h(outfile,)f(extspec,)
+h(filter,)716 1233 y(binspec,)f(colspec,)h(status\))382
+1346 y(FTRTNM\(filename,)d(>)48 b(rootname,)d(status\))382
+1458 y(FTEXIST\(filename,)e(>)k(exist,)f(status\))0 1695
+y Fi(HDU-Lev)m(el)33 b(Op)s(erations:)40 b(page)31 b(38)382
+1932 y Fe(FTMAHD\(unit,nhdu,)43 b(>)k(hdutype,status\))382
+2045 y(FTMRHD\(unit,nmove,)c(>)k(hdutype,status\))382
+2158 y(FTGHDN\(unit,)d(>)k(nhdu\))382 2271 y(FTMNHD\(unit,)c(hdutype,)i
+(extname,)f(extver,)h(>)i(status\))382 2384 y(FTGHDT\(unit,)c(>)k
+(hdutype,)d(status\))382 2497 y(FTTHDU\(unit,)f(>)k(hdunum,)e(status\))
+382 2610 y(FTCRHD\(unit,)e(>)k(status\))382 2723 y
+(FTIIMG\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382
+2836 y(FTITAB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o
+(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716
+2949 y(status\))382 3061 y(FTIBIN\(unit,nrows,tfield)o(s,t)o(type)o
+(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)f(>)48
+b(status\))382 3174 y(FTRSIM\(unit,bitpix,naxis)o(,na)o(xes,)o(stat)o
+(us\))382 3287 y(FTDHDU\(unit,)c(>)k(hdutype,status\))382
+3400 y(FTCPFL\(iunit,ounit,previ)o(ous)o(,)42 b(current,)j(following,)g
+(>)j(status\))382 3513 y(FTCOPY\(iunit,ounit,morek)o(eys)o(,)42
+b(>)47 b(status\))382 3626 y(FTCPHD\(inunit,)d(outunit,)h(>)j(status\))
+382 3739 y(FTCPDT\(iunit,ounit,)42 b(>)48 b(status\))0
+3976 y Fi(Subroutines)29 b(to)i(sp)s(ecify)f(or)g(mo)s(dify)g(the)g
+(structure)g(of)h(the)f(CHDU:)h(page)h(41)382 4213 y
+Fe(FTRDEF\(unit,)44 b(>)k(status\))93 b(\(DEPRECATED\))382
+4326 y(FTPDEF\(unit,bitpix,naxis)o(,na)o(xes,)o(pcou)o(nt,)o(gcou)o
+(nt,)41 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4439
+y(FTADEF\(unit,rowlen,tfiel)o(ds,)o(tbco)o(l,tf)o(orm)o(,nro)o(ws)42
+b(>)47 b(status\))94 b(\(DEPRECATED\))382 4551 y
+(FTBDEF\(unit,tfields,tfor)o(m,v)o(arid)o(at,n)o(row)o(s)42
+b(>)47 b(status\))94 b(\(DEPRECATED\))382 4664 y(FTDDEF\(unit,bytlen,)
+42 b(>)48 b(status\))93 b(\(DEPRECATED\))382 4777 y
+(FTPTHP\(unit,theap,)43 b(>)k(status\))0 5014 y Fi(Header)31
+b(Space)f(and)g(P)m(osition)i(Subroutines:)39 b(page)31
+b(43)382 5251 y Fe(FTHDEF\(unit,morekeys,)42 b(>)47 b(status\))382
+5364 y(FTGHSP\(iunit,)d(>)j(keysexist,keysadd,status\))382
+5477 y(FTGHPS\(iunit,)d(>)j(keysexist,key_no,status\))0
+5714 y Fi(Read)31 b(or)f(W)-8 b(rite)32 b(Standard)d(Header)i
+(Subroutines:)39 b(page)31 b(43)p eop end
+%%Page: 115 121
+TeXDict begin 115 120 bop 3764 299 a Fi(115)382 555 y
+Fe(FTPHPS\(unit,bitpix,naxis)o(,na)o(xes,)41 b(>)48 b(status\))382
+668 y(FTPHPR\(unit,simple,bitpi)o(x,n)o(axis)o(,nax)o(es,)o(pcou)o
+(nt,g)o(cou)o(nt,e)o(xten)o(d,)41 b(>)48 b(status\))382
+781 y(FTGHPR\(unit,maxdim,)42 b(>)48 b(simple,bitpix,naxis,naxe)o(s,p)o
+(coun)o(t,gc)o(oun)o(t,ex)o(tend)o(,)716 894 y(status\))382
+1007 y(FTPHTB\(unit,rowlen,nrows)o(,tf)o(ield)o(s,tt)o(ype)o(,tbc)o
+(ol,t)o(for)o(m,tu)o(nit,)o(ext)o(name)o(,)42 b(>)716
+1120 y(status\))382 1233 y(FTGHTB\(unit,maxdim,)g(>)48
+b(rowlen,nrows,tfields,tty)o(pe,)o(tbco)o(l,tf)o(orm)o(,tun)o(it,)716
+1346 y(extname,status\))382 1458 y(FTPHBN\(unit,nrows,tfield)o(s,t)o
+(type)o(,tfo)o(rm,)o(tuni)o(t,ex)o(tna)o(me,v)o(arid)o(at)41
+b(>)48 b(status\))382 1571 y(FTGHBN\(unit,maxdim,)42
+b(>)48 b(nrows,tfields,ttype,tfor)o(m,t)o(unit)o(,ext)o(nam)o(e,va)o
+(rida)o(t,)716 1684 y(status\))0 1942 y Fi(W)-8 b(rite)32
+b(Keyw)m(ord)e(Subroutines:)39 b(page)31 b(45)382 2199
+y Fe(FTPREC\(unit,card,)43 b(>)k(status\))382 2312 y
+(FTPCOM\(unit,comment,)42 b(>)48 b(status\))382 2425
+y(FTPHIS\(unit,history,)42 b(>)48 b(status\))382 2538
+y(FTPDAT\(unit,)c(>)k(status\))382 2651 y(FTPKY[JKLS]\(unit,keyword)o
+(,ke)o(yval)o(,com)o(men)o(t,)42 b(>)47 b(status\))382
+2764 y(FTPKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o
+(omme)o(nt,)41 b(>)48 b(status\))382 2877 y(FTPKLS\(unit,keyword,keyv)o
+(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 2990 y(FTPLSW\(unit,)d(>)k
+(status\))382 3103 y(FTPKYU\(unit,keyword,comm)o(ent)o(,)42
+b(>)47 b(status\))382 3216 y(FTPKN[JKLS]\(unit,keyroot)o(,st)o(artn)o
+(o,no)o(_ke)o(ys,k)o(eyva)o(ls,)o(comm)o(ents)o(,)42
+b(>)47 b(status\))382 3329 y(FTPKN[EDFG]\(unit,keyroot)o(,st)o(artn)o
+(o,no)o(_ke)o(ys,k)o(eyva)o(ls,)o(deci)o(mals)o(,co)o(mmen)o(ts,)41
+b(>)907 3441 y(status\))382 3554 y(FTCPKYinunit,)j(outunit,)i(innum,)g
+(outnum,)f(keyroot,)h(>)h(status\))382 3667 y
+(FTPKYT\(unit,keyword,intv)o(al,)o(dblv)o(al,c)o(omm)o(ent,)41
+b(>)48 b(status\))382 3780 y(FTPKTP\(unit,)c(filename,)i(>)h(status\))
+382 3893 y(FTPUNT\(unit,keyword,unit)o(s,)41 b(>)48 b(status\))0
+4151 y Fi(Insert)30 b(Keyw)m(ord)g(Subroutines:)39 b(page)31
+b(47)382 4408 y Fe(FTIREC\(unit,key_no,card,)41 b(>)47
+b(status\))382 4521 y(FTIKY[JKLS]\(unit,keyword)o(,ke)o(yval)o(,com)o
+(men)o(t,)42 b(>)47 b(status\))382 4634 y(FTIKLS\(unit,keyword,keyv)o
+(al,)o(comm)o(ent,)41 b(>)47 b(status\))382 4747 y
+(FTIKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o(ima)o(ls,c)o(omme)o
+(nt,)41 b(>)48 b(status\))382 4860 y(FTIKYU\(unit,keyword,comm)o(ent)o
+(,)42 b(>)47 b(status\))0 5118 y Fi(Read)31 b(Keyw)m(ord)f
+(Subroutines:)39 b(page)31 b(47)382 5375 y Fe(FTGREC\(unit,key_no,)42
+b(>)48 b(card,status\))382 5488 y(FTGKYN\(unit,key_no,)42
+b(>)48 b(keyword,value,comment,st)o(atu)o(s\))382 5601
+y(FTGCRD\(unit,keyword,)42 b(>)48 b(card,status\))382
+5714 y(FTGNXK\(unit,inclist,ninc)o(,ex)o(clis)o(t,ne)o(xc,)41
+b(>)48 b(card,status\))p eop end
+%%Page: 116 122
+TeXDict begin 116 121 bop 0 299 a Fi(116)281 b Fg(CHAPTER)30
+b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
+b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTGKEY\(unit,keyword,)42
+b(>)48 b(value,comment,status\))382 668 y(FTGKY[EDJKLS]\(unit,keywo)o
+(rd,)41 b(>)48 b(keyval,comment,status\))382 781 y
+(FTGKN[EDJKLS]\(unit,keyro)o(ot,)o(star)o(tno,)o(max)o(_key)o(s,)42
+b(>)47 b(keyvals,nfound,status\))382 894 y(FTGKYT\(unit,keyword,)42
+b(>)48 b(intval,dblval,comment,s)o(tat)o(us\))382 1007
+y(FTGUNT\(unit,keyword,)42 b(>)48 b(units,status\))0
+1263 y Fi(Mo)s(dify)30 b(Keyw)m(ord)g(Subroutines:)39
+b(page)31 b(49)382 1519 y Fe(FTMREC\(unit,key_no,card,)41
+b(>)47 b(status\))382 1632 y(FTMCRD\(unit,keyword,card)o(,)42
+b(>)47 b(status\))382 1745 y(FTMNAM\(unit,oldkey,keywo)o(rd,)41
+b(>)48 b(status\))382 1858 y(FTMCOM\(unit,keyword,comm)o(ent)o(,)42
+b(>)47 b(status\))382 1971 y(FTMKY[JKLS]\(unit,keyword)o(,ke)o(yval)o
+(,com)o(men)o(t,)42 b(>)47 b(status\))382 2084 y
+(FTMKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47
+b(status\))382 2197 y(FTMKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o
+(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 2310
+y(FTMKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
+2566 y Fi(Up)s(date)30 b(Keyw)m(ord)g(Subroutines:)39
+b(page)32 b(50)382 2822 y Fe(FTUCRD\(unit,keyword,card)o(,)42
+b(>)47 b(status\))382 2935 y(FTUKY[JKLS]\(unit,keyword)o(,ke)o(yval)o
+(,com)o(men)o(t,)42 b(>)47 b(status\))382 3048 y
+(FTUKLS\(unit,keyword,keyv)o(al,)o(comm)o(ent,)41 b(>)47
+b(status\))382 3161 y(FTUKY[EDFG]\(unit,keyword)o(,ke)o(yval)o(,dec)o
+(ima)o(ls,c)o(omme)o(nt,)41 b(>)48 b(status\))382 3274
+y(FTUKYU\(unit,keyword,comm)o(ent)o(,)42 b(>)47 b(status\))0
+3530 y Fi(Delete)33 b(Keyw)m(ord)d(Subroutines:)39 b(page)31
+b(50)382 3786 y Fe(FTDREC\(unit,key_no,)42 b(>)48 b(status\))382
+3899 y(FTDKEY\(unit,keyword,)42 b(>)48 b(status\))0 4155
+y Fi(De\014ne)31 b(Data)h(Scaling)f(P)m(arameters)g(and)f(Unde\014ned)f
+(Pixel)i(Flags:)42 b(page)31 b(51)382 4411 y Fe
+(FTPSCL\(unit,bscale,bzero)o(,)42 b(>)47 b(status\))382
+4524 y(FTTSCL\(unit,colnum,tscal)o(,tz)o(ero,)41 b(>)48
+b(status\))382 4637 y(FTPNUL\(unit,blank,)43 b(>)k(status\))382
+4750 y(FTSNUL\(unit,colnum,snull)41 b(>)47 b(status\))382
+4863 y(FTTNUL\(unit,colnum,tnull)41 b(>)47 b(status\))0
+5119 y Fi(FITS)30 b(Primary)f(Arra)m(y)i(or)f(IMA)m(GE)i(Extension)e
+(I/O)h(Subroutines:)39 b(page)31 b(52)382 5375 y Fe(FTGIDT\(unit,)44
+b(>)k(bitpix,status\))382 5488 y(FTGIET\(unit,)c(>)k(bitpix,status\))
+382 5601 y(FTGIDM\(unit,)c(>)k(naxis,status\))382 5714
+y(FTGISZ\(unit,)c(maxdim,)i(>)i(naxes,status\))p eop
+end
+%%Page: 117 123
+TeXDict begin 117 122 bop 3764 299 a Fi(117)382 555 y
+Fe(FTGIPR\(unit,)44 b(maxdim,)i(>)i(bitpix,naxis,naxes,stat)o(us\))382
+668 y(FTPPR[BIJKED]\(unit,group)o(,fp)o(ixel)o(,nel)o(eme)o(nts,)o
+(valu)o(es,)41 b(>)48 b(status\))382 781 y(FTPPN[BIJKED]\(unit,group)o
+(,fp)o(ixel)o(,nel)o(eme)o(nts,)o(valu)o(es,)o(null)o(val)41
+b(>)48 b(status\))382 894 y(FTPPRU\(unit,group,fpixel)o(,ne)o(leme)o
+(nts,)41 b(>)47 b(status\))382 1007 y(FTGPV[BIJKED]\(unit,group)o(,fp)o
+(ixel)o(,nel)o(eme)o(nts,)o(null)o(val)o(,)42 b(>)47
+b(values,anyf,status\))382 1120 y(FTGPF[BIJKED]\(unit,group)o(,fp)o
+(ixel)o(,nel)o(eme)o(nts,)41 b(>)48 b(values,flagvals,anyf,st)o(atu)o
+(s\))382 1233 y(FTPGP[BIJKED]\(unit,group)o(,fp)o(arm,)o(npar)o(m,v)o
+(alue)o(s,)42 b(>)47 b(status\))382 1346 y(FTGGP[BIJKED]\(unit,group)o
+(,fp)o(arm,)o(npar)o(m,)41 b(>)48 b(values,status\))382
+1458 y(FTP2D[BIJKED]\(unit,group)o(,di)o(m1,n)o(axis)o(1,n)o(axis)o
+(2,im)o(age)o(,)42 b(>)47 b(status\))382 1571 y
+(FTP3D[BIJKED]\(unit,group)o(,di)o(m1,d)o(im2,)o(nax)o(is1,)o(naxi)o
+(s2,)o(naxi)o(s3,c)o(ube)o(,)42 b(>)47 b(status\))382
+1684 y(FTG2D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(naxi)o
+(s1,n)o(axi)o(s2,)41 b(>)48 b(image,anyf,status\))382
+1797 y(FTG3D[BIJKED]\(unit,group)o(,nu)o(llva)o(l,di)o(m1,)o(dim2)o
+(,nax)o(is1)o(,nax)o(is2,)o(nax)o(is3,)41 b(>)1002 1910
+y(cube,anyf,status\))382 2023 y(FTPSS[BIJKED]\(unit,group)o(,na)o(xis,)
+o(naxe)o(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(arra)o(y,)g(>)48
+b(status\))382 2136 y(FTGSV[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o
+(s,f)o(pixe)o(ls,l)o(pix)o(els,)o(incs)o(,nu)o(llva)o(l,)42
+b(>)1002 2249 y(array,anyf,status\))382 2362 y
+(FTGSF[BIJKED]\(unit,group)o(,na)o(xis,)o(naxe)o(s,f)o(pixe)o(ls,l)o
+(pix)o(els,)o(incs)o(,)g(>)1002 2475 y(array,flagvals,anyf,statu)o(s\))
+0 2739 y Fi(T)-8 b(able)31 b(Column)e(Information)i(Subroutines:)39
+b(page)31 b(55)382 3003 y Fe(FTGNRW\(unit,)44 b(>)k(nrows,)e(status\))
+382 3115 y(FTGNCL\(unit,)e(>)k(ncols,)e(status\))382
+3228 y(FTGCNO\(unit,casesen,colt)o(emp)o(late)o(,)c(>)47
+b(colnum,status\))382 3341 y(FTGCNN\(unit,casesen,colt)o(emp)o(late)o
+(,)42 b(>)47 b(colnam,colnum,status\))382 3454 y(FTGTCL\(unit,colnum,)
+42 b(>)48 b(datacode,repeat,width,st)o(atu)o(s\))382
+3567 y(FTEQTY\(unit,colnum,)42 b(>)48 b(datacode,repeat,width,st)o(atu)
+o(s\))382 3680 y(FTGCDW\(unit,colnum,)42 b(>)48 b(dispwidth,status\))
+382 3793 y(FTGACL\(unit,colnum,)42 b(>)716 3906 y
+(ttype,tbcol,tunit,tform,)o(tsca)o(l,t)o(zero)o(,snu)o(ll,)o(tdis)o
+(p,st)o(atu)o(s\))382 4019 y(FTGBCL\(unit,colnum,)g(>)716
+4132 y(ttype,tunit,datatype,rep)o(eat,)o(tsc)o(al,t)o(zero)o(,tn)o
+(ull,)o(tdis)o(p,s)o(tatu)o(s\))382 4245 y(FTPTDM\(unit,colnum,naxis)o
+(,na)o(xes,)f(>)48 b(status\))382 4357 y(FTGTDM\(unit,colnum,maxdi)o
+(m,)41 b(>)48 b(naxis,naxes,status\))382 4470 y
+(FTDTDM\(unit,tdimstr,coln)o(um,)o(maxd)o(im,)41 b(>)48
+b(naxis,naxes,)c(status\))382 4583 y(FFGRSZ\(unit,)g(>)k
+(nrows,status\))0 4847 y Fi(Lo)m(w-Lev)m(el)32 b(T)-8
+b(able)31 b(Access)h(Subroutines:)39 b(page)31 b(58)382
+5111 y Fe(FTGTBS\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41
+b(>)48 b(string,status\))382 5224 y(FTPTBS\(unit,frow,startch)o(ar,)o
+(ncha)o(rs,s)o(tri)o(ng,)41 b(>)48 b(status\))382 5337
+y(FTGTBB\(unit,frow,startch)o(ar,)o(ncha)o(rs,)41 b(>)48
+b(array,status\))382 5450 y(FTPTBB\(unit,frow,startch)o(ar,)o(ncha)o
+(rs,a)o(rra)o(y,)42 b(>)47 b(status\))0 5714 y Fi(Edit)30
+b(Ro)m(ws)h(or)f(Columns)g(page)h(58)p eop end
+%%Page: 118 124
+TeXDict begin 118 123 bop 0 299 a Fi(118)281 b Fg(CHAPTER)30
+b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
+b(A)m(CE)30 b(SUBR)m(OUTINES)382 555 y Fe(FTIROW\(unit,frow,nrows,)41
+b(>)48 b(status\))382 668 y(FTDROW\(unit,frow,nrows,)41
+b(>)48 b(status\))382 781 y(FTDRRG\(unit,rowrange,)42
+b(>)47 b(status\))382 894 y(FTDRWS\(unit,rowlist,nrow)o(s,)41
+b(>)48 b(status\))382 1007 y(FTICOL\(unit,colnum,ttype)o(,tf)o(orm,)41
+b(>)48 b(status\))382 1120 y(FTICLS\(unit,colnum,ncols)o(,tt)o(ype,)o
+(tfor)o(m,)41 b(>)48 b(status\))382 1233 y(FTMVEC\(unit,colnum,newve)o
+(cle)o(n,)42 b(>)47 b(status\))382 1346 y(FTDCOL\(unit,colnum,)42
+b(>)48 b(status\))382 1458 y(FTCPCL\(inunit,outunit,in)o(col)o(num,)o
+(outc)o(oln)o(um,c)o(reat)o(eco)o(l,)42 b(>)47 b(status\);)0
+1716 y Fi(Read)31 b(and)e(W)-8 b(rite)32 b(Column)e(Data)i(Routines)e
+(page)h(60)382 1974 y Fe(FTPCL[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)
+o(fel)o(em,n)o(elem)o(ent)o(s,va)o(lues)o(,)42 b(>)47
+b(status\))382 2087 y(FTPCN[BIJKED]\(unit,colnu)o(m,f)o(row,)o(fele)o
+(m,n)o(elem)o(ents)o(,va)o(lues)o(,nul)o(lva)o(l)42 b(>)47
+b(status\))382 2199 y(FTPCLX\(unit,colnum,frow,)o(fbi)o(t,nb)o(it,l)o
+(ray)o(,)42 b(>)47 b(status\))382 2312 y(FTPCLU\(unit,colnum,frow,)o
+(fel)o(em,n)o(elem)o(ent)o(s,)42 b(>)47 b(status\))382
+2425 y(FTGCL\(unit,colnum,frow,f)o(ele)o(m,ne)o(leme)o(nts)o(,)42
+b(>)47 b(values,status\))382 2538 y(FTGCV[SBIJKEDCM]\(unit,co)o(lnu)o
+(m,fr)o(ow,f)o(ele)o(m,ne)o(leme)o(nts)o(,nul)o(lval)o(,)42
+b(>)1098 2651 y(values,anyf,status\))382 2764 y
+(FTGCF[SLBIJKEDCM]\(unit,c)o(oln)o(um,f)o(row,)o(fel)o(em,n)o(elem)o
+(ent)o(s,)g(>)1193 2877 y(values,flagvals,anyf,stat)o(us\))382
+2990 y(FTGSV[BIJKED]\(unit,colnu)o(m,n)o(axis)o(,nax)o(es,)o(fpix)o
+(els,)o(lpi)o(xels)o(,inc)o(s,n)o(ullv)o(al,)f(>)1002
+3103 y(array,anyf,status\))382 3216 y(FTGSF[BIJKED]\(unit,colnu)o(m,n)o
+(axis)o(,nax)o(es,)o(fpix)o(els,)o(lpi)o(xels)o(,inc)o(s,)g(>)1002
+3329 y(array,flagvals,anyf,statu)o(s\))382 3441 y
+(FTGCX\(unit,colnum,frow,f)o(bit)o(,nbi)o(t,)h(>)47 b(lray,status\))382
+3554 y(FTGCX[IJD]\(unit,colnum,f)o(row)o(,nro)o(ws,f)o(bit)o(,nbi)o(t,)
+42 b(>)47 b(array,status\))382 3667 y(FTGDES\(unit,colnum,rownu)o(m,)41
+b(>)48 b(nelements,offset,status\))382 3780 y
+(FTPDES\(unit,colnum,rownu)o(m,n)o(elem)o(ents)o(,of)o(fset)o(,)42
+b(>)47 b(status\))0 4038 y Fi(Ro)m(w)31 b(Selection)h(and)d(Calculator)
+j(Routines:)41 b(page)31 b(64)382 4295 y Fe(FTFROW\(unit,expr,firstro)o
+(w,)41 b(nrows,)47 b(>)g(n_good_rows,)d(row_status,)h(status\))382
+4408 y(FTFFRW\(unit,)f(expr,)j(>)g(rownum,)f(status\))382
+4521 y(FTSROW\(inunit,)e(outunit,)h(expr,)i(>)g(status)f(\))382
+4634 y(FTCROW\(unit,datatype,exp)o(r,f)o(irst)o(row,)o(nel)o(emen)o
+(ts,n)o(ulv)o(al,)41 b(>)620 4747 y(array,anynul,status\))382
+4860 y(FTCALC\(inunit,)j(expr,)i(outunit,)g(parName,)f(parInfo,)h(>)h
+(status\))382 4973 y(FTCALC_RNG\(inunit,)c(expr,)j(outunit,)g(parName,)
+f(parInfo,)573 5086 y(nranges,)g(firstrow,)h(lastrow,)f(>)j(status\))
+382 5199 y(FTTEXP\(unit,)c(expr,)j(>)g(datatype,)e(nelem,)h(naxis,)h
+(naxes,)f(status\))0 5456 y Fi(Celestial)32 b(Co)s(ordinate)f(System)f
+(Subroutines:)39 b(page)31 b(65)382 5714 y Fe(FTGICS\(unit,)44
+b(>)k(xrval,yrval,xrpix,yrpix)o(,xin)o(c,yi)o(nc,)o(rot,)o(coor)o(dty)o
+(pe,s)o(tatu)o(s\))p eop end
+%%Page: 119 125
+TeXDict begin 119 124 bop 3764 299 a Fi(119)382 555 y
+Fe(FTGTCS\(unit,xcol,ycol,)42 b(>)716 668 y(xrval,yrval,xrpix,yrpix,)o
+(xinc)o(,yi)o(nc,r)o(ot,c)o(oor)o(dtyp)o(e,st)o(atu)o(s\))382
+781 y(FTWLDP\(xpix,ypix,xrval,y)o(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o
+(inc,)o(yin)o(c,ro)o(t,)1241 894 y(coordtype,)j(>)i(xpos,ypos,status\))
+382 1007 y(FTXYPX\(xpos,ypos,xrval,y)o(rva)o(l,xr)o(pix,)o(yrp)o(ix,x)o
+(inc,)o(yin)o(c,ro)o(t,)1241 1120 y(coordtype,)e(>)i
+(xpix,ypix,status\))0 1340 y Fi(File)32 b(Chec)m(ksum)d(Subroutines:)40
+b(page)31 b(67)382 1560 y Fe(FTPCKS\(unit,)44 b(>)k(status\))382
+1673 y(FTUCKS\(unit,)c(>)k(status\))382 1785 y(FTVCKS\(unit,)c(>)k
+(dataok,hduok,status\))382 1898 y(FTGCKS\(unit,)c(>)k
+(datasum,hdusum,status\))382 2011 y(FTESUM\(sum,complement,)42
+b(>)47 b(checksum\))382 2124 y(FTDSUM\(checksum,compleme)o(nt,)41
+b(>)48 b(sum\))0 2457 y Fi(Time)30 b(and)g(Date)i(Utilit)m(y)h
+(Subroutines:)39 b(page)31 b(68)382 2677 y Fe(FTGSDT\()46
+b(>)h(day,)g(month,)f(year,)g(status)g(\))382 2790 y(FTGSTM\(>)f
+(datestr,)h(timeref,)f(status\))382 2903 y(FTDT2S\()h(year,)g(month,)g
+(day,)h(>)g(datestr,)f(status\))382 3016 y(FTTM2S\()g(year,)g(month,)g
+(day,)h(hour,)f(minute,)g(second,)g(decimals,)764 3129
+y(>)h(datestr,)f(status\))382 3242 y(FTS2DT\(datestr,)d(>)48
+b(year,)e(month,)g(day,)h(status\))382 3354 y(FTS2TM\(datestr,)c(>)48
+b(year,)e(month,)g(day,)h(hour,)f(minute,)g(second,)g(status\))0
+3574 y Fi(General)31 b(Utilit)m(y)i(Subroutines:)39 b(page)31
+b(69)382 3794 y Fe(FTGHAD\(unit,)44 b(>)k(curaddr,nextaddr\))382
+3907 y(FTUPCH\(string\))382 4020 y(FTCMPS\(str_template,stri)o(ng,)o
+(case)o(sen,)41 b(>)47 b(match,exact\))382 4133 y(FTTKEY\(keyword,)c(>)
+48 b(status\))382 4246 y(FTTREC\(card,)c(>)k(status\))382
+4359 y(FTNCHK\(unit,)c(>)k(status\))382 4472 y(FTGKNM\(unit,)c(>)k
+(keyword,)d(keylength,)g(status\))382 4585 y(FTPSVC\(card,)f(>)k
+(value,comment,status\))382 4698 y(FTKEYN\(keyroot,seq_no,)42
+b(>)47 b(keyword,status\))382 4811 y(FTNKEY\(seq_no,keyroot,)42
+b(>)47 b(keyword,status\))382 4924 y(FTDTYP\(value,)d(>)j
+(dtype,status\))382 5036 y(class)f(=)i(FTGKCL\(card\))382
+5149 y(FTASFM\(tform,)c(>)j(datacode,width,decimals,st)o(atus)o(\))382
+5262 y(FTBNFM\(tform,)d(>)j(datacode,repeat,width,stat)o(us\))382
+5375 y(FTGABC\(tfields,tform,spa)o(ce,)41 b(>)48 b
+(rowlen,tbcol,status\))382 5488 y(FTGTHD\(template,)43
+b(>)48 b(card,hdtype,status\))382 5601 y(FTRWRG\(rowlist,)43
+b(maxrows,)j(maxranges,)f(>)i(numranges,)e(rangemin,)716
+5714 y(rangemax,)g(status\))p eop end
+%%Page: 120 126
+TeXDict begin 120 125 bop 0 299 a Fi(120)281 b Fg(CHAPTER)30
+b(10.)112 b(SUMMAR)-8 b(Y)32 b(OF)e(ALL)g(FITSIO)f(USER-INTERF)-10
+b(A)m(CE)30 b(SUBR)m(OUTINES)p eop end
+%%Page: 121 127
+TeXDict begin 121 126 bop 0 1225 a Ff(Chapter)65 b(11)0
+1687 y Fl(P)-6 b(arameter)77 b(De\014nitions)0 2180 y
+Fe(anyf)47 b(-)g(\(logical\))e(set)i(to)g(TRUE)g(if)g(any)g(of)g(the)g
+(returned)f(data)g(values)h(are)f(undefined)0 2293 y(array)g(-)i(\(any)
+e(datatype)g(except)g(character\))f(array)h(of)i(bytes)e(to)h(be)g
+(read)g(or)g(written.)0 2406 y(bitpix)f(-)i(\(integer\))d(bits)h(per)h
+(pixel:)f(8,)i(16,)f(32,)f(-32,)h(or)g(-64)0 2518 y(blank)f(-)i
+(\(integer\))d(value)h(used)h(for)g(undefined)e(pixels)h(in)i(integer)d
+(primary)h(array)0 2631 y(blank)g(-)i(\(integer*8\))d(value)h(used)h
+(for)f(undefined)g(pixels)g(in)h(integer)f(primary)g(array)0
+2744 y(blocksize)f(-)j(\(integer\))d(2880-byte)g(logical)h(record)g
+(blocking)g(factor)477 2857 y(\(if)h(0)h(<)f(blocksize)e(<)j(11\))f(or)
+g(the)g(actual)f(block)g(size)h(in)g(bytes)477 2970 y(\(if)g(10)g(<)h
+(blocksize)d(<)j(28800\).)93 b(As)47 b(of)g(version)f(3.3)h(of)g
+(FITSIO,)477 3083 y(blocksizes)e(greater)h(than)h(2880)f(are)h(no)g
+(longer)g(supported.)0 3196 y(bscale)f(-)i(\(double)d(precision\))g
+(scaling)h(factor)g(for)h(the)g(primary)f(array)0 3309
+y(bytlen)g(-)i(\(integer\))d(length)h(of)h(the)g(data)g(unit,)f(in)h
+(bytes)0 3422 y(bzero)f(-)i(\(double)e(precision\))f(zero)h(point)h
+(for)g(primary)e(array)i(scaling)0 3535 y(card)g(-)g(\(character*80\))d
+(header)i(record)g(to)h(be)h(read)e(or)h(written)0 3648
+y(casesen)f(-)h(\(logical\))f(will)g(string)g(matching)g(be)h(case)g
+(sensitive?)0 3760 y(checksum)f(-)h(\(character*16\))d(encoded)i
+(checksum)f(string)0 3873 y(colname)h(-)h(\(character\))e(ASCII)h(name)
+h(of)g(the)g(column)0 3986 y(colnum)f(-)i(\(integer\))d(number)h(of)h
+(the)g(column)f(\(first)g(column)g(=)i(1\))0 4099 y(coltemplate)d(-)i
+(\(character\))e(template)g(string)i(to)g(be)g(matched)f(to)h(column)f
+(names)0 4212 y(comment)g(-)h(\(character\))e(the)i(keyword)f(comment)g
+(field)0 4325 y(comments)g(-)h(\(character)e(array\))h(keyword)g
+(comment)g(fields)0 4438 y(compid)g(-)i(\(integer\))d(the)i(type)f(of)i
+(computer)d(that)i(the)g(program)e(is)j(running)d(on)0
+4551 y(complement)g(-)i(\(logical\))f(should)g(the)h(checksum)e(be)i
+(complemented?)0 4664 y(coordtype)e(-)j(\(character\))c(type)j(of)g
+(coordinate)e(projection)g(\(-SIN,)h(-TAN,)h(-ARC,)477
+4777 y(-NCP,)g(-GLS,)f(-MER,)g(or)i(-AIT\))0 4890 y(cube)f(-)g(3D)g
+(data)g(cube)g(of)g(the)g(appropriate)d(datatype)0 5002
+y(curaddr)i(-)h(\(integer\))f(starting)f(address)h(\(in)h(bytes\))f(of)
+h(the)g(CHDU)0 5115 y(current)f(-)h(\(integer\))f(if)h(not)g(equal)f
+(to)h(0,)g(copy)g(the)g(current)f(HDU)0 5228 y(datacode)g(-)h
+(\(integer\))e(symbolic)h(code)g(of)i(the)f(binary)f(table)g(column)g
+(datatype)0 5341 y(dataok)g(-)i(\(integer\))d(was)i(the)g(data)f(unit)h
+(verification)d(successful)h(\(=1\))i(or)430 5454 y(not)f(\(=)i(-1\).)
+94 b(Equals)46 b(zero)h(if)g(the)g(DATASUM)f(keyword)f(is)j(not)f
+(present.)0 5567 y(datasum)f(-)h(\(double)f(precision\))f(32-bit)h(1's)
+h(complement)e(checksum)h(for)h(the)f(data)h(unit)0 5680
+y(datatype)f(-)h(\(character\))e(datatype)g(\(format\))h(of)h(the)g
+(binary)f(table)g(column)1882 5942 y Fi(121)p eop end
+%%Page: 122 128
+TeXDict begin 122 127 bop 0 299 a Fi(122)1779 b Fg(CHAPTER)30
+b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y
+Fe(datestr)94 b(-)47 b(\(string\))f(FITS)g(date/time)f(string:)h
+('YYYY-MM-DDThh:mm:ss.ddd')o(,)525 668 y('YYYY-MM-dd',)e(or)j
+('dd/mm/yy')0 781 y(day)g(-)g(\(integer\))f(current)f(day)i(of)h(the)e
+(month)0 894 y(dblval)g(-)i(\(double)d(precision\))g(fractional)g(part)
+i(of)g(the)g(keyword)f(value)0 1007 y(decimals)g(-)h(\(integer\))e
+(number)h(of)i(decimal)d(places)h(to)i(be)f(displayed)0
+1120 y(dim1)g(-)g(\(integer\))e(actual)h(size)h(of)g(the)g(first)g
+(dimension)e(of)i(the)g(image)f(or)h(cube)g(array)0 1233
+y(dim2)g(-)g(\(integer\))e(actual)h(size)h(of)g(the)g(second)f
+(dimension)g(of)h(the)g(cube)f(array)0 1346 y(dispwidth)f(-)j
+(\(integer\))d(-)i(the)g(display)f(width)h(\(length)e(of)j(string\))d
+(for)i(a)h(column)0 1458 y(dtype)e(-)i(\(character\))d(datatype)g(of)i
+(the)g(keyword)f(\('C',)g('L',)h('I',)94 b(or)48 b('F'\))764
+1571 y(C)f(=)h(character)d(string)764 1684 y(L)i(=)h(logical)764
+1797 y(I)f(=)h(integer)764 1910 y(F)f(=)h(floating)d(point)h(number)0
+2023 y(errmsg)g(-)i(\(character*80\))43 b(oldest)k(error)f(message)g
+(on)h(the)g(internal)e(stack)0 2136 y(errtext)h(-)h(\(character*30\))d
+(descriptive)h(error)h(message)g(corresponding)e(to)j(error)g(number)0
+2249 y(casesen)f(-)h(\(logical\))f(true)g(if)h(column)f(name)h
+(matching)f(is)h(case)f(sensitive)0 2362 y(exact)g(-)i(\(logical\))d
+(do)i(the)g(strings)f(match)g(exactly,)g(or)h(were)g(wildcards)e(used?)
+0 2475 y(exclist)94 b(\(character)45 b(array\))h(list)g(of)h(names)g
+(to)g(be)g(excluded)f(from)g(search)0 2588 y(exists)142
+b(-)47 b(flag)g(indicating)e(whether)g(the)i(file)g(or)g(compressed)e
+(file)i(exists)f(on)h(disk)0 2700 y(extend)f(-)i(\(logical\))d(true)h
+(if)i(there)e(may)h(be)g(extensions)e(following)g(the)i(primary)f(data)
+0 2813 y(extname)g(-)h(\(character\))e(value)h(of)i(the)e(EXTNAME)g
+(keyword)g(\(if)h(not)g(blank\))0 2926 y(fbit)g(-)g(\(integer\))e
+(first)i(bit)g(in)g(the)g(field)f(to)h(be)g(read)g(or)g(written)0
+3039 y(felem)f(-)i(\(integer\))d(first)h(pixel)h(of)g(the)g(element)f
+(vector)g(\(ignored)f(for)i(ASCII)g(tables\))0 3152 y(filename)f(-)h
+(\(character\))e(name)h(of)i(the)e(FITS)h(file)0 3265
+y(flagvals)f(-)h(\(logical)f(array\))g(True)g(if)h(corresponding)e
+(data)h(element)g(is)h(undefined)0 3378 y(following)e(-)j(\(integer\))d
+(if)i(not)g(equal)f(to)i(0,)f(copy)f(all)h(following)f(HDUs)g(in)h(the)
+g(input)g(file)0 3491 y(fparm)f(-)i(\(integer\))d(sequence)h(number)g
+(of)h(the)g(first)f(group)h(parameter)e(to)i(read)g(or)g(write)0
+3604 y(fpixel)f(-)i(\(integer\))d(the)i(first)f(pixel)g(position)0
+3717 y(fpixels)g(-)h(\(integer)f(array\))g(the)h(first)f(included)g
+(pixel)g(in)h(each)g(dimension)0 3830 y(frow)g(-)g(\(integer\))e
+(beginning)h(row)h(number)f(\(first)g(row)h(of)g(table)f(=)i(1\))0
+3942 y(frowll)e(-)i(\(integer*8\))c(beginning)i(row)g(number)h(\(first)
+f(row)h(of)g(table)f(=)i(1\))0 4055 y(gcount)e(-)i(\(integer\))d(value)
+h(of)h(the)g(GCOUNT)f(keyword)g(\(usually)g(=)h(1\))0
+4168 y(group)f(-)i(\(integer\))d(sequence)h(number)g(of)h(the)g(data)f
+(group)h(\(=0)g(for)g(non-grouped)d(data\))0 4281 y(hdtype)i(-)i
+(\(integer\))d(header)h(record)g(type:)g(-1=delete;)93
+b(0=append)46 b(or)h(replace;)907 4394 y(1=append;)e(2=this)h(is)h(the)
+g(END)g(keyword)0 4507 y(hduok)f(-)i(\(integer\))d(was)i(the)g(HDU)g
+(verification)d(successful)h(\(=1\))i(or)430 4620 y(not)f(\(=)i(-1\).)
+94 b(Equals)46 b(zero)h(if)g(the)g(CHECKSUM)e(keyword)h(is)h(not)g
+(present.)0 4733 y(hdusum)f(-)i(\(double)d(precision\))g(32)j(bit)e
+(1's)h(complement)e(checksum)h(for)h(the)g(entire)f(CHDU)0
+4846 y(hdutype)g(-)h(\(integer\))f(type)g(of)h(HDU:)g(0)g(=)h(primary)e
+(array)g(or)h(IMAGE,)f(1)i(=)f(ASCII)g(table,)907 4959
+y(2)g(=)h(binary)e(table,)g(-1)h(=)h(any)e(HDU)h(type)g(or)g(unknown)f
+(type)0 5072 y(history)g(-)h(\(character\))e(the)i(HISTORY)f(keyword)g
+(comment)f(string)0 5185 y(hour)i(-)g(\(integer\))e(hour)i(from)g(0)g
+(-)h(23)0 5297 y(image)e(-)i(2D)f(image)f(of)i(the)e(appropriate)f
+(datatype)0 5410 y(inclist)94 b(\(character)45 b(array\))h(list)g(of)h
+(names)g(to)g(be)g(included)f(in)h(search)0 5523 y(incs)g(-)g
+(\(integer)f(array\))g(sampling)f(interval)h(for)h(pixels)f(in)h(each)g
+(FITS)f(dimension)0 5636 y(intval)g(-)i(\(integer\))d(integer)h(part)g
+(of)h(the)g(keyword)f(value)p eop end
+%%Page: 123 129
+TeXDict begin 123 128 bop 3764 299 a Fi(123)0 555 y Fe(iounit)46
+b(-)i(\(integer\))d(value)h(of)h(an)h(unused)e(I/O)h(unit)f(number)0
+668 y(iunit)g(-)i(\(integer\))d(logical)h(unit)h(number)f(associated)f
+(with)h(the)h(input)g(FITS)f(file,)h(1-199)0 781 y(key_no)f(-)i
+(\(integer\))d(sequence)g(number)h(\(starting)g(with)g(1\))i(of)f(the)g
+(keyword)e(record)0 894 y(keylength)g(-)j(\(integer\))d(length)h(of)h
+(the)g(keyword)f(name)0 1007 y(keyroot)g(-)h(\(character\))e(root)i
+(string)f(for)h(the)g(keyword)e(name)0 1120 y(keysadd)h(-\(integer\))f
+(number)h(of)h(new)g(keyword)f(records)g(which)g(can)h(fit)g(in)g(the)g
+(CHU)0 1233 y(keysexist)e(-)j(\(integer\))d(number)h(of)h(existing)f
+(keyword)g(records)f(in)j(the)f(CHU)0 1346 y(keyval)f(-)i(value)e(of)h
+(the)g(keyword)f(in)h(the)g(appropriate)e(datatype)0
+1458 y(keyvals)h(-)h(\(array\))f(value)g(of)i(the)f(keywords)e(in)i
+(the)g(appropriate)e(datatype)0 1571 y(keyword)h(-)h(\(character*8\))d
+(name)j(of)g(a)h(keyword)0 1684 y(lray)f(-)g(\(logical)f(array\))g
+(array)g(of)h(logical)f(values)g(corresponding)e(to)k(the)e(bit)h
+(array)0 1797 y(lpixels)f(-)h(\(integer)f(array\))g(the)h(last)f
+(included)g(pixel)g(in)i(each)e(dimension)0 1910 y(match)g(-)i
+(\(logical\))d(do)i(the)g(2)h(strings)d(match?)0 2023
+y(maxdim)h(-)i(\(integer\))d(dimensioned)g(size)h(of)h(the)g(NAXES,)f
+(TTYPE,)g(TFORM)h(or)g(TUNIT)f(arrays)0 2136 y(max_keys)g(-)h
+(\(integer\))e(maximum)h(number)g(of)h(keywords)f(to)h(search)f(for)0
+2249 y(minute)g(-)i(\(integer\))d(minute)h(of)h(an)g(hour)g(\(0)g(-)h
+(59\))0 2362 y(month)e(-)i(\(integer\))d(current)h(month)g(of)h(the)g
+(year)g(\(1)g(-)h(12\))0 2475 y(morekeys)e(-)h(\(integer\))e(will)i
+(leave)f(space)h(in)g(the)g(header)f(for)h(this)f(many)h(more)g
+(keywords)0 2588 y(naxes)f(-)i(\(integer)d(array\))h(size)h(of)g(each)g
+(dimension)e(in)i(the)g(FITS)g(array)0 2700 y(naxesll)f(-)h
+(\(integer*8)e(array\))h(size)h(of)g(each)g(dimension)e(in)i(the)g
+(FITS)g(array)0 2813 y(naxis)f(-)i(\(integer\))d(number)h(of)h
+(dimensions)e(in)j(the)e(FITS)h(array)0 2926 y(naxis1)f(-)i
+(\(integer\))d(length)h(of)h(the)g(X/first)f(axis)g(of)i(the)f(FITS)f
+(array)0 3039 y(naxis2)g(-)i(\(integer\))d(length)h(of)h(the)g
+(Y/second)f(axis)g(of)h(the)g(FITS)g(array)0 3152 y(naxis3)f(-)i
+(\(integer\))d(length)h(of)h(the)g(Z/third)f(axis)g(of)i(the)f(FITS)f
+(array)0 3265 y(nbit)h(-)g(\(integer\))e(number)h(of)i(bits)e(in)h(the)
+g(field)g(to)g(read)g(or)g(write)0 3378 y(nchars)f(-)i(\(integer\))d
+(number)h(of)h(characters)e(to)i(read)g(and)g(return)0
+3491 y(ncols)f(-)i(\(integer\))d(number)h(of)h(columns)0
+3604 y(nelements)e(-)j(\(integer\))d(number)h(of)h(data)g(elements)e
+(to)j(read)e(or)h(write)0 3717 y(nelementsll)e(-)i(\(integer*8\))e
+(number)h(of)h(data)g(elements)e(to)j(read)e(or)h(write)0
+3830 y(nexc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g
+(exclusion)e(list)i(\(may)f(=)i(0\))0 3942 y(nhdu)f(-)g(\(integer\))e
+(absolute)h(number)g(of)h(the)g(HDU)g(\(1st)g(HDU)g(=)g(1\))0
+4055 y(ninc)142 b(\(integer\))93 b(number)46 b(of)h(names)g(in)g(the)g
+(inclusion)e(list)0 4168 y(nmove)h(-)i(\(integer\))d(number)h(of)h
+(HDUs)g(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f
+(position)0 4281 y(nfound)g(-)i(\(integer\))d(number)h(of)h(keywords)f
+(found)g(\(highest)g(keyword)f(number\))0 4394 y(no_keys)h(-)h
+(\(integer\))f(number)g(of)h(keywords)e(to)j(write)e(in)h(the)g
+(sequence)0 4507 y(nparm)f(-)i(\(integer\))d(number)h(of)h(group)g
+(parameters)e(to)i(read)g(or)g(write)0 4620 y(nrows)f(-)i(\(integer\))d
+(number)h(of)h(rows)g(in)g(the)g(table)0 4733 y(nrowsll)f(-)h
+(\(integer*8\))e(number)h(of)h(rows)g(in)g(the)g(table)0
+4846 y(nullval)f(-)h(value)g(to)g(represent)e(undefined)g(pixels,)h(of)
+h(the)g(appropriate)e(datatype)0 4959 y(nextaddr)h(-)h(\(integer\))e
+(starting)h(address)g(\(in)h(bytes\))f(of)h(the)g(HDU)g(following)e
+(the)i(CHDU)0 5072 y(offset)f(-)i(\(integer\))d(byte)h(offset)h(in)g
+(the)g(heap)f(to)h(the)g(first)g(element)f(of)h(the)g(array)0
+5185 y(offsetll)f(-)h(\(integer*8\))e(byte)h(offset)g(in)i(the)f(heap)f
+(to)h(the)g(first)g(element)e(of)j(the)f(array)0 5297
+y(oldkey)f(-)i(\(character\))c(old)j(name)g(of)g(keyword)f(to)h(be)g
+(modified)0 5410 y(ounit)f(-)i(\(integer\))d(logical)h(unit)h(number)f
+(associated)f(with)h(the)h(output)f(FITS)h(file)g(1-199)0
+5523 y(pcount)f(-)i(\(integer\))d(value)h(of)h(the)g(PCOUNT)f(keyword)g
+(\(usually)g(=)h(0\))0 5636 y(previous)f(-)h(\(integer\))e(if)i(not)g
+(equal)g(to)g(0,)g(copy)g(all)g(previous)e(HDUs)i(in)g(the)g(input)f
+(file)p eop end
+%%Page: 124 130
+TeXDict begin 124 129 bop 0 299 a Fi(124)1779 b Fg(CHAPTER)30
+b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y
+Fe(repeat)46 b(-)i(\(integer\))d(length)h(of)h(element)f(vector)g
+(\(e.g.)g(12J\);)h(ignored)f(for)g(ASCII)h(table)0 668
+y(rot)g(-)g(\(double)f(precision\))f(celestial)g(coordinate)g(rotation)
+h(angle)g(\(degrees\))0 781 y(rowlen)g(-)i(\(integer\))d(length)h(of)h
+(a)h(table)e(row,)h(in)g(characters)e(or)i(bytes)0 894
+y(rowlenll)f(-)h(\(integer*8\))e(length)h(of)h(a)g(table)g(row,)f(in)i
+(characters)d(or)i(bytes)0 1007 y(rowlist)f(-)h(\(integer)f(array\))g
+(list)h(of)g(row)g(numbers)e(to)j(be)f(deleted)f(in)h(increasing)e
+(order)0 1120 y(rownum)h(-)i(\(integer\))d(number)h(of)h(the)g(row)g
+(\(first)f(row)h(=)g(1\))0 1233 y(rowrange-)e(\(string\))h(list)g(of)i
+(rows)e(or)h(row)g(ranges)f(to)i(be)f(deleted)0 1346
+y(rwmode)f(-)i(\(integer\))d(file)h(access)h(mode:)f(0)h(=)h(readonly,)
+d(1)j(=)f(readwrite)0 1458 y(second)142 b(\(double\)-)45
+b(second)h(within)g(minute)g(\(0)h(-)h(60.9999999999\))c(\(leap)i
+(second!\))0 1571 y(seq_no)g(-)i(\(integer\))d(the)i(sequence)e(number)
+h(to)i(append)e(to)h(the)g(keyword)f(root)g(name)0 1684
+y(simple)g(-)i(\(logical\))d(does)h(the)h(FITS)g(file)g(conform)e(to)j
+(all)f(the)f(FITS)h(standards)0 1797 y(snull)f(-)i(\(character\))d
+(value)h(used)h(to)g(represent)e(undefined)g(values)h(in)i(ASCII)e
+(table)0 1910 y(space)g(-)i(\(integer\))d(number)h(of)h(blank)g(spaces)
+f(to)h(leave)f(between)g(ASCII)h(table)f(columns)0 2023
+y(startchar)f(-)j(\(integer\))d(first)h(character)g(in)h(the)g(row)g
+(to)g(be)g(read)0 2136 y(startno)f(-)h(\(integer\))f(value)g(of)h(the)g
+(first)f(keyword)g(sequence)g(number)g(\(usually)f(1\))0
+2249 y(status)h(-)i(\(integer\))d(returned)g(error)i(status)f(code)g
+(\(0)i(=)f(OK\))0 2362 y(str_template)d(\(character\))h(template)h
+(string)g(to)h(be)g(matched)f(to)h(reference)e(string)0
+2475 y(stream)h(-)i(\(character\))c(output)i(stream)g(for)h(the)g
+(report:)f(either)g('STDOUT')g(or)h('STDERR')0 2588 y(string)f(-)i
+(\(character\))c(character)i(string)0 2700 y(sum)h(-)g(\(double)f
+(precision\))f(32)i(bit)g(unsigned)f(checksum)f(value)0
+2813 y(tbcol)h(-)i(\(integer)d(array\))h(column)h(number)f(of)h(the)g
+(first)f(character)f(in)j(the)e(field\(s\))0 2926 y(tdisp)g(-)i
+(\(character\))d(Fortran)g(type)i(display)f(format)g(for)h(the)g(table)
+f(column)0 3039 y(template-\(character\))c(template)k(string)g(for)h(a)
+g(FITS)g(header)f(record)0 3152 y(tfields)g(-)h(\(integer\))f(number)g
+(of)h(fields)f(\(columns\))f(in)i(the)g(table)0 3265
+y(tform)f(-)i(\(character)d(array\))h(format)g(of)h(the)g(column\(s\);)
+e(allowed)h(values)g(are:)430 3378 y(For)g(ASCII)h(tables:)93
+b(Iw,)47 b(Aw,)g(Fww.dd,)f(Eww.dd,)g(or)h(Dww.dd)430
+3491 y(For)f(binary)h(tables:)e(rL,)i(rX,)g(rB,)g(rI,)g(rJ,)g(rA,)g
+(rAw,)f(rE,)h(rD,)g(rC,)g(rM)430 3604 y(where)f('w'=width)f(of)i(the)g
+(field,)f('d'=no.)g(of)h(decimals,)f('r'=repeat)f(count)430
+3717 y(Note)h(that)h(the)g('rAw')f(form)h(is)g(non-standard)d
+(extension)i(to)h(the)430 3830 y(TFORM)f(keyword)g(syntax)g(that)g(is)i
+(not)f(specifically)d(defined)i(in)h(the)430 3942 y(Binary)f(Tables)g
+(definition)f(document.)0 4055 y(theap)h(-)i(\(integer\))d(zero)i
+(indexed)f(byte)g(offset)g(of)h(starting)f(address)g(of)h(the)g(heap)
+430 4168 y(relative)e(to)i(the)g(beginning)e(of)j(the)f(binary)f(table)
+g(data)0 4281 y(tnull)g(-)i(\(integer\))d(value)h(used)h(to)g
+(represent)f(undefined)f(values)h(in)h(binary)f(table)0
+4394 y(tnullll)g(-)h(\(integer*8\))e(value)h(used)h(to)g(represent)e
+(undefined)h(values)g(in)h(binary)f(table)0 4507 y(ttype)g(-)i
+(\(character)d(array\))h(label)g(for)h(table)g(column\(s\))0
+4620 y(tscal)f(-)i(\(double)e(precision\))f(scaling)g(factor)i(for)f
+(table)h(column)0 4733 y(tunit)f(-)i(\(character)d(array\))h(physical)f
+(unit)i(for)g(table)f(column\(s\))0 4846 y(tzero)g(-)i(\(double)e
+(precision\))f(scaling)g(zero)i(point)f(for)h(table)g(column)0
+4959 y(unit)94 b(-)48 b(\(integer\))d(logical)h(unit)h(number)f
+(associated)f(with)h(the)h(FITS)g(file)f(\(1-199\))0
+5072 y(units)g(-)i(\(character\))d(the)h(keyword)g(units)h(string)f
+(\(e.g.,)g('km/s'\))0 5185 y(value)g(-)i(\(character\))d(the)h(keyword)
+g(value)h(string)0 5297 y(values)f(-)i(array)e(of)h(data)g(values)f(of)
+h(the)g(appropriate)e(datatype)0 5410 y(varidat)h(-)h(\(integer\))f
+(size)g(in)h(bytes)g(of)g(the)g('variable)e(length)h(data)h(area')525
+5523 y(following)e(the)i(binary)f(table)h(data)f(\(usually)g(=)h(0\))0
+5636 y(version)f(-)h(\(real\))f(current)g(revision)g(number)g(of)h(the)
+g(library)p eop end
+%%Page: 125 131
+TeXDict begin 125 130 bop 3764 299 a Fi(125)0 555 y Fe(width)46
+b(-)i(\(integer\))d(width)h(of)i(the)f(character)e(string)h(field)0
+668 y(xcol)h(-)g(\(integer\))e(number)h(of)i(the)f(column)f(containing)
+f(the)i(X)g(coordinate)e(values)0 781 y(xinc)i(-)g(\(double)f
+(precision\))f(X)i(axis)g(coordinate)e(increment)g(at)i(reference)f
+(pixel)g(\(deg\))0 894 y(xpix)h(-)g(\(double)f(precision\))f(X)i(axis)g
+(pixel)f(location)0 1007 y(xpos)h(-)g(\(double)f(precision\))f(X)i
+(axis)g(celestial)e(coordinate)g(\(usually)h(RA\))h(\(deg\))0
+1120 y(xrpix)f(-)i(\(double)e(precision\))f(X)i(axis)g(reference)e
+(pixel)h(array)h(location)0 1233 y(xrval)f(-)i(\(double)e(precision\))f
+(X)i(axis)g(coordinate)e(value)h(at)h(the)g(reference)e(pixel)i
+(\(deg\))0 1346 y(ycol)g(-)g(\(integer\))e(number)h(of)i(the)f(column)f
+(containing)f(the)i(X)g(coordinate)e(values)0 1458 y(year)i(-)g
+(\(integer\))e(last)i(2)g(digits)g(of)g(the)g(year)f(\(00)h(-)h(99\))0
+1571 y(yinc)f(-)g(\(double)f(precision\))f(Y)i(axis)g(coordinate)e
+(increment)g(at)i(reference)f(pixel)g(\(deg\))0 1684
+y(ypix)h(-)g(\(double)f(precision\))f(y)i(axis)g(pixel)f(location)0
+1797 y(ypos)h(-)g(\(double)f(precision\))f(y)i(axis)g(celestial)e
+(coordinate)g(\(usually)h(DEC\))g(\(deg\))0 1910 y(yrpix)g(-)i
+(\(double)e(precision\))f(Y)i(axis)g(reference)e(pixel)h(array)h
+(location)0 2023 y(yrval)f(-)i(\(double)e(precision\))f(Y)i(axis)g
+(coordinate)e(value)h(at)h(the)g(reference)e(pixel)i(\(deg\))p
+eop end
+%%Page: 126 132
+TeXDict begin 126 131 bop 0 299 a Fi(126)1779 b Fg(CHAPTER)30
+b(11.)112 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)p eop end
+%%Page: 127 133
+TeXDict begin 127 132 bop 0 1225 a Ff(Chapter)65 b(12)0
+1687 y Fl(FITSIO)76 b(Error)h(Status)h(Co)6 b(des)0 2180
+y Fe(Status)46 b(codes)g(in)i(the)f(range)f(-99)h(to)g(-999)94
+b(and)47 b(1)h(to)f(999)g(are)g(reserved)e(for)i(future)0
+2293 y(FITSIO)f(use.)95 2518 y(0)96 b(OK,)47 b(no)g(error)0
+2631 y(101)95 b(input)46 b(and)h(output)f(files)g(are)h(the)g(same)0
+2744 y(103)95 b(too)47 b(many)f(FITS)h(files)f(open)h(at)g(once;)f(all)
+h(internal)f(buffers)g(full)0 2857 y(104)95 b(error)46
+b(opening)g(existing)f(file)0 2970 y(105)95 b(error)46
+b(creating)g(new)g(FITS)h(file;)f(\(does)h(a)g(file)g(with)g(this)f
+(name)h(already)f(exist?\))0 3083 y(106)95 b(error)46
+b(writing)g(record)g(to)h(FITS)g(file)0 3196 y(107)95
+b(end-of-file)44 b(encountered)h(while)h(reading)g(record)g(from)h
+(FITS)g(file)0 3309 y(108)95 b(error)46 b(reading)g(record)g(from)h
+(file)0 3422 y(110)95 b(error)46 b(closing)g(FITS)g(file)0
+3535 y(111)95 b(internal)45 b(array)i(dimensions)e(exceeded)0
+3648 y(112)95 b(Cannot)46 b(modify)g(file)g(with)h(readonly)f(access)0
+3760 y(113)95 b(Could)46 b(not)h(allocate)e(memory)0
+3873 y(114)95 b(illegal)45 b(logical)h(unit)h(number;)f(must)g(be)i
+(between)d(1)j(-)f(199,)g(inclusive)0 3986 y(115)95 b(NULL)46
+b(input)h(pointer)e(to)j(routine)0 4099 y(116)95 b(error)46
+b(seeking)g(position)f(in)j(file)0 4325 y(121)95 b(invalid)45
+b(URL)i(prefix)f(on)i(file)e(name)0 4438 y(122)95 b(tried)46
+b(to)h(register)f(too)h(many)f(IO)h(drivers)0 4551 y(123)95
+b(driver)46 b(initialization)e(failed)0 4664 y(124)95
+b(matching)45 b(driver)h(is)h(not)g(registered)0 4777
+y(125)95 b(failed)46 b(to)h(parse)f(input)h(file)f(URL)0
+4890 y(126)95 b(parse)46 b(error)g(in)i(range)e(list)0
+5115 y(151)95 b(bad)47 b(argument)e(in)i(shared)f(memory)g(driver)0
+5228 y(152)95 b(null)46 b(pointer)g(passed)g(as)h(an)h(argument)0
+5341 y(153)95 b(no)47 b(more)f(free)h(shared)f(memory)g(handles)0
+5454 y(154)95 b(shared)46 b(memory)g(driver)g(is)h(not)g(initialized)0
+5567 y(155)95 b(IPC)47 b(error)f(returned)f(by)j(a)f(system)f(call)0
+5680 y(156)95 b(no)47 b(memory)f(in)h(shared)f(memory)g(driver)1882
+5942 y Fi(127)p eop end
+%%Page: 128 134
+TeXDict begin 128 133 bop 0 299 a Fi(128)1613 b Fg(CHAPTER)30
+b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30
+b(CODES)0 555 y Fe(157)95 b(resource)45 b(deadlock)h(would)g(occur)0
+668 y(158)95 b(attempt)45 b(to)j(open/create)c(lock)j(file)g(failed)0
+781 y(159)95 b(shared)46 b(memory)g(block)g(cannot)g(be)h(resized)f(at)
+h(the)g(moment)0 1120 y(201)95 b(header)46 b(not)h(empty;)f(can't)g
+(write)g(required)g(keywords)0 1233 y(202)95 b(specified)45
+b(keyword)h(name)g(was)h(not)g(found)g(in)g(the)g(header)0
+1346 y(203)95 b(specified)45 b(header)h(record)g(number)g(is)h(out)g
+(of)g(bounds)0 1458 y(204)95 b(keyword)45 b(value)i(field)f(is)h(blank)
+0 1571 y(205)95 b(keyword)45 b(value)i(string)f(is)h(missing)f(the)h
+(closing)f(quote)g(character)0 1684 y(206)95 b(illegal)45
+b(indexed)h(keyword)g(name)h(\(e.g.)f('TFORM1000'\))0
+1797 y(207)95 b(illegal)45 b(character)h(in)h(keyword)f(name)g(or)i
+(header)e(record)0 1910 y(208)95 b(keyword)45 b(does)i(not)g(have)g
+(expected)e(name.)i(Keyword)e(out)i(of)g(sequence?)0
+2023 y(209)95 b(keyword)45 b(does)i(not)g(have)g(expected)e(integer)h
+(value)0 2136 y(210)95 b(could)46 b(not)h(find)g(the)f(required)g(END)h
+(header)f(keyword)0 2249 y(211)95 b(illegal)45 b(BITPIX)i(keyword)e
+(value)0 2362 y(212)95 b(illegal)45 b(NAXIS)i(keyword)f(value)0
+2475 y(213)95 b(illegal)45 b(NAXISn)i(keyword)e(value:)h(must)h(be)g(0)
+h(or)f(positive)e(integer)0 2588 y(214)95 b(illegal)45
+b(PCOUNT)i(keyword)e(value)0 2700 y(215)95 b(illegal)45
+b(GCOUNT)i(keyword)e(value)0 2813 y(216)95 b(illegal)45
+b(TFIELDS)h(keyword)g(value)0 2926 y(217)95 b(negative)45
+b(ASCII)i(or)g(binary)f(table)g(width)h(value)f(\(NAXIS1\))0
+3039 y(218)95 b(negative)45 b(number)h(of)h(rows)g(in)g(ASCII)g(or)g
+(binary)f(table)g(\(NAXIS2\))0 3152 y(219)95 b(column)46
+b(name)g(\(TTYPE)g(keyword\))g(not)h(found)0 3265 y(220)95
+b(illegal)45 b(SIMPLE)i(keyword)e(value)0 3378 y(221)95
+b(could)46 b(not)h(find)g(the)f(required)g(SIMPLE)g(header)g(keyword)0
+3491 y(222)95 b(could)46 b(not)h(find)g(the)f(required)g(BITPIX)g
+(header)g(keyword)0 3604 y(223)95 b(could)46 b(not)h(find)g(the)f
+(required)g(NAXIS)g(header)g(keyword)0 3717 y(224)95
+b(could)46 b(not)h(find)g(all)f(the)h(required)f(NAXISn)g(keywords)g
+(in)h(the)g(header)0 3830 y(225)95 b(could)46 b(not)h(find)g(the)f
+(required)g(XTENSION)g(header)g(keyword)0 3942 y(226)95
+b(the)47 b(CHDU)f(is)h(not)g(an)g(ASCII)g(table)f(extension)0
+4055 y(227)95 b(the)47 b(CHDU)f(is)h(not)g(a)h(binary)e(table)g
+(extension)0 4168 y(228)95 b(could)46 b(not)h(find)g(the)f(required)g
+(PCOUNT)g(header)g(keyword)0 4281 y(229)95 b(could)46
+b(not)h(find)g(the)f(required)g(GCOUNT)g(header)g(keyword)0
+4394 y(230)95 b(could)46 b(not)h(find)g(the)f(required)g(TFIELDS)g
+(header)g(keyword)0 4507 y(231)95 b(could)46 b(not)h(find)g(all)f(the)h
+(required)f(TBCOLn)g(keywords)g(in)h(the)g(header)0 4620
+y(232)95 b(could)46 b(not)h(find)g(all)f(the)h(required)f(TFORMn)g
+(keywords)g(in)h(the)g(header)0 4733 y(233)95 b(the)47
+b(CHDU)f(is)h(not)g(an)g(IMAGE)g(extension)0 4846 y(234)95
+b(illegal)45 b(TBCOL)i(keyword)f(value;)g(out)h(of)g(range)0
+4959 y(235)95 b(this)46 b(operation)g(only)g(allowed)g(for)h(ASCII)f
+(or)h(BINARY)g(table)f(extension)0 5072 y(236)95 b(column)46
+b(is)h(too)g(wide)f(to)i(fit)f(within)f(the)h(specified)e(width)h(of)h
+(the)g(ASCII)g(table)0 5185 y(237)95 b(the)47 b(specified)e(column)h
+(name)h(template)e(matched)h(more)h(than)f(one)h(column)f(name)0
+5297 y(241)95 b(binary)46 b(table)g(row)h(width)f(is)i(not)e(equal)h
+(to)g(the)g(sum)g(of)g(the)g(field)f(widths)0 5410 y(251)95
+b(unrecognizable)44 b(type)i(of)h(FITS)g(extension)0
+5523 y(252)95 b(unrecognizable)44 b(FITS)i(record)0 5636
+y(253)95 b(END)47 b(keyword)e(contains)h(non-blank)f(characters)g(in)i
+(columns)f(9-80)p eop end
+%%Page: 129 135
+TeXDict begin 129 134 bop 3764 299 a Fi(129)0 555 y Fe(254)95
+b(Header)46 b(fill)g(area)h(contains)f(non-blank)f(characters)0
+668 y(255)95 b(Data)46 b(fill)h(area)g(contains)e(non-blank)g(on)j
+(non-zero)d(values)0 781 y(261)95 b(unable)46 b(to)h(parse)f(the)h
+(TFORM)g(keyword)e(value)i(string)0 894 y(262)95 b(unrecognizable)44
+b(TFORM)i(datatype)f(code)0 1007 y(263)95 b(illegal)45
+b(TDIMn)i(keyword)f(value)0 1233 y(301)95 b(illegal)45
+b(HDU)i(number;)f(less)h(than)f(1)i(or)f(greater)f(than)h(internal)e
+(buffer)h(size)0 1346 y(302)95 b(column)46 b(number)g(out)h(of)g(range)
+f(\(1)h(-)h(999\))0 1458 y(304)95 b(attempt)45 b(to)j(move)e(to)h
+(negative)f(file)h(record)f(number)0 1571 y(306)95 b(attempted)45
+b(to)i(read)g(or)g(write)f(a)i(negative)d(number)h(of)i(bytes)e(in)h
+(the)g(FITS)g(file)0 1684 y(307)95 b(illegal)45 b(starting)h(row)h
+(number)f(for)h(table)f(read)h(or)g(write)f(operation)0
+1797 y(308)95 b(illegal)45 b(starting)h(element)g(number)g(for)h(table)
+f(read)h(or)g(write)f(operation)0 1910 y(309)95 b(attempted)45
+b(to)i(read)g(or)g(write)f(character)g(string)g(in)h(non-character)d
+(table)i(column)0 2023 y(310)95 b(attempted)45 b(to)i(read)g(or)g
+(write)f(logical)g(value)g(in)i(non-logical)c(table)j(column)0
+2136 y(311)95 b(illegal)45 b(ASCII)i(table)f(TFORM)h(format)f(code)g
+(for)h(attempted)e(operation)0 2249 y(312)95 b(illegal)45
+b(binary)i(table)f(TFORM)g(format)g(code)h(for)g(attempted)e(operation)
+0 2362 y(314)95 b(value)46 b(for)h(undefined)e(pixels)h(has)h(not)g
+(been)g(defined)0 2475 y(317)95 b(attempted)45 b(to)i(read)g(or)g
+(write)f(descriptor)f(in)i(a)h(non-descriptor)c(field)0
+2588 y(320)95 b(number)46 b(of)h(array)f(dimensions)f(out)i(of)g(range)
+0 2700 y(321)95 b(first)46 b(pixel)g(number)g(is)i(greater)d(than)i
+(the)g(last)g(pixel)f(number)0 2813 y(322)95 b(attempt)45
+b(to)j(set)f(BSCALE)f(or)h(TSCALn)f(scaling)g(parameter)f(=)i(0)0
+2926 y(323)95 b(illegal)45 b(axis)i(length)f(less)h(than)f(1)0
+3152 y(340)h(NOT_GROUP_TABLE)d(340)142 b(Grouping)45
+b(function)h(error)0 3265 y(341)95 b(HDU_ALREADY_MEMBER)0
+3378 y(342)47 b(MEMBER_NOT_FOUND)0 3491 y(343)g(GROUP_NOT_FOUND)0
+3604 y(344)g(BAD_GROUP_ID)0 3717 y(345)g(TOO_MANY_HDUS_TRACKED)0
+3830 y(346)g(HDU_ALREADY_TRACKED)0 3942 y(347)g(BAD_OPTION)0
+4055 y(348)g(IDENTICAL_POINTERS)0 4168 y(349)g(BAD_GROUP_ATTACH)0
+4281 y(350)g(BAD_GROUP_DETACH)0 4507 y(360)g(NGP_NO_MEMORY)665
+b(malloc)46 b(failed)0 4620 y(361)h(NGP_READ_ERR)713
+b(read)46 b(error)h(from)f(file)0 4733 y(362)h(NGP_NUL_PTR)761
+b(null)46 b(pointer)g(passed)g(as)h(an)g(argument.)1575
+4846 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f(of)1575
+4959 y(template)f(file)g(raises)g(this)h(error)0 5072
+y(363)g(NGP_EMPTY_CURLINE)473 b(line)46 b(read)h(seems)f(to)h(be)h
+(empty)e(\(used)1575 5185 y(internally\))0 5297 y(364)h
+(NGP_UNREAD_QUEUE_FULL)281 b(cannot)46 b(unread)g(more)g(then)h(1)g
+(line)g(\(or)g(single)1575 5410 y(line)g(twice\))0 5523
+y(365)g(NGP_INC_NESTING)569 b(too)46 b(deep)h(include)f(file)h(nesting)
+e(\(infinite)1575 5636 y(loop,)h(template)g(includes)f(itself)i(?\))p
+eop end
+%%Page: 130 136
+TeXDict begin 130 135 bop 0 299 a Fi(130)1613 b Fg(CHAPTER)30
+b(12.)112 b(FITSIO)30 b(ERR)m(OR)g(ST)-8 b(A)g(TUS)30
+b(CODES)0 555 y Fe(366)47 b(NGP_ERR_FOPEN)665 b(fopen\(\))45
+b(failed,)h(cannot)g(open)h(template)e(file)0 668 y(367)i(NGP_EOF)953
+b(end)46 b(of)i(file)e(encountered)f(and)i(not)g(expected)0
+781 y(368)g(NGP_BAD_ARG)761 b(bad)46 b(arguments)g(passed.)g(Usually)f
+(means)1575 894 y(internal)h(parser)g(error.)g(Should)g(not)h(happen)0
+1007 y(369)g(NGP_TOKEN_NOT_EXPECT)329 b(token)46 b(not)h(expected)e
+(here)0 1233 y(401)95 b(error)46 b(attempting)f(to)i(convert)f(an)h
+(integer)f(to)h(a)h(formatted)d(character)g(string)0
+1346 y(402)95 b(error)46 b(attempting)f(to)i(convert)f(a)h(real)g
+(value)f(to)i(a)f(formatted)e(character)h(string)0 1458
+y(403)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g(to)h
+(an)g(integer)0 1571 y(404)95 b(attempted)45 b(to)i(read)g(a)g
+(non-logical)e(keyword)h(value)g(as)h(a)h(logical)e(value)0
+1684 y(405)95 b(cannot)46 b(convert)g(a)h(quoted)f(string)g(keyword)g
+(to)h(a)h(real)e(value)0 1797 y(406)95 b(cannot)46 b(convert)g(a)h
+(quoted)f(string)g(keyword)g(to)h(a)h(double)e(precision)f(value)0
+1910 y(407)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string)
+h(as)h(an)h(integer)0 2023 y(408)95 b(error)46 b(attempting)f(to)i
+(read)g(character)e(string)h(as)h(a)h(real)e(value)0
+2136 y(409)95 b(error)46 b(attempting)f(to)i(read)g(character)e(string)
+h(as)h(a)h(double)e(precision)f(value)0 2249 y(410)95
+b(bad)47 b(keyword)e(datatype)h(code)0 2362 y(411)95
+b(illegal)45 b(number)i(of)g(decimal)f(places)g(while)g(formatting)f
+(floating)h(point)g(value)0 2475 y(412)95 b(numerical)45
+b(overflow)g(during)i(implicit)e(datatype)h(conversion)0
+2588 y(413)95 b(error)46 b(compressing)f(image)0 2700
+y(414)95 b(error)46 b(uncompressing)e(image)0 2813 y(420)95
+b(error)46 b(in)h(date)g(or)g(time)g(conversion)0 3039
+y(431)95 b(syntax)46 b(error)g(in)h(parser)f(expression)0
+3152 y(432)95 b(expression)45 b(did)i(not)f(evaluate)g(to)h(desired)f
+(type)0 3265 y(433)95 b(vector)46 b(result)g(too)h(large)f(to)h(return)
+f(in)i(array)0 3378 y(434)95 b(data)46 b(parser)g(failed)g(not)h(sent)g
+(an)g(out)g(column)0 3491 y(435)95 b(bad)47 b(data)f(encounter)f(while)
+i(parsing)f(column)0 3604 y(436)95 b(parse)46 b(error:)g(output)g(file)
+h(not)g(of)g(proper)f(type)0 3830 y(501)95 b(celestial)45
+b(angle)h(too)h(large)g(for)f(projection)0 3942 y(502)95
+b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)f(value)0
+4055 y(503)95 b(error)46 b(in)h(celestial)e(coordinate)g(calculation)0
+4168 y(504)95 b(unsupported)44 b(type)j(of)g(celestial)e(projection)0
+4281 y(505)95 b(required)45 b(celestial)g(coordinate)g(keywords)h(not)h
+(found)0 4394 y(506)95 b(approximate)44 b(wcs)j(keyword)f(values)g
+(were)h(returned)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF