[xiph-commits] r18286 - trunk/spectrum

xiphmont at svn.xiph.org xiphmont at svn.xiph.org
Wed May 16 02:59:12 PDT 2012


Author: xiphmont
Date: 2012-05-16 02:59:11 -0700 (Wed, 16 May 2012)
New Revision: 18286

Modified:
   trunk/spectrum/analyzer.h
   trunk/spectrum/fisharray.h
   trunk/spectrum/spec_panel.c
   trunk/spectrum/spec_plot.c
   trunk/spectrum/spec_plot.h
   trunk/spectrum/spectrum-gtkrc
   trunk/spectrum/spectrum.c
   trunk/spectrum/version.h
   trunk/spectrum/wave_panel.c
   trunk/spectrum/waveform-gtkrc
Log:
More layout rearrangement, move display-specific buttons to top of plot



Modified: trunk/spectrum/analyzer.h
===================================================================
--- trunk/spectrum/analyzer.h	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/analyzer.h	2012-05-16 09:59:11 UTC (rev 18286)
@@ -78,7 +78,7 @@
 
 extern int eventpipe[2];
 
-extern void panel_go(int argc,char *argv[], int bold);
+extern void panel_go(int argc,char *argv[]);
 extern int input_load();
 extern void *process_thread(void *dummy);
 extern void process_dump(int mode);

Modified: trunk/spectrum/fisharray.h
===================================================================
--- trunk/spectrum/fisharray.h	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/fisharray.h	2012-05-16 09:59:11 UTC (rev 18286)
@@ -1,278 +1,276 @@
 /* XPM */
