<p><b>dwj07@fsu.edu</b> 2012-07-19 14:10:27 -0600 (Thu, 19 Jul 2012)</p><p><br>
        -- TRUNK COMMIT --<br>
<br>
        Adding design document for bit-for-bit reproducibility.<br>
</p><hr noshade><pre><font color="gray">Added: trunk/documents/shared/current_design_doc/bit_reproducibility/Hexagons-NonBR.eps
===================================================================
--- trunk/documents/shared/current_design_doc/bit_reproducibility/Hexagons-NonBR.eps                                (rev 0)
+++ trunk/documents/shared/current_design_doc/bit_reproducibility/Hexagons-NonBR.eps        2012-07-19 20:10:27 UTC (rev 2036)
@@ -0,0 +1,649 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Fri Jul 13 11:09:40 2012
+%%Pages: 1
+%%BoundingBox: 0 -1 347 167
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+      0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+    { globaldict begin /?pdfmark /pop load def /pdfmark
+    /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+  {
+    dup
+    type /stringtype eq
+    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+  } forall
+  currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+      { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+      /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 347 167
+%%EndPageSetup
+q 0 -1 347 168 rectclip q
+Q q
+0 166.253 347 -167 re W n
+q
+0 166.253 346 -166 re W n
+[ 1 0 0 1 0 -0.746857 ] concat
+  q
+Q q
+0.811765 0.886275 0.952941 rg
+19.695 85.746 m 45.48 142.48 l 122.836 142.48 l 148.621 85.746 l 
+122.836 29.012 l 45.48 29.012 l h
+19.695 85.746 m f
+0 g
+1.6 w
+0 J
+1 j
+[] 0.0 d
+10 M q 1 0 0 -1 0 167 cm
+19.695 81.254 m 45.48 24.52 l 122.836 24.52 l 148.621 81.254 l 122.836 
+137.988 l 45.48 137.988 l h
+19.695 81.254 m S Q
+1 0 0 rg
+0.8 w
+q 1 0 0 -1 0 167 cm
+56.793 0.402 54.73 19.477 re S Q
+0 g
+85.672 151.926 m 84.332 151.926 l 84.332 160.441 l 84.016 160.133 
+83.594 159.824 83.07 159.516 c 82.547 159.215 82.074 158.984 81.656 
+158.828 c 81.656 160.129 l 82.406 160.477 83.062 160.902 83.621 161.402 
+c 84.18 161.902 84.574 162.387 84.809 162.852 c 85.672 162.852 l h
+85.672 151.926 m f
+1 0 0 rg
+q 1 0 0 -1 0 167 cm
+0.406 62.816 m 24.242 13.555 l 41.777 22.047 l 17.941 71.309 l h
+0.406 62.816 m S Q
+0 g
+25.895 126.129 m 27.055 125.57 l 23.922 119.098 l 23.629 119.234 23.371 
+119.414 23.156 119.637 c 22.793 120.016 22.484 120.488 22.234 121.059 c 
+21.984 121.633 21.742 122.395 21.508 123.352 c 21.156 124.836 20.812 
+125.891 20.484 126.516 c 20.156 127.137 19.762 127.559 19.305 127.781 c 
+18.832 128.008 18.348 128.031 17.852 127.844 c 17.359 127.668 16.98 
+127.305 16.715 126.758 c 16.434 126.18 16.387 125.629 16.566 125.105 c 
+16.746 124.594 17.141 124.188 17.758 123.891 c 17.035 122.711 l 16.152 
+123.242 15.605 123.898 15.395 124.688 c 15.176 125.48 15.289 126.34 
+15.742 127.27 c 16.195 128.207 16.816 128.824 17.605 129.117 c 18.387 
+129.414 19.168 129.375 19.938 129 c 20.328 128.812 20.676 128.543 
+20.977 128.191 c 21.277 127.852 21.547 127.395 21.785 126.816 c 22.02 
+126.25 22.293 125.355 22.613 124.137 c 22.871 123.121 23.059 122.457 
+23.176 122.141 c 23.285 121.84 23.418 121.566 23.57 121.324 c h
+25.895 126.129 m f
+1 0 0 rg
+q 1 0 0 -1 0 167 cm
+21.344 146.383 m 0.406 95.812 l 18.422 88.355 l 39.359 138.926 l h
+21.344 146.383 m S Q
+0 g
+23.125 47.172 m 22.453 48.34 l 23.098 48.77 23.5 49.215 23.668 49.684 c 
+23.832 50.156 23.816 50.637 23.613 51.121 c 23.371 51.707 22.969 52.117 
+22.402 52.352 c 21.828 52.582 21.246 52.574 20.652 52.332 c 20.09 
+52.098 19.703 51.715 19.488 51.188 c 19.273 50.664 19.281 50.117 19.52 
+49.547 c 19.613 49.316 19.777 49.047 20.016 48.738 c 18.871 48.426 l 
+18.848 48.508 18.824 48.574 18.801 48.629 c 18.586 49.152 18.258 49.566 
+17.816 49.871 c 17.363 50.18 16.852 50.215 16.281 49.98 c 15.828 49.793 
+15.516 49.484 15.352 49.055 c 15.176 48.629 15.188 48.176 15.391 47.688 
+c 15.586 47.211 15.902 46.875 16.336 46.676 c 16.77 46.484 17.309 
+46.469 17.953 46.625 c 18.246 45.301 l 17.355 45.102 16.57 45.176 
+15.895 45.52 c 15.219 45.867 14.715 46.445 14.383 47.246 c 14.156 
+47.793 14.066 48.348 14.113 48.906 c 14.152 49.465 14.328 49.945 14.637 
+50.355 c 14.945 50.77 15.324 51.07 15.777 51.258 c 16.219 51.441 16.66 
+51.488 17.109 51.406 c 17.562 51.32 17.988 51.094 18.395 50.719 c 
+18.277 51.375 18.371 51.953 18.676 52.461 c 18.973 52.969 19.441 53.359 
+20.09 53.625 c 20.965 53.988 21.84 53.977 22.715 53.59 c 23.586 53.203 
+24.227 52.52 24.633 51.543 c 24.996 50.656 25.039 49.812 24.758 49.012 
+c 24.473 48.219 23.93 47.605 23.125 47.172 c h
+23.125 47.172 m f
+0 0 1 rg
+q 1 0 0 -1 0 167 cm
+56.793 146.383 54.73 19.477 re S Q
+0 g
+84.922 5.945 m 84.922 8.547 l 80.195 8.547 l 80.195 9.773 l 85.172 
+16.82 l 86.258 16.82 l 86.258 9.773 l 87.734 9.773 l 87.734 8.547 l 
+86.258 8.547 l 86.258 5.945 l h
+84.922 9.773 m 84.922 14.684 l 81.52 9.773 l h
+84.922 9.773 m f
+1 0 0 rg
+q 1 0 0 -1 0 167 cm
+147.285 19.879 m 169.762 69.77 l 151.996 77.758 l 129.523 27.867 l h
+147.285 19.879 m S Q
+0 g
+154.035 116.414 m 153.398 117.582 l 153.832 117.906 154.105 118.215 
+154.227 118.516 c 154.43 119 154.422 119.48 154.207 119.961 c 154.027 
+120.355 153.77 120.648 153.426 120.844 c 152.969 121.105 152.422 
+121.223 151.785 121.199 c 151.152 121.184 150.336 120.953 149.34 
+120.512 c 149.922 120.418 150.41 120.211 150.812 119.887 c 151.227 
+119.559 151.535 119.164 151.746 118.703 c 152.109 117.891 152.121 
+117.062 151.777 116.223 c 151.434 115.383 150.793 114.75 149.848 
+114.328 c 149.227 114.047 148.586 113.918 147.926 113.941 c 147.273 
+113.969 146.695 114.152 146.195 114.492 c 145.703 114.84 145.32 115.309 
+145.055 115.898 c 144.598 116.918 144.594 117.914 145.055 118.887 c 
+145.52 119.863 146.605 120.734 148.316 121.504 c 150.238 122.371 
+151.793 122.645 152.977 122.328 c 154.016 122.051 154.77 121.391 
+155.242 120.344 c 155.594 119.559 155.66 118.824 155.441 118.133 c 
+155.234 117.434 154.766 116.863 154.035 116.414 c h
+147.523 119.461 m 147.105 119.273 146.742 119.008 146.43 118.656 c 
+146.133 118.305 145.953 117.922 145.891 117.512 c 145.84 117.102 
+145.891 116.723 146.047 116.375 c 146.281 115.855 146.684 115.508 
+147.258 115.328 c 147.844 115.145 148.496 115.211 149.211 115.535 c 
+149.895 115.84 150.352 116.266 150.582 116.809 c 150.812 117.352 
+150.805 117.898 150.555 118.453 c 150.309 119 149.898 119.379 149.328 
+119.59 c 148.762 119.793 148.16 119.75 147.523 119.461 c h
+147.523 119.461 m f
+1 0 0 rg
+q 1 0 0 -1 0 167 cm
+170.074 96.719 m 146.844 146.281 l 129.207 138.02 l 152.438 88.457 l h
+170.074 96.719 m S Q
+0 g
+149.254 53.707 m 148.766 52.375 l 148.105 52.574 147.535 52.578 147.062 
+52.387 c 146.59 52.184 146.238 51.844 146.012 51.359 c 145.742 50.777 
+145.73 50.184 145.98 49.578 c 146.227 48.969 146.715 48.488 147.449 
+48.148 c 148.133 47.824 148.77 47.766 149.355 47.973 c 149.934 48.168 
+150.371 48.582 150.664 49.207 c 150.844 49.594 150.918 49.984 150.887 
+50.387 c 150.859 50.777 150.742 51.129 150.539 51.445 c 151.223 52.52 l 
+155.844 49.184 l 153.547 44.281 l 152.379 44.828 l 154.227 48.766 l 
+151.84 50.535 l 151.969 49.746 151.879 49.027 151.574 48.379 c 151.172 
+47.52 150.535 46.934 149.66 46.625 c 148.785 46.309 147.879 46.371 
+146.945 46.809 c 146.055 47.227 145.406 47.848 145 48.672 c 144.5 49.68 
+144.504 50.73 145.016 51.824 c 145.438 52.723 146.031 53.34 146.793 
+53.672 c 147.562 54 148.383 54.012 149.254 53.707 c h
+149.254 53.707 m f
+0.811765 0.886275 0.952941 rg
+195.625 85.746 m 221.41 142.48 l 298.766 142.48 l 324.551 85.746 l 
+298.766 29.012 l 221.41 29.012 l h
+195.625 85.746 m f
+0 g
+1.6 w
+q 1 0 0 -1 0 167 cm
+195.625 81.254 m 221.41 24.52 l 298.766 24.52 l 324.551 81.254 l 
+298.766 137.988 l 221.41 137.988 l h
+195.625 81.254 m S Q
+0 0 1 rg
+0.8 w
+q 1 0 0 -1 0 167 cm
+232.723 0.402 54.73 19.477 re S Q
+0 g
+261.602 151.926 m 260.262 151.926 l 260.262 160.441 l 259.945 160.133 
+259.523 159.824 259 159.516 c 258.477 159.215 258.004 158.984 257.586 
+158.828 c 257.586 160.129 l 258.336 160.477 258.992 160.902 259.551 
+161.402 c 260.109 161.902 260.504 162.387 260.738 162.852 c 261.602 
+162.852 l h
+261.602 151.926 m f
+0 0 1 rg
+q 1 0 0 -1 0 167 cm
+176.336 62.816 m 200.172 13.555 l 217.707 22.047 l 193.871 71.309 l h
+176.336 62.816 m S Q
+0 g
+201.824 126.129 m 202.984 125.57 l 199.852 119.098 l 199.555 119.234 
+199.301 119.414 199.086 119.637 c 198.723 120.016 198.414 120.488 
+198.16 121.059 c 197.91 121.633 197.672 122.395 197.438 123.352 c 
+197.086 124.836 196.742 125.891 196.414 126.516 c 196.086 127.137 
+195.691 127.559 195.234 127.781 c 194.762 128.008 194.277 128.031 
+193.781 127.844 c 193.289 127.668 192.906 127.305 192.645 126.758 c 
+192.363 126.18 192.316 125.629 192.496 125.105 c 192.676 124.594 193.07 
+124.188 193.688 123.891 c 192.965 122.711 l 192.082 123.242 191.535 
+123.898 191.324 124.688 c 191.105 125.48 191.219 126.34 191.668 127.27 
+c 192.125 128.207 192.746 128.824 193.535 129.117 c 194.316 129.414 
+195.094 129.375 195.867 129 c 196.258 128.812 196.605 128.543 196.906 
+128.191 c 197.207 127.852 197.473 127.395 197.711 126.816 c 197.949 
+126.25 198.223 125.355 198.543 124.137 c 198.801 123.121 198.988 
+122.457 199.102 122.141 c 199.215 121.84 199.348 121.566 199.5 121.324 
+c h
+201.824 126.129 m f
+0 0 1 rg
+q 1 0 0 -1 0 167 cm
+197.273 146.383 m 176.336 95.812 l 194.352 88.355 l 215.289 138.926 l h
+197.273 146.383 m S Q
+0 g
+199.055 47.172 m 198.383 48.34 l 199.023 48.77 199.43 49.215 199.598 
+49.684 c 199.762 50.156 199.746 50.637 199.543 51.121 c 199.301 51.707 
+198.898 52.117 198.332 52.352 c 197.758 52.582 197.172 52.574 196.582 
+52.332 c 196.02 52.098 195.633 51.715 195.418 51.188 c 195.199 50.664 
+195.211 50.117 195.445 49.547 c 195.543 49.316 195.707 49.047 195.945 
+48.738 c 194.801 48.426 l 194.777 48.508 194.754 48.574 194.73 48.629 c 
+194.516 49.152 194.184 49.566 193.742 49.871 c 193.293 50.18 192.781 
+50.215 192.211 49.98 c 191.758 49.793 191.445 49.484 191.281 49.055 c 
+191.105 48.629 191.117 48.176 191.32 47.688 c 191.516 47.211 191.832 
+46.875 192.266 46.676 c 192.695 46.484 193.234 46.469 193.883 46.625 c 
+194.176 45.301 l 193.281 45.102 192.5 45.176 191.824 45.52 c 191.148 
+45.867 190.645 46.445 190.312 47.246 c 190.086 47.793 189.996 48.348 
+190.043 48.906 c 190.082 49.465 190.258 49.945 190.566 50.355 c 190.871 
+50.77 191.254 51.07 191.707 51.258 c 192.145 51.441 192.59 51.488 
+193.039 51.406 c 193.488 51.32 193.918 51.094 194.324 50.719 c 194.207 
+51.375 194.301 51.953 194.605 52.461 c 194.898 52.969 195.371 53.359 
+196.016 53.625 c 196.895 53.988 197.77 53.977 198.645 53.59 c 199.516 
+53.203 200.156 52.52 200.559 51.543 c 200.926 50.656 200.969 49.812 
+200.688 49.012 c 200.402 48.219 199.859 47.605 199.055 47.172 c h
+199.055 47.172 m f
+1 0 0 rg
+q 1 0 0 -1 0 167 cm
+232.723 146.383 54.73 19.477 re S Q
+0 g
+260.852 5.945 m 260.852 8.547 l 256.125 8.547 l 256.125 9.773 l 261.102 
+16.82 l 262.188 16.82 l 262.188 9.773 l 263.664 9.773 l 263.664 8.547 l 
+262.188 8.547 l 262.188 5.945 l h
+260.852 9.773 m 260.852 14.684 l 257.449 9.773 l h
+260.852 9.773 m f
+0 0 1 rg
+q 1 0 0 -1 0 167 cm
+323.215 19.879 m 345.691 69.77 l 327.926 77.758 l 305.449 27.867 l h
+323.215 19.879 m S Q
+0 g
+329.965 116.414 m 329.328 117.582 l 329.762 117.906 330.035 118.215 
+330.156 118.516 c 330.359 119 330.352 119.48 330.137 119.961 c 329.957 
+120.355 329.699 120.648 329.355 120.844 c 328.898 121.105 328.352 
+121.223 327.715 121.199 c 327.082 121.184 326.266 120.953 325.266 
+120.512 c 325.848 120.418 326.34 120.211 326.742 119.887 c 327.152 
+119.559 327.465 119.164 327.672 118.703 c 328.039 117.891 328.051 
+117.062 327.707 116.223 c 327.363 115.383 326.719 114.75 325.777 
+114.328 c 325.156 114.047 324.512 113.918 323.855 113.941 c 323.203 
+113.969 322.625 114.152 322.125 114.492 c 321.633 114.84 321.25 115.309 
+320.984 115.898 c 320.523 116.918 320.523 117.914 320.98 118.887 c 
+321.445 119.863 322.535 120.734 324.246 121.504 c 326.168 122.371 
+327.723 122.645 328.906 122.328 c 329.941 122.051 330.699 121.391 
+331.172 120.344 c 331.523 119.559 331.59 118.824 331.371 118.133 c 
+331.164 117.434 330.695 116.863 329.965 116.414 c h
+323.449 119.461 m 323.031 119.273 322.668 119.008 322.359 118.656 c 
+322.062 118.305 321.883 117.922 321.82 117.512 c 321.77 117.102 321.82 
+116.723 321.977 116.375 c 322.211 115.855 322.613 115.508 323.188 
+115.328 c 323.773 115.145 324.426 115.211 325.137 115.535 c 325.824 
+115.84 326.281 116.266 326.512 116.809 c 326.742 117.352 326.73 117.898 
+326.48 118.453 c 326.234 119 325.828 119.379 325.258 119.59 c 324.691 
+119.793 324.09 119.75 323.449 119.461 c h
+323.449 119.461 m f
+0 0 1 rg
+q 1 0 0 -1 0 167 cm
+346.004 96.719 m 322.773 146.281 l 305.137 138.02 l 328.367 88.457 l h
+346.004 96.719 m S Q
+0 g
+325.184 53.707 m 324.695 52.375 l 324.035 52.574 323.465 52.578 322.988 
+52.387 c 322.52 52.184 322.168 51.844 321.941 51.359 c 321.668 50.777 
+321.66 50.184 321.91 49.578 c 322.156 48.969 322.645 48.488 323.375 
+48.148 c 324.062 47.824 324.699 47.766 325.281 47.973 c 325.863 48.168 
+326.301 48.582 326.594 49.207 c 326.773 49.594 326.848 49.984 326.816 
+50.387 c 326.785 50.777 326.672 51.129 326.469 51.445 c 327.152 52.52 l 
+331.773 49.184 l 329.477 44.281 l 328.309 44.828 l 330.156 48.766 l 
+327.77 50.535 l 327.895 49.746 327.809 49.027 327.504 48.379 c 327.102 
+47.52 326.461 46.934 325.59 46.625 c 324.715 46.309 323.809 46.371 
+322.875 46.809 c 321.984 47.227 321.336 47.848 320.93 48.672 c 320.43 
+49.68 320.434 50.73 320.945 51.824 c 321.367 52.723 321.961 53.34 
+322.723 53.672 c 323.492 54 324.312 54.012 325.184 53.707 c h
+325.184 53.707 m f
+70.312 90.859 m 71.75 90.496 l 71.453 89.312 70.91 88.41 70.125 87.785 
+c 69.344 87.168 68.387 86.859 67.25 86.859 c 66.078 86.859 65.121 
+87.098 64.391 87.57 c 63.656 88.055 63.098 88.746 62.715 89.648 c 
+62.332 90.555 62.141 91.531 62.141 92.57 c 62.141 93.707 62.352 94.691 
+62.777 95.535 c 63.211 96.375 63.828 97.012 64.625 97.445 c 65.426 
+97.887 66.305 98.109 67.266 98.109 c 68.355 98.109 69.273 97.832 70.016 
+97.273 c 70.754 96.723 71.273 95.945 71.562 94.945 c 70.152 94.609 l 
+69.902 95.402 69.535 95.977 69.051 96.336 c 68.566 96.699 67.965 96.883 
+67.238 96.883 c 66.406 96.883 65.707 96.684 65.141 96.285 c 64.582 
+95.883 64.184 95.344 63.953 94.66 c 63.727 93.984 63.613 93.289 63.613 
+92.57 c 63.613 91.648 63.746 90.84 64.016 90.148 c 64.289 89.465 64.711 
+88.949 65.277 88.609 c 65.852 88.27 66.469 88.098 67.125 88.098 c 
+67.934 88.098 68.617 88.324 69.176 88.785 c 69.734 89.25 70.113 89.941 
+70.312 90.859 c h
+78.555 89.586 m 79.93 89.41 l 79.715 88.609 79.309 87.984 78.719 87.535 
+c 78.133 87.094 77.383 86.871 76.469 86.871 c 75.316 86.871 74.406 
+87.227 73.73 87.934 c 73.055 88.645 72.719 89.637 72.719 90.922 c 
+72.719 92.246 73.055 93.277 73.73 94.008 c 74.414 94.742 75.301 95.109 
+76.391 95.109 c 77.449 95.109 78.312 94.75 78.98 94.035 c 79.648 93.316 
+79.98 92.305 79.98 90.996 c 79.98 90.922 79.977 90.805 79.969 90.648 c 
+74.094 90.648 l 74.141 89.781 74.387 89.117 74.828 88.66 c 75.273 
+88.199 75.82 87.973 76.48 87.973 c 76.965 87.973 77.375 88.098 77.719 
+88.348 c 78.066 88.605 78.348 89.02 78.555 89.586 c h
+74.168 91.746 m 78.566 91.746 l 78.508 92.406 78.344 92.902 78.066 
+93.234 c 77.641 93.75 77.09 94.008 76.406 94.008 c 75.797 94.008 75.281 
+93.801 74.855 93.383 c 74.438 92.977 74.211 92.43 74.168 91.746 c h
+81.43 87.047 m 81.43 97.922 l 82.77 97.922 l 82.77 87.047 l h
+84.746 87.047 m 84.746 97.922 l 86.082 97.922 l 86.082 87.047 l h
+96.895 87.047 m 95.559 87.047 l 95.559 95.559 l 95.242 95.25 94.82 
+94.941 94.297 94.633 c 93.77 94.336 93.301 94.105 92.883 93.945 c 
+92.883 95.246 l 93.633 95.598 94.289 96.023 94.848 96.523 c 95.406 
+97.023 95.801 97.504 96.035 97.973 c 96.895 97.973 l h
+96.895 87.047 m f
+41.816 69.883 m 41.816 80.758 l 45.914 80.758 l 46.641 80.758 47.195 
+80.727 47.578 80.66 c 48.109 80.566 48.555 80.398 48.914 80.148 c 
+49.273 79.898 49.559 79.547 49.777 79.098 c 50.004 78.648 50.113 78.156 
+50.113 77.621 c 50.113 76.695 49.82 75.914 49.227 75.273 c 48.645 
+74.629 47.582 74.309 46.039 74.309 c 43.254 74.309 l 43.254 69.883 l h
+43.254 75.598 m 46.066 75.598 l 46.996 75.598 47.656 75.77 48.039 
+76.109 c 48.43 76.461 48.629 76.945 48.629 77.57 c 48.629 78.031 48.512 
+78.422 48.277 78.746 c 48.051 79.07 47.754 79.285 47.379 79.383 c 
+47.137 79.449 46.691 79.484 46.039 79.484 c 43.254 79.484 l h
+51.582 69.883 m 51.582 77.773 l 52.781 77.773 l 52.781 76.57 l 53.09 
+77.129 53.375 77.496 53.633 77.672 c 53.891 77.855 54.18 77.945 54.496 
+77.945 c 54.945 77.945 55.402 77.801 55.871 77.508 c 55.406 76.273 l 
+55.082 76.465 54.754 76.559 54.418 76.559 c 54.129 76.559 53.867 76.473 
+53.633 76.297 c 53.406 76.121 53.246 75.879 53.145 75.57 c 52.996 
+75.098 52.918 74.574 52.918 74.008 c 52.918 69.883 l h
+56.066 73.82 m 56.066 75.281 56.473 76.363 57.289 77.07 c 57.965 77.656 
+58.789 77.945 59.766 77.945 c 60.848 77.945 61.73 77.59 62.414 76.871 c 
+63.105 76.164 63.453 75.184 63.453 73.934 c 63.453 72.918 63.297 72.117 
+62.988 71.535 c 62.691 70.961 62.246 70.508 61.664 70.184 c 61.09 
+69.867 60.457 69.711 59.766 69.711 c 58.664 69.711 57.773 70.062 57.09 
+70.773 c 56.406 71.48 56.066 72.496 56.066 73.82 c h
+57.441 73.82 m 57.441 72.812 57.66 72.059 58.102 71.559 c 58.543 71.059 
+59.098 70.809 59.766 70.809 c 60.43 70.809 60.98 71.059 61.414 71.559 c 
+61.855 72.066 62.078 72.84 62.078 73.871 c 62.078 74.848 61.855 75.586 
+61.414 76.086 c 60.973 76.586 60.422 76.836 59.766 76.836 c 59.098 
+76.836 58.543 76.586 58.102 76.086 c 57.66 75.586 57.441 74.832 57.441 
+73.82 c h
+70.016 72.773 m 71.328 72.598 l 71.188 71.695 70.82 70.988 70.227 
+70.473 c 69.637 69.965 68.906 69.711 68.039 69.711 c 66.965 69.711 
+66.098 70.059 65.441 70.758 c 64.789 71.469 64.465 72.48 64.465 73.797 
+c 64.465 74.648 64.602 75.387 64.879 76.023 c 65.16 76.664 65.59 77.145 
+66.164 77.461 c 66.75 77.785 67.379 77.945 68.055 77.945 c 68.91 77.945 
+69.609 77.73 70.152 77.297 c 70.695 76.863 71.043 76.246 71.203 75.445 
+c 69.902 75.246 l 69.777 75.781 69.559 76.18 69.242 76.445 c 68.922 
+76.715 68.543 76.848 68.102 76.848 c 67.43 76.848 66.879 76.605 66.453 
+76.121 c 66.035 75.637 65.828 74.875 65.828 73.836 c 65.828 72.777 
+66.031 72.004 66.441 71.523 c 66.848 71.047 67.379 70.809 68.027 70.809 
+c 68.555 70.809 68.992 70.969 69.34 71.285 c 69.691 71.609 69.914 
+72.105 70.016 72.773 c h
+77.727 72.422 m 79.102 72.246 l 78.887 71.445 78.48 70.82 77.891 70.371 
+c 77.309 69.93 76.559 69.711 75.641 69.711 c 74.492 69.711 73.578 
+70.062 72.902 70.773 c 72.227 71.48 71.891 72.477 71.891 73.758 c 
+71.891 75.086 72.227 76.113 72.902 76.848 c 73.586 77.582 74.473 77.945 
+75.566 77.945 c 76.625 77.945 77.484 77.59 78.152 76.871 c 78.82 76.156 
+79.152 75.145 79.152 73.836 c 79.152 73.758 79.148 73.645 79.141 73.484 
+c 73.266 73.484 l 73.316 72.617 73.562 71.957 74.004 71.496 c 74.445 
+71.039 74.996 70.809 75.652 70.809 c 76.137 70.809 76.547 70.934 76.891 
+71.184 c 77.242 71.441 77.52 71.855 77.727 72.422 c h
+73.34 74.586 m 77.742 74.586 l 77.684 75.242 77.516 75.738 77.242 76.07 
+c 76.816 76.59 76.262 76.848 75.578 76.848 c 74.969 76.848 74.453 
+76.637 74.027 76.223 c 73.609 75.812 73.383 75.27 73.34 74.586 c h
+80.09 72.234 m 81.414 72.445 l 81.492 71.914 81.695 71.504 82.027 
+71.223 c 82.371 70.945 82.844 70.809 83.453 70.809 c 84.07 70.809 
+84.523 70.934 84.816 71.184 c 85.117 71.434 85.266 71.727 85.266 72.059 
+c 85.266 72.359 85.137 72.598 84.879 72.773 c 84.695 72.887 84.242 
+73.039 83.516 73.223 c 82.531 73.473 81.848 73.684 81.465 73.859 c 
+81.09 74.043 80.805 74.293 80.602 74.609 c 80.41 74.934 80.316 75.289 
+80.316 75.672 c 80.316 76.023 80.395 76.348 80.555 76.648 c 80.719 
+76.945 80.941 77.195 81.215 77.398 c 81.426 77.547 81.707 77.676 82.066 
+77.785 c 82.426 77.895 82.809 77.945 83.215 77.945 c 83.84 77.945 
+84.387 77.855 84.852 77.672 c 85.32 77.496 85.66 77.254 85.879 76.945 c 
+86.102 76.648 86.258 76.242 86.34 75.734 c 85.039 75.559 l 84.984 
+75.961 84.809 76.273 84.516 76.496 c 84.234 76.73 83.832 76.848 83.316 
+76.848 c 82.699 76.848 82.262 76.742 82.004 76.535 c 81.746 76.336 
+81.617 76.102 81.617 75.836 c 81.617 75.66 81.672 75.5 81.777 75.359 c 
+81.887 75.219 82.059 75.102 82.289 75.008 c 82.426 74.961 82.816 74.844 
+83.465 74.66 c 84.406 74.41 85.066 74.207 85.441 74.047 c 85.816 73.887 
+86.109 73.656 86.316 73.348 c 86.531 73.039 86.641 72.656 86.641 72.195 
+c 86.641 71.754 86.512 71.336 86.254 70.934 c 85.996 70.543 85.621 
+70.238 85.129 70.023 c 84.637 69.812 84.082 69.711 83.465 69.711 c 
+82.441 69.711 81.656 69.922 81.117 70.348 c 80.582 70.773 80.242 71.402 
+80.09 72.234 c h
+87.555 72.234 m 88.879 72.445 l 88.953 71.914 89.156 71.504 89.492 
+71.223 c 89.832 70.945 90.309 70.809 90.914 70.809 c 91.531 70.809 
+91.988 70.934 92.277 71.184 c 92.578 71.434 92.727 71.727 92.727 72.059 
+c 92.727 72.359 92.598 72.598 92.34 72.773 c 92.156 72.887 91.703 
+73.039 90.977 73.223 c 89.996 73.473 89.312 73.684 88.93 73.859 c 
+88.555 74.043 88.266 74.293 88.066 74.609 c 87.875 74.934 87.777 75.289 
+87.777 75.672 c 87.777 76.023 87.859 76.348 88.016 76.648 c 88.184 
+76.945 88.402 77.195 88.68 77.398 c 88.887 77.547 89.172 77.676 89.527 
+77.785 c 89.887 77.895 90.27 77.945 90.68 77.945 c 91.305 77.945 91.848 
+77.855 92.316 77.672 c 92.781 77.496 93.125 77.254 93.34 76.945 c 
+93.566 76.648 93.719 76.242 93.805 75.734 c 92.504 75.559 l 92.445 
+75.961 92.27 76.273 91.977 76.496 c 91.695 76.73 91.297 76.848 90.777 
+76.848 c 90.16 76.848 89.723 76.742 89.465 76.535 c 89.207 76.336 
+89.078 76.102 89.078 75.836 c 89.078 75.66 89.133 75.5 89.242 75.359 c 
+89.348 75.219 89.52 75.102 89.754 75.008 c 89.887 74.961 90.277 74.844 
+90.93 74.66 c 91.871 74.41 92.527 74.207 92.902 74.047 c 93.277 73.887 
+93.57 73.656 93.777 73.348 c 93.996 73.039 94.102 72.656 94.102 72.195 
+c 94.102 71.754 93.973 71.336 93.715 70.934 c 93.457 70.543 93.082 
+70.238 92.59 70.023 c 92.098 69.812 91.547 69.711 90.93 69.711 c 89.902 
+69.711 89.121 69.922 88.578 70.348 c 88.047 70.773 87.703 71.402 87.555 
+72.234 c h
+95.055 73.82 m 95.055 75.281 95.461 76.363 96.277 77.07 c 96.953 77.656 
+97.777 77.945 98.754 77.945 c 99.836 77.945 100.719 77.59 101.402 
+76.871 c 102.094 76.164 102.441 75.184 102.441 73.934 c 102.441 72.918 
+102.285 72.117 101.977 71.535 c 101.68 70.961 101.238 70.508 100.652 
+70.184 c 100.078 69.867 99.445 69.711 98.754 69.711 c 97.652 69.711 
+96.762 70.062 96.078 70.773 c 95.395 71.48 95.055 72.496 95.055 73.82 c 
+h
+96.43 73.82 m 96.43 72.812 96.648 72.059 97.09 71.559 c 97.531 71.059 
+98.086 70.809 98.754 70.809 c 99.422 70.809 99.969 71.059 100.402 
+71.559 c 100.844 72.066 101.066 72.84 101.066 73.871 c 101.066 74.848 
+100.844 75.586 100.402 76.086 c 99.961 76.586 99.41 76.836 98.754 
+76.836 c 98.086 76.836 97.531 76.586 97.09 76.086 c 96.648 75.586 96.43 
+74.832 96.43 73.82 c h
+103.84 69.883 m 103.84 77.773 l 105.043 77.773 l 105.043 76.57 l 
+105.352 77.129 105.633 77.496 105.891 77.672 c 106.148 77.855 106.438 
+77.945 106.754 77.945 c 107.203 77.945 107.664 77.801 108.129 77.508 c 
+107.668 76.273 l 107.34 76.465 107.012 76.559 106.68 76.559 c 106.387 
+76.559 106.125 76.473 105.891 76.297 c 105.668 76.121 105.504 75.879 
+105.402 75.57 c 105.254 75.098 105.18 74.574 105.18 74.008 c 105.18 
+69.883 l h
+112.594 75.246 m 112.594 76.539 112.73 77.574 112.996 78.359 c 113.262 
+79.145 113.652 79.746 114.172 80.172 c 114.695 80.598 115.355 80.809 
+116.145 80.809 c 116.73 80.809 117.242 80.691 117.684 80.461 c 118.125 
+80.227 118.488 79.883 118.77 79.434 c 119.062 78.992 119.289 78.457 
+119.445 77.82 c 119.613 77.188 119.695 76.332 119.695 75.246 c 119.695 
+73.973 119.562 72.941 119.297 72.16 c 119.039 71.375 118.645 70.77 
+118.121 70.336 c 117.605 69.91 116.945 69.695 116.145 69.695 c 115.094 
+69.695 114.273 70.07 113.684 70.82 c 112.957 71.73 112.594 73.207 
+112.594 75.246 c h
+113.969 75.246 m 113.969 73.465 114.18 72.277 114.594 71.684 c 115.02 
+71.094 115.539 70.797 116.145 70.797 c 116.762 70.797 117.277 71.094 
+117.695 71.684 c 118.113 72.285 118.32 73.473 118.32 75.246 c 118.32 
+77.039 118.113 78.23 117.695 78.82 c 117.277 79.414 116.758 79.711 
+116.133 79.711 c 115.516 79.711 115.027 79.445 114.672 78.922 c 114.203 
+78.262 113.969 77.039 113.969 75.246 c h
+113.969 75.246 m f
+249.516 90.859 m 250.953 90.496 l 250.652 89.312 250.109 88.41 249.328 
+87.785 c 248.543 87.168 247.586 86.859 246.453 86.859 c 245.277 86.859 
+244.324 87.098 243.59 87.57 c 242.855 88.055 242.297 88.746 241.914 
+89.648 c 241.531 90.555 241.34 91.531 241.34 92.57 c 241.34 93.707 
+241.551 94.691 241.977 95.535 c 242.41 96.375 243.027 97.012 243.828 
+97.445 c 244.625 97.887 245.504 98.109 246.465 98.109 c 247.555 98.109 
+248.473 97.832 249.215 97.273 c 249.957 96.723 250.473 95.945 250.766 
+94.945 c 249.352 94.609 l 249.102 95.402 248.734 95.977 248.25 96.336 c 
+247.77 96.699 247.164 96.883 246.438 96.883 c 245.605 96.883 244.906 
+96.684 244.34 96.285 c 243.781 95.883 243.387 95.344 243.152 94.66 c 
+242.926 93.984 242.812 93.289 242.812 92.57 c 242.812 91.648 242.949 
+90.84 243.215 90.148 c 243.488 89.465 243.91 88.949 244.477 88.609 c 
+245.051 88.27 245.668 88.098 246.328 88.098 c 247.137 88.098 247.816 
+88.324 248.375 88.785 c 248.934 89.25 249.312 89.941 249.516 90.859 c h
+257.754 89.586 m 259.129 89.41 l 258.914 88.609 258.508 87.984 257.918 
+87.535 c 257.336 87.094 256.586 86.871 255.668 86.871 c 254.516 86.871 
+253.605 87.227 252.93 87.934 c 252.254 88.645 251.918 89.637 251.918 
+90.922 c 251.918 92.246 252.254 93.277 252.93 94.008 c 253.613 94.742 
+254.5 95.109 255.594 95.109 c 256.652 95.109 257.512 94.75 258.18 
+94.035 c 258.848 93.316 259.18 92.305 259.18 90.996 c 259.18 90.922 
+259.176 90.805 259.168 90.648 c 253.293 90.648 l 253.344 89.781 253.59 
+89.117 254.031 88.66 c 254.473 88.199 255.023 87.973 255.68 87.973 c 
+256.164 87.973 256.574 88.098 256.918 88.348 c 257.266 88.605 257.547 
+89.02 257.754 89.586 c h
+253.367 91.746 m 257.766 91.746 l 257.711 92.406 257.543 92.902 257.266 
+93.234 c 256.844 93.75 256.289 94.008 255.605 94.008 c 254.996 94.008 
+254.48 93.801 254.055 93.383 c 253.637 92.977 253.41 92.43 253.367 
+91.746 c h
+260.629 87.047 m 260.629 97.922 l 261.969 97.922 l 261.969 87.047 l h
+263.945 87.047 m 263.945 97.922 l 265.285 97.922 l 265.285 87.047 l h
+276.098 87.047 m 274.758 87.047 l 274.758 95.559 l 274.441 95.25 274.02 
+94.941 273.496 94.633 c 272.973 94.336 272.5 94.105 272.082 93.945 c 
+272.082 95.246 l 272.832 95.598 273.488 96.023 274.047 96.523 c 274.605 
+97.023 275 97.504 275.234 97.973 c 276.098 97.973 l h
+276.098 87.047 m f
+221.016 69.883 m 221.016 80.758 l 225.113 80.758 l 225.84 80.758 
+226.395 80.727 226.777 80.66 c 227.309 80.566 227.758 80.398 228.113 
+80.148 c 228.473 79.898 228.762 79.547 228.977 79.098 c 229.203 78.648 
+229.316 78.156 229.316 77.621 c 229.316 76.695 229.02 75.914 228.426 
+75.273 c 227.844 74.629 226.781 74.309 225.238 74.309 c 222.453 74.309 
+l 222.453 69.883 l h
+222.453 75.598 m 225.266 75.598 l 226.199 75.598 226.855 75.77 227.238 
+76.109 c 227.633 76.461 227.828 76.945 227.828 77.57 c 227.828 78.031 
+227.711 78.422 227.477 78.746 c 227.254 79.07 226.953 79.285 226.578 
+79.383 c 226.336 79.449 225.891 79.484 225.238 79.484 c 222.453 79.484 
+l h
+230.781 69.883 m 230.781 77.773 l 231.98 77.773 l 231.98 76.57 l 
+232.289 77.129 232.574 77.496 232.832 77.672 c 233.09 77.855 233.379 
+77.945 233.695 77.945 c 234.145 77.945 234.602 77.801 235.07 77.508 c 
+234.605 76.273 l 234.281 76.465 233.953 76.559 233.621 76.559 c 233.328 
+76.559 233.066 76.473 232.832 76.297 c 232.605 76.121 232.445 75.879 
+232.344 75.57 c 232.195 75.098 232.121 74.574 232.121 74.008 c 232.121 
+69.883 l h
+235.266 73.82 m 235.266 75.281 235.672 76.363 236.488 77.07 c 237.164 
+77.656 237.988 77.945 238.965 77.945 c 240.047 77.945 240.93 77.59 
+241.613 76.871 c 242.305 76.164 242.652 75.184 242.652 73.934 c 242.652 
+72.918 242.496 72.117 242.191 71.535 c 241.891 70.961 241.449 70.508 
+240.863 70.184 c 240.289 69.867 239.656 69.711 238.965 69.711 c 237.863 
+69.711 236.973 70.062 236.289 70.773 c 235.605 71.48 235.266 72.496 
+235.266 73.82 c h
+236.641 73.82 m 236.641 72.812 236.859 72.059 237.301 71.559 c 237.742 
+71.059 238.297 70.809 238.965 70.809 c 239.633 70.809 240.18 71.059 
+240.613 71.559 c 241.055 72.066 241.277 72.84 241.277 73.871 c 241.277 
+74.848 241.055 75.586 240.613 76.086 c 240.172 76.586 239.621 76.836 
+238.965 76.836 c 238.297 76.836 237.742 76.586 237.301 76.086 c 236.859 
+75.586 236.641 74.832 236.641 73.82 c h
+249.215 72.773 m 250.527 72.598 l 250.387 71.695 250.02 70.988 249.426 
+70.473 c 248.836 69.965 248.105 69.711 247.238 69.711 c 246.164 69.711 
+245.297 70.059 244.641 70.758 c 243.988 71.469 243.664 72.48 243.664 
+73.797 c 243.664 74.648 243.801 75.387 244.078 76.023 c 244.359 76.664 
+244.789 77.145 245.363 77.461 c 245.949 77.785 246.578 77.945 247.254 
+77.945 c 248.109 77.945 248.812 77.73 249.352 77.297 c 249.895 76.863 
+250.246 76.246 250.402 75.445 c 249.102 75.246 l 248.977 75.781 248.758 
+76.18 248.441 76.445 c 248.125 76.715 247.746 76.848 247.301 76.848 c 
+246.629 76.848 246.078 76.605 245.652 76.121 c 245.234 75.637 245.027 
+74.875 245.027 73.836 c 245.027 72.777 245.23 72.004 245.641 71.523 c 
+246.047 71.047 246.578 70.809 247.227 70.809 c 247.754 70.809 248.191 
+70.969 248.539 71.285 c 248.891 71.609 249.113 72.105 249.215 72.773 c 
+h
+256.926 72.422 m 258.301 72.246 l 258.086 71.445 257.684 70.82 257.09 
+70.371 c 256.508 69.93 255.758 69.711 254.84 69.711 c 253.691 69.711 
+252.777 70.062 252.102 70.773 c 251.426 71.48 251.09 72.477 251.09 
+73.758 c 251.09 75.086 251.426 76.113 252.102 76.848 c 252.785 77.582 
+253.672 77.945 254.766 77.945 c 255.824 77.945 256.688 77.59 257.352 
+76.871 c 258.02 76.156 258.352 75.145 258.352 73.836 c 258.352 73.758 
+258.348 73.645 258.34 73.484 c 252.465 73.484 l 252.516 72.617 252.762 
+71.957 253.203 71.496 c 253.645 71.039 254.195 70.809 254.852 70.809 c 
+255.336 70.809 255.75 70.934 256.09 71.184 c 256.441 71.441 256.719 
+71.855 256.926 72.422 c h
+252.539 74.586 m 256.941 74.586 l 256.883 75.242 256.715 75.738 256.441 
+76.07 c 256.016 76.59 255.461 76.848 254.777 76.848 c 254.168 76.848 
+253.652 76.637 253.227 76.223 c 252.812 75.812 252.582 75.27 252.539 
+74.586 c h
+259.289 72.234 m 260.617 72.445 l 260.691 71.914 260.895 71.504 261.227 
+71.223 c 261.57 70.945 262.047 70.809 262.652 70.809 c 263.27 70.809 
+263.723 70.934 264.016 71.184 c 264.316 71.434 264.465 71.727 264.465 
+72.059 c 264.465 72.359 264.336 72.598 264.078 72.773 c 263.895 72.887 
+263.441 73.039 262.715 73.223 c 261.734 73.473 261.051 73.684 260.664 
+73.859 c 260.289 74.043 260.004 74.293 259.805 74.609 c 259.613 74.934 
+259.516 75.289 259.516 75.672 c 259.516 76.023 259.594 76.348 259.754 
+76.648 c 259.922 76.945 260.141 77.195 260.414 77.398 c 260.625 77.547 
+260.906 77.676 261.266 77.785 c 261.625 77.895 262.008 77.945 262.414 
+77.945 c 263.039 77.945 263.586 77.855 264.055 77.672 c 264.52 77.496 
+264.863 77.254 265.078 76.945 c 265.305 76.648 265.457 76.242 265.539 
+75.734 c 264.242 75.559 l 264.184 75.961 264.008 76.273 263.715 76.496 
+c 263.434 76.73 263.031 76.848 262.516 76.848 c 261.898 76.848 261.461 
+76.742 261.203 76.535 c 260.945 76.336 260.816 76.102 260.816 75.836 c 
+260.816 75.66 260.871 75.5 260.977 75.359 c 261.086 75.219 261.258 
+75.102 261.492 75.008 c 261.625 74.961 262.016 74.844 262.664 74.66 c 
+263.609 74.41 264.266 74.207 264.641 74.047 c 265.016 73.887 265.309 
+73.656 265.516 73.348 c 265.734 73.039 265.84 72.656 265.84 72.195 c 
+265.84 71.754 265.711 71.336 265.453 70.934 c 265.195 70.543 264.82 
+70.238 264.328 70.023 c 263.836 69.812 263.281 69.711 262.664 69.711 c 
+261.641 69.711 260.859 69.922 260.316 70.348 c 259.781 70.773 259.441 
+71.402 259.289 72.234 c h
+266.754 72.234 m 268.078 72.445 l 268.152 71.914 268.359 71.504 268.691 
+71.223 c 269.031 70.945 269.508 70.809 270.117 70.809 c 270.734 70.809 
+271.188 70.934 271.477 71.184 c 271.777 71.434 271.93 71.727 271.93 
+72.059 c 271.93 72.359 271.801 72.598 271.539 72.773 c 271.359 72.887 
+270.902 73.039 270.18 73.223 c 269.195 73.473 268.512 73.684 268.129 
+73.859 c 267.754 74.043 267.465 74.293 267.266 74.609 c 267.074 74.934 
+266.977 75.289 266.977 75.672 c 266.977 76.023 267.059 76.348 267.215 
+76.648 c 267.383 76.945 267.602 77.195 267.879 77.398 c 268.086 77.547 
+268.371 77.676 268.727 77.785 c 269.086 77.895 269.469 77.945 269.879 
+77.945 c 270.504 77.945 271.051 77.855 271.516 77.672 c 271.984 77.496 
+272.324 77.254 272.539 76.945 c 272.766 76.648 272.922 76.242 273.004 
+75.734 c 271.703 75.559 l 271.645 75.961 271.469 76.273 271.18 76.496 c 
+270.895 76.73 270.496 76.848 269.977 76.848 c 269.363 76.848 268.926 
+76.742 268.664 76.535 c 268.406 76.336 268.277 76.102 268.277 75.836 c 
+268.277 75.66 268.332 75.5 268.441 75.359 c 268.551 75.219 268.719 
+75.102 268.953 75.008 c 269.086 74.961 269.477 74.844 270.129 74.66 c 
+271.07 74.41 271.727 74.207 272.102 74.047 c 272.477 73.887 272.77 
+73.656 272.977 73.348 c 273.195 73.039 273.305 72.656 273.305 72.195 c 
+273.305 71.754 273.176 71.336 272.914 70.934 c 272.656 70.543 272.281 
+70.238 271.789 70.023 c 271.301 69.812 270.746 69.711 270.129 69.711 c 
+269.102 69.711 268.32 69.922 267.777 70.348 c 267.246 70.773 266.902 
+71.402 266.754 72.234 c h
+274.254 73.82 m 274.254 75.281 274.66 76.363 275.477 77.07 c 276.152 
+77.656 276.977 77.945 277.953 77.945 c 279.035 77.945 279.922 77.59 
+280.602 76.871 c 281.297 76.164 281.641 75.184 281.641 73.934 c 281.641 
+72.918 281.488 72.117 281.18 71.535 c 280.879 70.961 280.438 70.508 
+279.852 70.184 c 279.277 69.867 278.645 69.711 277.953 69.711 c 276.852 
+69.711 275.961 70.062 275.277 70.773 c 274.594 71.48 274.254 72.496 
+274.254 73.82 c h
+275.629 73.82 m 275.629 72.812 275.848 72.059 276.289 71.559 c 276.734 
+71.059 277.285 70.809 277.953 70.809 c 278.621 70.809 279.172 71.059 
+279.602 71.559 c 280.047 72.066 280.266 72.84 280.266 73.871 c 280.266 
+74.848 280.047 75.586 279.602 76.086 c 279.16 76.586 278.613 76.836 
+277.953 76.836 c 277.285 76.836 276.734 76.586 276.289 76.086 c 275.848 
+75.586 275.629 74.832 275.629 73.82 c h
+283.043 69.883 m 283.043 77.773 l 284.242 77.773 l 284.242 76.57 l 
+284.551 77.129 284.832 77.496 285.09 77.672 c 285.352 77.855 285.637 
+77.945 285.953 77.945 c 286.402 77.945 286.863 77.801 287.328 77.508 c 
+286.867 76.273 l 286.543 76.465 286.211 76.559 285.879 76.559 c 285.586 
+76.559 285.324 76.473 285.09 76.297 c 284.867 76.121 284.703 75.879 
+284.605 75.57 c 284.453 75.098 284.379 74.574 284.379 74.008 c 284.379 
+69.883 l h
+296.832 69.883 m 295.496 69.883 l 295.496 78.398 l 295.18 78.09 294.758 
+77.781 294.234 77.473 c 293.707 77.172 293.238 76.941 292.82 76.785 c 
+292.82 78.086 l 293.57 78.434 294.227 78.859 294.781 79.359 c 295.34 
+79.859 295.738 80.344 295.969 80.809 c 296.832 80.809 l h
+296.832 69.883 m f
+  Q
+Q
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF

Added: trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.pdf
===================================================================
(Binary files differ)

Index: trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.pdf
===================================================================
--- trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.pdf        2012-07-19 01:01:33 UTC (rev 2035)
+++ trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.pdf        2012-07-19 20:10:27 UTC (rev 2036)

Property changes on: trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.tex
===================================================================
--- trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.tex                                (rev 0)
+++ trunk/documents/shared/current_design_doc/bit_reproducibility/mpas_bit_reproducibility.tex        2012-07-19 20:10:27 UTC (rev 2036)
@@ -0,0 +1,147 @@
+\documentclass[11pt]{report}
+
+\usepackage{epsf,amsmath,amsfonts}
+\usepackage{graphicx}
+\usepackage{listings}
+
+\begin{document}
+
+\title{Bit-For-Bit Reproducibility: \\
+Requirements and Design}
+\author{MPAS Development Team}
+
+\maketitle
+\tableofcontents
+
+%-----------------------------------------------------------------------
+
+\chapter{Summary}
+
+This document is intended to describe options for creating bit-reproducible runs using the MPAS framework.
+
+%-----------------------------------------------------------------------
+
+\chapter{Requirements}
+
+\section{Requirement: Bit Reproducibility}
+Date last modified: 07/13/12
+Contributors: (Michael Duda, Doug Jacobsen)
+
+The only requirement for this project is to create an infrastructure that provides bit-reproducible runs using MPAS.
+
+This requirement can be described as getting the exact (bit-for-bit) same result starting from the same initial conditions using an arbitrary number of blocks or processors.
+
+In this case, bit-for-bit means you can subtract all fields from two output files and get identical zeros as a result.
+%-----------------------------------------------------------------------
+
+\chapter{Current Issues}
+
+Within the current MPAS framework, there is an issue that causes non-bit-reproducible runs. This issue is caused by the unstructured ordering of elements such as edges and vertices. All elements within a single block are ordered based on halos rather than global ID index.
+
+Within a processor, elements are stored with 0-halo elements first, followed by 1-halo elements, and 2-halo elements, etc. This ordering is then converted into a local ID ordering, with increasing local index however this creates random global ID ordering.
+
+When computing certain operators, such as divergence, currently a loop over edges is used. Given a specific edge a flux is computed and the contribution is added to the neighboring cells that share an edge. Because of the local storage of edges, the contributions are added to a given cell in essentially random order when compared to other blocks/processors. This random accumulation of contributions causes non-bit-reproducible data for quantities such as divergence.
+
+This issue can be seen in the following figure.
+\begin{figure}[H!]
+        \centering
+        \includegraphics[scale=0.75]{Hexagons-NonBR.eps}
+        \caption{The hexagon on the left is on by processor 0, while the hexagon on
+        the right is the same hexagon on processor 1. Numbers indicate global edge
+ID, while red boxed numbers indicate they belong in that processors 0 halo and
+blue indicates they are in that processors 1 halo. Sums over edges happen on 0
+halo edges before 1 halo edges.}
+\end{figure}
+
+\chapter{Design and Implementation}
+
+\section{Option 1: Permutation Array}
+Date last modified: 07/13/12
+Contributors: (Michael Duda, Doug Jacobsen)
+
+The first potential option for creating bit-reproducible simulations is to create a permutation array. This permutation array gives the index to edges/vertices in increasing global ID order which allows contributions to be accumulated in the correct order. This ordering is less efficient than the current ordering because all arrays based on edges/vertices are now accessed in random order as opposed to contiguously in memory.
+
+This ordering could be turned on using either a compile or run-time flag. In order to ease development with this issue, it might be beneficial to provide a mpas\_edge\_index routine, and similar for the other elements. This routine would return either the globally ordered edge ID, or the locally ordered edge ID depending on compile-time/run-time flags. Loops over edges would now look like the following.
+
+Also, to be able to preserve results, all loops now have to be performed over nEdges and nVertices as opposed to nEdgesSolve and similar. The nEdgesSolve arrays have no meaning when the permutation arrays are used and because of this is would be beneficial to overwrite all of these arrays with nEdges and similar to prevent issues related to not computing on a 0 halo.
+
+\begin{lstlisting}[language=fortran,escapechar=@,frame=single]
+do i = 1, nEdges
+        iEdge = mpas_edge_index(i)
+        ... work on iEdge ...
+end do
+\end{lstlisting}
+
+\section{Option 2: Re-index all arrays}
+The second option might provide better performance but it has similar drawbacks to Option 1 in that loops now have to be over all elements as opposed to subsets of elements.
+
+To accomplish this task, the permutation arrays could be computed as in option 1, and then before re-indexing from global id to local id all arrays can be permuted using this permutation array. Exchange lists will have to be permuted as well in order to have halo updates work the way they are supposed to. Permuting exchange lists should be as easy as re-indexing the srcList for sendLists, the destList for recvLists, and both the srcList and destList for copyLists.
+
+This might provide better performance because now the increasing global ID is the same as increasing local ID, but loops cannot be restricted to owned elements anymore.
+
+One potential down side is that I/O now requires a copy from the unordered element array to a list of owned elements, which requires a mask to be stored that now masks 0 halo edges and non 0 halo edges to allow easy copying.
+
+%-----------------------------------------------------------------------
+
+\chapter{Testing}
+Date last modified: 07/13/12 
+Contributors: (Michael Duda, Doug Jacobsen)
+
+In order to test, the same configuration can be run on two different sets of blocks (1 block vs. 2 blocks) and all fields can be differenced (or the RMS can be taken). If the differences or RMS give identical zeros then testing is successful.
+
+\chapter{Appendix}
+\section{Array Limit Concerns}
+One issue with the possible fixes for bit-reproducibility is that portions of arrays (the 0-halo for instance) can no longer be iterated over. The whole array needs to be iterated over because some of the 0-halo elements might exist beyond what the previous limits were.
+
+In order to circumvent this issue a simple fix is proposed. This fix includes the addition of a new set of variables at the framework level. The table below shows what variables would be equal to under different run conditions in order to provide a straightforward change for bit reproducibility.
+
+\begin{tabular}{| c | c | c | c |}
+        \hline
+                                         &amp; nEdges &amp; nEdgesSolve &amp; nEdgesOwned \\
+        \hline
+    bit-reproducible &amp; nEdges &amp; nEdges &amp; nEdgesOwned \\
+        \hline
+not bit-reproducible &amp; nEdges &amp; nEdgesOwned &amp; nEdgesOwned \\
+        \hline
+\end{tabular}
+
+\section{I/O Layer Concerns in Option 2}
+Within the proposed option 2 above, an issue is described where the I/O layer needs to be changed. This happens because the arrays are no longer stored with the first nEdgesOwned (using the terminology from the previous section) before any of the halo cells. Because of this storage difference, all owned elements need to be extracted and packed into their own array which can now be written to an output or restart file. The required changes could happen in the routine called MPAS\_writeStream within mpas\_io\_streams.F.
+
+Currently, the code writes out temporary arrays with the required data in them. As an example, a 1d integer field is copied into a temporary array, and the temporary array is written to output. The following pseudocode shows an example of how the new code could look.
+
+\begin{lstlisting}[language=fortran,escapechar=@]
+#ifdef MPAS_BIT_REPRODUCIBLE
+  copyElementIndex = 0
+  do i = 1, totalElements
+    if(ownedMask(i) == 1) then
+          copyElementIndex = copyElementIndex + 1
+      int1d_temp(copyElementIndex) = outputField % array(i)
+        end if
+  end do
+#else
+  int1d_temp(:) = field_cursor % int1dField % array(:)
+#endif
+write_out(int1d_temp)
+\end{lstlisting}
+
+\section{Example of mpas\_get\_edge\_index function}
+
+\begin{lstlisting}[language=fortran,escapechar=@]
+integer function mpas_get_edge_index(grid, index)
+  type (grid_type), intent(in) :: grid
+  integer, intent(in) :: index
+
+#ifdef MPAS_BIT_REPRODUCIBLE
+  mpas_get_edge_index = grid % edgePermutationArray % array(index)
+#else
+  mpas_get_edge_index = index
+#endif
+
+  return
+end function mpas_get_edge_index
+\end{lstlisting}
+
+%-----------------------------------------------------------------------
+
+\end{document}

</font>
</pre>