summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2025-05-05 12:40:42 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2025-05-05 12:40:42 -0400
commitbae3f3b8301e8d13163f27c1e845302b9b65009d (patch)
treee63c306575ee55a30767ff3e08515b3cf200cf8a
parentb1ed855ea65d7c080e9c7921e00eddde4baf9f1b (diff)
Matlab files for HW10 & HW11
-rw-r--r--MATLAB/HW10/data.csv2049
-rw-r--r--MATLAB/HW10/hw10.asv77
-rw-r--r--MATLAB/HW10/hw10.m79
-rw-r--r--MATLAB/HW10/sawtooth-125Hz.pngbin0 -> 34380 bytes
-rw-r--r--MATLAB/HW10/sawtooth-125Hz2cycles.pngbin0 -> 29007 bytes
-rw-r--r--MATLAB/HW10/sawtooth.pngbin0 -> 31686 bytes
-rw-r--r--MATLAB/HW10/sawtooth2cycles.pngbin0 -> 29836 bytes
-rw-r--r--MATLAB/HW10/sq125fft.pngbin0 -> 15272 bytes
-rw-r--r--MATLAB/HW10/sqfft.pngbin0 -> 15507 bytes
-rw-r--r--MATLAB/HW10/square-125Hz.pngbin0 -> 24460 bytes
-rw-r--r--MATLAB/HW10/square-125Hz2cycles.pngbin0 -> 25116 bytes
-rw-r--r--MATLAB/HW10/square.pngbin0 -> 21849 bytes
-rw-r--r--MATLAB/HW10/square2cycles.pngbin0 -> 23464 bytes
-rw-r--r--MATLAB/HW10/sw125fft.pngbin0 -> 15614 bytes
-rw-r--r--MATLAB/HW10/swfft.pngbin0 -> 15627 bytes
-rw-r--r--MATLAB/HW10/tfft.pngbin0 -> 13383 bytes
-rw-r--r--MATLAB/HW10/triangle.pngbin0 -> 35031 bytes
-rw-r--r--MATLAB/HW10/triangle2cycles.pngbin0 -> 32410 bytes
-rw-r--r--MATLAB/HW11/data.csv2049
-rw-r--r--MATLAB/HW11/hw10.asv77
-rw-r--r--MATLAB/HW11/hw11.m122
-rw-r--r--MATLAB/HW11/mixed-100Hz.pngbin0 -> 29566 bytes
-rw-r--r--MATLAB/HW11/mixed-2-cycles.pngbin0 -> 39695 bytes
-rw-r--r--MATLAB/HW11/msineFFT.pngbin0 -> 15526 bytes
-rw-r--r--MATLAB/HW11/sawtooth-100Hz-Generated-2cycles.pngbin0 -> 30002 bytes
-rw-r--r--MATLAB/HW11/sawtooth-100Hz-Generated.pngbin0 -> 36550 bytes
-rw-r--r--MATLAB/HW11/sawtooth-125Hz.pngbin0 -> 34380 bytes
-rw-r--r--MATLAB/HW11/sawtooth-125Hz2cycles.pngbin0 -> 29007 bytes
-rw-r--r--MATLAB/HW11/sawtooth.pngbin0 -> 31686 bytes
-rw-r--r--MATLAB/HW11/sawtooth2cycles.pngbin0 -> 29836 bytes
-rw-r--r--MATLAB/HW11/sine-100Hz-2-cycles.pngbin0 -> 32654 bytes
-rw-r--r--MATLAB/HW11/sine-100Hz.pngbin0 -> 37406 bytes
-rw-r--r--MATLAB/HW11/sine100FFT.pngbin0 -> 14746 bytes
-rw-r--r--MATLAB/HW11/sq100FFT.pngbin0 -> 17880 bytes
-rw-r--r--MATLAB/HW11/sq100GFFT.pngbin0 -> 17845 bytes
-rw-r--r--MATLAB/HW11/sq125fft.pngbin0 -> 15272 bytes
-rw-r--r--MATLAB/HW11/sqfft.pngbin0 -> 15507 bytes
-rw-r--r--MATLAB/HW11/square-100Hz-2-cycles.pngbin0 -> 22823 bytes
-rw-r--r--MATLAB/HW11/square-100Hz-Generated-2cycles.pngbin0 -> 25281 bytes
-rw-r--r--MATLAB/HW11/square-100Hz-Generated.pngbin0 -> 25226 bytes
-rw-r--r--MATLAB/HW11/square-100Hz.pngbin0 -> 21885 bytes
-rw-r--r--MATLAB/HW11/square-125Hz.pngbin0 -> 24460 bytes
-rw-r--r--MATLAB/HW11/square-125Hz2cycles.pngbin0 -> 25116 bytes
-rw-r--r--MATLAB/HW11/square.pngbin0 -> 21849 bytes
-rw-r--r--MATLAB/HW11/square2cycles.pngbin0 -> 23464 bytes
-rw-r--r--MATLAB/HW11/sw100GFFT.pngbin0 -> 18454 bytes
-rw-r--r--MATLAB/HW11/sw125fft.pngbin0 -> 15614 bytes
-rw-r--r--MATLAB/HW11/swfft.pngbin0 -> 15627 bytes
-rw-r--r--MATLAB/HW11/t100FFT.pngbin0 -> 14548 bytes
-rw-r--r--MATLAB/HW11/tfft.pngbin0 -> 13383 bytes
-rw-r--r--MATLAB/HW11/triangle-100Hz-2-cycles.pngbin0 -> 33573 bytes
-rw-r--r--MATLAB/HW11/triangle-100Hz.pngbin0 -> 39956 bytes
-rw-r--r--MATLAB/HW11/triangle.pngbin0 -> 35031 bytes
-rw-r--r--MATLAB/HW11/triangle2cycles.pngbin0 -> 32410 bytes
-rw-r--r--MATLAB/mixed-100Hz.pngbin0 -> 29566 bytes
-rw-r--r--MATLAB/mixed-2-cycles.pngbin0 -> 39695 bytes
-rw-r--r--MATLAB/sawtooth-100Hz-Generated-2cycles.pngbin0 -> 30002 bytes
-rw-r--r--MATLAB/sawtooth-100Hz-Generated.pngbin0 -> 36550 bytes
-rw-r--r--MATLAB/sawtooth-125Hz.pngbin0 -> 34380 bytes
-rw-r--r--MATLAB/sawtooth-125Hz2cycles.pngbin0 -> 29007 bytes
-rw-r--r--MATLAB/sawtooth.pngbin0 -> 31686 bytes
-rw-r--r--MATLAB/sawtooth2cycles.pngbin0 -> 29836 bytes
-rw-r--r--MATLAB/sine-100Hz-2-cycles.pngbin0 -> 32654 bytes
-rw-r--r--MATLAB/sine-100Hz.pngbin0 -> 37406 bytes
-rw-r--r--MATLAB/square-100Hz-2-cycles.pngbin0 -> 22823 bytes
-rw-r--r--MATLAB/square-100Hz-Generated-2cycles.pngbin0 -> 25281 bytes
-rw-r--r--MATLAB/square-100Hz-Generated.pngbin0 -> 25226 bytes
-rw-r--r--MATLAB/square-100Hz.pngbin0 -> 21885 bytes
-rw-r--r--MATLAB/square-125Hz.pngbin0 -> 24460 bytes
-rw-r--r--MATLAB/square-125Hz2cycles.pngbin0 -> 25116 bytes
-rw-r--r--MATLAB/square.pngbin0 -> 21849 bytes
-rw-r--r--MATLAB/square2cycles.pngbin0 -> 23464 bytes
-rw-r--r--MATLAB/triangle-100Hz-2-cycles.pngbin0 -> 33573 bytes
-rw-r--r--MATLAB/triangle-100Hz.pngbin0 -> 39956 bytes
-rw-r--r--MATLAB/triangle.pngbin0 -> 35031 bytes
-rw-r--r--MATLAB/triangle2cycles.pngbin0 -> 32410 bytes
-rw-r--r--cmpen472hw11_McDonnell/bin/Project.xpr1
-rw-r--r--cmpen472hw12_McDonnell/Sources/cmpen472hw12_McDonnell.asm1097
78 files changed, 5551 insertions, 0 deletions
diff --git a/MATLAB/HW10/data.csv b/MATLAB/HW10/data.csv
new file mode 100644
index 0000000..92d0d4e
--- /dev/null
+++ b/MATLAB/HW10/data.csv
@@ -0,0 +1,2049 @@
+Sawtooth,Triangle,Square,Sawtooth 125Hz,Square 125Hz,time,sawtooth 250Hz
+0,0,0,0,0,0,0
+1,1,0,4,0,125,8
+2,2,0,8,0,250,16
+3,3,0,12,0,375,24
+4,4,0,16,0,500,32
+5,5,0,20,0,625,40
+6,6,0,24,0,750,48
+7,7,0,28,0,875,56
+8,8,0,32,0,1000,64
+9,9,0,36,0,1125,72
+10,10,0,40,0,1250,80
+11,11,0,44,0,1375,88
+12,12,0,48,0,1500,96
+13,13,0,52,0,1625,104
+14,14,0,56,0,1750,112
+15,15,0,60,0,1875,120
+16,16,0,64,0,2000,128
+17,17,0,68,0,2125,136
+18,18,0,72,0,2250,144
+19,19,0,76,0,2375,152
+20,20,0,80,0,2500,160
+21,21,0,84,0,2625,168
+22,22,0,88,0,2750,176
+23,23,0,92,0,2875,184
+24,24,0,96,0,3000,192
+25,25,0,100,0,3125,200
+26,26,0,104,0,3250,208
+27,27,0,108,0,3375,216
+28,28,0,112,0,3500,224
+29,29,0,116,0,3625,232
+30,30,0,120,0,3750,240
+31,31,0,124,0,3875,248
+32,32,0,128,255,4000,0
+33,33,0,132,255,4125,8
+34,34,0,136,255,4250,16
+35,35,0,140,255,4375,24
+36,36,0,144,255,4500,32
+37,37,0,148,255,4625,40
+38,38,0,152,255,4750,48
+39,39,0,156,255,4875,56
+40,40,0,160,255,5000,64
+41,41,0,164,255,5125,72
+42,42,0,168,255,5250,80
+43,43,0,172,255,5375,88
+44,44,0,176,255,5500,96
+45,45,0,180,255,5625,104
+46,46,0,184,255,5750,112
+47,47,0,188,255,5875,120
+48,48,0,192,255,6000,128
+49,49,0,196,255,6125,136
+50,50,0,200,255,6250,144
+51,51,0,204,255,6375,152
+52,52,0,208,255,6500,160
+53,53,0,212,255,6625,168
+54,54,0,216,255,6750,176
+55,55,0,220,255,6875,184
+56,56,0,224,255,7000,192
+57,57,0,228,255,7125,200
+58,58,0,232,255,7250,208
+59,59,0,236,255,7375,216
+60,60,0,240,255,7500,224
+61,61,0,244,255,7625,232
+62,62,0,248,255,7750,240
+63,63,0,252,255,7875,248
+64,64,0,0,0,8000,0
+65,65,0,4,0,8125,8
+66,66,0,8,0,8250,16
+67,67,0,12,0,8375,24
+68,68,0,16,0,8500,32
+69,69,0,20,0,8625,40
+70,70,0,24,0,8750,48
+71,71,0,28,0,8875,56
+72,72,0,32,0,9000,64
+73,73,0,36,0,9125,72
+74,74,0,40,0,9250,80
+75,75,0,44,0,9375,88
+76,76,0,48,0,9500,96
+77,77,0,52,0,9625,104
+78,78,0,56,0,9750,112
+79,79,0,60,0,9875,120
+80,80,0,64,0,10000,128
+81,81,0,68,0,10125,136
+82,82,0,72,0,10250,144
+83,83,0,76,0,10375,152
+84,84,0,80,0,10500,160
+85,85,0,84,0,10625,168
+86,86,0,88,0,10750,176
+87,87,0,92,0,10875,184
+88,88,0,96,0,11000,192
+89,89,0,100,0,11125,200
+90,90,0,104,0,11250,208
+91,91,0,108,0,11375,216
+92,92,0,112,0,11500,224
+93,93,0,116,0,11625,232
+94,94,0,120,0,11750,240
+95,95,0,124,0,11875,248
+96,96,0,128,255,12000,0
+97,97,0,132,255,12125,8
+98,98,0,136,255,12250,16
+99,99,0,140,255,12375,24
+100,100,0,144,255,12500,32
+101,101,0,148,255,12625,40
+102,102,0,152,255,12750,48
+103,103,0,156,255,12875,56
+104,104,0,160,255,13000,64
+105,105,0,164,255,13125,72
+106,106,0,168,255,13250,80
+107,107,0,172,255,13375,88
+108,108,0,176,255,13500,96
+109,109,0,180,255,13625,104
+110,110,0,184,255,13750,112
+111,111,0,188,255,13875,120
+112,112,0,192,255,14000,128
+113,113,0,196,255,14125,136
+114,114,0,200,255,14250,144
+115,115,0,204,255,14375,152
+116,116,0,208,255,14500,160
+117,117,0,212,255,14625,168
+118,118,0,216,255,14750,176
+119,119,0,220,255,14875,184
+120,120,0,224,255,15000,192
+121,121,0,228,255,15125,200
+122,122,0,232,255,15250,208
+123,123,0,236,255,15375,216
+124,124,0,240,255,15500,224
+125,125,0,244,255,15625,232
+126,126,0,248,255,15750,240
+127,127,0,252,255,15875,248
+128,128,0,0,0,16000,0
+129,129,0,4,0,16125,8
+130,130,0,8,0,16250,16
+131,131,0,12,0,16375,24
+132,132,0,16,0,16500,32
+133,133,0,20,0,16625,40
+134,134,0,24,0,16750,48
+135,135,0,28,0,16875,56
+136,136,0,32,0,17000,64
+137,137,0,36,0,17125,72
+138,138,0,40,0,17250,80
+139,139,0,44,0,17375,88
+140,140,0,48,0,17500,96
+141,141,0,52,0,17625,104
+142,142,0,56,0,17750,112
+143,143,0,60,0,17875,120
+144,144,0,64,0,18000,128
+145,145,0,68,0,18125,136
+146,146,0,72,0,18250,144
+147,147,0,76,0,18375,152
+148,148,0,80,0,18500,160
+149,149,0,84,0,18625,168
+150,150,0,88,0,18750,176
+151,151,0,92,0,18875,184
+152,152,0,96,0,19000,192
+153,153,0,100,0,19125,200
+154,154,0,104,0,19250,208
+155,155,0,108,0,19375,216
+156,156,0,112,0,19500,224
+157,157,0,116,0,19625,232
+158,158,0,120,0,19750,240
+159,159,0,124,0,19875,248
+160,160,0,128,255,20000,0
+161,161,0,132,255,20125,8
+162,162,0,136,255,20250,16
+163,163,0,140,255,20375,24
+164,164,0,144,255,20500,32
+165,165,0,148,255,20625,40
+166,166,0,152,255,20750,48
+167,167,0,156,255,20875,56
+168,168,0,160,255,21000,64
+169,169,0,164,255,21125,72
+170,170,0,168,255,21250,80
+171,171,0,172,255,21375,88
+172,172,0,176,255,21500,96
+173,173,0,180,255,21625,104
+174,174,0,184,255,21750,112
+175,175,0,188,255,21875,120
+176,176,0,192,255,22000,128
+177,177,0,196,255,22125,136
+178,178,0,200,255,22250,144
+179,179,0,204,255,22375,152
+180,180,0,208,255,22500,160
+181,181,0,212,255,22625,168
+182,182,0,216,255,22750,176
+183,183,0,220,255,22875,184
+184,184,0,224,255,23000,192
+185,185,0,228,255,23125,200
+186,186,0,232,255,23250,208
+187,187,0,236,255,23375,216
+188,188,0,240,255,23500,224
+189,189,0,244,255,23625,232
+190,190,0,248,255,23750,240
+191,191,0,252,255,23875,248
+192,192,0,0,0,24000,0
+193,193,0,4,0,24125,8
+194,194,0,8,0,24250,16
+195,195,0,12,0,24375,24
+196,196,0,16,0,24500,32
+197,197,0,20,0,24625,40
+198,198,0,24,0,24750,48
+199,199,0,28,0,24875,56
+200,200,0,32,0,25000,64
+201,201,0,36,0,25125,72
+202,202,0,40,0,25250,80
+203,203,0,44,0,25375,88
+204,204,0,48,0,25500,96
+205,205,0,52,0,25625,104
+206,206,0,56,0,25750,112
+207,207,0,60,0,25875,120
+208,208,0,64,0,26000,128
+209,209,0,68,0,26125,136
+210,210,0,72,0,26250,144
+211,211,0,76,0,26375,152
+212,212,0,80,0,26500,160
+213,213,0,84,0,26625,168
+214,214,0,88,0,26750,176
+215,215,0,92,0,26875,184
+216,216,0,96,0,27000,192
+217,217,0,100,0,27125,200
+218,218,0,104,0,27250,208
+219,219,0,108,0,27375,216
+220,220,0,112,0,27500,224
+221,221,0,116,0,27625,232
+222,222,0,120,0,27750,240
+223,223,0,124,0,27875,248
+224,224,0,128,255,28000,0
+225,225,0,132,255,28125,8
+226,226,0,136,255,28250,16
+227,227,0,140,255,28375,24
+228,228,0,144,255,28500,32
+229,229,0,148,255,28625,40
+230,230,0,152,255,28750,48
+231,231,0,156,255,28875,56
+232,232,0,160,255,29000,64
+233,233,0,164,255,29125,72
+234,234,0,168,255,29250,80
+235,235,0,172,255,29375,88
+236,236,0,176,255,29500,96
+237,237,0,180,255,29625,104
+238,238,0,184,255,29750,112
+239,239,0,188,255,29875,120
+240,240,0,192,255,30000,128
+241,241,0,196,255,30125,136
+242,242,0,200,255,30250,144
+243,243,0,204,255,30375,152
+244,244,0,208,255,30500,160
+245,245,0,212,255,30625,168
+246,246,0,216,255,30750,176
+247,247,0,220,255,30875,184
+248,248,0,224,255,31000,192
+249,249,0,228,255,31125,200
+250,250,0,232,255,31250,208
+251,251,0,236,255,31375,216
+252,252,0,240,255,31500,224
+253,253,0,244,255,31625,232
+254,254,0,248,255,31750,240
+255,255,0,252,255,31875,248
+0,255,255,0,0,32000,0
+1,254,255,4,0,32125,8
+2,253,255,8,0,32250,16
+3,252,255,12,0,32375,24
+4,251,255,16,0,32500,32
+5,250,255,20,0,32625,40
+6,249,255,24,0,32750,48
+7,248,255,28,0,32875,56
+8,247,255,32,0,33000,64
+9,246,255,36,0,33125,72
+10,245,255,40,0,33250,80
+11,244,255,44,0,33375,88
+12,243,255,48,0,33500,96
+13,242,255,52,0,33625,104
+14,241,255,56,0,33750,112
+15,240,255,60,0,33875,120
+16,239,255,64,0,34000,128
+17,238,255,68,0,34125,136
+18,237,255,72,0,34250,144
+19,236,255,76,0,34375,152
+20,235,255,80,0,34500,160
+21,234,255,84,0,34625,168
+22,233,255,88,0,34750,176
+23,232,255,92,0,34875,184
+24,231,255,96,0,35000,192
+25,230,255,100,0,35125,200
+26,229,255,104,0,35250,208
+27,228,255,108,0,35375,216
+28,227,255,112,0,35500,224
+29,226,255,116,0,35625,232
+30,225,255,120,0,35750,240
+31,224,255,124,0,35875,248
+32,223,255,128,255,36000,0
+33,222,255,132,255,36125,8
+34,221,255,136,255,36250,16
+35,220,255,140,255,36375,24
+36,219,255,144,255,36500,32
+37,218,255,148,255,36625,40
+38,217,255,152,255,36750,48
+39,216,255,156,255,36875,56
+40,215,255,160,255,37000,64
+41,214,255,164,255,37125,72
+42,213,255,168,255,37250,80
+43,212,255,172,255,37375,88
+44,211,255,176,255,37500,96
+45,210,255,180,255,37625,104
+46,209,255,184,255,37750,112
+47,208,255,188,255,37875,120
+48,207,255,192,255,38000,128
+49,206,255,196,255,38125,136
+50,205,255,200,255,38250,144
+51,204,255,204,255,38375,152
+52,203,255,208,255,38500,160
+53,202,255,212,255,38625,168
+54,201,255,216,255,38750,176
+55,200,255,220,255,38875,184
+56,199,255,224,255,39000,192
+57,198,255,228,255,39125,200
+58,197,255,232,255,39250,208
+59,196,255,236,255,39375,216
+60,195,255,240,255,39500,224
+61,194,255,244,255,39625,232
+62,193,255,248,255,39750,240
+63,192,255,252,255,39875,248
+64,191,255,0,0,40000,0
+65,190,255,4,0,40125,8
+66,189,255,8,0,40250,16
+67,188,255,12,0,40375,24
+68,187,255,16,0,40500,32
+69,186,255,20,0,40625,40
+70,185,255,24,0,40750,48
+71,184,255,28,0,40875,56
+72,183,255,32,0,41000,64
+73,182,255,36,0,41125,72
+74,181,255,40,0,41250,80
+75,180,255,44,0,41375,88
+76,179,255,48,0,41500,96
+77,178,255,52,0,41625,104
+78,177,255,56,0,41750,112
+79,176,255,60,0,41875,120
+80,175,255,64,0,42000,128
+81,174,255,68,0,42125,136
+82,173,255,72,0,42250,144
+83,172,255,76,0,42375,152
+84,171,255,80,0,42500,160
+85,170,255,84,0,42625,168
+86,169,255,88,0,42750,176
+87,168,255,92,0,42875,184
+88,167,255,96,0,43000,192
+89,166,255,100,0,43125,200
+90,165,255,104,0,43250,208
+91,164,255,108,0,43375,216
+92,163,255,112,0,43500,224
+93,162,255,116,0,43625,232
+94,161,255,120,0,43750,240
+95,160,255,124,0,43875,248
+96,159,255,128,255,44000,0
+97,158,255,132,255,44125,8
+98,157,255,136,255,44250,16
+99,156,255,140,255,44375,24
+100,155,255,144,255,44500,32
+101,154,255,148,255,44625,40
+102,153,255,152,255,44750,48
+103,152,255,156,255,44875,56
+104,151,255,160,255,45000,64
+105,150,255,164,255,45125,72
+106,149,255,168,255,45250,80
+107,148,255,172,255,45375,88
+108,147,255,176,255,45500,96
+109,146,255,180,255,45625,104
+110,145,255,184,255,45750,112
+111,144,255,188,255,45875,120
+112,143,255,192,255,46000,128
+113,142,255,196,255,46125,136
+114,141,255,200,255,46250,144
+115,140,255,204,255,46375,152
+116,139,255,208,255,46500,160
+117,138,255,212,255,46625,168
+118,137,255,216,255,46750,176
+119,136,255,220,255,46875,184
+120,135,255,224,255,47000,192
+121,134,255,228,255,47125,200
+122,133,255,232,255,47250,208
+123,132,255,236,255,47375,216
+124,131,255,240,255,47500,224
+125,130,255,244,255,47625,232
+126,129,255,248,255,47750,240
+127,128,255,252,255,47875,248
+128,127,255,0,0,48000,0
+129,126,255,4,0,48125,8
+130,125,255,8,0,48250,16
+131,124,255,12,0,48375,24
+132,123,255,16,0,48500,32
+133,122,255,20,0,48625,40
+134,121,255,24,0,48750,48
+135,120,255,28,0,48875,56
+136,119,255,32,0,49000,64
+137,118,255,36,0,49125,72
+138,117,255,40,0,49250,80
+139,116,255,44,0,49375,88
+140,115,255,48,0,49500,96
+141,114,255,52,0,49625,104
+142,113,255,56,0,49750,112
+143,112,255,60,0,49875,120
+144,111,255,64,0,50000,128
+145,110,255,68,0,50125,136
+146,109,255,72,0,50250,144
+147,108,255,76,0,50375,152
+148,107,255,80,0,50500,160
+149,106,255,84,0,50625,168
+150,105,255,88,0,50750,176
+151,104,255,92,0,50875,184
+152,103,255,96,0,51000,192
+153,102,255,100,0,51125,200
+154,101,255,104,0,51250,208
+155,100,255,108,0,51375,216
+156,99,255,112,0,51500,224
+157,98,255,116,0,51625,232
+158,97,255,120,0,51750,240
+159,96,255,124,0,51875,248
+160,95,255,128,255,52000,0
+161,94,255,132,255,52125,8
+162,93,255,136,255,52250,16
+163,92,255,140,255,52375,24
+164,91,255,144,255,52500,32
+165,90,255,148,255,52625,40
+166,89,255,152,255,52750,48
+167,88,255,156,255,52875,56
+168,87,255,160,255,53000,64
+169,86,255,164,255,53125,72
+170,85,255,168,255,53250,80
+171,84,255,172,255,53375,88
+172,83,255,176,255,53500,96
+173,82,255,180,255,53625,104
+174,81,255,184,255,53750,112
+175,80,255,188,255,53875,120
+176,79,255,192,255,54000,128
+177,78,255,196,255,54125,136
+178,77,255,200,255,54250,144
+179,76,255,204,255,54375,152
+180,75,255,208,255,54500,160
+181,74,255,212,255,54625,168
+182,73,255,216,255,54750,176
+183,72,255,220,255,54875,184
+184,71,255,224,255,55000,192
+185,70,255,228,255,55125,200
+186,69,255,232,255,55250,208
+187,68,255,236,255,55375,216
+188,67,255,240,255,55500,224
+189,66,255,244,255,55625,232
+190,65,255,248,255,55750,240
+191,64,255,252,255,55875,248
+192,63,255,0,0,56000,0
+193,62,255,4,0,56125,8
+194,61,255,8,0,56250,16
+195,60,255,12,0,56375,24
+196,59,255,16,0,56500,32
+197,58,255,20,0,56625,40
+198,57,255,24,0,56750,48
+199,56,255,28,0,56875,56
+200,55,255,32,0,57000,64
+201,54,255,36,0,57125,72
+202,53,255,40,0,57250,80
+203,52,255,44,0,57375,88
+204,51,255,48,0,57500,96
+205,50,255,52,0,57625,104
+206,49,255,56,0,57750,112
+207,48,255,60,0,57875,120
+208,47,255,64,0,58000,128
+209,46,255,68,0,58125,136
+210,45,255,72,0,58250,144
+211,44,255,76,0,58375,152
+212,43,255,80,0,58500,160
+213,42,255,84,0,58625,168
+214,41,255,88,0,58750,176
+215,40,255,92,0,58875,184
+216,39,255,96,0,59000,192
+217,38,255,100,0,59125,200
+218,37,255,104,0,59250,208
+219,36,255,108,0,59375,216
+220,35,255,112,0,59500,224
+221,34,255,116,0,59625,232
+222,33,255,120,0,59750,240
+223,32,255,124,0,59875,248
+224,31,255,128,255,60000,0
+225,30,255,132,255,60125,8
+226,29,255,136,255,60250,16
+227,28,255,140,255,60375,24
+228,27,255,144,255,60500,32
+229,26,255,148,255,60625,40
+230,25,255,152,255,60750,48
+231,24,255,156,255,60875,56
+232,23,255,160,255,61000,64
+233,22,255,164,255,61125,72
+234,21,255,168,255,61250,80
+235,20,255,172,255,61375,88
+236,19,255,176,255,61500,96
+237,18,255,180,255,61625,104
+238,17,255,184,255,61750,112
+239,16,255,188,255,61875,120
+240,15,255,192,255,62000,128
+241,14,255,196,255,62125,136
+242,13,255,200,255,62250,144
+243,12,255,204,255,62375,152
+244,11,255,208,255,62500,160
+245,10,255,212,255,62625,168
+246,9,255,216,255,62750,176
+247,8,255,220,255,62875,184
+248,7,255,224,255,63000,192
+249,6,255,228,255,63125,200
+250,5,255,232,255,63250,208
+251,4,255,236,255,63375,216
+252,3,255,240,255,63500,224
+253,2,255,244,255,63625,232
+254,1,255,248,255,63750,240
+255,0,255,252,255,63875,248
+0,0,0,0,0,64000,0
+1,1,0,4,0,64125,8
+2,2,0,8,0,64250,16
+3,3,0,12,0,64375,24
+4,4,0,16,0,64500,32
+5,5,0,20,0,64625,40
+6,6,0,24,0,64750,48
+7,7,0,28,0,64875,56
+8,8,0,32,0,65000,64
+9,9,0,36,0,65125,72
+10,10,0,40,0,65250,80
+11,11,0,44,0,65375,88
+12,12,0,48,0,65500,96
+13,13,0,52,0,65625,104
+14,14,0,56,0,65750,112
+15,15,0,60,0,65875,120
+16,16,0,64,0,66000,128
+17,17,0,68,0,66125,136
+18,18,0,72,0,66250,144
+19,19,0,76,0,66375,152
+20,20,0,80,0,66500,160
+21,21,0,84,0,66625,168
+22,22,0,88,0,66750,176
+23,23,0,92,0,66875,184
+24,24,0,96,0,67000,192
+25,25,0,100,0,67125,200
+26,26,0,104,0,67250,208
+27,27,0,108,0,67375,216
+28,28,0,112,0,67500,224
+29,29,0,116,0,67625,232
+30,30,0,120,0,67750,240
+31,31,0,124,0,67875,248
+32,32,0,128,255,68000,0
+33,33,0,132,255,68125,8
+34,34,0,136,255,68250,16
+35,35,0,140,255,68375,24
+36,36,0,144,255,68500,32
+37,37,0,148,255,68625,40
+38,38,0,152,255,68750,48
+39,39,0,156,255,68875,56
+40,40,0,160,255,69000,64
+41,41,0,164,255,69125,72
+42,42,0,168,255,69250,80
+43,43,0,172,255,69375,88
+44,44,0,176,255,69500,96
+45,45,0,180,255,69625,104
+46,46,0,184,255,69750,112
+47,47,0,188,255,69875,120
+48,48,0,192,255,70000,128
+49,49,0,196,255,70125,136
+50,50,0,200,255,70250,144
+51,51,0,204,255,70375,152
+52,52,0,208,255,70500,160
+53,53,0,212,255,70625,168
+54,54,0,216,255,70750,176
+55,55,0,220,255,70875,184
+56,56,0,224,255,71000,192
+57,57,0,228,255,71125,200
+58,58,0,232,255,71250,208
+59,59,0,236,255,71375,216
+60,60,0,240,255,71500,224
+61,61,0,244,255,71625,232
+62,62,0,248,255,71750,240
+63,63,0,252,255,71875,248
+64,64,0,0,0,72000,0
+65,65,0,4,0,72125,8
+66,66,0,8,0,72250,16
+67,67,0,12,0,72375,24
+68,68,0,16,0,72500,32
+69,69,0,20,0,72625,40
+70,70,0,24,0,72750,48
+71,71,0,28,0,72875,56
+72,72,0,32,0,73000,64
+73,73,0,36,0,73125,72
+74,74,0,40,0,73250,80
+75,75,0,44,0,73375,88
+76,76,0,48,0,73500,96
+77,77,0,52,0,73625,104
+78,78,0,56,0,73750,112
+79,79,0,60,0,73875,120
+80,80,0,64,0,74000,128
+81,81,0,68,0,74125,136
+82,82,0,72,0,74250,144
+83,83,0,76,0,74375,152
+84,84,0,80,0,74500,160
+85,85,0,84,0,74625,168
+86,86,0,88,0,74750,176
+87,87,0,92,0,74875,184
+88,88,0,96,0,75000,192
+89,89,0,100,0,75125,200
+90,90,0,104,0,75250,208
+91,91,0,108,0,75375,216
+92,92,0,112,0,75500,224
+93,93,0,116,0,75625,232
+94,94,0,120,0,75750,240
+95,95,0,124,0,75875,248
+96,96,0,128,255,76000,0
+97,97,0,132,255,76125,8
+98,98,0,136,255,76250,16
+99,99,0,140,255,76375,24
+100,100,0,144,255,76500,32
+101,101,0,148,255,76625,40
+102,102,0,152,255,76750,48
+103,103,0,156,255,76875,56
+104,104,0,160,255,77000,64
+105,105,0,164,255,77125,72
+106,106,0,168,255,77250,80
+107,107,0,172,255,77375,88
+108,108,0,176,255,77500,96
+109,109,0,180,255,77625,104
+110,110,0,184,255,77750,112
+111,111,0,188,255,77875,120
+112,112,0,192,255,78000,128
+113,113,0,196,255,78125,136
+114,114,0,200,255,78250,144
+115,115,0,204,255,78375,152
+116,116,0,208,255,78500,160
+117,117,0,212,255,78625,168
+118,118,0,216,255,78750,176
+119,119,0,220,255,78875,184
+120,120,0,224,255,79000,192
+121,121,0,228,255,79125,200
+122,122,0,232,255,79250,208
+123,123,0,236,255,79375,216
+124,124,0,240,255,79500,224
+125,125,0,244,255,79625,232
+126,126,0,248,255,79750,240
+127,127,0,252,255,79875,248
+128,128,0,0,0,80000,0
+129,129,0,4,0,80125,8
+130,130,0,8,0,80250,16
+131,131,0,12,0,80375,24
+132,132,0,16,0,80500,32
+133,133,0,20,0,80625,40
+134,134,0,24,0,80750,48
+135,135,0,28,0,80875,56
+136,136,0,32,0,81000,64
+137,137,0,36,0,81125,72
+138,138,0,40,0,81250,80
+139,139,0,44,0,81375,88
+140,140,0,48,0,81500,96
+141,141,0,52,0,81625,104
+142,142,0,56,0,81750,112
+143,143,0,60,0,81875,120
+144,144,0,64,0,82000,128
+145,145,0,68,0,82125,136
+146,146,0,72,0,82250,144
+147,147,0,76,0,82375,152
+148,148,0,80,0,82500,160
+149,149,0,84,0,82625,168
+150,150,0,88,0,82750,176
+151,151,0,92,0,82875,184
+152,152,0,96,0,83000,192
+153,153,0,100,0,83125,200
+154,154,0,104,0,83250,208
+155,155,0,108,0,83375,216
+156,156,0,112,0,83500,224
+157,157,0,116,0,83625,232
+158,158,0,120,0,83750,240
+159,159,0,124,0,83875,248
+160,160,0,128,255,84000,0
+161,161,0,132,255,84125,8
+162,162,0,136,255,84250,16
+163,163,0,140,255,84375,24
+164,164,0,144,255,84500,32
+165,165,0,148,255,84625,40
+166,166,0,152,255,84750,48
+167,167,0,156,255,84875,56
+168,168,0,160,255,85000,64
+169,169,0,164,255,85125,72
+170,170,0,168,255,85250,80
+171,171,0,172,255,85375,88
+172,172,0,176,255,85500,96
+173,173,0,180,255,85625,104
+174,174,0,184,255,85750,112
+175,175,0,188,255,85875,120
+176,176,0,192,255,86000,128
+177,177,0,196,255,86125,136
+178,178,0,200,255,86250,144
+179,179,0,204,255,86375,152
+180,180,0,208,255,86500,160
+181,181,0,212,255,86625,168
+182,182,0,216,255,86750,176
+183,183,0,220,255,86875,184
+184,184,0,224,255,87000,192
+185,185,0,228,255,87125,200
+186,186,0,232,255,87250,208
+187,187,0,236,255,87375,216
+188,188,0,240,255,87500,224
+189,189,0,244,255,87625,232
+190,190,0,248,255,87750,240
+191,191,0,252,255,87875,248
+192,192,0,0,0,88000,0
+193,193,0,4,0,88125,8
+194,194,0,8,0,88250,16
+195,195,0,12,0,88375,24
+196,196,0,16,0,88500,32
+197,197,0,20,0,88625,40
+198,198,0,24,0,88750,48
+199,199,0,28,0,88875,56
+200,200,0,32,0,89000,64
+201,201,0,36,0,89125,72
+202,202,0,40,0,89250,80
+203,203,0,44,0,89375,88
+204,204,0,48,0,89500,96
+205,205,0,52,0,89625,104
+206,206,0,56,0,89750,112
+207,207,0,60,0,89875,120
+208,208,0,64,0,90000,128
+209,209,0,68,0,90125,136
+210,210,0,72,0,90250,144
+211,211,0,76,0,90375,152
+212,212,0,80,0,90500,160
+213,213,0,84,0,90625,168
+214,214,0,88,0,90750,176
+215,215,0,92,0,90875,184
+216,216,0,96,0,91000,192
+217,217,0,100,0,91125,200
+218,218,0,104,0,91250,208
+219,219,0,108,0,91375,216
+220,220,0,112,0,91500,224
+221,221,0,116,0,91625,232
+222,222,0,120,0,91750,240
+223,223,0,124,0,91875,248
+224,224,0,128,255,92000,0
+225,225,0,132,255,92125,8
+226,226,0,136,255,92250,16
+227,227,0,140,255,92375,24
+228,228,0,144,255,92500,32
+229,229,0,148,255,92625,40
+230,230,0,152,255,92750,48
+231,231,0,156,255,92875,56
+232,232,0,160,255,93000,64
+233,233,0,164,255,93125,72
+234,234,0,168,255,93250,80
+235,235,0,172,255,93375,88
+236,236,0,176,255,93500,96
+237,237,0,180,255,93625,104
+238,238,0,184,255,93750,112
+239,239,0,188,255,93875,120
+240,240,0,192,255,94000,128
+241,241,0,196,255,94125,136
+242,242,0,200,255,94250,144
+243,243,0,204,255,94375,152
+244,244,0,208,255,94500,160
+245,245,0,212,255,94625,168
+246,246,0,216,255,94750,176
+247,247,0,220,255,94875,184
+248,248,0,224,255,95000,192
+249,249,0,228,255,95125,200
+250,250,0,232,255,95250,208
+251,251,0,236,255,95375,216
+252,252,0,240,255,95500,224
+253,253,0,244,255,95625,232
+254,254,0,248,255,95750,240
+255,255,0,252,255,95875,248
+0,255,255,0,0,96000,0
+1,254,255,4,0,96125,8
+2,253,255,8,0,96250,16
+3,252,255,12,0,96375,24
+4,251,255,16,0,96500,32
+5,250,255,20,0,96625,40
+6,249,255,24,0,96750,48
+7,248,255,28,0,96875,56
+8,247,255,32,0,97000,64
+9,246,255,36,0,97125,72
+10,245,255,40,0,97250,80
+11,244,255,44,0,97375,88
+12,243,255,48,0,97500,96
+13,242,255,52,0,97625,104
+14,241,255,56,0,97750,112
+15,240,255,60,0,97875,120
+16,239,255,64,0,98000,128
+17,238,255,68,0,98125,136
+18,237,255,72,0,98250,144
+19,236,255,76,0,98375,152
+20,235,255,80,0,98500,160
+21,234,255,84,0,98625,168
+22,233,255,88,0,98750,176
+23,232,255,92,0,98875,184
+24,231,255,96,0,99000,192
+25,230,255,100,0,99125,200
+26,229,255,104,0,99250,208
+27,228,255,108,0,99375,216
+28,227,255,112,0,99500,224
+29,226,255,116,0,99625,232
+30,225,255,120,0,99750,240
+31,224,255,124,0,99875,248
+32,223,255,128,255,100000,0
+33,222,255,132,255,100125,8
+34,221,255,136,255,100250,16
+35,220,255,140,255,100375,24
+36,219,255,144,255,100500,32
+37,218,255,148,255,100625,40
+38,217,255,152,255,100750,48
+39,216,255,156,255,100875,56
+40,215,255,160,255,101000,64
+41,214,255,164,255,101125,72
+42,213,255,168,255,101250,80
+43,212,255,172,255,101375,88
+44,211,255,176,255,101500,96
+45,210,255,180,255,101625,104
+46,209,255,184,255,101750,112
+47,208,255,188,255,101875,120
+48,207,255,192,255,102000,128
+49,206,255,196,255,102125,136
+50,205,255,200,255,102250,144
+51,204,255,204,255,102375,152
+52,203,255,208,255,102500,160
+53,202,255,212,255,102625,168
+54,201,255,216,255,102750,176
+55,200,255,220,255,102875,184
+56,199,255,224,255,103000,192
+57,198,255,228,255,103125,200
+58,197,255,232,255,103250,208
+59,196,255,236,255,103375,216
+60,195,255,240,255,103500,224
+61,194,255,244,255,103625,232
+62,193,255,248,255,103750,240
+63,192,255,252,255,103875,248
+64,191,255,0,0,104000,0
+65,190,255,4,0,104125,8
+66,189,255,8,0,104250,16
+67,188,255,12,0,104375,24
+68,187,255,16,0,104500,32
+69,186,255,20,0,104625,40
+70,185,255,24,0,104750,48
+71,184,255,28,0,104875,56
+72,183,255,32,0,105000,64
+73,182,255,36,0,105125,72
+74,181,255,40,0,105250,80
+75,180,255,44,0,105375,88
+76,179,255,48,0,105500,96
+77,178,255,52,0,105625,104
+78,177,255,56,0,105750,112
+79,176,255,60,0,105875,120
+80,175,255,64,0,106000,128
+81,174,255,68,0,106125,136
+82,173,255,72,0,106250,144
+83,172,255,76,0,106375,152
+84,171,255,80,0,106500,160
+85,170,255,84,0,106625,168
+86,169,255,88,0,106750,176
+87,168,255,92,0,106875,184
+88,167,255,96,0,107000,192
+89,166,255,100,0,107125,200
+90,165,255,104,0,107250,208
+91,164,255,108,0,107375,216
+92,163,255,112,0,107500,224
+93,162,255,116,0,107625,232
+94,161,255,120,0,107750,240
+95,160,255,124,0,107875,248
+96,159,255,128,255,108000,0
+97,158,255,132,255,108125,8
+98,157,255,136,255,108250,16
+99,156,255,140,255,108375,24
+100,155,255,144,255,108500,32
+101,154,255,148,255,108625,40
+102,153,255,152,255,108750,48
+103,152,255,156,255,108875,56
+104,151,255,160,255,109000,64
+105,150,255,164,255,109125,72
+106,149,255,168,255,109250,80
+107,148,255,172,255,109375,88
+108,147,255,176,255,109500,96
+109,146,255,180,255,109625,104
+110,145,255,184,255,109750,112
+111,144,255,188,255,109875,120
+112,143,255,192,255,110000,128
+113,142,255,196,255,110125,136
+114,141,255,200,255,110250,144
+115,140,255,204,255,110375,152
+116,139,255,208,255,110500,160
+117,138,255,212,255,110625,168
+118,137,255,216,255,110750,176
+119,136,255,220,255,110875,184
+120,135,255,224,255,111000,192
+121,134,255,228,255,111125,200
+122,133,255,232,255,111250,208
+123,132,255,236,255,111375,216
+124,131,255,240,255,111500,224
+125,130,255,244,255,111625,232
+126,129,255,248,255,111750,240
+127,128,255,252,255,111875,248
+128,127,255,0,0,112000,0
+129,126,255,4,0,112125,8
+130,125,255,8,0,112250,16
+131,124,255,12,0,112375,24
+132,123,255,16,0,112500,32
+133,122,255,20,0,112625,40
+134,121,255,24,0,112750,48
+135,120,255,28,0,112875,56
+136,119,255,32,0,113000,64
+137,118,255,36,0,113125,72
+138,117,255,40,0,113250,80
+139,116,255,44,0,113375,88
+140,115,255,48,0,113500,96
+141,114,255,52,0,113625,104
+142,113,255,56,0,113750,112
+143,112,255,60,0,113875,120
+144,111,255,64,0,114000,128
+145,110,255,68,0,114125,136
+146,109,255,72,0,114250,144
+147,108,255,76,0,114375,152
+148,107,255,80,0,114500,160
+149,106,255,84,0,114625,168
+150,105,255,88,0,114750,176
+151,104,255,92,0,114875,184
+152,103,255,96,0,115000,192
+153,102,255,100,0,115125,200
+154,101,255,104,0,115250,208
+155,100,255,108,0,115375,216
+156,99,255,112,0,115500,224
+157,98,255,116,0,115625,232
+158,97,255,120,0,115750,240
+159,96,255,124,0,115875,248
+160,95,255,128,255,116000,0
+161,94,255,132,255,116125,8
+162,93,255,136,255,116250,16
+163,92,255,140,255,116375,24
+164,91,255,144,255,116500,32
+165,90,255,148,255,116625,40
+166,89,255,152,255,116750,48
+167,88,255,156,255,116875,56
+168,87,255,160,255,117000,64
+169,86,255,164,255,117125,72
+170,85,255,168,255,117250,80
+171,84,255,172,255,117375,88
+172,83,255,176,255,117500,96
+173,82,255,180,255,117625,104
+174,81,255,184,255,117750,112
+175,80,255,188,255,117875,120
+176,79,255,192,255,118000,128
+177,78,255,196,255,118125,136
+178,77,255,200,255,118250,144
+179,76,255,204,255,118375,152
+180,75,255,208,255,118500,160
+181,74,255,212,255,118625,168
+182,73,255,216,255,118750,176
+183,72,255,220,255,118875,184
+184,71,255,224,255,119000,192
+185,70,255,228,255,119125,200
+186,69,255,232,255,119250,208
+187,68,255,236,255,119375,216
+188,67,255,240,255,119500,224
+189,66,255,244,255,119625,232
+190,65,255,248,255,119750,240
+191,64,255,252,255,119875,248
+192,63,255,0,0,120000,0
+193,62,255,4,0,120125,8
+194,61,255,8,0,120250,16
+195,60,255,12,0,120375,24
+196,59,255,16,0,120500,32
+197,58,255,20,0,120625,40
+198,57,255,24,0,120750,48
+199,56,255,28,0,120875,56
+200,55,255,32,0,121000,64
+201,54,255,36,0,121125,72
+202,53,255,40,0,121250,80
+203,52,255,44,0,121375,88
+204,51,255,48,0,121500,96
+205,50,255,52,0,121625,104
+206,49,255,56,0,121750,112
+207,48,255,60,0,121875,120
+208,47,255,64,0,122000,128
+209,46,255,68,0,122125,136
+210,45,255,72,0,122250,144
+211,44,255,76,0,122375,152
+212,43,255,80,0,122500,160
+213,42,255,84,0,122625,168
+214,41,255,88,0,122750,176
+215,40,255,92,0,122875,184
+216,39,255,96,0,123000,192
+217,38,255,100,0,123125,200
+218,37,255,104,0,123250,208
+219,36,255,108,0,123375,216
+220,35,255,112,0,123500,224
+221,34,255,116,0,123625,232
+222,33,255,120,0,123750,240
+223,32,255,124,0,123875,248
+224,31,255,128,255,124000,0
+225,30,255,132,255,124125,8
+226,29,255,136,255,124250,16
+227,28,255,140,255,124375,24
+228,27,255,144,255,124500,32
+229,26,255,148,255,124625,40
+230,25,255,152,255,124750,48
+231,24,255,156,255,124875,56
+232,23,255,160,255,125000,64
+233,22,255,164,255,125125,72
+234,21,255,168,255,125250,80
+235,20,255,172,255,125375,88
+236,19,255,176,255,125500,96
+237,18,255,180,255,125625,104
+238,17,255,184,255,125750,112
+239,16,255,188,255,125875,120
+240,15,255,192,255,126000,128
+241,14,255,196,255,126125,136
+242,13,255,200,255,126250,144
+243,12,255,204,255,126375,152
+244,11,255,208,255,126500,160
+245,10,255,212,255,126625,168
+246,9,255,216,255,126750,176
+247,8,255,220,255,126875,184
+248,7,255,224,255,127000,192
+249,6,255,228,255,127125,200
+250,5,255,232,255,127250,208
+251,4,255,236,255,127375,216
+252,3,255,240,255,127500,224
+253,2,255,244,255,127625,232
+254,1,255,248,255,127750,240
+255,0,255,252,255,127875,248
+0,0,0,0,0,128000,0
+1,1,0,4,0,128125,8
+2,2,0,8,0,128250,16
+3,3,0,12,0,128375,24
+4,4,0,16,0,128500,32
+5,5,0,20,0,128625,40
+6,6,0,24,0,128750,48
+7,7,0,28,0,128875,56
+8,8,0,32,0,129000,64
+9,9,0,36,0,129125,72
+10,10,0,40,0,129250,80
+11,11,0,44,0,129375,88
+12,12,0,48,0,129500,96
+13,13,0,52,0,129625,104
+14,14,0,56,0,129750,112
+15,15,0,60,0,129875,120
+16,16,0,64,0,130000,128
+17,17,0,68,0,130125,136
+18,18,0,72,0,130250,144
+19,19,0,76,0,130375,152
+20,20,0,80,0,130500,160
+21,21,0,84,0,130625,168
+22,22,0,88,0,130750,176
+23,23,0,92,0,130875,184
+24,24,0,96,0,131000,192
+25,25,0,100,0,131125,200
+26,26,0,104,0,131250,208
+27,27,0,108,0,131375,216
+28,28,0,112,0,131500,224
+29,29,0,116,0,131625,232
+30,30,0,120,0,131750,240
+31,31,0,124,0,131875,248
+32,32,0,128,255,132000,0
+33,33,0,132,255,132125,8
+34,34,0,136,255,132250,16
+35,35,0,140,255,132375,24
+36,36,0,144,255,132500,32
+37,37,0,148,255,132625,40
+38,38,0,152,255,132750,48
+39,39,0,156,255,132875,56
+40,40,0,160,255,133000,64
+41,41,0,164,255,133125,72
+42,42,0,168,255,133250,80
+43,43,0,172,255,133375,88
+44,44,0,176,255,133500,96
+45,45,0,180,255,133625,104
+46,46,0,184,255,133750,112
+47,47,0,188,255,133875,120
+48,48,0,192,255,134000,128
+49,49,0,196,255,134125,136
+50,50,0,200,255,134250,144
+51,51,0,204,255,134375,152
+52,52,0,208,255,134500,160
+53,53,0,212,255,134625,168
+54,54,0,216,255,134750,176
+55,55,0,220,255,134875,184
+56,56,0,224,255,135000,192
+57,57,0,228,255,135125,200
+58,58,0,232,255,135250,208
+59,59,0,236,255,135375,216
+60,60,0,240,255,135500,224
+61,61,0,244,255,135625,232
+62,62,0,248,255,135750,240
+63,63,0,252,255,135875,248
+64,64,0,0,0,136000,0
+65,65,0,4,0,136125,8
+66,66,0,8,0,136250,16
+67,67,0,12,0,136375,24
+68,68,0,16,0,136500,32
+69,69,0,20,0,136625,40
+70,70,0,24,0,136750,48
+71,71,0,28,0,136875,56
+72,72,0,32,0,137000,64
+73,73,0,36,0,137125,72
+74,74,0,40,0,137250,80
+75,75,0,44,0,137375,88
+76,76,0,48,0,137500,96
+77,77,0,52,0,137625,104
+78,78,0,56,0,137750,112
+79,79,0,60,0,137875,120
+80,80,0,64,0,138000,128
+81,81,0,68,0,138125,136
+82,82,0,72,0,138250,144
+83,83,0,76,0,138375,152
+84,84,0,80,0,138500,160
+85,85,0,84,0,138625,168
+86,86,0,88,0,138750,176
+87,87,0,92,0,138875,184
+88,88,0,96,0,139000,192
+89,89,0,100,0,139125,200
+90,90,0,104,0,139250,208
+91,91,0,108,0,139375,216
+92,92,0,112,0,139500,224
+93,93,0,116,0,139625,232
+94,94,0,120,0,139750,240
+95,95,0,124,0,139875,248
+96,96,0,128,255,140000,0
+97,97,0,132,255,140125,8
+98,98,0,136,255,140250,16
+99,99,0,140,255,140375,24
+100,100,0,144,255,140500,32
+101,101,0,148,255,140625,40
+102,102,0,152,255,140750,48
+103,103,0,156,255,140875,56
+104,104,0,160,255,141000,64
+105,105,0,164,255,141125,72
+106,106,0,168,255,141250,80
+107,107,0,172,255,141375,88
+108,108,0,176,255,141500,96
+109,109,0,180,255,141625,104
+110,110,0,184,255,141750,112
+111,111,0,188,255,141875,120
+112,112,0,192,255,142000,128
+113,113,0,196,255,142125,136
+114,114,0,200,255,142250,144
+115,115,0,204,255,142375,152
+116,116,0,208,255,142500,160
+117,117,0,212,255,142625,168
+118,118,0,216,255,142750,176
+119,119,0,220,255,142875,184
+120,120,0,224,255,143000,192
+121,121,0,228,255,143125,200
+122,122,0,232,255,143250,208
+123,123,0,236,255,143375,216
+124,124,0,240,255,143500,224
+125,125,0,244,255,143625,232
+126,126,0,248,255,143750,240
+127,127,0,252,255,143875,248
+128,128,0,0,0,144000,0
+129,129,0,4,0,144125,8
+130,130,0,8,0,144250,16
+131,131,0,12,0,144375,24
+132,132,0,16,0,144500,32
+133,133,0,20,0,144625,40
+134,134,0,24,0,144750,48
+135,135,0,28,0,144875,56
+136,136,0,32,0,145000,64
+137,137,0,36,0,145125,72
+138,138,0,40,0,145250,80
+139,139,0,44,0,145375,88
+140,140,0,48,0,145500,96
+141,141,0,52,0,145625,104
+142,142,0,56,0,145750,112
+143,143,0,60,0,145875,120
+144,144,0,64,0,146000,128
+145,145,0,68,0,146125,136
+146,146,0,72,0,146250,144
+147,147,0,76,0,146375,152
+148,148,0,80,0,146500,160
+149,149,0,84,0,146625,168
+150,150,0,88,0,146750,176
+151,151,0,92,0,146875,184
+152,152,0,96,0,147000,192
+153,153,0,100,0,147125,200
+154,154,0,104,0,147250,208
+155,155,0,108,0,147375,216
+156,156,0,112,0,147500,224
+157,157,0,116,0,147625,232
+158,158,0,120,0,147750,240
+159,159,0,124,0,147875,248
+160,160,0,128,255,148000,0
+161,161,0,132,255,148125,8
+162,162,0,136,255,148250,16
+163,163,0,140,255,148375,24
+164,164,0,144,255,148500,32
+165,165,0,148,255,148625,40
+166,166,0,152,255,148750,48
+167,167,0,156,255,148875,56
+168,168,0,160,255,149000,64
+169,169,0,164,255,149125,72
+170,170,0,168,255,149250,80
+171,171,0,172,255,149375,88
+172,172,0,176,255,149500,96
+173,173,0,180,255,149625,104
+174,174,0,184,255,149750,112
+175,175,0,188,255,149875,120
+176,176,0,192,255,150000,128
+177,177,0,196,255,150125,136
+178,178,0,200,255,150250,144
+179,179,0,204,255,150375,152
+180,180,0,208,255,150500,160
+181,181,0,212,255,150625,168
+182,182,0,216,255,150750,176
+183,183,0,220,255,150875,184
+184,184,0,224,255,151000,192
+185,185,0,228,255,151125,200
+186,186,0,232,255,151250,208
+187,187,0,236,255,151375,216
+188,188,0,240,255,151500,224
+189,189,0,244,255,151625,232
+190,190,0,248,255,151750,240
+191,191,0,252,255,151875,248
+192,192,0,0,0,152000,0
+193,193,0,4,0,152125,8
+194,194,0,8,0,152250,16
+195,195,0,12,0,152375,24
+196,196,0,16,0,152500,32
+197,197,0,20,0,152625,40
+198,198,0,24,0,152750,48
+199,199,0,28,0,152875,56
+200,200,0,32,0,153000,64
+201,201,0,36,0,153125,72
+202,202,0,40,0,153250,80
+203,203,0,44,0,153375,88
+204,204,0,48,0,153500,96
+205,205,0,52,0,153625,104
+206,206,0,56,0,153750,112
+207,207,0,60,0,153875,120
+208,208,0,64,0,154000,128
+209,209,0,68,0,154125,136
+210,210,0,72,0,154250,144
+211,211,0,76,0,154375,152
+212,212,0,80,0,154500,160
+213,213,0,84,0,154625,168
+214,214,0,88,0,154750,176
+215,215,0,92,0,154875,184
+216,216,0,96,0,155000,192
+217,217,0,100,0,155125,200
+218,218,0,104,0,155250,208
+219,219,0,108,0,155375,216
+220,220,0,112,0,155500,224
+221,221,0,116,0,155625,232
+222,222,0,120,0,155750,240
+223,223,0,124,0,155875,248
+224,224,0,128,255,156000,0
+225,225,0,132,255,156125,8
+226,226,0,136,255,156250,16
+227,227,0,140,255,156375,24
+228,228,0,144,255,156500,32
+229,229,0,148,255,156625,40
+230,230,0,152,255,156750,48
+231,231,0,156,255,156875,56
+232,232,0,160,255,157000,64
+233,233,0,164,255,157125,72
+234,234,0,168,255,157250,80
+235,235,0,172,255,157375,88
+236,236,0,176,255,157500,96
+237,237,0,180,255,157625,104
+238,238,0,184,255,157750,112
+239,239,0,188,255,157875,120
+240,240,0,192,255,158000,128
+241,241,0,196,255,158125,136
+242,242,0,200,255,158250,144
+243,243,0,204,255,158375,152
+244,244,0,208,255,158500,160
+245,245,0,212,255,158625,168
+246,246,0,216,255,158750,176
+247,247,0,220,255,158875,184
+248,248,0,224,255,159000,192
+249,249,0,228,255,159125,200
+250,250,0,232,255,159250,208
+251,251,0,236,255,159375,216
+252,252,0,240,255,159500,224
+253,253,0,244,255,159625,232
+254,254,0,248,255,159750,240
+255,255,0,252,255,159875,248
+0,255,255,0,0,160000,0
+1,254,255,4,0,160125,8
+2,253,255,8,0,160250,16
+3,252,255,12,0,160375,24
+4,251,255,16,0,160500,32
+5,250,255,20,0,160625,40
+6,249,255,24,0,160750,48
+7,248,255,28,0,160875,56
+8,247,255,32,0,161000,64
+9,246,255,36,0,161125,72
+10,245,255,40,0,161250,80
+11,244,255,44,0,161375,88
+12,243,255,48,0,161500,96
+13,242,255,52,0,161625,104
+14,241,255,56,0,161750,112
+15,240,255,60,0,161875,120
+16,239,255,64,0,162000,128
+17,238,255,68,0,162125,136
+18,237,255,72,0,162250,144
+19,236,255,76,0,162375,152
+20,235,255,80,0,162500,160
+21,234,255,84,0,162625,168
+22,233,255,88,0,162750,176
+23,232,255,92,0,162875,184
+24,231,255,96,0,163000,192
+25,230,255,100,0,163125,200
+26,229,255,104,0,163250,208
+27,228,255,108,0,163375,216
+28,227,255,112,0,163500,224
+29,226,255,116,0,163625,232
+30,225,255,120,0,163750,240
+31,224,255,124,0,163875,248
+32,223,255,128,255,164000,0
+33,222,255,132,255,164125,8
+34,221,255,136,255,164250,16
+35,220,255,140,255,164375,24
+36,219,255,144,255,164500,32
+37,218,255,148,255,164625,40
+38,217,255,152,255,164750,48
+39,216,255,156,255,164875,56
+40,215,255,160,255,165000,64
+41,214,255,164,255,165125,72
+42,213,255,168,255,165250,80
+43,212,255,172,255,165375,88
+44,211,255,176,255,165500,96
+45,210,255,180,255,165625,104
+46,209,255,184,255,165750,112
+47,208,255,188,255,165875,120
+48,207,255,192,255,166000,128
+49,206,255,196,255,166125,136
+50,205,255,200,255,166250,144
+51,204,255,204,255,166375,152
+52,203,255,208,255,166500,160
+53,202,255,212,255,166625,168
+54,201,255,216,255,166750,176
+55,200,255,220,255,166875,184
+56,199,255,224,255,167000,192
+57,198,255,228,255,167125,200
+58,197,255,232,255,167250,208
+59,196,255,236,255,167375,216
+60,195,255,240,255,167500,224
+61,194,255,244,255,167625,232
+62,193,255,248,255,167750,240
+63,192,255,252,255,167875,248
+64,191,255,0,0,168000,0
+65,190,255,4,0,168125,8
+66,189,255,8,0,168250,16
+67,188,255,12,0,168375,24
+68,187,255,16,0,168500,32
+69,186,255,20,0,168625,40
+70,185,255,24,0,168750,48
+71,184,255,28,0,168875,56
+72,183,255,32,0,169000,64
+73,182,255,36,0,169125,72
+74,181,255,40,0,169250,80
+75,180,255,44,0,169375,88
+76,179,255,48,0,169500,96
+77,178,255,52,0,169625,104
+78,177,255,56,0,169750,112
+79,176,255,60,0,169875,120
+80,175,255,64,0,170000,128
+81,174,255,68,0,170125,136
+82,173,255,72,0,170250,144
+83,172,255,76,0,170375,152
+84,171,255,80,0,170500,160
+85,170,255,84,0,170625,168
+86,169,255,88,0,170750,176
+87,168,255,92,0,170875,184
+88,167,255,96,0,171000,192
+89,166,255,100,0,171125,200
+90,165,255,104,0,171250,208
+91,164,255,108,0,171375,216
+92,163,255,112,0,171500,224
+93,162,255,116,0,171625,232
+94,161,255,120,0,171750,240
+95,160,255,124,0,171875,248
+96,159,255,128,255,172000,0
+97,158,255,132,255,172125,8
+98,157,255,136,255,172250,16
+99,156,255,140,255,172375,24
+100,155,255,144,255,172500,32
+101,154,255,148,255,172625,40
+102,153,255,152,255,172750,48
+103,152,255,156,255,172875,56
+104,151,255,160,255,173000,64
+105,150,255,164,255,173125,72
+106,149,255,168,255,173250,80
+107,148,255,172,255,173375,88
+108,147,255,176,255,173500,96
+109,146,255,180,255,173625,104
+110,145,255,184,255,173750,112
+111,144,255,188,255,173875,120
+112,143,255,192,255,174000,128
+113,142,255,196,255,174125,136
+114,141,255,200,255,174250,144
+115,140,255,204,255,174375,152
+116,139,255,208,255,174500,160
+117,138,255,212,255,174625,168
+118,137,255,216,255,174750,176
+119,136,255,220,255,174875,184
+120,135,255,224,255,175000,192
+121,134,255,228,255,175125,200
+122,133,255,232,255,175250,208
+123,132,255,236,255,175375,216
+124,131,255,240,255,175500,224
+125,130,255,244,255,175625,232
+126,129,255,248,255,175750,240
+127,128,255,252,255,175875,248
+128,127,255,0,0,176000,0
+129,126,255,4,0,176125,8
+130,125,255,8,0,176250,16
+131,124,255,12,0,176375,24
+132,123,255,16,0,176500,32
+133,122,255,20,0,176625,40
+134,121,255,24,0,176750,48
+135,120,255,28,0,176875,56
+136,119,255,32,0,177000,64
+137,118,255,36,0,177125,72
+138,117,255,40,0,177250,80
+139,116,255,44,0,177375,88
+140,115,255,48,0,177500,96
+141,114,255,52,0,177625,104
+142,113,255,56,0,177750,112
+143,112,255,60,0,177875,120
+144,111,255,64,0,178000,128
+145,110,255,68,0,178125,136
+146,109,255,72,0,178250,144
+147,108,255,76,0,178375,152
+148,107,255,80,0,178500,160
+149,106,255,84,0,178625,168
+150,105,255,88,0,178750,176
+151,104,255,92,0,178875,184
+152,103,255,96,0,179000,192
+153,102,255,100,0,179125,200
+154,101,255,104,0,179250,208
+155,100,255,108,0,179375,216
+156,99,255,112,0,179500,224
+157,98,255,116,0,179625,232
+158,97,255,120,0,179750,240
+159,96,255,124,0,179875,248
+160,95,255,128,255,180000,0
+161,94,255,132,255,180125,8
+162,93,255,136,255,180250,16
+163,92,255,140,255,180375,24
+164,91,255,144,255,180500,32
+165,90,255,148,255,180625,40
+166,89,255,152,255,180750,48
+167,88,255,156,255,180875,56
+168,87,255,160,255,181000,64
+169,86,255,164,255,181125,72
+170,85,255,168,255,181250,80
+171,84,255,172,255,181375,88
+172,83,255,176,255,181500,96
+173,82,255,180,255,181625,104
+174,81,255,184,255,181750,112
+175,80,255,188,255,181875,120
+176,79,255,192,255,182000,128
+177,78,255,196,255,182125,136
+178,77,255,200,255,182250,144
+179,76,255,204,255,182375,152
+180,75,255,208,255,182500,160
+181,74,255,212,255,182625,168
+182,73,255,216,255,182750,176
+183,72,255,220,255,182875,184
+184,71,255,224,255,183000,192
+185,70,255,228,255,183125,200
+186,69,255,232,255,183250,208
+187,68,255,236,255,183375,216
+188,67,255,240,255,183500,224
+189,66,255,244,255,183625,232
+190,65,255,248,255,183750,240
+191,64,255,252,255,183875,248
+192,63,255,0,0,184000,0
+193,62,255,4,0,184125,8
+194,61,255,8,0,184250,16
+195,60,255,12,0,184375,24
+196,59,255,16,0,184500,32
+197,58,255,20,0,184625,40
+198,57,255,24,0,184750,48
+199,56,255,28,0,184875,56
+200,55,255,32,0,185000,64
+201,54,255,36,0,185125,72
+202,53,255,40,0,185250,80
+203,52,255,44,0,185375,88
+204,51,255,48,0,185500,96
+205,50,255,52,0,185625,104
+206,49,255,56,0,185750,112
+207,48,255,60,0,185875,120
+208,47,255,64,0,186000,128
+209,46,255,68,0,186125,136
+210,45,255,72,0,186250,144
+211,44,255,76,0,186375,152
+212,43,255,80,0,186500,160
+213,42,255,84,0,186625,168
+214,41,255,88,0,186750,176
+215,40,255,92,0,186875,184
+216,39,255,96,0,187000,192
+217,38,255,100,0,187125,200
+218,37,255,104,0,187250,208
+219,36,255,108,0,187375,216
+220,35,255,112,0,187500,224
+221,34,255,116,0,187625,232
+222,33,255,120,0,187750,240
+223,32,255,124,0,187875,248
+224,31,255,128,255,188000,0
+225,30,255,132,255,188125,8
+226,29,255,136,255,188250,16
+227,28,255,140,255,188375,24
+228,27,255,144,255,188500,32
+229,26,255,148,255,188625,40
+230,25,255,152,255,188750,48
+231,24,255,156,255,188875,56
+232,23,255,160,255,189000,64
+233,22,255,164,255,189125,72
+234,21,255,168,255,189250,80
+235,20,255,172,255,189375,88
+236,19,255,176,255,189500,96
+237,18,255,180,255,189625,104
+238,17,255,184,255,189750,112
+239,16,255,188,255,189875,120
+240,15,255,192,255,190000,128
+241,14,255,196,255,190125,136
+242,13,255,200,255,190250,144
+243,12,255,204,255,190375,152
+244,11,255,208,255,190500,160
+245,10,255,212,255,190625,168
+246,9,255,216,255,190750,176
+247,8,255,220,255,190875,184
+248,7,255,224,255,191000,192
+249,6,255,228,255,191125,200
+250,5,255,232,255,191250,208
+251,4,255,236,255,191375,216
+252,3,255,240,255,191500,224
+253,2,255,244,255,191625,232
+254,1,255,248,255,191750,240
+255,0,255,252,255,191875,248
+0,0,0,0,0,192000,0
+1,1,0,4,0,192125,8
+2,2,0,8,0,192250,16
+3,3,0,12,0,192375,24
+4,4,0,16,0,192500,32
+5,5,0,20,0,192625,40
+6,6,0,24,0,192750,48
+7,7,0,28,0,192875,56
+8,8,0,32,0,193000,64
+9,9,0,36,0,193125,72
+10,10,0,40,0,193250,80
+11,11,0,44,0,193375,88
+12,12,0,48,0,193500,96
+13,13,0,52,0,193625,104
+14,14,0,56,0,193750,112
+15,15,0,60,0,193875,120
+16,16,0,64,0,194000,128
+17,17,0,68,0,194125,136
+18,18,0,72,0,194250,144
+19,19,0,76,0,194375,152
+20,20,0,80,0,194500,160
+21,21,0,84,0,194625,168
+22,22,0,88,0,194750,176
+23,23,0,92,0,194875,184
+24,24,0,96,0,195000,192
+25,25,0,100,0,195125,200
+26,26,0,104,0,195250,208
+27,27,0,108,0,195375,216
+28,28,0,112,0,195500,224
+29,29,0,116,0,195625,232
+30,30,0,120,0,195750,240
+31,31,0,124,0,195875,248
+32,32,0,128,255,196000,0
+33,33,0,132,255,196125,8
+34,34,0,136,255,196250,16
+35,35,0,140,255,196375,24
+36,36,0,144,255,196500,32
+37,37,0,148,255,196625,40
+38,38,0,152,255,196750,48
+39,39,0,156,255,196875,56
+40,40,0,160,255,197000,64
+41,41,0,164,255,197125,72
+42,42,0,168,255,197250,80
+43,43,0,172,255,197375,88
+44,44,0,176,255,197500,96
+45,45,0,180,255,197625,104
+46,46,0,184,255,197750,112
+47,47,0,188,255,197875,120
+48,48,0,192,255,198000,128
+49,49,0,196,255,198125,136
+50,50,0,200,255,198250,144
+51,51,0,204,255,198375,152
+52,52,0,208,255,198500,160
+53,53,0,212,255,198625,168
+54,54,0,216,255,198750,176
+55,55,0,220,255,198875,184
+56,56,0,224,255,199000,192
+57,57,0,228,255,199125,200
+58,58,0,232,255,199250,208
+59,59,0,236,255,199375,216
+60,60,0,240,255,199500,224
+61,61,0,244,255,199625,232
+62,62,0,248,255,199750,240
+63,63,0,252,255,199875,248
+64,64,0,0,0,200000,0
+65,65,0,4,0,200125,8
+66,66,0,8,0,200250,16
+67,67,0,12,0,200375,24
+68,68,0,16,0,200500,32
+69,69,0,20,0,200625,40
+70,70,0,24,0,200750,48
+71,71,0,28,0,200875,56
+72,72,0,32,0,201000,64
+73,73,0,36,0,201125,72
+74,74,0,40,0,201250,80
+75,75,0,44,0,201375,88
+76,76,0,48,0,201500,96
+77,77,0,52,0,201625,104
+78,78,0,56,0,201750,112
+79,79,0,60,0,201875,120
+80,80,0,64,0,202000,128
+81,81,0,68,0,202125,136
+82,82,0,72,0,202250,144
+83,83,0,76,0,202375,152
+84,84,0,80,0,202500,160
+85,85,0,84,0,202625,168
+86,86,0,88,0,202750,176
+87,87,0,92,0,202875,184
+88,88,0,96,0,203000,192
+89,89,0,100,0,203125,200
+90,90,0,104,0,203250,208
+91,91,0,108,0,203375,216
+92,92,0,112,0,203500,224
+93,93,0,116,0,203625,232
+94,94,0,120,0,203750,240
+95,95,0,124,0,203875,248
+96,96,0,128,255,204000,0
+97,97,0,132,255,204125,8
+98,98,0,136,255,204250,16
+99,99,0,140,255,204375,24
+100,100,0,144,255,204500,32
+101,101,0,148,255,204625,40
+102,102,0,152,255,204750,48
+103,103,0,156,255,204875,56
+104,104,0,160,255,205000,64
+105,105,0,164,255,205125,72
+106,106,0,168,255,205250,80
+107,107,0,172,255,205375,88
+108,108,0,176,255,205500,96
+109,109,0,180,255,205625,104
+110,110,0,184,255,205750,112
+111,111,0,188,255,205875,120
+112,112,0,192,255,206000,128
+113,113,0,196,255,206125,136
+114,114,0,200,255,206250,144
+115,115,0,204,255,206375,152
+116,116,0,208,255,206500,160
+117,117,0,212,255,206625,168
+118,118,0,216,255,206750,176
+119,119,0,220,255,206875,184
+120,120,0,224,255,207000,192
+121,121,0,228,255,207125,200
+122,122,0,232,255,207250,208
+123,123,0,236,255,207375,216
+124,124,0,240,255,207500,224
+125,125,0,244,255,207625,232
+126,126,0,248,255,207750,240
+127,127,0,252,255,207875,248
+128,128,0,0,0,208000,0
+129,129,0,4,0,208125,8
+130,130,0,8,0,208250,16
+131,131,0,12,0,208375,24
+132,132,0,16,0,208500,32
+133,133,0,20,0,208625,40
+134,134,0,24,0,208750,48
+135,135,0,28,0,208875,56
+136,136,0,32,0,209000,64
+137,137,0,36,0,209125,72
+138,138,0,40,0,209250,80
+139,139,0,44,0,209375,88
+140,140,0,48,0,209500,96
+141,141,0,52,0,209625,104
+142,142,0,56,0,209750,112
+143,143,0,60,0,209875,120
+144,144,0,64,0,210000,128
+145,145,0,68,0,210125,136
+146,146,0,72,0,210250,144
+147,147,0,76,0,210375,152
+148,148,0,80,0,210500,160
+149,149,0,84,0,210625,168
+150,150,0,88,0,210750,176
+151,151,0,92,0,210875,184
+152,152,0,96,0,211000,192
+153,153,0,100,0,211125,200
+154,154,0,104,0,211250,208
+155,155,0,108,0,211375,216
+156,156,0,112,0,211500,224
+157,157,0,116,0,211625,232
+158,158,0,120,0,211750,240
+159,159,0,124,0,211875,248
+160,160,0,128,255,212000,0
+161,161,0,132,255,212125,8
+162,162,0,136,255,212250,16
+163,163,0,140,255,212375,24
+164,164,0,144,255,212500,32
+165,165,0,148,255,212625,40
+166,166,0,152,255,212750,48
+167,167,0,156,255,212875,56
+168,168,0,160,255,213000,64
+169,169,0,164,255,213125,72
+170,170,0,168,255,213250,80
+171,171,0,172,255,213375,88
+172,172,0,176,255,213500,96
+173,173,0,180,255,213625,104
+174,174,0,184,255,213750,112
+175,175,0,188,255,213875,120
+176,176,0,192,255,214000,128
+177,177,0,196,255,214125,136
+178,178,0,200,255,214250,144
+179,179,0,204,255,214375,152
+180,180,0,208,255,214500,160
+181,181,0,212,255,214625,168
+182,182,0,216,255,214750,176
+183,183,0,220,255,214875,184
+184,184,0,224,255,215000,192
+185,185,0,228,255,215125,200
+186,186,0,232,255,215250,208
+187,187,0,236,255,215375,216
+188,188,0,240,255,215500,224
+189,189,0,244,255,215625,232
+190,190,0,248,255,215750,240
+191,191,0,252,255,215875,248
+192,192,0,0,0,216000,0
+193,193,0,4,0,216125,8
+194,194,0,8,0,216250,16
+195,195,0,12,0,216375,24
+196,196,0,16,0,216500,32
+197,197,0,20,0,216625,40
+198,198,0,24,0,216750,48
+199,199,0,28,0,216875,56
+200,200,0,32,0,217000,64
+201,201,0,36,0,217125,72
+202,202,0,40,0,217250,80
+203,203,0,44,0,217375,88
+204,204,0,48,0,217500,96
+205,205,0,52,0,217625,104
+206,206,0,56,0,217750,112
+207,207,0,60,0,217875,120
+208,208,0,64,0,218000,128
+209,209,0,68,0,218125,136
+210,210,0,72,0,218250,144
+211,211,0,76,0,218375,152
+212,212,0,80,0,218500,160
+213,213,0,84,0,218625,168
+214,214,0,88,0,218750,176
+215,215,0,92,0,218875,184
+216,216,0,96,0,219000,192
+217,217,0,100,0,219125,200
+218,218,0,104,0,219250,208
+219,219,0,108,0,219375,216
+220,220,0,112,0,219500,224
+221,221,0,116,0,219625,232
+222,222,0,120,0,219750,240
+223,223,0,124,0,219875,248
+224,224,0,128,255,220000,0
+225,225,0,132,255,220125,8
+226,226,0,136,255,220250,16
+227,227,0,140,255,220375,24
+228,228,0,144,255,220500,32
+229,229,0,148,255,220625,40
+230,230,0,152,255,220750,48
+231,231,0,156,255,220875,56
+232,232,0,160,255,221000,64
+233,233,0,164,255,221125,72
+234,234,0,168,255,221250,80
+235,235,0,172,255,221375,88
+236,236,0,176,255,221500,96
+237,237,0,180,255,221625,104
+238,238,0,184,255,221750,112
+239,239,0,188,255,221875,120
+240,240,0,192,255,222000,128
+241,241,0,196,255,222125,136
+242,242,0,200,255,222250,144
+243,243,0,204,255,222375,152
+244,244,0,208,255,222500,160
+245,245,0,212,255,222625,168
+246,246,0,216,255,222750,176
+247,247,0,220,255,222875,184
+248,248,0,224,255,223000,192
+249,249,0,228,255,223125,200
+250,250,0,232,255,223250,208
+251,251,0,236,255,223375,216
+252,252,0,240,255,223500,224
+253,253,0,244,255,223625,232
+254,254,0,248,255,223750,240
+255,255,0,252,255,223875,248
+0,255,255,0,0,224000,0
+1,254,255,4,0,224125,8
+2,253,255,8,0,224250,16
+3,252,255,12,0,224375,24
+4,251,255,16,0,224500,32
+5,250,255,20,0,224625,40
+6,249,255,24,0,224750,48
+7,248,255,28,0,224875,56
+8,247,255,32,0,225000,64
+9,246,255,36,0,225125,72
+10,245,255,40,0,225250,80
+11,244,255,44,0,225375,88
+12,243,255,48,0,225500,96
+13,242,255,52,0,225625,104
+14,241,255,56,0,225750,112
+15,240,255,60,0,225875,120
+16,239,255,64,0,226000,128
+17,238,255,68,0,226125,136
+18,237,255,72,0,226250,144
+19,236,255,76,0,226375,152
+20,235,255,80,0,226500,160
+21,234,255,84,0,226625,168
+22,233,255,88,0,226750,176
+23,232,255,92,0,226875,184
+24,231,255,96,0,227000,192
+25,230,255,100,0,227125,200
+26,229,255,104,0,227250,208
+27,228,255,108,0,227375,216
+28,227,255,112,0,227500,224
+29,226,255,116,0,227625,232
+30,225,255,120,0,227750,240
+31,224,255,124,0,227875,248
+32,223,255,128,255,228000,0
+33,222,255,132,255,228125,8
+34,221,255,136,255,228250,16
+35,220,255,140,255,228375,24
+36,219,255,144,255,228500,32
+37,218,255,148,255,228625,40
+38,217,255,152,255,228750,48
+39,216,255,156,255,228875,56
+40,215,255,160,255,229000,64
+41,214,255,164,255,229125,72
+42,213,255,168,255,229250,80
+43,212,255,172,255,229375,88
+44,211,255,176,255,229500,96
+45,210,255,180,255,229625,104
+46,209,255,184,255,229750,112
+47,208,255,188,255,229875,120
+48,207,255,192,255,230000,128
+49,206,255,196,255,230125,136
+50,205,255,200,255,230250,144
+51,204,255,204,255,230375,152
+52,203,255,208,255,230500,160
+53,202,255,212,255,230625,168
+54,201,255,216,255,230750,176
+55,200,255,220,255,230875,184
+56,199,255,224,255,231000,192
+57,198,255,228,255,231125,200
+58,197,255,232,255,231250,208
+59,196,255,236,255,231375,216
+60,195,255,240,255,231500,224
+61,194,255,244,255,231625,232
+62,193,255,248,255,231750,240
+63,192,255,252,255,231875,248
+64,191,255,0,0,232000,0
+65,190,255,4,0,232125,8
+66,189,255,8,0,232250,16
+67,188,255,12,0,232375,24
+68,187,255,16,0,232500,32
+69,186,255,20,0,232625,40
+70,185,255,24,0,232750,48
+71,184,255,28,0,232875,56
+72,183,255,32,0,233000,64
+73,182,255,36,0,233125,72
+74,181,255,40,0,233250,80
+75,180,255,44,0,233375,88
+76,179,255,48,0,233500,96
+77,178,255,52,0,233625,104
+78,177,255,56,0,233750,112
+79,176,255,60,0,233875,120
+80,175,255,64,0,234000,128
+81,174,255,68,0,234125,136
+82,173,255,72,0,234250,144
+83,172,255,76,0,234375,152
+84,171,255,80,0,234500,160
+85,170,255,84,0,234625,168
+86,169,255,88,0,234750,176
+87,168,255,92,0,234875,184
+88,167,255,96,0,235000,192
+89,166,255,100,0,235125,200
+90,165,255,104,0,235250,208
+91,164,255,108,0,235375,216
+92,163,255,112,0,235500,224
+93,162,255,116,0,235625,232
+94,161,255,120,0,235750,240
+95,160,255,124,0,235875,248
+96,159,255,128,255,236000,0
+97,158,255,132,255,236125,8
+98,157,255,136,255,236250,16
+99,156,255,140,255,236375,24
+100,155,255,144,255,236500,32
+101,154,255,148,255,236625,40
+102,153,255,152,255,236750,48
+103,152,255,156,255,236875,56
+104,151,255,160,255,237000,64
+105,150,255,164,255,237125,72
+106,149,255,168,255,237250,80
+107,148,255,172,255,237375,88
+108,147,255,176,255,237500,96
+109,146,255,180,255,237625,104
+110,145,255,184,255,237750,112
+111,144,255,188,255,237875,120
+112,143,255,192,255,238000,128
+113,142,255,196,255,238125,136
+114,141,255,200,255,238250,144
+115,140,255,204,255,238375,152
+116,139,255,208,255,238500,160
+117,138,255,212,255,238625,168
+118,137,255,216,255,238750,176
+119,136,255,220,255,238875,184
+120,135,255,224,255,239000,192
+121,134,255,228,255,239125,200
+122,133,255,232,255,239250,208
+123,132,255,236,255,239375,216
+124,131,255,240,255,239500,224
+125,130,255,244,255,239625,232
+126,129,255,248,255,239750,240
+127,128,255,252,255,239875,248
+128,127,255,0,0,240000,0
+129,126,255,4,0,240125,8
+130,125,255,8,0,240250,16
+131,124,255,12,0,240375,24
+132,123,255,16,0,240500,32
+133,122,255,20,0,240625,40
+134,121,255,24,0,240750,48
+135,120,255,28,0,240875,56
+136,119,255,32,0,241000,64
+137,118,255,36,0,241125,72
+138,117,255,40,0,241250,80
+139,116,255,44,0,241375,88
+140,115,255,48,0,241500,96
+141,114,255,52,0,241625,104
+142,113,255,56,0,241750,112
+143,112,255,60,0,241875,120
+144,111,255,64,0,242000,128
+145,110,255,68,0,242125,136
+146,109,255,72,0,242250,144
+147,108,255,76,0,242375,152
+148,107,255,80,0,242500,160
+149,106,255,84,0,242625,168
+150,105,255,88,0,242750,176
+151,104,255,92,0,242875,184
+152,103,255,96,0,243000,192
+153,102,255,100,0,243125,200
+154,101,255,104,0,243250,208
+155,100,255,108,0,243375,216
+156,99,255,112,0,243500,224
+157,98,255,116,0,243625,232
+158,97,255,120,0,243750,240
+159,96,255,124,0,243875,248
+160,95,255,128,255,244000,0
+161,94,255,132,255,244125,8
+162,93,255,136,255,244250,16
+163,92,255,140,255,244375,24
+164,91,255,144,255,244500,32
+165,90,255,148,255,244625,40
+166,89,255,152,255,244750,48
+167,88,255,156,255,244875,56
+168,87,255,160,255,245000,64
+169,86,255,164,255,245125,72
+170,85,255,168,255,245250,80
+171,84,255,172,255,245375,88
+172,83,255,176,255,245500,96
+173,82,255,180,255,245625,104
+174,81,255,184,255,245750,112
+175,80,255,188,255,245875,120
+176,79,255,192,255,246000,128
+177,78,255,196,255,246125,136
+178,77,255,200,255,246250,144
+179,76,255,204,255,246375,152
+180,75,255,208,255,246500,160
+181,74,255,212,255,246625,168
+182,73,255,216,255,246750,176
+183,72,255,220,255,246875,184
+184,71,255,224,255,247000,192
+185,70,255,228,255,247125,200
+186,69,255,232,255,247250,208
+187,68,255,236,255,247375,216
+188,67,255,240,255,247500,224
+189,66,255,244,255,247625,232
+190,65,255,248,255,247750,240
+191,64,255,252,255,247875,248
+192,63,255,0,0,248000,0
+193,62,255,4,0,248125,8
+194,61,255,8,0,248250,16
+195,60,255,12,0,248375,24
+196,59,255,16,0,248500,32
+197,58,255,20,0,248625,40
+198,57,255,24,0,248750,48
+199,56,255,28,0,248875,56
+200,55,255,32,0,249000,64
+201,54,255,36,0,249125,72
+202,53,255,40,0,249250,80
+203,52,255,44,0,249375,88
+204,51,255,48,0,249500,96
+205,50,255,52,0,249625,104
+206,49,255,56,0,249750,112
+207,48,255,60,0,249875,120
+208,47,255,64,0,250000,128
+209,46,255,68,0,250125,136
+210,45,255,72,0,250250,144
+211,44,255,76,0,250375,152
+212,43,255,80,0,250500,160
+213,42,255,84,0,250625,168
+214,41,255,88,0,250750,176
+215,40,255,92,0,250875,184
+216,39,255,96,0,251000,192
+217,38,255,100,0,251125,200
+218,37,255,104,0,251250,208
+219,36,255,108,0,251375,216
+220,35,255,112,0,251500,224
+221,34,255,116,0,251625,232
+222,33,255,120,0,251750,240
+223,32,255,124,0,251875,248
+224,31,255,128,255,252000,0
+225,30,255,132,255,252125,8
+226,29,255,136,255,252250,16
+227,28,255,140,255,252375,24
+228,27,255,144,255,252500,32
+229,26,255,148,255,252625,40
+230,25,255,152,255,252750,48
+231,24,255,156,255,252875,56
+232,23,255,160,255,253000,64
+233,22,255,164,255,253125,72
+234,21,255,168,255,253250,80
+235,20,255,172,255,253375,88
+236,19,255,176,255,253500,96
+237,18,255,180,255,253625,104
+238,17,255,184,255,253750,112
+239,16,255,188,255,253875,120
+240,15,255,192,255,254000,128
+241,14,255,196,255,254125,136
+242,13,255,200,255,254250,144
+243,12,255,204,255,254375,152
+244,11,255,208,255,254500,160
+245,10,255,212,255,254625,168
+246,9,255,216,255,254750,176
+247,8,255,220,255,254875,184
+248,7,255,224,255,255000,192
+249,6,255,228,255,255125,200
+250,5,255,232,255,255250,208
+251,4,255,236,255,255375,216
+252,3,255,240,255,255500,224
+253,2,255,244,255,255625,232
+254,1,255,248,255,255750,240
+255,0,255,252,255,255875,248
diff --git a/MATLAB/HW10/hw10.asv b/MATLAB/HW10/hw10.asv
new file mode 100644
index 0000000..0868862
--- /dev/null
+++ b/MATLAB/HW10/hw10.asv
@@ -0,0 +1,77 @@
+data = importdata("C:\Users\Jacob McDonnell\Documents\CMPEN-472-HW\cmpen472hw10_McDonnell\data.csv");
+
+sawtooth = data.data(:,1);
+triangle = data.data(:,2);
+square = data.data(:,3);
+sawtooth125 = data.data(:,4);
+square125 = data.data(:,5);
+sawtooth250 = data.data(:,7)
+time = data.data(:,6);
+time = time / 1000000; % adjust to microseconds
+
+psw = CreatePlot(sawtooth,"Sawtooth Wave Two Cycles",time,1,512);
+saveas(psw,"sawtooth2cycles.png");
+psw = CreatePlot(sawtooth,"Sawtooth Wave",time,1,2048);
+saveas(psw,"sawtooth.png");
+
+pt = CreatePlot(triangle,"Triangle Wave Two Cycles",time,1,1024);
+saveas(pt,"triangle2cycles.png");
+pt = CreatePlot(triangle,"Triangle Wave",time,1,2048);
+saveas(pt,"triangle.png");
+
+psq = CreatePlot(square,"Square Wave Two Cycles",time,1,1024);
+saveas(psq,"square2cycles.png");
+psq = CreatePlot(square,"Square Wave",time,1,2048);
+saveas(psq,"square.png");
+
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz Two Cycles",time,1,128);
+saveas(psw125,"sawtooth-125Hz2cycles.png");
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz",time,1,2048);
+saveas(psw125,"sawtooth-125Hz.png");
+
+psq125 = CreatePlot(square125,"Square Wave 125Hz Two Cycles",time,1,128);
+saveas(psq125,"square-125Hz2cycles.png");
+psq125 = CreatePlot(square125,"Square Wave 125Hz",time,1,2048);
+saveas(psq125,"square-125Hz.png");
+
+psw250 = CreatePlot(sa)
+
+Fs = 1/8000; % 8000Hz sampling frequency
+
+function p = CreatePlot(d, label, time, spos, epos)
+ p = figure;
+ plot(time(spos:epos), d(spos:epos));
+ xlabel('Time in Seconds');
+ ylabel('Signal Values');
+ title(label);
+ grid on;
+end
+
+function freqPlot = GeneratePlot(d,t,label)
+ Fs = 1/mean(diff(t));
+ x = d - mean(d);
+
+ n = length(x); % Number of samples
+ X = fft(x); % Compute the FFT
+
+ % Only take the first half of the spectrum (positive frequencies)
+ X_mag = abs(X(1:floor(n/2))); % Magnitude of FFT
+ f = Fs * (0:floor(n/2)-1) / n; % Frequency vector
+
+ freqPlot = figure;
+ plot(f, X_mag);
+ xlabel('Frequency (Hz)');
+ ylabel('Amplitude');
+ title(label);
+ grid on;
+end
+
+swfft = GeneratePlot(sawtooth,time,'Sawtooth');
+
+tfft = GeneratePlot(triangle,time,'Triangle');
+
+sqfft = GeneratePlot(square,time,'Square');
+
+sw125fft = GeneratePlot(sawtooth125,time,'Sawtooth 125Hz');
+
+sq125fft = GeneratePlot(square125,time,'Square 125Hz');
diff --git a/MATLAB/HW10/hw10.m b/MATLAB/HW10/hw10.m
new file mode 100644
index 0000000..b8aeb3f
--- /dev/null
+++ b/MATLAB/HW10/hw10.m
@@ -0,0 +1,79 @@
+data = importdata("data.csv");
+
+sawtooth = data.data(:,1);
+triangle = data.data(:,2);
+square = data.data(:,3);
+sawtooth125 = data.data(:,4);
+square125 = data.data(:,5);
+sawtooth250 = data.data(:,7)
+time = data.data(:,6);
+time = time / 1000000; % adjust to microseconds
+
+psw = CreatePlot(sawtooth,"Sawtooth Wave Two Cycles",time,1,512);
+saveas(psw,"sawtooth2cycles.png");
+psw = CreatePlot(sawtooth,"Sawtooth Wave",time,1,2048);
+saveas(psw,"sawtooth.png");
+
+pt = CreatePlot(triangle,"Triangle Wave Two Cycles",time,1,1024);
+saveas(pt,"triangle2cycles.png");
+pt = CreatePlot(triangle,"Triangle Wave",time,1,2048);
+saveas(pt,"triangle.png");
+
+psq = CreatePlot(square,"Square Wave Two Cycles",time,1,1024);
+saveas(psq,"square2cycles.png");
+psq = CreatePlot(square,"Square Wave",time,1,2048);
+saveas(psq,"square.png");
+
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz Two Cycles",time,1,128);
+saveas(psw125,"sawtooth-125Hz2cycles.png");
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz",time,1,2048);
+saveas(psw125,"sawtooth-125Hz.png");
+
+psq125 = CreatePlot(square125,"Square Wave 125Hz Two Cycles",time,1,128);
+saveas(psq125,"square-125Hz2cycles.png");
+psq125 = CreatePlot(square125,"Square Wave 125Hz",time,1,2048);
+saveas(psq125,"square-125Hz.png");
+
+psw250 = CreatePlot(sawtooth250,"Sawtooth 250Hz",time,1,2048)
+
+Fs = 1/8000; % 8000Hz sampling frequency
+
+function p = CreatePlot(d, label, time, spos, epos)
+ p = figure;
+ plot(time(spos:epos), d(spos:epos));
+ xlabel('Time in Seconds');
+ ylabel('Signal Values');
+ title(label);
+ grid on;
+end
+
+function freqPlot = GeneratePlot(d,t,label)
+ Fs = 1/mean(diff(t));
+ x = d - mean(d);
+
+ n = length(x); % Number of samples
+ X = fft(x); % Compute the FFT
+
+ % Only take the first half of the spectrum (positive frequencies)
+ X_mag = abs(X(1:floor(n/2))); % Magnitude of FFT
+ f = Fs * (0:floor(n/2)-1) / n; % Frequency vector
+
+ freqPlot = figure;
+ plot(f, X_mag);
+ xlabel('Frequency (Hz)');
+ ylabel('Amplitude');
+ title(label);
+ grid on;
+end
+
+swfft = GeneratePlot(sawtooth,time,'Sawtooth');
+
+tfft = GeneratePlot(triangle,time,'Triangle');
+
+sqfft = GeneratePlot(square,time,'Square');
+
+sw125fft = GeneratePlot(sawtooth125,time,'Sawtooth 125Hz');
+
+sq125fft = GeneratePlot(square125,time,'Square 125Hz');
+
+sw250fft = GeneratePlot(sawtooth250,time,"Sawtooth 250")
diff --git a/MATLAB/HW10/sawtooth-125Hz.png b/MATLAB/HW10/sawtooth-125Hz.png
new file mode 100644
index 0000000..5218044
--- /dev/null
+++ b/MATLAB/HW10/sawtooth-125Hz.png
Binary files differ
diff --git a/MATLAB/HW10/sawtooth-125Hz2cycles.png b/MATLAB/HW10/sawtooth-125Hz2cycles.png
new file mode 100644
index 0000000..a64031f
--- /dev/null
+++ b/MATLAB/HW10/sawtooth-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/HW10/sawtooth.png b/MATLAB/HW10/sawtooth.png
new file mode 100644
index 0000000..d3627cd
--- /dev/null
+++ b/MATLAB/HW10/sawtooth.png
Binary files differ
diff --git a/MATLAB/HW10/sawtooth2cycles.png b/MATLAB/HW10/sawtooth2cycles.png
new file mode 100644
index 0000000..2b69173
--- /dev/null
+++ b/MATLAB/HW10/sawtooth2cycles.png
Binary files differ
diff --git a/MATLAB/HW10/sq125fft.png b/MATLAB/HW10/sq125fft.png
new file mode 100644
index 0000000..454bfe7
--- /dev/null
+++ b/MATLAB/HW10/sq125fft.png
Binary files differ
diff --git a/MATLAB/HW10/sqfft.png b/MATLAB/HW10/sqfft.png
new file mode 100644
index 0000000..df95e5d
--- /dev/null
+++ b/MATLAB/HW10/sqfft.png
Binary files differ
diff --git a/MATLAB/HW10/square-125Hz.png b/MATLAB/HW10/square-125Hz.png
new file mode 100644
index 0000000..9a2caa4
--- /dev/null
+++ b/MATLAB/HW10/square-125Hz.png
Binary files differ
diff --git a/MATLAB/HW10/square-125Hz2cycles.png b/MATLAB/HW10/square-125Hz2cycles.png
new file mode 100644
index 0000000..273923f
--- /dev/null
+++ b/MATLAB/HW10/square-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/HW10/square.png b/MATLAB/HW10/square.png
new file mode 100644
index 0000000..e6e8449
--- /dev/null
+++ b/MATLAB/HW10/square.png
Binary files differ
diff --git a/MATLAB/HW10/square2cycles.png b/MATLAB/HW10/square2cycles.png
new file mode 100644
index 0000000..9b90f31
--- /dev/null
+++ b/MATLAB/HW10/square2cycles.png
Binary files differ
diff --git a/MATLAB/HW10/sw125fft.png b/MATLAB/HW10/sw125fft.png
new file mode 100644
index 0000000..ea1342b
--- /dev/null
+++ b/MATLAB/HW10/sw125fft.png
Binary files differ
diff --git a/MATLAB/HW10/swfft.png b/MATLAB/HW10/swfft.png
new file mode 100644
index 0000000..afafcee
--- /dev/null
+++ b/MATLAB/HW10/swfft.png
Binary files differ
diff --git a/MATLAB/HW10/tfft.png b/MATLAB/HW10/tfft.png
new file mode 100644
index 0000000..ab0839f
--- /dev/null
+++ b/MATLAB/HW10/tfft.png
Binary files differ
diff --git a/MATLAB/HW10/triangle.png b/MATLAB/HW10/triangle.png
new file mode 100644
index 0000000..e421495
--- /dev/null
+++ b/MATLAB/HW10/triangle.png
Binary files differ
diff --git a/MATLAB/HW10/triangle2cycles.png b/MATLAB/HW10/triangle2cycles.png
new file mode 100644
index 0000000..4be07d3
--- /dev/null
+++ b/MATLAB/HW10/triangle2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/data.csv b/MATLAB/HW11/data.csv
new file mode 100644
index 0000000..9a15fd2
--- /dev/null
+++ b/MATLAB/HW11/data.csv
@@ -0,0 +1,2049 @@
+Sawtooth,Triangle,Square,Sawtooth 125Hz,Square 125Hz,time,Sine Wave 100Hz,Triangle 100Hz,Square 100Hz,Mixed Frequency Sine Wave,Sawtooth 100Hz Generated,Square Wave 100Hz Generated
+0,0,0,0,0,0,0,234,0,50,0,0
+1,1,0,4,0,125,229,122,250,241,3,0
+2,2,0,8,0,250,223,128,250,223,6,0
+3,3,0,12,0,375,217,134,250,196,9,0
+4,4,0,16,0,500,210,140,250,161,12,0
+5,5,0,20,0,625,202,147,250,126,15,0
+6,6,0,24,0,750,194,153,250,90,18,0
+7,7,0,28,0,875,186,159,250,64,21,0
+8,8,0,32,0,1000,177,166,250,47,24,0
+9,9,0,36,0,1125,168,172,250,42,27,0
+10,10,0,40,0,1250,158,178,250,49,30,0
+11,11,0,44,0,1375,149,185,250,65,33,0
+12,12,0,48,0,1500,139,191,250,91,36,0
+13,13,0,52,0,1625,129,197,250,120,39,0
+14,14,0,56,0,1750,119,204,250,150,42,0
+15,15,0,60,0,1875,109,210,250,176,45,0
+16,16,0,64,0,2000,99,216,250,196,48,0
+17,17,0,68,0,2125,90,223,250,206,51,0
+18,18,0,72,0,2250,80,229,250,208,54,0
+19,19,0,76,0,2375,71,235,250,200,57,0
+20,20,0,80,0,2500,62,242,250,185,60,0
+21,21,0,84,0,2625,54,248,250,167,63,0
+22,22,0,88,0,2750,46,245,250,146,66,0
+23,23,0,92,0,2875,38,239,250,127,69,0
+24,24,0,96,0,3000,31,232,250,111,72,0
+25,25,0,100,0,3125,25,226,250,102,75,0
+26,26,0,104,0,3250,20,220,250,98,78,0
+27,27,0,108,0,3375,15,213,250,100,81,0
+28,28,0,112,0,3500,10,207,250,107,84,0
+29,29,0,116,0,3625,7,201,50,116,87,0
+30,30,0,120,0,3750,4,194,50,126,90,0
+31,31,0,124,0,3875,2,188,50,134,93,0
+32,32,0,128,255,4000,0,182,50,141,96,0
+33,33,0,132,255,4125,0,175,50,144,99,0
+34,34,0,136,255,4250,0,169,50,143,102,0
+35,35,0,140,255,4375,1,163,50,140,105,0
+36,36,0,144,255,4500,2,156,50,136,108,0
+37,37,0,148,255,4625,5,150,50,132,111,0
+38,38,0,152,255,4750,8,144,50,130,114,0
+39,39,0,156,255,4875,12,138,50,131,117,0
+40,40,0,160,255,5000,17,131,50,136,120,0
+41,41,0,164,255,5125,22,125,50,143,123,0
+42,42,0,168,255,5250,28,119,50,153,126,0
+43,43,0,172,255,5375,35,112,50,162,129,255
+44,44,0,176,255,5500,42,106,50,171,132,255
+45,45,0,180,255,5625,50,100,50,176,135,255
+46,46,0,184,255,5750,58,93,50,175,138,255
+47,47,0,188,255,5875,66,87,50,169,141,255
+48,48,0,192,255,6000,75,81,50,156,144,255
+49,49,0,196,255,6125,85,74,50,140,147,255
+50,50,0,200,255,6250,94,68,50,119,150,255
+51,51,0,204,255,6375,104,62,50,99,153,255
+52,52,0,208,255,6500,114,55,50,81,156,255
+53,53,0,212,255,6625,124,49,50,70,159,255
+54,54,0,216,255,6750,134,43,50,66,162,255
+55,55,0,220,255,6875,143,36,50,71,165,255
+56,56,0,224,255,7000,153,30,50,86,168,255
+57,57,0,228,255,7125,163,24,50,108,171,255
+58,58,0,232,255,7250,172,18,50,138,174,255
+59,59,0,236,255,7375,181,11,50,166,177,255
+60,60,0,240,255,7500,190,5,50,196,180,255
+61,61,0,244,255,7625,198,0,50,217,183,255
+62,62,0,248,255,7750,206,7,50,230,186,255
+63,63,0,252,255,7875,213,13,50,232,189,255
+64,64,0,0,0,8000,220,19,50,221,192,255
+65,65,0,4,0,8125,226,26,50,200,195,255
+66,66,0,8,0,8250,231,32,50,168,198,255
+67,67,0,12,0,8375,236,38,50,134,201,255
+68,68,0,16,0,8500,240,45,50,96,204,255
+69,69,0,20,0,8625,244,51,250,66,207,255
+70,70,0,24,0,8750,246,57,250,41,210,255
+71,71,0,28,0,8875,248,64,250,30,213,255
+72,72,0,32,0,9000,249,70,250,31,216,255
+73,73,0,36,0,9125,249,76,250,46,219,255
+74,74,0,40,0,9250,249,83,250,73,222,255
+75,75,0,44,0,9375,247,89,250,106,225,255
+76,76,0,48,0,9500,244,95,250,146,228,255
+77,77,0,52,0,9625,241,101,250,182,231,255
+78,78,0,56,0,9750,237,108,250,215,234,255
+79,79,0,60,0,9875,233,114,250,236,237,255
+80,80,0,64,0,10000,228,120,250,245,240,255
+81,81,0,68,0,10125,222,127,250,241,243,255
+82,82,0,72,0,10250,215,133,250,223,246,255
+83,83,0,76,0,10375,208,139,250,196,249,255
+84,84,0,80,0,10500,200,146,250,161,252,255
+85,85,0,84,0,10625,192,152,250,126,255,255
+86,86,0,88,0,10750,184,158,250,90,0,0
+87,87,0,92,0,10875,175,165,250,64,3,0
+88,88,0,96,0,11000,166,171,250,47,6,0
+89,89,0,100,0,11125,156,177,250,42,9,0
+90,90,0,104,0,11250,146,183,250,49,12,0
+91,91,0,108,0,11375,136,190,250,65,15,0
+92,92,0,112,0,11500,127,196,250,91,18,0
+93,93,0,116,0,11625,117,203,250,120,21,0
+94,94,0,120,0,11750,107,209,250,150,24,0
+95,95,0,124,0,11875,97,215,250,176,27,0
+96,96,0,128,255,12000,87,221,250,196,30,0
+97,97,0,132,255,12125,78,228,250,206,33,0
+98,98,0,136,255,12250,69,234,250,208,36,0
+99,99,0,140,255,12375,60,240,250,200,39,0
+100,100,0,144,255,12500,52,247,250,185,42,0
+101,101,0,148,255,12625,44,246,250,167,45,0
+102,102,0,152,255,12750,37,240,250,146,48,0
+103,103,0,156,255,12875,30,233,250,127,51,0
+104,104,0,160,255,13000,24,227,250,111,54,0
+105,105,0,164,255,13125,18,221,250,102,57,0
+106,106,0,168,255,13250,13,214,250,98,60,0
+107,107,0,172,255,13375,9,208,250,100,63,0
+108,108,0,176,255,13500,6,202,250,107,66,0
+109,109,0,180,255,13625,3,196,50,116,69,0
+110,110,0,184,255,13750,1,189,50,126,72,0
+111,111,0,188,255,13875,0,183,50,134,75,0
+112,112,0,192,255,14000,0,177,50,141,78,0
+113,113,0,196,255,14125,0,170,50,144,81,0
+114,114,0,200,255,14250,1,164,50,143,84,0
+115,115,0,204,255,14375,3,158,50,140,87,0
+116,116,0,208,255,14500,6,151,50,136,90,0
+117,117,0,212,255,14625,9,145,50,132,93,0
+118,118,0,216,255,14750,13,139,50,130,96,0
+119,119,0,220,255,14875,18,132,50,131,99,0
+120,120,0,224,255,15000,23,126,50,136,102,0
+121,121,0,228,255,15125,30,120,50,143,105,0
+122,122,0,232,255,15250,36,113,50,153,108,0
+123,123,0,236,255,15375,44,107,50,162,111,0
+124,124,0,240,255,15500,51,101,50,171,114,0
+125,125,0,244,255,15625,60,94,50,176,117,0
+126,126,0,248,255,15750,68,88,50,175,120,0
+127,127,0,252,255,15875,77,82,50,169,123,0
+128,128,0,0,0,16000,87,76,50,156,126,0
+129,129,0,4,0,16125,96,69,50,140,129,255
+130,130,0,8,0,16250,106,63,50,119,132,255
+131,131,0,12,0,16375,116,57,50,99,135,255
+132,132,0,16,0,16500,126,50,50,81,138,255
+133,133,0,20,0,16625,136,44,50,70,141,255
+134,134,0,24,0,16750,146,38,50,66,144,255
+135,135,0,28,0,16875,155,31,50,71,147,255
+136,136,0,32,0,17000,165,25,50,86,150,255
+137,137,0,36,0,17125,174,19,50,108,153,255
+138,138,0,40,0,17250,183,12,50,138,156,255
+139,139,0,44,0,17375,192,6,50,166,159,255
+140,140,0,48,0,17500,200,0,50,196,162,255
+141,141,0,52,0,17625,208,5,50,217,165,255
+142,142,0,56,0,17750,215,12,50,230,168,255
+143,143,0,60,0,17875,221,18,50,232,171,255
+144,144,0,64,0,18000,227,24,50,221,174,255
+145,145,0,68,0,18125,233,31,50,200,177,255
+146,146,0,72,0,18250,237,37,50,168,180,255
+147,147,0,76,0,18375,241,43,50,134,183,255
+148,148,0,80,0,18500,244,50,50,96,186,255
+149,149,0,84,0,18625,247,56,250,66,189,255
+150,150,0,88,0,18750,248,62,250,41,192,255
+151,151,0,92,0,18875,249,69,250,30,195,255
+152,152,0,96,0,19000,249,75,250,31,198,255
+153,153,0,100,0,19125,248,81,250,46,201,255
+154,154,0,104,0,19250,246,88,250,73,204,255
+155,155,0,108,0,19375,244,94,250,106,207,255
+156,156,0,112,0,19500,240,100,250,146,210,255
+157,157,0,116,0,19625,236,107,250,182,213,255
+158,158,0,120,0,19750,232,113,250,215,216,255
+159,159,0,124,0,19875,226,119,250,236,219,255
+160,160,0,128,255,20000,220,125,250,245,222,255
+161,161,0,132,255,20125,213,132,250,241,225,255
+162,162,0,136,255,20250,206,138,250,223,228,255
+163,163,0,140,255,20375,199,144,250,196,231,255
+164,164,0,144,255,20500,190,151,250,161,234,255
+165,165,0,148,255,20625,182,157,250,126,237,255
+166,166,0,152,255,20750,173,163,250,90,240,255
+167,167,0,156,255,20875,163,170,250,64,243,255
+168,168,0,160,255,21000,154,176,250,47,246,255
+169,169,0,164,255,21125,144,182,250,42,249,255
+170,170,0,168,255,21250,134,189,250,49,252,255
+171,171,0,172,255,21375,124,195,250,65,255,255
+172,172,0,176,255,21500,114,201,250,91,0,0
+173,173,0,180,255,21625,104,208,250,120,3,0
+174,174,0,184,255,21750,95,214,250,150,6,0
+175,175,0,188,255,21875,85,220,250,176,9,0
+176,176,0,192,255,22000,76,227,250,196,12,0
+177,177,0,196,255,22125,67,233,250,206,15,0
+178,178,0,200,255,22250,58,239,250,208,18,0
+179,179,0,204,255,22375,50,245,250,200,21,0
+180,180,0,208,255,22500,42,247,250,185,24,0
+181,181,0,212,255,22625,35,241,250,167,27,0
+182,182,0,216,255,22750,28,235,250,146,30,0
+183,183,0,220,255,22875,22,228,250,127,33,0
+184,184,0,224,255,23000,17,222,250,111,36,0
+185,185,0,228,255,23125,12,216,250,102,39,0
+186,186,0,232,255,23250,8,209,250,98,42,0
+187,187,0,236,255,23375,5,203,250,100,45,0
+188,188,0,240,255,23500,3,197,250,107,48,0
+189,189,0,244,255,23625,1,190,50,116,51,0
+190,190,0,248,255,23750,0,184,50,126,54,0
+191,191,0,252,255,23875,0,178,50,134,57,0
+192,192,0,0,0,24000,0,171,50,141,60,0
+193,193,0,4,0,24125,1,165,50,144,63,0
+194,194,0,8,0,24250,4,159,50,143,66,0
+195,195,0,12,0,24375,6,153,50,140,69,0
+196,196,0,16,0,24500,10,146,50,136,72,0
+197,197,0,20,0,24625,14,140,50,132,75,0
+198,198,0,24,0,24750,19,134,50,130,78,0
+199,199,0,28,0,24875,25,127,50,131,81,0
+200,200,0,32,0,25000,31,121,50,136,84,0
+201,201,0,36,0,25125,38,115,50,143,87,0
+202,202,0,40,0,25250,45,108,50,153,90,0
+203,203,0,44,0,25375,53,102,50,162,93,0
+204,204,0,48,0,25500,62,96,50,171,96,0
+205,205,0,52,0,25625,70,89,50,176,99,0
+206,206,0,56,0,25750,80,83,50,175,102,0
+207,207,0,60,0,25875,89,77,50,169,105,0
+208,208,0,64,0,26000,99,70,50,156,108,0
+209,209,0,68,0,26125,108,64,50,140,111,0
+210,210,0,72,0,26250,118,58,50,119,114,0
+211,211,0,76,0,26375,128,52,50,99,117,0
+212,212,0,80,0,26500,138,45,50,81,120,0
+213,213,0,84,0,26625,148,39,50,70,123,0
+214,214,0,88,0,26750,158,33,50,66,126,0
+215,215,0,92,0,26875,167,26,50,71,129,255
+216,216,0,96,0,27000,176,20,50,86,132,255
+217,217,0,100,0,27125,185,14,50,108,135,255
+218,218,0,104,0,27250,194,7,50,138,138,255
+219,219,0,108,0,27375,202,1,50,166,141,255
+220,220,0,112,0,27500,209,4,50,196,144,255
+221,221,0,116,0,27625,216,11,50,217,147,255
+222,222,0,120,0,27750,223,17,50,230,150,255
+223,223,0,124,0,27875,229,23,50,232,153,255
+224,224,0,128,255,28000,234,30,50,221,156,255
+225,225,0,132,255,28125,238,36,50,200,159,255
+226,226,0,136,255,28250,242,42,50,168,162,255
+227,227,0,140,255,28375,245,49,50,134,165,255
+228,228,0,144,255,28500,247,55,50,96,168,255
+229,229,0,148,255,28625,249,61,250,66,171,255
+230,230,0,152,255,28750,250,67,250,41,174,255
+231,231,0,156,255,28875,249,74,250,30,177,255
+232,232,0,160,255,29000,248,80,250,31,180,255
+233,233,0,164,255,29125,246,86,250,46,183,255
+234,234,0,168,255,29250,243,93,250,73,186,255
+235,235,0,172,255,29375,240,99,250,106,189,255
+236,236,0,176,255,29500,235,105,250,146,192,255
+237,237,0,180,255,29625,230,112,250,182,195,255
+238,238,0,184,255,29750,225,118,250,215,198,255
+239,239,0,188,255,29875,219,124,250,236,201,255
+240,240,0,192,255,30000,212,131,250,245,204,255
+241,241,0,196,255,30125,204,137,250,241,207,255
+242,242,0,200,255,30250,197,143,250,223,210,255
+243,243,0,204,255,30375,188,150,250,196,213,255
+244,244,0,208,255,30500,180,156,250,161,216,255
+245,245,0,212,255,30625,171,162,250,126,219,255
+246,246,0,216,255,30750,161,168,250,90,222,255
+247,247,0,220,255,30875,151,175,250,64,225,255
+248,248,0,224,255,31000,142,181,250,47,228,255
+249,249,0,228,255,31125,132,187,250,42,231,255
+250,250,0,232,255,31250,122,194,250,49,234,255
+251,251,0,236,255,31375,112,200,250,65,237,255
+252,252,0,240,255,31500,102,206,250,91,240,255
+253,253,0,244,255,31625,92,213,250,120,243,255
+254,254,0,248,255,31750,83,219,250,150,246,255
+255,255,0,252,255,31875,74,225,250,176,249,255
+0,255,255,0,0,32000,65,232,250,196,252,255
+1,254,255,4,0,32125,56,238,250,206,255,255
+2,253,255,8,0,32250,48,244,250,208,0,0
+3,252,255,12,0,32375,41,248,250,200,3,0
+4,251,255,16,0,32500,33,242,250,185,6,0
+5,250,255,20,0,32625,27,236,250,167,9,0
+6,249,255,24,0,32750,21,229,250,146,12,0
+7,248,255,28,0,32875,16,223,250,127,15,0
+8,247,255,32,0,33000,11,217,250,111,18,0
+9,246,255,36,0,33125,8,211,250,102,21,0
+10,245,255,40,0,33250,4,204,250,98,24,0
+11,244,255,44,0,33375,2,198,250,100,27,0
+12,243,255,48,0,33500,0,192,250,107,30,0
+13,242,255,52,0,33625,0,185,50,116,33,0
+14,241,255,56,0,33750,0,179,50,126,36,0
+15,240,255,60,0,33875,0,173,50,134,39,0
+16,239,255,64,0,34000,2,166,50,141,42,0
+17,238,255,68,0,34125,4,160,50,144,45,0
+18,237,255,72,0,34250,7,154,50,143,48,0
+19,236,255,76,0,34375,11,147,50,140,51,0
+20,235,255,80,0,34500,15,141,50,136,54,0
+21,234,255,84,0,34625,20,135,50,132,57,0
+22,233,255,88,0,34750,26,128,50,130,60,0
+23,232,255,92,0,34875,33,122,50,131,63,0
+24,231,255,96,0,35000,40,116,50,136,66,0
+25,230,255,100,0,35125,47,109,50,143,69,0
+26,229,255,104,0,35250,55,103,50,153,72,0
+27,228,255,108,0,35375,64,97,50,162,75,0
+28,227,255,112,0,35500,72,91,50,171,78,0
+29,226,255,116,0,35625,82,84,50,176,81,0
+30,225,255,120,0,35750,91,78,50,175,84,0
+31,224,255,124,0,35875,101,72,50,169,87,0
+32,223,255,128,255,36000,111,65,50,156,90,0
+33,222,255,132,255,36125,121,59,50,140,93,0
+34,221,255,136,255,36250,131,53,50,119,96,0
+35,220,255,140,255,36375,140,46,50,99,99,0
+36,219,255,144,255,36500,150,40,50,81,102,0
+37,218,255,148,255,36625,160,34,50,70,105,0
+38,217,255,152,255,36750,169,27,50,66,108,0
+39,216,255,156,255,36875,178,21,50,71,111,0
+40,215,255,160,255,37000,187,15,50,86,114,0
+41,214,255,164,255,37125,196,9,50,108,117,0
+42,213,255,168,255,37250,204,2,50,138,120,0
+43,212,255,172,255,37375,211,3,50,166,123,0
+44,211,255,176,255,37500,218,9,50,196,126,0
+45,210,255,180,255,37625,224,16,50,217,129,255
+46,209,255,184,255,37750,230,22,50,230,132,255
+47,208,255,188,255,37875,235,28,50,232,135,255
+48,207,255,192,255,38000,239,35,50,221,138,255
+49,206,255,196,255,38125,243,41,50,200,141,255
+50,205,255,200,255,38250,246,47,50,168,144,255
+51,204,255,204,255,38375,248,54,50,134,147,255
+52,203,255,208,255,38500,249,60,50,96,150,255
+53,202,255,212,255,38625,250,66,250,66,153,255
+54,201,255,216,255,38750,249,73,250,41,156,255
+55,200,255,220,255,38875,247,79,250,30,159,255
+56,199,255,224,255,39000,245,85,250,31,162,255
+57,198,255,228,255,39125,242,92,250,46,165,255
+58,197,255,232,255,39250,239,98,250,73,168,255
+59,196,255,236,255,39375,234,104,250,106,171,255
+60,195,255,240,255,39500,229,110,250,146,174,255
+61,194,255,244,255,39625,223,117,250,182,177,255
+62,193,255,248,255,39750,217,123,250,215,180,255
+63,192,255,252,255,39875,210,129,250,236,183,255
+64,191,255,0,0,40000,203,136,250,245,186,255
+65,190,255,4,0,40125,195,142,250,241,189,255
+66,189,255,8,0,40250,186,148,250,223,192,255
+67,188,255,12,0,40375,177,155,250,196,195,255
+68,187,255,16,0,40500,168,161,250,161,198,255
+69,186,255,20,0,40625,159,167,250,126,201,255
+70,185,255,24,0,40750,149,174,250,90,204,255
+71,184,255,28,0,40875,139,180,250,64,207,255
+72,183,255,32,0,41000,130,186,250,47,210,255
+73,182,255,36,0,41125,119,192,250,42,213,255
+74,181,255,40,0,41250,110,199,250,49,216,255
+75,180,255,44,0,41375,100,205,250,65,219,255
+76,179,255,48,0,41500,90,212,250,91,222,255
+77,178,255,52,0,41625,81,218,250,120,225,255
+78,177,255,56,0,41750,72,224,250,150,228,255
+79,176,255,60,0,41875,63,230,250,176,231,255
+80,175,255,64,0,42000,54,237,250,196,234,255
+81,174,255,68,0,42125,46,243,250,206,237,255
+82,173,255,72,0,42250,39,249,250,208,240,255
+83,172,255,76,0,42375,32,243,250,200,243,255
+84,171,255,80,0,42500,26,237,250,185,246,255
+85,170,255,84,0,42625,20,231,250,167,249,255
+86,169,255,88,0,42750,15,224,250,146,252,255
+87,168,255,92,0,42875,10,218,250,127,255,255
+88,167,255,96,0,43000,7,212,250,111,0,0
+89,166,255,100,0,43125,4,205,250,102,3,0
+90,165,255,104,0,43250,2,199,250,98,6,0
+91,164,255,108,0,43375,0,193,250,100,9,0
+92,163,255,112,0,43500,0,187,250,107,12,0
+93,162,255,116,0,43625,0,180,50,116,15,0
+94,161,255,120,0,43750,1,174,50,126,18,0
+95,160,255,124,0,43875,2,168,50,134,21,0
+96,159,255,128,255,44000,5,161,50,141,24,0
+97,158,255,132,255,44125,8,155,50,144,27,0
+98,157,255,136,255,44250,12,149,50,143,30,0
+99,156,255,140,255,44375,16,142,50,140,33,0
+100,155,255,144,255,44500,22,136,50,136,36,0
+101,154,255,148,255,44625,28,130,50,132,39,0
+102,153,255,152,255,44750,34,123,50,130,42,0
+103,152,255,156,255,44875,41,117,50,131,45,0
+104,151,255,160,255,45000,49,111,50,136,48,0
+105,150,255,164,255,45125,57,104,50,143,51,0
+106,149,255,168,255,45250,66,98,50,153,54,0
+107,148,255,172,255,45375,75,92,50,162,57,0
+108,147,255,176,255,45500,84,85,50,171,60,0
+109,146,255,180,255,45625,93,79,50,176,63,0
+110,145,255,184,255,45750,103,73,50,175,66,0
+111,144,255,188,255,45875,113,67,50,169,69,0
+112,143,255,192,255,46000,123,60,50,156,72,0
+113,142,255,196,255,46125,133,54,50,140,75,0
+114,141,255,200,255,46250,143,48,50,119,78,0
+115,140,255,204,255,46375,153,41,50,99,81,0
+116,139,255,208,255,46500,162,35,50,81,84,0
+117,138,255,212,255,46625,171,29,50,70,87,0
+118,137,255,216,255,46750,181,22,50,66,90,0
+119,136,255,220,255,46875,189,16,50,71,93,0
+120,135,255,224,255,47000,198,10,50,86,96,0
+121,134,255,228,255,47125,205,3,50,108,99,0
+122,133,255,232,255,47250,213,2,50,138,102,0
+123,132,255,236,255,47375,219,8,50,166,105,0
+124,131,255,240,255,47500,226,15,50,196,108,0
+125,130,255,244,255,47625,231,21,50,217,111,0
+126,129,255,248,255,47750,236,27,50,230,114,0
+127,128,255,252,255,47875,240,34,50,232,117,0
+128,127,255,0,0,48000,243,40,50,221,120,0
+129,126,255,4,0,48125,246,46,50,200,123,0
+130,125,255,8,0,48250,248,52,50,168,126,0
+131,124,255,12,0,48375,249,59,50,134,129,255
+132,123,255,16,0,48500,249,65,50,96,132,255
+133,122,255,20,0,48625,249,71,250,66,135,255
+134,121,255,24,0,48750,247,78,250,41,138,255
+135,120,255,28,0,48875,245,84,250,30,141,255
+136,119,255,32,0,49000,242,90,250,31,144,255
+137,118,255,36,0,49125,238,97,250,46,147,255
+138,117,255,40,0,49250,233,103,250,73,150,255
+139,116,255,44,0,49375,228,109,250,106,153,255
+140,115,255,48,0,49500,222,116,250,146,156,255
+141,114,255,52,0,49625,216,122,250,182,159,255
+142,113,255,56,0,49750,208,128,250,215,162,255
+143,112,255,60,0,49875,201,135,250,236,165,255
+144,111,255,64,0,50000,193,141,250,245,168,255
+145,110,255,68,0,50125,184,147,250,241,171,255
+146,109,255,72,0,50250,175,153,250,223,174,255
+147,108,255,76,0,50375,166,160,250,196,177,255
+148,107,255,80,0,50500,157,166,250,161,180,255
+149,106,255,84,0,50625,147,172,250,126,183,255
+150,105,255,88,0,50750,137,179,250,90,186,255
+151,104,255,92,0,50875,127,185,250,64,189,255
+152,103,255,96,0,51000,117,191,250,47,192,255
+153,102,255,100,0,51125,107,198,250,42,195,255
+154,101,255,104,0,51250,98,204,250,49,198,255
+155,100,255,108,0,51375,88,210,250,65,201,255
+156,99,255,112,0,51500,78,217,250,91,204,255
+157,98,255,116,0,51625,69,223,250,120,207,255
+158,97,255,120,0,51750,61,229,250,150,210,255
+159,96,255,124,0,51875,52,236,250,176,213,255
+160,95,255,128,255,52000,45,242,250,196,216,255
+161,94,255,132,255,52125,37,248,250,206,219,255
+162,93,255,136,255,52250,30,244,250,208,222,255
+163,92,255,140,255,52375,24,238,250,200,225,255
+164,91,255,144,255,52500,19,232,250,185,228,255
+165,90,255,148,255,52625,14,226,250,167,231,255
+166,89,255,152,255,52750,10,219,250,146,234,255
+167,88,255,156,255,52875,6,213,250,127,237,255
+168,87,255,160,255,53000,3,207,250,111,240,255
+169,86,255,164,255,53125,1,200,250,102,243,255
+170,85,255,168,255,53250,0,194,250,98,246,255
+171,84,255,172,255,53375,0,188,250,100,249,255
+172,83,255,176,255,53500,0,181,250,107,252,255
+173,82,255,180,255,53625,1,175,50,116,255,255
+174,81,255,184,255,53750,3,169,50,126,0,0
+175,80,255,188,255,53875,5,162,50,134,3,0
+176,79,255,192,255,54000,9,156,50,141,6,0
+177,78,255,196,255,54125,13,150,50,144,9,0
+178,77,255,200,255,54250,18,144,50,143,12,0
+179,76,255,204,255,54375,23,137,50,140,15,0
+180,75,255,208,255,54500,29,131,50,136,18,0
+181,74,255,212,255,54625,36,125,50,132,21,0
+182,73,255,216,255,54750,43,118,50,130,24,0
+183,72,255,220,255,54875,51,112,50,131,27,0
+184,71,255,224,255,55000,59,106,50,136,30,0
+185,70,255,228,255,55125,68,99,50,143,33,0
+186,69,255,232,255,55250,77,93,50,153,36,0
+187,68,255,236,255,55375,86,87,50,162,39,0
+188,67,255,240,255,55500,96,80,50,171,42,0
+189,66,255,244,255,55625,106,74,50,176,45,0
+190,65,255,248,255,55750,115,68,50,175,48,0
+191,64,255,252,255,55875,125,61,50,169,51,0
+192,63,255,0,0,56000,135,55,50,156,54,0
+193,62,255,4,0,56125,145,49,50,140,57,0
+194,61,255,8,0,56250,155,42,50,119,60,0
+195,60,255,12,0,56375,164,36,50,99,63,0
+196,59,255,16,0,56500,174,30,50,81,66,0
+197,58,255,20,0,56625,183,24,50,70,69,0
+198,57,255,24,0,56750,191,17,50,66,72,0
+199,56,255,28,0,56875,199,11,50,71,75,0
+200,55,255,32,0,57000,207,5,50,86,78,0
+201,54,255,36,0,57125,214,1,50,108,81,0
+202,53,255,40,0,57250,221,7,50,138,84,0
+203,52,255,44,0,57375,227,13,50,166,87,0
+204,51,255,48,0,57500,232,20,50,196,90,0
+205,50,255,52,0,57625,237,26,50,217,93,0
+206,49,255,56,0,57750,241,32,50,230,96,0
+207,48,255,60,0,57875,244,39,50,232,99,0
+208,47,255,64,0,58000,247,45,50,221,102,0
+209,46,255,68,0,58125,248,51,50,200,105,0
+210,45,255,72,0,58250,249,58,50,168,108,0
+211,44,255,76,0,58375,249,64,50,134,111,0
+212,43,255,80,0,58500,248,70,50,96,114,0
+213,42,255,84,0,58625,247,77,250,66,117,0
+214,41,255,88,0,58750,244,83,250,41,120,0
+215,40,255,92,0,58875,241,89,250,30,123,0
+216,39,255,96,0,59000,237,95,250,31,126,0
+217,38,255,100,0,59125,232,102,250,46,129,255
+218,37,255,104,0,59250,227,108,250,73,132,255
+219,36,255,108,0,59375,221,114,250,106,135,255
+220,35,255,112,0,59500,214,121,250,146,138,255
+221,34,255,116,0,59625,207,127,250,182,141,255
+222,33,255,120,0,59750,199,133,250,215,144,255
+223,32,255,124,0,59875,191,140,250,236,147,255
+224,31,255,128,255,60000,182,146,250,245,150,255
+225,30,255,132,255,60125,173,152,250,241,153,255
+226,29,255,136,255,60250,164,159,250,223,156,255
+227,28,255,140,255,60375,154,165,250,196,159,255
+228,27,255,144,255,60500,145,171,250,161,162,255
+229,26,255,148,255,60625,135,177,250,126,165,255
+230,25,255,152,255,60750,125,184,250,90,168,255
+231,24,255,156,255,60875,115,190,250,64,171,255
+232,23,255,160,255,61000,105,197,250,47,174,255
+233,22,255,164,255,61125,95,203,250,42,177,255
+234,21,255,168,255,61250,86,209,250,49,180,255
+235,20,255,172,255,61375,76,215,250,65,183,255
+236,19,255,176,255,61500,67,222,250,91,186,255
+237,18,255,180,255,61625,59,228,250,120,189,255
+238,17,255,184,255,61750,51,234,250,150,192,255
+239,16,255,188,255,61875,43,241,250,176,195,255
+240,15,255,192,255,62000,36,247,250,196,198,255
+241,14,255,196,255,62125,29,246,250,206,201,255
+242,13,255,200,255,62250,23,239,250,208,204,255
+243,12,255,204,255,62375,17,233,250,200,207,255
+244,11,255,208,255,62500,13,227,250,185,210,255
+245,10,255,212,255,62625,9,220,250,167,213,255
+246,9,255,216,255,62750,5,214,250,146,216,255
+247,8,255,220,255,62875,3,208,250,127,219,255
+248,7,255,224,255,63000,1,202,250,111,222,255
+249,6,255,228,255,63125,0,195,250,102,225,255
+250,5,255,232,255,63250,0,189,250,98,228,255
+251,4,255,236,255,63375,0,183,250,100,231,255
+252,3,255,240,255,63500,1,176,250,107,234,255
+253,2,255,244,255,63625,3,170,50,116,237,255
+254,1,255,248,255,63750,6,164,50,126,240,255
+255,0,255,252,255,63875,10,157,50,134,243,255
+0,0,0,0,0,64000,14,151,50,141,246,255
+1,1,0,4,0,64125,19,145,50,144,249,255
+2,2,0,8,0,64250,25,138,50,143,252,255
+3,3,0,12,0,64375,31,132,50,140,255,255
+4,4,0,16,0,64500,38,126,50,136,0,0
+5,5,0,20,0,64625,45,119,50,132,3,0
+6,6,0,24,0,64750,53,113,50,130,6,0
+7,7,0,28,0,64875,61,107,50,131,9,0
+8,8,0,32,0,65000,70,100,50,136,12,0
+9,9,0,36,0,65125,79,94,50,143,15,0
+10,10,0,40,0,65250,88,88,50,153,18,0
+11,11,0,44,0,65375,98,82,50,162,21,0
+12,12,0,48,0,65500,108,75,50,171,24,0
+13,13,0,52,0,65625,118,69,50,176,27,0
+14,14,0,56,0,65750,128,63,50,175,30,0
+15,15,0,60,0,65875,138,56,50,169,33,0
+16,16,0,64,0,66000,147,50,50,156,36,0
+17,17,0,68,0,66125,157,44,50,140,39,0
+18,18,0,72,0,66250,167,37,50,119,42,0
+19,19,0,76,0,66375,176,31,50,99,45,0
+20,20,0,80,0,66500,185,25,50,81,48,0
+21,21,0,84,0,66625,193,18,50,70,51,0
+22,22,0,88,0,66750,201,12,50,66,54,0
+23,23,0,92,0,66875,209,6,50,71,57,0
+24,24,0,96,0,67000,216,0,50,86,60,0
+25,25,0,100,0,67125,222,6,50,108,63,0
+26,26,0,104,0,67250,228,12,50,138,66,0
+27,27,0,108,0,67375,233,19,50,166,69,0
+28,28,0,112,0,67500,238,25,50,196,72,0
+29,29,0,116,0,67625,242,31,50,217,75,0
+30,30,0,120,0,67750,245,37,50,230,78,0
+31,31,0,124,0,67875,247,44,50,232,81,0
+32,32,0,128,255,68000,249,50,50,221,84,0
+33,33,0,132,255,68125,250,56,50,200,87,0
+34,34,0,136,255,68250,249,63,50,168,90,0
+35,35,0,140,255,68375,248,69,50,134,93,0
+36,36,0,144,255,68500,246,75,50,96,96,0
+37,37,0,148,255,68625,243,82,250,66,99,0
+38,38,0,152,255,68750,240,88,250,41,102,0
+39,39,0,156,255,68875,236,94,250,30,105,0
+40,40,0,160,255,69000,231,101,250,31,108,0
+41,41,0,164,255,69125,225,107,250,46,111,0
+42,42,0,168,255,69250,219,113,250,73,114,0
+43,43,0,172,255,69375,212,119,250,106,117,0
+44,44,0,176,255,69500,205,126,250,146,120,0
+45,45,0,180,255,69625,197,132,250,182,123,0
+46,46,0,184,255,69750,189,138,250,215,126,0
+47,47,0,188,255,69875,180,145,250,236,129,255
+48,48,0,192,255,70000,171,151,250,245,132,255
+49,49,0,196,255,70125,162,157,250,241,135,255
+50,50,0,200,255,70250,152,164,250,223,138,255
+51,51,0,204,255,70375,142,170,250,196,141,255
+52,52,0,208,255,70500,132,176,250,161,144,255
+53,53,0,212,255,70625,122,183,250,126,147,255
+54,54,0,216,255,70750,113,189,250,90,150,255
+55,55,0,220,255,70875,103,195,250,64,153,255
+56,56,0,224,255,71000,93,202,250,47,156,255
+57,57,0,228,255,71125,83,208,250,42,159,255
+58,58,0,232,255,71250,74,214,250,49,162,255
+59,59,0,236,255,71375,65,221,250,65,165,255
+60,60,0,240,255,71500,57,227,250,91,168,255
+61,61,0,244,255,71625,49,233,250,120,171,255
+62,62,0,248,255,71750,41,239,250,150,174,255
+63,63,0,252,255,71875,34,246,250,176,177,255
+64,64,0,0,0,72000,27,247,250,196,180,255
+65,65,0,4,0,72125,21,241,250,206,183,255
+66,66,0,8,0,72250,16,234,250,208,186,255
+67,67,0,12,0,72375,12,228,250,200,189,255
+68,68,0,16,0,72500,8,222,250,185,192,255
+69,69,0,20,0,72625,5,215,250,167,195,255
+70,70,0,24,0,72750,2,209,250,146,198,255
+71,71,0,28,0,72875,1,203,250,127,201,255
+72,72,0,32,0,73000,0,196,250,111,204,255
+73,73,0,36,0,73125,0,190,250,102,207,255
+74,74,0,40,0,73250,0,184,250,98,210,255
+75,75,0,44,0,73375,2,177,250,100,213,255
+76,76,0,48,0,73500,4,171,250,107,216,255
+77,77,0,52,0,73625,7,165,50,116,219,255
+78,78,0,56,0,73750,11,159,50,126,222,255
+79,79,0,60,0,73875,15,152,50,134,225,255
+80,80,0,64,0,74000,20,146,50,141,228,255
+81,81,0,68,0,74125,26,140,50,144,231,255
+82,82,0,72,0,74250,32,133,50,143,234,255
+83,83,0,76,0,74375,39,127,50,140,237,255
+84,84,0,80,0,74500,47,121,50,136,240,255
+85,85,0,84,0,74625,55,114,50,132,243,255
+86,86,0,88,0,74750,63,108,50,130,246,255
+87,87,0,92,0,74875,72,102,50,131,249,255
+88,88,0,96,0,75000,81,95,50,136,252,255
+89,89,0,100,0,75125,91,89,50,143,255,255
+90,90,0,104,0,75250,100,83,50,153,0,0
+91,91,0,108,0,75375,110,76,50,162,3,0
+92,92,0,112,0,75500,120,70,50,171,6,0
+93,93,0,116,0,75625,130,64,50,176,9,0
+94,94,0,120,0,75750,140,57,50,175,12,0
+95,95,0,124,0,75875,150,51,50,169,15,0
+96,96,0,128,255,76000,159,45,50,156,18,0
+97,97,0,132,255,76125,169,39,50,140,21,0
+98,98,0,136,255,76250,178,32,50,119,24,0
+99,99,0,140,255,76375,187,26,50,99,27,0
+100,100,0,144,255,76500,195,20,50,81,30,0
+101,101,0,148,255,76625,203,13,50,70,33,0
+102,102,0,152,255,76750,211,7,50,66,36,0
+103,103,0,156,255,76875,218,1,50,71,39,0
+104,104,0,160,255,77000,224,5,50,86,42,0
+105,105,0,164,255,77125,229,11,50,108,45,0
+106,106,0,168,255,77250,234,17,50,138,48,0
+107,107,0,172,255,77375,239,24,50,166,51,0
+108,108,0,176,255,77500,243,30,50,196,54,0
+109,109,0,180,255,77625,245,36,50,217,57,0
+110,110,0,184,255,77750,248,43,50,230,60,0
+111,111,0,188,255,77875,249,49,50,232,63,0
+112,112,0,192,255,78000,250,55,50,221,66,0
+113,113,0,196,255,78125,249,62,50,200,69,0
+114,114,0,200,255,78250,248,68,50,168,72,0
+115,115,0,204,255,78375,245,74,50,134,75,0
+116,116,0,208,255,78500,243,80,50,96,78,0
+117,117,0,212,255,78625,239,87,250,66,81,0
+118,118,0,216,255,78750,235,93,250,41,84,0
+119,119,0,220,255,78875,230,99,250,30,87,0
+120,120,0,224,255,79000,224,106,250,31,90,0
+121,121,0,228,255,79125,218,112,250,46,93,0
+122,122,0,232,255,79250,211,118,250,73,96,0
+123,123,0,236,255,79375,203,125,250,106,99,0
+124,124,0,240,255,79500,195,131,250,146,102,0
+125,125,0,244,255,79625,187,137,250,182,105,0
+126,126,0,248,255,79750,178,144,250,215,108,0
+127,127,0,252,255,79875,169,150,250,236,111,0
+128,128,0,0,0,80000,159,156,250,245,114,0
+129,129,0,4,0,80125,150,162,250,241,117,0
+130,130,0,8,0,80250,140,169,250,223,120,0
+131,131,0,12,0,80375,130,175,250,196,123,0
+132,132,0,16,0,80500,120,182,250,161,126,0
+133,133,0,20,0,80625,110,188,250,126,129,255
+134,134,0,24,0,80750,100,194,250,90,132,255
+135,135,0,28,0,80875,91,200,250,64,135,255
+136,136,0,32,0,81000,81,207,250,47,138,255
+137,137,0,36,0,81125,72,213,250,42,141,255
+138,138,0,40,0,81250,63,219,250,49,144,255
+139,139,0,44,0,81375,55,226,250,65,147,255
+140,140,0,48,0,81500,47,232,250,91,150,255
+141,141,0,52,0,81625,39,238,250,120,153,255
+142,142,0,56,0,81750,32,245,250,150,156,255
+143,143,0,60,0,81875,26,248,250,176,159,255
+144,144,0,64,0,82000,20,242,250,196,162,255
+145,145,0,68,0,82125,15,235,250,206,165,255
+146,146,0,72,0,82250,11,229,250,208,168,255
+147,147,0,76,0,82375,7,223,250,200,171,255
+148,148,0,80,0,82500,4,217,250,185,174,255
+149,149,0,84,0,82625,2,210,250,167,177,255
+150,150,0,88,0,82750,0,204,250,146,180,255
+151,151,0,92,0,82875,0,198,250,127,183,255
+152,152,0,96,0,83000,0,191,250,111,186,255
+153,153,0,100,0,83125,1,185,250,102,189,255
+154,154,0,104,0,83250,2,179,250,98,192,255
+155,155,0,108,0,83375,5,172,250,100,195,255
+156,156,0,112,0,83500,8,166,250,107,198,255
+157,157,0,116,0,83625,12,160,50,116,201,255
+158,158,0,120,0,83750,16,153,50,126,204,255
+159,159,0,124,0,83875,21,147,50,134,207,255
+160,160,0,128,255,84000,27,141,50,141,210,255
+161,161,0,132,255,84125,34,134,50,144,213,255
+162,162,0,136,255,84250,41,128,50,143,216,255
+163,163,0,140,255,84375,49,122,50,140,219,255
+164,164,0,144,255,84500,57,115,50,136,222,255
+165,165,0,148,255,84625,65,109,50,132,225,255
+166,166,0,152,255,84750,74,103,50,130,228,255
+167,167,0,156,255,84875,83,97,50,131,231,255
+168,168,0,160,255,85000,93,90,50,136,234,255
+169,169,0,164,255,85125,103,84,50,143,237,255
+170,170,0,168,255,85250,113,78,50,153,240,255
+171,171,0,172,255,85375,122,71,50,162,243,255
+172,172,0,176,255,85500,132,65,50,171,246,255
+173,173,0,180,255,85625,142,59,50,176,249,255
+174,174,0,184,255,85750,152,52,50,175,252,255
+175,175,0,188,255,85875,162,46,50,169,255,255
+176,176,0,192,255,86000,171,40,50,156,0,0
+177,177,0,196,255,86125,180,33,50,140,3,0
+178,178,0,200,255,86250,189,27,50,119,6,0
+179,179,0,204,255,86375,197,21,50,99,9,0
+180,180,0,208,255,86500,205,15,50,81,12,0
+181,181,0,212,255,86625,212,8,50,70,15,0
+182,182,0,216,255,86750,219,2,50,66,18,0
+183,183,0,220,255,86875,225,3,50,71,21,0
+184,184,0,224,255,87000,231,10,50,86,24,0
+185,185,0,228,255,87125,236,16,50,108,27,0
+186,186,0,232,255,87250,240,22,50,138,30,0
+187,187,0,236,255,87375,243,29,50,166,33,0
+188,188,0,240,255,87500,246,35,50,196,36,0
+189,189,0,244,255,87625,248,41,50,217,39,0
+190,190,0,248,255,87750,249,48,50,230,42,0
+191,191,0,252,255,87875,250,54,50,232,45,0
+192,192,0,0,0,88000,249,60,50,221,48,0
+193,193,0,4,0,88125,247,67,50,200,51,0
+194,194,0,8,0,88250,245,73,50,168,54,0
+195,195,0,12,0,88375,242,79,50,134,57,0
+196,196,0,16,0,88500,238,86,50,96,60,0
+197,197,0,20,0,88625,234,92,250,66,63,0
+198,198,0,24,0,88750,228,98,250,41,66,0
+199,199,0,28,0,88875,222,104,250,30,69,0
+200,200,0,32,0,89000,216,111,250,31,72,0
+201,201,0,36,0,89125,209,117,250,46,75,0
+202,202,0,40,0,89250,201,123,250,73,78,0
+203,203,0,44,0,89375,193,130,250,106,81,0
+204,204,0,48,0,89500,185,136,250,146,84,0
+205,205,0,52,0,89625,176,142,250,182,87,0
+206,206,0,56,0,89750,167,149,250,215,90,0
+207,207,0,60,0,89875,157,155,250,236,93,0
+208,208,0,64,0,90000,148,161,250,245,96,0
+209,209,0,68,0,90125,138,168,250,241,99,0
+210,210,0,72,0,90250,128,174,250,223,102,0
+211,211,0,76,0,90375,118,180,250,196,105,0
+212,212,0,80,0,90500,108,187,250,161,108,0
+213,213,0,84,0,90625,98,193,250,126,111,0
+214,214,0,88,0,90750,88,199,250,90,114,0
+215,215,0,92,0,90875,79,206,250,64,117,0
+216,216,0,96,0,91000,70,212,250,47,120,0
+217,217,0,100,0,91125,61,218,250,42,123,0
+218,218,0,104,0,91250,53,224,250,49,126,0
+219,219,0,108,0,91375,45,231,250,65,129,255
+220,220,0,112,0,91500,38,237,250,91,132,255
+221,221,0,116,0,91625,31,243,250,120,135,255
+222,222,0,120,0,91750,25,249,250,150,138,255
+223,223,0,124,0,91875,19,243,250,176,141,255
+224,224,0,128,255,92000,14,237,250,196,144,255
+225,225,0,132,255,92125,10,230,250,206,147,255
+226,226,0,136,255,92250,6,224,250,208,150,255
+227,227,0,140,255,92375,3,218,250,200,153,255
+228,228,0,144,255,92500,1,211,250,185,156,255
+229,229,0,148,255,92625,0,205,250,167,159,255
+230,230,0,152,255,92750,0,199,250,146,162,255
+231,231,0,156,255,92875,0,192,250,127,165,255
+232,232,0,160,255,93000,1,186,250,111,168,255
+233,233,0,164,255,93125,3,180,250,102,171,255
+234,234,0,168,255,93250,5,174,250,98,174,255
+235,235,0,172,255,93375,9,167,250,100,177,255
+236,236,0,176,255,93500,13,161,250,107,180,255
+237,237,0,180,255,93625,17,155,50,116,183,255
+238,238,0,184,255,93750,23,148,50,126,186,255
+239,239,0,188,255,93875,29,142,50,134,189,255
+240,240,0,192,255,94000,36,136,50,141,192,255
+241,241,0,196,255,94125,43,129,50,144,195,255
+242,242,0,200,255,94250,50,123,50,143,198,255
+243,243,0,204,255,94375,59,117,50,140,201,255
+244,244,0,208,255,94500,67,110,50,136,204,255
+245,245,0,212,255,94625,76,104,50,132,207,255
+246,246,0,216,255,94750,86,98,50,130,210,255
+247,247,0,220,255,94875,95,91,50,131,213,255
+248,248,0,224,255,95000,105,85,50,136,216,255
+249,249,0,228,255,95125,115,79,50,143,219,255
+250,250,0,232,255,95250,125,72,50,153,222,255
+251,251,0,236,255,95375,135,66,50,162,225,255
+252,252,0,240,255,95500,145,60,50,171,228,255
+253,253,0,244,255,95625,154,54,50,176,231,255
+254,254,0,248,255,95750,164,47,50,175,234,255
+255,255,0,252,255,95875,173,41,50,169,237,255
+0,255,255,0,0,96000,182,35,50,156,240,255
+1,254,255,4,0,96125,191,28,50,140,243,255
+2,253,255,8,0,96250,199,22,50,119,246,255
+3,252,255,12,0,96375,207,16,50,99,249,255
+4,251,255,16,0,96500,214,9,50,81,252,255
+5,250,255,20,0,96625,221,3,50,70,255,255
+6,249,255,24,0,96750,227,2,50,66,0,0
+7,248,255,28,0,96875,232,9,50,71,3,0
+8,247,255,32,0,97000,237,15,50,86,6,0
+9,246,255,36,0,97125,241,21,50,108,9,0
+10,245,255,40,0,97250,244,28,50,138,12,0
+11,244,255,44,0,97375,246,34,50,166,15,0
+12,243,255,48,0,97500,248,40,50,196,18,0
+13,242,255,52,0,97625,249,46,50,217,21,0
+14,241,255,56,0,97750,249,53,50,230,24,0
+15,240,255,60,0,97875,248,59,50,232,27,0
+16,239,255,64,0,98000,247,65,50,221,30,0
+17,238,255,68,0,98125,244,72,50,200,33,0
+18,237,255,72,0,98250,241,78,50,168,36,0
+19,236,255,76,0,98375,237,84,50,134,39,0
+20,235,255,80,0,98500,232,91,50,96,42,0
+21,234,255,84,0,98625,227,97,250,66,45,0
+22,233,255,88,0,98750,221,103,250,41,48,0
+23,232,255,92,0,98875,214,110,250,30,51,0
+24,231,255,96,0,99000,207,116,250,31,54,0
+25,230,255,100,0,99125,200,122,250,46,57,0
+26,229,255,104,0,99250,191,129,250,73,60,0
+27,228,255,108,0,99375,183,135,250,106,63,0
+28,227,255,112,0,99500,174,141,250,146,66,0
+29,226,255,116,0,99625,164,147,250,182,69,0
+30,225,255,120,0,99750,155,154,250,215,72,0
+31,224,255,124,0,99875,145,160,250,236,75,0
+32,223,255,128,255,100000,135,166,250,245,78,0
+33,222,255,132,255,100125,125,173,250,241,81,0
+34,221,255,136,255,100250,115,179,250,223,84,0
+35,220,255,140,255,100375,106,185,250,196,87,0
+36,219,255,144,255,100500,96,192,250,161,90,0
+37,218,255,148,255,100625,86,198,250,126,93,0
+38,217,255,152,255,100750,77,204,250,90,96,0
+39,216,255,156,255,100875,68,211,250,64,99,0
+40,215,255,160,255,101000,59,217,250,47,102,0
+41,214,255,164,255,101125,51,223,250,42,105,0
+42,213,255,168,255,101250,43,230,250,49,108,0
+43,212,255,172,255,101375,36,236,250,65,111,0
+44,211,255,176,255,101500,29,242,250,91,114,0
+45,210,255,180,255,101625,23,249,250,120,117,0
+46,209,255,184,255,101750,18,244,250,150,120,0
+47,208,255,188,255,101875,13,238,250,176,123,0
+48,207,255,192,255,102000,9,232,250,196,126,0
+49,206,255,196,255,102125,5,225,250,206,129,255
+50,205,255,200,255,102250,3,219,250,208,132,255
+51,204,255,204,255,102375,1,213,250,200,135,255
+52,203,255,208,255,102500,0,206,250,185,138,255
+53,202,255,212,255,102625,0,200,250,167,141,255
+54,201,255,216,255,102750,0,194,250,146,144,255
+55,200,255,220,255,102875,1,187,250,127,147,255
+56,199,255,224,255,103000,3,181,250,111,150,255
+57,198,255,228,255,103125,6,175,250,102,153,255
+58,197,255,232,255,103250,9,168,250,98,156,255
+59,196,255,236,255,103375,14,162,250,100,159,255
+60,195,255,240,255,103500,19,156,250,107,162,255
+61,194,255,244,255,103625,24,149,50,116,165,255
+62,193,255,248,255,103750,30,143,50,126,168,255
+63,192,255,252,255,103875,37,137,50,134,171,255
+64,191,255,0,0,104000,44,130,50,141,174,255
+65,190,255,4,0,104125,52,124,50,144,177,255
+66,189,255,8,0,104250,61,118,50,143,180,255
+67,188,255,12,0,104375,69,112,50,140,183,255
+68,187,255,16,0,104500,78,105,50,136,186,255
+69,186,255,20,0,104625,88,99,50,132,189,255
+70,185,255,24,0,104750,97,93,50,130,192,255
+71,184,255,28,0,104875,107,86,50,131,195,255
+72,183,255,32,0,105000,117,80,50,136,198,255
+73,182,255,36,0,105125,127,74,50,143,201,255
+74,181,255,40,0,105250,137,67,50,153,204,255
+75,180,255,44,0,105375,147,61,50,162,207,255
+76,179,255,48,0,105500,156,55,50,171,210,255
+77,178,255,52,0,105625,166,48,50,176,213,255
+78,177,255,56,0,105750,175,42,50,175,216,255
+79,176,255,60,0,105875,184,36,50,169,219,255
+80,175,255,64,0,106000,193,30,50,156,222,255
+81,174,255,68,0,106125,201,23,50,140,225,255
+82,173,255,72,0,106250,208,17,50,119,228,255
+83,172,255,76,0,106375,215,11,50,99,231,255
+84,171,255,80,0,106500,222,4,50,81,234,255
+85,170,255,84,0,106625,228,1,50,70,237,255
+86,169,255,88,0,106750,233,7,50,66,240,255
+87,168,255,92,0,106875,238,14,50,71,243,255
+88,167,255,96,0,107000,242,20,50,86,246,255
+89,166,255,100,0,107125,245,26,50,108,249,255
+90,165,255,104,0,107250,247,33,50,138,252,255
+91,164,255,108,0,107375,249,39,50,166,255,255
+92,163,255,112,0,107500,249,45,50,196,0,0
+93,162,255,116,0,107625,249,52,50,217,3,0
+94,161,255,120,0,107750,248,58,50,230,6,0
+95,160,255,124,0,107875,246,64,50,232,9,0
+96,159,255,128,255,108000,244,71,50,221,12,0
+97,158,255,132,255,108125,240,77,50,200,15,0
+98,157,255,136,255,108250,236,83,50,168,18,0
+99,156,255,140,255,108375,231,89,50,134,21,0
+100,155,255,144,255,108500,226,96,50,96,24,0
+101,154,255,148,255,108625,219,102,250,66,27,0
+102,153,255,152,255,108750,213,108,250,41,30,0
+103,152,255,156,255,108875,205,115,250,30,33,0
+104,151,255,160,255,109000,198,121,250,31,36,0
+105,150,255,164,255,109125,189,127,250,46,39,0
+106,149,255,168,255,109250,181,134,250,73,42,0
+107,148,255,172,255,109375,172,140,250,106,45,0
+108,147,255,176,255,109500,162,146,250,146,48,0
+109,146,255,180,255,109625,153,153,250,182,51,0
+110,145,255,184,255,109750,143,159,250,215,54,0
+111,144,255,188,255,109875,133,165,250,236,57,0
+112,143,255,192,255,110000,123,171,250,245,60,0
+113,142,255,196,255,110125,113,178,250,241,63,0
+114,141,255,200,255,110250,103,184,250,223,66,0
+115,140,255,204,255,110375,94,191,250,196,69,0
+116,139,255,208,255,110500,84,197,250,161,72,0
+117,138,255,212,255,110625,75,203,250,126,75,0
+118,137,255,216,255,110750,66,209,250,90,78,0
+119,136,255,220,255,110875,57,216,250,64,81,0
+120,135,255,224,255,111000,49,222,250,47,84,0
+121,134,255,228,255,111125,41,228,250,42,87,0
+122,133,255,232,255,111250,34,235,250,49,90,0
+123,132,255,236,255,111375,28,241,250,65,93,0
+124,131,255,240,255,111500,22,247,250,91,96,0
+125,130,255,244,255,111625,16,245,250,120,99,0
+126,129,255,248,255,111750,12,239,250,150,102,0
+127,128,255,252,255,111875,8,233,250,176,105,0
+128,127,255,0,0,112000,5,226,250,196,108,0
+129,126,255,4,0,112125,2,220,250,206,111,0
+130,125,255,8,0,112250,1,214,250,208,114,0
+131,124,255,12,0,112375,0,208,250,200,117,0
+132,123,255,16,0,112500,0,201,250,185,120,0
+133,122,255,20,0,112625,0,195,250,167,123,0
+134,121,255,24,0,112750,2,189,250,146,126,0
+135,120,255,28,0,112875,4,182,250,127,129,255
+136,119,255,32,0,113000,7,176,250,111,132,255
+137,118,255,36,0,113125,10,170,250,102,135,255
+138,117,255,40,0,113250,15,163,250,98,138,255
+139,116,255,44,0,113375,20,157,250,100,141,255
+140,115,255,48,0,113500,26,151,250,107,144,255
+141,114,255,52,0,113625,32,144,50,116,147,255
+142,113,255,56,0,113750,39,138,50,126,150,255
+143,112,255,60,0,113875,46,132,50,134,153,255
+144,111,255,64,0,114000,54,125,50,141,156,255
+145,110,255,68,0,114125,63,119,50,144,159,255
+146,109,255,72,0,114250,71,113,50,143,162,255
+147,108,255,76,0,114375,81,106,50,140,165,255
+148,107,255,80,0,114500,90,100,50,136,168,255
+149,106,255,84,0,114625,100,94,50,132,171,255
+150,105,255,88,0,114750,110,88,50,130,174,255
+151,104,255,92,0,114875,119,81,50,131,177,255
+152,103,255,96,0,115000,129,75,50,136,180,255
+153,102,255,100,0,115125,139,69,50,143,183,255
+154,101,255,104,0,115250,149,62,50,153,186,255
+155,100,255,108,0,115375,159,56,50,162,189,255
+156,99,255,112,0,115500,168,50,50,171,192,255
+157,98,255,116,0,115625,177,43,50,176,195,255
+158,97,255,120,0,115750,186,37,50,175,198,255
+159,96,255,124,0,115875,195,31,50,169,201,255
+160,95,255,128,255,116000,203,24,50,156,204,255
+161,94,255,132,255,116125,210,18,50,140,207,255
+162,93,255,136,255,116250,217,12,50,119,210,255
+163,92,255,140,255,116375,223,5,50,99,213,255
+164,91,255,144,255,116500,229,0,50,81,216,255
+165,90,255,148,255,116625,234,6,50,70,219,255
+166,89,255,152,255,116750,239,13,50,66,222,255
+167,88,255,156,255,116875,242,19,50,71,225,255
+168,87,255,160,255,117000,245,25,50,86,228,255
+169,86,255,164,255,117125,247,31,50,108,231,255
+170,85,255,168,255,117250,249,38,50,138,234,255
+171,84,255,172,255,117375,250,44,50,166,237,255
+172,83,255,176,255,117500,249,50,50,196,240,255
+173,82,255,180,255,117625,248,57,50,217,243,255
+174,81,255,184,255,117750,246,63,50,230,246,255
+175,80,255,188,255,117875,243,69,50,232,249,255
+176,79,255,192,255,118000,239,76,50,221,252,255
+177,78,255,196,255,118125,235,82,50,200,255,255
+178,77,255,200,255,118250,230,88,50,168,0,0
+179,76,255,204,255,118375,224,95,50,134,3,0
+180,75,255,208,255,118500,218,101,50,96,6,0
+181,74,255,212,255,118625,211,107,250,66,9,0
+182,73,255,216,255,118750,204,114,250,41,12,0
+183,72,255,220,255,118875,196,120,250,30,15,0
+184,71,255,224,255,119000,187,126,250,31,18,0
+185,70,255,228,255,119125,179,132,250,46,21,0
+186,69,255,232,255,119250,169,139,250,73,24,0
+187,68,255,236,255,119375,160,145,250,106,27,0
+188,67,255,240,255,119500,150,151,250,146,30,0
+189,66,255,244,255,119625,141,158,250,182,33,0
+190,65,255,248,255,119750,131,164,250,215,36,0
+191,64,255,252,255,119875,121,170,250,236,39,0
+192,63,255,0,0,120000,111,177,250,245,42,0
+193,62,255,4,0,120125,101,183,250,241,45,0
+194,61,255,8,0,120250,91,189,250,223,48,0
+195,60,255,12,0,120375,82,196,250,196,51,0
+196,59,255,16,0,120500,73,202,250,161,54,0
+197,58,255,20,0,120625,64,208,250,126,57,0
+198,57,255,24,0,120750,55,215,250,90,60,0
+199,56,255,28,0,120875,47,221,250,64,63,0
+200,55,255,32,0,121000,40,227,250,47,66,0
+201,54,255,36,0,121125,33,234,250,42,69,0
+202,53,255,40,0,121250,26,240,250,49,72,0
+203,52,255,44,0,121375,20,246,250,65,75,0
+204,51,255,48,0,121500,15,247,250,91,78,0
+205,50,255,52,0,121625,11,240,250,120,81,0
+206,49,255,56,0,121750,7,234,250,150,84,0
+207,48,255,60,0,121875,4,228,250,176,87,0
+208,47,255,64,0,122000,2,221,250,196,90,0
+209,46,255,68,0,122125,0,215,250,206,93,0
+210,45,255,72,0,122250,0,209,250,208,96,0
+211,44,255,76,0,122375,0,202,250,200,99,0
+212,43,255,80,0,122500,0,196,250,185,102,0
+213,42,255,84,0,122625,2,190,250,167,105,0
+214,41,255,88,0,122750,4,183,250,146,108,0
+215,40,255,92,0,122875,8,177,250,127,111,0
+216,39,255,96,0,123000,11,171,250,111,114,0
+217,38,255,100,0,123125,16,164,250,102,117,0
+218,37,255,104,0,123250,21,158,250,98,120,0
+219,36,255,108,0,123375,27,152,250,100,123,0
+220,35,255,112,0,123500,33,145,250,107,126,0
+221,34,255,116,0,123625,41,139,50,116,129,255
+222,33,255,120,0,123750,48,133,50,126,132,255
+223,32,255,124,0,123875,56,127,50,134,135,255
+224,31,255,128,255,124000,65,120,50,141,138,255
+225,30,255,132,255,124125,74,114,50,144,141,255
+226,29,255,136,255,124250,83,108,50,143,144,255
+227,28,255,140,255,124375,92,101,50,140,147,255
+228,27,255,144,255,124500,102,95,50,136,150,255
+229,26,255,148,255,124625,112,89,50,132,153,255
+230,25,255,152,255,124750,122,82,50,130,156,255
+231,24,255,156,255,124875,132,76,50,131,159,255
+232,23,255,160,255,125000,142,70,50,136,162,255
+233,22,255,164,255,125125,151,63,50,143,165,255
+234,21,255,168,255,125250,161,57,50,153,168,255
+235,20,255,172,255,125375,170,51,50,162,171,255
+236,19,255,176,255,125500,179,45,50,171,174,255
+237,18,255,180,255,125625,188,38,50,176,177,255
+238,17,255,184,255,125750,197,32,50,175,180,255
+239,16,255,188,255,125875,204,26,50,169,183,255
+240,15,255,192,255,126000,212,19,50,156,186,255
+241,14,255,196,255,126125,219,13,50,140,189,255
+242,13,255,200,255,126250,225,7,50,119,192,255
+243,12,255,204,255,126375,230,0,50,99,195,255
+244,11,255,208,255,126500,235,5,50,81,198,255
+245,10,255,212,255,126625,240,11,50,70,201,255
+246,9,255,216,255,126750,243,18,50,66,204,255
+247,8,255,220,255,126875,246,24,50,71,207,255
+248,7,255,224,255,127000,248,30,50,86,210,255
+249,6,255,228,255,127125,249,37,50,108,213,255
+250,5,255,232,255,127250,250,43,50,138,216,255
+251,4,255,236,255,127375,249,49,50,166,219,255
+252,3,255,240,255,127500,247,56,50,196,222,255
+253,2,255,244,255,127625,245,62,50,217,225,255
+254,1,255,248,255,127750,242,68,50,230,228,255
+255,0,255,252,255,127875,238,74,50,232,231,255
+0,0,0,0,0,128000,234,81,50,221,234,255
+1,1,0,4,0,128125,229,87,50,200,237,255
+2,2,0,8,0,128250,223,93,50,168,240,255
+3,3,0,12,0,128375,216,100,50,134,243,255
+4,4,0,16,0,128500,209,106,50,96,246,255
+5,5,0,20,0,128625,202,112,250,66,249,255
+6,6,0,24,0,128750,194,119,250,41,252,255
+7,7,0,28,0,128875,185,125,250,30,255,255
+8,8,0,32,0,129000,177,131,250,31,0,0
+9,9,0,36,0,129125,167,138,250,46,3,0
+10,10,0,40,0,129250,158,144,250,73,6,0
+11,11,0,44,0,129375,148,150,250,106,9,0
+12,12,0,48,0,129500,138,156,250,146,12,0
+13,13,0,52,0,129625,128,163,250,182,15,0
+14,14,0,56,0,129750,118,169,250,215,18,0
+15,15,0,60,0,129875,109,176,250,236,21,0
+16,16,0,64,0,130000,99,182,250,245,24,0
+17,17,0,68,0,130125,89,188,250,241,27,0
+18,18,0,72,0,130250,80,194,250,223,30,0
+19,19,0,76,0,130375,71,201,250,196,33,0
+20,20,0,80,0,130500,62,207,250,161,36,0
+21,21,0,84,0,130625,53,213,250,126,39,0
+22,22,0,88,0,130750,46,220,250,90,42,0
+23,23,0,92,0,130875,38,226,250,64,45,0
+24,24,0,96,0,131000,31,232,250,47,48,0
+25,25,0,100,0,131125,25,239,250,42,51,0
+26,26,0,104,0,131250,19,245,250,49,54,0
+27,27,0,108,0,131375,14,248,250,65,57,0
+28,28,0,112,0,131500,10,241,250,91,60,0
+29,29,0,116,0,131625,6,235,250,120,63,0
+30,30,0,120,0,131750,4,229,250,150,66,0
+31,31,0,124,0,131875,1,223,250,176,69,0
+32,32,0,128,255,132000,0,216,250,196,72,0
+33,33,0,132,255,132125,0,210,250,206,75,0
+34,34,0,136,255,132250,0,204,250,208,78,0
+35,35,0,140,255,132375,1,197,250,200,81,0
+36,36,0,144,255,132500,3,191,250,185,84,0
+37,37,0,148,255,132625,5,185,250,167,87,0
+38,38,0,152,255,132750,8,178,250,146,90,0
+39,39,0,156,255,132875,12,172,250,127,93,0
+40,40,0,160,255,133000,17,166,250,111,96,0
+41,41,0,164,255,133125,22,159,250,102,99,0
+42,42,0,168,255,133250,28,153,250,98,102,0
+43,43,0,172,255,133375,35,147,250,100,105,0
+44,44,0,176,255,133500,42,140,250,107,108,0
+45,45,0,180,255,133625,50,134,50,116,111,0
+46,46,0,184,255,133750,58,128,50,126,114,0
+47,47,0,188,255,133875,67,121,50,134,117,0
+48,48,0,192,255,134000,76,115,50,141,120,0
+49,49,0,196,255,134125,85,109,50,144,123,0
+50,50,0,200,255,134250,95,103,50,143,126,0
+51,51,0,204,255,134375,104,96,50,140,129,255
+52,52,0,208,255,134500,114,90,50,136,132,255
+53,53,0,212,255,134625,124,84,50,132,135,255
+54,54,0,216,255,134750,134,77,50,130,138,255
+55,55,0,220,255,134875,144,71,50,131,141,255
+56,56,0,224,255,135000,154,65,50,136,144,255
+57,57,0,228,255,135125,163,58,50,143,147,255
+58,58,0,232,255,135250,173,52,50,153,150,255
+59,59,0,236,255,135375,182,46,50,162,153,255
+60,60,0,240,255,135500,190,39,50,171,156,255
+61,61,0,244,255,135625,198,33,50,176,159,255
+62,62,0,248,255,135750,206,27,50,175,162,255
+63,63,0,252,255,135875,213,20,50,169,165,255
+64,64,0,0,0,136000,220,14,50,156,168,255
+65,65,0,4,0,136125,226,8,50,140,171,255
+66,66,0,8,0,136250,232,1,50,119,174,255
+67,67,0,12,0,136375,236,4,50,99,177,255
+68,68,0,16,0,136500,240,10,50,81,180,255
+69,69,0,20,0,136625,244,16,50,70,183,255
+70,70,0,24,0,136750,246,23,50,66,186,255
+71,71,0,28,0,136875,248,29,50,71,189,255
+72,72,0,32,0,137000,249,35,50,86,192,255
+73,73,0,36,0,137125,249,42,50,108,195,255
+74,74,0,40,0,137250,249,48,50,138,198,255
+75,75,0,44,0,137375,247,54,50,166,201,255
+76,76,0,48,0,137500,244,61,50,196,204,255
+77,77,0,52,0,137625,241,67,50,217,207,255
+78,78,0,56,0,137750,237,73,50,230,210,255
+79,79,0,60,0,137875,233,80,50,232,213,255
+80,80,0,64,0,138000,227,86,50,221,216,255
+81,81,0,68,0,138125,221,92,50,200,219,255
+82,82,0,72,0,138250,215,98,50,168,222,255
+83,83,0,76,0,138375,208,105,50,134,225,255
+84,84,0,80,0,138500,200,111,50,96,228,255
+85,85,0,84,0,138625,192,117,250,66,231,255
+86,86,0,88,0,138750,183,124,250,41,234,255
+87,87,0,92,0,138875,174,130,250,30,237,255
+88,88,0,96,0,139000,165,136,250,31,240,255
+89,89,0,100,0,139125,156,143,250,46,243,255
+90,90,0,104,0,139250,146,149,250,73,246,255
+91,91,0,108,0,139375,136,155,250,106,249,255
+92,92,0,112,0,139500,126,162,250,146,252,255
+93,93,0,116,0,139625,116,168,250,182,255,255
+94,94,0,120,0,139750,106,174,250,215,0,0
+95,95,0,124,0,139875,96,181,250,236,3,0
+96,96,0,128,255,140000,87,187,250,245,6,0
+97,97,0,132,255,140125,78,193,250,241,9,0
+98,98,0,136,255,140250,68,200,250,223,12,0
+99,99,0,140,255,140375,60,206,250,196,15,0
+100,100,0,144,255,140500,52,212,250,161,18,0
+101,101,0,148,255,140625,44,218,250,126,21,0
+102,102,0,152,255,140750,36,225,250,90,24,0
+103,103,0,156,255,140875,30,231,250,64,27,0
+104,104,0,160,255,141000,24,237,250,47,30,0
+105,105,0,164,255,141125,18,244,250,42,33,0
+106,106,0,168,255,141250,13,249,250,49,36,0
+107,107,0,172,255,141375,9,243,250,65,39,0
+108,108,0,176,255,141500,6,236,250,91,42,0
+109,109,0,180,255,141625,3,230,250,120,45,0
+110,110,0,184,255,141750,1,224,250,150,48,0
+111,111,0,188,255,141875,0,217,250,176,51,0
+112,112,0,192,255,142000,0,211,250,196,54,0
+113,113,0,196,255,142125,0,205,250,206,57,0
+114,114,0,200,255,142250,1,198,250,208,60,0
+115,115,0,204,255,142375,3,192,250,200,63,0
+116,116,0,208,255,142500,6,186,250,185,66,0
+117,117,0,212,255,142625,9,180,250,167,69,0
+118,118,0,216,255,142750,13,173,250,146,72,0
+119,119,0,220,255,142875,18,167,250,127,75,0
+120,120,0,224,255,143000,24,161,250,111,78,0
+121,121,0,228,255,143125,30,154,250,102,81,0
+122,122,0,232,255,143250,37,148,250,98,84,0
+123,123,0,236,255,143375,44,142,250,100,87,0
+124,124,0,240,255,143500,52,135,250,107,90,0
+125,125,0,244,255,143625,60,129,50,116,93,0
+126,126,0,248,255,143750,69,123,50,126,96,0
+127,127,0,252,255,143875,78,116,50,134,99,0
+128,128,0,0,0,144000,87,110,50,141,102,0
+129,129,0,4,0,144125,97,104,50,144,105,0
+130,130,0,8,0,144250,107,97,50,143,108,0
+131,131,0,12,0,144375,117,91,50,140,111,0
+132,132,0,16,0,144500,126,85,50,136,114,0
+133,133,0,20,0,144625,136,78,50,132,117,0
+134,134,0,24,0,144750,146,72,50,130,120,0
+135,135,0,28,0,144875,156,66,50,131,123,0
+136,136,0,32,0,145000,165,60,50,136,126,0
+137,137,0,36,0,145125,175,53,50,143,129,255
+138,138,0,40,0,145250,184,47,50,153,132,255
+139,139,0,44,0,145375,192,41,50,162,135,255
+140,140,0,48,0,145500,200,34,50,171,138,255
+141,141,0,52,0,145625,208,28,50,176,141,255
+142,142,0,56,0,145750,215,22,50,175,144,255
+143,143,0,60,0,145875,222,15,50,169,147,255
+144,144,0,64,0,146000,228,9,50,156,150,255
+145,145,0,68,0,146125,233,3,50,140,153,255
+146,146,0,72,0,146250,237,3,50,119,156,255
+147,147,0,76,0,146375,241,9,50,99,159,255
+148,148,0,80,0,146500,244,15,50,81,162,255
+149,149,0,84,0,146625,247,22,50,70,165,255
+150,150,0,88,0,146750,249,28,50,66,168,255
+151,151,0,92,0,146875,249,34,50,71,171,255
+152,152,0,96,0,147000,249,41,50,86,174,255
+153,153,0,100,0,147125,248,47,50,108,177,255
+154,154,0,104,0,147250,246,53,50,138,180,255
+155,155,0,108,0,147375,244,59,50,166,183,255
+156,156,0,112,0,147500,240,66,50,196,186,255
+157,157,0,116,0,147625,236,72,50,217,189,255
+158,158,0,120,0,147750,231,78,50,230,192,255
+159,159,0,124,0,147875,226,85,50,232,195,255
+160,160,0,128,255,148000,220,91,50,221,198,255
+161,161,0,132,255,148125,213,97,50,200,201,255
+162,162,0,136,255,148250,206,104,50,168,204,255
+163,163,0,140,255,148375,198,110,50,134,207,255
+164,164,0,144,255,148500,190,116,50,96,210,255
+165,165,0,148,255,148625,181,123,250,66,213,255
+166,166,0,152,255,148750,172,129,250,41,216,255
+167,167,0,156,255,148875,163,135,250,30,219,255
+168,168,0,160,255,149000,153,141,250,31,222,255
+169,169,0,164,255,149125,144,148,250,46,225,255
+170,170,0,168,255,149250,134,154,250,73,228,255
+171,171,0,172,255,149375,124,161,250,106,231,255
+172,172,0,176,255,149500,114,167,250,146,234,255
+173,173,0,180,255,149625,104,173,250,182,237,255
+174,174,0,184,255,149750,94,179,250,215,240,255
+175,175,0,188,255,149875,85,186,250,236,243,255
+176,176,0,192,255,150000,75,192,250,245,246,255
+177,177,0,196,255,150125,66,198,250,241,249,255
+178,178,0,200,255,150250,58,205,250,223,252,255
+179,179,0,204,255,150375,50,211,250,196,255,255
+180,180,0,208,255,150500,42,217,250,161,0,0
+181,181,0,212,255,150625,35,224,250,126,3,0
+182,182,0,216,255,150750,28,230,250,90,6,0
+183,183,0,220,255,150875,22,236,250,64,9,0
+184,184,0,224,255,151000,17,243,250,47,12,0
+185,185,0,228,255,151125,12,249,250,42,15,0
+186,186,0,232,255,151250,8,244,250,49,18,0
+187,187,0,236,255,151375,5,238,250,65,21,0
+188,188,0,240,255,151500,2,231,250,91,24,0
+189,189,0,244,255,151625,1,225,250,120,27,0
+190,190,0,248,255,151750,0,219,250,150,30,0
+191,191,0,252,255,151875,0,212,250,176,33,0
+192,192,0,0,0,152000,0,206,250,196,36,0
+193,193,0,4,0,152125,2,200,250,206,39,0
+194,194,0,8,0,152250,4,193,250,208,42,0
+195,195,0,12,0,152375,6,187,250,200,45,0
+196,196,0,16,0,152500,10,181,250,185,48,0
+197,197,0,20,0,152625,14,174,250,167,51,0
+198,198,0,24,0,152750,19,168,250,146,54,0
+199,199,0,28,0,152875,25,162,250,127,57,0
+200,200,0,32,0,153000,31,155,250,111,60,0
+201,201,0,36,0,153125,38,149,250,102,63,0
+202,202,0,40,0,153250,46,143,250,98,66,0
+203,203,0,44,0,153375,54,136,250,100,69,0
+204,204,0,48,0,153500,62,130,250,107,72,0
+205,205,0,52,0,153625,71,124,50,116,75,0
+206,206,0,56,0,153750,80,118,50,126,78,0
+207,207,0,60,0,153875,89,111,50,134,81,0
+208,208,0,64,0,154000,99,105,50,141,84,0
+209,209,0,68,0,154125,109,99,50,144,87,0
+210,210,0,72,0,154250,119,92,50,143,90,0
+211,211,0,76,0,154375,129,86,50,140,93,0
+212,212,0,80,0,154500,139,80,50,136,96,0
+213,213,0,84,0,154625,149,73,50,132,99,0
+214,214,0,88,0,154750,158,67,50,130,102,0
+215,215,0,92,0,154875,168,61,50,131,105,0
+216,216,0,96,0,155000,177,54,50,136,108,0
+217,217,0,100,0,155125,186,48,50,143,111,0
+218,218,0,104,0,155250,194,42,50,153,114,0
+219,219,0,108,0,155375,202,36,50,162,117,0
+220,220,0,112,0,155500,210,29,50,171,120,0
+221,221,0,116,0,155625,217,23,50,176,123,0
+222,222,0,120,0,155750,223,17,50,175,126,0
+223,223,0,124,0,155875,229,10,50,169,129,255
+224,224,0,128,255,156000,234,4,50,156,132,255
+225,225,0,132,255,156125,238,1,50,140,135,255
+226,226,0,136,255,156250,242,8,50,119,138,255
+227,227,0,140,255,156375,245,14,50,99,141,255
+228,228,0,144,255,156500,247,20,50,81,144,255
+229,229,0,148,255,156625,249,27,50,70,147,255
+230,230,0,152,255,156750,250,33,50,66,150,255
+231,231,0,156,255,156875,249,39,50,71,153,255
+232,232,0,160,255,157000,248,46,50,86,156,255
+233,233,0,164,255,157125,246,52,50,108,159,255
+234,234,0,168,255,157250,243,58,50,138,162,255
+235,235,0,172,255,157375,239,65,50,166,165,255
+236,236,0,176,255,157500,235,71,50,196,168,255
+237,237,0,180,255,157625,230,77,50,217,171,255
+238,238,0,184,255,157750,225,83,50,230,174,255
+239,239,0,188,255,157875,218,90,50,232,177,255
+240,240,0,192,255,158000,212,96,50,221,180,255
+241,241,0,196,255,158125,204,102,50,200,183,255
+242,242,0,200,255,158250,196,109,50,168,186,255
+243,243,0,204,255,158375,188,115,50,134,189,255
+244,244,0,208,255,158500,179,121,50,96,192,255
+245,245,0,212,255,158625,170,128,250,66,195,255
+246,246,0,216,255,158750,161,134,250,41,198,255
+247,247,0,220,255,158875,151,140,250,30,201,255
+248,248,0,224,255,159000,141,147,250,31,204,255
+249,249,0,228,255,159125,131,153,250,46,207,255
+250,250,0,232,255,159250,121,159,250,73,210,255
+251,251,0,236,255,159375,111,166,250,106,213,255
+252,252,0,240,255,159500,102,172,250,146,216,255
+253,253,0,244,255,159625,92,178,250,182,219,255
+254,254,0,248,255,159750,82,185,250,215,222,255
+255,255,0,252,255,159875,73,191,250,236,225,255
+0,255,255,0,0,160000,64,197,250,245,228,255
+1,254,255,4,0,160125,56,203,250,241,231,255
+2,253,255,8,0,160250,48,210,250,223,234,255
+3,252,255,12,0,160375,40,216,250,196,237,255
+4,251,255,16,0,160500,33,222,250,161,240,255
+5,250,255,20,0,160625,27,229,250,126,243,255
+6,249,255,24,0,160750,21,235,250,90,246,255
+7,248,255,28,0,160875,16,241,250,64,249,255
+8,247,255,32,0,161000,11,248,250,47,252,255
+9,246,255,36,0,161125,7,245,250,42,255,255
+10,245,255,40,0,161250,4,239,250,49,0,0
+11,244,255,44,0,161375,2,232,250,65,3,0
+12,243,255,48,0,161500,0,226,250,91,6,0
+13,242,255,52,0,161625,0,220,250,120,9,0
+14,241,255,56,0,161750,0,213,250,150,12,0
+15,240,255,60,0,161875,0,207,250,176,15,0
+16,239,255,64,0,162000,2,201,250,196,18,0
+17,238,255,68,0,162125,4,195,250,206,21,0
+18,237,255,72,0,162250,7,188,250,208,24,0
+19,236,255,76,0,162375,11,182,250,200,27,0
+20,235,255,80,0,162500,16,176,250,185,30,0
+21,234,255,84,0,162625,21,169,250,167,33,0
+22,233,255,88,0,162750,27,163,250,146,36,0
+23,232,255,92,0,162875,33,157,250,127,39,0
+24,231,255,96,0,163000,40,150,250,111,42,0
+25,230,255,100,0,163125,48,144,250,102,45,0
+26,229,255,104,0,163250,56,138,250,98,48,0
+27,228,255,108,0,163375,64,131,250,100,51,0
+28,227,255,112,0,163500,73,125,250,107,54,0
+29,226,255,116,0,163625,82,119,50,116,57,0
+30,225,255,120,0,163750,92,112,50,126,60,0
+31,224,255,124,0,163875,101,106,50,134,63,0
+32,223,255,128,255,164000,111,100,50,141,66,0
+33,222,255,132,255,164125,121,93,50,144,69,0
+34,221,255,136,255,164250,131,87,50,143,72,0
+35,220,255,140,255,164375,141,81,50,140,75,0
+36,219,255,144,255,164500,151,75,50,136,78,0
+37,218,255,148,255,164625,160,68,50,132,81,0
+38,217,255,152,255,164750,170,62,50,130,84,0
+39,216,255,156,255,164875,179,56,50,131,87,0
+40,215,255,160,255,165000,188,49,50,136,90,0
+41,214,255,164,255,165125,196,43,50,143,93,0
+42,213,255,168,255,165250,204,37,50,153,96,0
+43,212,255,172,255,165375,211,30,50,162,99,0
+44,211,255,176,255,165500,218,24,50,171,102,0
+45,210,255,180,255,165625,224,18,50,176,105,0
+46,209,255,184,255,165750,230,11,50,175,108,0
+47,208,255,188,255,165875,235,5,50,169,111,0
+48,207,255,192,255,166000,239,0,50,156,114,0
+49,206,255,196,255,166125,243,7,50,140,117,0
+50,205,255,200,255,166250,246,13,50,119,120,0
+51,204,255,204,255,166375,248,19,50,99,123,0
+52,203,255,208,255,166500,249,26,50,81,126,0
+53,202,255,212,255,166625,250,32,50,70,129,255
+54,201,255,216,255,166750,249,38,50,66,132,255
+55,200,255,220,255,166875,247,44,50,71,135,255
+56,199,255,224,255,167000,245,51,50,86,138,255
+57,198,255,228,255,167125,242,57,50,108,141,255
+58,197,255,232,255,167250,239,63,50,138,144,255
+59,196,255,236,255,167375,234,70,50,166,147,255
+60,195,255,240,255,167500,229,76,50,196,150,255
+61,194,255,244,255,167625,223,82,50,217,153,255
+62,193,255,248,255,167750,217,89,50,230,156,255
+63,192,255,252,255,167875,210,95,50,232,159,255
+64,191,255,0,0,168000,202,101,50,221,162,255
+65,190,255,4,0,168125,194,108,50,200,165,255
+66,189,255,8,0,168250,186,114,50,168,168,255
+67,188,255,12,0,168375,177,120,50,134,171,255
+68,187,255,16,0,168500,168,126,50,96,174,255
+69,186,255,20,0,168625,158,133,250,66,177,255
+70,185,255,24,0,168750,149,139,250,41,180,255
+71,184,255,28,0,168875,139,145,250,30,183,255
+72,183,255,32,0,169000,129,152,250,31,186,255
+73,182,255,36,0,169125,119,158,250,46,189,255
+74,181,255,40,0,169250,109,164,250,73,192,255
+75,180,255,44,0,169375,99,171,250,106,195,255
+76,179,255,48,0,169500,90,177,250,146,198,255
+77,178,255,52,0,169625,80,183,250,182,201,255
+78,177,255,56,0,169750,71,190,250,215,204,255
+79,176,255,60,0,169875,62,196,250,236,207,255
+80,175,255,64,0,170000,54,202,250,245,210,255
+81,174,255,68,0,170125,46,209,250,241,213,255
+82,173,255,72,0,170250,38,215,250,223,216,255
+83,172,255,76,0,170375,32,221,250,196,219,255
+84,171,255,80,0,170500,25,228,250,161,222,255
+85,170,255,84,0,170625,20,234,250,126,225,255
+86,169,255,88,0,170750,15,240,250,90,228,255
+87,168,255,92,0,170875,10,246,250,64,231,255
+88,167,255,96,0,171000,7,246,250,47,234,255
+89,166,255,100,0,171125,4,240,250,42,237,255
+90,165,255,104,0,171250,2,234,250,49,240,255
+91,164,255,108,0,171375,0,227,250,65,243,255
+92,163,255,112,0,171500,0,221,250,91,246,255
+93,162,255,116,0,171625,0,215,250,120,249,255
+94,161,255,120,0,171750,1,208,250,150,252,255
+95,160,255,124,0,171875,2,202,250,176,255,255
+96,159,255,128,255,172000,5,196,250,196,0,0
+97,158,255,132,255,172125,8,189,250,206,3,0
+98,157,255,136,255,172250,12,183,250,208,6,0
+99,156,255,140,255,172375,17,177,250,200,9,0
+100,155,255,144,255,172500,22,170,250,185,12,0
+101,154,255,148,255,172625,28,164,250,167,15,0
+102,153,255,152,255,172750,35,158,250,146,18,0
+103,152,255,156,255,172875,42,151,250,127,21,0
+104,151,255,160,255,173000,49,145,250,111,24,0
+105,150,255,164,255,173125,58,139,250,102,27,0
+106,149,255,168,255,173250,66,133,250,98,30,0
+107,148,255,172,255,173375,75,126,250,100,33,0
+108,147,255,176,255,173500,84,120,250,107,36,0
+109,146,255,180,255,173625,94,114,50,116,39,0
+110,145,255,184,255,173750,104,107,50,126,42,0
+111,144,255,188,255,173875,114,101,50,134,45,0
+112,143,255,192,255,174000,124,95,50,141,48,0
+113,142,255,196,255,174125,133,88,50,144,51,0
+114,141,255,200,255,174250,143,82,50,143,54,0
+115,140,255,204,255,174375,153,76,50,140,57,0
+116,139,255,208,255,174500,163,69,50,136,60,0
+117,138,255,212,255,174625,172,63,50,132,63,0
+118,137,255,216,255,174750,181,57,50,130,66,0
+119,136,255,220,255,174875,190,51,50,131,69,0
+120,135,255,224,255,175000,198,44,50,136,72,0
+121,134,255,228,255,175125,206,38,50,143,75,0
+122,133,255,232,255,175250,213,32,50,153,78,0
+123,132,255,236,255,175375,220,25,50,162,81,0
+124,131,255,240,255,175500,226,19,50,171,84,0
+125,130,255,244,255,175625,231,13,50,176,87,0
+126,129,255,248,255,175750,236,6,50,175,90,0
+127,128,255,252,255,175875,240,0,50,169,93,0
+128,127,255,0,0,176000,244,5,50,156,96,0
+129,126,255,4,0,176125,246,12,50,140,99,0
+130,125,255,8,0,176250,248,18,50,119,102,0
+131,124,255,12,0,176375,249,24,50,99,105,0
+132,123,255,16,0,176500,249,31,50,81,108,0
+133,122,255,20,0,176625,249,37,50,70,111,0
+134,121,255,24,0,176750,247,43,50,66,114,0
+135,120,255,28,0,176875,244,50,50,71,117,0
+136,119,255,32,0,177000,241,56,50,86,120,0
+137,118,255,36,0,177125,238,62,50,108,123,0
+138,117,255,40,0,177250,233,68,50,138,126,0
+139,116,255,44,0,177375,228,75,50,166,129,255
+140,115,255,48,0,177500,222,81,50,196,132,255
+141,114,255,52,0,177625,215,87,50,217,135,255
+142,113,255,56,0,177750,208,94,50,230,138,255
+143,112,255,60,0,177875,200,100,50,232,141,255
+144,111,255,64,0,178000,192,106,50,221,144,255
+145,110,255,68,0,178125,184,113,50,200,147,255
+146,109,255,72,0,178250,175,119,50,168,150,255
+147,108,255,76,0,178375,166,125,50,134,153,255
+148,107,255,80,0,178500,156,132,50,96,156,255
+149,106,255,84,0,178625,146,138,250,66,159,255
+150,105,255,88,0,178750,137,144,250,41,162,255
+151,104,255,92,0,178875,127,151,250,30,165,255
+152,103,255,96,0,179000,117,157,250,31,168,255
+153,102,255,100,0,179125,107,163,250,46,171,255
+154,101,255,104,0,179250,97,170,250,73,174,255
+155,100,255,108,0,179375,87,176,250,106,177,255
+156,99,255,112,0,179500,78,182,250,146,180,255
+157,98,255,116,0,179625,69,188,250,182,183,255
+158,97,255,120,0,179750,60,195,250,215,186,255
+159,96,255,124,0,179875,52,201,250,236,189,255
+160,95,255,128,255,180000,44,207,250,245,192,255
+161,94,255,132,255,180125,37,214,250,241,195,255
+162,93,255,136,255,180250,30,220,250,223,198,255
+163,92,255,140,255,180375,24,226,250,196,201,255
+164,91,255,144,255,180500,18,233,250,161,204,255
+165,90,255,148,255,180625,13,239,250,126,207,255
+166,89,255,152,255,180750,9,245,250,90,210,255
+167,88,255,156,255,180875,6,247,250,64,213,255
+168,87,255,160,255,181000,3,241,250,47,216,255
+169,86,255,164,255,181125,1,235,250,42,219,255
+170,85,255,168,255,181250,0,229,250,49,222,255
+171,84,255,172,255,181375,0,222,250,65,225,255
+172,83,255,176,255,181500,0,216,250,91,228,255
+173,82,255,180,255,181625,1,210,250,120,231,255
+174,81,255,184,255,181750,3,203,250,150,234,255
+175,80,255,188,255,181875,6,197,250,176,237,255
+176,79,255,192,255,182000,9,191,250,196,240,255
+177,78,255,196,255,182125,13,184,250,206,243,255
+178,77,255,200,255,182250,18,178,250,208,246,255
+179,76,255,204,255,182375,23,172,250,200,249,255
+180,75,255,208,255,182500,30,165,250,185,252,255
+181,74,255,212,255,182625,36,159,250,167,255,255
+182,73,255,216,255,182750,44,153,250,146,0,0
+183,72,255,220,255,182875,51,146,250,127,3,0
+184,71,255,224,255,183000,60,140,250,111,6,0
+185,70,255,228,255,183125,68,134,250,102,9,0
+186,69,255,232,255,183250,77,127,250,98,12,0
+187,68,255,236,255,183375,87,121,250,100,15,0
+188,67,255,240,255,183500,96,115,250,107,18,0
+189,66,255,244,255,183625,106,109,50,116,21,0
+190,65,255,248,255,183750,116,102,50,126,24,0
+191,64,255,252,255,183875,126,96,50,134,27,0
+192,63,255,0,0,184000,136,90,50,141,30,0
+193,62,255,4,0,184125,146,83,50,144,33,0
+194,61,255,8,0,184250,155,77,50,143,36,0
+195,60,255,12,0,184375,165,71,50,140,39,0
+196,59,255,16,0,184500,174,64,50,136,42,0
+197,58,255,20,0,184625,183,58,50,132,45,0
+198,57,255,24,0,184750,192,52,50,130,48,0
+199,56,255,28,0,184875,200,45,50,131,51,0
+200,55,255,32,0,185000,208,39,50,136,54,0
+201,54,255,36,0,185125,215,33,50,143,57,0
+202,53,255,40,0,185250,221,26,50,153,60,0
+203,52,255,44,0,185375,227,20,50,162,63,0
+204,51,255,48,0,185500,233,14,50,171,66,0
+205,50,255,52,0,185625,237,7,50,176,69,0
+206,49,255,56,0,185750,241,1,50,175,72,0
+207,48,255,60,0,185875,244,4,50,169,75,0
+208,47,255,64,0,186000,247,10,50,156,78,0
+209,46,255,68,0,186125,248,17,50,140,81,0
+210,45,255,72,0,186250,249,23,50,119,84,0
+211,44,255,76,0,186375,249,29,50,99,87,0
+212,43,255,80,0,186500,248,36,50,81,90,0
+213,42,255,84,0,186625,246,42,50,70,93,0
+214,41,255,88,0,186750,244,48,50,66,96,0
+215,40,255,92,0,186875,241,55,50,71,99,0
+216,39,255,96,0,187000,236,61,50,86,102,0
+217,38,255,100,0,187125,232,67,50,108,105,0
+218,37,255,104,0,187250,226,74,50,138,108,0
+219,36,255,108,0,187375,220,80,50,166,111,0
+220,35,255,112,0,187500,214,86,50,196,114,0
+221,34,255,116,0,187625,206,93,50,217,117,0
+222,33,255,120,0,187750,199,99,50,230,120,0
+223,32,255,124,0,187875,190,105,50,232,123,0
+224,31,255,128,255,188000,182,111,50,221,126,0
+225,30,255,132,255,188125,173,118,50,200,129,255
+226,29,255,136,255,188250,163,124,50,168,132,255
+227,28,255,140,255,188375,154,130,50,134,135,255
+228,27,255,144,255,188500,144,137,50,96,138,255
+229,26,255,148,255,188625,134,143,250,66,141,255
+230,25,255,152,255,188750,124,149,250,41,144,255
+231,24,255,156,255,188875,114,156,250,30,147,255
+232,23,255,160,255,189000,104,162,250,31,150,255
+233,22,255,164,255,189125,95,168,250,46,153,255
+234,21,255,168,255,189250,85,175,250,73,156,255
+235,20,255,172,255,189375,76,181,250,106,159,255
+236,19,255,176,255,189500,67,187,250,146,162,255
+237,18,255,180,255,189625,58,194,250,182,165,255
+238,17,255,184,255,189750,50,200,250,215,168,255
+239,16,255,188,255,189875,42,206,250,236,171,255
+240,15,255,192,255,190000,35,213,250,245,174,255
+241,14,255,196,255,190125,29,219,250,241,177,255
+242,13,255,200,255,190250,22,225,250,223,180,255
+243,12,255,204,255,190375,17,231,250,196,183,255
+244,11,255,208,255,190500,12,238,250,161,186,255
+245,10,255,212,255,190625,8,244,250,126,189,255
+246,9,255,216,255,190750,5,249,250,90,192,255
+247,8,255,220,255,190875,3,242,250,64,195,255
+248,7,255,224,255,191000,1,236,250,47,198,255
+249,6,255,228,255,191125,0,230,250,42,201,255
+250,5,255,232,255,191250,0,223,250,49,204,255
+251,4,255,236,255,191375,0,217,250,65,207,255
+252,3,255,240,255,191500,1,211,250,91,210,255
+253,2,255,244,255,191625,4,204,250,120,213,255
+254,1,255,248,255,191750,6,198,250,150,216,255
+255,0,255,252,255,191875,10,192,250,176,219,255
+0,0,0,0,0,192000,14,186,250,196,222,255
+1,1,0,4,0,192125,19,179,250,206,225,255
+2,2,0,8,0,192250,25,173,250,208,228,255
+3,3,0,12,0,192375,31,166,250,200,231,255
+4,4,0,16,0,192500,38,160,250,185,234,255
+5,5,0,20,0,192625,45,154,250,167,237,255
+6,6,0,24,0,192750,53,148,250,146,240,255
+7,7,0,28,0,192875,62,141,250,127,243,255
+8,8,0,32,0,193000,70,135,250,111,246,255
+9,9,0,36,0,193125,79,129,250,102,249,255
+10,10,0,40,0,193250,89,122,250,98,252,255
+11,11,0,44,0,193375,98,116,250,100,255,255
+12,12,0,48,0,193500,108,110,250,107,0,0
+13,13,0,52,0,193625,118,103,50,116,3,0
+14,14,0,56,0,193750,128,97,50,126,6,0
+15,15,0,60,0,193875,138,91,50,134,9,0
+16,16,0,64,0,194000,148,84,50,141,12,0
+17,17,0,68,0,194125,158,78,50,144,15,0
+18,18,0,72,0,194250,167,72,50,143,18,0
+19,19,0,76,0,194375,176,66,50,140,21,0
+20,20,0,80,0,194500,185,59,50,136,24,0
+21,21,0,84,0,194625,194,53,50,132,27,0
+22,22,0,88,0,194750,202,47,50,130,30,0
+23,23,0,92,0,194875,209,40,50,131,33,0
+24,24,0,96,0,195000,216,34,50,136,36,0
+25,25,0,100,0,195125,223,28,50,143,39,0
+26,26,0,104,0,195250,229,21,50,153,42,0
+27,27,0,108,0,195375,234,15,50,162,45,0
+28,28,0,112,0,195500,238,9,50,171,48,0
+29,29,0,116,0,195625,242,2,50,176,51,0
+30,30,0,120,0,195750,245,3,50,175,54,0
+31,31,0,124,0,195875,247,9,50,169,57,0
+32,32,0,128,255,196000,249,16,50,156,60,0
+33,33,0,132,255,196125,250,22,50,140,63,0
+34,34,0,136,255,196250,249,28,50,119,66,0
+35,35,0,140,255,196375,248,35,50,99,69,0
+36,36,0,144,255,196500,246,41,50,81,72,0
+37,37,0,148,255,196625,243,47,50,70,75,0
+38,38,0,152,255,196750,240,53,50,66,78,0
+39,39,0,156,255,196875,235,60,50,71,81,0
+40,40,0,160,255,197000,231,66,50,86,84,0
+41,41,0,164,255,197125,225,72,50,108,87,0
+42,42,0,168,255,197250,219,79,50,138,90,0
+43,43,0,172,255,197375,212,85,50,166,93,0
+44,44,0,176,255,197500,205,91,50,196,96,0
+45,45,0,180,255,197625,197,98,50,217,99,0
+46,46,0,184,255,197750,188,104,50,230,102,0
+47,47,0,188,255,197875,180,110,50,232,105,0
+48,48,0,192,255,198000,171,117,50,221,108,0
+49,49,0,196,255,198125,161,123,50,200,111,0
+50,50,0,200,255,198250,152,129,50,168,114,0
+51,51,0,204,255,198375,142,135,50,134,117,0
+52,52,0,208,255,198500,132,142,50,96,120,0
+53,53,0,212,255,198625,122,148,250,66,123,0
+54,54,0,216,255,198750,112,155,250,41,126,0
+55,55,0,220,255,198875,102,161,250,30,129,255
+56,56,0,224,255,199000,93,167,250,31,132,255
+57,57,0,228,255,199125,83,173,250,46,135,255
+58,58,0,232,255,199250,74,180,250,73,138,255
+59,59,0,236,255,199375,65,186,250,106,141,255
+60,60,0,240,255,199500,56,192,250,146,144,255
+61,61,0,244,255,199625,48,199,250,182,147,255
+62,62,0,248,255,199750,41,205,250,215,150,255
+63,63,0,252,255,199875,34,211,250,236,153,255
+64,64,0,0,0,200000,27,218,250,245,156,255
+65,65,0,4,0,200125,21,224,250,241,159,255
+66,66,0,8,0,200250,16,230,250,223,162,255
+67,67,0,12,0,200375,11,237,250,196,165,255
+68,68,0,16,0,200500,8,243,250,161,168,255
+69,69,0,20,0,200625,5,249,250,126,171,255
+70,70,0,24,0,200750,2,244,250,90,174,255
+71,71,0,28,0,200875,0,237,250,64,177,255
+72,72,0,32,0,201000,0,231,250,47,180,255
+73,73,0,36,0,201125,0,225,250,42,183,255
+74,74,0,40,0,201250,0,218,250,49,186,255
+75,75,0,44,0,201375,2,212,250,65,189,255
+76,76,0,48,0,201500,4,206,250,91,192,255
+77,77,0,52,0,201625,7,199,250,120,195,255
+78,78,0,56,0,201750,11,193,250,150,198,255
+79,79,0,60,0,201875,15,187,250,176,201,255
+80,80,0,64,0,202000,20,180,250,196,204,255
+81,81,0,68,0,202125,26,174,250,206,207,255
+82,82,0,72,0,202250,33,168,250,208,210,255
+83,83,0,76,0,202375,40,161,250,200,213,255
+84,84,0,80,0,202500,47,155,250,185,216,255
+85,85,0,84,0,202625,55,149,250,167,219,255
+86,86,0,88,0,202750,64,142,250,146,222,255
+87,87,0,92,0,202875,72,136,250,127,225,255
+88,88,0,96,0,203000,82,130,250,111,228,255
+89,89,0,100,0,203125,91,124,250,102,231,255
+90,90,0,104,0,203250,101,117,250,98,234,255
+91,91,0,108,0,203375,111,111,250,100,237,255
+92,92,0,112,0,203500,121,105,250,107,240,255
+93,93,0,116,0,203625,130,98,50,116,243,255
+94,94,0,120,0,203750,140,92,50,126,246,255
+95,95,0,124,0,203875,150,86,50,134,249,255
+96,96,0,128,255,204000,160,79,50,141,252,255
+97,97,0,132,255,204125,169,73,50,144,255,255
+98,98,0,136,255,204250,178,67,50,143,0,0
+99,99,0,140,255,204375,187,60,50,140,3,0
+100,100,0,144,255,204500,196,54,50,136,6,0
+101,101,0,148,255,204625,203,48,50,132,9,0
+102,102,0,152,255,204750,211,41,50,130,12,0
+103,103,0,156,255,204875,218,35,50,131,15,0
+104,104,0,160,255,205000,224,29,50,136,18,0
+105,105,0,164,255,205125,230,22,50,143,21,0
+106,106,0,168,255,205250,235,16,50,153,24,0
+107,107,0,172,255,205375,239,10,50,162,27,0
+108,108,0,176,255,205500,243,4,50,171,30,0
+109,109,0,180,255,205625,246,2,50,176,33,0
+110,110,0,184,255,205750,248,8,50,175,36,0
+111,111,0,188,255,205875,249,14,50,169,39,0
+112,112,0,192,255,206000,250,21,50,156,42,0
+113,113,0,196,255,206125,249,27,50,140,45,0
+114,114,0,200,255,206250,247,33,50,119,48,0
+115,115,0,204,255,206375,245,40,50,99,51,0
+116,116,0,208,255,206500,242,46,50,81,54,0
+117,117,0,212,255,206625,239,52,50,70,57,0
+118,118,0,216,255,206750,234,59,50,66,60,0
+119,119,0,220,255,206875,229,65,50,71,63,0
+120,120,0,224,255,207000,223,71,50,86,66,0
+121,121,0,228,255,207125,217,78,50,108,69,0
+122,122,0,232,255,207250,210,84,50,138,72,0
+123,123,0,236,255,207375,203,90,50,166,75,0
+124,124,0,240,255,207500,195,96,50,196,78,0
+125,125,0,244,255,207625,186,103,50,217,81,0
+126,126,0,248,255,207750,178,109,50,230,84,0
+127,127,0,252,255,207875,168,115,50,232,87,0
+128,128,0,0,0,208000,159,122,50,221,90,0
+129,129,0,4,0,208125,149,128,50,200,93,0
+130,130,0,8,0,208250,140,134,50,168,96,0
+131,131,0,12,0,208375,130,141,50,134,99,0
+132,132,0,16,0,208500,120,147,50,96,102,0
+133,133,0,20,0,208625,110,153,250,66,105,0
+134,134,0,24,0,208750,100,160,250,41,108,0
+135,135,0,28,0,208875,90,166,250,30,111,0
+136,136,0,32,0,209000,81,172,250,31,114,0
+137,137,0,36,0,209125,72,179,250,46,117,0
+138,138,0,40,0,209250,63,185,250,73,120,0
+139,139,0,44,0,209375,54,191,250,106,123,0
+140,140,0,48,0,209500,46,197,250,146,126,0
+141,141,0,52,0,209625,39,204,250,182,129,255
+142,142,0,56,0,209750,32,210,250,215,132,255
+143,143,0,60,0,209875,26,216,250,236,135,255
+144,144,0,64,0,210000,20,223,250,245,138,255
+145,145,0,68,0,210125,15,229,250,241,141,255
+146,146,0,72,0,210250,10,235,250,223,144,255
+147,147,0,76,0,210375,7,242,250,196,147,255
+148,148,0,80,0,210500,4,248,250,161,150,255
+149,149,0,84,0,210625,2,245,250,126,153,255
+150,150,0,88,0,210750,0,238,250,90,156,255
+151,151,0,92,0,210875,0,232,250,64,159,255
+152,152,0,96,0,211000,0,226,250,47,162,255
+153,153,0,100,0,211125,1,219,250,42,165,255
+154,154,0,104,0,211250,2,213,250,49,168,255
+155,155,0,108,0,211375,5,207,250,65,171,255
+156,156,0,112,0,211500,8,201,250,91,174,255
+157,157,0,116,0,211625,12,194,250,120,177,255
+158,158,0,120,0,211750,16,188,250,150,180,255
+159,159,0,124,0,211875,22,182,250,176,183,255
+160,160,0,128,255,212000,28,175,250,196,186,255
+161,161,0,132,255,212125,34,169,250,206,189,255
+162,162,0,136,255,212250,41,163,250,208,192,255
+163,163,0,140,255,212375,49,156,250,200,195,255
+164,164,0,144,255,212500,57,150,250,185,198,255
+165,165,0,148,255,212625,66,144,250,167,201,255
+166,166,0,152,255,212750,75,137,250,146,204,255
+167,167,0,156,255,212875,84,131,250,127,207,255
+168,168,0,160,255,213000,93,125,250,111,210,255
+169,169,0,164,255,213125,103,118,250,102,213,255
+170,170,0,168,255,213250,113,112,250,98,216,255
+171,171,0,172,255,213375,123,106,250,100,219,255
+172,172,0,176,255,213500,133,99,250,107,222,255
+173,173,0,180,255,213625,143,93,50,116,225,255
+174,174,0,184,255,213750,152,87,50,126,228,255
+175,175,0,188,255,213875,162,81,50,134,231,255
+176,176,0,192,255,214000,171,74,50,141,234,255
+177,177,0,196,255,214125,181,68,50,144,237,255
+178,178,0,200,255,214250,189,62,50,143,240,255
+179,179,0,204,255,214375,197,55,50,140,243,255
+180,180,0,208,255,214500,205,49,50,136,246,255
+181,181,0,212,255,214625,213,43,50,132,249,255
+182,182,0,216,255,214750,219,36,50,130,252,255
+183,183,0,220,255,214875,225,30,50,131,255,255
+184,184,0,224,255,215000,231,24,50,136,0,0
+185,185,0,228,255,215125,236,17,50,143,3,0
+186,186,0,232,255,215250,240,11,50,153,6,0
+187,187,0,236,255,215375,243,5,50,162,9,0
+188,188,0,240,255,215500,246,1,50,171,12,0
+189,189,0,244,255,215625,248,7,50,176,15,0
+190,190,0,248,255,215750,249,13,50,175,18,0
+191,191,0,252,255,215875,250,20,50,169,21,0
+192,192,0,0,0,216000,249,26,50,156,24,0
+193,193,0,4,0,216125,247,32,50,140,27,0
+194,194,0,8,0,216250,245,38,50,119,30,0
+195,195,0,12,0,216375,242,45,50,99,33,0
+196,196,0,16,0,216500,238,51,50,81,36,0
+197,197,0,20,0,216625,233,57,50,70,39,0
+198,198,0,24,0,216750,228,64,50,66,42,0
+199,199,0,28,0,216875,222,70,50,71,45,0
+200,200,0,32,0,217000,216,76,50,86,48,0
+201,201,0,36,0,217125,209,83,50,108,51,0
+202,202,0,40,0,217250,201,89,50,138,54,0
+203,203,0,44,0,217375,193,95,50,166,57,0
+204,204,0,48,0,217500,184,102,50,196,60,0
+205,205,0,52,0,217625,175,108,50,217,63,0
+206,206,0,56,0,217750,166,114,50,230,66,0
+207,207,0,60,0,217875,157,120,50,232,69,0
+208,208,0,64,0,218000,147,127,50,221,72,0
+209,209,0,68,0,218125,137,133,50,200,75,0
+210,210,0,72,0,218250,127,140,50,168,78,0
+211,211,0,76,0,218375,117,146,50,134,81,0
+212,212,0,80,0,218500,107,152,50,96,84,0
+213,213,0,84,0,218625,98,158,250,66,87,0
+214,214,0,88,0,218750,88,165,250,41,90,0
+215,215,0,92,0,218875,79,171,250,30,93,0
+216,216,0,96,0,219000,70,177,250,31,96,0
+217,217,0,100,0,219125,61,184,250,46,99,0
+218,218,0,104,0,219250,52,190,250,73,102,0
+219,219,0,108,0,219375,45,196,250,106,105,0
+220,220,0,112,0,219500,37,203,250,146,108,0
+221,221,0,116,0,219625,30,209,250,182,111,0
+222,222,0,120,0,219750,24,215,250,215,114,0
+223,223,0,124,0,219875,19,222,250,236,117,0
+224,224,0,128,255,220000,14,228,250,245,120,0
+225,225,0,132,255,220125,10,234,250,241,123,0
+226,226,0,136,255,220250,6,240,250,223,126,0
+227,227,0,140,255,220375,3,247,250,196,129,255
+228,228,0,144,255,220500,1,246,250,161,132,255
+229,229,0,148,255,220625,0,240,250,126,135,255
+230,230,0,152,255,220750,0,233,250,90,138,255
+231,231,0,156,255,220875,0,227,250,64,141,255
+232,232,0,160,255,221000,1,221,250,47,144,255
+233,233,0,164,255,221125,3,214,250,42,147,255
+234,234,0,168,255,221250,5,208,250,49,150,255
+235,235,0,172,255,221375,9,202,250,65,153,255
+236,236,0,176,255,221500,13,195,250,91,156,255
+237,237,0,180,255,221625,18,189,250,120,159,255
+238,238,0,184,255,221750,23,183,250,150,162,255
+239,239,0,188,255,221875,29,176,250,176,165,255
+240,240,0,192,255,222000,36,170,250,196,168,255
+241,241,0,196,255,222125,43,164,250,206,171,255
+242,242,0,200,255,222250,51,157,250,208,174,255
+243,243,0,204,255,222375,59,151,250,200,177,255
+244,244,0,208,255,222500,68,145,250,185,180,255
+245,245,0,212,255,222625,77,139,250,167,183,255
+246,246,0,216,255,222750,86,132,250,146,186,255
+247,247,0,220,255,222875,96,126,250,127,189,255
+248,248,0,224,255,223000,105,120,250,111,192,255
+249,249,0,228,255,223125,115,113,250,102,195,255
+250,250,0,232,255,223250,125,107,250,98,198,255
+251,251,0,236,255,223375,135,101,250,100,201,255
+252,252,0,240,255,223500,145,94,250,107,204,255
+253,253,0,244,255,223625,155,88,50,116,207,255
+254,254,0,248,255,223750,164,82,50,126,210,255
+255,255,0,252,255,223875,174,75,50,134,213,255
+0,255,255,0,0,224000,183,69,50,141,216,255
+1,254,255,4,0,224125,191,63,50,144,219,255
+2,253,255,8,0,224250,199,57,50,143,222,255
+3,252,255,12,0,224375,207,50,50,140,225,255
+4,251,255,16,0,224500,214,44,50,136,228,255
+5,250,255,20,0,224625,221,38,50,132,231,255
+6,249,255,24,0,224750,227,31,50,130,234,255
+7,248,255,28,0,224875,232,25,50,131,237,255
+8,247,255,32,0,225000,237,19,50,136,240,255
+9,246,255,36,0,225125,241,12,50,143,243,255
+10,245,255,40,0,225250,244,6,50,153,246,255
+11,244,255,44,0,225375,247,0,50,162,249,255
+12,243,255,48,0,225500,248,6,50,171,252,255
+13,242,255,52,0,225625,249,12,50,176,255,255
+14,241,255,56,0,225750,249,18,50,175,0,0
+15,240,255,60,0,225875,248,25,50,169,3,0
+16,239,255,64,0,226000,247,31,50,156,6,0
+17,238,255,68,0,226125,244,37,50,140,9,0
+18,237,255,72,0,226250,241,44,50,119,12,0
+19,236,255,76,0,226375,237,50,50,99,15,0
+20,235,255,80,0,226500,232,56,50,81,18,0
+21,234,255,84,0,226625,227,62,50,70,21,0
+22,233,255,88,0,226750,221,69,50,66,24,0
+23,232,255,92,0,226875,214,75,50,71,27,0
+24,231,255,96,0,227000,207,81,50,86,30,0
+25,230,255,100,0,227125,199,88,50,108,33,0
+26,229,255,104,0,227250,191,94,50,138,36,0
+27,228,255,108,0,227375,182,100,50,166,39,0
+28,227,255,112,0,227500,173,107,50,196,42,0
+29,226,255,116,0,227625,164,113,50,217,45,0
+30,225,255,120,0,227750,154,119,50,230,48,0
+31,224,255,124,0,227875,145,126,50,232,51,0
+32,223,255,128,255,228000,135,132,50,221,54,0
+33,222,255,132,255,228125,125,138,50,200,57,0
+34,221,255,136,255,228250,115,145,50,168,60,0
+35,220,255,140,255,228375,105,151,50,134,63,0
+36,219,255,144,255,228500,95,157,50,96,66,0
+37,218,255,148,255,228625,86,164,250,66,69,0
+38,217,255,152,255,228750,77,170,250,41,72,0
+39,216,255,156,255,228875,67,176,250,30,75,0
+40,215,255,160,255,229000,59,182,250,31,78,0
+41,214,255,164,255,229125,51,189,250,46,81,0
+42,213,255,168,255,229250,43,195,250,73,84,0
+43,212,255,172,255,229375,36,201,250,106,87,0
+44,211,255,176,255,229500,29,208,250,146,90,0
+45,210,255,180,255,229625,23,214,250,182,93,0
+46,209,255,184,255,229750,17,220,250,215,96,0
+47,208,255,188,255,229875,13,227,250,236,99,0
+48,207,255,192,255,230000,9,233,250,245,102,0
+49,206,255,196,255,230125,5,239,250,241,105,0
+50,205,255,200,255,230250,3,246,250,223,108,0
+51,204,255,204,255,230375,1,247,250,196,111,0
+52,203,255,208,255,230500,0,241,250,161,114,0
+53,202,255,212,255,230625,0,234,250,126,117,0
+54,201,255,216,255,230750,0,228,250,90,120,0
+55,200,255,220,255,230875,1,222,250,64,123,0
+56,199,255,224,255,231000,3,216,250,47,126,0
+57,198,255,228,255,231125,6,209,250,42,129,255
+58,197,255,232,255,231250,10,203,250,49,132,255
+59,196,255,236,255,231375,14,197,250,65,135,255
+60,195,255,240,255,231500,19,190,250,91,138,255
+61,194,255,244,255,231625,24,184,250,120,141,255
+62,193,255,248,255,231750,31,178,250,150,144,255
+63,192,255,252,255,231875,37,171,250,176,147,255
+64,191,255,0,0,232000,45,165,250,196,150,255
+65,190,255,4,0,232125,53,159,250,206,153,255
+66,189,255,8,0,232250,61,152,250,208,156,255
+67,188,255,12,0,232375,70,146,250,200,159,255
+68,187,255,16,0,232500,79,140,250,185,162,255
+69,186,255,20,0,232625,88,133,250,167,165,255
+70,185,255,24,0,232750,98,127,250,146,168,255
+71,184,255,28,0,232875,108,121,250,127,171,255
+72,183,255,32,0,233000,118,114,250,111,174,255
+73,182,255,36,0,233125,128,108,250,102,177,255
+74,181,255,40,0,233250,137,102,250,98,180,255
+75,180,255,44,0,233375,147,96,250,100,183,255
+76,179,255,48,0,233500,157,89,250,107,186,255
+77,178,255,52,0,233625,166,83,50,116,189,255
+78,177,255,56,0,233750,176,77,50,126,192,255
+79,176,255,60,0,233875,185,70,50,134,195,255
+80,175,255,64,0,234000,193,64,50,141,198,255
+81,174,255,68,0,234125,201,58,50,144,201,255
+82,173,255,72,0,234250,209,51,50,143,204,255
+83,172,255,76,0,234375,216,45,50,140,207,255
+84,171,255,80,0,234500,222,39,50,136,210,255
+85,170,255,84,0,234625,228,32,50,132,213,255
+86,169,255,88,0,234750,233,26,50,130,216,255
+87,168,255,92,0,234875,238,20,50,131,219,255
+88,167,255,96,0,235000,242,13,50,136,222,255
+89,166,255,100,0,235125,245,7,50,143,225,255
+90,165,255,104,0,235250,247,1,50,153,228,255
+91,164,255,108,0,235375,249,5,50,162,231,255
+92,163,255,112,0,235500,250,11,50,171,234,255
+93,162,255,116,0,235625,249,17,50,176,237,255
+94,161,255,120,0,235750,248,23,50,175,240,255
+95,160,255,124,0,235875,246,30,50,169,243,255
+96,159,255,128,255,236000,243,36,50,156,246,255
+97,158,255,132,255,236125,240,42,50,140,249,255
+98,157,255,136,255,236250,236,49,50,119,252,255
+99,156,255,140,255,236375,231,55,50,99,255,255
+100,155,255,144,255,236500,225,61,50,81,0,0
+101,154,255,148,255,236625,219,68,50,70,3,0
+102,153,255,152,255,236750,212,74,50,66,6,0
+103,152,255,156,255,236875,205,80,50,71,9,0
+104,151,255,160,255,237000,197,87,50,86,12,0
+105,150,255,164,255,237125,189,93,50,108,15,0
+106,149,255,168,255,237250,180,99,50,138,18,0
+107,148,255,172,255,237375,171,105,50,166,21,0
+108,147,255,176,255,237500,162,112,50,196,24,0
+109,146,255,180,255,237625,152,118,50,217,27,0
+110,145,255,184,255,237750,142,125,50,230,30,0
+111,144,255,188,255,237875,132,131,50,232,33,0
+112,143,255,192,255,238000,123,137,50,221,36,0
+113,142,255,196,255,238125,113,143,50,200,39,0
+114,141,255,200,255,238250,103,150,50,168,42,0
+115,140,255,204,255,238375,93,156,50,134,45,0
+116,139,255,208,255,238500,84,162,50,96,48,0
+117,138,255,212,255,238625,74,169,250,66,51,0
+118,137,255,216,255,238750,65,175,250,41,54,0
+119,136,255,220,255,238875,57,181,250,30,57,0
+120,135,255,224,255,239000,49,188,250,31,60,0
+121,134,255,228,255,239125,41,194,250,46,63,0
+122,133,255,232,255,239250,34,200,250,73,66,0
+123,132,255,236,255,239375,27,207,250,106,69,0
+124,131,255,240,255,239500,21,213,250,146,72,0
+125,130,255,244,255,239625,16,219,250,182,75,0
+126,129,255,248,255,239750,12,225,250,215,78,0
+127,128,255,252,255,239875,8,232,250,236,81,0
+128,127,255,0,0,240000,5,238,250,245,84,0
+129,126,255,4,0,240125,2,244,250,241,87,0
+130,125,255,8,0,240250,1,248,250,223,90,0
+131,124,255,12,0,240375,0,242,250,196,93,0
+132,123,255,16,0,240500,0,236,250,161,96,0
+133,122,255,20,0,240625,0,229,250,126,99,0
+134,121,255,24,0,240750,2,223,250,90,102,0
+135,120,255,28,0,240875,4,217,250,64,105,0
+136,119,255,32,0,241000,7,210,250,47,108,0
+137,118,255,36,0,241125,11,204,250,42,111,0
+138,117,255,40,0,241250,15,198,250,49,114,0
+139,116,255,44,0,241375,20,191,250,65,117,0
+140,115,255,48,0,241500,26,185,250,91,120,0
+141,114,255,52,0,241625,32,179,250,120,123,0
+142,113,255,56,0,241750,39,172,250,150,126,0
+143,112,255,60,0,241875,47,166,250,176,129,255
+144,111,255,64,0,242000,55,160,250,196,132,255
+145,110,255,68,0,242125,63,154,250,206,135,255
+146,109,255,72,0,242250,72,147,250,208,138,255
+147,108,255,76,0,242375,81,141,250,200,141,255
+148,107,255,80,0,242500,91,135,250,185,144,255
+149,106,255,84,0,242625,100,128,250,167,147,255
+150,105,255,88,0,242750,110,122,250,146,150,255
+151,104,255,92,0,242875,120,116,250,127,153,255
+152,103,255,96,0,243000,130,109,250,111,156,255
+153,102,255,100,0,243125,140,103,250,102,159,255
+154,101,255,104,0,243250,150,97,250,98,162,255
+155,100,255,108,0,243375,159,90,250,100,165,255
+156,99,255,112,0,243500,169,84,250,107,168,255
+157,98,255,116,0,243625,178,78,50,116,171,255
+158,97,255,120,0,243750,187,72,50,126,174,255
+159,96,255,124,0,243875,195,65,50,134,177,255
+160,95,255,128,255,244000,203,59,50,141,180,255
+161,94,255,132,255,244125,210,53,50,144,183,255
+162,93,255,136,255,244250,217,46,50,143,186,255
+163,92,255,140,255,244375,224,40,50,140,189,255
+164,91,255,144,255,244500,229,34,50,136,192,255
+165,90,255,148,255,244625,234,27,50,132,195,255
+166,89,255,152,255,244750,239,21,50,130,198,255
+167,88,255,156,255,244875,242,15,50,131,201,255
+168,87,255,160,255,245000,245,8,50,136,204,255
+169,86,255,164,255,245125,248,2,50,143,207,255
+170,85,255,168,255,245250,249,3,50,153,210,255
+171,84,255,172,255,245375,250,10,50,162,213,255
+172,83,255,176,255,245500,249,16,50,171,216,255
+173,82,255,180,255,245625,248,22,50,176,219,255
+174,81,255,184,255,245750,245,29,50,175,222,255
+175,80,255,188,255,245875,243,35,50,169,225,255
+176,79,255,192,255,246000,239,41,50,156,228,255
+177,78,255,196,255,246125,235,47,50,140,231,255
+178,77,255,200,255,246250,230,54,50,119,234,255
+179,76,255,204,255,246375,224,60,50,99,237,255
+180,75,255,208,255,246500,218,66,50,81,240,255
+181,74,255,212,255,246625,211,73,50,70,243,255
+182,73,255,216,255,246750,203,79,50,66,246,255
+183,72,255,220,255,246875,195,85,50,71,249,255
+184,71,255,224,255,247000,187,92,50,86,252,255
+185,70,255,228,255,247125,178,98,50,108,255,255
+186,69,255,232,255,247250,169,104,50,138,0,0
+187,68,255,236,255,247375,160,111,50,166,3,0
+188,67,255,240,255,247500,150,117,50,196,6,0
+189,66,255,244,255,247625,140,123,50,217,9,0
+190,65,255,248,255,247750,130,130,50,230,12,0
+191,64,255,252,255,247875,120,136,50,232,15,0
+192,63,255,0,0,248000,110,142,50,221,18,0
+193,62,255,4,0,248125,100,149,50,200,21,0
+194,61,255,8,0,248250,91,155,50,168,24,0
+195,60,255,12,0,248375,81,161,50,134,27,0
+196,59,255,16,0,248500,72,167,50,96,30,0
+197,58,255,20,0,248625,63,174,250,66,33,0
+198,57,255,24,0,248750,55,180,250,41,36,0
+199,56,255,28,0,248875,47,186,250,30,39,0
+200,55,255,32,0,249000,39,193,250,31,42,0
+201,54,255,36,0,249125,32,199,250,46,45,0
+202,53,255,40,0,249250,26,205,250,73,48,0
+203,52,255,44,0,249375,20,212,250,106,51,0
+204,51,255,48,0,249500,15,218,250,146,54,0
+205,50,255,52,0,249625,11,224,250,182,57,0
+206,49,255,56,0,249750,7,231,250,215,60,0
+207,48,255,60,0,249875,4,237,250,236,63,0
+208,47,255,64,0,250000,2,243,250,245,66,0
+209,46,255,68,0,250125,0,250,250,241,69,0
+210,45,255,72,0,250250,0,243,250,223,72,0
+211,44,255,76,0,250375,0,237,250,196,75,0
+212,43,255,80,0,250500,1,231,250,161,78,0
+213,42,255,84,0,250625,2,224,250,126,81,0
+214,41,255,88,0,250750,5,218,250,90,84,0
+215,40,255,92,0,250875,8,212,250,64,87,0
+216,39,255,96,0,251000,12,205,250,47,90,0
+217,38,255,100,0,251125,16,199,250,42,93,0
+218,37,255,104,0,251250,21,193,250,49,96,0
+219,36,255,108,0,251375,27,186,250,65,99,0
+220,35,255,112,0,251500,34,180,250,91,102,0
+221,34,255,116,0,251625,41,174,250,120,105,0
+222,33,255,120,0,251750,48,167,250,150,108,0
+223,32,255,124,0,251875,57,161,250,176,111,0
+224,31,255,128,255,252000,65,155,250,196,114,0
+225,30,255,132,255,252125,74,148,250,206,117,0
+226,29,255,136,255,252250,83,142,250,208,120,0
+227,28,255,140,255,252375,93,136,250,200,123,0
+228,27,255,144,255,252500,103,130,250,185,126,0
+229,26,255,148,255,252625,112,123,250,167,129,255
+230,25,255,152,255,252750,122,117,250,146,132,255
+231,24,255,156,255,252875,132,111,250,127,135,255
+232,23,255,160,255,253000,142,104,250,111,138,255
+233,22,255,164,255,253125,152,98,250,102,141,255
+234,21,255,168,255,253250,161,92,250,98,144,255
+235,20,255,172,255,253375,171,85,250,100,147,255
+236,19,255,176,255,253500,180,79,250,107,150,255
+237,18,255,180,255,253625,189,73,50,116,153,255
+238,17,255,184,255,253750,197,66,50,126,156,255
+239,16,255,188,255,253875,205,60,50,134,159,255
+240,15,255,192,255,254000,212,54,50,141,162,255
+241,14,255,196,255,254125,219,47,50,144,165,255
+242,13,255,200,255,254250,225,41,50,143,168,255
+243,12,255,204,255,254375,231,35,50,140,171,255
+244,11,255,208,255,254500,236,28,50,136,174,255
+245,10,255,212,255,254625,240,22,50,132,177,255
+246,9,255,216,255,254750,243,16,50,130,180,255
+247,8,255,220,255,254875,246,10,50,131,183,255
+248,7,255,224,255,255000,248,3,50,136,186,255
+249,6,255,228,255,255125,249,2,50,143,189,255
+250,5,255,232,255,255250,250,8,50,153,192,255
+251,4,255,236,255,255375,249,15,50,162,195,255
+252,3,255,240,255,255500,247,21,50,171,198,255
+253,2,255,244,255,255625,245,27,50,176,201,255
+254,1,255,248,255,255750,242,34,50,175,204,255
+255,0,255,252,255,255875,238,40,50,169,207,255
diff --git a/MATLAB/HW11/hw10.asv b/MATLAB/HW11/hw10.asv
new file mode 100644
index 0000000..0868862
--- /dev/null
+++ b/MATLAB/HW11/hw10.asv
@@ -0,0 +1,77 @@
+data = importdata("C:\Users\Jacob McDonnell\Documents\CMPEN-472-HW\cmpen472hw10_McDonnell\data.csv");
+
+sawtooth = data.data(:,1);
+triangle = data.data(:,2);
+square = data.data(:,3);
+sawtooth125 = data.data(:,4);
+square125 = data.data(:,5);
+sawtooth250 = data.data(:,7)
+time = data.data(:,6);
+time = time / 1000000; % adjust to microseconds
+
+psw = CreatePlot(sawtooth,"Sawtooth Wave Two Cycles",time,1,512);
+saveas(psw,"sawtooth2cycles.png");
+psw = CreatePlot(sawtooth,"Sawtooth Wave",time,1,2048);
+saveas(psw,"sawtooth.png");
+
+pt = CreatePlot(triangle,"Triangle Wave Two Cycles",time,1,1024);
+saveas(pt,"triangle2cycles.png");
+pt = CreatePlot(triangle,"Triangle Wave",time,1,2048);
+saveas(pt,"triangle.png");
+
+psq = CreatePlot(square,"Square Wave Two Cycles",time,1,1024);
+saveas(psq,"square2cycles.png");
+psq = CreatePlot(square,"Square Wave",time,1,2048);
+saveas(psq,"square.png");
+
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz Two Cycles",time,1,128);
+saveas(psw125,"sawtooth-125Hz2cycles.png");
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz",time,1,2048);
+saveas(psw125,"sawtooth-125Hz.png");
+
+psq125 = CreatePlot(square125,"Square Wave 125Hz Two Cycles",time,1,128);
+saveas(psq125,"square-125Hz2cycles.png");
+psq125 = CreatePlot(square125,"Square Wave 125Hz",time,1,2048);
+saveas(psq125,"square-125Hz.png");
+
+psw250 = CreatePlot(sa)
+
+Fs = 1/8000; % 8000Hz sampling frequency
+
+function p = CreatePlot(d, label, time, spos, epos)
+ p = figure;
+ plot(time(spos:epos), d(spos:epos));
+ xlabel('Time in Seconds');
+ ylabel('Signal Values');
+ title(label);
+ grid on;
+end
+
+function freqPlot = GeneratePlot(d,t,label)
+ Fs = 1/mean(diff(t));
+ x = d - mean(d);
+
+ n = length(x); % Number of samples
+ X = fft(x); % Compute the FFT
+
+ % Only take the first half of the spectrum (positive frequencies)
+ X_mag = abs(X(1:floor(n/2))); % Magnitude of FFT
+ f = Fs * (0:floor(n/2)-1) / n; % Frequency vector
+
+ freqPlot = figure;
+ plot(f, X_mag);
+ xlabel('Frequency (Hz)');
+ ylabel('Amplitude');
+ title(label);
+ grid on;
+end
+
+swfft = GeneratePlot(sawtooth,time,'Sawtooth');
+
+tfft = GeneratePlot(triangle,time,'Triangle');
+
+sqfft = GeneratePlot(square,time,'Square');
+
+sw125fft = GeneratePlot(sawtooth125,time,'Sawtooth 125Hz');
+
+sq125fft = GeneratePlot(square125,time,'Square 125Hz');
diff --git a/MATLAB/HW11/hw11.m b/MATLAB/HW11/hw11.m
new file mode 100644
index 0000000..811addc
--- /dev/null
+++ b/MATLAB/HW11/hw11.m
@@ -0,0 +1,122 @@
+data = importdata("data.csv");
+
+sawtooth = data.data(:,1);
+triangle = data.data(:,2);
+square = data.data(:,3);
+sawtooth125 = data.data(:,4);
+square125 = data.data(:,5);
+sine100 = data.data(:,7);
+triangle100 = data.data(:,8);
+square100 = data.data(:,9);
+mixedSine = data.data(:,10);
+square100G = data.data(:,12);
+sawtooth100G = data.data(:,11);
+time = data.data(:,6);
+time = time / 1000000; % adjust to microseconds
+
+psw = CreatePlot(sawtooth,"Sawtooth Wave Two Cycles",time,1,512);
+saveas(psw,"sawtooth2cycles.png");
+psw = CreatePlot(sawtooth,"Sawtooth Wave",time,1,2048);
+saveas(psw,"sawtooth.png");
+
+pt = CreatePlot(triangle,"Triangle Wave Two Cycles",time,1,1024);
+saveas(pt,"triangle2cycles.png");
+pt = CreatePlot(triangle,"Triangle Wave",time,1,2048);
+saveas(pt,"triangle.png");
+
+psq = CreatePlot(square,"Square Wave Two Cycles",time,1,1024);
+saveas(psq,"square2cycles.png");
+psq = CreatePlot(square,"Square Wave",time,1,2048);
+saveas(psq,"square.png");
+
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz Two Cycles",time,1,128);
+saveas(psw125,"sawtooth-125Hz2cycles.png");
+psw125 = CreatePlot(sawtooth125,"Sawtooth Wave 125Hz",time,1,2048);
+saveas(psw125,"sawtooth-125Hz.png");
+
+psq125 = CreatePlot(square125,"Square Wave 125Hz Two Cycles",time,1,128);
+saveas(psq125,"square-125Hz2cycles.png");
+psq125 = CreatePlot(square125,"Square Wave 125Hz",time,1,2048);
+saveas(psq125,"square-125Hz.png");
+
+psn100 = CreatePlot(sine100,"Sine Wave 100Hz Two Cycles",time,35,193);
+saveas(psn100,"sine-100Hz-2-cycles.png");
+psn100 = CreatePlot(sine100,"Sine Wave 100Hz",time,1,2048);
+saveas(psn100,"sine-100Hz.png");
+
+pt100 = CreatePlot(triangle100,"Triangle Wave 100Hz Two Cycles",time,62,220);
+saveas(pt100,"triangle-100Hz-2-cycles.png");
+pt100 = CreatePlot(triangle100,"Triangle Wave 100Hz",time,1,2048);
+saveas(pt100,"triangle-100Hz.png");
+
+pq100 = CreatePlot(square100,"Square Wave 100Hz Two Cycles",time,29,180);
+saveas(pq100,"square-100Hz-2-cycles.png");
+pq100 = CreatePlot(square100,"Square Wave 100Hz",time,1,2048);
+saveas(pq100,"square-100Hz.png");
+
+ms = CreatePlot(mixedSine,"Mixed Sine Wave Two Cycles",time,73,233);
+saveas(ms,"mixed-2-cycles.png");
+ms = CreatePlot(mixedSine,"Mixed Wave",time,1,2048);
+saveas(ms,"mixed-100Hz.png");
+
+psw100G = CreatePlot(sawtooth100G,"Sawtooth Wave 100Hz Generated Two Cycles",time,1,173);
+saveas(psw100G,"sawtooth-100Hz-Generated-2cycles.png");
+psw100G = CreatePlot(sawtooth100G,"Sawtooth Wave 100Hz Generated",time,1,2048);
+saveas(psw100G,"sawtooth-100Hz-Generated.png");
+
+psq100G = CreatePlot(square100G,"Square Wave 100Hz Generated Two Cycles",time,1,173);
+saveas(psq100G,"square-100Hz-Generated-2cycles.png");
+psq100G = CreatePlot(square100G,"Square Wave 100Hz Generated",time,1,2048);
+saveas(psq100G,"square-100Hz-Generated.png");
+
+Fs = 1/8000; % 8000Hz sampling frequency
+
+function p = CreatePlot(d, label, time, spos, epos)
+ p = figure;
+ plot(time(spos:epos), d(spos:epos));
+ xlabel('Time in Seconds');
+ ylabel('Signal Values');
+ title(label);
+ grid on;
+end
+
+function freqPlot = GeneratePlot(d,t,label)
+ Fs = 1/mean(diff(t));
+ x = d - mean(d);
+
+ n = length(x); % Number of samples
+ X = fft(x); % Compute the FFT
+
+ % Only take the first half of the spectrum (positive frequencies)
+ X_mag = abs(X(1:floor(n/2))); % Magnitude of FFT
+ f = Fs * (0:floor(n/2)-1) / n; % Frequency vector
+
+ freqPlot = figure;
+ plot(f, X_mag);
+ xlabel('Frequency (Hz)');
+ ylabel('Amplitude');
+ title(label);
+ grid on;
+end
+
+swfft = GeneratePlot(sawtooth,time,'Sawtooth');
+
+tfft = GeneratePlot(triangle,time,'Triangle');
+
+sqfft = GeneratePlot(square,time,'Square');
+
+sw125fft = GeneratePlot(sawtooth125,time,'Sawtooth 125Hz');
+
+sq125fft = GeneratePlot(square125,time,'Square 125Hz');
+
+sine100fft = GeneratePlot(sine100,time,"Sine Wave 100Hz");
+
+tri100fft = GeneratePlot(triangle100,time,"Triangle Wave 100Hz");
+
+sq100fft = GeneratePlot(square100,time,"Square Wave 100Hz");
+
+mixedfft = GeneratePlot(mixedSine,time,"Mixed Frequency");
+
+sq100Gfft = GeneratePlot(square100G,time,"Square Wave 100Hz Generated");
+
+sw100Gfft = GeneratePlot(sawtooth100G,time,"Sawtooth Wave 100Hz Generated"); \ No newline at end of file
diff --git a/MATLAB/HW11/mixed-100Hz.png b/MATLAB/HW11/mixed-100Hz.png
new file mode 100644
index 0000000..1b051c2
--- /dev/null
+++ b/MATLAB/HW11/mixed-100Hz.png
Binary files differ
diff --git a/MATLAB/HW11/mixed-2-cycles.png b/MATLAB/HW11/mixed-2-cycles.png
new file mode 100644
index 0000000..d7351d4
--- /dev/null
+++ b/MATLAB/HW11/mixed-2-cycles.png
Binary files differ
diff --git a/MATLAB/HW11/msineFFT.png b/MATLAB/HW11/msineFFT.png
new file mode 100644
index 0000000..1930ab2
--- /dev/null
+++ b/MATLAB/HW11/msineFFT.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth-100Hz-Generated-2cycles.png b/MATLAB/HW11/sawtooth-100Hz-Generated-2cycles.png
new file mode 100644
index 0000000..63ef106
--- /dev/null
+++ b/MATLAB/HW11/sawtooth-100Hz-Generated-2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth-100Hz-Generated.png b/MATLAB/HW11/sawtooth-100Hz-Generated.png
new file mode 100644
index 0000000..792f0a0
--- /dev/null
+++ b/MATLAB/HW11/sawtooth-100Hz-Generated.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth-125Hz.png b/MATLAB/HW11/sawtooth-125Hz.png
new file mode 100644
index 0000000..34796ea
--- /dev/null
+++ b/MATLAB/HW11/sawtooth-125Hz.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth-125Hz2cycles.png b/MATLAB/HW11/sawtooth-125Hz2cycles.png
new file mode 100644
index 0000000..a729a7c
--- /dev/null
+++ b/MATLAB/HW11/sawtooth-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth.png b/MATLAB/HW11/sawtooth.png
new file mode 100644
index 0000000..b3468dd
--- /dev/null
+++ b/MATLAB/HW11/sawtooth.png
Binary files differ
diff --git a/MATLAB/HW11/sawtooth2cycles.png b/MATLAB/HW11/sawtooth2cycles.png
new file mode 100644
index 0000000..56ca069
--- /dev/null
+++ b/MATLAB/HW11/sawtooth2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/sine-100Hz-2-cycles.png b/MATLAB/HW11/sine-100Hz-2-cycles.png
new file mode 100644
index 0000000..a9aff2d
--- /dev/null
+++ b/MATLAB/HW11/sine-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/HW11/sine-100Hz.png b/MATLAB/HW11/sine-100Hz.png
new file mode 100644
index 0000000..7f0f1e0
--- /dev/null
+++ b/MATLAB/HW11/sine-100Hz.png
Binary files differ
diff --git a/MATLAB/HW11/sine100FFT.png b/MATLAB/HW11/sine100FFT.png
new file mode 100644
index 0000000..ccb976d
--- /dev/null
+++ b/MATLAB/HW11/sine100FFT.png
Binary files differ
diff --git a/MATLAB/HW11/sq100FFT.png b/MATLAB/HW11/sq100FFT.png
new file mode 100644
index 0000000..960f0c1
--- /dev/null
+++ b/MATLAB/HW11/sq100FFT.png
Binary files differ
diff --git a/MATLAB/HW11/sq100GFFT.png b/MATLAB/HW11/sq100GFFT.png
new file mode 100644
index 0000000..5fd0b3b
--- /dev/null
+++ b/MATLAB/HW11/sq100GFFT.png
Binary files differ
diff --git a/MATLAB/HW11/sq125fft.png b/MATLAB/HW11/sq125fft.png
new file mode 100644
index 0000000..454bfe7
--- /dev/null
+++ b/MATLAB/HW11/sq125fft.png
Binary files differ
diff --git a/MATLAB/HW11/sqfft.png b/MATLAB/HW11/sqfft.png
new file mode 100644
index 0000000..df95e5d
--- /dev/null
+++ b/MATLAB/HW11/sqfft.png
Binary files differ
diff --git a/MATLAB/HW11/square-100Hz-2-cycles.png b/MATLAB/HW11/square-100Hz-2-cycles.png
new file mode 100644
index 0000000..ef2d0d5
--- /dev/null
+++ b/MATLAB/HW11/square-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/HW11/square-100Hz-Generated-2cycles.png b/MATLAB/HW11/square-100Hz-Generated-2cycles.png
new file mode 100644
index 0000000..5fb3d10
--- /dev/null
+++ b/MATLAB/HW11/square-100Hz-Generated-2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/square-100Hz-Generated.png b/MATLAB/HW11/square-100Hz-Generated.png
new file mode 100644
index 0000000..38676d9
--- /dev/null
+++ b/MATLAB/HW11/square-100Hz-Generated.png
Binary files differ
diff --git a/MATLAB/HW11/square-100Hz.png b/MATLAB/HW11/square-100Hz.png
new file mode 100644
index 0000000..739961c
--- /dev/null
+++ b/MATLAB/HW11/square-100Hz.png
Binary files differ
diff --git a/MATLAB/HW11/square-125Hz.png b/MATLAB/HW11/square-125Hz.png
new file mode 100644
index 0000000..7097f9d
--- /dev/null
+++ b/MATLAB/HW11/square-125Hz.png
Binary files differ
diff --git a/MATLAB/HW11/square-125Hz2cycles.png b/MATLAB/HW11/square-125Hz2cycles.png
new file mode 100644
index 0000000..e1d74ed
--- /dev/null
+++ b/MATLAB/HW11/square-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/square.png b/MATLAB/HW11/square.png
new file mode 100644
index 0000000..16297ad
--- /dev/null
+++ b/MATLAB/HW11/square.png
Binary files differ
diff --git a/MATLAB/HW11/square2cycles.png b/MATLAB/HW11/square2cycles.png
new file mode 100644
index 0000000..bb34b86
--- /dev/null
+++ b/MATLAB/HW11/square2cycles.png
Binary files differ
diff --git a/MATLAB/HW11/sw100GFFT.png b/MATLAB/HW11/sw100GFFT.png
new file mode 100644
index 0000000..fa9a72f
--- /dev/null
+++ b/MATLAB/HW11/sw100GFFT.png
Binary files differ
diff --git a/MATLAB/HW11/sw125fft.png b/MATLAB/HW11/sw125fft.png
new file mode 100644
index 0000000..ea1342b
--- /dev/null
+++ b/MATLAB/HW11/sw125fft.png
Binary files differ
diff --git a/MATLAB/HW11/swfft.png b/MATLAB/HW11/swfft.png
new file mode 100644
index 0000000..afafcee
--- /dev/null
+++ b/MATLAB/HW11/swfft.png
Binary files differ
diff --git a/MATLAB/HW11/t100FFT.png b/MATLAB/HW11/t100FFT.png
new file mode 100644
index 0000000..633353d
--- /dev/null
+++ b/MATLAB/HW11/t100FFT.png
Binary files differ
diff --git a/MATLAB/HW11/tfft.png b/MATLAB/HW11/tfft.png
new file mode 100644
index 0000000..ab0839f
--- /dev/null
+++ b/MATLAB/HW11/tfft.png
Binary files differ
diff --git a/MATLAB/HW11/triangle-100Hz-2-cycles.png b/MATLAB/HW11/triangle-100Hz-2-cycles.png
new file mode 100644
index 0000000..001a053
--- /dev/null
+++ b/MATLAB/HW11/triangle-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/HW11/triangle-100Hz.png b/MATLAB/HW11/triangle-100Hz.png
new file mode 100644
index 0000000..da854bd
--- /dev/null
+++ b/MATLAB/HW11/triangle-100Hz.png
Binary files differ
diff --git a/MATLAB/HW11/triangle.png b/MATLAB/HW11/triangle.png
new file mode 100644
index 0000000..2b3eeb6
--- /dev/null
+++ b/MATLAB/HW11/triangle.png
Binary files differ
diff --git a/MATLAB/HW11/triangle2cycles.png b/MATLAB/HW11/triangle2cycles.png
new file mode 100644
index 0000000..dfcc44e
--- /dev/null
+++ b/MATLAB/HW11/triangle2cycles.png
Binary files differ
diff --git a/MATLAB/mixed-100Hz.png b/MATLAB/mixed-100Hz.png
new file mode 100644
index 0000000..b036804
--- /dev/null
+++ b/MATLAB/mixed-100Hz.png
Binary files differ
diff --git a/MATLAB/mixed-2-cycles.png b/MATLAB/mixed-2-cycles.png
new file mode 100644
index 0000000..d5a144c
--- /dev/null
+++ b/MATLAB/mixed-2-cycles.png
Binary files differ
diff --git a/MATLAB/sawtooth-100Hz-Generated-2cycles.png b/MATLAB/sawtooth-100Hz-Generated-2cycles.png
new file mode 100644
index 0000000..ee90446
--- /dev/null
+++ b/MATLAB/sawtooth-100Hz-Generated-2cycles.png
Binary files differ
diff --git a/MATLAB/sawtooth-100Hz-Generated.png b/MATLAB/sawtooth-100Hz-Generated.png
new file mode 100644
index 0000000..4c734e0
--- /dev/null
+++ b/MATLAB/sawtooth-100Hz-Generated.png
Binary files differ
diff --git a/MATLAB/sawtooth-125Hz.png b/MATLAB/sawtooth-125Hz.png
new file mode 100644
index 0000000..1d4c176
--- /dev/null
+++ b/MATLAB/sawtooth-125Hz.png
Binary files differ
diff --git a/MATLAB/sawtooth-125Hz2cycles.png b/MATLAB/sawtooth-125Hz2cycles.png
new file mode 100644
index 0000000..fdd1846
--- /dev/null
+++ b/MATLAB/sawtooth-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/sawtooth.png b/MATLAB/sawtooth.png
new file mode 100644
index 0000000..5bfa5bd
--- /dev/null
+++ b/MATLAB/sawtooth.png
Binary files differ
diff --git a/MATLAB/sawtooth2cycles.png b/MATLAB/sawtooth2cycles.png
new file mode 100644
index 0000000..42b0de5
--- /dev/null
+++ b/MATLAB/sawtooth2cycles.png
Binary files differ
diff --git a/MATLAB/sine-100Hz-2-cycles.png b/MATLAB/sine-100Hz-2-cycles.png
new file mode 100644
index 0000000..bb77fd4
--- /dev/null
+++ b/MATLAB/sine-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/sine-100Hz.png b/MATLAB/sine-100Hz.png
new file mode 100644
index 0000000..e518b60
--- /dev/null
+++ b/MATLAB/sine-100Hz.png
Binary files differ
diff --git a/MATLAB/square-100Hz-2-cycles.png b/MATLAB/square-100Hz-2-cycles.png
new file mode 100644
index 0000000..cf57ee4
--- /dev/null
+++ b/MATLAB/square-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/square-100Hz-Generated-2cycles.png b/MATLAB/square-100Hz-Generated-2cycles.png
new file mode 100644
index 0000000..b68000b
--- /dev/null
+++ b/MATLAB/square-100Hz-Generated-2cycles.png
Binary files differ
diff --git a/MATLAB/square-100Hz-Generated.png b/MATLAB/square-100Hz-Generated.png
new file mode 100644
index 0000000..eabc708
--- /dev/null
+++ b/MATLAB/square-100Hz-Generated.png
Binary files differ
diff --git a/MATLAB/square-100Hz.png b/MATLAB/square-100Hz.png
new file mode 100644
index 0000000..845e802
--- /dev/null
+++ b/MATLAB/square-100Hz.png
Binary files differ
diff --git a/MATLAB/square-125Hz.png b/MATLAB/square-125Hz.png
new file mode 100644
index 0000000..124ab7f
--- /dev/null
+++ b/MATLAB/square-125Hz.png
Binary files differ
diff --git a/MATLAB/square-125Hz2cycles.png b/MATLAB/square-125Hz2cycles.png
new file mode 100644
index 0000000..cbe9b55
--- /dev/null
+++ b/MATLAB/square-125Hz2cycles.png
Binary files differ
diff --git a/MATLAB/square.png b/MATLAB/square.png
new file mode 100644
index 0000000..e9514b3
--- /dev/null
+++ b/MATLAB/square.png
Binary files differ
diff --git a/MATLAB/square2cycles.png b/MATLAB/square2cycles.png
new file mode 100644
index 0000000..dc8d6fd
--- /dev/null
+++ b/MATLAB/square2cycles.png
Binary files differ
diff --git a/MATLAB/triangle-100Hz-2-cycles.png b/MATLAB/triangle-100Hz-2-cycles.png
new file mode 100644
index 0000000..bd103d5
--- /dev/null
+++ b/MATLAB/triangle-100Hz-2-cycles.png
Binary files differ
diff --git a/MATLAB/triangle-100Hz.png b/MATLAB/triangle-100Hz.png
new file mode 100644
index 0000000..cf30129
--- /dev/null
+++ b/MATLAB/triangle-100Hz.png
Binary files differ
diff --git a/MATLAB/triangle.png b/MATLAB/triangle.png
new file mode 100644
index 0000000..411d139
--- /dev/null
+++ b/MATLAB/triangle.png
Binary files differ
diff --git a/MATLAB/triangle2cycles.png b/MATLAB/triangle2cycles.png
new file mode 100644
index 0000000..25f1efe
--- /dev/null
+++ b/MATLAB/triangle2cycles.png
Binary files differ
diff --git a/cmpen472hw11_McDonnell/bin/Project.xpr b/cmpen472hw11_McDonnell/bin/Project.xpr
new file mode 100644
index 0000000..d7bad06
--- /dev/null
+++ b/cmpen472hw11_McDonnell/bin/Project.xpr
@@ -0,0 +1 @@
+Data < ADDXPR ONLY_ADD_IF_NEW "main.dbg::operator"
diff --git a/cmpen472hw12_McDonnell/Sources/cmpen472hw12_McDonnell.asm b/cmpen472hw12_McDonnell/Sources/cmpen472hw12_McDonnell.asm
new file mode 100644
index 0000000..2e2b5e6
--- /dev/null
+++ b/cmpen472hw12_McDonnell/Sources/cmpen472hw12_McDonnell.asm
@@ -0,0 +1,1097 @@
+**************************************************************************
+*
+* Title: Memory Monitor
+*
+* Objective: CMPEN 472 Homework 12
+*
+* Revision: V1.0
+*
+* Date: APR. 25, 2025
+*
+* Programmer: Jacob McDonnell
+*
+* Company: The Pennsylvania State University
+* Department of Computer Science and Engineering
+*
+* Algorithm: Simple Serial I/O, address poking and modifying
+*
+* Register Use: A & B to current byte, etc,
+* X & Y holds address of strings and length of string,
+* D to hold data and address of the memory location to work on.
+*
+* Memory Use: RAM Locations from $3000 for data,
+* RAM Locations from $3100 for program
+*
+* Input: Serial Port for User Input
+*
+* Output: Serial Port for String Output
+* Memory locations changed if modified by user
+*
+* Observation: This program will prompt the user to print the contents of a
+* memory location and to modify the location with hexadecimal or
+* decimal data. The user can also load in chunks of data and
+* print chunks of memory. If the user wishes, they can type
+* 'QUIT' to exit the memory monitor and enter the type writer
+* program.
+*
+* Note: ON CSM-12C128 board,
+*
+* Comments: This program is developed and simulated using CodeWarrior
+* development software and targeted for Axion
+* Manufacturing's CSM-12C128 board running at 24MHz.
+*
+**************************************************************************
+* Parameter Declearation Section
+*
+* Export Symbols
+ xdef pgstart ; export 'pgstart' symbol
+ absentry pgstart ; for assembly entry point
+
+* Symbols and Macros
+PORTA equ $0000 ; i/o port A addresses
+DDRA equ $0002 ; data direction register for PORTA
+PORTB equ $0001 ; i/o port B addresses
+DDRB equ $0003 ; data direction register for PORTB
+
+SCIBDH equ $00C8 ; Serial port (SCI) Baud Register H
+SCIBDL equ $00C9 ; Serial port (SCI) Baud Register L
+SCICR2 equ $00CB ; Serial port (SCI) Control Register 2
+SCISR1 equ $00CC ; Serial port (SCI) Status Register 1
+SCIDRL equ $00CF ; Serial port (SCI) Data Register
+
+CR equ $0d ; carriage return, ASCII 'Return' key
+LF equ $0a ; line feed, ASCII 'next line' character
+NULL equ $00 ; NULL Terminator character
+
+*
+**************************************************************************
+* Data Section: address used [ $3000 to $30FF ] RAM Memory
+*
+ org $3000 ; Reserved RAM memory starting address
+ ; for Data for CMPEN 472 class
+TESTER dc.w $0005 ; Memory location to test showing data
+ ; and writing data.
+
+buffer ds.b $0010 ; Array of 16 bytes to read a string
+ dc.b NULL ; NULL terminated
+lenBuf dc.w $0010 ; Length of buffer array
+
+buffer2 ds.b $0010 ; Array of 16 bytes for reading and reversal
+ dc.b NULL ; NULL terminated
+lenBuf2 dc.w $0010 ; length of buffer2
+
+charCount dc.b $00 ; Number of characters read by ReadHex
+
+*
+* There is a section Data Section at the end of the file
+**************************************************************************
+* Program Section: address used [ $3100 to $3FFF ] RAM Memory
+*
+ org $3100 ; Program start address, in RAM
+pgstart lds #$3100 ; initialize the stack pointer
+
+ ldaa #%11111111 ; Seven Segment display on PORTB
+ staa DDRB
+
+ ldaa #$0C ; Enable SCI port Tx and Rx units
+ staa SCICR2 ; disable SCI interrupts
+
+ ldd #$0001 ; Set SCI Baud Register = $0001 => 1.5M baud at 24MHz (for simulation)
+ std SCIBDH ; SCI port baud rate change
+
+ ldx #msg ; Load the address of the welcome message into X
+ jsr WriteString ; Write the string to the serial console
+
+mainLoop
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr Zeros ; Fill the buffer with zeros
+
+ ldaa #'>' ; Load '>' into A
+ jsr putchar ; Jump to putchar to write to console
+ ldaa #' ' ; Load space character into A
+ jsr putchar ; Jump to putchar to write to console
+
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr ReadString ; Read a line from the serial console
+
+ ldx #buffer ; Load the address of the buffer into X
+ jsr CheckInput ; Jump to CheckInput to parse the user input
+ bra mainLoop ; Loop back to mainLoop always
+TypeWriter ldx #twMsg ; Load Type Writer welcome message address
+ jsr WriteString ; Jump to WriteString to write message to serial
+twReadLoop jsr getchar ; Read Character from Serial
+ beq twReadLoop ; While Character == 0, branch to twReadLoop
+ jsr putchar ; Write Character back to terminal
+ staa PORTB ; Write Character to PORTB
+ bra twReadLoop ; Branch always to twReadLoop
+
+**************************************************************************
+* Subroutine Section: address used [ $3100 to $3FFF ] RAM Memory
+*
+
+;*************************************************************************
+; CheckInput subroutine
+;
+; This subroutine will check the input string and match the option.
+;
+; Input: Address of null terminated string in X.
+; Output: No Output, Control flow changed to proper subroutine.
+; Registers in use: X for the address of the string, A & B to read characters from
+; from the string.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine will not return a value, it will jump to the proper subroutine
+; based on the input given. If "QUIT" is the command, this subroutine will jump
+; to TypeWriter which will not return and needs to be restarted to exit.
+;
+
+CheckInput
+ pshx ; Save X to the stack
+ pshd ; Save D to the stack
+ ldaa 1,x+ ; Read Character from the string in X
+ cmpa #'W' ; Compare Character to 'W'
+ lbeq cWrite ; If A == 'W', branch to cWrite
+ cmpa #'Q' ; Compare A to 'Q'
+ lbeq cTypeWrite ; If A == 'Q', branch to cTypeWrite
+ cmpa #'M' ; Compare A to 'M'
+ beq cMDCommand ; If A != 'M', Check if LD command
+ cmpa #'L' ; Compare A to 'L'
+ lbeq cLDCommand ; If A != 'L', Check if GO command
+ cmpa #'G' ; Compare A to 'G'
+ beq cGoTo ; If A != 'G', Check if L command
+ cmpa #'S' ; Compare A to 'S'
+ lbne cUnknownCMD ; If A != 'S', Command unknown
+ ldaa 0,x ; Load next character but don't increment
+ cmpa #'$' ; Compare A to '$'
+ lbne cUnknownCMD ; If A != '$', branch to unknown command
+ jsr ReadHex ; ReadHex to Read the memory Address
+ lbeq cBadAddr ; If Z == 1, branch to cBadAddr
+ exg Y,X ; Exchange Y for X
+ pshx ; Save X to the stack
+ ldx #buffer ; Load address of buffer into X
+ ldy lenBuf ; Loadd length of the buffer into Y
+ jsr Zeros ; Fill buffer with Zeros
+ pulx ; Restore X from the stack
+ lbra cDone ; branch always to cDone
+cGoTo ldaa 1,x+ ; Load next character
+ cmpa #'O' ; Compare to 'O'
+ lbne cUnknownCMD ; If A != 'S', Command unknown
+ ldaa 0,x ; Load next character but don't increment
+ cmpa #'$' ; Compare A to '$'
+ lbne cUnknownCMD ; If A != '$', branch to unknown command
+ jsr ReadHex ; ReadHex to Read the memory Address
+ lbeq cBadAddr ; If Z == 1, branch to cBadAddr
+ jsr 0,y ; Launch address in Y
+ lbra cNoPrint ; Done with command
+cMDCommand ldaa 1,x+ ; Load next character into A
+ cmpa #'D' ; Compare do 'D' character
+ lbne cUnknownCMD ; If A != 'D', unknown command
+ ldaa 0,x ; Load next character but don't increment
+ cmpa #'$' ; Compare A to '$'
+ lbne cUnknownCMD ; If A != '$', branch to unknown command
+ jsr ReadHex ; ReadHex to Read the memory Address
+ lbeq cBadAddr ; If Z == 1, branch to cBadAddr
+ exg Y,D ; Exchange Y and D
+ pshd ; Save D to the stack
+mSkipSpaces ldaa 1,x+ ; Load next character into A
+ lbeq cBadData ; If A == 0, branch to bad Data (no data given)
+ cmpa #' ' ; Compare A to space character
+ lbeq mSkipSpaces ; While A == ' ', loop to skip spaces
+ cmpa #'$' ; Compare A to '$'
+ lbne cBadData ; If A != '$', branch to cBadData
+ dex ; Decrement X by 1
+ jsr ReadHex ; Jump to ReadHex to read hex data
+ lbeq cBadData ; If Z == 1, branch to cBadData
+ puld ; Restore D from the stack
+ exg D,X ; Exchange D and X
+ pshd ; Save D to the stack, cBadData usually has 2 D's on the stack
+ cpy #2 ; Compare Y to 2
+ blo cBadData ; No distances below 2 bytes
+ puld ; Restore D from the stack
+ jsr MDCommand ; Jump to MDCommand
+ lbra cNoPrint ; Done with command
+cLDCommand ldaa 1,x+ ; Load next character into A
+ cmpa #'D' ; Compare do 'D' character
+ bne cUnknownCMD ; If A != 'D', unknown command
+ ldaa 0,x ; Load next character but don't increment
+ cmpa #'$' ; Compare A to '$'
+ bne cUnknownCMD ; If A != '$', branch to unknown command
+ jsr ReadHex ; ReadHex to Read the memory Address
+ beq cBadAddr ; If Z == 1, branch to cBadAddr
+ exg Y,D ; Exchange Y and D
+ pshd ; Save D to the stack
+lSkipSpaces ldaa 1,x+ ; Load next character into A
+ beq cBadData ; If A == 0, branch to bad Data (no data given)
+ cmpa #' ' ; Compare A to space character
+ beq lSkipSpaces ; While A == ' ', loop to skip spaces
+ cmpa #'$' ; Compare A to '$'
+ bne cBadData ; If A != '$', branch to cBadData
+ dex ; Decrement X by 1
+ jsr ReadHex ; Jump to ReadHex to read hex data
+ beq cBadData ; If Z == 1, branch to cBadData
+ puld ; Restore D from the stack
+ exg D,X ; Exchange D and X
+ pshd ; Save D to the stack, cBadData usually has 2 D's on the stack
+ cpy #1 ; Compare Y to 1
+ blo cBadData ; No distances below 2 bytes
+ puld ; Restore D from the stack
+ jsr LDCommand ; Jump to MDCommand
+ bra cNoPrint ; Done with command
+cWrite ldaa 0,x ; Load next character but don't increment
+ cmpa #'$' ; Compare A to '$'
+ bne cUnknownCMD ; If A != '$', branch to unknown command
+ jsr ReadHex ; ReadHex to Read the memory Address
+ beq cBadAddr ; If Z == 1, branch to cBadAddr
+ exg Y,D ; Exchange Y and D
+ pshd ; Save D to the stack
+skipSpaces ldaa 1,x+ ; Load next character into A
+ beq cBadData ; If A == 0, branch to bad Data (no data given)
+ cmpa #' ' ; Compare A to space character
+ beq skipSpaces ; While A == ' ', loop to skip spaces
+ cmpa #'$' ; Compare A to '$'
+ beq cHexData ; If A == '$', branch to cHexData
+ dex ; Decrement X by 1
+ jsr ReadDecimal ; Jump to ReadDecimal
+ beq cBadData ; If Z == 1, branch to cBadData
+ bra cWriteData ; Branch always to cWriteData
+cHexData dex ; Decrement X by 1
+ jsr ReadHex ; Jump to ReadHex to read hex data
+ beq cBadData ; If Z == 1, branch to cBadData
+cWriteData puld ; Restore D from the stack
+ exg D,X ; Exchange D and X
+ sty x ; Write data in Y to memory in X
+cDone jsr PrintMem ; Jump to PrintMem to print the contents of the location
+cNoPrint puld ; Restore D from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+cBadAddr ldx #badAddr ; Load the address of badAddr into X
+ jsr WriteString ; Write badAddr to serial console
+ puld ; Restore D from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+cBadData ldx #badData ; Load the address of badData into X
+ jsr WriteString ; Write badData to serial console
+ puld ; Restore D from the stack
+ puld ; Restore D from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+cUnknownCMD ldx #badCom ; Load the address of badCom into X
+ jsr WriteString ; Write badCom to the serial console
+ puld ; Restore D from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+cTypeWrite ldaa 1,x+ ; Load next character from X
+ cmpa #'U' ; Compare A to 'U'
+ bne cUnknownCMD ; If A != 'U', branch to unknown command
+ ldaa 1,x+ ; Load next character from X
+ cmpa #'I' ; Compare A to 'I'
+ bne cUnknownCMD ; If A != 'I', branch to unknown command
+ ldaa 1,x+ ; Load next character from X
+ cmpa #'T' ; Compare A to 'T'
+ bne cUnknownCMD ; If A != 'T', branch to unknown command
+ ldaa 1,x+ ; Load next character from X
+ bne cUnknownCMD ; If A != 0, branch to unknown command
+ jmp TypeWriter ; Jump to TypeWriter
+
+;*************************************************************************
+; ReadHex subroutine
+;
+; This subroutine will read an ASCII string of a number in hex and convert it to
+; its value.
+;
+; Input: A memory address in register X.
+; Output: The value of the hex number in the Y register, and any errors printed
+; to the serial line. Zero bit is set if error occurs.
+; Registers in use: X for the address of the contents and for a buffer while printing,
+; D for multiplication, B for the character, Y for output value.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine will return the value in the Y register, and if an error occurs,
+; the Zero bit in the CCR will be set.
+;
+
+ReadHex
+ pshd ; Save D to the stack
+ ldy #0 ; Clear Y register
+ ldab 1,x+ ; Read character from X into B, add 1 to X
+ clra ; clear A accumulator
+ staa charCount ; Clear charCount
+ cmpb #'$' ; Compare B to '$'
+ bne rHError ; If B != '$', jump to error, not hex data
+rHLoop inc charCount ; Increment charCount by 1
+ ldab charCount ; Load charCount into B
+ cmpb #5 ; At most 4 hex digits to read
+ bhi rHError ; If charCount > 5, error
+ ldab 1,x+ ; Read Next character from X
+ beq rHDone ; If B == 0, exit loop
+ cmpb #' ' ; Compare B to space character
+ beq rHDone ; If B == ' ', exit loop
+ cmpb #'0' ; Compare B to '0' character
+ blt rHError ; If B < '0', bad address, exit loop
+ cmpb #'9' ; Compare B to '9' character
+ bhi rHAlpha ; If B > '9', check if 'A'-'F' characters
+ subb #'0' ; Subtract '0' from B to get true value
+ pshb ; Save B to the stack
+ ldd #16 ; load 16 into D
+ emul ; Multiply Y and D
+ exg d,y ; Transfer data from D to Y
+ pulb ; Restore b from the stack
+ aby ; Add B to Y
+ bra rHLoop ; Branch always to rHLoop
+rHAlpha cmpb #'A' ; Compare B to 'A' character
+ blt rHError ; If B < 'A', bad address, exit loop
+ cmpb #'F' ; Compare B to 'F' character
+ bhi rHError ; If B > 'F', invalid data, error out
+ subb #'A' ; Subtract 'A' from B to get true value
+ addb #$A ; Add $A to B to account for offet
+ pshb ; Save B to the stack
+ ldd #16 ; load 16 into D
+ emul ; Multiply Y and D
+ exg d,y ; Transfer data from D to Y
+ pulb ; Restore b from the stack
+ aby ; Add B to Y
+ bra rHLoop ; Branch always to rHLoop
+rHDone clra ; clear A accumulator
+ staa charCount ; Clear charCount
+ tap ; Transfer A into CCR to clear zero bit
+ puld ; Restore D from the stack
+ rts ; Return to caller
+rHError ldaa #4 ; Load 4 into A to set zero bit in CCR
+ tap ; Transfer A into CCR to set zero bit and warn error
+ puld ; Restore D from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; MDCommand subroutine
+;
+; This subroutine is the MD command for the user. This subroutine will take in
+; a memory address and a length of bytes, and will print the bytes starting at
+; that memory location in 16 byte line segments.
+;
+; Input: A memory address in register X & a length of bytes in Y
+; Output: The data in memory starting at the address in X in 16
+; byte line segments on the serial console.
+; Registers in use: X for the address of the contents and for a buffer while printing,
+; D for multiplication, B for the character, Y for output value.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine Requires PrintHexWord & PrintHexByte.
+;
+
+MDCommand
+ pshx ; Save X to the stack
+ pshy ; Save Y to the stack
+ pshd ; Save D to the stack
+ pshx ; Save X to the stack
+ pshy ; Save Y to the stack
+ tfr x,d ; Copy X to D
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr Zeros ; Fill the buffer with Zeros
+ ldy #buffer ; Load the address of the buffer into Y
+ jsr PrintHexWord ; Print the data
+ ldaa #' ' ; Load space character into A
+ jsr putchar ; Print space to console
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ ldd #0 ; Clear D
+MDLoop cpy #0 ; Compare Y to 0
+ beq MDDone ; If Y == 0, done
+ dey ; Decrement Y by 1
+ dey ; Decrement Y by 1
+ ldab 1,x+ ; Load data from X into B
+ jsr PrintHexByte ; Print the data
+ ldab 1,x+ ; Load data from X into B
+ jsr PrintHexByte ; Print the data
+ tfr y,a ; Transfer lower byte Y to A
+ anda #15 ; And A with 15, basically modulus 16
+ bne MDLoop ; If A & 15 != 0, no newline
+ ldaa #CR ; Load CR into A
+ jsr putchar ; Print CR to serial console
+ ldaa #LF ; Load LF into A
+ jsr putchar ; Print LF to serial console
+ cpy #0 ; Compare Y to 0
+ beq MDDone ; If Y == 0, done
+ pshx ; Save X to the stack
+ pshy ; Save Y to the stack
+ tfr x,d ; Copy X to D
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr Zeros ; Fill the buffer with Zeros
+ ldy #buffer ; Load the address of the buffer into Y
+ jsr PrintHexWord ; Print the data
+ ldaa #' ' ; Load space character into A
+ jsr putchar ; Print space to console
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ bra MDLoop ; Loop
+MDDone ldaa #CR ; Load CR into A
+ jsr putchar ; Print CR to serial console
+ ldaa #LF ; Load LF into A
+ jsr putchar ; Print LF to serial console
+ puld ; Restore D from the stack
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ rts ; Return
+
+;*************************************************************************
+; LDCommand subroutine
+;
+; This subroutine is the LD command for the user. This subroutine will take in
+; a memory address and a length of bytes, and will take bytes entered by the
+; user and write them to memory.
+;
+; Input: A memory address in register X & a length of bytes in Y
+; Bytes of data entered by the user on the serial console.
+; Output: The data inputted into memory starting at the address in X.
+; Registers in use: X for the address of the contents and for a buffer while printing,
+; D for multiplication, B for the character, Y for output value.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine Requires PrintHexWord, ReadHexByte, & PrintHexByte.
+; This subroutine will stop reading once the inputted number of bytes
+; is read.
+;
+
+LDCommand
+ pshx ; Save X to the stack
+ pshy ; Save Y to the stack
+ pshd ; Save D to the stack
+ iny ; Add 1 to y for loop
+LDLoop dbeq y,LDDone ; Decrement y, y == 0, done
+ jsr GetCharLoop ; Read Character from serial
+ cmpa #CR ; Compare to CR
+ bne NotCR ; If A != CR, not CR
+ jsr putchar ; Echo to serial
+ jsr GetCharLoop ; Read Character from serial
+NotCR cmpa #LF ; Compare to LF
+ bne NotNewline ; If not LF, skip next read
+ jsr putchar ; Echo to serial
+ jsr GetCharLoop ; Read Character from serial
+ cmpa #CR ; Compare to CR
+ bne NotNewline ; If not CR, skip next read
+ jsr GetCharLoop ; Read Character from serial
+NotNewline jsr putchar ; Echo to serial
+ jsr IsValidHex ; Check if valid hex
+ beq LDInvalid ; If Z == 1, invalid
+ tab ; Transfer A to B
+ jsr GetCharLoop ; Read Character from serial
+ cmpa #CR ; Compare to CR
+ bne NotCR2 ; If A != CR, not CR
+ jsr putchar ; Echo to serial
+ jsr GetCharLoop ; Read Character from serial
+NotCR2 cmpa #LF ; Compare to LF
+ bne NotNewline2 ; If not LF, skip next read
+ jsr putchar ; Echo to serial
+ jsr GetCharLoop ; Read Character from serial
+ cmpa #CR ; Compare to CR
+ bne NotNewline2 ; If not CR, skip next read
+ jsr GetCharLoop ; Read Character from serial
+NotNewline2 jsr putchar ; Echo to serial
+ jsr IsValidHex ; Check if valid hex
+ beq LDInvalid ; If Z == 1, invalid
+ exg a,b ; Swap A and B
+ jsr ReadHexByte ; Read ASCII Hex into data
+ staa 1,x+ ; Store byte into memory
+ bra LDLoop ; Loop
+LDDone ldaa #CR ; Load CR into A
+ jsr putchar ; Print to serial
+ ldaa #LF ; Load LF into A
+ jsr putchar ; Print to serial
+ puld ; Restore D from the stack
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ rts ; Return
+LDInvalid ldaa #CR ; Load CR into A
+ jsr putchar ; Print to serial
+ ldaa #LF ; Load LF into A
+ jsr putchar ; Print to serial
+ ldx #badData ; Load the address of bad data string
+ jsr WriteString ; Write string to serial
+ puld ; Restore D from the stack
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ rts ; Return
+
+;*************************************************************************
+; GetCharLoop subroutine
+;
+; This subroutine will read a byte from input and will block until there is data
+; to read.
+;
+; Input: A byte entered on the serial console.
+; Output: That byte in register A.
+; Registers in use: A for the byte inputted by the user.
+; Memory locations in use: Memory Address for serial line
+;
+; Comments: This subroutine will block until the user inputs data.
+;
+
+GetCharLoop
+ jsr getchar ; Read character from serial
+ beq GetCharLoop ; If 0, loop
+ rts ; Return
+
+;*************************************************************************
+; IsValidHex subroutine
+;
+; This subroutine set the zero bit if the given character is not valid hex.
+;
+; Input: An ASCII character in register A.
+; Output: Zero bit set if invalid hex. (Valid if '0' <= A <= '9' or 'A' <= A <= 'F')
+; Registers in use: A for the given character, CCR for output.
+; Memory locations in use: No memory locations used.
+;
+; Comments: This subroutine only validates upper case hex.
+;
+
+IsValidHex
+ cmpa #'0' ; Compare A to '0'
+ blo InvalidHex ; A < '0', invalid
+ cmpa #'9' ; Compare A to '9'
+ bls ValidHex ; A <= '9', valid hex
+ cmpa #'A' ; Compare A to 'A'
+ blo InvalidHex ; A < 'A', invalid
+ cmpa #'F' ; Compare A to 'F'
+ bhi InvalidHex ; A > 'F', invalid
+ValidHex andcc #%11111011 ; Clear Zero Bit
+ rts ; Return
+InvalidHex orcc #%00000100 ; Set the Zero Bit
+ rts ; Return
+
+;*************************************************************************
+; ReadDecimal subroutine
+;
+; This subroutine will read an ASCII string of a number in decimal and convert it to
+; its value.
+;
+; Input: A memory address in register X.
+; Output: The value of the number in the Y register, and any errors printed
+; to the serial line. Zero bit is set if error occurs.
+; Registers in use: X for the address of the contents and for a buffer while printing,
+; D for multiplication, B for the character, Y for output value.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine will return the value in the Y register, and if an error occurs,
+; the Zero bit in the CCR will be set.
+;
+
+ReadDecimal
+ pshd ; Save D to the stack
+ ldy #0 ; Clear Y register
+ clrb ; Clear B
+ stab charCount ; Clear charCount
+dHLoop inc charCount ; Increment charCount by 1
+ ldab charCount ; Load charCount into B
+ cmpb #6 ; Compare to B to 6
+ bhi dHError ; B > 6, bad too many characters.
+ ldab 1,x+ ; Read Next character from X
+ beq dHDone ; If B == 0, exit loop
+ cmpb #' ' ; Compare B to space character
+ beq dHDone ; If B == ' ', exit loop
+ cmpb #'0' ; Compare B to '0' character
+ blt dHError ; If B < '0', bad address, exit loop
+ cmpb #'9' ; Compare B to '9' character
+ bhi dHError ; If B > '9', check if 'A'-'F' characters
+ subb #'0' ; Subtract '0' from B to get true value
+ pshb ; Save B to the stack
+ ldd #10 ; load 10 into D
+ emul ; Multiply Y and D
+ exg d,y ; Transfer data from D to Y
+ pulb ; Restore b from the stack
+ aby ; Add B to Y
+ bra dHLoop ; Branch always to rHLoop
+dHDone clra ; clear A accumulator
+ tap ; Transfer A into CCR to clear zero bit
+ puld ; Restore D from the stack
+ rts ; Return to caller
+dHError ldaa #4 ; Load 4 into A to set zero bit in CCR
+ tap ; Transfer A into CCR to set zero bit and warn error
+ puld ; Restore D from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; PrintMem subroutine
+;
+; This subroutine will print the address and contents of the given memory location.
+;
+; Input: A memory address in register X.
+; Output: The memory address in Hex and the contents in binary, hex, & decimal
+; on the serial output.
+; Registers in use: X for the address of the contents and for a buffer while printing,
+; D for the contents of the location, Y for another buffer address while
+; reversing strings and printing.
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine requires the serial console to be setup before calling.
+;
+
+PrintMem
+ pshy ; Save Y to the Stack
+ pshd ; Save D to the Stack
+ exg x,d ; Copy Address from X to D to print
+ ldy #buffer ; Load the address of buffer into Y
+ jsr PrintHexWord ; Print the Address in Hex
+ exg d,x ; Copy Address from D to X
+ ldaa #'=' ; Load the '=' character into A
+ jsr putchar ; Print the character to the serial
+ ldaa #'>' ; Load the '>' character into A
+ jsr putchar ; Print the character to the serial
+ ldd x ; Load data from address in X into D
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr Zeros ; Fill the buffer with Zeros
+ jsr PrintBinaryWord ; Print the binary word to the serial
+ psha ; Save A to the stack
+ ldaa #' ' ; Load Space character into A
+ jsr putchar ; Print Space character to the serial
+ jsr putchar ; Print Space character to the serial
+ pula ; Restore A from the stack
+ ldy #buffer ; Load the address of the buffer into Y
+ jsr PrintHexWord ; Prin the hex representation of the word to serial
+ psha ; Save A to the stack
+ ldaa #' ' ; Load Space character into A
+ jsr putchar ; Print Space character to the serial
+ jsr putchar ; Print Space character to the serial
+ pula ; Restore A from the stack
+ ldx #buffer ; Load the address of the buffer into X
+ ldy lenBuf ; Load the length of the buffer into Y
+ jsr Zeros ; Fill the buffer with Zeros
+ ldy #buffer ; Load the address of the buffer into Y
+ jsr PrintDecimalWord; Prin the decimal representation of the word to serial
+ ldaa #CR ; Load the carriage return character into A
+ jsr putchar ; Print the character to serial
+ ldaa #LF ; Load the line feed character into A
+ jsr putchar ; Print the character to serial
+ puld ; Restore D from the stack
+ puly ; Restore Y from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; strrev subroutine
+;
+; This subroutine will reverse a string from one buffer into another.
+;
+; Input: Address of null terminated string in X, address of a large enough
+; buffer in Y.
+; Output: The string in X reversed in Y.
+; Registers in use: X for the address of the string, Y for the address of the buffer,
+; A to read characters from the string.
+; Memory locations in use: Memory Address for serial line, address of the string & buffer
+;
+; Comments: This subroutine will not check that the output buffer is large enough, that
+; is the job of the caller.
+;
+
+strrev
+ pshx ; Save X to the stack
+ pshy ; Save Y to the stack
+ psha ; Save A to the stack
+revLoop ldaa 1,y- ; Load Character from Y into A, decrement Y
+ beq revDone ; If Character is 0, exit loop
+ staa 1,x+ ; Save character in address in X, increment X
+ bra revLoop ; Loop back always
+ clra ; Set A to Zero
+revDone staa 1,x+ ; Copy Null terminator into new string
+ pula ; Restore A from the stack
+ puly ; Restore Y from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; PrintBinaryWord subroutine
+;
+; This subroutine will print a given word of data to the serial in binary.
+;
+; Input: 1 word of data in register D
+; Output: Binary representation of the data on the serial console
+; Registers in use: X to count the number of bits written, D for the input, A for characters,
+; B for the byte being written.
+; Memory locations in use: Memory addresses for serial.
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+PrintBinaryWord
+ pshx ; Save X to the stack
+ pshd ; Save D (A:B) to the stack
+ pshb ; Save B to the stack (we want these bits again later)
+ tab ; Transfer A to B to get upper byte
+ ldaa #'%' ; Load '%' into A
+ jsr putchar ; Print '%' to serial to denote binary number
+ ldx #16 ; Load 16 into X, since we're printing 16 bits
+bPrintLoop rolb ; Rotate MSB of B into C of CCR
+ tpa ; Copy CCR into A
+ anda #1 ; and A with 1 to get only LSB
+ adda #'0' ; Add '0' to A to get ASCII Character
+ jsr putchar ; Print Character A to serial
+ dbeq X,bPrintDone ; Decrement X and if X == 0, branch to done
+ cpx #8 ; Compare X to 8 to check if done with upper byte
+ bne bPrintLoop ; If X != 8, loop to bPrintLoop
+ pulb ; Restore B from stack to get lower byte
+ bra bPrintLoop ; Branch back into loop to print lower byte
+bPrintDone puld ; Restore D (A:B) from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; PrintHexByte subroutine
+;
+; This subroutine will print a given byte to serial in Hex format.
+;
+; Input: 1 byte of data in B
+; Output: Hex representation in ASCII on serial console
+; Registers in use: X for division, A and B for characters.
+; Memory locations in use: Memory addresses for serial.
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+PrintHexByte
+ pshd ; Save D to the stack
+ pshy ; Save Y to the stack
+ pshx ; Save X to the stack
+ clra ; Clear A
+ ldx #16 ; Load 16 into X
+ idiv ; D / 16 => X & D
+ tfr x,a ; Transfer lower byte of X to A
+ cmpa #10 ; Compare A to 10
+ bhs IsAlpha ; If A >= 10, IsAlpha
+ adda #'0' ; Add '0' to A to make character
+ bra PrintChar ; Print jump to print the character
+IsAlpha adda #'A' ; Add 'A' to A to make character
+ suba #$A ; Subtract 10 from A
+PrintChar jsr putchar ; Print character to serial
+ tba ; Transfer B to A
+ cmpa #10 ; Compare A to 10
+ bhs IsAlpha2 ; If A >= 10, IsAlpha2
+ adda #'0' ; Add '0' to A to make character
+ bra PrintDone ; Print jump to print the character
+IsAlpha2 adda #'A' ; Add 'A' to A to make character
+ suba #$A ; Subtract 10 from A
+PrintDone jsr putchar ; Print character to serial
+ ldaa #' ' ; Load space into A
+ jsr putchar ; Print character to serial
+ pulx ; Restore X from the stack
+ puly ; Restore Y from the stack
+ puld ; Restore D from the stack
+ rts ; Return
+
+;*************************************************************************
+; ReadHexByte subroutine
+;
+; This subroutine will read a hex byte from serial console into A.
+;
+; Input: 2 ASCII characters of Hex format on serial console.
+; Output: The data in register A.
+; Registers in use: A for characters and B for multiplication.
+; Memory locations in use: Memory addresses for serial.
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+ReadHexByte
+ cmpa #'A' ; Compare A to 'A'
+ blo RHBNotHex ; If A < 'A', decimal number
+ suba #7 ; 'A' - '0' = 17, 'A' - '0' - 7 = 10 = $A
+RHBNotHex suba #'0' ; Remove offset
+ pshb ; Save B to the stack
+ ldab #16 ; 16 to shift digit to left
+ mul ; A * 16, left shift digit
+ tba ; Store result in A
+ pulb ; Restore B from stack
+ cmpb #'A' ; Compare B to 'A'
+ blo RHBNotHexB ; If B < 'A', decimal number
+ subb #7 ; 'A' - '0' = 17, 'A' - '0' - 7 = 10 = $A
+RHBNotHexB subb #'0' ; Remove offset
+ aba ; Add A to B
+ rts ; Return
+
+;*************************************************************************
+; PrintHexWord subroutine
+;
+; This subroutine will print a given word of data to the serial in binary.
+;
+; Input: 1 word of data in register D, Buffer Address in Y
+; Output: Hexadecimal representation of the data on the serial console
+; Registers in use: Y for the address of the buffer, X to count the number of bits
+; written and for division, D for the input, A for characters.
+; Memory locations in use: Memory addresses for serial.
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+PrintHexWord
+ pshx ; Save X to the stack
+ pshd ; Save D (A:B) to the stack
+ pshy ; Save Y to the stack
+ cpd #0 ; Compare D to zero
+ beq hIsZero ; Branch to hIsZero
+ psha ; Save A to the stack
+ pshy ; Save Y to the stack
+ pshx ; Save x to the stack
+ ldaa #'0' ; Load the '0' character into A
+ ldx #buffer2 ; Load the address of buffer2 into X
+ ldy #5 ; Load 5 into Y
+ jsr memset ; Write '0' to the first 5 bytes in buffer2
+ pulx ; Restore X from the stack
+ puly ; Restore Y from the stack
+ clra ; Set A to zero
+ staa 0,y ; Load Zero into Y for Null Terminator
+ pula ; Restore A from the stack
+hPrintLoop ldx #16 ; Load 16 in X for division
+ idiv ; Divide D / 16 to get Hex Digit
+ cpx #0 ; Compare X to 0
+ beq hCheck ; If X == 0, branch to check D is zero
+hDNotZero cmpb #$0A ; Compare A to $0A
+ blt hex10 ; If B < $A, branch to hex10
+ addb #'A' ; Add 'A' to B to get ASCII Character
+ subb #$0A ; Subtract $A to adjust characters
+ stab 1,+y ; Save character from B to Y
+ exg X,D ; Swap values in X and D
+ bra hPrintLoop ; loop to hPrintLoop
+hex10 addb #'0' ; Add '0' to B to get ASCII Character
+ stab 1,+y ; Save character from B to Y
+ exg X,D ; Swap values in X and D
+ bra hPrintLoop ; Loop to hPrintLoop
+hCheck cpd #0 ; Compare D to 0
+ bne hDNotZero ; If D != 0, branch back to hDNotZero
+hPrintDone ldaa #'$' ; Load '$' into
+ staa 1,+y ; Save '$' into buffer in Y to denote Hex
+ ldx #buffer2 ; Load the address of buffer2 in X
+ jsr strrev ; Reverse string in Y in buffer in X
+ jsr WriteString ; Jump to write string to write the number
+ ldy lenBuf2 ; Load the length of buffer2 into Y
+ ldx #buffer2 ; Load the address of buffer2 into X
+ jsr Zeros ; Fill buffer2 with zeros
+ puly ; Restore Y from the stack
+ puld ; Restore D (A:B) from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+hIsZero ldaa #'$' ; Load '$' character into A
+ jsr putchar ; Print character to the screen
+ ldaa #'0' ; Load '0' character into A
+ jsr putchar ; Print character to the screen
+ jsr putchar ; Print character to the screen
+ jsr putchar ; Print character to the screen
+ jsr putchar ; Print character to the screen
+ puly ; Restore Y from the stack
+ puld ; Restore D (A:B) from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; PrintDecimalWord subroutine
+;
+; This subroutine will print a given word of data to the serial in binary.
+;
+; Input: 1 word of data in register D, Buffer Address in Y
+; Output: Decimal representation of the data on the serial console
+; Registers in use: Y for the address of the buffer, X to count the number of bits
+; written and for division, D for the input, A for characters.
+; Memory locations in use: Memory addresses for serial.
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+PrintDecimalWord
+ pshx ; Save X to the stack
+ pshd ; Save D (A:B) to the stack
+ pshy ; Save Y to the stack
+ cpd #0 ; Compare D to zero
+ beq dIsZero ; Branch to hIsZero
+ psha ; Save A to the stack
+ pshy ; Save Y to the stack
+ pshx ; Save x to the stack
+ ldaa #'0' ; Load the '0' character into A
+ ldx #buffer2 ; Load the address of buffer2 into X
+ ldy #5 ; Load 5 into Y
+ jsr memset ; Write '0' to the first 5 bytes in buffer2
+ pulx ; Restore X from the stack
+ puly ; Restore Y from the stack
+ clra ; Set A to zero
+ staa 0,y ; Load Zero into Y for Null Terminator
+ pula ; Restore A from the stack
+dPrintLoop ldx #10 ; Load 10 in X for division
+ idiv ; Divide D / 10 to get Hex Digit
+ cpx #0 ; Compare X to 0
+ beq dCheck ; If X == 0, branch to check D is zero
+dDNotZero addb #'0' ; Add '0' to B to get ASCII Character
+ stab 1,+y ; Save character from B to Y
+ exg X,D ; Swap values in X and D
+ bra dPrintLoop ; Loop to hPrintLoop
+dCheck cpd #0 ; Compare D to 0
+ bne dDNotZero ; If D != 0, branch back to hDNotZero
+dPrintDone ldx #buffer2 ; Load the address of buffer2 in X
+ jsr strrev ; Reverse string in Y in buffer in X
+ jsr WriteString ; Jump to write string to write the number
+ ldy lenBuf2 ; Load the length of buffer2 into Y
+ ldx #buffer2 ; Load the address of buffer2 into X
+ jsr Zeros ; Fill buffer2 with zeros
+ puly ; Restore Y from the stack
+ puld ; Restore D (A:B) from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+dIsZero ldaa #'0' ; Load '0' character into A
+ jsr putchar ; Print character to the screen
+ puly ; Restore Y from the stack
+ puld ; Restore D (A:B) from the stack
+ pulx ; Restore X from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; Zeros subroutine
+;
+; This subroutine will write zeros to every byte in a given array.
+;
+; Input: Address of an array in X and its length in Y
+; Output: Zeros in every byte of an array.
+; Registers in use: X for the address of the array, Y for the length, and A for 0
+; Memory locations in use: Memory Address of the array
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+Zeros
+ psha ; Save A to the Stack
+ clra ; Clear A
+zerosLoop staa 1,x+ ; Load A into byte at X
+ dbne y,zerosLoop ; Decrement Y and loop if Y != 0
+ pula ; Restore A from the stack
+ rts ; Return to caller
+
+;*************************************************************************
+; memset subroutine
+;
+; This subroutine will write a given byte to every byte in a given array.
+;
+; Input: Address of an array in X and its length in Y, the byte in A
+; Output: The given byte in every byte of an array.
+; Registers in use: X for the address of the array, Y for the length, and A for the given byte
+; Memory locations in use: Memory Address of the array
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+memset
+ staa 1,x+ ; Load A into byte at X
+ dbne y,memset ; Decrement Y and loop if Y != 0
+ rts ; Return to caller
+
+;*************************************************************************
+; WriteString subroutine
+;
+; This subroutine will write a given null terminated string to the serial.
+;
+; Input: Address of null terminated string in X
+; Output: Null terminated string written to serial
+; Registers in use: X for the address of the string and A for the current byte
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine requires serial to be setup and putchar subroutine.
+;
+
+WriteString
+ psha ; Save A to the stack
+writeLoop ldaa 1,x+ ; Load the byte at addr in X, then add 1
+ beq doneWrite ; if A == 0, branch to doneWrite
+ jsr putchar ; Jump to putchar to write byte to serial
+ bra writeLoop ; branch always to writeLoop
+doneWrite pula ; restore A from the stack
+ rts ; return to caller
+
+;*************************************************************************
+; ReadString subroutine
+;
+; This subroutine will read a string from the serial line to a given address.
+;
+; Input: Address of an array in X
+; Output: Null terminated string in the given array
+; Registers in use: X for the address of the string Y for the length of the string,
+; and A for the current byte
+; Memory locations in use: Memory Address for serial line, address of the string
+;
+; Comments: This subroutine requires serial to be setup and getchar subroutine.
+;
+
+ReadString
+ psha ; Save accumulator A to the stack
+ pshy ; Save Y to the stack
+ pshx ; Save X to the stack
+readLoop jsr getchar ; Jump to putchar to write byte to serial
+ beq readLoop ; While A == 0, loop
+ cmpa #CR ; If A == CR, exit loop
+ beq doneRead ; Branch to doneRead if A == CR
+ cmpa #LF ; If A == LF, exit loop
+ beq doneRead ; Branch to doneRead if A == CR
+ staa 1,x+ ; Save the byte to the addr in X, then add 1
+ jsr putchar ; Write Character back to the terminal
+ dey ; Decrement Y by 1
+ beq doneRead ; If Y == 0, no more room, stop reading
+ bra readLoop ; branch always to readLoop
+doneRead ldaa #LF ; Load Line Feed into A
+ jsr putchar ; Write LF to terminal
+ pulx ; Restore X from the stack
+ pulY ; Restore Y from the stack
+ pula ; restore A from the stack
+ rts ; return to caller
+
+;*************************************************************************
+; putchar subroutine
+;
+; This subroutine writes a single byte to a serial line
+;
+; Input: A single ASCII byte in accumulator A
+; Output: Sends one character to SCI port
+; Registers in use: Accumulator A with input byte
+; Memory locations in use: SCISR1 and SCIDRL status and data registers
+;
+
+putchar brclr SCISR1,#%10000000,putchar ; wait for transmit buffer empty
+ staa SCIDRL ; send a character
+ rts ; Return to caller
+
+;*************************************************************************
+; putchar subroutine
+;
+; This subroutine reads one byte from the SCI port
+;
+; Input: One byte from the SCI port
+; Output: One byte in accumulator A
+; Registers in use: Accumulator A for output byte
+; Memory locations in use: SCISR1 and SCIDRL status and data registers
+;
+
+getchar brclr SCISR1,#%00100000,getchar7 ; If no input on SCI port, return 0
+ ldaa SCIDRL ; Read one byte from SCI port into A
+ rts ; Return to caller
+getchar7 clra ; Set A to 0
+ rts ; Return to caller
+
+*
+**************************************************************************
+* Data Section 2: address used [ $3100 to $3FFF ] RAM Memory
+*
+
+badAddr dc.b 'invalid input, address',CR,LF,NULL ; Error message for bad address
+
+badData dc.b 'invalid input, data',CR,LF,NULL ; Error message for bad data
+
+badCom dc.b 'invalid input, command',CR,LF,NULL ; Error message for bad command
+
+; twMsg: welcome message when type writer loads
+twMsg dc.b 'Welcome to Type Writer, you may type below.',CR,LF
+ dc.b 'Restart to enter main menu again.',CR,LF,NULL
+
+
+; msg: this is the main option menu string
+msg dc.b 'S: Show the contents of memory location in word',CR,LF
+ dc.b 'W: Write the data word (not byte) to memory location',CR,LF
+ dc.b 'MD: Display the contents of continuous memory locations',CR,LF
+ dc.b 'LD: Load a block of data to continuous memory locations',CR,LF
+ dc.b 'GO: Run the program at the specified memory location',CR,LF
+ dc.b 'QUIT: Quit the main program, run Type writer program.',CR,LF,NULL
+
+ end ; last line of the file