-static char * fisharray[] = {
-"532 25 250 2",
+static char * fisharray_xpm[] = {
+"532 25 248 2",
 "  	c None",
-". 	c #000000",
-"+ 	c #00004F",
-"@ 	c #001416",
-"# 	c #00136A",
-"$ 	c #00196E",
-"% 	c #00205F",
-"& 	c #002727",
-"* 	c #002074",
-"= 	c #00246D",
-"- 	c #002478",
-"; 	c #002878",
-"> 	c #002E77",
-", 	c #00307E",
-"' 	c #00338A",
-") 	c #00377E",
-"! 	c #193648",
-"~ 	c #003B88",
-"{ 	c #003D77",
-"] 	c #343913",
-"^ 	c #004492",
-"/ 	c #00468C",
-"( 	c #004887",
-"_ 	c #134663",
-": 	c #064C73",
-"< 	c #244859",
-"[ 	c #004E8D",
-"} 	c #17497C",
-"| 	c #004D9E",
-"1 	c #3B417D",
-"2 	c #005398",
-"3 	c #005794",
-"4 	c #3C5144",
-"5 	c #47487E",
-"6 	c #015F8F",
-"7 	c #005E9D",
-"8 	c #475253",
-"9 	c #4B5439",
-"0 	c #00639A",
-"a 	c #0062A7",
-"b 	c #535730",
-"c 	c #365B63",
-"d 	c #485288",
-"e 	c #006CA2",
-"f 	c #006F9D",
-"g 	c #006FB3",
-"h 	c #A45300",
-"i 	c #575C8A",
-"j 	c #546391",
-"k 	c #297383",
-"l 	c #7C6720",
-"m 	c #64648D",
-"n 	c #5E688F",
-"o 	c #0B7FB5",
-"p 	c #0C819F",
-"q 	c #9F6D00",
-"r 	c #547691",
-"s 	c #058AB4",
-"t 	c #577C5B",
-"u 	c #18889F",
-"v 	c #767454",
-"w 	c #7C793C",
-"x 	c #0791AD",
-"y 	c #717495",
-"z 	c #747773",
-"A 	c #B27400",
-"B 	c #67863F",
-"C 	c #78824F",
-"D 	c #6C7EA4",
-"E 	c #8E8423",
-"F 	c #538F71",
-"G 	c #03A1B3",
-"H 	c #AC8203",
-"I 	c #898276",
-"J 	c #109FC3",
-"K 	c #C27E00",
-"L 	c #868297",
-"M 	c #6E9243",
-"N 	c #21A2B8",
-"O 	c #8D898D",
-"P 	c #C38800",
-"Q 	c #959142",
-"R 	c #629D67",
-"S 	c #83974B",
-"T 	c #819295",
-"U 	c #14AFC8",
-"V 	c #3EA899",
-"W 	c #11B2C2",
-"X 	c #0CB8C2",
-"Y 	c #B39162",
-"Z 	c #9E9773",
-"` 	c #34B1AA",
-" .	c #A19D3E",
-"..	c #FF8800",
-"+.	c #F48C00",
-"@.	c #16BCBE",
-"#.	c #AAA121",
-"$.	c #FF8E00",
-"%.	c #32B8BD",
-"&.	c #5BB579",
-"*.	c #9AA93D",
-"=.	c #86A3B8",
-"-.	c #16C2DA",
-";.	c #FE9400",
-">.	c #FF9400",
-",.	c #F29800",
-"'.	c #ED9A00",
-").	c #F99700",
-"!.	c #4CBC94",
-"~.	c #44BFA2",
-"{.	c #24C5C8",
-"].	c #2EC2CE",
-"^.	c #E3A100",
-"/.	c #EA9F00",
-"(.	c #FD9A00",
-"_.	c #CFA708",
-":.	c #F09E00",
-"<.	c #FE9A00",
-"[.	c #C3A82D",
-"}.	c #38C2C7",
-"|.	c #CDA547",
-"1.	c #DFA700",
-"2.	c #FB9F00",
-"3.	c #29CAC4",
-"4.	c #E5A517",
-"5.	c #1CD0C9",
-"6.	c #D8AC0D",
-"7.	c #C9B10D",
-"8.	c #E4A72D",
-"9.	c #D8AA39",
-"0.	c #6DC388",
-"a.	c #3DCCC7",
-"b.	c #D9AF1C",
-"c.	c #D9AE2C",
-"d.	c #FDA900",
-"e.	c #72BFC3",
-"f.	c #B1BC2D",
-"g.	c #CCB524",
-"h.	c #CEAF62",
-"i.	c #BDB938",
-"j.	c #33D3CD",
-"k.	c #7DBEC5",
-"l.	c #F2AE0E",
-"m.	c #B5BD3B",
-"n.	c #A8BF4F",
-"o.	c #7FC77D",
-"p.	c #C0BC2C",
-"q.	c #FBAF00",
-"r.	c #31D7C8",
-"s.	c #F9B100",
-"t.	c #34D5E3",
-"u.	c #D0B557",
-"v.	c #8ACA62",
-"w.	c #8CC0C2",
-"x.	c #34D8D9",
-"y.	c #A2C462",
-"z.	c #EFB517",
-"A.	c #F0B701",
-"B.	c #FBB400",
-"C.	c #41D7C9",
-"D.	c #EDB42C",
-"E.	c #8DCA73",
-"F.	c #56D3C0",
-"G.	c #A5C47C",
-"H.	c #ACC757",
-"I.	c #4BD9C3",
-"J.	c #9AC2C5",
-"K.	c #D8BA77",
-"L.	c #87D378",
-"M.	c #64D8AF",
-"N.	c #C9BE9E",
-"O.	c #F5C011",
-"P.	c #3EE3D4",
-"Q.	c #EEBD4D",
-"R.	c #94D473",
-"S.	c #FDBF0E",
-"T.	c #BDCC4B",
-"U.	c #FFC000",
-"V.	c #9ED26D",
-"W.	c #B3C89D",
-"X.	c #FBBF23",
-"Y.	c #C2C2AE",
-"Z.	c #EAC51C",
-"`.	c #C2C2B9",
-" +	c #6DDDA8",
-".+	c #4FE3C8",
-"++	c #A9D362",
-"@+	c #F0C337",
-"#+	c #79DE91",
-"$+	c #FDC50C",
-"%+	c #F3C05B",
-"&+	c #B4D459",
-"*+	c #94D988",
-"=+	c #9DD2B3",
-"-+	c #42E8E8",
-";+	c #D5CE39",
-">+	c #DEC38F",
-",+	c #62E5AC",
-"'+	c #57E4DF",
-")+	c #E2CD33",
-"!+	c #8ADE91",
-"~+	c #EACD21",
-"{+	c #EDC56D",
-"]+	c #7AE2A2",
-"^+	c #FFC91B",
-"/+	c #44EFD7",
-"(+	c #38F2E4",
-"_+	c #FFCA27",
-":+	c #FACD1C",
-"<+	c #FDCE11",
-"[+	c #FBCE28",
-"}+	c #EFCA7D",
-"|+	c #5CEED0",
-"1+	c #F2CE59",
-"2+	c #8DE891",
-"3+	c #52F3D4",
-"4+	c #5CEFE2",
-"5+	c #67EFC3",
-"6+	c #58F2DC",
-"7+	c #EECE8C",
-"8+	c #66EFD8",
-"9+	c #A7E784",
-"0+	c #87EEA1",
-"a+	c #F3D36F",
-"b+	c #D0D4D0",
-"c+	c #9EEA8E",
-"d+	c #42FDE3",
-"e+	c #77F2B9",
-"f+	c #54F7F4",
-"g+	c #58F9D9",
-"h+	c #49FDEB",
-"i+	c #7FF3B1",
-"j+	c #48FDF3",
-"k+	c #54FEE5",
-"l+	c #6EF9D4",
-"m+	c #68FADC",
-"n+	c #62FBE4",
-"o+	c #5CFEEE",
-"p+	c #5EFFDF",
-"q+	c #F2DAAA",
-"r+	c #66FFD8",
-"s+	c #DADDD8",
-"t+	c #F3DC9E",
-"u+	c #77FED0",
-"v+	c #F0DEBD",
-"w+	c #E8E9E4",
-"x+	c #F7EBCC",
-"y+	c #F9F4E2",
-"z+	c #F8F7EB",
-"A+	c #F5F9F5",
-"                          j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j       
                                               j j                           ",
-"                        1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1     
                                             1 * * 1                         ",
-"                      m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             n $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ n                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m   
                                           m $ , , $ m                       ",
-"                    5 - , , , , - 5                                         5 - ; , , , - 5                                         5 - , ; , , - 5                                         5 - , , , , - 5                                         5 - , , ; , - 5                                         5 - , , , ; - 5                                         5 - , , , , - 5                                         5 ; , , , , - 5                                         5 - , , ; , - 5                                         5 - , , , , - 5                                         5 - , ; , , - 5                                         5 - , , , , ; 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5 
                                         5 - , , , , - 5                     ",
-"                  n $ ~ 3 e 0 2 , $ n                                     n $ , ~ [ 7 / , $ n                                     n $ , 3 0 0 , , $ n                                     n $ , , ( ( , , $ n                                     n $ , , 0 0 3 , $ n                                     n $ , / 7 [ ~ , $ n                                     n $ , 2 0 e 3 ~ $ n                                     n $ ~ 2 0 0 ( , $ n                                     n $ , , / 3 ~ ' $ n                                     n $ , , / / , , $ n                                     n $ ' ~ 3 / , , $ n                                     n $ , ( 0 0 2 ~ $ n                                     n $ ~ 3 e 0 2 , $ n                                     n $ ~ 3 e 0 2 , $ n                                     n $ ~ 3 e 0 2 , $ n                                     n $ ~ 3 e 0 2 , $ n                                     n $ ~ 3 e 0 2 , $ n                                     n $ ~ 3 e 0 2 , $ 
 n                                     n $ ~ 3 e 0 2 , $ n                   ",
-"                d - o -+6+m+m+4+t.o - d                                 d - ' a ].8+4+'+N | - d                                 d - , 0 I.3+3+C.( , - d                                 d - , , [ a.a.[ , , - d                                 d - , ( C.3+3+I.0 , - d                                 d - | N '+4+8+].a ' - d                                 d - o t.4+m+m+6+-+o - d                                 d - f ].|+g+g+8+U ~ - d                                 d - , , f }.6+I.6 , - d                                 d - , , , W W , , , - d                                 d - , 6 I.6+}.f , , - d                                 d - ~ U 8+g+g+|+].f - d                                 d - o -+6+m+m+4+t.o - d                                 d - o -+6+m+m+4+t.o - d                                 d - o -+6+m+m+4+t.o - d                                 d - o -+6+m+m+4+t.o - d                                 d - o -+6+m+m+4+t.o - d                                 d - o -+6+m+m+4+t.o 
 - d                                 d - o -+6+m+m+4+t.o - d                 ",
-"              O { a.m+g+k+p+r+r+r+n+g # n                             O } k V 5+8+n+k+p+m+'+^ # n                             n % c < V *+*+e+r+3.[ , # n                             n # , , c =+!+!+=+c , , # n                             n # , [ 3.r+e+*+*+V < c % n                             n # ^ '+m+p+k+n+8+5+V k } O                             n # g n+r+r+r+p+k+g+m+a.{ O                             n # 0 a.l+r+p+k+n+n+].6 = m                             n # , , / {.p+p+m+|+x } # n                             n # , , ) k C.C.k ) , , # n                             n # } x |+m+p+p+{./ , , # n                             m = 6 ].n+n+k+p+r+l+a.0 # n                             O { a.m+g+k+p+r+r+r+n+g # n                             O { a.m+g+k+p+r+r+r+n+g # n                             O { a.m+g+k+p+r+r+r+n+g # n                             O { a.m+g+k+p+r+r+r+n+g # n                             O { a.m+g+k+p+r+r+r+n+g # n                             O { a.m+g+k+p+r+r+r+n+
 g # n                             O { a.m+g+k+p+r+r+r+n+g # n               ",
-"            t+v+9.+.'./.m.e+h+p+r+r+(+s - i                         7+>+x+x+l.).:.i.e+j+p+r+U ' ; i                         i ; Z y+t+8.x+x+c.r+r+{.~ , - i                         i - , , r z+A+x+x+A+z+r , , - i                         i - , ~ {.r+r+c.x+x+8.t+y+Z ; i                         i ; ' U r+p+j+e+i.:.).l.x+x+>+7+                        i - s (+r+r+p+h+e+m./.'.+.9.v+t+                        i - / %.k+p+j+h+5+g.6.6.b.h.>+Z                         i / / , 3 }.m+r+p+V.g.u.w+r - i                         i - , , , b+u..+.+u.s+, , , - i                         i - r w+u.g.V.p+r+m+}.3 , / / i                         Z >+h.b.6.6.g.5+h+j+p+k+%./ - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i                         D.4.4.+.'./.m.e+h+p+r+r+
 (+s - i                         D.4.4.+.'./.m.e+h+p+r+r+(+s - i             ",
-"          v+A+b+z+4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            q+}+z+b+s+q+s.2.$.'.H.n+k+p+N , # n e.e.                m # , q+`.s+q+s+Y.x+p.u+3+p e e # m                     m # , , , T b+] x+x+] b+T , , , # m                     m # e e p 3+u+p.x+Y.s+q+s+`.q+, # m                 e.e.n # , N p+k+n+H.'.$.2.s.q+s+b+z+}+q+            e.e.    m # -.p+r+r+k+]+g.).$.<.q.4.z+b+A+v+              w.{.J.m # , J f+h+j+]+i.;.$.;.d.%+z+s+Y.L                     m r+j.j.~ p x.p+!+i.).2.x+w+w+, # m                     m # , , , T y+2./+/+2.y+T , , , # m                     m # , w+w+x+2.).i.!+p+x.p ~ j.j.r+m                     L Y.s+z+%+d.;.$.;.i.]+j+h+f+J , # m J.{.w.              |.c.c.9.4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            4. at +1+Q.4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            @+1+1+1+4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.            4. at +1+Q.4.q.<.$.).g.]+k+r+
 r+p+-.# m     e.e.            |.c.c.9.4.q.<.$.).g.]+k+r+r+p+-.# m     e.e.  ",
-"        s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        K.X.D.A+z 8 x+z.:+2.).$.g.o+k+6+2 / s r+r+3.            m - , , x+I Q v+v b A+1.6.]+I.r+r+f - m                 m - , , , , w A+A+t+t+A+A+w , , , , - m                 m - f r+r+I.]+6.1.A+b v v+Q I x+, , - m             3.r+r+s / 2 6+k+o+g.$.).2.:+z.x+8 z A+D.X.K.        3.r+d+j+6 - 2 n+p+p+o+V.).>.<.<.^+^+{+w+. `.z+s.            %.r+r.G / g x.h+j+!+).>.;.).s.[+{+s+. s+K.m                 m - C.r+k+j.{.h+R.,.;.;.O.|.. w+l , - m                 m - , , , , =.{+>./+/+>.%+=., , , , - m                 m - , l w+. |.O.;.;.,.R.h+{.j.k+r+C.- m                 m K.s+. s+{+[+s.).;.>.).!+j+h+x.g / G r.r+%.            s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        s.y+P P K.{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        ^.1+1+1+1+P ^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        s.1+1+1+1+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        ^.1+1+1+1+P ^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.        s.y+P P K.{+^+^+<.<.>.).V.o+
 p+p+n+2 - 6 j+d+r+3.        s.z+`.. w+{+^+^+<.<.>.).V.o+p+p+n+2 - 6 j+d+r+3.",
-"    N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.      W.q.S.X.x+A+w+7+$+[+S.;.<.$.g. +6+U X p+r+r+5.          m # , [ f G.n.)+Q.z+A+q+O.<.:.^.0+r+f , # m             m # , , , , ) [. at +G.G.G.G.@+[.) , , , , # m             m # , f r+0+^.:.<.O.q+A+z+Q.)+n.G.f [ , # m           5.r+r+p+X U 6+ +g.$.<.;.S.[+$+7+w+A+x+X.S.q.W.      3.r+r+r+k+t.-.h+g+!+g.;.(.<.;.s.[+:+D.z+s+A+q+O.q.N.        3.m+g+6+x.3.h+,+g.).>.).;.2.^+[+ at +v+s+A+D.! m             m # , W p+k+k+ +H.,.).).).q.[+h.x+b.: , # m             m # , , , , , C S.>.]+]+>.^+C , , , , , # m             m # , : b.x+h.[+q.).).).,.H. +k+k+p+W , # m             m ! D.A+s+v+ at +[+^+2.;.).>.).g.,+h+3.x.6+g+m+3.        N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.    N.q.O.q+x+t+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.    N.q.O.9.c.c.9.D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.    N.q.z.%+1+1+1+8.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.    N.q.O.9.c.c.9.D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.    N.q.O.q+x+t+z+D.:+[+s.;.<.(.;.g.
 !+g+h+-.t.k+r+r+r+3.    N.q.O.q+A+s+z+D.:+[+s.;.<.(.;.g.!+g+h+-.t.k+r+r+r+3.",
-"w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.    X X T.<+$+z.7+}+X.:+[+^+;.>.,.;.;.6.n.i+r+r+g+w.        y - , , f r+r+r+ +_+Q.%+_+_+S.d.6.++r+f , , - y         y - , , , , , { b.)+5+u+u+5+)+b.{ , , , , , - y         y - , , f r+++6.d.S._+_+%+Q._+ +r+r+r+f , , - y         w.g+r+r+i+n.6.;.;.,.>.;.^+[+:+X.}+7+z.$+<+T.X X     w.3+r+r+p+R.p.7.).<.<.<.<.<.>.^+_+:+$+Q.v+7+l.:+$+&.X w.    e.l+r+h+ +A.1.).;.;.,.<.).2.[+^+[+_+v+7+1.o.x y         y - , , f r+k+T.<.$.).).).).;.[+a+ at +[+p , , - y         y - , , , , , , Q ^+>.!+!+>.^+Q , , , , , , - y         y - , , p [+ at +a+[+;.).).).).$.<.T.k+r+f , , - y         y x o.1.7+v+_+[+^+[+2.).<.,.;.;.).1.A. +h+r+l+e.    w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+P Q.1+9.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.
 <.).7.p.R.p+r+r+3+w.w.X &.$+:+l.7+v+Q.$+:+_+^+>.<.<.<.<.<.).7.p.R.p+r+r+3+w.",
-"3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.    %.u+k+r.T.$+:+O.$+:+[+^+~+R.!+,+_.(.;.).]+r+r+3.}         + , , , r.r+r.r.3+ + at +z.g.T.*+E.'.T.r+p , , , +         + , , , , p u p g.M..+r.r..+M.g.p u p , , , , +         + , , , p r+T.'.E.*+T.g.z. at + +3+r.r.r+r., , , +         } 3.r+r+]+).;.(._.,+!+R.~+^+[+:+$+O.:+$+T.r.k+u+%.    C.r+r+p+R.$.;.(.<.:.,+#+L.v.)+^+_+:+<+O.$+:+:+0.(+u+3.      j.r+p+e+'.).).).;.:.L. +!+)+:+^+:+O.:+V.l+.+=         + , , , , j.p+!+<.<.).).).,.g.e+!+[+!+I., , , +         + , , , , , a.a.o.^+(.!+!+(.^+o.%.a., , , , , +         + , , , I.!+[+!+e+g.,.).).).<.<.!+p+j., , , , +         = .+l+V.:+O.:+^+:+)+!+ +L.:.;.).).).'.e+p+r+j.      3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+6.6.O.:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.
 <.(.;.$.R.p+r+r+C.  3.u+(+0.:+:+$+O.<+:+_+^+)+v.L.#+,+:.<.(.;.$.R.p+r+r+C.  ",
-"w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.        X /+k+X ;+^+[+[+[+^+$+c+o+f+#+).<.;./.5+r+r.- y         y - , , r.r+. . . @.M.[+e+r+r+6+/.T.C., , , - y         y - , , , u+u+e+)+l+& . . & l+Z.e+u+u+, , , - y         y - , , , C.T./.6+r+r+e+[+M. at .. . . r+r., , - y         y - r.r+5+/.;.<.).#+f+o+c+$+^+[+[+[+^+;+X k+/+X         5.r+p+r+,.<.<.<.;.f.k+n+n+i+:+^+_+_+_+^+^+0.j+p+X w.        j.r+l+1.).<.>.;.,.g.o+j+0+:+_+^+^+V.u+C.- y         y - , , , X r+j+6.<.<.;.;.,.P r+j+;+u+f , , - y         y - , , , , C.r+c+^+(.!+!+(.^+c+r+C., , , , - y         y - , , f u+;+j+r+P ,.;.;.<.<.6.j+r+X , , , - y         y - C.u+V.^+^+_+:+0+j+o+g.,.;.>.<.).1.l+r+j.        w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.
 <.<.<.,.r+p+r+5.    w.X p+j+0.^+^+_+_+_+^+:+i+n+n+k+f.;.<.<.<.,.r+p+r+5.    ",
-"      j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          D p h+M.~+^+[+^+^+&+k+m+*+,.;.;.).H.r+r+r.m             m # , [ r.@ . . @ !.)+5+3+3+E.1.H.3.; , # m             m # , , W u+e+y.G . . . . G y.e+u+W , , # m             m # , ; 3.H.1.E.3+3+5+)+!.@ . . @ r.[ , # m             m r.r+r+H.).;.;.,.*+m+k+&+^+^+[+^+~+M.h+p D           5.r+r+o+i.;.<.<.).).p.5+d+k+2+:+_+_+_+^+&+(+j.              j.r+p+!+1.).<.;.).;.*.h+o+9+_+^+^+c+3.> m             m # , , X r+l+H.<.).;.;.).P *+j+)+F., , # m             m # , , , u N c S.>.!+!+>.S.c N u , , , # m             m # , , F.)+j+*+P ).;.;.).<.H.l+r+X , , # m             m > 3.c+^+^+_+9+o+h+*.;.).;.<.).1.!+p+r+j.              j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).
 <.<.;.i.o+r+r+5.          j.(+&+^+_+_+_+:+2+k+d+5+p.).).<.<.;.i.o+r+r+5.    ",
-"    X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.            X g+h+&+^+[+[+[+)+1./...(.(.).6.l+r+r+r.                m - , , X I.I.X ~._+[+!+]+<.H.r+X , - m                 m - , , p ~.y.l+.+I.I..+u+y.~.p , , - m                 m - , X r+H.<.]+!+[+_+~.X I.I.X , , - m                 r.r+r+l+6.).(.(.../.1.)+[+[+[+^+&+h+g+X             5.r+r+p+5+:.;.>.>.>.>.)./.^.Z.:+_+_+_+^+0+p+X X             j.r+r+j+*+,.>.>.<.<.).'./.B.^+^+^+0+u+`                 m - , X r+l+]+2.(.>.).).).d.S.&+u+p - m                 m - , , , , , q.>.!+!+>.q., , , , , - m                 m - p u+&+S.d.).).).>.(.2.]+l+r+X , - m                 ` u+0+^+^+^+B./.'.).<.<.>.>.,.*+j+r+r+j.            X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.
 >.;.:.5+p+r+r+5.        X X p+0+^+_+_+_+:+Z.^./.).>.>.>.>.;.:.5+p+r+r+5.    ",
-"  w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.          k.5.5.I.)+<+<+<+U.(.<.6.H.R 4 F !.k+r+r+{.                  m # , V |+|+0.)+S.s.'./.++u+/+e # m                     m # , , ) Q H..+|+|+.+H.Q ) , , # m                     m # e /+u+++/.'.s.S.)+0.|+|+V , # m                   {.r+r+k+!.F 4 R H.6.<.(.U.<+<+<+)+I.5.5.k.          5.r+r+r+p+5+V.v.M B n.g.'.$.(.q.$+<+<+$+&+.+r.r.w.          j.r+r+r+l+R.m.#.i.i.*+b.).,./.A.S.V.r.e.                  m # X r+l+h+R.i.g.g.y.^.'.1.t f * m                     m # , , , , K '.!+!+'.K , , , , # m                     m * f t 1.'.^.y.g.g.i.R.h+l+r+X # m                   e.r.V.S.A./.,.).b.*+i.i.#.m.R.l+r+r+r+j.          w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M 
 v.V.5+p+r+r+r+5.      w.r.r..+&+$+<+<+$+q.(.$.'.g.n.B M v.V.5+p+r+r+r+5.    ",
-"            Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                T 4 A P H q w M.-+t.a , , a P.P.P.k.                    i - : E E H ).K A *.3+p G G ; i                         i - , , ,  .b.l.l.b. ., , , - i                         i ; G G p 3+*.A K ).H E E : - i                     k.P.P.P.a , , a t.-+M.w q H P A 4 T                 {.3+g+g+P.W a ' , ^ t.f+f+]+S q A A h Y                     3.6+6+.+X G | g ].o -+f+{.E l b 9 I                         i G l+l+|+8+}.J J f+C.b ) , - i                         i - , , , {  +#+#+ +{ , , , - i                         i - , ) b C.f+J J }.8+|+l+l+G i                         I 9 b l E {.f+-+o ].g | G X .+6+6+3.                    Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , 
 ' a W P.g+g+3+{.                Y h A A q S ]+f+f+t.^ , ' a W P.g+g+3+{.    ",
-"              n # , , , | a 7 ^ , , , # n J.J.J.J.                    m = , > , ' ' | ^ , , , # n                             n # , < 4 4 _ 3 3 3 ~ , # n                             n # , , [ 6 < 8 6 [ , , # n                             n # , ~ 3 3 3 _ 4 4 < , # n                             n # , , , ^ | ' ' , > , = m                     J.J.J.J.n # , , , ^ 7 a | , , , # n                         k.k.k.) , , , / ~ 3 7 ~ , , # n                             n u {.3 , / , 2 0 2 , , # n                             n # , , ) f @. at .f ) , , # n                             n # , , 2 0 2 , / , 3 {.u n                             n # , , ~ 7 3 ~ / , , , ) k.k.k.                        n # , , , | a 7 ^ , , , # n J.J.J.J.                    n # , , , | a 7 ^ , , , # n J.J.J.J.                    n # , , , | a 7 ^ , , , # n J.J.J.J.                    n # , , , | a 7 ^ , , , # n J.J.J.J.                    n # , , , | a 7 ^ , , , # n J.J.J.J.                    n # , , , | a 7 ^ , , 
 , # n J.J.J.J.                    n # , , , | a 7 ^ , , , # n J.J.J.J.      ",
-"                d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , ( ( , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , - d                                 d - , , , , , , , , 
 - d                                 d - , , , , , , , , - d                 ",
-"                  n $ , , , , , , $ n                                     n # , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , # n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ n                                     n $ , , , , , , $ 
 n                                     n $ , , , , , , $ n                   ",
-"                    5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5                                         5 - , , , , - 5 
                                         5 - , , , , - 5                     ",
-"                      m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m                                             m $ , , $ m   
                                           m $ , , $ m                       ",
-"                        1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1                                                 1 * * 1     
                                             1 * * 1                         ",
-"                          j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j                                                     j j       
                                               j j                           "};
+". 	c #546392",
+"+ 	c #3B417D",
+"@ 	c #002174",
+"# 	c #65658D",
+"$ 	c #001A6E",
+"% 	c #002F7E",
+"& 	c #5E6990",
+"* 	c #47497F",
+"= 	c #002578",
+"- 	c #002878",
+"; 	c #003A88",
+"> 	c #005794",
+", 	c #006BA2",
+"' 	c #00629A",
+") 	c #005298",
+"! 	c #00508E",
+"~ 	c #005D9E",
+"{ 	c #00458C",
+"] 	c #004A88",
+"^ 	c #00348A",
+"/ 	c #485388",
+"( 	c #0B7FB5",
+"_ 	c #42E6E8",
+": 	c #58F2DA",
+"< 	c #69F9DC",
+"[ 	c #5DEFE3",
+"} 	c #35D4E3",
+"| 	c #0063A8",
+"1 	c #2EC1CE",
+"2 	c #67EFD7",
+"3 	c #58E4DF",
+"4 	c #21A2B9",
+"5 	c #004E9E",
+"6 	c #4BD9C3",
+"7 	c #53F3D3",
+"8 	c #41D7CB",
+"9 	c #3ECCC7",
+"0 	c #00709E",
+"a 	c #5CEED1",
+"b 	c #59F9D9",
+"c 	c #14B1C8",
+"d 	c #39C2C7",
+"e 	c #015F8F",
+"f 	c #11B4C3",
+"g 	c #8D898D",
+"h 	c #003E78",
+"i 	c #54FEE4",
+"j 	c #60FEDF",
+"k 	c #68FED9",
+"l 	c #63FBE3",
+"m 	c #006EB4",
+"n 	c #00146A",
+"o 	c #17497D",
+"p 	c #297383",
+"q 	c #3EA898",
+"r 	c #67EFC4",
+"s 	c #004592",
+"t 	c #002060",
+"u 	c #365C64",
+"v 	c #24495A",
+"w 	c #94D989",
+"x 	c #78F2BA",
+"y 	c #29CBC5",
+"z 	c #9ED2B4",
+"A 	c #8ADE92",
+"B 	c #6FF9D3",
+"C 	c #00246E",
+"D 	c #24C6C8",
+"E 	c #0790AD",
+"F 	c #00387E",
+"G 	c #F0DEAC",
+"H 	c #EFE1C5",
+"I 	c #D4AE54",
+"J 	c #EF9117",
+"K 	c #F3A715",
+"L 	c #F3AB11",
+"M 	c #B9C050",
+"N 	c #4AFCEA",
+"O 	c #38F2E2",
+"P 	c #0589B5",
+"Q 	c #575C8B",
+"R 	c #EBD29B",
+"S 	c #DEC89E",
+"T 	c #F5ECD3",
+"U 	c #E8B230",
+"V 	c #F29F1C",
+"W 	c #F3A817",
+"X 	c #C1BD4D",
+"Y 	c #4AFCF2",
+"Z 	c #A5A083",
+"` 	c #F8F4E6",
+" .	c #DEAB4A",
+"..	c #D4B24A",
+"+.	c #547792",
+"@.	c #F8F7EE",
+"#.	c #F5F9F5",
+"$.	c #32B9BE",
+"%.	c #D2BE38",
+"&.	c #E5B81B",
+"*.	c #DAB534",
+"=.	c #CDB477",
+"-.	c #A3D177",
+";.	c #CFB96D",
+">.	c #EAEBE7",
+",.	c #D0D4D0",
+"'.	c #4FE3C9",
+").	c #DBDDD9",
+"!.	c #E6B84A",
+"~.	c #E0A934",
+"{.	c #F4B520",
+"].	c #F2A020",
+"^.	c #F09520",
+"/.	c #79E1A0",
+"(.	c #16C1DA",
+"_.	c #73BEC3",
+":.	c #EFDBB5",
+"<.	c #EBCE8F",
+"[.	c #F3B51F",
+"}.	c #F3A61F",
+"|.	c #B0C76B",
+"1.	c #C7C7C1",
+"2.	c #C6C6B6",
+"3.	c #C9C43D",
+"4.	c #79FDD0",
+"5.	c #0C82A0",
+"6.	c #819295",
+"7.	c #4F5620",
+"8.	c #8CC0C2",
+"9.	c #9BC3C5",
+"0.	c #10A0C4",
+"a.	c #55F7F5",
+"b.	c #F19B1F",
+"c.	c #F4AC22",
+"d.	c #EDC371",
+"e.	c #878397",
+"f.	c #33D3CD",
+"g.	c #35D7D9",
+"h.	c #45EFD9",
+"i.	c #CBAB5F",
+"j.	c #E9C453",
+"k.	c #ECD070",
+"l.	c #E8C266",
+"m.	c #000000",
+"n.	c #E9C881",
+"o.	c #F4C73C",
+"p.	c #F19B21",
+"q.	c #5DFDEC",
+"r.	c #44FCE4",
+"s.	c #D7BE89",
+"t.	c #F1C141",
+"u.	c #747773",
+"v.	c #475253",
+"w.	c #E6B738",
+"x.	c #F0CC3C",
+"y.	c #928D84",
+"z.	c #A49F50",
+"A.	c #858363",
+"B.	c #686C40",
+"C.	c #F0B70C",
+"D.	c #8D8A49",
+"E.	c #32D6C9",
+"F.	c #03A0B3",
+"G.	c #F1CB47",
+"H.	c #94D474",
+"I.	c #F3A317",
+"J.	c #EBC233",
+"K.	c #917B2D",
+"L.	c #85A2B7",
+"M.	c #D79B0B",
+"N.	c #F2AE0C",
+"O.	c #CCC4AA",
+"P.	c #B8CAA4",
+"Q.	c #F2BE30",
+"R.	c #F2C62E",
+"S.	c #6DDDA7",
+"T.	c #0CB7C2",
+"U.	c #1CD0C9",
+"V.	c #AAC587",
+"W.	c #ADC064",
+"X.	c #DDCA4F",
+"Y.	c #88EEA3",
+"Z.	c #C9B141",
+"`.	c #63E5AC",
+" +	c #193649",
+".+	c #064C74",
+"++	c #86915D",
+"@+	c #5BB579",
+"#+	c #F5CA45",
+"$+	c #D9C019",
+"%+	c #C0CB63",
+"&+	c #F2CC32",
+"*+	c #7FF3B0",
+"=+	c #717495",
+"-+	c #AFD175",
+";+	c #F2BD1A",
+">+	c #7FC77D",
+",+	c #EED382",
+"'+	c #6DC387",
+")+	c #8BCA64",
+"!+	c #88D379",
+"~+	c #7ADE92",
+"{+	c #E3CA3F",
+"]+	c #DFB715",
+"^+	c #000050",
+"/+	c #8ECA74",
+"(+	c #1888A0",
+"_+	c #64D8AE",
+":+	c #BCC73D",
+"<+	c #D1CD53",
+"[+	c #9DEA8E",
+"}+	c #16BCBE",
+"|+	c #002828",
+"1+	c #E2C53C",
+"2+	c #B8D270",
+"3+	c #8EE892",
+"4+	c #6C7EA4",
+"5+	c #001416",
+"6+	c #4CBC93",
+"7+	c #AAC575",
+"8+	c #A8B64A",
+"9+	c #A8E785",
+"0+	c #002D78",
+"a+	c #57D3C0",
+"b+	c #EF901F",
+"c+	c #45BFA1",
+"d+	c #34B2AA",
+"e+	c #73924A",
+"f+	c #779C4C",
+"g+	c #7DBDC5",
+"h+	c #F4C024",
+"i+	c #639D68",
+"j+	c #3C5244",
+"k+	c #538F71",
+"l+	c #BCB42E",
+"m+	c #577D5C",
+"n+	c #D5900B",
+"o+	c #B49972",
+"p+	c #A95E0D",
+"q+	c #C8870A",
+"r+	c #B8810A",
+"s+	c #8FA458",
+"t+	c #3FE3D5",
+"u+	c #C2960E",
+"v+	c #A29830",
+"w+	c #B0AC4C",
+"x+	c #5E684A",
+"y+	c #134663",
+"                          . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .       
                                               . .                           ",
+"                        + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +     
                                             + @ @ +                         ",
+"                      # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             & $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ &                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #   
                                           # $ % % $ #                       ",
+"                    * = % % % % = *                                         * = - % % % = *                                         * = % - % % = *                                         * = % % % % = *                                         * = % % - % = *                                         * = % % % - = *                                         * = % % % % = *                                         * - % % % % = *                                         * = % % - % = *                                         * = % % % % = *                                         * = % - % % = *                                         * = % % % % - *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = * 
                                         * = % % % % = *                     ",
+"                  & $ ; > , ' ) % $ &                                     & $ % ; ! ~ { % $ &                                     & $ % > ' ' % % $ &                                     & $ % % ] ] % % $ &                                     & $ % % ' ' > % $ &                                     & $ % { ~ ! ; % $ &                                     & $ % ) ' , > ; $ &                                     & $ ; ) ' ' ] % $ &                                     & $ % % { > ; ^ $ &                                     & $ % % { { % % $ &                                     & $ ^ ; > { % % $ &                                     & $ % ] ' ' ) ; $ &                                     & $ ; > , ' ) % $ &                                     & $ ; > , ' ) % $ &                                     & $ ; > , ' ) % $ &                                     & $ ; > , ' ) % $ &                                     & $ ; > , ' ) % $ &                                     & $ ; > , ' ) % $ 
 &                                     & $ ; > , ' ) % $ &                   ",
+"                / = ( _ : < < [ } ( = /                                 / = ^ | 1 2 [ 3 4 5 = /                                 / = % ' 6 7 7 8 ] % = /                                 / = % % ! 9 9 ! % % = /                                 / = % ] 8 7 7 6 ' % = /                                 / = 5 4 3 [ 2 1 | ^ = /                                 / = ( } [ < < : _ ( = /                                 / = 0 1 a b b 2 c ; = /                                 / = % % 0 d : 6 e % = /                                 / = % % % f f % % % = /                                 / = % e 6 : d 0 % % = /                                 / = ; c 2 b b a 1 0 = /                                 / = ( _ : < < [ } ( = /                                 / = ( _ : < < [ } ( = /                                 / = ( _ : < < [ } ( = /                                 / = ( _ : < < [ } ( = /                                 / = ( _ : < < [ } ( = /                                 / = ( _ : < < [ } ( 
 = /                                 / = ( _ : < < [ } ( = /                 ",
+"              g h 9 < b i j k k k l m n &                             g o p q r 2 l i j < 3 s n &                             & t u v q w w x k y ! % n &                             & n % % u z A A z u % % n &                             & n % ! y k x w w q v u t &                             & n s 3 < j i l 2 r q p o g                             & n m l k k k j i b < 9 h g                             & n ' 9 B k j i l l 1 e C #                             & n % % { D j j < a E o n &                             & n % % F p 8 8 p F % % n &                             & n o E a < j j D { % % n &                             # C e 1 l l i j k B 9 ' n &                             g h 9 < b i j k k k l m n &                             g h 9 < b i j k k k l m n &                             g h 9 < b i j k k k l m n &                             g h 9 < b i j k k k l m n &                             g h 9 < b i j k k k l m n &                             g h 9 < b i j k k k l 
 m n &                             g h 9 < b i j k k k l m n &               ",
+"            G H I J K L M x N j k k O P = Q                         R S T T U V W X x Y j k c ^ - Q                         Q - Z ` G  .T T ..k k D ; % = Q                         Q = % % +. at .#.T T #. at .+.% % = Q                         Q = % ; D k k ..T T  .G ` Z - Q                         Q - ^ c k j Y x X W V U T T S R                         Q = P O k k j N x M L K J I H G                         Q = { $.i j Y N r %.&.&.*.=.S Z                         Q { { % > d < k j -.%.;.>.+.= Q                         Q = % % % ,.;.'.'.;.).% % % = Q                         Q = +.>.;.%.-.j k < d > % { { Q                         Z S =.*.&.&.%.r N Y j i $.{ = Q                         !.~.~.J K L M x N j k k O P = Q                         !.~.~.J K L M x N j k k O P = Q                         !.~.~.J K L M x N j k k O P = Q                         !.~.~.J K L M x N j k k O P = Q                         !.~.~.J K L M x N j k k O P = Q                         !.~.~.J K L M x N j k k 
 O P = Q                         !.~.~.J K L M x N j k k O P = Q             ",
+"          H #.,. at .~.{.].^.V %./.i k k j (.n #     _._.            :.<. at .,.).:.[.}.^.K |.l i j 4 % n & _._.                # n % :.1.).:.).2.T 3.4.7 5., , n #                     # n % % % 6.,.7.T T 7.,.6.% % % n #                     # n , , 5.7 4.3.T 2.).:.).1.:.% n #                 _._.& n % 4 j i l |.K ^.}.[.:.).,. at .<.:.            _._.    # n (.j k k i /.%.V ^.].{.~. at .,.#.H               8.D 9.# n % 0.a.N Y /.X b.^.b.c.d. at .).2.e.                    # k f.f.; 5.g.j A X V }.T >.>.% n #                     # n % % % 6.` }.h.h.}.` 6.% % % n #                     # n % >.>.T }.V X A j g.5.; f.f.k #                     e.2.). at .d.c.b.^.b.X /.Y N a.0.% n # 9.D 8.              i.....I ~.{.].^.V %./.i k k j (.n #     _._.            ~.j.k.l.~.{.].^.V %./.i k k j (.n #     _._.            j.k.k.k.~.{.].^.V %./.i k k j (.n #     _._.            j.k.k.k.~.{.].^.V %./.i k k j (.n #     _._.            j.k.k.k.~.{.].^.V %./.i k k j (.n #     _._.            ~.j.k.l.~.{.].^.V %./.i k 
 k j (.n #     _._.            i.....I ~.{.].^.V %./.i k k j (.n #     _._.  ",
+"        [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y         s.t.!.#.u.v.T w.x.}.V ^.%.q.i : ) { P k k y             # = % % T y.z.H A.B.#.C.&./.6 k k 0 = #                 # = % % % % D.#.#.G G #.#.D.% % % % = #                 # = 0 k k 6 /.&.C.#.B.A.H z.y.T % % = #             y k k P { ) : i q.%.^.V }.x.w.T v.u.#.!.t.s.        y k r.Y e = ) l j j q.-.V p.].].o.o.n.>.m.1. at .[.            $.k E.F.{ m g.N Y A V p.b.V [.G.n.).m.).s.#                 # = 8 k i f.D N H.I.b.b.J.i.m.>.K.% = #                 # = % % % % L.n.p.h.h.p.d.L.% % % % = #                 # = % K.>.m.i.J.b.b.I.H.N D f.i k 8 = #                 # s.).m.).n.G.[.V b.p.V A Y N g.m { F.E.k $.            [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y         [.` M.M.s.n.o.o.].].p.V -.q.j j l ) = e Y r.k y         N.k.k.k.k.M.o.o.].].p.V -.q.j j l ) = e Y r.k y         [.k.k.k.k.n.o.o.].].p.V -.q.j j l ) = e Y r.k y         N.k.k.k.k.M.o.o.].].p.V -.q.j j l ) = e Y r.k y         [.` M.M.s.n.o.o.].].p.V -.q.
 j j l ) = e Y r.k y         [. at .1.m.>.n.o.o.].].p.V -.q.j j l ) = e Y r.k y ",
+"    O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y       P.{.Q.t.T #.>.R R.G.Q.b.].^.%.S.: c T.j k k U.          # n % ! 0 V.W.X.l. at .#.:.J.].W N.Y.k 0 % n #             # n % % % % F Z.j.V.V.V.V.j.Z.F % % % % n #             # n % 0 k Y.N.W ].J.:.#. at .l.X.W.V.0 ! % n #           U.k k j T.c : S.%.^.].b.Q.G.R.R >.#.T t.Q.{.P.      y k k k i } (.N b A %.b.].].b.[.G.x.!. at .).#.:.J.{.O.        y < b : g.y N `.%.V p.V b.}.o.G.j.H ).#.!. +#             # n % f j i i S.|.I.V V V {.G.=.T *..+% n #             # n % % % % % ++Q.p././.p.o.++% % % % % n #             # n % .+*.T =.G.{.V V V I.|.S.i i j f % n #             #  +!.#.).H j.G.o.}.b.V p.V %.`.N y g.: b < y         O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y     O.{.J.:.T G @.!.x.G.[.b.].].b.%.A b N (.} i k k k y     O.{.J.I ....I !.x.G.[.b.].].b.%.A b N (.} i k k k y     O.{.w.d.k.k.k. .x.G.[.b.].].b.%.A b N (.} i k k k y     O.{.J.I ....I !.x.G.[.b.].].b.%.A b N (.} i k k k y     O.{.J.:.T G @.!.x.G.[.b.].].b.%.
 A b N (.} i k k k y     O.{.J.:.#.). at .!.x.G.[.b.].].b.%.A b N (.} i k k k y ",
+"8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.    T.T.%+&+R.w.R <.t.x.G.o.b.p.I.b.b.&.W.*+k k b 8.        =+= % % 0 k k k S.#+l.d.#+#+Q.c.&.-+k 0 % % = =+        =+= % % % % % h *.X.r 4.4.r X.*.h % % % % % = =+        =+= % % 0 k -+&.c.Q.#+#+d.l.#+S.k k k 0 % % = =+        8.b k k *+W.&.b.b.I.p.b.o.G.x.t.<.R w.R.&+%+T.T.    8.7 k k j H.3.$+V ].].].].].p.o.#+x.R.l.H R U x.R. at +T.8.    _.B k N S.;+C.V b.b.I.].V }.G.o.G.#+H R C.>+E =+        =+= % % 0 k i %+].^.V V V V b.G.,+j.G.5.% % = =+        =+= % % % % % % z.o.p.A A p.o.z.% % % % % % = =+        =+= % % 5.G.j.,+G.b.V V V V ^.].%+i k 0 % % = =+        =+E >+C.R H #+G.o.G.}.V ].I.b.b.V C.;+S.N k B _.    8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.M.l.k.I R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].
 ].V $+3.H.j k k 7 8.8.T. at +R.x.U R H l.R.x.#+o.p.].].].].].V $+3.H.j k k 7 8.",
+"y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8     $.4.i E.%+R.x.J.R.x.G.o.{+H.A `.]+].b.V /.k k y o         ^+% % % E.k E.E.7 S.j.w.%.%+w /+K %+k 5.% % % ^+        ^+% % % % 5.(+5.%._+'.E.E.'._+%.5.(+5.% % % % ^+        ^+% % % 5.k %+K /+w %+%.w.j.S.7 E.E.k E.% % % ^+        o y k k /.V b.].]+`.A H.{+o.G.x.R.J.x.R.%+E.i 4.$.    8 k k j H.^.b.].].W `.~+!+)+X.o.#+x.&+J.R.x.x.'+O 4.y       f.k j x K V V V b.W !+S.A X.x.o.x.J.x.-.B '.C         ^+% % % % f.j A ].].V V V I.%.x A G.A 6 % % % ^+        ^+% % % % % 9 9 >+o.].A A ].o.>+$.9 % % % % % ^+        ^+% % % 6 A G.A x %.I.V V V ].].A j f.% % % % ^+        C '.B -.x.J.x.o.x.X.A S.!+W b.V V V K x j k f.      y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   y 4.O '+x.x.&.&.J.x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W 
 ].].b.^.H.j k k 8   y 4.O '+x.x.R.J.&+x.#+o.X.)+!+~+`.W ].].b.^.H.j k k 8   ",
+"8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.        T.h.i T.<+o.G.G.G.o.R.[+q.a.~+V ].b.L r k E.= =+        =+= % % E.k m.m.m.}+_+G.x k k : L %+8 % % % = =+        =+= % % % 4.4.x X.B |+m.m.|+B 1+x 4.4.% % % = =+        =+= % % % 8 %+L : k k x G._+}+m.m.m.k E.% % = =+        =+= E.k r L b.].V ~+a.q.[+R.o.G.G.G.o.<+T.i h.T.        U.k j k I.].].].b.:+i l l *+x.o.#+#+#+o.o.'+Y j T.8.        f.k B C.V ].p.b.I.%.q.Y Y.x.#+o.o.-.4.8 = =+        =+= % % % T.k Y &.].].b.b.I.M.k Y <+4.0 % % = =+        =+= % % % % 8 k [+o.].A A ].o.[+k 8 % % % % = =+        =+= % % 0 4.<+Y k M.I.b.b.].].&.Y k T.% % % = =+        =+= 8 4.-.o.o.#+x.Y.Y q.%.I.b.p.].V C.B k f.        8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.
 ].].].I.k j k U.    8.T.j Y '+o.o.#+#+#+o.x.*+l l i :+b.].].].I.k j k U.    ",
+"      f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          4+5.N _+{+o.G.o.o.2+i < w I.b.b.V |.k k E.#             # n % ! E.5+m.m.5+6+X.r 7 7 /+C.|.y - % n #             # n % % f 4.x 7+F.m.m.m.m.F.7+x 4.f % % n #             # n % - y |.C./+7 7 r X.6+5+m.m.5+E.! % n #             # E.k k |.V b.b.I.w < i 2+o.o.G.o.{+_+N 5.4+          U.k k q.X b.].].V V 3.r r.i 3+x.#+#+#+o.2+O f.              f.k j A C.V ].b.V b.8+N q.9+#+o.o.[+y 0+#             # n % % T.k B |.].V b.b.V M.w Y X.a+% % n #             # n % % % (+4 u Q.p.A A p.Q.u 4 (+% % % n #             # n % % a+X.Y w M.V b.b.V ].|.B k T.% % n #             # 0+y [+o.o.#+9+q.N 8+b.V b.].V C.A j k f.              f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V 
 ].].b.X q.k k U.          f.O 2+o.#+#+#+x.3+i r.r 3.V V ].].b.X q.k k U.    ",
+"    T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.            T.b N 2+o.G.G.G.X.C.L b+].].V &.B k k E.                # = % % T.6 6 T.c+#+G.A /.].|.k T.% = #                 # = % % 5.c+7+B '.6 6 '.4.7+c+5.% % = #                 # = % T.k |.]./.A G.#+c+T.6 6 T.% % = #                 E.k k B &.V ].].b+L C.X.G.G.G.o.2+N b T.            U.k k j r W b.p.p.p.p.V L N.1+x.#+#+#+o.Y.j T.T.            f.k k Y w I.p.p.].].V K L {.o.o.o.Y.4.d+                # = % T.k B /.}.].p.V V V c.Q.2+4.5.= #                 # = % % % % % {.p.A A p.{.% % % % % = #                 # = 5.4.2+Q.c.V V V p.].}./.B k T.% = #                 d+4.Y.o.o.o.{.L K V ].].p.p.I.w Y k k f.            T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.
 p.b.W r j k k U.        T.T.j Y.o.#+#+#+x.1+N.L V p.p.p.p.b.W r j k k U.    ",
+"  8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.          g+U.U.6 X.&+&+&+h+].].&.|.i+j+k+6+i k k D                   # n % q a a '+X.Q.[.K L -+4.h., n #                     # n % % F z.|.'.a a '.|.z.F % % n #                     # n , h.4.-+L K [.Q.X.'+a a q % n #                   D k k i 6+k+j+i+|.&.].].h+&+&+&+X.6 U.U.g+          U.k k k j r -.)+f+e+W.%.K ^.].{.R.&+&+R.2+'.E.E.8.          f.k k k B H.M l+X X w *.V I.L ;+Q.-.E._.                  # n T.k B N H.X %.%.7+N.K C.m+0 @ #                     # n % % % % n+K A A K n+% % % % n #                     # @ 0 m+C.K N.7+%.%.X H.N B k T.n #                   _.E.-.Q.;+L I.V *.w X X l+M H.B k k k f.          8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+
 )+-.r j k k k U.      8.E.E.'.2+R.&+&+R.{.].^.K %.W.e+f+)+-.r j k k k U.    ",
+"            o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 6.j+q+M.u+r+D._+_ } | % % | t+t+t+g+                    Q = .+v+v+u+V n+q+8+7 5.F.F.- Q                         Q = % % % w+*.U U *.w+% % % = Q                         Q - F.F.5.7 8+q+n+V u+v+v+.+= Q                     g+t+t+t+| % % | } _ _+D.r+u+M.q+j+6.                D 7 b b t+f | ^ % s } a.a./.s+r+q+q+p+o+                    y : : '.T.F.5 m 1 ( _ a.D v+K.B.x+y.                        Q F.B B a 2 d 0.0.a.8 B.F % = Q                         Q = % % % h S.~+~+S.h % % % = Q                         Q = % F B.8 a.0.0.d 2 a B B F.Q                         y.x+B.K.v+D a._ ( 1 m 5 F.T.'.: : y                     o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % 
 ^ | f t+b b 7 D                 o+p+q+q+r+s+/.a.a.} s % ^ | f t+b b 7 D     ",
+"              & n % % % 5 | ~ s % % % n & 9.9.9.9.                    # C % 0+% ^ ^ 5 s % % % n &                             & n % v j+j+y+> > > ; % n &                             & n % % ! e v v.e ! % % n &                             & n % ; > > > y+j+j+v % n &                             & n % % % s 5 ^ ^ % 0+% C #                     9.9.9.9.& n % % % s ~ | 5 % % % n &                         g+g+g+F % % % { ; > ~ ; % % n &                             & (+D > % { % ) ' ) % % n &                             & n % % F 0 }+}+0 F % % n &                             & n % % ) ' ) % { % > D (+&                             & n % % ; ~ > ; { % % % F g+g+g+                        & n % % % 5 | ~ s % % % n & 9.9.9.9.                    & n % % % 5 | ~ s % % % n & 9.9.9.9.                    & n % % % 5 | ~ s % % % n & 9.9.9.9.                    & n % % % 5 | ~ s % % % n & 9.9.9.9.                    & n % % % 5 | ~ s % % % n & 9.9.9.9.                    & n % % % 5 | ~ s % % 
 % n & 9.9.9.9.                    & n % % % 5 | ~ s % % % n & 9.9.9.9.      ",
+"                / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % ] ] % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % = /                                 / = % % % % % % % % 
 = /                                 / = % % % % % % % % = /                 ",
+"                  & $ % % % % % % $ &                                     & n % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % n &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ &                                     & $ % % % % % % $ 
 &                                     & $ % % % % % % $ &                   ",
+"                    * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = *                                         * = % % % % = * 
                                         * = % % % % = *                     ",
+"                      # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #                                             # $ % % $ #   
                                           # $ % % $ #                       ",
+"                        + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +                                                 + @ @ +     
                                             + @ @ +                         ",
+"                          . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .                                                     . .       
                                               . .                           "};

Modified: trunk/spectrum/spec_panel.c
===================================================================
--- trunk/spectrum/spec_panel.c	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_panel.c	2012-05-16 09:59:11 UTC (rev 18286)
@@ -49,19 +49,26 @@
   GtkWidget *bwtable;
   GtkWidget *bwbutton;
   GtkWidget *bwmodebutton;
+  GtkWidget *plot_label_al;
 } p;
 
 int plot_scale=0;
 int plot_mode=0;
 int plot_link=0;
 int plot_hold=0;
+int plot_lock_y=0;
 int plot_depth=90;
 int plot_noise=0;
 int plot_last_update=0;
 int plot_bw=0;
 int plot_bwmode=0;
+int plot_bold=0;
 int *active;
 
+static void override_base(GtkWidget *w, int active){
+  gtk_widget_modify_base (w, GTK_STATE_NORMAL, &w->style->bg[active?GTK_STATE_ACTIVE:GTK_STATE_NORMAL]);
+}
+
 static void replot(struct panel *p){
   int i,lactive[total_ch];
   for(i=0;i<total_ch;i++)
@@ -396,6 +403,7 @@
   replot(p);
   plot_setting(PLOT(p->plot),plot_scale,plot_mode,plot_link,plot_depth,plot_noise);
   chlabels(widget,p);
+  gtk_alignment_set_padding(GTK_ALIGNMENT(p->plot_label_al),0,0,0,plot_get_right_pad(PLOT(p->plot)));
 }
 
 static void runchange(GtkWidget *widget,struct panel *p){
@@ -415,10 +423,23 @@
 
 static void holdchange(GtkWidget *widget,struct panel *p){
   plot_hold=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+  override_base(widget,plot_hold);
   replot(p);
   plot_draw(PLOT(p->plot));
 }
 
+static void lockchange(GtkWidget *widget,struct panel *p){
+  plot_lock_y=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+  override_base(widget,plot_lock_y);
+  plot_set_autoscale(PLOT(p->plot),!plot_lock_y);
+}
+
+static void boldchange(GtkWidget *widget,struct panel *p){
+  plot_bold=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+  override_base(widget,plot_bold);
+  plot_set_bold(PLOT(p->plot),plot_bold);
+}
+
 static void loopchange(GtkWidget *widget,struct panel *p){
   acc_loop=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
 }
@@ -471,36 +492,114 @@
 }
 
 extern char *version;
-void panel_create(struct panel *panel, int bold){
+void panel_create(struct panel *panel){
   int i;
 
+  GdkWindow *root=gdk_get_default_root_window();
   GtkWidget *topbox=gtk_hbox_new(0,0);
-  GtkWidget *toplabel=gtk_label_new (NULL);
   GtkWidget *rightframe=gtk_frame_new (NULL);
-  GtkWidget *leftlabel=gtk_label_new (NULL);
-  GdkWindow *root=gdk_get_default_root_window();
   GtkWidget *righttopbox=gtk_vbox_new(0,0);
   GtkWidget *rightframebox=gtk_event_box_new();
   GtkWidget *rightbox=gtk_vbox_new(0,0);
-  GtkWidget *lefttable=gtk_table_new(3,2,0);
+  GtkWidget *lefttable=gtk_table_new(4,2,0);
+  GtkWidget *plot_control_al;
+  GtkWidget *wbold;
 
-  gtk_container_set_border_width (GTK_CONTAINER (righttopbox), 6);
-  gtk_container_set_border_width (GTK_CONTAINER (rightbox), 6);
-  gtk_widget_set_name(rightframebox,"controlpanel");
-  gtk_widget_set_name(topbox,"panel");
+  active = calloc(total_ch,sizeof(*active));
 
   panel->toplevel=gtk_window_new (GTK_WINDOW_TOPLEVEL);
   panel->group = gtk_accel_group_new ();
   gtk_window_add_accel_group (GTK_WINDOW(panel->toplevel), panel->group);
-
   gtk_window_set_title(GTK_WINDOW(panel->toplevel),(const gchar *)"Spectrum Analyzer");
   gtk_window_set_default_size(GTK_WINDOW(panel->toplevel),1024,400);
   //gtk_widget_set_size_request(GTK_WIDGET(panel->toplevel),1024,400);
+  gtk_container_add (GTK_CONTAINER (panel->toplevel), topbox);
+  g_signal_connect (G_OBJECT (panel->toplevel), "delete_event",
+		    G_CALLBACK (shutdown), NULL);
+  gtk_widget_set_name(topbox,"panel");
 
+  /* underlying boxes/frames */
+  gtk_box_pack_start(GTK_BOX(topbox),lefttable,1,1,0);
+  gtk_box_pack_start(GTK_BOX(topbox),righttopbox,0,0,0);
+
+  panel->plot=plot_new(blocksize/2+1,inputs,channels,rate);
+
+  /* plot control checkboxes */
+  {
+    GtkWidget *al=plot_control_al=gtk_alignment_new(0,0,0,0);
+    GtkWidget *box=gtk_hbox_new(0,6);
+    GtkWidget *lock_range=gtk_check_button_new_with_mnemonic("lock _Y range");
+    GtkWidget *hold_display=gtk_check_button_new_with_mnemonic("_hold display");
+    wbold=gtk_check_button_new_with_mnemonic("_bold");
+    gtk_table_attach(GTK_TABLE (lefttable), al,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+    gtk_container_add(GTK_CONTAINER (al),box);
+    gtk_box_pack_start(GTK_BOX(box),lock_range,0,0,0);
+    gtk_box_pack_start(GTK_BOX(box),hold_display,0,0,0);
+    gtk_box_pack_start(GTK_BOX(box),wbold,0,0,0);
+
+    gtk_widget_set_name(lock_range,"top-control");
+    gtk_widget_set_name(hold_display,"top-control");
+    gtk_widget_set_name(wbold,"top-control");
+    g_signal_connect (G_OBJECT (hold_display), "clicked", G_CALLBACK (holdchange), panel);
+    gtk_widget_add_accelerator (hold_display, "activate", panel->group, GDK_h, 0, 0);
+    g_signal_connect (G_OBJECT (lock_range), "clicked", G_CALLBACK (lockchange), panel);
+    gtk_widget_add_accelerator (lock_range, "activate", panel->group, GDK_y, 0, 0);
+    gtk_widget_add_accelerator (lock_range, "activate", panel->group, GDK_Y, 0, 0);
+    g_signal_connect (G_OBJECT (wbold), "clicked", G_CALLBACK (boldchange), panel);
+    gtk_widget_add_accelerator (wbold, "activate", panel->group, GDK_b, 0, 0);
+
+  }
+
+  /* plot informational labels */
+  {
+    char buf[80];
+    GtkWidget *al=panel->plot_label_al=gtk_alignment_new(1,.5,0,0);
+    GtkWidget *box=gtk_hbox_new(0,2);
+    GtkWidget *text1=gtk_label_new("window:");
+    GtkWidget *text2=gtk_label_new("sin^4  ");
+    GtkWidget *text3=gtk_label_new("points:");
+
+    snprintf(buf,80,"%d",blocksize);
+
+    GtkWidget *text4=gtk_label_new(buf);
+    gtk_table_attach(GTK_TABLE (lefttable), al,0,1,1,2,GTK_FILL,GTK_FILL,0,0);
+    gtk_container_add(GTK_CONTAINER (al),box);
+
+    gtk_box_pack_end(GTK_BOX(box),text4,0,0,0);
+    gtk_box_pack_end(GTK_BOX(box),text3,0,0,0);
+    gtk_box_pack_end(GTK_BOX(box),text2,0,0,0);
+    gtk_box_pack_end(GTK_BOX(box),text1,0,0,0);
+
+    gtk_widget_set_name(text1,"top-label");
+    gtk_widget_set_name(text2,"top-readout");
+    gtk_widget_set_name(text3,"top-label");
+    gtk_widget_set_name(text4,"top-readout");
+
+  }
+
+  /* add the spectrum plot box */
+  gtk_table_attach_defaults (GTK_TABLE (lefttable), panel->plot,0,1,2,3);
+  //gtk_table_set_row_spacing (GTK_TABLE (lefttable), 0, 4);
+  gtk_table_set_row_spacing (GTK_TABLE (lefttable), 2, 4);
+  gtk_table_set_col_spacing (GTK_TABLE (lefttable), 0, 2);
+
+  /* right control frame */
+  gtk_container_set_border_width (GTK_CONTAINER (righttopbox), 6);
+  gtk_container_set_border_width (GTK_CONTAINER (rightbox), 6);
+  gtk_frame_set_shadow_type(GTK_FRAME(rightframe),GTK_SHADOW_ETCHED_IN);
+  gtk_widget_set_name(rightframebox,"controlpanel");
+  gtk_box_pack_end(GTK_BOX (righttopbox),rightframebox,1,1,0);
+  gtk_container_add (GTK_CONTAINER (rightframebox),rightframe);
+  gtk_container_add (GTK_CONTAINER (rightframe), rightbox);
+
   /* the Fucking Fish */
   {
+    GtkWidget *toptable = gtk_table_new(2,1,0);
+    GtkWidget *fishbox=gtk_alignment_new(.5,.5,0,0);
+    GtkWidget *sepbox=gtk_alignment_new(.5,.85,.7,0);
+    GtkWidget *topsep=gtk_hseparator_new();
     GdkPixmap *tb;
-    GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray);
+    GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray_xpm);
     GdkGC *cgc=gdk_gc_new(tp);
     GdkGC *bgc=gdk_gc_new(tb);
     int w, h;
@@ -519,49 +618,16 @@
     g_object_unref(bgc);
     g_object_unref(tp);
     g_object_unref(tb);
-  }
 
-  panel->twirlimage=gtk_image_new_from_pixmap(panel->ff[0],panel->fb[0]);
+    panel->twirlimage=gtk_image_new_from_pixmap(panel->ff[0],panel->fb[0]);
 
-  active = calloc(total_ch,sizeof(*active));
-
-  gtk_container_add (GTK_CONTAINER (panel->toplevel), topbox);
-  gtk_frame_set_shadow_type(GTK_FRAME(rightframe),GTK_SHADOW_ETCHED_IN);
-
-  g_signal_connect (G_OBJECT (panel->toplevel), "delete_event",
-		    G_CALLBACK (shutdown), NULL);
-
-
-  /* underlying boxes/frames */
-  gtk_box_pack_start(GTK_BOX(topbox),lefttable,1,1,0);
-  gtk_box_pack_start(GTK_BOX(topbox),righttopbox,0,0,0);
-
-  gtk_box_pack_end(GTK_BOX (righttopbox),rightframebox,1,1,0);
-  gtk_container_add (GTK_CONTAINER (rightframebox),rightframe);
-  gtk_container_add (GTK_CONTAINER (rightframe), rightbox);
-
-  /* add the spectrum plot box */
-  panel->plot=plot_new(blocksize/2+1,inputs,channels,rate,bold);
-  gtk_table_attach_defaults (GTK_TABLE (lefttable), panel->plot,0,1,1,2);
-  gtk_table_set_row_spacing (GTK_TABLE (lefttable), 0, 6);
-  gtk_table_set_row_spacing (GTK_TABLE (lefttable), 1, 4);
-  gtk_table_set_col_spacing (GTK_TABLE (lefttable), 0, 2);
-
-  /* fish */
-  {
-    GtkWidget *toptable = gtk_table_new(1,1,0);
-    GtkWidget *fishbox=gtk_alignment_new(.5,.5,0,0);
-    GtkWidget *sepbox=gtk_alignment_new(.5,.85,.7,0);
-    GtkWidget *topsep=gtk_hseparator_new();
-
-
     gtk_container_set_border_width (GTK_CONTAINER (toptable), 1);
     gtk_box_pack_start(GTK_BOX(righttopbox),toptable,0,0,0);
     gtk_container_add (GTK_CONTAINER (sepbox), topsep);
     gtk_container_add(GTK_CONTAINER(fishbox),panel->twirlimage);
-    gtk_table_attach_defaults (GTK_TABLE (toptable), fishbox,0,1,0,1);
-    gtk_table_attach_defaults (GTK_TABLE (toptable), sepbox,0,1,0,1);
-
+    gtk_table_attach_defaults (GTK_TABLE (toptable), fishbox,0,1,1,2);
+    gtk_table_attach_defaults (GTK_TABLE (toptable), sepbox,0,1,1,2);
+    gtk_table_set_row_spacing (GTK_TABLE (toptable), 0, 6);
   }
 
   /* rate */
@@ -708,33 +774,17 @@
     panel->run=button;
   }
   
-  /* hold */
   /* loop */
+  /* rewind */
   {
     GtkWidget *box=gtk_hbox_new(1,1);
-    GtkWidget *button=gtk_toggle_button_new_with_mnemonic("_hold");
-    gtk_widget_add_accelerator (button, "activate", panel->group, GDK_h, 0, 0);
-    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (holdchange), panel);
-    gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
-    
-    button=gtk_toggle_button_new_with_mnemonic("_loop");
+    GtkWidget *button=gtk_toggle_button_new_with_mnemonic("_loop");
     gtk_widget_add_accelerator (button, "activate", panel->group, GDK_l, 0, 0);
     g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (loopchange), panel);
     gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
     gtk_widget_set_sensitive(button,global_seekable);
     
-    gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
-  }
-  
-  /* clear */
-  /* rewind */
-  {
-    GtkWidget *box=gtk_hbox_new(1,1);
-    GtkWidget *button=gtk_button_new_with_mnemonic("_clear");
-    gtk_widget_add_accelerator (button, "activate", panel->group, GDK_c, 0, 0);
-    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clearchange), panel);
-    gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
-    
+
     button=gtk_button_new_with_mnemonic("re_wind");
     gtk_widget_add_accelerator (button, "activate", panel->group, GDK_w, 0, 0);
     g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (rewindchange), panel);
@@ -744,12 +794,22 @@
     gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
   }
   
+  /* clear */
   /* dump */
   {
-    GtkWidget *button=gtk_button_new_with_mnemonic("_dump data");
+    GtkWidget *box=gtk_hbox_new(1,1);
+    GtkWidget *button=gtk_button_new_with_mnemonic("_clear data");
+    gtk_widget_add_accelerator (button, "activate", panel->group, GDK_c, 0, 0);
+    g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clearchange), panel);
+    gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
+    
+
+    button=gtk_button_new_with_mnemonic("_dump data");
     gtk_widget_add_accelerator (button, "activate", panel->group, GDK_d, 0, 0);
     g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (dump), panel);
-    gtk_box_pack_start(GTK_BOX(bbox),button,0,0,0);
+    gtk_box_pack_start(GTK_BOX(box),button,1,1,0);
+
+    gtk_box_pack_start(GTK_BOX(bbox),box,0,0,0);
   }
 
   /* noise floor */
@@ -765,8 +825,13 @@
   gtk_box_pack_end(GTK_BOX(rightbox),bbox,0,0,0);
   gtk_widget_show_all(panel->toplevel);
   gtk_combo_box_set_active(GTK_COMBO_BOX(panel->bwbutton),0);
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wbold),plot_bold);
+
   gtk_key_snooper_install(watch_keyboard,panel);
 
+  gtk_alignment_set_padding(GTK_ALIGNMENT(plot_control_al),0,0,plot_get_left_pad(PLOT(panel->plot)),0);
+  gtk_alignment_set_padding(GTK_ALIGNMENT(panel->plot_label_al),0,0,0,plot_get_right_pad(PLOT(panel->plot)));
+
 }
 
 static gboolean async_event_handle(GIOChannel *channel,
@@ -811,7 +876,7 @@
   return 1;
 }
 
-void panel_go(int argc,char *argv[],int bold){
+void panel_go(int argc,char *argv[]){
   char *homedir=getenv("HOME");
   int found=0;
   memset(&p,0,sizeof(p));
@@ -866,7 +931,7 @@
   gtk_rc_add_default_file("spectrum-gtkrc");
   gtk_init (&argc, &argv);
 
-  panel_create(&p, bold);
+  panel_create(&p);
   animate_fish(&p);
 
   /* set up watching the event pipe */

Modified: trunk/spectrum/spec_plot.c
===================================================================
--- trunk/spectrum/spec_plot.c	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_plot.c	2012-05-16 09:59:11 UTC (rev 18286)
@@ -78,7 +78,8 @@
 
 static void compute_metadata(GtkWidget *widget){
   Plot *p=PLOT(widget);
-  int width=widget->allocation.width-p->padx;
+  int phase = (p->link == LINK_PHASE);
+  int width=widget->allocation.width-p->padx-(phase?p->phax:0);
   int rate=p->maxrate;
   int nyq=p->maxrate/2.;
   int i;
@@ -221,6 +222,8 @@
 #endif
   int phase = (p->link == LINK_PHASE);
   int padx = p->padx;
+  int phax = phase ? p->phax : 0;
+  int pwidth = width - padx - phax;
 
   if(phase){
     /* are any of the phase channels actually active? */
@@ -263,9 +266,15 @@
     rgb_fg.blue = (rgb_fg.blue*3 + rgb_bg.blue*2)/5;
     gdk_gc_set_rgb_fg_color(p->graygc,&rgb_fg);
   }
+  if(!p->phasegc){
+    GdkColor rgb={0,0x8000,0x0000,0x0000};
+    p->phasegc=gdk_gc_new(p->backing);
+    gdk_gc_set_rgb_fg_color(p->phasegc,&rgb);
+    gdk_gc_set_line_attributes(p->phasegc,1,GDK_LINE_SOLID,GDK_CAP_PROJECTING,GDK_JOIN_MITER);
+  }
 
   {
-    const GdkRectangle clip = {p->padx,0,width-p->padx,height-p->pady};
+    const GdkRectangle clip = {p->padx,0,pwidth,height-p->pady};
     GdkGCValues values;
     //gdk_gc_get_values(p->drawgc,&values);
     values.line_width=1;
@@ -278,9 +287,11 @@
     GdkGC *gc=parent->style->bg_gc[0];
     gdk_draw_rectangle(p->backing,gc,1,0,0,padx,height);
     gdk_draw_rectangle(p->backing,gc,1,0,height-p->pady,width,p->pady);
+    if(phase)
+      gdk_draw_rectangle(p->backing,gc,1,width-phax,0,phax,height);
 
     gc=parent->style->white_gc;
-    gdk_draw_rectangle(p->backing,gc,1,padx,0,width-padx,height-p->pady);
+    gdk_draw_rectangle(p->backing,gc,1,padx,0,pwidth,height-p->pady);
   }
 
   /* draw the noise floor if active */
@@ -289,7 +300,7 @@
     GdkColor rgb = {0,0xd000,0xd000,0xd000};
     gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
 
-    for(i=0;i<width-padx;i++){
+    for(i=0;i<pwidth;i++){
       float val=p->floor[i];
       int y;
 
@@ -333,10 +344,11 @@
       int px,py;
       pango_layout_get_pixel_size(proper[i],&px,&py);
 
-      gdk_draw_layout (p->backing,
-		       widget->style->black_gc,
-		       p->xlgrid[i]-(px/2), height-py+2,
-		       proper[i]);
+      if(p->xlgrid[i]+(px/2)<width)
+        gdk_draw_layout (p->backing,
+                         widget->style->black_gc,
+                         p->xlgrid[i]-(px/2), height-py+2,
+                         proper[i]);
     }
   }
 
@@ -355,7 +367,7 @@
     compute_imp_scale(widget);
 
     for(i=0;i<p->ytics;i++)
-      gdk_draw_line(p->backing,p->drawgc,padx,p->ytic[i],width,p->ytic[i]);
+      gdk_draw_line(p->backing,p->drawgc,padx,p->ytic[i],pwidth,p->ytic[i]);
 
     /* dark grid */
     rgb.red=0x0000;
@@ -373,7 +385,7 @@
 		       padx-px-2, p->ygrid[i]-py/2,
 		       p->imp_layout[i]);
 
-      gdk_draw_line(p->backing,p->drawgc,padx,p->ygrid[i],width,p->ygrid[i]);
+      gdk_draw_line(p->backing,p->drawgc,padx,p->ygrid[i],pwidth,p->ygrid[i]);
     }
 
   }else{
@@ -460,9 +472,9 @@
       if(ymid>=0){
         if(yval % majordel == 0){
         }else if(yval % minordel == 0){
-          gdk_draw_line(p->backing,p->drawgc,padx,ymid,width,ymid);
+          gdk_draw_line(p->backing,p->drawgc,padx,ymid,width-phax,ymid);
         }else{
-          gdk_draw_line(p->backing,p->dashes,padx,ymid,width,ymid);
+          gdk_draw_line(p->backing,p->dashes,padx,ymid,width-phax,ymid);
         }
       }
       yval-=subminordel;
@@ -551,7 +563,7 @@
                                p->db_layout[yval/1000+200]);
             }
           }
-          gdk_draw_line(p->backing,p->drawgc,padx,ymid,width,ymid);
+          gdk_draw_line(p->backing,p->drawgc,padx,ymid,width-phax,ymid);
         }
         yval-=majordel;
       }
@@ -572,68 +584,7 @@
       gdk_draw_line(p->backing,p->drawgc,p->xgrid[i],0,p->xgrid[i],height-p->pady);
   }
 
-  /* phase?  draw in phase and tics on right axis */
-  if(phase){
-    GdkColor rgb={0,0xd000,0x0000,0x0000};
-    float depth = p->disp_pmax-p->disp_pmin;
-    int label=ceil(p->disp_pmax/10+18),i;
-    float del=(height-p->pady-1)/depth,step;
-    float off=p->disp_pmax-ceil(p->disp_pmax*.1)*10;
-    step=2;
-    if(del>8)step=1;
 
-    gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
-    for(i=0;i<37;i++){
-      if(((label-i)&1)==0 || step==1){
-	int ymid=rint(del * (i*10+off));
-	int px,py;
-
-	if(label-i>=0 && label-i<37 && ymid>=0 && ymid<height-p->pady){
-	  pango_layout_get_pixel_size(p->phase_layout[label-i],&px,&py);
-
-	  gdk_draw_layout (p->backing,p->drawgc,
-			   width-p->phax, ymid-py/2,
-			   p->phase_layout[label-i]);
-	}
-      }
-    }
-
-    if(del>10){
-      for(i=0;;i++){
-	int ymid=rint(del * (i+off));
-	if(ymid>=height-p->pady)break;
-	if(ymid>=0)
-	  gdk_draw_line(p->backing,p->drawgc,width-p->phax-(i%5==0?15:10),ymid,width-p->phax-(i%5==0?5:7),ymid);
-      }
-    }else if(del>5){
-      for(i=0;;i++){
-	int ymid=rint(del * (i*2+off));
-	if(ymid>=height-p->pady)break;
-	if(ymid>=0)
-	  gdk_draw_line(p->backing,p->drawgc,width-p->phax-12,ymid,width-p->phax-7,ymid);
-      }
-    } else if(del>2){
-      for(i=0;;i++){
-	int ymid=rint(del * (i*5+off));
-	if(ymid>=height-p->pady)break;
-	if(ymid>=0)
-	  gdk_draw_line(p->backing,p->drawgc,width-p->phax-15,ymid,width-p->phax-5,ymid);
-      }
-    }
-
-    for(i=0;;i++){
-      int ymid=rint(del * (i*10+off));
-      if(ymid>=height-p->pady)break;
-      if(ymid>=0){
-	gdk_draw_line(p->backing,p->drawgc,width-p->phax-5,ymid-1,width-p->phax-2,ymid-1);
-	gdk_draw_line(p->backing,p->drawgc,width-p->phax-25,ymid,width-p->phax-2,ymid);
-	gdk_draw_line(p->backing,p->drawgc,width-p->phax-5,ymid+1,width-p->phax-2,ymid+1);
-      }
-    }
-
-  }
-
-
   gdk_gc_set_line_attributes(p->drawgc,p->bold+1,GDK_LINE_SOLID,GDK_CAP_PROJECTING,
                              GDK_JOIN_MITER);
 
@@ -651,7 +602,7 @@
 	  rgb = chcolor(ch);
 	  gdk_gc_set_rgb_fg_color(p->drawgc,&rgb);
 
-	  for(i=0;i<width-padx;i++){
+	  for(i=0;i<pwidth;i++){
 	    float valmin=p->ydata[ch][i*2];
 	    float valmax=p->ydata[ch][i*2+1];
             float ymin, ymax;
@@ -692,6 +643,89 @@
       cho+=p->ch[gi];
     }
   }
+
+  /* phase?  draw in phase and tics on right axis */
+  if(phase){
+    float depth = p->disp_pmax-p->disp_pmin;
+    int label=ceil(p->disp_pmax/10+18),i;
+    float del=(height-p->pady-1)/depth,step;
+    float off=p->disp_pmax-ceil(p->disp_pmax*.1)*10;
+    step=2;
+    if(del>8)step=1;
+
+    for(i=0;i<38;i++){
+      if(((label-i)&1)==0 || step==1){
+	int ymid=rint(del * (i*10+off));
+	int px,py;
+
+	if(label-i>=0 && label-i<37 && ymid>=p->pady/2 && ymid<height-p->pady/2){
+          pango_layout_get_pixel_size(p->phase_layout[label-i],&px,&py);
+	  gdk_draw_layout (p->backing,p->phasegc,
+			   width-p->phax+2, ymid-py/2,
+			   p->phase_layout[label-i]);
+	}
+      }
+    }
+
+    if(del>10){
+      for(i=0;;i++){
+	int ymid=rint(del * (i+off));
+        int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+	if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-180 && pv<=180)
+	  gdk_draw_line(p->backing,p->phasegc,width-p->phax-(i%5==0?15:10),ymid,width-p->phax-(i%5==0?5:7),ymid);
+      }
+    }else if(del>5){
+      for(i=0;;i++){
+	int ymid=rint(del * (i*2+off));
+        int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+	if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-180 && pv<=180)
+	  gdk_draw_line(p->backing,p->phasegc,width-p->phax-12,ymid,width-p->phax-7,ymid);
+      }
+    } else if(del>2){
+      for(i=0;;i++){
+	int ymid=rint(del * (i*5+off));
+        int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+	if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-180 && pv<=180)
+	  gdk_draw_line(p->backing,p->phasegc,width-p->phax-15,ymid,width-p->phax-5,ymid);
+      }
+    }
+
+    if(del>=2){
+      for(i=0;;i++){
+        int ymid=rint(del * (i*10+off));
+        int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+        if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-180 && pv<=180){
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid-1,width-p->phax-1,ymid-1);
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-25,ymid,width-p->phax-1,ymid);
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid+1,width-p->phax-1,ymid+1);
+        }
+      }
+    }else{
+
+      for(i=0;;i++){
+	int ymid=rint(del * (i*10+off));
+        int pv = rint(p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin));
+	if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-180 && pv<=180)
+	  gdk_draw_line(p->backing,p->phasegc,width-p->phax-15,ymid,width-p->phax-5,ymid);
+      }
+
+      for(i=0;;i++){
+        int ymid=rint(del * (i*10+off));
+        int pv = rint((p->pmax - ymid/(float)(height-p->pady) * (p->pmax - p->pmin))/10);
+        if(ymid>=height-p->pady)break;
+	if(ymid>=0 && pv>=-18 && pv<=18 && (pv&1)==0){
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid-1,width-p->phax-1,ymid-1);
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-25,ymid,width-p->phax-1,ymid);
+          gdk_draw_line(p->backing,p->phasegc,width-p->phax-5,ymid+1,width-p->phax-1,ymid+1);
+        }
+      }
+    }
+  }
 }
 
 static void draw_and_expose(GtkWidget *widget){
@@ -814,7 +848,7 @@
   if(requisition->height<axisy+pady)requisition->height=axisy+pady;
   p->padx=padx;
   p->pady=pady;
-  p->phax=phax;
+  p->phax=phax+2;
 }
 
 static gboolean configure(GtkWidget *widget, GdkEventConfigure *event){
@@ -876,7 +910,7 @@
   return m_type;
 }
 
-GtkWidget* plot_new (int size, int groups, int *channels, int *rate, int bold){
+GtkWidget* plot_new (int size, int groups, int *channels, int *rate){
   GtkWidget *ret= GTK_WIDGET (g_object_new (plot_get_type (), NULL));
   Plot *p=PLOT(ret);
   int g,i;
@@ -893,7 +927,6 @@
   p->ch=channels;
   p->rate=rate;
   p->maxrate=maxrate;
-  p->bold=bold;
 
   if(maxrate > 100000){
     p->lin_major = 10000.;
@@ -940,13 +973,13 @@
 		      "-90\xC2\xB0","-80\xC2\xB0","-70\xC2\xB0",
 		      "-60\xC2\xB0","-50\xC2\xB0","-40\xC2\xB0",
 		      "-30\xC2\xB0","-20\xC2\xB0","-10\xC2\xB0",
-		      "-0\xC2\xB0","+10\xC2\xB0","+20\xC2\xB0",
-		      "+30\xC2\xB0","+40\xC2\xB0","+50\xC2\xB0",
-		      "+60\xC2\xB0","+70\xC2\xB0","+80\xC2\xB0",
-		      "+90\xC2\xB0","+100\xC2\xB0","+110\xC2\xB0",
-		      "+120\xC2\xB0","+130\xC2\xB0","+140\xC2\xB0",
-		      "+150\xC2\xB0","+160\xC2\xB0","+170\xC2\xB0",
-		      "+180\xC2\xB0"};
+		      "0\xC2\xB0","10\xC2\xB0","20\xC2\xB0",
+		      "30\xC2\xB0","40\xC2\xB0","50\xC2\xB0",
+		      "60\xC2\xB0","70\xC2\xB0","80\xC2\xB0",
+		      "90\xC2\xB0","100\xC2\xB0","110\xC2\xB0",
+		      "120\xC2\xB0","130\xC2\xB0","140\xC2\xB0",
+		      "150\xC2\xB0","160\xC2\xB0","170\xC2\xB0",
+		      "180\xC2\xB0"};
     p->phase_layout=calloc(38,sizeof(*p->phase_layout));
     for(i=0;i<37;i++)
       p->phase_layout[i]=gtk_widget_create_pango_layout(ret,labels[i]);
@@ -1003,13 +1036,16 @@
   p->ch_active=calloc(ch,sizeof(*p->ch_active));
   p->ch_process=calloc(ch,sizeof(*p->ch_process));
 
+  p->autoscale=1;
+
   plot_clear(p);
   return ret;
 }
 
 void plot_refresh (Plot *p, int *process){
   float ymax,pmax,pmin;
-  int width=GTK_WIDGET(p)->allocation.width-p->padx;
+  int phase = (p->link == LINK_PHASE);
+  int width=GTK_WIDGET(p)->allocation.width-p->padx-(phase ? p->phax : 0);
   int height=GTK_WIDGET(p)->allocation.height-p->pady;
   float **data;
 
@@ -1027,6 +1063,8 @@
 
   p->ydata=data;
 
+  if(!p->autoscale)return;
+
   /* graph limit updates are conditional depending on mode/link */
   pmax+=5;
   pmin-=5;
@@ -1102,6 +1140,8 @@
   if(ymax>p->ymax_limit)ymax=p->ymax_limit;
   if(pmax>180)pmax=180;
   if(pmin<-180)pmin=-180;
+  pmax+=10;
+  pmin-=10;
 
   if(p->mode == 0){
     if(ymax>p->ymax)p->ymax=ymax;
@@ -1146,9 +1186,9 @@
 	pzero = (height-1)/(p->disp_pmax-p->disp_pmin)*p->disp_pmax;
 
 	/* That worked, but might have run p->max overrange */
-	if(p->disp_pmax>180.){
+	if(p->disp_pmax>190.){
 	  /* reconcile by allowing mag to overrange */
-	  p->disp_pmax = 180.;
+	  p->disp_pmax = 190.;
 	  pzero = (height-1)/(p->disp_pmax-p->disp_pmin)*p->disp_pmax;
           p->disp_ymax = p->disp_depth*pzero/(height-1);
 	}
@@ -1211,3 +1251,23 @@
   draw_and_expose(widget);
 }
 
+void plot_set_autoscale(Plot *p, int a){
+  GtkWidget *widget=GTK_WIDGET(p);
+  p->autoscale=a;
+  plot_refresh(p,NULL);
+  draw_and_expose(widget);
+}
+
+void plot_set_bold(Plot *p, int b){
+  GtkWidget *widget=GTK_WIDGET(p);
+  p->bold=b;
+  draw_and_expose(widget);
+}
+
+int plot_get_left_pad (Plot *m){
+  return m->padx;
+}
+
+int plot_get_right_pad (Plot *m){
+  return (m->link==LINK_PHASE ? m->phax : 0);
+}

Modified: trunk/spectrum/spec_plot.h
===================================================================
--- trunk/spectrum/spec_plot.h	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spec_plot.h	2012-05-16 09:59:11 UTC (rev 18286)
@@ -48,6 +48,7 @@
   GdkGC     *drawgc;
   GdkGC     *dashes;
   GdkGC     *graygc;
+  GdkGC     *phasegc;
 
   PangoLayout **lin_layout;
   PangoLayout **log_layout;
@@ -112,6 +113,7 @@
   int phtimer;
 
   int bold;
+  int autoscale;
 };
 
 struct _PlotClass{
@@ -121,7 +123,7 @@
 };
 
 GType          plot_get_type        (void);
-GtkWidget*     plot_new             (int n, int inputs, int *channels, int *rate, int bold);
+GtkWidget*     plot_new             (int n, int inputs, int *channels, int *rate);
 void	       plot_refresh         (Plot *m, int *process);
 void	       plot_setting         (Plot *m, int scale, int mode, int link, int depth, int noise);
 void	       plot_draw            (Plot *m);
@@ -129,7 +131,12 @@
 int 	       plot_width           (Plot *m);
 float**        plot_get             (Plot *m);
 void           plot_set_active      (Plot *m, int *, int *);
+void           plot_set_autoscale   (Plot *m, int);
+void           plot_set_bold   (Plot *m, int);
 
+int            plot_get_left_pad    (Plot *m);
+int            plot_get_right_pad   (Plot *m);
+
 GdkColor chcolor(int ch);
 
 G_END_DECLS

Modified: trunk/spectrum/spectrum-gtkrc
===================================================================
--- trunk/spectrum/spectrum-gtkrc	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spectrum-gtkrc	2012-05-16 09:59:11 UTC (rev 18286)
@@ -7,11 +7,11 @@
 	GtkButton::focus-line-width = 1
 	GtkButton::interior-focus = 0
 
-        bg[NORMAL]="#a8b0c0" 
-        bg[ACTIVE]="#b0d0ff" 
-        bg[PRELIGHT]="#d0e0f0" 
-        bg[SELECTED]="#d0e0f0" 
-        bg[INSENSITIVE]="#a8b0c0" 
+        bg[NORMAL]="#b0c0d8" 
+        bg[ACTIVE]="#c0e0ff" 
+        bg[PRELIGHT]="#d0e6ff" 
+        bg[SELECTED]="#d0e6ff" 
+        bg[INSENSITIVE]="#b0c0d8"  
 
         fg[NORMAL]="#000000" 
         fg[ACTIVE]="#000000" 
@@ -55,10 +55,35 @@
 
 }
 
-style "panel-text" {
-	font_name = "sans bold 7"
+style "top-control" {
+	font_name = "sans 8"
+	
+        base[NORMAL]="#b0c0d8"
+        base[ACTIVE]="#c0e0ff" 
+        bg[NORMAL]="#b0c0d8"
+        bg[ACTIVE]="#c0e0ff" 
+        base[PRELIGHT]="#d0e6ff" 
+        base[SELECTED]="#d0e6ff" 
+        base[INSENSITIVE]="#b0c0d8"  
+
+	text[NORMAL]="#000000"
 }
 
+style "top-label" {
+	font_name = "sans 8"
+	fg[NORMAL]="#405080" 
+	fg[PRELIGHT]="#405080" 
+	fg[ACTIVE]="#405080" 
+	fg[SELECTED]="#405080" 
+	fg[INSENSITIVE]="#405080" 
+}
+
+style "top-readout" {
+	font_name = "sans 8"
+}
+
+
+
 style "scale-text" {
 	font_name = "sans 7"
 }
@@ -69,9 +94,11 @@
 
 class "*" style "panel"
 
-widget "*.GtkLabel" style "panel-text"
+widget "*.top-control*" style "top-control"
+widget "*.top-label*" style "top-label"
+widget "*.top-readout*" style "top-readout"
+
 widget "*.Plot" style "scale-text"
-
 widget "*.GtkEntry" style "readout"
 class "GtkMenu" style "button-poppy"
 widget_class "*Menu*" style "button-poppy"

Modified: trunk/spectrum/spectrum.c
===================================================================
--- trunk/spectrum/spectrum.c	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/spectrum.c	2012-05-16 09:59:11 UTC (rev 18286)
@@ -35,7 +35,7 @@
 char *inputname[MAX_FILES];
 int inputs=0;
 int blocksize = 131072;
-int bold=0;
+extern int plot_bold;
 
 void handler(int sig){
   signal(sig,SIG_IGN);
@@ -133,7 +133,7 @@
       inputname[inputs++]=strdup(optarg);
       break;
     case 'T':
-      bold = 1;
+      plot_bold = 1;
       break;
     case 'b':
       /* force bit width */
@@ -296,7 +296,7 @@
   }
 
   /* go */
-  panel_go(argc,argv,bold);
+  panel_go(argc,argv);
 
   return(0);
 }

Modified: trunk/spectrum/version.h
===================================================================
--- trunk/spectrum/version.h	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/version.h	2012-05-16 09:59:11 UTC (rev 18286)
@@ -1,2 +1,2 @@
 #define VERSION "$Id$ "
-/* DO NOT EDIT: Automated versioning hack [Tue May 15 19:36:05 EDT 2012] */
+/* DO NOT EDIT: Automated versioning hack [Wed May 16 05:58:01 EDT 2012] */

Modified: trunk/spectrum/wave_panel.c
===================================================================
--- trunk/spectrum/wave_panel.c	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/wave_panel.c	2012-05-16 09:59:11 UTC (rev 18286)
@@ -450,7 +450,7 @@
   /* the Fucking Fish */
   {
     GdkPixmap *tb;
-    GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray);
+    GdkPixmap *tp=gdk_pixmap_create_from_xpm_d(root,&tb,NULL,fisharray_xpm);
     GdkGC *cgc=gdk_gc_new(tp);
     GdkGC *bgc=gdk_gc_new(tb);
     int w, h;

Modified: trunk/spectrum/waveform-gtkrc
===================================================================
--- trunk/spectrum/waveform-gtkrc	2012-05-16 02:32:48 UTC (rev 18285)
+++ trunk/spectrum/waveform-gtkrc	2012-05-16 09:59:11 UTC (rev 18286)
@@ -7,11 +7,11 @@
 	GtkButton::focus-line-width = 1
 	GtkButton::interior-focus = 0
 
-        bg[NORMAL]="#c8b8ae" 
-        bg[ACTIVE]="#ffd4b4" 
-        bg[PRELIGHT]="#f0e0d0" 
+        bg[NORMAL]="#c8c0b0" 
+        bg[ACTIVE]="#f0d8b4" 
+        bg[PRELIGHT]="#f0e0d0"  
         bg[SELECTED]="#f0e0d0" 
-        bg[INSENSITIVE]="#c8b8ae" 
+        bg[INSENSITIVE]="#c8c0b0" 
 
         fg[NORMAL]="#000000" 
         fg[ACTIVE]="#000000" 
@@ -23,7 +23,7 @@
         text[ACTIVE]="#000000" 
         text[PRELIGHT]="#000000" 
         text[SELECTED]="#000000" 
-	text[INSENSITIVE]="#b8a494" 
+	text[INSENSITIVE]="#b0a494" 
 }
 
 style "panel" {
@@ -43,7 +43,7 @@
 
 
 style "controlpanel" {
-	bg[NORMAL]="#b8a494" 
+	bg[NORMAL]="#b0a494" 
 
 	text[NORMAL]="#000000"
 	text[ACTIVE]="#000000"



More information about the commits mailing list