From 497afccb07164373e0de6639e754d7d691f1926f Mon Sep 17 00:00:00 2001 From: Fabien Costantini Date: Tue, 14 Oct 2008 22:12:25 +0000 Subject: Doxygen pdf man: First version added in documentation/fltk.pdf, old doc removed, images, dox files moved to a new src directory. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6431 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- documentation/src/FL.gif | Bin 0 -> 6455 bytes documentation/src/FL200.eps | 6945 ++++++++++++++++++++++++++++++ documentation/src/FL200.gif | Bin 0 -> 2722 bytes documentation/src/Fl_Check_Button.gif | Bin 0 -> 362 bytes documentation/src/Fl_File_Chooser.jpg | Bin 0 -> 30831 bytes documentation/src/Fl_File_Input.gif | Bin 0 -> 4040 bytes documentation/src/Fl_Help_Dialog.gif | Bin 0 -> 8571 bytes documentation/src/Fl_Light_Button.gif | Bin 0 -> 421 bytes documentation/src/Fl_Return_Button.gif | Bin 0 -> 491 bytes documentation/src/Fl_Roller.gif | Bin 0 -> 1592 bytes documentation/src/Fl_Round_Button.gif | Bin 0 -> 404 bytes documentation/src/Fl_Scroll.gif | Bin 0 -> 13051 bytes documentation/src/Fl_Tile.gif | Bin 0 -> 3837 bytes documentation/src/Fl_Value_Input.gif | Bin 0 -> 651 bytes documentation/src/Fl_Value_Output.gif | Bin 0 -> 640 bytes documentation/src/adjuster1.gif | Bin 0 -> 1249 bytes documentation/src/advanced.dox | 113 + documentation/src/basics.dox | 352 ++ documentation/src/boxtypes.gif | Bin 0 -> 12196 bytes documentation/src/buttons.gif | Bin 0 -> 2052 bytes documentation/src/charts.gif | Bin 0 -> 12312 bytes documentation/src/choice.gif | Bin 0 -> 2240 bytes documentation/src/clock.gif | Bin 0 -> 1779 bytes documentation/src/common.dox | 618 +++ documentation/src/counter.gif | Bin 0 -> 1879 bytes documentation/src/cubeview.gif | Bin 0 -> 10937 bytes documentation/src/development.dox | 461 ++ documentation/src/dial.gif | Bin 0 -> 1564 bytes documentation/src/drawing.dox | 1013 +++++ documentation/src/editor-replace.gif | Bin 0 -> 1521 bytes documentation/src/editor.dox | 910 ++++ documentation/src/editor.gif | Bin 0 -> 10187 bytes documentation/src/enumerations.dox | 301 ++ documentation/src/events.dox | 389 ++ documentation/src/examples.dox | 651 +++ documentation/src/fl_alert.gif | Bin 0 -> 1674 bytes documentation/src/fl_ask.gif | Bin 0 -> 1333 bytes documentation/src/fl_choice.gif | Bin 0 -> 1519 bytes documentation/src/fl_color_chooser.jpg | Bin 0 -> 7694 bytes documentation/src/fl_input.gif | Bin 0 -> 1935 bytes documentation/src/fl_message.gif | Bin 0 -> 1509 bytes documentation/src/fl_password.gif | Bin 0 -> 1607 bytes documentation/src/fl_show_colormap.gif | Bin 0 -> 17916 bytes documentation/src/fluid-catgets.gif | Bin 0 -> 7626 bytes documentation/src/fluid-gettext.gif | Bin 0 -> 7630 bytes documentation/src/fluid-org.gif | Bin 0 -> 11334 bytes documentation/src/fluid.dox | 1373 ++++++ documentation/src/fluid1.gif | Bin 0 -> 6257 bytes documentation/src/fluid2.gif | Bin 0 -> 28555 bytes documentation/src/fluid3-cxx.gif | Bin 0 -> 8841 bytes documentation/src/fluid3-gui.gif | Bin 0 -> 10636 bytes documentation/src/fluid3-style.gif | Bin 0 -> 8046 bytes documentation/src/fluid4.gif | Bin 0 -> 5123 bytes documentation/src/fluid_prefs.gif | Bin 0 -> 6875 bytes documentation/src/fluid_widget_cxx.gif | Bin 0 -> 8154 bytes documentation/src/fluid_widget_gui.gif | Bin 0 -> 10463 bytes documentation/src/fluid_widget_style.gif | Bin 0 -> 7653 bytes documentation/src/forms.dox | 247 ++ documentation/src/glut.dox | 248 ++ documentation/src/hello.C.gif | Bin 0 -> 1686 bytes documentation/src/index.dox | 96 + documentation/src/input_choice.jpg | Bin 0 -> 5320 bytes documentation/src/intro.dox | 353 ++ documentation/src/license.dox | 502 +++ documentation/src/menu.gif | Bin 0 -> 3079 bytes documentation/src/menu_button.gif | Bin 0 -> 1632 bytes documentation/src/menubar.gif | Bin 0 -> 1273 bytes documentation/src/migration_1_1.dox | 172 + documentation/src/migration_1_3.dox | 20 + documentation/src/opengl.dox | 459 ++ documentation/src/osissues.dox | 765 ++++ documentation/src/positioner.gif | Bin 0 -> 1467 bytes documentation/src/preface.dox | 85 + documentation/src/resizebox1.gif | Bin 0 -> 2795 bytes documentation/src/resizebox2.gif | Bin 0 -> 4291 bytes documentation/src/round_clock.gif | Bin 0 -> 1623 bytes documentation/src/scrollbar.gif | Bin 0 -> 1201 bytes documentation/src/slider.gif | Bin 0 -> 3412 bytes documentation/src/subclassing.dox | 531 +++ documentation/src/symbols.gif | Bin 0 -> 5175 bytes documentation/src/tabs.gif | Bin 0 -> 2271 bytes documentation/src/text.gif | Bin 0 -> 1988 bytes documentation/src/tiny.gif | Bin 0 -> 95 bytes documentation/src/unicode.dox | 82 + documentation/src/valuators.gif | Bin 0 -> 19207 bytes documentation/src/value_slider.gif | Bin 0 -> 3733 bytes 86 files changed, 16686 insertions(+) create mode 100644 documentation/src/FL.gif create mode 100644 documentation/src/FL200.eps create mode 100644 documentation/src/FL200.gif create mode 100644 documentation/src/Fl_Check_Button.gif create mode 100644 documentation/src/Fl_File_Chooser.jpg create mode 100644 documentation/src/Fl_File_Input.gif create mode 100644 documentation/src/Fl_Help_Dialog.gif create mode 100644 documentation/src/Fl_Light_Button.gif create mode 100644 documentation/src/Fl_Return_Button.gif create mode 100644 documentation/src/Fl_Roller.gif create mode 100644 documentation/src/Fl_Round_Button.gif create mode 100644 documentation/src/Fl_Scroll.gif create mode 100644 documentation/src/Fl_Tile.gif create mode 100644 documentation/src/Fl_Value_Input.gif create mode 100644 documentation/src/Fl_Value_Output.gif create mode 100644 documentation/src/adjuster1.gif create mode 100644 documentation/src/advanced.dox create mode 100644 documentation/src/basics.dox create mode 100644 documentation/src/boxtypes.gif create mode 100644 documentation/src/buttons.gif create mode 100644 documentation/src/charts.gif create mode 100644 documentation/src/choice.gif create mode 100644 documentation/src/clock.gif create mode 100644 documentation/src/common.dox create mode 100644 documentation/src/counter.gif create mode 100644 documentation/src/cubeview.gif create mode 100644 documentation/src/development.dox create mode 100644 documentation/src/dial.gif create mode 100644 documentation/src/drawing.dox create mode 100644 documentation/src/editor-replace.gif create mode 100644 documentation/src/editor.dox create mode 100644 documentation/src/editor.gif create mode 100644 documentation/src/enumerations.dox create mode 100644 documentation/src/events.dox create mode 100644 documentation/src/examples.dox create mode 100644 documentation/src/fl_alert.gif create mode 100644 documentation/src/fl_ask.gif create mode 100644 documentation/src/fl_choice.gif create mode 100644 documentation/src/fl_color_chooser.jpg create mode 100644 documentation/src/fl_input.gif create mode 100644 documentation/src/fl_message.gif create mode 100644 documentation/src/fl_password.gif create mode 100644 documentation/src/fl_show_colormap.gif create mode 100644 documentation/src/fluid-catgets.gif create mode 100644 documentation/src/fluid-gettext.gif create mode 100644 documentation/src/fluid-org.gif create mode 100644 documentation/src/fluid.dox create mode 100644 documentation/src/fluid1.gif create mode 100644 documentation/src/fluid2.gif create mode 100644 documentation/src/fluid3-cxx.gif create mode 100644 documentation/src/fluid3-gui.gif create mode 100644 documentation/src/fluid3-style.gif create mode 100644 documentation/src/fluid4.gif create mode 100644 documentation/src/fluid_prefs.gif create mode 100644 documentation/src/fluid_widget_cxx.gif create mode 100644 documentation/src/fluid_widget_gui.gif create mode 100644 documentation/src/fluid_widget_style.gif create mode 100644 documentation/src/forms.dox create mode 100644 documentation/src/glut.dox create mode 100644 documentation/src/hello.C.gif create mode 100644 documentation/src/index.dox create mode 100644 documentation/src/input_choice.jpg create mode 100644 documentation/src/intro.dox create mode 100644 documentation/src/license.dox create mode 100644 documentation/src/menu.gif create mode 100644 documentation/src/menu_button.gif create mode 100644 documentation/src/menubar.gif create mode 100644 documentation/src/migration_1_1.dox create mode 100644 documentation/src/migration_1_3.dox create mode 100644 documentation/src/opengl.dox create mode 100644 documentation/src/osissues.dox create mode 100644 documentation/src/positioner.gif create mode 100644 documentation/src/preface.dox create mode 100644 documentation/src/resizebox1.gif create mode 100644 documentation/src/resizebox2.gif create mode 100644 documentation/src/round_clock.gif create mode 100644 documentation/src/scrollbar.gif create mode 100644 documentation/src/slider.gif create mode 100644 documentation/src/subclassing.dox create mode 100644 documentation/src/symbols.gif create mode 100644 documentation/src/tabs.gif create mode 100644 documentation/src/text.gif create mode 100644 documentation/src/tiny.gif create mode 100644 documentation/src/unicode.dox create mode 100644 documentation/src/valuators.gif create mode 100644 documentation/src/value_slider.gif (limited to 'documentation/src') diff --git a/documentation/src/FL.gif b/documentation/src/FL.gif new file mode 100644 index 000000000..823e0bdd4 Binary files /dev/null and b/documentation/src/FL.gif differ diff --git a/documentation/src/FL200.eps b/documentation/src/FL200.eps new file mode 100644 index 000000000..6e386fc32 --- /dev/null +++ b/documentation/src/FL200.eps @@ -0,0 +1,6945 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (FL.eps) +%%CreationDate: (Mon Oct 6 14:19:31 2008) +%%BoundingBox: 0 0 400 200 +%%HiResBoundingBox: 0 0 400 200 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse + grestore +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 400 200 +userdict begin +DisplayImage +0 0 +400 200 +12.000000 +400 200 +0 +0 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffE6E6E68A8A8Affffff9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff9E9E9Effffff969696969696626262323232 +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +363636363636ffffff363636363636ffffff363636363636ffffff363636363636ffffff +3636363636367272729696969696969E9E9E9E9E9Effffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff9E9E9E9696966E6E6B363636ffffff363636363636 +323232363636363636323232626262828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282666666323232363636363636323232363636363636ffffff +3636366E6E6B9E9E9E9E9E9Effffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff9E9E9Effffff6E6E6B363636ffffff363636363636323232 +3636366262628282828282828282828282828282828A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE868686828282828282 +828282828282828282666666363636323232363636363636ffffff3636367272729E9E9E +9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff6E6E6Bffffff363636363636323232363636 +6262628282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282 +666666363636323232363636363636ffffff727272ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff9E9E9E6E6E6B363636ffffff363636363636 +6666668282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A828282828282666666363636363636ffffff +3636367272729E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff9E9E9E727272363636363636323232 +3636366262628282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE8A8A8A8282826666663636363232323636363636367676769E9E9Effffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff727272ffffff363636 +3636363232326666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282666666323232 +363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B +ffffff3636363636366666668282828A8A8ABEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE868686828282666666363636363636ffffff767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666 +363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE8A8A8A666666363636363636ffffff767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff6E6E6Bffffff3636363636366666668A8A8ABEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666 +363636363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff727272ffffff363636363636666666 +8A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE8A8A8A666666363636363636ffffff767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff363636 +3636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666 +363636363636ffffff7A7A7Affffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +6E6E6B3636363636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE8A8A8A666666363636363636767676ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7A3636363636363232326A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232 +3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff6E6E6B3636363232326666668A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE868686666666323232363636727272ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff7676763636363232323636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636323232 +3A3A3A7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6Bffffff +3636366262628A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE8A8A8A666666363636ffffff767676ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +7A7A7Affffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636363636ffffff +7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff7A7A7A3636363636366666668A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE8A8A8A6666663636363636367E7E7Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff7676763636363232326A6A69BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6Bffffff363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A69363636ffffff767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A +ffffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A69363636363636ffffff7A7A7Affffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7E7E7E3636363636366666668A8A8ABEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666 +3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636323232 +7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E +3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE7676768282828282828282828F8F628F8F628A8A5E +8F8F628F8F628A8A5E8282828282828282828A8A8ABEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +8686868282828282828282768F8F628F8F62BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B7E7E7E +8282828282828A8A6E8F8F628A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8686868282825E5E5E3232323636323A3A32 +3232323A3A323A3A323232323A3A323A3A323232323A3A323A3A32323232363636666656 +8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282 +8282828282828A8A5E6A6A4C3232323636323A3A323232323A3A323636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282 +86866A5A5A353232323636323A3A323232323A3A32363632323232868686CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693636363232327A7A7Affffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E3636363636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE868686666656323232363632 +36363232323271712C9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A +9E9E1A7676223636323232323636363636366A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE868686828282828282828282828282 +8F8F626A6A4C3636323232323A3A323A3A323232323A3A323636327676229E9E1A9A9A1A +71712C323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8A8A8A8282828282828282828A8A6E6A6A4C +3636363232323A3A323A3A3232323236363236363271712C9E9E1A9A9A1A96961A54543F +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE868686666656 +3232323636323636327676229E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA169A9A1A767622323232363636626262 +8A8A8ABEBEBEBEBEBE8686868282828282828282828282828282828A8A5E6A6A4C323232 +3636323A3A323232323A3A323A3A323232323A3A3271712C9E9E1A9E9E1A9A9A1A9E9E1A +AAAA16EEEE06FEFE02EEEE066E6E3A363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE8A8A8A82828282828282828282828286866A8F8F626E6E44363632363632 +3232323A3A323A3A323232323A3A3271712C9E9E1A9E9E1A9A9A1A9E9E1AAAAA16EEEE06 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232 +363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff6E6E6B363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +868686666656323232363632363632767622AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02 +EEEE06AAAA169E9E1A9A9A1A9E9E1A9E9E1AA2A216EEEE06FEFE02FEFE02FEFE02FEFE02 +EEEE067A7A223636323232323636366A6A4C6A6A4C3232323636323636323232323A3A32 +3A3A323232323A3A323636327676229E9E1A9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE8A8A8A86867A8A8A5E8F8F626E6E443636323636323232323A3A323A3A32323232 +3A3A323636323232327676229A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff767676363636323232868686CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A69323232363632363632767622AAAA16EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE067A7A2B363636363636323232363636363636323232A6A616 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA167676223636323232323A3A32363632 +7676229E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A3A3A323636323232323A3A32363632323232767622 +9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A3232323636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632767622AAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B363636323232666666828282 +8282826262623636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +AAAA169A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE82828232323271712C9A9A1A +9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693636363232327A7A7Affffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +7E7E7E3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632323232 +7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B323232 +3636366A6A69BEBEBECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A693636363636367E7E7Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff3636363232326A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECEBEBEBE6A6A4C3232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616 +AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE82828236363271712C9E9E1A9A9A1A9E9E1A9E9E1AA2A216 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232 +363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff727272363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE0676762B3636363232326A6A69BEBEBECECECECECECEBEBEBE +6E6E6B363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A32323236363671712CAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636363636 +32323236363636363632323271712CA2A216EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636 +323232868686CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636366A6A69BEBEBE +CECECECECECECECECE8A8A8A3636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029999323636363636363232323636327A7A22 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE8A8A8A8282828282828282828282826666663636363636363232327A7A22EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A3232323636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632 +7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C +363636666666BEBEBECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636 +6262626262623636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A +6666663636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A69363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff6E6E6B363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A3636323636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029A9A1A323232828282BEBEBE6A6A693636363A3A32AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6666663232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff767676ffffff3636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C323232767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C363636666666BEBEBECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECEBEBEBE54543F +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffff +7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6E6E54363632363632AAAA16FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636 +8A8A8ACECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636 +828282CECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A69363636363636ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff6E6E6B323232666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632 +3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE0671712C363636666666BEBEBECECECECECECECECECECECECECECECECECECE828282 +32323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECE828282323232767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE767676 +8282828282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A +323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE626262ffffff767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff7A7A7A3636363636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE8282823A3A32 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE7676763232323636323636323232323636323636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636323232 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE666656363632767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE66666632323271712CEEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232626262 +BEBEBECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C32323271712C9E9E1A9A9A1A71712C +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A69323232363636ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff727272363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +71712C363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A3636363636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA16 +73733A3636363636368A8A8ACECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E44363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632 +AAAA16FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636 +3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff363636323232868686CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +666656363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A693232323636367676229E9E1AAAAA16DEDE0A +A6A6169E9E1A76762B3636363636363232326A6A69BEBEBECECECE8A8A8A363636363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693636323232327A7A22EEEE06FEFE02FEFE02999926363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff727272363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636 +3232323636363636325A5A35323232363636363636323232666666868686BEBEBECECECE +CECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A3232323636327A7A22EEEE06FEFE02FEFE02EEEE066E6E44 +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +363636323232868686CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE666656363632767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE8A8A8A828282666666323232363636363636666666828282868686 +BEBEBECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632767622EEEE06FEFE02 +FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232 +363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff727272363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232 +363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282 +8A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232 +363632AAAA16FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE666666363636767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff363636323232868686CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02FEFE02EEEE0671712C363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363636ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff727272363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06FEFE02FEFE02FEFE02 +FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +666666363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff363636323232868686CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232 +A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A323232363636ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff727272363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A56363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632 +3636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C +3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff363636323232868686 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A693636323232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02999932323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff363636323232868686CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636323636327E7E22EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A56363632 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232 +363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632 +3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +8686866666563232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926 +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282ffffff767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656 +3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A693232323636323636327E7E22EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363636363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A666656363632363632767622AAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE626262ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636363632323232 +7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232 +626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282363636767676ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A32 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232 +A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A4C +363632323232767622A6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +8A8A8A6666563636323232323A3A327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff727272363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282 +828282828282828282828282828282666666363632363632AAAA16FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02939343 +363636626262828282828282828282828282828282828282828282828282828282828282 +8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE86866A3232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE8A8A8A8282826A6A4C3636323232323A3A3271712CAAAA16EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A36363654543F7E7E7E828282828282828282828282828282828282 +8282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232 +8A8A8ACECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +8282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363636767676 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff363636323232868686CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A32 +3636323232323A3A323A3A323232323A3A323A3A323232323A3A323636323232327A7A22 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A6A6163232323636323A3A323232323A3A323A3A323232323A3A32 +3A3A323232323A3A323A3A323232323636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6E6E6B3636363636323232323A3A3271712CAAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163A3A323232323A3A323A3A32323232 +3A3A323A3A323232323A3A323A3A323232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE9393433A3A32 +3636323232323A3A323A3A323232323A3A323A3A323232323A3A323A3A323232323A3A32 +3A3A323232323A3A323A3A323232323A3A323A3A323232323A3A323A3A323232323A3A32 +3A3A323232323A3A323A3A323232323636323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A323232363636ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE82827632323271712C9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A +9E9E1A9E9E1AA6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A2A2169E9E1A9E9E1A9A9A1A +9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A6E6E3A363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A3636323232327676229A9A1A +AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA16 +9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A6A6A3A363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282CECECECECECECECECECECECE +CECECECECECE8A8A5E32323271712C9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A +9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A +9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A6A6A3A323232828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6666663636369E9E9Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff969696323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02939343323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A +CECECECECECECECECECECECECECECECECECE8F8F623A3A329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +6E6E6B363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02939343363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE8A8A6E363632 +6E6E3A9E9E1A9A9A1A9E9E1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE06AAAA169A9A1A7676223232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282363636767676ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02939343363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363632 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE +CECECECECECE868686323232363636363636323232363636363636767622AAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE06AAAA169999266E6E443636363232323636363636366A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE82828236363271712C9E9E1A9A9A1A9E9E1A9E9E1A +9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616 +9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A71712C +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +36363271712C9E9E1A9A9A1A9E9E1A9E9E1A9A9A1AAAAA16EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE06AAAA169A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A +9A9A1A6A6A3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE +CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282666666 +3232323636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE06AAAA166E6E44363636363636323232363636666666 +8282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69 +3636369E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636 +3636363232323636363636363232323636363636363232323636367A7A22EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE06727242323232363636363636323232363636363636323232363636363636 +3232323636363636363232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE868686323232363636363636323232363636363636323232363636 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE06727242363636323232363636363636323232363636 +3636363232323636363636363232323636363636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE8A8A8A5E5E5E3232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA1673733A363636363636323232 +6666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A3A9E9E9Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff969696323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE8A8A8A8282828282828282828282828282828282828282828282825E5E5E +363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636666666828282828282828282 +8282828282828282828282828282828282828282828282828A8A8ABEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C +3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282 +8282828282825E5E5E3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216323232363636666666 +8282828282828282828282828282828282828282828282828282828282828A8A8ABEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A2B363636 +363636323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff6E6E6B363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE868686363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +71712C363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +AAAA166E6E3A363636323232666666868686BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656363632 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE067A7A223636363232323636366A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A +3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363632363632AAAA16 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3232323636366666668A8A8ABEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636369E9E9Effffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926 +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +3636363232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02EEEE0676762B363636363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff969696323232 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C363632767622EEEE06FEFE02FEFE02FEFE02EEEE06AAAA16 +6E6E443636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff969696363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E54363632323232A2A216FEFE02FEFE02 +FEFE02EEEE067A7A223636363232323636366A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282823636369E9E9Effffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff969696363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232 +626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632 +7A7A22EEEE06FEFE02FEFE02EEEE0676762B3232323636366666668A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8282823636369E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6A6A69323232 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A216 +3232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6E6E6B3636323636327E7E22EEEE06FEFE02FEFE02EEEE067A7A2B3636363636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282ffffff767676ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE0671712C363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E543636323232327A7A22EEEE06FEFE02FEFE02EEEE0676762B +3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363636ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E44 +3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E543232323636327A7A22EEEE06FEFE02 +FEFE02EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A69ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932 +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A4C363632363632 +7E7E22EEEE06FEFE02EEEE06AAAA1673733A3636363636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A3232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69 +3636363636323232327A7A22EEEE06FEFE02EEEE067E7E223636363636363232326A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9E +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86866A +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232 +9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A69363632323232767622A6A616EEEE06FEFE02EEEE067A7A22363636 +323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE +CECECECECECECECECECECECEBEBEBE6A6A693232323636327A7A22EEEE06FEFE02FEFE02 +EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +999926363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A +323232626262BEBEBECECECECECECECECECECECECEBEBEBE6E6E6B3636323636327E7E22 +EEEE06FEFE02FEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8686863A3A3A9E9E9E +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282363632 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECECECECEBEBEBE6E6E54 +3636323232327A7A22EEEE06FEFE02FEFE02FEFE02AAAA163636363232326A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECECECECE +BEBEBE8686866A6A4C3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A +323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232 +A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636 +3232328A8A8ACECECEBEBEBE6A6A693232323636323636327E7E22EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A3A9E9E9E +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE0671712C363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A363636666666BEBEBEBEBEBE6E6E6B363632363632767622AAAA16 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636323636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282BEBEBE6E6E54363632 +3232327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +71712C323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636 +5E5E5E6A6A4C3232323636327A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8686863A3A3A9E9E9E +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02999926363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632AAAA16FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02A2A2163232323636363232323636323636327E7E22EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636363632363632767622AAAA16EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636363636 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363632323232 +7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3A3A3A9E9E9E +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A32 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02939343363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE06AAAA16A6A616EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A693A3A3A9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE06A6A616AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE868686323232363636ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff727272363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636 +363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE06A6A61671712C323232363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff969696363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232 +363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223232323636363636363636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02AAAA163636323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8282823636369E9E9Effffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff969696323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8F8F623A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E44363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A2B363636363636 +6666666262623232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E443636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +7272423636363232326A6A69BEBEBE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232 +A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE067272423232323636366A6A69BEBEBECECECE828282363632767622 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A3A3A3A9E9E9Effffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff626262BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636366A6A69BEBEBECECECE +CECECE868686323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3636363636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282763232329A9A1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44 +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6666563232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232 +626262BEBEBECECECECECECECECECEBEBEBE6666563A3A329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +3636363A3A3Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6E6E6B +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE828282323232 +9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE828282323232727272ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff9E9E9E363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECE +CECECECECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A3A9E9E9Effffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932323232 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16363636323232 +8A8A8ACECECECECECECECECECECECECECECE828282363636767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +3A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02999932323232828282CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE8A8A8A8A8A8ABEBEBECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8686868A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE86867A3A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE868686323232 +363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A69ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff3636363636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A3636363636366A6A69BEBEBECECECECECECE +CECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECE +CECECECECECEBEBEBE6666663A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06767622363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A3636363A3A3Affffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff727272323232828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C323232323232 +3636366262628A8A8ABEBEBECECECECECECECECECE8282823A3A32767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02999932323232828282CECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A3A3A323636323636323232326A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A +CECECECECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232 +727272ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +9E9E9E363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE0673733A363636828282CECECECECECECECECECECECECECECECECECECECECEBEBEBE +6E6E543636323636325E5E2A3636323232323636368A8A8ACECECECECECECECECE828276 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282CECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A4C32323271712C7676223636323636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECE828282 +363636767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8F8F628282828A8A8A +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8686863A3A3A9E9E9Effffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A693636323232327A7A22D2D20E5A5A353232323636368A8A8A +CECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8A +CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363632363632AAAA16DEDE0A +5A5A35323232828282CECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A32 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C323232828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +3A3A323232323A3A323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E6B3636369E9E9Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E44323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECE8A8A8A3232323636327A7A22EEEE06AAAA16 +3636363636366A6A69BEBEBECECECECECECE8A8A8A323232363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636666666BEBEBECECECECECECECECECECECECECECECEBEBEBE6A6A69363632 +3232327A7A22DEDE0A7A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECE +CECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6666663636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE029E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6A6A4C36363271712C71712C3232323636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff727272363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C323232 +9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9A9A1A323232828282CECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C363632 +767622EEEE06EEEE066E6E44323232626262BEBEBECECECECECECECECECE828282363632 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE +CECECE8A8A8A3232323636327A7A22EEEE06AAAA163636363232326A6A69BEBEBECECECE +CECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A69363632323232A2A2169A9A1A323232 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE868686363636767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff626262BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363632363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632 +363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02999932363636828282CECECECECECECECECECECECECECECE +BEBEBE6A6A69323232363632AAAA16EEEE067A7A2B3636363636368A8A8ACECECECECECE +CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232828282CECECE +CECECECECECECECECECECECEBEBEBE6A6A4C363632767622EEEE06EEEE0673733A363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE868686323232363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A616323232363636 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +7A7A22DEDE0A71712C363636666666BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A69ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636363636 +8A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636828282CECECE +CECECECECECECECECEBEBEBE6A6A693636323636327E7E22DEDE0A7A7A22363636323232 +6A6A69BEBEBECECECECECECECECECECECECE8A8A5E3232329A9A1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363636368A8A8ACECECECECECECECECECECECEBEBEBE6A6A69323232363632AAAA16 +EEEE0676762B3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE0296961A323232828282CECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6666563A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE06767622363636666666BEBEBECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C363632767622EEEE06A2A2163232323636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A3636363A3A3Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff727272323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3636363232328A8A8ACECECECECECECECECEBEBEBE6A6A693636323232327A7A22EEEE06 +A2A2163232323636366A6A69BEBEBECECECECECECECECECECECECEBEBEBE6A6A4C363632 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECECECECEBEBEBE6E6E6B +3636323636327E7E22DEDE0A7A7A223232323636366A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A +363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE82828232323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02A6A6163232323636368A8A8ACECECECECECE +CECECECECECECECECEBEBEBE6A6A69323232363632AAAA16EEEE066E6E3A363636666666 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +828282323232727272ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A6E3A3A32 +9E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECEBEBEBE6A6A69323232 +3636327A7A22EEEE06EEEE066E6E3A363636666666BEBEBECECECECECECECECECECECECE +CECECE8A8A8A323232363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636828282CECECECECECE +CECECEBEBEBE6A6A693636323232327A7A22EEEE06AAAA163636363636366A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECE828282323232767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06767622 +363636666666BEBEBECECECECECECECECECEBEBEBE6E6E6B3636323636327E7E22DEDE0A +7A7A223232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A693A3A3A9E9E9Effffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636 +3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8A8A5E3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232666666BEBEBECECECE +BEBEBE6A6A693636323636327E7E22EEEE06EEEE0676762B3232323636368A8A8ACECECE +CECECECECECECECECECECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A +363636666666BEBEBECECECEBEBEBE6A6A693232323636327A7A22EEEE06EEEE066E6E3A +323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +86867A3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232 +9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A6A6163232323636366A6A69BEBEBECECECEBEBEBE6A6A69363632 +3232327A7A22EEEE06AAAA163636363636366A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE868686323232363636ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff767676363636828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE828282363632767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA16 +3A3A323636366666668282826666563636323232327A7A22EEEE06EEEE067E7E22363636 +3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02A6A6163232323636366262628282826A6A563636323636327E7E22 +EEEE06EEEE067A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999932363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A22363632323232666656 +86866A6A6A4C3232323636327A7A22EEEE06EEEE0671712C323232626262BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE868686 +363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff9E9E9E363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE067A7A223232323636323A3A323232323A3A327A7A22EEEE06 +FEFE02AAAA163636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECE8282823232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223636323232323A3A32 +3636323232327A7A22EEEE06EEEE067A7A223636363232326A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE067E7E223636323636323232323A3A323636327E7E22EEEE06EEEE067E7E22363636 +3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E6B3636369E9E9Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE8A8A6E3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A2A2169E9E1A9E9E1A +9A9A1AAAAA16EEEE06FEFE02EEEE066E6E44363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE06AAAA169A9A1A9E9E1A9E9E1AA6A616EEEE06EEEE067A7A223232323636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666666 +363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06AAAA169E9E1A9A9A1A9E9E1AAAAA16EEEE06 +FEFE02AAAA163636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823636329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232328A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067E7E22 +3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6666563232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636 +767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363632323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE82828232323271712C +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B +3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE82828232323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE067A7A223636363232326A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363636363632AAAA16FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE066E6E3A363636828282CECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE666666363632767622EEEE06 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232328A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A32767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE0676762B3636363636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A3636363A3A32AAAA16FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE067A7A223232323636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282323232 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363636323232A6A616FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B +3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A69363636767676ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3636368A8A8ACECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823232329A9A1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +73733A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE66666632323271712CEEEE06FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE06AAAA166E6E3A3636363232326A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE666656323232 +9A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067E7E223636363636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE666666363632767622EEEE06FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8F8F62 +3A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636 +3A3A32AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE067A7A223636363232323636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE828282363636767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0676762B +3636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +9E9E1A363636828282CECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636323232 +7A7A22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE0676762B3636363232326A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A69363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff3636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E443636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029E9E1A363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE66666632323271712CEEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A61671712C323232 +3636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A3636363232327A7A22EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE06A6A6166E6E3A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363632323232 +A2A216FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE066E6E3A323232828282CECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A693636363636327E7E22EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A6166E6E3A3232323636366A6A69 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECE8A8A8A363632323232A2A216FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0671712C +323232828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8A8A8A363636363632767622AAAA16 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A616 +71712C3232323636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69 +363636363632767622AAAA16EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE06A6A61671712C3232323636363636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8282823636325A5A3596961A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A +9E9E1A9E9E1A9A9A1A9E9E1A9E9E1A9A9A1A9E9E1A7676223636363636368A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363632767622AAAA16 +EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06A6A61671712C323232 +3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6A6A69363636767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A32 +767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693232323636363636327676229E9E1AA2A216EEEE06FEFE02FEFE02EEEE06AAAA16 +9E9E1A9A9A1A71712C3232323636363636366666668A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6A6A693232323636363636327676229E9E1AA2A216EEEE06 +FEFE02FEFE02EEEE06AAAA169E9E1A9A9A1A6E6E3A3232323636363636366666668A8A8A +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE868686323232363636363636323232363636363636 +323232363636363636323232363636363636323232363636363636323232363636363636 +3232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693636363232323636327676229E9E1A9E9E1AA2A216DEDE0AAAAA169E9E1A9A9A1A +71712C3232323636363636366666668A8A8ABEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A363636 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECE8282763232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE029A9A1A323232626262BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A6666663232323636363636363232326E6E3A +93934393934373733A3636363636363232323636363636366666668A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A666666323232 +3636363636363232326E6E3A93934393934373733A363636363636323232363636363636 +6666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282868686BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A626262363636323232363636363636323232 +5A5A353636363636363232323636363636366666668A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE6A6A69363636767676ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A4C3636329E9E1AFEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E3A363636 +828282CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A +8282826666663636363636363232323636363636363232326666668282828282828A8A8A +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE8A8A8A828282666666363636363636323232363636363636323232 +6666668282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A +8282828282826666663636363636363232326666668282828282828A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8A8A8A363636ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff767676363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A323232363632 +AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02A2A2163232323636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8A8A8A828282828282828282828282868686 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282 +828282828282828282868686BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282868686BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636767676 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE828282363632767622EEEE06FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02999926363636666666BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A69363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A363636 +3232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44363636828282 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8686863232323636367A7A7Affffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff767676363636666666BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A4C3232329A9A1A +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +AAAA163636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE666666363636767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff3636363232326A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +8A8A8A363636363632AAAA16FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE0671712C363636666666BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232 +363636ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +7E7E7E3636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECE828282323232767622EEEE06FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232328A8A8ACECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECE8A8A8A3636363636367E7E7Effffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff767676ffffff626262BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02999926 +363636666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE6A6A69323232727272ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff363636363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A563636329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE066E6E44323232828282CECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A693636363A3A3Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7Affffff3636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636323232A2A216FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8ACECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE8A8A8A +363636ffffff7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A32767622EEEE06FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232 +626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E6B363636767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02AAAA163636363636368A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6E6E6B363636ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02EEEE066E6E44323232626262BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636 +7A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363636368A8A8A +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6A6A693636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7Affffff3636368A8A8ACECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE06 +6E6E44323232626262BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A363636ffffff7A7A7Affffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff767676363636666666BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +FEFE02FEFE02EEEE067A7A2B3636363636368A8A8ACECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02AAAA163636363232326A6A69BEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B363636 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02FEFE02EEEE0673733A363636 +666666BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6E6E6B3232323636367A7A7Affffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02FEFE02FEFE02FEFE02 +EEEE0676762B3636363232328A8A8ACECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE7272723636363636367E7E7Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +FEFE02FEFE02FEFE02EEEE0676762B3232323636366A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff7A7A7A3636363232326A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02FEFE02FEFE02FEFE02EEEE067E7E223636363636366A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6E6E6B323232 +3636367A7A7Affffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +7E7E7E3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02FEFE02EEEE067A7A22363636 +3232326A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE7272723636363636367E7E7Effffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE8282823A3A329E9E1AFEFE02FEFE02 +EEEE067A7A223232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A363636 +323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232329A9A1AFEFE02EEEE067A7A2B3636363636366A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8A8A8A6E6E6B3232323636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff7E7E7E3636363636363232326A6A69BEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8282823A3A3296961AAAAA1671712C3636363232326A6A69BEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636 +3636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636 +6A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECE82828236363254543F363636323232 +3636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +6E6E6B363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff7A7A7A3232323636366A6A69BEBEBECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE828282 +3232323232323636366666668A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE6E6E6B3636363232327A7A7Affffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff7A7A7A363636323232666666868686 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECE8A8A8A3636363636366A6A69BEBEBECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A6A6A693232323636367A7A7Affffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +7E7E7E3636363636363232326A6A69BEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE6A6A69323232363636363636 +7E7E7Effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff7676763636363636366666668A8A8ABEBEBE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69 +363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A +ffffff3636363636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +BEBEBE6A6A69363636363636ffffff7A7A7Affffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff767676ffffff3636366666668A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECEBEBEBE8A8A8A666666363636ffffff767676ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7A7A7A3A3A3A +3232323636366A6A69BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE6A6A69363636ffffff3636367A7A7Affffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff727272363636323232666666868686BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69323232363636 +767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff7E7E7E363636363636 +323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69 +3232323636363636367E7E7Effffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff767676363636363636323232666666868686BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE +8A8A8A666666323232363636363636767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636 +323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECEBEBEBE8A8A8A666666323232363636363636767676ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff767676363636363636323232666666868686BEBEBECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECEBEBEBE8A8A8A666666323232363636363636767676ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff767676363636363636 +323232666666868686BEBEBECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECEBEBEBE8A8A8A6A6A69323232363636363636767676 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff7676763636363636363232326666668282828A8A8ABEBEBECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282826A6A69323232363636 +363636767676ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff7676763636363A3A3A +3232323636366666668282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282826A6A69363636 +ffffff363636363636767676ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff9E9E9E7272723A3A3Affffff363636363636666666828282868686 +BEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8686866A6A69 +3636363A3A3Affffff3636367676769E9E9Effffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff767676 +ffffff3636363636363232326666668282828282828A8A8ABEBEBECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A828282868686 +6A6A69323232363636363636ffffff767676ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff9E9E9E7676763636363A3A3Affffff363636363636 +6A6A698282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECEBEBEBE8A8A8A8282828282828A8A8A +6E6E6B3636363A3A3Affffff3636363636367676769E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +9E9E9Effffff767676ffffff3636363A3A3Affffff3636363636366A6A69868686828282 +8282828282828282828A8A8ABEBEBECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECEBEBEBE8A8A8A8282828282828282828282828A8A8A6A6A69 +363636363636ffffff3A3A3A363636ffffff767676ffffff9E9E9Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff767676 +ffffff3636363A3A3Affffff3636363636363232323636366A6A698A8A8A8A8A8A828282 +868686868686828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +828282828282828282828282828282828282828282828282828282828282828282828282 +8282828686868282828686868686868686868A8A8A8A8A8A6A6A69363636ffffff363636 +3A3A3Affffff3A3A3A363636ffffff767676ffffff9E9E9E9E9E9Effffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff9E9E9E9E9E9E7272723A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3Affffff3A3A3A3A3A3A +ffffff3636367676769E9E9E9E9E9Effffff9E9E9E9E9E9Effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E9E9E9Effffff9E9E9E +9E9E9Effffff9E9E9E9E9E9Effffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/documentation/src/FL200.gif b/documentation/src/FL200.gif new file mode 100644 index 000000000..9df861dc7 Binary files /dev/null and b/documentation/src/FL200.gif differ diff --git a/documentation/src/Fl_Check_Button.gif b/documentation/src/Fl_Check_Button.gif new file mode 100644 index 000000000..bbd6f4ee7 Binary files /dev/null and b/documentation/src/Fl_Check_Button.gif differ diff --git a/documentation/src/Fl_File_Chooser.jpg b/documentation/src/Fl_File_Chooser.jpg new file mode 100644 index 000000000..050227d58 Binary files /dev/null and b/documentation/src/Fl_File_Chooser.jpg differ diff --git a/documentation/src/Fl_File_Input.gif b/documentation/src/Fl_File_Input.gif new file mode 100644 index 000000000..4a1f31deb Binary files /dev/null and b/documentation/src/Fl_File_Input.gif differ diff --git a/documentation/src/Fl_Help_Dialog.gif b/documentation/src/Fl_Help_Dialog.gif new file mode 100644 index 000000000..92b0840c3 Binary files /dev/null and b/documentation/src/Fl_Help_Dialog.gif differ diff --git a/documentation/src/Fl_Light_Button.gif b/documentation/src/Fl_Light_Button.gif new file mode 100644 index 000000000..0d380937e Binary files /dev/null and b/documentation/src/Fl_Light_Button.gif differ diff --git a/documentation/src/Fl_Return_Button.gif b/documentation/src/Fl_Return_Button.gif new file mode 100644 index 000000000..349163ca7 Binary files /dev/null and b/documentation/src/Fl_Return_Button.gif differ diff --git a/documentation/src/Fl_Roller.gif b/documentation/src/Fl_Roller.gif new file mode 100644 index 000000000..48cd5b189 Binary files /dev/null and b/documentation/src/Fl_Roller.gif differ diff --git a/documentation/src/Fl_Round_Button.gif b/documentation/src/Fl_Round_Button.gif new file mode 100644 index 000000000..3acb88876 Binary files /dev/null and b/documentation/src/Fl_Round_Button.gif differ diff --git a/documentation/src/Fl_Scroll.gif b/documentation/src/Fl_Scroll.gif new file mode 100644 index 000000000..3055429a0 Binary files /dev/null and b/documentation/src/Fl_Scroll.gif differ diff --git a/documentation/src/Fl_Tile.gif b/documentation/src/Fl_Tile.gif new file mode 100644 index 000000000..f14f0b49b Binary files /dev/null and b/documentation/src/Fl_Tile.gif differ diff --git a/documentation/src/Fl_Value_Input.gif b/documentation/src/Fl_Value_Input.gif new file mode 100644 index 000000000..feabbffc1 Binary files /dev/null and b/documentation/src/Fl_Value_Input.gif differ diff --git a/documentation/src/Fl_Value_Output.gif b/documentation/src/Fl_Value_Output.gif new file mode 100644 index 000000000..18cf45a39 Binary files /dev/null and b/documentation/src/Fl_Value_Output.gif differ diff --git a/documentation/src/adjuster1.gif b/documentation/src/adjuster1.gif new file mode 100644 index 000000000..1f9f5353e Binary files /dev/null and b/documentation/src/adjuster1.gif differ diff --git a/documentation/src/advanced.dox b/documentation/src/advanced.dox new file mode 100644 index 000000000..17afa9147 --- /dev/null +++ b/documentation/src/advanced.dox @@ -0,0 +1,113 @@ +/** + + \page advanced 10 - Advanced FLTK + +This chapter explains advanced programming and design topics +that will help you to get the most out of FLTK. + + +\section advanced_multithreading Multithreading + +FLTK supports multithreaded application using a locking mechanism +based on "pthreads". We do not provide a threading interface as part of +the library. However a simple example how threads can be implemented +for all supported platforms can be found in test/threads.h +and test/threads.cxx. + +To use the locking mechanism, FLTK must be compiled with +--enable-threads set during the configure +process. IDE-based versions of FLTK are automatically compiled with +locking enabled if possible. + +In main(), call +Fl::lock() before +Fl::run() or +Fl::wait() +to start the runtime +multithreading support for your program. All callbacks and derived +functions like handle() and draw() will now be properly +locked: + +} + +\code + int main() { + Fl::lock(); + /* run thread */ + while (Fl::wait() > 0) { + if (Fl::thread_message()) { + /* process your data */ + } + } + } +\endcode + +You can now start as many threads as you like. From within +a thread (other than the main thread) FLTK calls must be wrapped +with calls to Fl::lock() +and Fl::unlock(): + +\code + Fl::lock(); // avoid conflicting calls + ... // your code here + Fl::unlock(); // allow other threads to access FLTK again +\endcode + +You can send messages from child threads to the main thread +using Fl::awake(msg):

+ +\code + void *msg; // "msg" is a pointer to your message + Fl::awake(msg); // send "msg" to main thread +\endcode + +You can also tell the main thread to call a function for you +as soon as possible by using +Fl::awake(callback, userdata):

+ +\code + void do_something(void *userdata) { + // running with the main thread + } + + // running in another thread + void *data; // "data" is a pointer to your user data + Fl::awake(do_something, data); // call something in main thread +\endcode + + +FLTK supports multiple platforms, some of them which do not +allow any other but the main thread to handle system events and +open or close windows. The safe thing to do is to adhere to the +following rules for threads on all operating systems: + + +\li Don't show() or hide()anything that contains + widgets derived from Fl_Window, including dialogs, file + choosers, subwindows or Fl_GL_Windows + +\li Don't call Fl::wait(), Fl::flush() or any + related methods that will handle system messages + +\li Don't start or cancel timers + +\li Don't change window decorations or titles + +\li The make_current() method may or may not work well for + regular windows, but should always work for Fl_GL_Windows + to allow for high speed rendering on graphics cards with multiple + pipelines + +See also: +void awake(void *message), +void lock(), +void *thread_message(), +void unlock(). + +\htmlonly +
+[Index]    +[Previous]  9 - Programming with FLUID  +[Next]  11 - Unicode and utf-8 Support  +\endhtmlonly +*/ diff --git a/documentation/src/basics.dox b/documentation/src/basics.dox new file mode 100644 index 000000000..1c2a615c8 --- /dev/null +++ b/documentation/src/basics.dox @@ -0,0 +1,352 @@ +/** + + \page basics 2 - FLTK Basics + +This chapter teaches you the basics of compiling programs +that use FLTK. + +\section basics_writing Writing Your First FLTK Program + +All programs must include the file . +In addition the program must include a header file for each +FLTK class it uses. Listing 1 shows a simple "Hello, +World!" program that uses FLTK to display the window. + +\par Listing 1 - "hello.cxx" +\code +#include +#include +#include + +int main(int argc, char **argv) { + Fl_Window *window = new Fl_Window(300,180); + Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!"); + box->box(FL_UP_BOX); + box->labelsize(36); + box->labelfont(FL_BOLD+FL_ITALIC); + box->labeltype(FL_SHADOW_LABEL); + window->end(); + window->show(argc, argv); + return Fl::run(); +} +\endcode + + + +After including the required header files, the program then creates a +window. All following widgets will automatically be children of this window. + +\code +Fl_Window *window = new Fl_Window(300,180); +\endcode + +Then we create a box with the "Hello, World!" string in it. FLTK automatically +adds the new box to window, the current grouping widget. + +\code +Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!"); +\endcode + +Next, we set the type of box and the size, font, and style of the label: + +\code +box->box(FL_UP_BOX); +box->labelsize(36); +box->labelfont(FL_BOLD+FL_ITALIC); +box->labeltype(FL_SHADOW_LABEL); +\endcode + +We tell FLTK that we will not add any more widgets to window. + +\code +window->end(); +\endcode + +Finally, we show the window and enter the FLTK event loop: + +\code +window->show(argc, argv); +return Fl::run(); +\endcode + +The resulting program will display the window in Figure 2-1. +You can quit the program by closing the window or pressing the +ESCape key. + +\image html hello.C.gif "Figure 2-1: The Hello, World! Window" + +\subsection basics_creating Creating the Widgets + +The widgets are created using the C++ new operator. For +most widgets the arguments to the constructor are: + +\code +Fl_Widget(x, y, width, height, label) +\endcode + +The x and y parameters determine where the +widget or window is placed on the screen. In FLTK the top left +corner of the window or screen is the origin (i.e. x = 0, y = +0) and the units are in pixels. + +The width and height parameters determine +the size of the widget or window in pixels. The maximum widget +size is typically governed by the underlying window system or +hardware. + +label is a pointer to a character string to label +the widget with or NULL. If not specified the label +defaults to NULL. The label string must be in static +storage such as a string constant because FLTK does not make a +copy of it - it just uses the pointer. + +\subsection basics_hierarchies Creating Widget hierarchies + +Widgets are commonly ordered into functional groups, which +in turn may be grouped again, creating a hierarchy of widgets. +FLTK makes it easy to fill groups by automatically adding all widgets +that are created between a myGroup->begin() and +myGroup->end(). In this example, myGroup +would be the current group. + +Newly created groups and their derived widgets implicitly call +begin() in the constructor, effectively adding all +subsequently created widgets to itself until end() +is called. + +Setting the current group to NULL will stop automatic +hierarchies. New widgets can now be added manually using +Fl_Group::add(...) and Fl_Group::insert(...). + +\subsection basics_getset Get/Set Methods + +box->box(FL_UP_BOX) sets the type of box the +Fl_Box draws, changing it from the default of +FL_NO_BOX, which means that no box is drawn. In our +"Hello, World!" example we use FL_UP_BOX, +which means that a raised button border will be drawn around +the widget. You can learn more about boxtypes in +Chapter 3. + +You could examine the boxtype in by doing +box->box(). FLTK uses method name overloading to make +short names for get/set methods. A "set" method is always of +the form "void name(type)", and a "get" method is always +of the form "type name() const". + +\subsection basics_redrawing Redrawing After Changing Attributes + +Almost all of the set/get pairs are very fast, short inline +functions and thus very efficient. However, the "set" methods +do not call redraw() - you have to call it +yourself. This greatly reduces code size and execution time. The +only common exceptions are value() which calls +redraw() and label() which calls +redraw_label() if necessary. + +\subsection basics_labels Labels + +All widgets support labels. In the case of window widgets, +the label is used for the label in the title bar. Our example +program calls the labelfont(), labelsize, +and labeltype() methods. + +All widgets support labels. In the case of window widgets, +the label is used for the label in the title bar. Our example +program calls the +labelfont, + labelsize, +and +labeltype +methods. + +The labelfont method sets the typeface and style +that is used for the label, which for this example we are using +FL_BOLD and FL_ITALIC. You can also specify +typefaces directly. + +The labelsize method sets the height of the font in pixels. + +The labeltype +method sets the type of label. FLTK supports normal, embossed, +and shadowed labels internally, and more types can be added as +desired. + +A complete list of all label options can be found in +Chapter 3. + +\subsection basics_showing Showing the Window + +The show() method shows the widget or window. For windows +you can also provide the command-line arguments to allow users to +customize the appearance, size, and position of your windows. + +\subsection basics_eventloop The Main Event Loop + +All FLTK applications (and most GUI applications in general) +are based on a simple event processing model. User actions such +as mouse movement, button clicks, and keyboard activity generate +events that are sent to an application. The application may then +ignore the events or respond to the user, typically by redrawing +a button in the "down" position, adding the text to an input +field, and so forth. + +FLTK also supports idle, timer, and file pseudo-events that +cause a function to be called when they occur. Idle functions +are called when no user input is present and no timers or files +need to be handled - in short, when the application is not doing +anything. Idle callbacks are often used to update a 3D display +or do other background processing. + +Timer functions are called after a specific amount of time +has expired. They can be used to pop up a progress dialog after +a certain amount of time or do other things that need to happen +at more-or-less regular intervals. FLTK timers are not 100% +accurate, so they should not be used to measure time intervals, +for example. + +File functions are called when data is ready to read or +write, or when an error condition occurs on a file. They are +most often used to monitor network connections (sockets) for +data-driven displays. + +FLTK applications must periodically check (Fl::check()) +or wait (Fl::wait()) for events or use the Fl::run() +method to enter a standard event processing loop. Calling +Fl::run() is equivalent to the following code: + +\code +while (Fl::wait()); +\endcode + +Fl::run() does not return until all of the windows +under FLTK control are closed by the user or your program. + +\section basics_standard_compiler Compiling Programs with Standard Compilers + +Under UNIX (and under Microsoft Windows when using the GNU development +tools) you will probably need to tell the compiler where to find the +header files. This is usually done using the -I option: + +\code +CC -I/usr/local/include ... +gcc -I/usr/local/include ... +\endcode + +The fltk-config script included with FLTK can be +used to get the options that are required by your compiler: + +\code +CC `fltk-config --cxxflags` ... +\endcode + +Similarly, when linking your application you will need to tell the +compiler to use the FLTK library: + +\code +CC ... -L/usr/local/lib -lfltk -lXext -lX11 -lm +gcc ... -L/usr/local/lib -lfltk -lXext -lX11 -lm +\endcode + +Aside from the "fltk" library, there is also a "fltk_forms" +library for the XForms compatibility classes, "fltk_gl" for the +OpenGL and GLUT classes, and "fltk_images" for the image file +classes, Fl_Help_Dialog widget, and system icon support. + +\note +The libraries are named "fltk.lib", "fltkgl.lib", "fltkforms.lib", +and "fltkimages.lib", respectively under Windows. + +As before, the fltk-config script included with FLTK can be +used to get the options that are required by your linker: + +\code +CC ... `fltk-config --ldflags` +\endcode + + + +The forms, GL, and images libraries are included with the "--use-foo" +options, as follows: + +\code +CC ... `fltk-config --use-forms --ldflags` +CC ... `fltk-config --use-gl --ldflags` +CC ... `fltk-config --use-images --ldflags` +CC ... `fltk-config --use-forms --use-gl --use-images --ldflags` +\endcode + +Finally, you can use the fltk-config script to +compile a single source file as a FLTK program: + +\code +fltk-config --compile filename.cpp +fltk-config --use-forms --compile filename.cpp +fltk-config --use-gl --compile filename.cpp +fltk-config --use-images --compile filename.cpp +fltk-config --use-forms --use-gl --use-images --compile filename.cpp +\endcode + +Any of these will create an executable named filename. + +\section basics_visual_cpp Compiling Programs with Microsoft Visual C++ + +In Visual C++ you will need to tell the compiler where to +find the FLTK header files. This can be done by selecting +"Settings" from the "Project" menu and then changing the +"Preprocessor" settings under the "C/C++" tab. You will also +need to add the FLTK and WinSock2 (WS2_32.LIB) libraries to +the "Link" settings. + +You can build your Microsoft Windows applications as Console or +WIN32 applications. If you want to use the standard C main() +function as the entry point, FLTK includes a WinMain() +function that will call your main() function for you. + +Note: The Visual C++ 5.0 optimizer is known to cause problems with +many programs. We only recommend using the "Favor Small Code" +optimization setting. The Visual C++ 6.0 optimizer seems to be much +better and can be used with the "optimized for speed" setting. + +\section basics_naming Naming + +All public symbols in FLTK start with the characters 'F' and 'L': + +\li Functions are either Fl::foo() or fl_foo(). + +\li Class and type names are capitalized: Fl_Foo. + +\li Constants and enumerations + are uppercase: FL_FOO. + +\li All header files start with . + + + +\section basics_headerfiles Header Files + +The proper way to include FLTK header files is: + +\code +#include +\endcode + +\note +Case is significant on many operating systems, +and the C standard uses the forward slash (/) to +separate directories. Do not use any of the following +include lines: + +\code +#include +#include +#include +\endcode + +\htmlonly +
+[Index]    +[Previous]  1 - Introduction to FLTK  +[Next]  3 - Common Widgets and Attributes  +\endhtmlonly +*/ diff --git a/documentation/src/boxtypes.gif b/documentation/src/boxtypes.gif new file mode 100644 index 000000000..bf1b67fd3 Binary files /dev/null and b/documentation/src/boxtypes.gif differ diff --git a/documentation/src/buttons.gif b/documentation/src/buttons.gif new file mode 100644 index 000000000..cadf9a3a5 Binary files /dev/null and b/documentation/src/buttons.gif differ diff --git a/documentation/src/charts.gif b/documentation/src/charts.gif new file mode 100644 index 000000000..c68e66ed5 Binary files /dev/null and b/documentation/src/charts.gif differ diff --git a/documentation/src/choice.gif b/documentation/src/choice.gif new file mode 100644 index 000000000..c446830d9 Binary files /dev/null and b/documentation/src/choice.gif differ diff --git a/documentation/src/clock.gif b/documentation/src/clock.gif new file mode 100644 index 000000000..fd7295306 Binary files /dev/null and b/documentation/src/clock.gif differ diff --git a/documentation/src/common.dox b/documentation/src/common.dox new file mode 100644 index 000000000..8374fe6ed --- /dev/null +++ b/documentation/src/common.dox @@ -0,0 +1,618 @@ +/** + + \page common 3 - Common Widgets and Attributes + +This chapter describes many of the widgets that are provided +with FLTK and covers how to query and set the standard +attributes. + +\section common_buttons Buttons + +FLTK provides many types of buttons: + +\li Fl_Button - A standard push button. + +\li Fl_Check_Button - A button with a check box. + +\li Fl_Light_Button - A push button with a light. + +\li Fl_Repeat_Button - A push button that repeats when held. + +\li Fl_Return_Button - A push button that is activated by the + Enter key. + +\li Fl_Round_Button - A button with a radio circle. + +\image html buttons.gif "Figure 3-1: FLTK Button Widgets" + +All of these buttons just need the corresponding + header file. The constructor +takes the bounding box of the button and optionally a label +string: + +\code +Fl_Button *button = new Fl_Button(x, y, width, height, "label"); +Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height); +Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label"); +\endcode + +Each button has an associated type() which allows +it to behave as a push button, toggle button, or radio button: + +\code +button->type(FL_NORMAL_BUTTON); +lbutton->type(FL_TOGGLE_BUTTON); +rbutton->type(FL_RADIO_BUTTON); +\endcode + +For toggle and radio buttons, the value() method returns +the current button state (0 = off, 1 = on). The set() and +clear() methods can be used on toggle buttons to turn a +toggle button on or off, respectively. +Radio buttons can be turned on with the setonly() +method; this will also turn off other radio buttons in the same +group. + +\section common_text Text + +FLTK provides several text widgets for displaying and receiving text: + +\li Fl_Input - A one-line text input field. + +\li Fl_Output - A one-line text output field. + +\li Fl_Multiline_Input - A multi-line text input field. + +\li Fl_Multiline_Output - A multi-line text output field. + +\li Fl_Text_Display - A multi-line text display widget. + +\li Fl_Text_Editor - A multi-line text editing widget. + +\li Fl_Help_View - A HTML text display widget. + +The Fl_Output and Fl_Multiline_Output +widgets allow the user to copy text from the output field but +not change it. + +The value() method is used to get or set the +string that is displayed: + +\code +Fl_Input *input = new Fl_Input(x, y, width, height, "label"); +input->value("Now is the time for all good men..."); +\endcode + +The string is copied to the widget's own storage when you set +the value() of the widget. + +The Fl_Text_Display and Fl_Text_Editor +widgets use an associated Fl_Text_Buffer class for the +value, instead of a simple string. + + + +\section common_valuators Valuators + +Unlike text widgets, valuators keep track of numbers instead of +strings. FLTK provides the following valuators: + +\li Fl_Counter - A widget with arrow buttons that shows the current value. + +\li Fl_Dial - A round knob. + +\li Fl_Roller - An SGI-like dolly widget. + +\li Fl_Scrollbar - A standard scrollbar widget. + +\li Fl_Slider - A scrollbar with a knob. + +\li Fl_Value_Slider - A slider that shows the current value. + +\image html valuators.gif "Figure 3-2: FLTK valuator widgets" + +The value() method gets and sets the current value +of the widget. The minimum() and maximum() +methods set the range of values that are reported by the +widget. + + + +\section common_groups Groups + +The Fl_Group widget class is used as a general +purpose "container" widget. Besides grouping radio +buttons, the groups are used to encapsulate windows, tabs, and +scrolled windows. The following group classes are available +with FLTK: + +\li Fl_Double_Window - A double-buffered window on the screen. + +\li Fl_Gl_Window - An OpenGL window on the screen. + +\li Fl_Group - The base container class; can be used to group + any widgets together. + +\li Fl_Pack - A collection of widgets that are packed into the group area. + +\li Fl_Scroll - A scrolled window area. + +\li Fl_Tabs - Displays child widgets as tabs. + +\li Fl_Tile - A tiled window area. + +\li Fl_Window - A window on the screen. + +\li Fl_Wizard - Displays one group of widgets at a time. + +\section common_sizeposition Setting the Size and Position of Widgets + +The size and position of widgets is usually set when you +create them. You can access them with the x(), +y(), w(), and h() methods. + +You can change the size and position by using the +position(), resize(), and size() +methods: + +\code +button->position(x, y); +group->resize(x, y, width, height); +window->size(width, height); +\endcode + +If you change a widget's size or position after it is +displayed you will have to call redraw() on the +widget's parent. + + +\section common_colors Colors + +FLTK stores the colors of widgets as an 32-bit unsigned +number that is either an index into a color palette of 256 +colors or a 24-bit RGB color. The color palette is not +the X or WIN32 colormap, but instead is an internal table with +fixed contents. + +There are symbols for naming some of the more common colors: + +\li FL_BLACK + +\li FL_RED + +\li FL_GREEN + +\li FL_YELLOW + +\li FL_BLUE + +\li FL_MAGENTA + +\li FL_CYAN + +\li FL_WHITE + +\li FL_WHITE + +These symbols are the default colors for all FLTK widgets. They are +explained in more detail in the chapter +Enumerations + +\li FL_FOREGROUND_COLOR + +\li FL_BACKGROUND_COLOR + +\li FL_INACTIVE_COLOR + +\li FL_SELECTION_COLOR + +RGB colors can be set using the fl_rgb_color() function: + +\code +Fl_Color c = fl_rgb_color(85, 170, 255); +\endcode + +The widget color is set using the color() method: + +\code +button->color(FL_RED); +\endcode + +Similarly, the label color is set using the labelcolor() +method: + +\code +button->labelcolor(FL_WHITE); +\endcode + + +\section common_boxtypes Box Types + +The type Fl_Boxtype stored and returned in Fl_Widget::box() +is an enumeration defined in Enumerations.H. + +Figure 3-3 shows the standard box types included with FLTK. + +\image html boxtypes.gif "Figure 3-3: FLTK box types" + +FL_NO_BOX means nothing is drawn at all, so whatever is +already on the screen remains. The FL_..._FRAME types only +draw their edges, leaving the interior unchanged. The blue color in +Figure 3-3 is the area that is not drawn by the frame types. + +\subsection common_boxtypes Making Your Own Boxtypes + +You can define your own boxtypes by making a small function that draws +the box and adding it to the table of boxtypes. + +
+ + + +
Note: +

This interface has changed in FLTK 2.0! +

+ +\par The Drawing Function + +The drawing function is passed the bounding box and background color +for the widget: + +\code +void xyz_draw(int x, int y, int w, int h, Fl_Color c) { +... +} +\endcode + + + +A simple drawing function might fill a rectangle with the +given color and then draw a black outline: + +\code +void xyz_draw(int x, int y, int w, int h, Fl_Color c) { + fl_color(c); + fl_rectf(x, y, w, h); + fl_color(FL_BLACK); + fl_rect(x, y, w, h); +} +\endcode + + +\par Fl_Boxtype fl_down(Fl_Boxtype) + +fl_down returns the "pressed" or "down" version of a box. +If no "down" version of a given box exists, the behavior of this function +is undefined and some random box or frame is returned. +See also: fl_frame drawing. + + +\par Fl_Boxtype fl_frame(Fl_Boxtype) + +fl_frame returns the unfilled, frame-only version of a box. +If no frame version of a given box exists, the behavior of this function +is undefined and some random box or frame is returned. +See also: fl_frame drawing. + + +\par Fl_Boxtype fl_box(Fl_Boxtype) + +fl_box returns the filled version of a frame. +If no filled version of a given frame exists, the behavior of this function +is undefined and some random box or frame is returned. +See also: fl_frame. + +\par Adding Your Box Type + +The Fl::set_boxtype() method adds or replaces the specified box type: + +\code +#define XYZ_BOX FL_FREE_BOXTYPE + +Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2); +\endcode +The last 4 arguments to Fl::set_boxtype() are the +offsets for the x, y, width, and height values that should be +subtracted when drawing the label inside the box. + +A complete box design contains four box types in this order: +a filled, neutral box (UP_BOX), a filled, depressed box +(DOWN_BOX), and the same as outlines only (UP_FRAME +and DOWN_FRAME). The function +fl_down(Fl_Boxtype) +expects the neutral design on a boxtype with a numerical +value evenly divideable by two. +fl_frame(Fl_Boxtype) +expects the UP_BOX design at a value divideable by four. + + +\section common_labels Labels and Label Types + +The label(), align(), labelfont(), +labelsize(), labeltype(), image(), and +deimage() methods control the labeling of widgets. + +\par label() + +The label() method sets the string that is displayed +for the label. Symbols can be included with the label string by +escaping them using the "@" symbol - "@@" displays a single at +sign. Figure 3-4 shows the available symbols. + +\image html symbols.gif "Figure 3-4: FLTK label symbols" + + + +The @ sign may also be followed by the following optional +"formatting" characters, in this order: + +\li '#' forces square scaling, rather than distortion to the widget's shape. + +\li +[1-9] or -[1-9] tweaks the scaling a little bigger or smaller. + +\li '$' flips the symbol horizontaly, '%' flips it verticaly. + +\li [0-9] - rotates by a multiple of 45 degrees. '5' and '6' do no rotation + while the others point in the direction of that key on a numeric keypad. + '0', followed by four more digits rotates the symbol by that amount in + degrees. + +Thus, to show a very large arrow pointing downward you would use the +label string "@+92->". + +\par align() + +The align() method positions the label. The following +constants are defined and may be OR'd together as needed: + +\li FL_ALIGN_CENTER - center the label in the widget. + +\li FL_ALIGN_TOP - align the label at the top of the widget. + +\li FL_ALIGN_BOTTOM - align the label at the bottom of the + widget. + +\li FL_ALIGN_LEFT - align the label to the left of the widget. + +\li FL_ALIGN_RIGHT - align the label to the right of the + widget. + +\li FL_ALIGN_INSIDE - align the label inside the widget. + +\li FL_ALIGN_CLIP - clip the label to the widget's bounding + box. + +\li FL_ALIGN_WRAP - wrap the label text as needed. + +\li FL_TEXT_OVER_IMAGE - show the label text over the image. + +\li FL_IMAGE_OVER_TEXT - show the label image over the text (default). + + +\par labeltype() + +The labeltype() method sets the type of the label. The +following standard label types are included: + +\li FL_NORMAL_LABEL - draws the text. + +\li FL_NO_LABEL - does nothing. + +\li FL_SHADOW_LABEL - draws a drop shadow under the text. + +\li FL_ENGRAVED_LABEL - draws edges as though the text is engraved. + +\li FL_EMBOSSED_LABEL - draws edges as thought the text is raised. + +\li FL_ICON_LABEL - draws the icon associated with the text. + +\par image() and deimage() + +The image() and deimage() methods set an image that +will be displayed with the widget. The deimage() method sets the +image that is shown when the widget is inactive, while the image() +method sets the image that is shown when the widget is active. + +To make an image you use a subclass of +Fl_Image. + +\par Making Your Own Label Types + +Label types are actually indexes into a table of functions +that draw them. The primary purpose of this is to use this to +draw the labels in ways inaccessible through the +fl_font mechanisim (e.g. FL_ENGRAVED_LABEL) or +with program-generated letters or symbology. + +
+ + + +
Note: +

This interface has changed in FLTK 2.0! +

+ +\par Label Type Functions + +To setup your own label type you will need to write two +functions: one to draw and one to measure the label. The draw +function is called with a pointer to a Fl_Label +structure containing the label information, the bounding box for +the label, and the label alignment: + +\code +void xyz_draw(const Fl_Label *label, int x, int y, int w, int h, Fl_Align align) { +... +} +\endcode + +The label should be drawn inside this bounding box, +even if FL_ALIGN_INSIDE is not enabled. The function +is not called if the label value is NULL. + +The measure function is called with a pointer to a +Fl_Label structure and references to the width and +height: + +\code +void xyz_measure(const Fl_Label *label, int &w, int &h) { +... +} +\endcode + +The function should measure the size of the label and set +w and h to the size it will occupy. + +\par Adding Your Label Type + +The Fl::set_labeltype method creates a label type +using your draw and measure functions: + +\code +#define XYZ_LABEL FL_FREE_LABELTYPE + +Fl::set_labeltype(XYZ_LABEL, xyz_draw, xyz_measure); +\endcode + +The label type number n can be any integer value +starting at the constant FL_FREE_LABELTYPE. Once you +have added the label type you can use the labeltype() +method to select your label type. + +The Fl::set_labeltype method can also be used to overload +an existing label type such as FL_NORMAL_LABEL. + + +\par Making your own symbols + +It is also possible to define your own drawings and add +them to the symbol list, so they can be rendered as part of +any label. + +To create a new symbol, you implement a drawing function +void drawit(Fl_Color c) which typically uses the +complex drawing functions +to generate a vector shape inside a two-by-two units sized box +around the origin. This function is then linked into the symbols +table using fl_add_symbol: + +\code +int fl_add_symbol(const char *name, void (*drawit)(Fl_Color), int scalable) +\endcode + +name is the name of the symbol without the "@"; scalable +must be set to 1 if the symbol is generated using scalable vector drawing +functions. + +\code +int fl_draw_symbol(const char *name,int x,int y,int w,int h,Fl_Color col) +\endcode + +This function draws a named symbol fitting the given rectangle. + +\section common_callbacks Callbacks + +Callbacks are functions that are called when the value of a +widget changes. A callback function is sent a Fl_Widget +pointer of the widget that changed and a pointer to data that +you provide: + +\code +void xyz_callback(Fl_Widget *w, void *data) { +... +} +\endcode + +The callback() method sets the callback function for a +widget. You can optionally pass a pointer to some data needed for the +callback: + +\code +int xyz_data; + +button->callback(xyz_callback, &xyz_data); +\endcode + +Normally callbacks are performed only when the value of the +widget changes. You can change this using the Fl_Widget::when() +method: + +\code +button->when(FL_WHEN_NEVER); +button->when(FL_WHEN_CHANGED); +button->when(FL_WHEN_RELEASE); +button->when(FL_WHEN_RELEASE_ALWAYS); +button->when(FL_WHEN_ENTER_KEY); +button->when(FL_WHEN_ENTER_KEY_ALWAYS); +button->when(FL_WHEN_CHANGED | FL_WHEN_NOT_CHANGED); +\endcode + +
+ + + +
Note: + +

You cannot delete a widget inside a callback, as the + widget may still be accessed by FLTK after your callback + is completed. Instead, use the Fl::delete_widget() + method to mark your widget for deletion when it is safe + to do so. + +

Hint: + +

Many programmers new to FLTK or C++ try to use a + non-static class method instead of a static class method + or function for their callback. Since callbacks are done + outside a C++ class, the this pointer is not + initialized for class methods. + +

To work around this problem, define a static method + in your class that accepts a pointer to the class, and + then have the static method call the class method(s) as + needed. The data pointer you provide to the + callback() method of the widget can be a + pointer to the instance of your class. + +\code +class Foo { + void my_callback(Fl_Widget *w); + static void my_static_callback(Fl_Widget *w, void *f) { ((Foo *)f)->my_callback(w); } + ... +} + +... + +w->callback(my_static_callback, (void *)this); +\endcode +

+ +\section common_shortcuts Shortcuts + +Shortcuts are key sequences that activate widgets such as +buttons or menu items. The shortcut() method sets the +shortcut for a widget: + +\code +button->shortcut(FL_Enter); +button->shortcut(FL_SHIFT + 'b'); +button->shortcut(FL_CTRL + 'b'); +button->shortcut(FL_ALT + 'b'); +button->shortcut(FL_CTRL + FL_ALT + 'b'); +button->shortcut(0); // no shortcut +\endcode + +The shortcut value is the key event value - the ASCII value +or one of the special keys like +FL_Enter - +combined with any modifiers like Shift, +Alt, and Control. + +\htmlonly +
+[Index]    +[Previous]  2 - FLTK Basics  +[Next]  4 - Designing a Simple Text Editor  + +\endhtmlonly +*/ diff --git a/documentation/src/counter.gif b/documentation/src/counter.gif new file mode 100644 index 000000000..6e05a65e7 Binary files /dev/null and b/documentation/src/counter.gif differ diff --git a/documentation/src/cubeview.gif b/documentation/src/cubeview.gif new file mode 100644 index 000000000..024cc55d2 Binary files /dev/null and b/documentation/src/cubeview.gif differ diff --git a/documentation/src/development.dox b/documentation/src/development.dox new file mode 100644 index 000000000..bbb5ba791 --- /dev/null +++ b/documentation/src/development.dox @@ -0,0 +1,461 @@ +/** + + \page development I - Developer Information + +This chapter describes FLTK development and documentation. + +\note documentation with doxygen will be described here. + + +

Example

+ +\note + +In the following code example(s) "*" will be replaced by "#" +as a temporary solution. + +\code + + +/## \file + Fl_Clock, Fl_Clock_Output widgets . #/ + + +/## + \class Fl_Clock_Output + \brief This widget can be used to display a program-supplied time. + + The time shown on the clock is not updated. To display the current time, + use Fl_Clock instead. + + \image html clock.gif + + \image html round_clock.gif + #/ + + /## + Returns the displayed time. + Returns the time in seconds since the UNIX epoch (January 1, 1970). + \see value(ulong) + #/ + ulong value() const {return value_;} + +/## + Set the displayed time. + Set the time in seconds since the UNIX epoch (January 1, 1970). + \param[in] v seconds since epoch + \see value() + #/ +void Fl_Clock_Output::value(ulong v) { + [...] +} + +/## + Create an Fl_Clock widget using the given position, size, and label string. + The default boxtype is \c FL_NO_BOX. + \param[in] X, Y, W, H position and size of the widget + \param[in] L widget label, default is no label + #/ +Fl_Clock::Fl_Clock(int X, int Y, int W, int H, const char #L) + : Fl_Clock_Output(X, Y, W, H, L) {} + +/## + Create an Fl_Clock widget using the given boxtype, position, size, and + label string. + \param[in] t boxtype + \param[in] X, Y, W, H position and size of the widget + \param[in] L widget label, default is no label + #/ +Fl_Clock::Fl_Clock(uchar t, int X, int Y, int W, int H, const char #L) + : Fl_Clock_Output(X, Y, W, H, L) { + type(t); + box(t==FL_ROUND_CLOCK ? FL_NO_BOX : FL_UP_BOX); +} + + +\endcode + + +\note + +From Duncan: (will be removed later, just for now as a reminder) + +5. I've just added comments for the fl_color_chooser() functions, and + in order to keep them and the general Function Reference information + for them together, I created a new doxygen group, and used \\ingroup + in the three comment blocks. This creates a new Modules page (which + may not be what we want) with links to it from the File Members and + Fl_Color_Chooser.H pages. It needs a bit more experimentation on my + part unless someone already knows how this should be handled. (Maybe + we can add it to a functions.dox file that defines a functions group + and do that for all of the function documentation?) + +\b Update: the trick is not to create duplicate entries in a new group, but + to move the function information into the doxygen comments for the + class, and use the navigation links provided. Simply using \\relatesalso + as the first doxygen command in the function's comment puts it in the + appropriate place. There is no need to have \\defgroup and \\ingroup as + well, and indeed they don't work. So, to summarize: +\code +Gizmo.H + /## \class Gizmo + A gizmo that does everything + #/ + class Gizmo { + etc + }; + extern int popup_gizmo(...); + +Gizmo.cxx: + /## \relatesalso Gizmo + Pops up a gizmo dialog with a Gizmo in it + #/ + int popup_gizmo(...); +\endcode + +

Example comment:

+ +You can use HTML comment statements to embed comments in doxygen comment blocks. +These comments will not be visible in the generated document. + + The following text is a developer comment. + + This will be visible again. + +\code + The following text is a developer comment. + + This will be visible again. +\endcode + + +

Different Headlines:

+ +\code +

Headline in big text (H1)

+

Headline in big text (H2)

+

Headline in big text (H3)

+

Headline in big text (H4)

+\endcode + +

Headline in big text (H1)

+

Headline in big text (H2)

+

Headline in big text (H3)

+

Headline in big text (H4)

+ + +\section development_non-ascii Non-ASCII characters + + if you came here from below: back to \ref development_links + +\code + Doxygen understands many HTML quoting characters like + ", ü, ç, Ç, but not all HTML quoting characters. +\endcode + +This will appear in the document: + + Doxygen understands many HTML quoting characters like + ", ü, ç, Ç, but not all HTML quoting characters. + +For further informations about quoting see + \b http://www.stack.nl/~dimitri/doxygen/htmlcmds.html + +

Example with UTF-8 encoded text

+ +\code + +

Assuming that the following source code was written on MS Windows, + this example will output the correct label on OS X and X11 as well. + Without the conversion call, the label on OS X would read + Fahrvergn¸gen with a deformed umlaut u ("cedille", + html "¸"). + \#code + btn = new Fl_Button(10, 10, 300, 25); + btn->copy_label(fl_latin1_to_local("Fahrvergnügen")); + \#endcode + + \note If your application uses characters that are not part of both + encodings, or it will be used in areas that commonly use different + code pages, you might consider upgrading to FLTK 2 which supports + UTF-8 encoding. + + \todo This is an example todo entry, please ignore ! + +\endcode + +This will appear in the document: + +

Assuming that the following source code was written on MS Windows, + this example will output the correct label on OS X and X11 as well. + Without the conversion call, the label on OS X would read + Fahrvergn¸gen with a deformed umlaut u ("cedille", + html "¸"). + \#code + btn = new Fl_Button(10, 10, 300, 25); + btn->copy_label(fl_latin1_to_local("Fahrvergnügen")); + \#endcode + + \note If your application uses characters that are not part of both + encodings, or it will be used in areas that commonly use different + code pages, you might consider upgrading to FLTK 2 which supports + UTF-8 encoding. + + \todo This is an example todo entry, please ignore ! + +\section development_structure Document Structure + + \li \b \\page creates a named page + \li \b \\section creates a named section within that page + \li \b \\subsection creates a named subsection within the current section + \li \b \\subsubsection creates a named subsubsection within the current subsection + +All these statements take a "name" as their first argument, and a title +as their second argument. The title can contain spaces. + +The page, section, and subsection titles are formatted in blue color and +a size like \b "

", \b "

", and \b "

", and \b "

", respectively. + +By FLTK documentation convention, a file like this one with a doxygen +documentation chapter has the name ".dox". +The \b \\page statement at the top of the page is +"\page This is the title". +Sections within a documentation page must be called \b "_
", +where \b "" is the name part of the file, and \b "
" is a +unique section name within the page that can be referenced in links. The +same for subsections and subsubsections. + +These doxygen page and section commands work only in special documentation +chapters, not within normal source or header documentation blocks. However, +links \b from normal (e.g. class) documentation \b to documentation sections +\b do \b work. + +This page has + \code + \page development I - Developer Information + \endcode +at its top. + +This section is + \code + \section development_structure Document structure + \endcode + +The following section is + \code + \section development_links Creating Links + \endcode + + +\section development_links Creating Links + +Links to other documents and external links can be embedded with + \li normal HTML links + \li HTML links without markup - doxygen creates "http://..." + links automatically + \li links to other doxygen chapters with the \\ref statments + \li links to named sections within the same or other doxygen chapters, + if they are defined there with a \\section statement + +\code + see chapter \ref unicode creates a link to the named chapter unicode + that has been created with a \subpage statement. + + see chapter 5 creates + a link to a named html anchor "character_encoding" within the same file. + + For further informations about quoting see + http://www.stack.nl/~dimitri/doxygen/htmlcmds.html + + Bold link text: you can see the \e old online documentation + of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html + + see section \ref development_non-ascii +\endcode + +appears as: + + see chapter \ref unicode creates a link to the named chapter unicode + that has been created with a \\subpage statement. + + see chapter 5 creates + a link to a named html anchor "character_encoding" within the same file. + + For further informations about quoting see + http://www.stack.nl/~dimitri/doxygen/htmlcmds.html + + Bold link text: you can see the \e old online documentation + of FLTK 1.3 at \b http://www.fltk.org/doc-1.3/toc.html + + see section \ref development_non-ascii + +\section development_old-links Changing Old Links + +Old HTML links and anchors in text documentation pages should be changed +as follows: + +\code +

Fl::event_*() methods

+ +becomes: + + +\section events_event_xxx Fl::event_*() methods +\endcode + +The additional HTML "" statement is temporary needed, until +all links (references) are modified, then: + +\code +

Fl::event_*() methods

+ +becomes: + +\section events_event_xxx Fl::event_*() methods +\endcode + +The "\section" statement can also be a "\subsection" or "\subsubsection" +statement. + +The references (in this example from index.dox) are changed as follows: + +\code + + \subpage events + + + + + +becomes: + + \subpage events + + + \li \ref events_event_xxx + \li \ref events_propagation + + +\endcode + + +\section development_paragraphs Paragraph Layout + +There is no real need to use HTML \ and \ tags within the text +to tell doxygen to start or stop a paragraph. In most cases, when doxygen +encounters a blank line or some, but not all, \b \\commands in the text it +knows that it as reached the start or end of a paragraph. Doxygen also +offers the \b \\par command for special paragraph handling. It can be used +to provide a paragraph title and also to indent a paragraph. Unfortunately +\b \\par won't do what you expect if you want to have doxygen links and +sometimes html tags don't work either. + + + \verbatim + \par Normal Paragraph with title + + This paragraph will have a title, but because there is a blank line + between the \par and the text, it will have the normal layout. + + \par Indented Paragraph with title + This paragraph will also have a title, but because there is no blank + line between the \par and the text, it will be indented. + + \par + It is also possible to have an indented paragraph without title. + This is how you indent subsequent paragraphs. + + \par No link to Fl_Widget::draw() + Note that the paragraph title is treated as plain text. + Doxygen type links will not work. + HTML characters and tags may or may not work. + + Fl_Widget::draw() links and "html" tags work
+ \par + Use a single line ending with
for complicated paragraph titles. + \endverbatim + +The above code produces the following paragraphs: + + \par Normal Paragraph with title + + This paragraph will have a title, but because there is a blank line + between the \\par and the text, it will have the normal layout. + + \par Indented Paragraph with title + This paragraph will also have a title, but because there is no blank + line between the \\par and the text, it will be indented. + + \par + It is also possible to have an indented paragraph without title. + This is how you indent subsequent paragraphs. + + \par No link to Fl_Widget::draw() + Note that the paragraph title is treated as plain text. + Doxygen type links will not work. + HTML characters and tags may or may not work. + + Fl_Widget::draw() links and "html" tags work
+ \par + Use a single line ending with \ for complicated paragraph titles. + + +\section development_html_footer Hack for missing "tiny.gif" file + + \todo + *HACK* : include image file for footer. Doxygen does not include + the file "tiny.gif" from "html_footer" in its output html dir. + Find out, how this can be done, or avoid using an image in + the HTML footer. + + \image html tiny.gif + + +\section development_navigation_test 5 Navigation Proposals + +\htmlonly +
+\link migration_1_3 [ Previous ] \endlink + [ Index ] + Next: \ref license + +
+[ Index ] + Previous: \ref migration_1_3 + Next: \ref license + +
+[ Index ]
+ Previous: \ref migration_1_3
+ Next: \ref license + +
+[ Index ] + Previous: \ref migration_1_3 + Next: \ref license + +
+\link migration_1_3 [ Previous ] \endlink + [ Top ] +\link license [ Next ] \endlink + +
+
+
+ +\section development_proposed_nav Proposed (final) Navigation Elements + +See below. + +
+[Index]    +[Previous]  + \ref migration_1_3    +[Next]  + \ref license + +\endhtmlonly +*/ diff --git a/documentation/src/dial.gif b/documentation/src/dial.gif new file mode 100644 index 000000000..e52e18038 Binary files /dev/null and b/documentation/src/dial.gif differ diff --git a/documentation/src/drawing.dox b/documentation/src/drawing.dox new file mode 100644 index 000000000..ea47d8fe2 --- /dev/null +++ b/documentation/src/drawing.dox @@ -0,0 +1,1013 @@ +/** + + \page drawing 5 - Drawing Things in FLTK + +This chapter covers the drawing functions that are provided with FLTK. + +\section sect_WhenCanYouDraw When Can You Draw Things in FLTK? + +There are only certain places you can execute drawing code in FLTK. +Calling these functions at other places will result in undefined behavior! + +\li The most common place is inside the virtual Fl_Widget::draw() method. + To write code here, you must subclass one of the existing Fl_Widget + classes and implement your own version of draw(). + +\li The most common place is inside the virtual method + Fl_Widget::draw(). + To write code here, you must subclass one of the existing Fl_Widget + classes and implement your own version of draw(). + +\li You can also write boxtypes and + labeltypes. These are small + procedures that can be called by existing + Fl_Widget::draw() + methods. These "types" are identified by an 8-bit index that is stored + in the widget's box(), labeltype(), and possibly other properties. + +\li You can call Fl_Window::make_current() to do incremental update of a + widget. Use Fl_Widget::window() to find the window. + + +\section sect_DrawingFunctions Drawing Functions + +To use the drawing functions you must first include the +header file. FLTK provides the following types of drawing functions: + +\li \ref ssect_Boxes +\li \ref ssect_Clipping +\li \ref drawing_colors +\li \ref ssect_Lines +\li \ref ssect_Fast +\li \ref ssect_Complex +\li \ref ssect_Text +\li \ref ssect_Fl_Image +\li \ref ssect_Overlay +\li \ref ssect_Offscreen + + +\subsection ssect_Boxes Boxes + +FLTK provides three functions that can be used to draw boxes for buttons +and other UI controls. Each function uses the supplied upper-lefthand corner +and width and height to determine where to draw the box. + + +void fl_draw_box(Fl_Boxtype b, int x, int y, int w, int h, Fl_Color c); + +\par +The first box drawing function is fl_draw_box() +which draws a standard boxtype \a b in the specified color \a c . + + +void fl_frame(const char *s, int x, int y, int w, int h) + +\par +The fl_frame() function draws a series of line segments around the +given box. The string \a s must contain groups of 4 letters which specify +one of 24 standard grayscale values, where 'A' is black and 'X' is white. +The order of each set of 4 characters is: top, left, bottom, right. The +results of calling fl_frame() with a string that is not a multiple +of 4 characters in length are undefined. + +\par +The only difference between this function and fl_frame2() is the +order of the line segments. + +\par +See also: fl_frame boxtype. + + +void fl_frame2(const char *s, int x, int y, int w, int h); + +\par +The fl_frame2() function draws a series of line segments around +the given box. The string \a s must contain groups of 4 letters which +specify one of 24 standard grayscale values, where 'A' is black and 'X' is +white. The order of each set of 4 characters is: bottom, right, top, left. +The results of calling fl_frame2() with a string that is +not a multiple of 4 characters in length are undefined. + +\par +The only difference between this function and fl_frame() +is the order of the line segments. + + +\subsection ssect_Clipping Clipping + +You can limit all your drawing to a rectangular region by calling +fl_push_clip(), and put the drawings back by using fl_pop_clip(). +This rectangle is measured in pixels and is unaffected by the current +transformation matrix. + +In addition, the system may provide clipping when updating windows +which may be more complex than a simple rectangle. + + +void fl_clip(int x, int y, int w, int h)
+void fl_push_clip(int x, int y, int w, int h) + +\par +Intersect the current clip region with a rectangle and push this new +region onto the stack. The fl_clip() name is deprecated and +will be removed from future releases. + + +void fl_push_no_clip() + +\par +Pushes an empty clip region on the stack so nothing will be clipped. + + +void fl_pop_clip() + +\par +Restore the previous clip region. + +\par +\b Note: +You must call fl_pop_clip() once for every time you call fl_push_clip(). +If you return to FLTK with the clip stack not empty unpredictable results +occur. + + +int fl_not_clipped(int x, int y, int w, int h) + +\par +Returns non-zero if any of the rectangle intersects the current clip +region. If this returns 0 you don't have to draw the object. + +\par +\b Note: +Under X this returns 2 if the rectangle is partially clipped, +and 1 if it is entirely inside the clip region. + + +int fl_clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H) + +\par +Intersect the rectangle x,y,w,h with the current +clip region and returns the bounding box of the result in +X,Y,W,H. Returns non-zero if the resulting rectangle is +different than the original. This can be used to limit the +necessary drawing to a rectangle. \c W and \c H are +set to zero if the rectangle is completely outside the region. + + +void fl_clip_region(Fl_Region r)
+Fl_Region fl_clip_region() + +\par +Replace the top of the clip stack with a clipping region of any shape. +Fl_Region is an operating system specific type. The second form returns +the current clipping region. + + + +\section drawing_colors Colors + +FLTK manages colors as 32-bit unsigned integers. Values from +0 to 255 represent colors from the FLTK 1.0.x standard colormap +and are allocated as needed on screens without TrueColor +support. The Fl_Color enumeration type defines the +standard colors and color cube for the first 256 colors. All of +these are named with symbols in +. + +Color values greater than 255 are treated as 24-bit RGB +values. These are mapped to the closest color supported by the +screen, either from one of the 256 colors in the FLTK 1.0.x +colormap or a direct RGB value on TrueColor screens. You can +generate 24-bit RGB color values using the +fl_rgb_color() +function. + + +void fl_color(Fl_Color) + +\par +Sets the color for all subsequent drawing operations. + +\par +For colormapped displays, a color cell will be allocated out +of fl_colormap the first time you use a color. If the +colormap fills up then a least-squares algorithm is used to find +the closest color. + +Fl_Color fl_color() + +\par +Returns the last fl_color() that was set. This can +be used for state save/restore. + +void fl_color(uchar r, uchar g, uchar b) + +\par +Set the color for all subsequent drawing operations. The +closest possible match to the RGB color is used. The RGB color +is used directly on TrueColor displays. For colormap visuals the +nearest index in the gray ramp or color cube is used. + + +\subsection ssect_Lines Line Dashes and Thickness + +FLTK supports drawing of lines with different styles and +widths. Full functionality is not available under Windows 95, 98, +and Me due to the reduced drawing functionality these operating +systems provide. + + +void fl_line_style(int style, int width=0, char* dashes=0) + +\par +Set how to draw lines (the "pen"). If you change this it is your +responsibility to set it back to the default with +fl_line_style(0). + +\par +\b Note: +Because of how line styles are implemented on WIN32 systems, you must +set the line style after setting the drawing color. If you set the +color after the line style you will lose the line style settings! + +style is a bitmask which is a bitwise-OR of the following +values. If you don't specify a dash type you will get a solid +line. If you don't specify a cap or join type you will get a +system-defined default of whatever value is fastest. + +\li FL_SOLID      ------- +\li FL_DASH       - - - - +\li FL_DOT        ....... +\li FL_DASHDOT    - . - . +\li FL_DASHDOTDOT - .. - +\li FL_CAP_FLAT +\li FL_CAP_ROUND +\li FL_CAP_SQUARE (extends past end point 1/2 line width) +\li FL_JOIN_MITER (pointed) +\li FL_JOIN_ROUND +\li FL_JOIN_BEVEL (flat) + +width is the number of pixels thick to draw the lines. +Zero results in the system-defined default, which on both X and +Windows is somewhat different and nicer than 1. + + + +dashes is a pointer to an array of dash lengths, measured in +pixels. The first location is how long to draw a solid portion, the +next is how long to draw the gap, then the solid, etc. It is +terminated with a zero-length entry. A NULL pointer or a zero-length +array results in a solid line. Odd array sizes are not supported and +result in undefined behavior. + +\note +The dashes array does not work under Windows 95, 98, or Me, since those +operating systems do not support complex line styles. + + +\subsection ssect_Fast Drawing Fast Shapes + +These functions are used to draw almost all the FLTK widgets. +They draw on exact pixel boundaries and are as fast as possible. +Their behavior is duplicated exactly on all platforms FLTK is +ported. It is undefined whether these are affected by the +transformation matrix, +so you should only call these while the matrix is set to the +identity matrix (the default). + + +void fl_point(int x, int y) + +\par +Draw a single pixel at the given coordinates. + + +void fl_rectf(int x, int y, int w, int h)
+void fl_rectf(int x, int y, int w, int h) + +\par +Color a rectangle that exactly fills the given bounding box. + +void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) + +\par +Color a rectangle with "exactly" the passed +r,g,b color. On screens with less than 24 bits of +color this is done by drawing a solid-colored block using +fl_draw_image() +so that the correct color shade is produced. + + +void fl_rect(int x, int y, int w, int h)
+void fl_rect(int x, int y, int w, int h, Fl_Color c) + +\par +Draw a 1-pixel border inside this bounding box. + + +void fl_line(int x, int y, int x1, int y1)
+void fl_line(int x, int y, int x1, int y1, int x2, int y2) + +\par +Draw one or two lines between the given points. + + +void fl_loop(int x, int y, int x1, int y1, int x2, int y2)
+void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3) + +\par +Outline a 3 or 4-sided polygon with lines. + + +void fl_polygon(int x, int y, int x1, int y1, int x2, int y2)
+void fl_polygon(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3) + +\par +Fill a 3 or 4-sided polygon. The polygon must be convex. + + +void fl_xyline(int x, int y, int x1)
+void fl_xyline(int x, int y, int x1, int y2)
+void fl_xyline(int x, int y, int x1, int y2, int x3) + +\par +Draw horizontal and vertical lines. A horizontal line is +drawn first, then a vertical, then a horizontal. + + +void fl_yxline(int x, int y, int y1)
+void fl_yxline(int x, int y, int y1, int x2)
+void fl_yxline(int x, int y, int y1, int x2, int y3) + +\par +Draw vertical and horizontal lines. A vertical line is drawn +first, then a horizontal, then a vertical. + + +void fl_arc(int x, int y, int w, int h, double a1, double a2)
+void fl_pie(int x, int y, int w, int h, double a1, double a2) + +\par +Draw ellipse sections using integer coordinates. These +functions match the rather limited circle drawing code provided +by X and WIN32. The advantage over using +fl_arc +with floating point +coordinates is that they are faster because they often use the +hardware, and they draw much nicer small circles, since the +small sizes are often hard-coded bitmaps. + +If a complete circle is drawn it will fit inside the passed bounding +box. The two angles are measured in degrees counterclockwise from +3'oclock and are the starting and ending angle of the arc, a2 +must be greater or equal to a1. + +fl_arc() draws a series of lines to approximate the arc. +Notice that the integer version of fl_arc() has a different +number of arguments than the +fl_arc() +function described later in this chapter. + +fl_pie() draws a filled-in pie slice. This slice may +extend outside the line drawn by fl_arc(); to avoid this +use w - 1 and h - 1. + + +void fl_scroll(int X, int Y, int W, int H, int dx, int dy, +void (*draw_area)(void*, int,int,int,int), void* data) + +\par +Scroll a rectangle and draw the newly exposed portions. The contents +of the rectangular area is first shifted by dx and +dy pixels. The callback is then called for every newly +exposed rectangular area, + + +\subsection ssect_Complex Drawing Complex Shapes + +The complex drawing functions let you draw arbitrary shapes +with 2-D linear transformations. The functionality matches that +found in the Adobe® PostScript&tm; language. The +exact pixels that are filled are less defined than for the fast +drawing functions so that FLTK can take advantage of drawing +hardware. On both X and WIN32 the transformed vertices are +rounded to integers before drawing the line segments: this +severely limits the accuracy of these functions for complex +graphics, so use OpenGL when greater accuracy and/or performance +is required. + + +void fl_push_matrix()
+void fl_pop_matrix() + +\par +Save and restore the current transformation. The maximum +depth of the stack is 4. + + +void fl_scale(float x, float y)
+void fl_scale(float x)
+void fl_translate(float x, float y)
+void fl_rotate(float d)
+void fl_mult_matrix(float a, float b, float c, float d, float x, float y) + +\par +Concatenate another transformation onto the current one. The rotation +angle is in degrees (not radians) and is counter-clockwise. + + +double fl_transform_x(double x, double y)
+double fl_transform_y(double x, double y)
+double fl_transform_dx(double x, double y)
+double fl_transform_dy(double x, double y)
+void fl_transformed_vertex(double xf, double yf) + +\par +Transform a coordinate or a distance trough the current transformation matrix. +After transforming a coordinate pair, it can be added to the vertex +list without any forther translations using fl_transformed_vertex. + + +void fl_begin_points()
+void fl_end_points() + +\par +Start and end drawing a list of points. Points are added to +the list with fl_vertex. + + +void fl_begin_line()
+void fl_end_line() + +\par +Start and end drawing lines. + + +void fl_begin_loop()
+void fl_end_loop() + +\par +Start and end drawing a closed sequence of lines. + + +void fl_begin_polygon()
+void fl_end_polygon() + +\par +Start and end drawing a convex filled polygon. + + +void fl_begin_complex_polygon()
+void fl_gap()
+void fl_end_complex_polygon() + +\par +Start and end drawing a complex filled polygon. This polygon +may be concave, may have holes in it, or may be several +disconnected pieces. Call fl_gap() to separate loops of +the path. It is unnecessary but harmless to call +fl_gap() before the first vertex, after the last one, +or several times in a row. + +\par +\b Note: +For portability, you should only draw polygons that appear the same whether +"even/odd" or "non-zero" winding rules are used to fill them. Holes should +be drawn in the opposite direction of the outside loop. + +\par +fl_gap() should only be called between +fl_begin_complex_polygon() and +fl_end_complex_polygon(). To outline the polygon, use +fl_begin_loop() and replace each fl_gap() with +fl_end_loop();fl_begin_loop(). + + +void fl_vertex(float x, float y) + +\par +Add a single vertex to the current path. + + +void fl_curve(float x, float y, float x1, float y1, float x2, float y2, +float x3, float y3) + +\par +Add a series of points on a Bezier curve to the path. The curve ends +(and two of the points) are at x,y and x3,y3. + + +void fl_arc(float x, float y, float r, float start, float end) + +\par +Add a series of points to the current path on the arc of a +circle; you can get elliptical paths by using scale and rotate +before calling fl_arc(). x,y are the center of +the circle, and r is its radius. fl_arc() +takes start and end angles that are measured +in degrees counter-clockwise from 3 o'clock. If end is +less than start then it draws the arc in a clockwise +direction. + + +void fl_circle(float x, float y, float r) + +\par +fl_circle() is equivalent to fl_arc(...,0,360) but +may be faster. It must be the only thing in the path: if you +want a circle as part of a complex polygon you must use fl_arc(). + +\par +\b Note: +fl_circle() draws incorrectly if the transformation is both rotated and +non-square scaled. + + +\subsection ssect_Text Drawing Text + +All text is drawn in the +current font. +It is undefined whether this location or the characters are +modified by the current transformation. + + +void fl_draw(const char *, int x, int y)
+void fl_draw(const char *, int n, int x, int y) + +\par +Draw a nul-terminated string or an array of n characters +starting at the given location. Text is aligned to the left and to +the baseline of the font. To align to the bottom, subtract fl_descent() from +y. To align to the top, subtract fl_descent() and add fl_height(). +This version of fl_draw provides direct access to +the text drawing function of the underlying OS. It does not apply any +special handling to control characters. + +void fl_draw(const char *, int x, int y, int w, int h, +Fl_Align align, Fl_Image *img = 0, int draw_symbols = 1) + +\par +Fancy string drawing function which is used to draw all the +labels. The string is formatted and aligned inside the passed +box. Handles '\\t' and '\\n', expands all other control +characters to ^X, and aligns inside or against the edges of the +box described by x, y, w and h. See +Fl_Widget::align() for values for align. The value +FL_ALIGN_INSIDE is ignored, as this function always +prints inside the box. + +\par +If img is provided and is not NULL, the +image is drawn above or below the text as specified by the +align value. + +\par +The draw_symbols argument specifies whether or not +to look for symbol names starting with the "@" character. + +\par +The text length is limited to 1024 caracters per line. + + +void fl_measure(const char *, int &w, int &h, int draw_symbols = 1) + +\par +Measure how wide and tall the string will be when printed by +the fl_draw(...align) function. If the incoming +w is non-zero it will wrap to that width. + + +int fl_height() + +\par +Recommended minimum line spacing for the current font. You +can also just use the value of size passed to +fl_font(). + + +int fl_descent() + +\par +Recommended distance above the bottom of a fl_height() tall box to draw +the text at so it looks centered vertically in that box. + + +float fl_width(const char*)
+float fl_width(const char*, int n)
+float fl_width(uchar) + +\par +Return the pixel width of a nul-terminated string, a sequence of n +characters, or a single character in the current font. + + +const char *fl_shortcut_label(ulong) + +\par +Unparse a shortcut value as used by Fl_Button or Fl_Menu_Item +into a human-readable string like "Alt+N". This only +works if the shortcut is a character key or a numbered function +key. If the shortcut is zero an empty string is returned. The +return value points at a static buffer that is overwritten with +each call. + + +\subsection ssect_Fonts Fonts + +FLTK supports a set of standard fonts based on the Times, +Helvetica/Arial, Courier, and Symbol typefaces, as well as +custom fonts that your application may load. Each font is +accessed by an index into a font table. + +Initially only the first 16 faces are filled in. There are +symbolic names for them: FL_HELVETICA, +FL_TIMES, FL_COURIER, and modifier values +FL_BOLD and FL_ITALIC which can be added to +these, and FL_SYMBOL and FL_ZAPF_DINGBATS. +Faces greater than 255 cannot be used in Fl_Widget +labels, since Fl_Widget stores the index as a byte. + + +void fl_font(int face, int size) + +\par +Set the current font, which is then used by the routines +described above. You may call this outside a draw context if +necessary to call fl_width(), but on X this will open +the display. + +\par +The font is identified by a face and a +size. The size of the font is measured in +pixels and not "points". Lines should be spaced +size pixels apart or more. + + +int fl_font()
+int fl_size() + +\par +Returns the face and size set by the most recent call to +fl_font(a,b). This can be used to save/restore the font. + + +\subsection ssect_CharacterEncoding Character Encoding + +FLTK 1 supports western character sets using the eight bit encoding +of the user-selected global code page. For MS Windows and X11, the code +page is assumed to be Windows-1252/Latin1, a superset to ISO 8859-1. +On Mac OS X, we assume MacRoman. + +FLTK provides the functions fl_latin1_to_local(), +fl_local_to_latin1(), fl_mac_roman_to_local(), and +fl_local_to_mac_roman() to convert strings between both +encodings. These functions are only required if your source +code contains "C"-strings with international characters and +if this source will be compiled on multiple platforms. + + + +Assuming that the following source code was written on MS Windows, +this example will output the correct label on OS X and X11 as well. +Without the conversion call, the label on OS X would read +Fahrvergn¸gen with a deformed umlaut u ("cedille", +html "¸"). +\code + btn = new Fl_Button(10, 10, 300, 25); + btn->copy_label(fl_latin1_to_local("Fahrvergnügen")); +\endcode + +\note If your application uses characters that are not part of both + encodings, or it will be used in areas that commonly use different + code pages, you might consider upgrading to FLTK 2 which supports + UTF-8 encoding. + +\todo drawing.dox: I fixed the above encoding problem of these \¸ + and umlaut characters, but this text is obsoleted by FLTK 1.3 + with utf-8 encoding, or must be rewritten accordingly: + How to use native (e.g. Windows "ANSI", or ISO-8859-x) + encoding in embedded strings for labels, error messages + and more. Please check this (utf-8) encoding on different + OS'es and with different language and font environments. + +For more information about character encoding, unicode and utf-8 +see chapter \ref unicode. + + +\subsection ssect_Overlay Drawing Overlays + +These functions allow you to draw interactive selection rectangles +without using the overlay hardware. FLTK will XOR a single rectangle +outline over a window. + +void fl_overlay_rect(int x, int y, int w, int h);
+void fl_overlay_clear(); + +\par +fl_overlay_rect() draws a selection rectangle, erasing any +previous rectangle by XOR'ing it first. fl_overlay_clear() +will erase the rectangle without drawing a new one. + +\par +Using these functions is tricky. You should make a widget +with both a handle() and draw() method. +draw() should call fl_overlay_clear() before +doing anything else. Your handle() method should call +window()->make_current() and then +fl_overlay_rect() after FL_DRAG events, and +should call fl_overlay_clear() after a +FL_RELEASE event. + + + +\section drawing_images Drawing Images + +To draw images, you can either do it directly from data in +your memory, or you can create a Fl_Image object. The advantage of +drawing directly is that it is more intuitive, and it is faster +if the image data changes more often than it is redrawn. The +advantage of using the object is that FLTK will cache translated +forms of the image (on X it uses a server pixmap) and thus +redrawing is much faster. + +\subsection ssect_DirectImageDrawing Direct Image Drawing + +The behavior when drawing images when the current +transformation matrix is not the identity is not defined, so you +should only draw images when the matrix is set to the identity. + + +void fl_draw_image(const uchar *, int X, int Y, int W, int H, +int D = 3, int LD = 0)
+void fl_draw_image_mono(const uchar *, int X, int Y, int W, int H, +int D = 1, int LD = 0) + +\par +Draw an 8-bit per color RGB or luminance image. The pointer +points at the "r" data of the top-left pixel. Color +data must be in r,g,b order. X,Y are where to +put the top-left corner. W and H define the +size of the image. D is the delta to add to the pointer +between pixels, it may be any value greater or equal to +3, or it can be negative to flip the image +horizontally. LD is the delta to add to the pointer +between lines (if 0 is passed it uses W * D), and may +be larger than W * D to crop data, or negative to flip +the image vertically. + +\par +It is highly recommended that you put the following code before the +first show() of any window in your program to get rid +of the dithering if possible: + +\code +Fl::visual(FL_RGB); +\endcode + +\par +Gray scale (1-channel) images may be drawn. This is done if +abs(D) is less than 3, or by calling +fl_draw_image_mono(). Only one 8-bit sample is used for +each pixel, and on screens with different numbers of bits for +red, green, and blue only gray colors are used. Setting +D greater than 1 will let you display one channel of a +color image. + +\par +\b Note: +The X version does not support all possible visuals. +If FLTK cannot draw the image in the current visual it +will abort. FLTK supports any visual of 8 bits or less, +and all common TrueColor visuals up to 32 bits. + +typedef void (*fl_draw_image_cb)(void *, int x, int y, int w, uchar *)
+void fl_draw_image(fl_draw_image_cb, void *, int X, int Y, int W, int H, +int D = 3)
+void fl_draw_image_mono(fl_draw_image_cb, void *, int X, int Y, int W, int H, +int D = 1) + +\par +Call the passed function to provide each scan line of the +image. This lets you generate the image as it is being drawn, +or do arbitrary decompression of stored data, provided it can be +decompressed to individual scan lines easily. + +\par +The callback is called with the void * user data +pointer which can be used to point at a structure of information +about the image, and the x, y, and w +of the scan line desired from the image. 0,0 is the upper-left +corner of the image, not X,Y. A pointer to a +buffer to put the data into is passed. You must copy w +pixels from scanline y, starting at pixel x, +to this buffer. + +\par +Due to cropping, less than the whole image may be requested. +So x may be greater than zero, the first y may +be greater than zero, and w may be less than +W. The buffer is long enough to store the entire W * D +pixels, this is for convenience with some decompression +schemes where you must decompress the entire line at once: +decompress it into the buffer, and then if x is not +zero, copy the data over so the x'th pixel is at the +start of the buffer. + +\par +You can assume the y's will be consecutive, except +the first one may be greater than zero. + +\par +If D is 4 or more, you must fill in the unused bytes +with zero. + + +int fl_draw_pixmap(char **data, int X, int Y, Fl_Color = FL_GRAY) + +\par +Draws XPM image data, with the top-left corner at the given position. +The image is dithered on 8-bit displays so you won't lose color space +for programs displaying both images and pixmaps. This function returns +zero if there was any error decoding the XPM data. + +\par +To use an XPM, do: + +\code +#include "foo.xpm" +... +fl_draw_pixmap(foo, X, Y); +\endcode + +\par +Transparent colors are replaced by the optional +Fl_Color argument. To draw with true transparency you must +use the Fl_Pixmap class. + + +int fl_measure_pixmap(char **data, int &w, int &h) + +\par +An XPM image contains the dimensions in its data. This +function finds and returns the width and height. The return +value is non-zero if the dimensions were parsed ok and zero if +there was any problem. + +\subsection ssect_DirectImageReading Direct Image Reading + +FLTK provides a single function for reading from the current +window or off-screen buffer into a RGB(A) image buffer. + + +uchar *fl_read_image(uchar *p, int X, int Y, int W, int H, int alpha = 0); + +\par +Read a RGB(A) image from the current window or off-screen +buffer. The p argument points to a buffer that can hold +the image and must be at least W*H*3 bytes when reading +RGB images and W*H*4 bytes when reading RGBA images. If +NULL, fl_read_image() will create an array of +the proper size which can be freed using delete[]. + +\par +The alpha parameter controls whether an alpha +channel is created and the value that is placed in the alpha +channel. If 0, no alpha channel is generated. + + +\subsection ssect_Fl_Image Image Classes + +FLTK provides a base image class called Fl_Image which supports +creating, copying, and drawing images of various kinds, along +with some basic color operations. Images can be used as labels +for widgets using the image() and deimage() methods or drawn directly. + +The Fl_Image class does almost nothing by itself, but is instead +supported by three basic image types: + +\li Fl_Bitmap +\li Fl_Pixmap +\li Fl_RGB_Image + +The Fl_Bitmap class encapsulates a mono-color bitmap image. +The draw() method draws the image using the current drawing +color. + +The Fl_Pixmap class encapsulates a colormapped image. +The draw() method draws the image using the colors in the +file, and masks off any transparent colors automatically. + +The Fl_RGB_Image class encapsulates a full-color +(or grayscale) image with 1 to 4 color components. Images with +an even number of components are assumed to contain an +alpha channel that is used for transparency. The transparency +provided by the draw() method is either a 24-bit +blend against the existing window contents or a "screen door" +transparency mask, depending on the platform and screen color depth. + + +char fl_can_do_alpha_blending() + +\par +fl_can_do_alpha_blending() will return 1, if your +platform supports true alpha blending for RGBA images, or 0, +if FLTK will use screen door transparency. + +FLTK also provides several image classes based on the three +standard image types for common file formats: + +\li Fl_GIF_Image +\li Fl_JPEG_Image +\li Fl_PNG_Image +\li Fl_PNM_Image +\li Fl_XBM_Image +\li Fl_XPM_Image + +Each of these image classes load a named file of the +corresponding format. The Fl_Shared_Image class +can be used to load any type of image file - the class examines +the file and constructs an image of the appropriate type. + +Finally, FLTK provides a special image class called Fl_Tiled_Image to +tile another image object in the specified area. This class can be +used to tile a background image in a Fl_Group widget, for example. + +virtual void copy();
+virtual void copy(int w, int h); + +\par +The copy() method creates a copy of the image. The second form +specifies the new size of the image - the image is resized using the +nearest-neighbor algorithm. + +void draw(int x, int y, int w, int h, int ox = 0, int oy = 0); + +\par +The draw() method draws the image object. +x,y,w,h indicates a destination rectangle. +ox,oy,w,h is a source rectangle. This source rectangle +is copied to the destination. The source rectangle may extend +outside the image, i.e. ox and oy may be +negative and w and h may be bigger than the +image, and this area is left unchanged. + +void draw(int x, int y) + +\par +Draws the image with the upper-left corner at x,y. +This is the same as doing draw(x,y,img->w(),img->h(),0,0). + + +\subsection ssect_Offscreen Offscreen Drawing + +Sometimes it can be very useful to generate a complex drawing +in memory first and copy it to the screen at a later point in +time. This technique can significantly reduce the amount of +repeated drawing. Fl_Double_Window uses offscreen rendering +to avoid flickering on systems that don't support +double-buffering natively. + + +Fl_Offscreen fl_create_offscreen(int w, int h) + +\par +Create an RGB offscreen buffer with w*h pixels. + + +void fl_delete_offscreen(Fl_Offscreen) + +\par +Delete a previously created offscreen buffer. All drawings are lost. + + +void fl_begin_offscreen(Fl_Offscreen) + +\par +Send all subsequent drawing commands to this offscreen buffer. +FLTK can draw into a buffer at any time. There is no need to wait for +an Fl_Widget::draw() to occur. + + +void fl_end_offscreen() + +\par +Quit sending drawing commands to this offscreen buffer. + + +void fl_copy_offscreen(int x, int y, int w, int h, +Fl_Offscreen osrc, int srcx, int srcy) + +\par +Copy a rectangular area of the size w*h from srcx, srcy +in the offscreen buffer into the current buffer at x, y. + +\htmlonly +
+[Index]    +[Previous]  4 - Designing a Simple Text Editor  +[Next]  6 - Handling Events  +\endhtmlonly +*/ diff --git a/documentation/src/editor-replace.gif b/documentation/src/editor-replace.gif new file mode 100644 index 000000000..73c285664 Binary files /dev/null and b/documentation/src/editor-replace.gif differ diff --git a/documentation/src/editor.dox b/documentation/src/editor.dox new file mode 100644 index 000000000..768a3afb7 --- /dev/null +++ b/documentation/src/editor.dox @@ -0,0 +1,910 @@ +/** + + \page editor 4 - Designing a Simple Text Editor + +This chapter takes you through the design of a simple +FLTK-based text editor. + +\section editor_goals Determining the Goals of the Text Editor + +Since this will be the first big project you'll be doing with FLTK, +lets define what we want our text editor to do: + +-# Provide a menubar/menus for all functions. +-# Edit a single text file, possibly with multiple views. +-# Load from a file. +-# Save to a file. +-# Cut/copy/delete/paste functions. +-# Search and replace functions. +-# Keep track of when the file has been changed. + + + +\section editor_main_window Designing the Main Window + +Now that we've outlined the goals for our editor, we can begin with +the design of our GUI. Obviously the first thing that we need is a +window, which we'll place inside a class called EditorWindow: + +\code +class EditorWindow : public Fl_Double_Window { + public: + EditorWindow(int w, int h, const char* t); + ~EditorWindow(); + + Fl_Window *replace_dlg; + Fl_Input *replace_find; + Fl_Input *replace_with; + Fl_Button *replace_all; + Fl_Return_Button *replace_next; + Fl_Button *replace_cancel; + + Fl_Text_Editor *editor; + char search[256]; +}; +\endcode + +\section editor_variables Variables + +Our text editor will need some global variables to keep track of things: + +\code +int changed = 0; +char filename[256] = ""; +Fl_Text_Buffer *textbuf; +\endcode + +The textbuf variable is the text editor buffer for +our window class described previously. We'll cover the other +variables as we build the application. + +\section editor_menubars Menubars and Menus + +The first goal requires us to use a menubar and menus that +define each function the editor needs to perform. The +Fl_Menu_Item +structure is used to define the menus and items in a menubar: + +\code +Fl_Menu_Item menuitems[] = { + { "&File", 0, 0, 0, FL_SUBMENU }, + { "&New File", 0, (Fl_Callback *)new_cb }, + { "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb }, + { "&Insert File...", FL_CTRL + 'i', (Fl_Callback *)insert_cb, 0, FL_MENU_DIVIDER }, + { "&Save File", FL_CTRL + 's', (Fl_Callback *)save_cb }, + { "Save File &As...", FL_CTRL + FL_SHIFT + 's', (Fl_Callback *)saveas_cb, 0, FL_MENU_DIVIDER }, + { "New &View", FL_ALT + 'v', (Fl_Callback *)view_cb, 0 }, + { "&Close View", FL_CTRL + 'w', (Fl_Callback *)close_cb, 0, FL_MENU_DIVIDER }, + { "E&xit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 }, + { 0 }, + + { "&Edit", 0, 0, 0, FL_SUBMENU }, + { "&Undo", FL_CTRL + 'z', (Fl_Callback *)undo_cb, 0, FL_MENU_DIVIDER }, + { "Cu&t", FL_CTRL + 'x', (Fl_Callback *)cut_cb }, + { "&Copy", FL_CTRL + 'c', (Fl_Callback *)copy_cb }, + { "&Paste", FL_CTRL + 'v', (Fl_Callback *)paste_cb }, + { "&Delete", 0, (Fl_Callback *)delete_cb }, + { 0 }, + + { "&Search", 0, 0, 0, FL_SUBMENU }, + { "&Find...", FL_CTRL + 'f', (Fl_Callback *)find_cb }, + { "F&ind Again", FL_CTRL + 'g', find2_cb }, + { "&Replace...", FL_CTRL + 'r', replace_cb }, + { "Re&place Again", FL_CTRL + 't', replace2_cb }, + { 0 }, + + { 0 } +}; +\endcode + +Once we have the menus defined we can create the +Fl_Menu_Bar widget and assign the menus to it with: + +\code +Fl_Menu_Bar *m = new Fl_Menu_Bar(0, 0, 640, 30); +m->copy(menuitems); +\endcode + +We'll define the callback functions later. + +\section editor_editing Editing the Text + +To keep things simple our text editor will use the +Fl_Text_Editor +widget to edit the text: + +\code +w->editor = new Fl_Text_Editor(0, 30, 640, 370); +w->editor->buffer(textbuf); +\endcode + +So that we can keep track of changes to the file, we also want to add +a "modify" callback: + +\code +textbuf->add_modify_callback(changed_cb, w); +textbuf->call_modify_callbacks(); +\endcode + +Finally, we want to use a mono-spaced font like FL_COURIER: + +\code +w->editor->textfont(FL_COURIER); +\endcode + +\section editor_replace_dialog The Replace Dialog + +We can use the FLTK convenience functions for many of the +editor's dialogs, however the replace dialog needs its own +custom window. To keep things simple we will have a +"find" string, a "replace" string, and +"replace all", "replace next", and +"cancel" buttons. The strings are just +Fl_Input widgets, the "replace all" and +"cancel" buttons are Fl_Button widgets, and +the "replace next " button is a +Fl_Return_Button widget: + +\image html editor-replace.gif "Figure 4-1: The search and replace dialog" + +\code +Fl_Window *replace_dlg = new Fl_Window(300, 105, "Replace"); +Fl_Input *replace_find = new Fl_Input(70, 10, 200, 25, "Find:"); +Fl_Input *replace_with = new Fl_Input(70, 40, 200, 25, "Replace:"); +Fl_Button *replace_all = new Fl_Button(10, 70, 90, 25, "Replace All"); +Fl_Button *replace_next = new Fl_Button(105, 70, 120, 25, "Replace Next"); +Fl_Button *replace_cancel = new Fl_Button(230, 70, 60, 25, "Cancel"); +\endcode + +\section editor_callbacks Callbacks + +Now that we've defined the GUI components of our editor, we +need to define our callback functions. + +\subsection editor_changed_cb changed_cb() + +This function will be called whenever the user changes any text in the +editor widget: + +\code +void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) { + if ((nInserted || nDeleted) && !loading) changed = 1; + EditorWindow *w = (EditorWindow *)v; + set_title(w); + if (loading) w->editor->show_insert_position(); +} +\endcode + +The set_title() function is one that we will write to set +the changed status on the current file. We're doing it this way +because we want to show the changed status in the window's +title bar. + +\subsection editor_copy_cb copy_cb() + +This callback function will call +kf_copy() +to copy the currently selected text to the clipboard: + +\code +void copy_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + Fl_Text_Editor::kf_copy(0, e->editor); +} +\endcode + +\subsection editor_cut_cb cut_cb() + +This callback function will call +kf_cut() +to cut the currently selected text to the clipboard: + +\code +void cut_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + Fl_Text_Editor::kf_cut(0, e->editor); +} +\endcode + +\subsection editor_delete_cb delete_cb() + +This callback function will call + +remove_selection() +to delete the currently selected text to the clipboard: + +\code +void delete_cb(Fl_Widget*, void* v) { + textbuf->remove_selection(); +} +\endcode + +\subsection editor_find_cb find_cb() + +This callback function asks for a search string using the +fl_input() +convenience function and then calls the find2_cb() +function to find the string: + +\code +void find_cb(Fl_Widget* w, void* v) { + EditorWindow* e = (EditorWindow*)v; + const char *val; + + val = fl_input("Search String:", e->search); + if (val != NULL) { + // User entered a string - go find it! + strcpy(e->search, val); + find2_cb(w, v); + } +\endcode + +\subsection editor_find2_cb find2_cb() + +This function will find the next occurrence of the search +string. If the search string is blank then we want to pop up the +search dialog: + +\code +void find2_cb(Fl_Widget* w, void* v) { + EditorWindow* e = (EditorWindow*)v; + if (e->search[0] == '\0') { + // Search string is blank; get a new one... + find_cb(w, v); + return; + } + + int pos = e->editor->insert_position(); + int found = textbuf->search_forward(pos, e->search, &pos); + if (found) { + // Found a match; select and update the position... + textbuf->select(pos, pos+strlen(e->search)); + e->editor->insert_position(pos+strlen(e->search)); + e->editor->show_insert_position(); + } + else fl_alert("No occurrences of \'%s\' found!", e->search); +} +\endcode + +If the search string cannot be found we use the +fl_alert() +convenience function to display a message to that effect. + +\subsection editor_new_cb new_cb() + +This callback function will clear the editor widget and current +filename. It also calls the check_save() function to give the +user the opportunity to save the current file first as needed: + +\code +void new_cb(Fl_Widget*, void*) { + if (!check_save()) return; + + filename[0] = '\0'; + textbuf->select(0, textbuf->length()); + textbuf->remove_selection(); + changed = 0; + textbuf->call_modify_callbacks(); +} +\endcode + +\subsection editor_open_cb open_cb() + +This callback function will ask the user for a filename and then load +the specified file into the input widget and current filename. It also +calls the check_save() function to give the user the +opportunity to save the current file first as needed: + +\code +void open_cb(Fl_Widget*, void*) { + if (!check_save()) return; + + char *newfile = fl_file_chooser("Open File?", "*", filename); + if (newfile != NULL) load_file(newfile, -1); +} +\endcode + +We call the load_file() function to actually load the file. + +\subsection editor_paste_cb paste_cb() + +This callback function will call +kf_paste() +to paste the clipboard at the current position: + +\code +void paste_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + Fl_Text_Editor::kf_paste(0, e->editor); +} +\endcode + +\subsection editor_quit_cb quit_cb() + +The quit callback will first see if the current file has been +modified, and if so give the user a chance to save it. It then exits +from the program: + +\code +void quit_cb(Fl_Widget*, void*) { + if (changed && !check_save()) + return; + + exit(0); +} +\endcode + +\subsection editor_replace_cb replace_cb() + +The replace callback just shows the replace dialog: + +\code +void replace_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + e->replace_dlg->show(); +} +\endcode + +\subsection editor_replace2_cb replace2_cb() + +This callback will replace the next occurrence of the replacement +string. If nothing has been entered for the replacement string, then +the replace dialog is displayed instead: + +\code +void replace2_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + const char *find = e->replace_find->value(); + const char *replace = e->replace_with->value(); + + if (find[0] == '\0') { + // Search string is blank; get a new one... + e->replace_dlg->show(); + return; + } + + e->replace_dlg->hide(); + + int pos = e->editor->insert_position(); + int found = textbuf->search_forward(pos, find, &pos); + + if (found) { + // Found a match; update the position and replace text... + textbuf->select(pos, pos+strlen(find)); + textbuf->remove_selection(); + textbuf->insert(pos, replace); + textbuf->select(pos, pos+strlen(replace)); + e->editor->insert_position(pos+strlen(replace)); + e->editor->show_insert_position(); + } + else fl_alert("No occurrences of \'%s\' found!", find); +} +\endcode + +\subsection editor_replall_cb replall_cb() + +This callback will replace all occurrences of the search +string in the file: + +\code +void replall_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + const char *find = e->replace_find->value(); + const char *replace = e->replace_with->value(); + + find = e->replace_find->value(); + if (find[0] == '\0') { + // Search string is blank; get a new one... + e->replace_dlg->show(); + return; + } + + e->replace_dlg->hide(); + + e->editor->insert_position(0); + int times = 0; + + // Loop through the whole string + for (int found = 1; found;) { + int pos = e->editor->insert_position(); + found = textbuf->search_forward(pos, find, &pos); + + if (found) { + // Found a match; update the position and replace text... + textbuf->select(pos, pos+strlen(find)); + textbuf->remove_selection(); + textbuf->insert(pos, replace); + e->editor->insert_position(pos+strlen(replace)); + e->editor->show_insert_position(); + times++; + } + } + + if (times) fl_message("Replaced %d occurrences.", times); + else fl_alert("No occurrences of \'%s\' found!", find); +} +\endcode + +\subsection editor_replcan_cb replcan_cb() + +This callback just hides the replace dialog: + +\code +void replcan_cb(Fl_Widget*, void* v) { + EditorWindow* e = (EditorWindow*)v; + e->replace_dlg->hide(); +} +\endcode + +\subsection editor_save_cb save_cb() + +This callback saves the current file. If the current filename is +blank it calls the "save as" callback: + +\code +void save_cb(void) { + if (filename[0] == '\0') { + // No filename - get one! + saveas_cb(); + return; + } + else save_file(filename); +} +\endcode + +The save_file() function saves the current file to the +specified filename. + +\subsection editor_saveas_cb saveas_cb() + +This callback asks the user for a filename and saves the current file: + +\code +void saveas_cb(void) { + char *newfile; + + newfile = fl_file_chooser("Save File As?", "*", filename); + if (newfile != NULL) save_file(newfile); +} +\endcode + +The save_file() function saves the current file to the +specified filename. + +\section editor_other_functions Other Functions + +Now that we've defined the callback functions, we need our support +functions to make it all work: + +\subsection editor_check_save check_save() + +This function checks to see if the current file needs to be saved. If +so, it asks the user if they want to save it: + +\code +int check_save(void) { + if (!changed) return 1; + + int r = fl_choice("The current file has not been saved.\n" + "Would you like to save it now?", + "Cancel", "Save", "Discard"); + + if (r == 1) { + save_cb(); // Save the file... + return !changed; + } + + return (r == 2) ? 1 : 0; +} +\endcode + +\subsection editor_load_file load_file() + +This function loads the specified file into the textbuf class: + +\code +int loading = 0; +void load_file(char *newfile, int ipos) { + loading = 1; + int insert = (ipos != -1); + changed = insert; + if (!insert) strcpy(filename, ""); + int r; + if (!insert) r = textbuf->loadfile(newfile); + else r = textbuf->insertfile(newfile, ipos); + if (r) + fl_alert("Error reading from file \'%s\':\n%s.", newfile, strerror(errno)); + else + if (!insert) strcpy(filename, newfile); + loading = 0; + textbuf->call_modify_callbacks(); +} +\endcode + +When loading the file we use the +loadfile() +method to "replace" the text in the buffer, or the +insertfile() +method to insert text in the buffer from the named file. + +\subsection editor_save_file save_file() + +This function saves the current buffer to the specified file: + +\code +void save_file(char *newfile) { + if (textbuf->savefile(newfile)) + fl_alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno)); + else + strcpy(filename, newfile); + changed = 0; + textbuf->call_modify_callbacks(); +} +\endcode + +\subsection editor_set_title set_title() + +This function checks the changed variable and updates the +window label accordingly: +\code +void set_title(Fl_Window* w) { + if (filename[0] == '\0') strcpy(title, "Untitled"); + else { + char *slash; + slash = strrchr(filename, '/'); +#ifdef WIN32 + if (slash == NULL) slash = strrchr(filename, '\\'); +#endif + if (slash != NULL) strcpy(title, slash + 1); + else strcpy(title, filename); + } + + if (changed) strcat(title, " (modified)"); + + w->label(title); +} +\endcode + +\section editor_main_function The main() Function + +Once we've created all of the support functions, the only thing left +is to tie them all together with the main() function. +The main() function creates a new text buffer, creates a +new view (window) for the text, shows the window, loads the file on +the command-line (if any), and then enters the FLTK event loop: + +\code +int main(int argc, char **argv) { + textbuf = new Fl_Text_Buffer; + + Fl_Window* window = new_view(); + + window->show(1, argv); + + if (argc > 1) load_file(argv[1], -1); + + return Fl::run(); +} +\endcode + +\section editor_compiling Compiling the Editor + +The complete source for our text editor can be found in the +test/editor.cxx source file. Both the Makefile and Visual C++ +workspace include the necessary rules to build the editor. You can +also compile it using a standard compiler with: + +\code +CC -o editor editor.cxx -lfltk -lXext -lX11 -lm +\endcode + +or by using the fltk-config script with: + +\code +fltk-config --compile editor.cxx +\endcode + +As noted in +Chapter 1, +you may need to +include compiler and linker options to tell them where to find the FLTK +library. Also, the CC command may also be called gcc +or c++ on your system. + +Congratulations, you've just built your own text editor! + +\section editor_final_product The Final Product + +The final editor window should look like the image in Figure 4-2. + +\image html editor.gif "Figure 4-2: The completed editor window" + +\section editor_advanced_features Advanced Features + +Now that we've implemented the basic functionality, it is +time to show off some of the advanced features of the +Fl_Text_Editor widget. + +\subsection editor_syntax Syntax Highlighting + +The Fl_Text_Editor widget supports highlighting +of text with different fonts, colors, and sizes. The +implementation is based on the excellent +NEdit +text editor core, which +uses a parallel "style" buffer which tracks the font, color, and +size of the text that is drawn. + +Styles are defined using the +Fl_Text_Display::Style_Table_Entry structure +defined in : + +\code +struct Style_Table_Entry { + Fl_Color color; + Fl_Font font; + int size; + unsigned attr; +}; +\endcode + +The color member sets the color for the text, +the font member sets the FLTK font index to use, +and the size member sets the pixel size of the +text. The attr member is currently not used. + +For our text editor we'll define 7 styles for plain code, +comments, keywords, and preprocessor directives: + +\code +Fl_Text_Display::Style_Table_Entry styletable[] = { // Style table + { FL_BLACK, FL_COURIER, FL_NORMAL_SIZE }, // A - Plain + { FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // B - Line comments + { FL_DARK_GREEN, FL_COURIER_ITALIC, FL_NORMAL_SIZE }, // C - Block comments + { FL_BLUE, FL_COURIER, FL_NORMAL_SIZE }, // D - Strings + { FL_DARK_RED, FL_COURIER, FL_NORMAL_SIZE }, // E - Directives + { FL_DARK_RED, FL_COURIER_BOLD, FL_NORMAL_SIZE }, // F - Types + { FL_BLUE, FL_COURIER_BOLD, FL_NORMAL_SIZE } // G - Keywords +}; +\endcode + +You'll notice that the comments show a letter next to each +style - each style in the style buffer is referenced using a +character starting with the letter 'A'. + +You call the highlight_data() method to associate the +style data and buffer with the text editor widget: + +\code +Fl_Text_Buffer *stylebuf; + +w->editor->highlight_data(stylebuf, styletable, + sizeof(styletable) / sizeof(styletable[0]), + 'A', style_unfinished_cb, 0); +\endcode + +Finally, you need to add a callback to the main text buffer so +that changes to the text buffer are mirrored in the style buffer: + +\code +textbuf->add_modify_callback(style_update, w->editor); +\endcode + +The style_update() function, like the change_cb() +function described earlier, is called whenever text is added or removed from +the text buffer. It mirrors the changes in the style buffer and then updates +the style data as necessary: + +\code +// +// 'style_update()' - Update the style buffer... +// + +void +style_update(int pos, // I - Position of update + int nInserted, // I - Number of inserted chars + int nDeleted, // I - Number of deleted chars + int nRestyled, // I - Number of restyled chars + const char *deletedText, // I - Text that was deleted + void *cbArg) { // I - Callback data + int start, // Start of text + end; // End of text + char last, // Last style on line + *style, // Style data + *text; // Text data + + + // If this is just a selection change, just unselect the style buffer... + if (nInserted == 0 && nDeleted == 0) { + stylebuf->unselect(); + return; + } + + // Track changes in the text buffer... + if (nInserted > 0) { + // Insert characters into the style buffer... + style = new char[nInserted + 1]; + memset(style, 'A', nInserted); + style[nInserted] = '\0'; + + stylebuf->replace(pos, pos + nDeleted, style); + delete[] style; + } else { + // Just delete characters in the style buffer... + stylebuf->remove(pos, pos + nDeleted); + } + + // Select the area that was just updated to avoid unnecessary + // callbacks... + stylebuf->select(pos, pos + nInserted - nDeleted); + + // Re-parse the changed region; we do this by parsing from the + // beginning of the line of the changed region to the end of + // the line of the changed region... Then we check the last + // style character and keep updating if we have a multi-line + // comment character... + start = textbuf->line_start(pos); + end = textbuf->line_end(pos + nInserted - nDeleted); + text = textbuf->text_range(start, end); + style = stylebuf->text_range(start, end); + last = style[end - start - 1]; + + style_parse(text, style, end - start); + + stylebuf->replace(start, end, style); + ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end); + + if (last != style[end - start - 1]) { + // The last character on the line changed styles, so reparse the + // remainder of the buffer... + free(text); + free(style); + + end = textbuf->length(); + text = textbuf->text_range(start, end); + style = stylebuf->text_range(start, end); + + style_parse(text, style, end - start); + + stylebuf->replace(start, end, style); + ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end); + } + + free(text); + free(style); +} +\endcode + +The style_parse() function scans a copy of the +text in the buffer and generates the necessary style characters +for display. It assumes that parsing begins at the start of a line: + +\code +// +// 'style_parse()' - Parse text and produce style data. +// + +void +style_parse(const char *text, + char *style, + int length) { + char current; + int col; + int last; + char buf[255], + *bufptr; + const char *temp; + + for (current = *style, col = 0, last = 0; length > 0; length --, text ++) { + if (current == 'A') { + // Check for directives, comments, strings, and keywords... + if (col == 0 && *text == '#') { + // Set style to directive + current = 'E'; + } else if (strncmp(text, "//", 2) == 0) { + current = 'B'; + } else if (strncmp(text, "/*", 2) == 0) { + current = 'C'; + } else if (strncmp(text, "\\\"", 2) == 0) { + // Quoted quote... + *style++ = current; + *style++ = current; + text ++; + length --; + col += 2; + continue; + } else if (*text == '\"') { + current = 'D'; + } else if (!last && islower(*text)) { + // Might be a keyword... + for (temp = text, bufptr = buf; + islower(*temp) && bufptr < (buf + sizeof(buf) - 1); + *bufptr++ = *temp++); + + if (!islower(*temp)) { + *bufptr = '\0'; + + bufptr = buf; + + if (bsearch(&bufptr, code_types, + sizeof(code_types) / sizeof(code_types[0]), + sizeof(code_types[0]), compare_keywords)) { + while (text < temp) { + *style++ = 'F'; + text ++; + length --; + col ++; + } + + text --; + length ++; + last = 1; + continue; + } else if (bsearch(&bufptr, code_keywords, + sizeof(code_keywords) / sizeof(code_keywords[0]), + sizeof(code_keywords[0]), compare_keywords)) { + while (text < temp) { + *style++ = 'G'; + text ++; + length --; + col ++; + } + + text --; + length ++; + last = 1; + continue; + } + } + } + } else if (current == 'C' && strncmp(text, "*/", 2) == 0) { + // Close a C comment... + *style++ = current; + *style++ = current; + text ++; + length --; + current = 'A'; + col += 2; + continue; + } else if (current == 'D') { + // Continuing in string... + if (strncmp(text, "\\\"", 2) == 0) { + // Quoted end quote... + *style++ = current; + *style++ = current; + text ++; + length --; + col += 2; + continue; + } else if (*text == '\"') { + // End quote... + *style++ = current; + col ++; + current = 'A'; + continue; + } + } + + // Copy style info... + if (current == 'A' && (*text == '{' || *text == '}')) *style++ = 'G'; + else *style++ = current; + col ++; + + last = isalnum(*text) || *text == '.'; + + if (*text == '\n') { + // Reset column and possibly reset the style + col = 0; + if (current == 'B' || current == 'E') current = 'A'; + } + } +} +\endcode + +\htmlonly +
+[Index]    +[Previous]  3 - Common Widgets and Attributes  +[Next]  5 - Drawing Things in FLTK  +\endhtmlonly +*/ diff --git a/documentation/src/editor.gif b/documentation/src/editor.gif new file mode 100644 index 000000000..8fce896f0 Binary files /dev/null and b/documentation/src/editor.gif differ diff --git a/documentation/src/enumerations.dox b/documentation/src/enumerations.dox new file mode 100644 index 000000000..fa2045860 --- /dev/null +++ b/documentation/src/enumerations.dox @@ -0,0 +1,301 @@ +/** + + \page enumerations C - FLTK Enumerations + + \note This file is not actively maintained any more, but is left + here as a reference, until the doxygen documentation is + completed. + + \sa \ref FL/Enumerations.H. + +This appendix lists the enumerations provided in the + header file, organized by section. +Constants whose value is zero are marked with "(0)", +this is often useful to know when programming. + +\section enumerations_versions Version Numbers + +The FLTK version number is stored in a number of compile-time constants: + +\li FL_MAJOR_VERSION - The major release number, currently 1. +\li FL_MINOR_VERSION - The minor release number, currently 3. +\li FL_PATCH_VERSION - The patch release number, currently 0. +\li FL_VERSION - A combined floating-point version number for + the major, minor, and patch release numbers, currently 1.0300. + + +\section enumerations_events Events + +Events are identified by an Fl_Event enumeration value. The +following events are currently defined: + +\li FL_NO_EVENT - No event (or an event fltk does not + understand) occurred (0). +\li FL_PUSH - A mouse button was pushed. +\li FL_RELEASE - A mouse button was released. +\li FL_ENTER - The mouse pointer entered a widget. +\li FL_LEAVE - The mouse pointer left a widget. +\li FL_DRAG - The mouse pointer was moved with a button pressed. +\li FL_FOCUS - A widget should receive keyboard focus. +\li FL_UNFOCUS - A widget loses keyboard focus. +\li FL_KEYBOARD - A key was pressed. +\li FL_CLOSE - A window was closed. +\li FL_MOVE - The mouse pointer was moved with no buttons pressed. +\li FL_SHORTCUT - The user pressed a shortcut key. +\li FL_DEACTIVATE - The widget has been deactivated. +\li FL_ACTIVATE - The widget has been activated. +\li FL_HIDE - The widget has been hidden. +\li FL_SHOW - The widget has been shown. +\li FL_PASTE - The widget should paste the contents of the + clipboard. +\li FL_SELECTIONCLEAR - The widget should clear any selections + made for the clipboard. +\li FL_MOUSEWHEEL - The horizontal or vertical mousewheel was turned. +\li FL_DND_ENTER - The mouse pointer entered a widget dragging data. +\li FL_DND_DRAG - The mouse pointer was moved dragging data. +\li FL_DND_LEAVE - The mouse pointer left a widget still dragging + data. +\li FL_DND_RELEASE - Dragged data is about to be dropped. + + +\section enumerations_when Callback "When" Conditions + +The following constants determine when a callback is performed: + +\li FL_WHEN_NEVER - Never call the callback (0). +\li FL_WHEN_CHANGED - Do the callback only when the widget + value changes. +\li FL_WHEN_NOT_CHANGED - Do the callback whenever the user + interacts with the widget. +\li FL_WHEN_RELEASE - Do the callback when the button or key + is released and the value changes. +\li FL_WHEN_ENTER_KEY - Do the callback when the user presses + the ENTER key and the value changes. +\li FL_WHEN_RELEASE_ALWAYS - Do the callback when the button + or key is released, even if the value doesn't change. +\li FL_WHEN_ENTER_KEY_ALWAYS - Do the callback when the user + presses the ENTER key, even if the value doesn't change. + + +\section enumeration_button_values Fl::event_button() Values + +The following constants define the button numbers for FL_PUSH and +FL_RELEASE events: + +\li FL_LEFT_MOUSE - the left mouse button +\li FL_MIDDLE_MOUSE - the middle mouse button +\li FL_RIGHT_MOUSE - the right mouse button + + +\section enumerations_event_key Fl::event_key() Values + +The following constants define the non-ASCII keys on the keyboard for +FL_KEYBOARD and FL_SHORTCUT events: + +\li FL_Button - A mouse button; use Fl_Button + n + for mouse button n. +\li FL_BackSpace - The backspace key. +\li FL_Tab - The tab key. +\li FL_Enter - The enter key. +\li FL_Pause - The pause key. +\li FL_Scroll_Lock - The scroll lock key. +\li FL_Escape - The escape key. +\li FL_Home - The home key. +\li FL_Left - The left arrow key. +\li FL_Up - The up arrow key. +\li FL_Right - The right arrow key. +\li FL_Down - The down arrow key. +\li FL_Page_Up - The page-up key. +\li FL_Page_Down - The page-down key. +\li FL_End - The end key. +\li FL_Print - The print (or print-screen) key. +\li FL_Insert - The insert key. +\li FL_Menu - The menu key. +\li FL_Num_Lock - The num lock key. +\li FL_KP - One of the keypad numbers; use FL_KP + n + for number n. +\li FL_KP_Enter - The enter key on the keypad. +\li FL_F - One of the function keys; use FL_F + n + for function key n. +\li FL_Shift_L - The lefthand shift key. +\li FL_Shift_R - The righthand shift key. +\li FL_Control_L - The lefthand control key. +\li FL_Control_R - The righthand control key. +\li FL_Caps_Lock - The caps lock key. +\li FL_Meta_L - The left meta/Windows key. +\li FL_Meta_R - The right meta/Windows key. +\li FL_Alt_L - The left alt key. +\li FL_Alt_R - The right alt key. +\li FL_Delete - The delete key. + +\section enumerations_event_state Fl::event_state() Values + +The following constants define bits in the Fl::event_state() +value: + +\li FL_SHIFT - One of the shift keys is down. +\li FL_CAPS_LOCK - The caps lock is on. +\li FL_CTRL - One of the ctrl keys is down. +\li FL_ALT - One of the alt keys is down. +\li FL_NUM_LOCK - The num lock is on. +\li FL_META - One of the meta/Windows keys is down. +\li FL_COMMAND - An alias for FL_CTRL on WIN32 and X11, + or FL_META on MacOS X. +\li FL_SCROLL_LOCK - The scroll lock is on. +\li FL_BUTTON1 - Mouse button 1 is pushed. +\li FL_BUTTON2 - Mouse button 2 is pushed. +\li FL_BUTTON3 - Mouse button 3 is pushed. +\li FL_BUTTONS - Any mouse button is pushed. +\li FL_BUTTON(n) - Mouse button N (N > 0) is pushed. + + + + +\section enumerations_alignment Alignment Values + +The following constants define bits that can be used with +Fl_Widget::align() +to control the positioning of the label: + +\li FL_ALIGN_CENTER - The label is centered (0). +\li FL_ALIGN_TOP - The label is top-aligned. +\li FL_ALIGN_BOTTOM - The label is bottom-aligned. +\li FL_ALIGN_LEFT - The label is left-aligned. +\li FL_ALIGN_RIGHT - The label is right-aligned. +\li FL_ALIGN_CLIP - The label is clipped to the widget. +\li FL_ALIGN_WRAP - The label text is wrapped as needed. +\li FL_ALIGN_TOP_LEFT +\li FL_ALIGN_TOP_RIGHT +\li FL_ALIGN_BOTTOM_LEFT +\li FL_ALIGN_BOTTOM_RIGHT +\li FL_ALIGN_LEFT_TOP +\li FL_ALIGN_RIGHT_TOP +\li FL_ALIGN_LEFT_BOTTOM +\li FL_ALIGN_RIGHT_BOTTOM +\li FL_ALIGN_INSIDE - 'or' this with other values to put + label inside the widget. + + +\section enumerations_fonts Fonts + +The following constants define the standard FLTK fonts: + +\li FL_HELVETICA - Helvetica (or Arial) normal (0). +\li FL_HELVETICA_BOLD - Helvetica (or Arial) bold. +\li FL_HELVETICA_ITALIC - Helvetica (or Arial) oblique. +\li FL_HELVETICA_BOLD_ITALIC - Helvetica (or Arial) bold-oblique. +\li FL_COURIER - Courier normal. +\li FL_COURIER_BOLD - Courier bold. +\li FL_COURIER_ITALIC - Courier italic. +\li FL_COURIER_BOLD_ITALIC - Courier bold-italic. +\li FL_TIMES - Times roman. +\li FL_TIMES_BOLD - Times bold. +\li FL_TIMES_ITALIC - Times italic. +\li FL_TIMES_BOLD_ITALIC - Times bold-italic. +\li FL_SYMBOL - Standard symbol font. +\li FL_SCREEN - Default monospaced screen font. +\li FL_SCREEN_BOLD - Default monospaced bold screen font. +\li FL_ZAPF_DINGBATS - Zapf-dingbats font. + + +\section enumerations_colors Colors + +The Fl_Color enumeration type holds a FLTK color value. +Colors are either 8-bit indexes into a virtual colormap or 24-bit RGB +color values. Color indices occupy the lower 8 bits of the value, while +RGB colors occupy the upper 24 bits, for a byte organization of RGBI. + +\subsection enumerations_color_constants Color Constants + +Constants are defined for the user-defined foreground and background +colors, as well as specific colors and the start of the grayscale ramp +and color cube in the virtual colormap. Inline functions are provided to +retrieve specific grayscale, color cube, or RGB color values. + +The following color constants can be used to access the user-defined +colors: + +\li FL_BACKGROUND_COLOR - the default background color +\li FL_BACKGROUND2_COLOR - the default + background color for text, list, and valuator widgets +\li FL_FOREGROUND_COLOR - the default + foreground color (0) used for labels and text +\li FL_INACTIVE_COLOR - the inactive foreground color +\li FL_SELECTION_COLOR - the default selection/highlight color + +The following color constants can be used to access the colors from the +FLTK standard color cube: + +\li FL_BLACK +\li FL_BLUE +\li FL_CYAN +\li FL_DARK_BLUE +\li FL_DARK_CYAN +\li FL_DARK_GREEN +\li FL_DARK_MAGENTA +\li FL_DARK_RED +\li FL_DARK_YELLOW +\li FL_GREEN +\li FL_MAGENTA +\li FL_RED +\li FL_WHITE +\li FL_YELLOW + +The inline methods for getting a grayscale, color cube, or +RGB color value are described in +Appendix B - Function Reference. + + +\section enumerations_cursors Cursors + +The following constants define the mouse cursors that are available in +FLTK. The double-headed arrows are bitmaps +provided by FLTK on X, the others are provided by system-defined +cursors. + + +\li FL_CURSOR_DEFAULT - the default cursor, usually an arrow (0) +\li FL_CURSOR_ARROW - an arrow pointer +\li FL_CURSOR_CROSS - crosshair +\li FL_CURSOR_WAIT - watch or hourglass +\li FL_CURSOR_INSERT - I-beam +\li FL_CURSOR_HAND - hand (uparrow on MSWindows) +\li FL_CURSOR_HELP - question mark +\li FL_CURSOR_MOVE - 4-pointed arrow +\li FL_CURSOR_NS - up/down arrow +\li FL_CURSOR_WE - left/right arrow +\li FL_CURSOR_NWSE - diagonal arrow +\li FL_CURSOR_NESW - diagonal arrow +\li FL_CURSOR_NONE - invisible + +\section enumerations_file_when FD "When" Conditions + +\li FL_READ - Call the callback when there is data to be + read. +\li FL_WRITE - Call the callback when data can be written + without blocking. +\li FL_EXCEPT - Call the callback if an exception occurs on + the file. + + +\section enumerations_damage Damage Masks + +The following damage mask bits are used by the standard FLTK widgets: + +\li FL_DAMAGE_CHILD - A child needs to be redrawn. +\li FL_DAMAGE_EXPOSE - The window was exposed. +\li FL_DAMAGE_SCROLL - The Fl_Scroll widget was scrolled. +\li FL_DAMAGE_OVERLAY - The overlay planes need to be redrawn. +\li FL_DAMAGE_USER1 - First user-defined damage bit. +\li FL_DAMAGE_USER2 - Second user-defined damage bit. +\li FL_DAMAGE_ALL - Everything needs to be redrawn. + +\htmlonly +
+[Index]    +[Previous] B - Function Reference  +[Next]  + \ref glut + +\endhtmlonly +*/ diff --git a/documentation/src/events.dox b/documentation/src/events.dox new file mode 100644 index 000000000..9682cf3ce --- /dev/null +++ b/documentation/src/events.dox @@ -0,0 +1,389 @@ +/** + + \page events 6 - Handling Events + +This chapter discusses the FLTK event model and how to handle +events in your program or widget. + +\section events_model The FLTK Event Model + +Every time a user moves the mouse pointer, clicks a button, +or presses a key, an event is generated and sent to your +application. Events can also come from other programs like the +window manager. + +Events are identified by the integer argument passed to the +Fl_Widget::handle() +virtual +method. Other information about the most recent event is stored in +static locations and acquired by calling the \ref events_event_xxx +methods. This static information remains valid until the next event +is read from the window system, so it is ok to look at it outside +of the handle() method. + +\section events_mouse Mouse Events + +\subsection events_fl_push FL_PUSH + +A mouse button has gone down with the mouse pointing at this +widget. You can find out what button by calling +Fl::event_button(). +You find out the mouse position by calling +Fl::event_x() +and + Fl::event_y(). + +A widget indicates that it "wants" the mouse click +by returning non-zero from its +handle() +method. It will then become the +Fl::pushed() +widget and will get FL_DRAG and +the matching FL_RELEASE events. If handle() +returns zero then FLTK will try sending the FL_PUSH to +another widget. + +\subsection events_fl_drag FL_DRAG + +The mouse has moved with a button held down. The current +button state is in +Fl::event_state(). +The mouse position is in +Fl::event_x() +and +Fl::event_y(). + +In order to receive FL_DRAG events, the widget must +return non-zero when handling FL_PUSH. + +\subsection events_fl_release FL_RELEASE + +A mouse button has been released. You can find out what button by calling +Fl::event_button(). + +In order to receive the FL_RELEASE event, the widget must +return non-zero when handling FL_PUSH. + +\subsection events_fl_move FL_MOVE + +The mouse has moved without any mouse buttons held down. +This event is sent to the +Fl::belowmouse() +widget. + +In order to receive FL_MOVE events, the widget must +return non-zero when handling FL_ENTER. + +\subsection events_fl_mousewheel FL_MOUSEWHEEL + +The user has moved the mouse wheel. The +Fl::event_dx() +and +Fl::event_dy() +methods can be used to find the amount to scroll horizontally and +vertically. + +\section events_focus Focus Events + +\subsection events_fl_enter FL_ENTER + +The mouse has been moved to point at this widget. This can +be used for highlighting feedback. If a widget wants to +highlight or otherwise track the mouse, it indicates this by +returning non-zero from its +handle() +method. It then becomes the +Fl::belowmouse() +widget and will receive FL_MOVE and FL_LEAVE +events. + +\subsection events_fl_leave FL_LEAVE + +The mouse has moved out of the widget. + +In order to receive the FL_LEAVE event, the widget must +return non-zero when handling FL_ENTER. + +\subsection events_fl_focus FL_FOCUS + +This indicates an attempt to give a widget the +keyboard focus. + +If a widget wants the focus, it should change itself to +display the fact that it has the focus, and return non-zero from its +handle() +method. It then becomes the +Fl::focus() +widget and gets +FL_KEYDOWN, FL_KEYUP, and FL_UNFOCUS +events. + +The focus will change either because the window manager +changed which window gets the focus, or because the user tried +to navigate using tab, arrows, or other keys. You can check +Fl::event_key() +to figure out why it moved. For navigation it will be the key +pressed and interaction with the window manager it will be zero. + +\subsection events_fl_unfocus FL_UNFOCUS + +This event is sent to the previous +Fl::focus() +widget when another widget gets the focus or the window loses focus. + +\section events_keyboard Keyboard Events + +\subsection events_fl_keydown FL_KEYDOWN, FL_KEYUP + +A key was pressed or released. The key can be found in +Fl::event_key(). +The text that the key should insert can be found with +Fl::event_text() +and its length is in +Fl::event_length(). +If you use the key handle() should return 1. If you +return zero then FLTK assumes you ignored the key and will +then attempt to send it to a parent widget. If none of them want +it, it will change the event into a FL_SHORTCUT event. + +To receive FL_KEYBOARD events you must also +respond to the FL_FOCUS and FL_UNFOCUS +events. + +If you are writing a text-editing widget you may also want to +call the +Fl::compose() +function to translate individual keystrokes into foreign characters. + +FL_KEYUP events are sent to the widget that +currently has focus. This is not necessarily the same widget +that received the corresponding FL_KEYDOWN event +because focus may have changed between events. + +\subsection events_fl_shortcut FL_SHORTCUT + +If the +Fl::focus() +widget is zero or ignores an FL_KEYBOARD event then +FLTK tries sending this event to every widget it can, until one +of them returns non-zero. FL_SHORTCUT is first sent to +the Fl::belowmouse() widget, then its parents and +siblings, and eventually to every widget in the window, trying +to find an object that returns non-zero. FLTK tries really hard +to not to ignore any keystrokes! + +You can also make "global" shortcuts by using +Fl::add_handler(). +A global shortcut will work no matter what windows are displayed +or which one has the focus. + +\section events_widget Widget Events + +\subsection events_fl_deactivate FL_DEACTIVATE + +This widget is no longer active, due to +deactivate() +being called on it or one of its parents. active() may +still be true after this, the widget is only active if +active() is true on it and all its parents (use active_r() to check this). + +\subsection events_fl_activate FL_ACTIVATE + +This widget is now active, due to +activate() +being called on it or one of its parents. + +\subsection events_fl_hide FL_HIDE + +This widget is no longer visible, due to +hide() +being called on it or one of its parents, or due to a parent window +being minimized. visible() may still be true after +this, but the widget is visible only if visible() is +true for it and all its parents (use visible_r() to +check this). + +\subsection events_fl_show FL_SHOW + +This widget is visible again, due to +show() +being called on it or one of its parents, or due to a parent window +being restored. Child Fl_Windows respond to this by +actually creating the window if not done already, so if you +subclass a window, be sure to pass FL_SHOW to the base +class handle() method! + +\section events_clipboard Clipboard Events + +\subsection events_fl_paste FL_PASTE + +You should get this event some time after you call +Fl::paste(). +The contents of +Fl::event_text() +is the text to insert and the number of characters is in +Fl::event_length(). + +\subsection events_fl_selectionclear FL_SELECTIONCLEAR + +The Fl::selection_owner() +will get this event before the selection is moved to another +widget. This indicates that some other widget or program has +claimed the selection. Motif programs used this to clear the +selection indication. Most modern programs ignore this. + + +\section events_dnd Drag and Drop Events + +FLTK supports drag and drop of text and files from any +application on the desktop. Text is transfered using +the current code page. Files are received as a list of full path +and file names, seperated by newline. On some platforms, path +names are prepended with file://. + +The drag and drop data is available in Fl::event_text() +at the concluding FL_PASTE. On some platforms, the +event text is also available for the FL_DND_* events, +however application must not depend on that behavior because it +depends on the protocol used on each platform. + +FL_DND_* events cannot be used in widgets derived +from Fl_Group or Fl_Window. + +\subsection events_fl_dnd_enter FL_DND_ENTER + +The mouse has been moved to point at this widget. A widget +that is interested in receiving drag'n'drop data must return 1 +to receive FL_DND_DRAG, FL_DND_LEAVE and FL_DND_RELEASE events. + +\subsection events_fl_dnd_drag FL_DND_DRAG + +The mouse has been moved inside a widget while dragging data. +A widget that is interested in receiving drag'n'drop data should +indicate the possible drop position. + +\subsection events_fl_dnd_leave FL_DND_LEAVE + +The mouse has moved out of the widget. + +\subsection events_fl_dnd_release FL_DND_RELEASE + +The user has released the mouse button dropping data into +the widget. If the widget returns 1, it will receive the data in +the immediatly following FL_PASTE event. + + + + +\section events_event_xxx Fl::event_*() methods + +FLTK keeps the information about the most recent event in +static storage. This information is good until the next event is +processed. Thus it is valid inside handle() and +callback() methods. + +These are all trivial inline functions and thus very fast and small: + +\li Fl::event_button + +\li Fl::event_clicks + +\li Fl::event_dx + +\li Fl::event_dy + +\li Fl::event_inside + +\li Fl::event_is_click + +\li Fl::event_key + +\li Fl::event_length + +\li Fl::event_state + +\li Fl::event_text + +\li Fl::event_x + +\li Fl::event_x_root + +\li Fl::event_y + +\li Fl::event_y_root + +\li Fl::get_key + +\li Fl::get_mouse + +\li Fl::test_shortcut + + +\section events_propagation Event Propagation + +FLTK follows very simple and unchangeable rules for sending +events. The major innovation is that widgets can indicate (by +returning 0 from the handle() method) that they are not +interested in an event, and FLTK can then send that event +elsewhere. This eliminates the need for "interests" +(event masks or tables), and this is probably the main reason +FLTK is much smaller than other toolkits. + +Most events are sent directly to the handle() method +of the Fl_Window that the window system says they +belong to. The window (actually the Fl_Group that +Fl_Window is a subclass of) is responsible for sending +the events on to any child widgets. To make the +Fl_Group code somewhat easier, FLTK sends some events +(FL_DRAG, FL_RELEASE, FL_KEYBOARD, +FL_SHORTCUT, FL_UNFOCUS, and +FL_LEAVE) directly to leaf widgets. These procedures +control those leaf widgets: + +\li Fl::add_handler + +\li Fl::belowmouse + +\li Fl::focus + +\li Fl::grab + +\li Fl::modal + +\li Fl::pushed + +\li Fl::release + +\li Fl_Widget::take_focus + + +\section events_compose_characters FLTK Compose-Character Sequences + +The foreign-letter compose processing done by the +Fl_Input +widget is provided in a function that you can call if you are writing +your own text editor widget. + +FLTK uses its own compose processing to allow "preview" of +the partially composed sequence, which is impossible with the +usual "dead key" processing. + +Although currently only characters in the ISO-8859-1 +character set are handled, you should call this in case any +enhancements to the processing are done in the future. The +interface has been designed to handle arbitrary UTF-8 encoded +text. + +The following methods are provided for character composition: + +\li Fl::compose() + +\li Fl::compose_reset() + +\htmlonly +
+[Index]    +[Previous]  5 - Drawing Things in FLTK  +[Next]  7 - Adding and Extending Widgets  +\endhtmlonly +*/ diff --git a/documentation/src/examples.dox b/documentation/src/examples.dox new file mode 100644 index 000000000..3f84c4b95 --- /dev/null +++ b/documentation/src/examples.dox @@ -0,0 +1,651 @@ +/** + + \page examples K - Example Source Code + +\par March 19, 2005 + +The FLTK distribution contains over 60 sample applications written +in, or ported to, FLTK. If the FLTK archive you received does not +contain a 'test' directory, you can download the complete FLTK +distribution from \b http://fltk.org/software.php . + +Most of the example programs were created while testing a group of widgets. +They are not meant to be great achievements in clean C++ programming, but +merely a test platform to verify the functionality of the FLTK library. + +\section example_applications Example Applications + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ref examples_adjuster \ref examples_arc \ref examples_ask \ref examples_bitmap \ref examples_blocks \ref examples_boxtype
\ref examples_browser \ref examples_button \ref examples_buttons \ref examples_checkers \ref examples_clock \ref examples_colbrowser
\ref examples_color_chooser \ref examples_cube \ref examples_CubeView \ref examples_cursor \ref examples_curve \ref examples_demo
\ref examples_doublebuffer \ref examples_editor \ref examples_fast_slow \ref examples_file_chooser \ref examples_fluid \ref examples_fonts
\ref examples_forms \ref examples_fractals \ref examples_fullscreen \ref examples_gl_overlay \ref examples_glpuzzle \ref examples_hello
\ref examples_help \ref examples_iconize \ref examples_image \ref examples_inactive \ref examples_input \ref examples_input_choice
\ref examples_keyboard \ref examples_label \ref examples_line_style \ref examples_list_visuals \ref examples_mandelbrot \ref examples_menubar
\ref examples_message \ref examples_minimum \ref examples_navigation \ref examples_output \ref examples_overlay \ref examples_pack
\ref examples_pixmap_browser \ref examples_pixmap \ref examples_preferences \ref examples_radio \ref examples_resizebox \ref examples_resize
\ref examples_scroll \ref examples_shape \ref examples_subwindow \ref examples_sudoku \ref examples_symbols \ref examples_tabs
\ref examples_threads \ref examples_tile \ref examples_tiled_image \ref examples_valuators    
+ + +\subsection examples_adjuster adjuster + +\par +\c adjuster shows a nifty little widget for quickly +setting values in a great range. + + +\subsection examples_arc arc + +\par +The \c arc demo explains how to derive your own widget to +generate some custom drawings. The sample drawings use the matrix +based arc drawing for some fun effects. + + +\subsection examples_ask ask + +\par +\c ask shows some of FLTK's standard dialog boxes. Click +the correct answers or you may end up in a loop, or you may end +up in a loop, or you... . + + +\subsection examples_bitmap bitmap + +\par +This simple test shows the use of a single color bitmap as a +label for a box widget. Bitmaps are stored in the X11 '.bmp' +file format and can be part of the source code. + + +\subsection examples_blocks blocks + +\par +A wonderful and addictive game that shows the usage of FLTK +timers, graphics, and how to implement sound on all platforms. +\c blocks is also a good example for the Mac OS X specific +bundle format. + + +\subsection examples_boxtype boxtype + +\par +\c boxtype gives an overview of readily available boxes and +frames in FLTK. More types can be added by the application programmer. +When using themes, FLTK shuffles boxtypes around to give your program +a new look. + + +\subsection examples_browser browser + +\par +\c browser shows the capabilities of the Fl_Browser widget. +Important features tested are loading of files, line formatting, and +correct positioning of the browser data window. + + +\subsection examples_button button + +\par +The \c button test is a simple demo of push-buttons and callbacks. + + +\subsection examples_buttons buttons + +\par +\c buttons shows a sample of FLTK button types. + + +\subsection examples_checkers checkers + +\par +Written by Steve Poulsen in early 1979, \c checkers shows +how to convert a VT100 text-terminal based program into a neat +application with a graphical UI. Check out the code that drags the +pieces, and how the pieces are drawn by layering. Then tell me +how to beat the computer at Checkers. + + +\subsection examples_clock clock + +\par +The \c clock demo shows two analog clocks. The innards of +the Fl_Clock widget are pretty interesting, explaining +the use of timeouts and matrix based drawing. + + +\subsection examples_colbrowser colbrowser + +\par +\c colbrowser runs only on X11 systems. It reads +/usr/lib/X11/rgb.txt to show the color representation +of every text entry in the file. This is beautiful, but +only moderatly useful unless your UI is written in Motif. + + +\subsection examples_color_chooser color_chooser + +\par +The \c color_chooser gives a short demo of FLTK's palette based +color chooser and of the RGB based color wheel. + + +\subsection examples_cube cube + +\par +The \c cube demo shows the speed of OpenGL. It also tests +the ability to render two OpenGL buffers into a single window, +and shows OpenGL text. + + +\subsection examples_CubeView CubeView + +\par +\c CubeView shows how to create a UI containing OpenGL with Fluid. + + +\subsection examples_cursor cursor + +\par +The \c cursor demo shows all mouse cursor shapes that come standard +with FLTK. The fgcolor and bgcolor sliders work only +on few systems (some version of Irix for example). + + +\subsection examples_curve curve + +\par +\c curve draws a nice Bezier curve into a custom widget. The +points option for splines is not supported on all platforms. + + +\subsection examples_demo demo + +\par +This tool allows quick access to all programs in the \c test directory. +\c demo is based on the visuals of the IrixGL demo program. The menu +tree can be changed by editing test/demo.menu. + + +\subsection examples_doublebuffer doublebuffer + +\par +The \c doublebuffer demo show the difference between a single +buffered window, which may flicker during a slow redraw, and a +double buffered window, which never flickers, but uses twice the +amount of RAM. Some modern OS's double buffer all windows automatically +to allow transparency and shadows on the desktop. FLTK is smart enough +to not tripple buffer a window in that case. + + +\subsection examples_editor editor + +\par +FLTK has two very different text input widgets. Fl_Input +and derived classes are rather light weight, however +Fl_Text_Editor is a complete port of nedit (with permission). +The \c editor test is almost a full application, showing custom +syntax highlighting and dialog creation. + + +\subsection examples_fast_slow fast_slow + +\par +\c fast_slow shows how an application can use the Fl_Widget::when() +setting to receive different kinds of callbacks. + + +\subsection examples_file_chooser file_chooser + +\par +The standard FLTK \c file_chooser is the result of many +iterations, trying to find a middle ground between a complex +browser and a fast light implementation. + + +\subsection examples_fonts fonts + +\par +\c fonts shows all available text fonts on the host system. +If your machine still has some pixmap based fonts, the supported +sizes will be shown in bold face. Only the first 256 fonts will +be listed. + + +\subsection examples_forms forms + +\par +\c forms is an XForms program with very few changes. +Search for "fltk" to find all changes necessary to port to fltk. +This demo shows the different boxtypes. Note that some +boxtypes are not appropriate for some objects. + + +\subsection examples_fractals fractals + +\par +\c fractals shows how to mix OpenGL, Glut and FLTK code. +FLTK supports a rather large subset of Glut, so that many Glut +applications compile just fine. + + +\subsection examples_fullscreen fullscreen + +\par +This demo shows how to do many of the window manipulations that +are popular for games. +You can toggle the border on/off, switch between single- +and double-buffered rendering, and take over the entire +screen. More information in the source code. + + +\subsection examples_gl_overlay gl_overlay + +\par +\c gl_overlay shows OpenGL overlay plane rendering. If no +hardware overlay plane is available, FLTK will simulate it +for you. + + +\subsection examples_glpuzzle glpuzzle + +\par +The \c glpuzzle test shows how most Glut source code compiles +easily under FLTK. + + +\subsection examples_hello hello + +\par +\c hello: Hello, World. Need I say more? Well, maybe. This +tiny demo shows how little is needed to get a functioning application +running with FLTK. Quite impressive, I'd say. + + +\subsection examples_help help + +\par +\c help displays the built-in FLTK help browser. The +Fl_Help_Dialog understands a subset of html and renders +various image formats. This widget makes it easy to provide help +pages to the user without depending on the operating system's +html browser. + + +\subsection examples_iconize iconize + +\par +\c iconize demonstrates the effect of the window functions +hide(), iconize(), and show(). + + +\subsection examples_image image + +\par +The \c image demo shows how an image can be created on the fly. +This generated image contains an alpha (transparency) channel which +lets previous renderings 'shine through', either via true +transparency or by using screen door transparency (pixelation). + + +\subsection examples_inactive inactive + +\par +\c inactive tests the correct rendering of inactive widgets. +To see the inactive version of images, you can check out the pixmap +or image test. + + +\subsection examples_input input + +\par +This tool shows and tests different types of text input fields based on +Fl_Input_. The \c input program also tests various +settings of Fl_Input::when(). + + +\subsection examples_input_choice input_choice + +\par +\c input_choice tests the latest addition to FLTK1, a text input +field with an attached pulldown menu. Windows users will recognize +similarities to the 'ComboBox'. \c input_choice starts up in +'plastic' scheme, but the traditional scheme is also supported. + + +\subsection examples_keyboard keyboard + +\par +FLTK unifies keyboard events for all platforms. The \c keyboard +test can be used to check the return values of Fl::event_key() +and Fl::event_text(). It is also great to see the modifier +buttons and the scroll wheel at work. Quit this application by closing +the window. The ESC key will not work. + + +\subsection examples_label label + +\par +Every FLTK widget can have a label attached to it. The \c label +demo shows alignment, clipping and wrapping of text labels. Labels +can contain symbols at the start and end of the text, like \@FLTK +or \@circle uh-huh \@square. + + +\subsection examples_line_style line_style + +\par +Advanced line drawing can be tested with \c line_style. +Not all platforms support all line styles. + + +\subsection examples_list_visuals list_visuals + +\par +This little app finds all available pixel formats for the current X11 +screen. But since you are now an FLTK user, you don't have to worry +about any of this. + + +\subsection examples_mandelbrot mandelbrot + +\par +\c mandelbrot shows two advanced topics in one test. It creates +grayscale images on the fly, updating them via the idle callback +system. This is one of the few occasions where the idle callback +is very useful by giving all available processor time to the application +without blocking the UI or other apps. + + +\subsection examples_menubar menubar + +\par +The \c menubar tests many aspects of FLTK's popup menu system. +Among the features are radio buttons, menus taller than the screen, +arbitrary sub menu depth, and global shortcuts. + + +\subsection examples_message message + +\par +\c message pops up a few of FLTK's standard message boxes. + + +\subsection examples_minimum minimum + +\par +The \c minimum test program verifies that the update regions +are set correctly. In a real life application, the trail would +be avoided by choosing a smaller label or by setting label clipping +differently. + + +\subsection examples_navigation navigation + +\par +\c navigation demonstrates how the text cursor moves from +text field to text field when using the arrow keys, tab, and shift-tab. + + +\subsection examples_output output + +\par +\c output shows the difference between the single line and +multi line mode of the Fl_Output widget. Fonts can be +selected from the FLTK standard list of fonts. + + +\subsection examples_overlay overlay + +\par +The \c overlay test app show how easy an FLTK window can +be layered to display cursor and manipulator style elements. This +example derives a new class from Fl_Overlay_Window and +provides a new function to draw custom overlays. + + +\subsection examples_pack pack + +\par +The \c pack test program demonstrates the resizing +and repositioning of children of the Fl_Pack group. +Putting an Fl_Pack into an Fl_Scroll is +a useful way to create a browser for large sets of data. + + +\subsection examples_pixmap_browser pixmap_browser + +\par +\c pixmap_browser tests the shared-image interface. When using +the same image multiple times, Fl_Shared_Image will keep it +only once in memory. + + +\subsection examples_pixmap pixmap + +\par +This simple test shows the use of a LUT based pixmap as a +label for a box widget. Pixmaps are stored in the X11 '.xpm' +file format and can be part of the source code. Pixmaps support +one transparent color. + + +\subsection examples_preferences preferences + +\par +I do have my \c preferences in the morning, but sometimes I +just can't remember a thing. This is where the Fl_Preferences +come in handy. They remember any kind of data between program launches. + + +\subsection examples_radio radio + +\par +The \c radio tool was created entirely with fluid. It +shows some of the available button types and tests radio +button behavior. + + +\subsection examples_resizebox resizebox + +\par +\c resizebox shows some possible ways of FLTK's automatic +resize bahavior.. + + +\subsection examples_resize resize + +\par +The \c resize demo tests size and position functions with +the given window manager. + + +\subsection examples_scroll scroll + +\par +\c scroll shows how to scroll an area of widgets, one of +them beeing a slow custom drawing. Fl_Scroll uses +clipping and smart window area copying to improve redraw speed. +The buttons at the bottom of the window control decoration rendering +and updates. + + +\subsection examples_shape shape + +\par +\c shape is a very minimal demo that shows how to create +your own OpenGL rendering widget. Now that you know that, go ahead +and write that flight simulator you always dreamt of. + + +\subsection examples_subwindow subwindow + +\par +The \c subwindow demo tests messaging and drawing between +the main window and 'true' sub windows. A sub window is different +to a group by resetting the FLTK coordinate system to 0, 0 in the +top left corner. On Win32 and X11, subwindows have their own +operating system specific handle. + + +\subsection examples_sudoku sudoku + +\par +Another highly addictive game - don't play it, I warned you. +The implementation shows how to create application icons, +how to deal with OS specifics, and how to generate sound. + + +\subsection examples_symbols symbols + +\par +\c symbols are a speciality of FLTK. These little vector +drawings can be integrated into labels. They scale and rotate, +and with a little patience, you can define your own. The rotation +number refers to 45 degree rotations if you were looking at a +numeric keypad (2 is down, 6 is right, etc.). + + +\subsection examples_tabs tabs + +\par +The \c tabs tool was created with fluid. It tests +correct hiding and redisplaying of tabs, navigation across tabs, +resize behavior, and no unneeded redrawing of invisible widgets. + +\par +The \c tabs application shows the Fl_Tabs widget +on the left and the Fl_Wizard widget on the right side +for direct comparison of these two panel management widgets. + + +\subsection examples_threads threads + +\par +FLTK can be used in a multithreading environment. There are some +limitations, mostly due to the underlying operating system. +\c threads shows how to use Fl::lock(), +Fl::unlock(), and Fl::awake() in secondary threads +to keep FLTK happy. Although locking works on all platforms, +this demo is not available on every machine. + + +\subsection examples_tile tile + +\par +The \c tile tool shows a nice way of using Fl_Tile. +To test correct resizing of subwindows, the widget for region +1 is created from an Fl_Window class. + + +\subsection examples_tiled_image tiled_image + +\par +The \c tiled_image demo uses an image as the background +for a window by repeating it over the full size of the widget. +The window is resizable and shows how the image gets repeated. + + +\subsection examples_valuators valuators + +\par +\c valuators shows all of FLTK's nifty widgets to change +numeric values. + + +\subsection examples_fluid fluid + +\par +\c fluid is not only a big test program, but also a very +useful visual UI designer. Many parts of \c fluid were +created using \c fluid. See the \link fluid Fluid Tutorial \endlink +for more details. + +\htmlonly +
+[Index]    +[Previous]  + \ref license    + +\endhtmlonly +*/ diff --git a/documentation/src/fl_alert.gif b/documentation/src/fl_alert.gif new file mode 100644 index 000000000..be008e3ab Binary files /dev/null and b/documentation/src/fl_alert.gif differ diff --git a/documentation/src/fl_ask.gif b/documentation/src/fl_ask.gif new file mode 100644 index 000000000..00a9fbbe0 Binary files /dev/null and b/documentation/src/fl_ask.gif differ diff --git a/documentation/src/fl_choice.gif b/documentation/src/fl_choice.gif new file mode 100644 index 000000000..940b22cf3 Binary files /dev/null and b/documentation/src/fl_choice.gif differ diff --git a/documentation/src/fl_color_chooser.jpg b/documentation/src/fl_color_chooser.jpg new file mode 100644 index 000000000..55dd82f07 Binary files /dev/null and b/documentation/src/fl_color_chooser.jpg differ diff --git a/documentation/src/fl_input.gif b/documentation/src/fl_input.gif new file mode 100644 index 000000000..63dc51cec Binary files /dev/null and b/documentation/src/fl_input.gif differ diff --git a/documentation/src/fl_message.gif b/documentation/src/fl_message.gif new file mode 100644 index 000000000..778020638 Binary files /dev/null and b/documentation/src/fl_message.gif differ diff --git a/documentation/src/fl_password.gif b/documentation/src/fl_password.gif new file mode 100644 index 000000000..0523b574a Binary files /dev/null and b/documentation/src/fl_password.gif differ diff --git a/documentation/src/fl_show_colormap.gif b/documentation/src/fl_show_colormap.gif new file mode 100644 index 000000000..5c3b3518d Binary files /dev/null and b/documentation/src/fl_show_colormap.gif differ diff --git a/documentation/src/fluid-catgets.gif b/documentation/src/fluid-catgets.gif new file mode 100644 index 000000000..d81b20042 Binary files /dev/null and b/documentation/src/fluid-catgets.gif differ diff --git a/documentation/src/fluid-gettext.gif b/documentation/src/fluid-gettext.gif new file mode 100644 index 000000000..db1608192 Binary files /dev/null and b/documentation/src/fluid-gettext.gif differ diff --git a/documentation/src/fluid-org.gif b/documentation/src/fluid-org.gif new file mode 100644 index 000000000..e6e2ff659 Binary files /dev/null and b/documentation/src/fluid-org.gif differ diff --git a/documentation/src/fluid.dox b/documentation/src/fluid.dox new file mode 100644 index 000000000..49591a5f1 --- /dev/null +++ b/documentation/src/fluid.dox @@ -0,0 +1,1373 @@ +/** + + \page fluid 9 - Programming with FLUID + +This chapter shows how to use the Fast Light User-Interface Designer +("FLUID") to create your GUIs. + +Subchapters: + +\li What is FLUID +\li Running FLUID Under UNIX +\li Running FLUID Under Microsoft Windows +\li Compiling .fl Files +\li A Short Tutorial +\li FLUID Reference +\li Internationalization with FLUID +\li Known Limitations + + +\section fluid_what_is_fluid What is FLUID? + +The Fast Light User Interface Designer, or FLUID, is a +graphical editor that is used to produce FLTK source code. FLUID +edits and saves its state in .fl files. These files +are text, and you can (with care) edit them in a text editor, +perhaps to get some special effects. + +FLUID can "compile" the .fl file into a +.cxx and a .h file. The .cxx file +defines all the objects from the .fl file and the +.h file declares all the global ones. FLUID also +supports localization (Internationalization) +of label strings using message files and the GNU gettext or +POSIX catgets interfaces. + +A simple program can be made by putting all your code (including a +main() function) into the .fl file and thus making the .cxx file a +single source file to compile. Most programs are more complex than +this, so you write other .cxx files that call the FLUID functions. +These .cxx files must \#include the .h file or they can +\#include the .cxx file so it still appears to be a single source +file. + + \image html fluid-org.gif "Figure 9-1: FLUID organization" + +Normally the FLUID file defines one or more functions or classes which +output C++ code. Each function defines a one or more FLTK +windows, and all the widgets that go inside those windows. + +Widgets created by FLUID are either "named", "complex named" or +"unnamed". A named widget has a legal C++ variable identifier as its +name (i.e. only alphanumeric and underscore). In this case FLUID +defines a global variable or class member that will point at the widget +after the function defining it is called. A complex named object has +punctuation such as '.' or '->' or any other symbols in its name. In +this case FLUID assigns a pointer to the widget to the name, but does +not attempt to declare it. This can be used to get the widgets into +structures. An unnamed widget has a blank name and no pointer is stored. + +Widgets may either call a named callback function that you write in +another source file, or you can supply a small piece of C++ source and +FLUID will write a private callback function into the .cxx file. + + +\section fluid_fluid_under_unix Running FLUID Under UNIX + +To run FLUID under UNIX, type: + +\code +fluid filename.fl & +\endcode + +to edit the .fl file filename.fl. If the file does not exist +you will get an error pop-up, but if you dismiss it you will be editing +a blank file of that name. You can run FLUID without any name, in +which case you will be editing an unnamed blank setup (but you can use +save-as to write it to a file). + +You can provide any of the standard FLTK switches before the filename: + +\code +-display host:n.n +-geometry WxH+X+Y +-title windowtitle +-name classname +-iconic +-fg color +-bg color +-bg2 color +-scheme schemename +\endcode + +Changing the colors may be useful to see what your interface +will look at if the user calls it with the same switches. +Similarly, using "-scheme plastic" will show how the interface +will look using the "plastic" scheme. + +In the current version, if you don't put FLUID into the +background with '&' then you will be able to abort FLUID by +typing CTRL-C on the terminal. It will exit +immediately, losing any changes. + + +\section fluid_fluid_under_windows Running FLUID Under Microsoft Windows + +To run FLUID under WIN32, double-click on the FLUID.exe +file. You can also run FLUID from the Command Prompt window. +FLUID always runs in the background under WIN32. + + +\section fluid_compiling_fl_files Compiling .fl files + +FLUID can also be called as a command-line +"compiler" to create the .cxx and .h +file from a .fl file. To do this type: + +\code +fluid -c filename.fl +\endcode + +This will read the filename.fl file and write +filename.cxx and filename.h. Any leading +directory on filename.fl will be stripped, so they are +always written to the current directory. If there are any errors +reading or writing the files, FLUID will print the error and +exit with a non-zero code. You can use the following lines in a +makefile to automate the creation of the source and header +files: + +\code +my_panels.h my_panels.cxx: my_panels.fl + fluid -c my_panels.fl +\endcode + +Most versions of make support rules that cause .fl +files to be compiled: + +\code +.SUFFIXES: .fl .cxx .h +.fl.h .fl.cxx: + fluid -c $< +\endcode + + +\section fluid_tutorial A Short Tutorial + +FLUID is an amazingly powerful little program. However, this +power comes at a price as it is not always obvious how to +accomplish seemingly simple tasks with it. This tutorial will +show you how to generate a complete user interface class with +FLUID that is used for the CubeView program provided with FLTK. + +\image html cubeview.gif "Figure 9-2: CubeView demo" + +The window is of class CubeViewUI, and is completely generated by FLUID, +including +class member functions. The central display of the cube is a separate +subclass of Fl_Gl_Window called CubeView. CubeViewUI manages CubeView +using callbacks from the various sliders and rollers to manipulate the +viewing angle and zoom of CubeView. + +At the completion of this tutorial you will (hopefully) understand +how to: + +-# Use FLUID to create a complete user interface class, including + constructor and any member functions necessary. +-# Use FLUID to set callbacks member functions of a custom widget + classes. +-# Subclass an Fl_Gl_Window to suit your purposes. + +\subsection fluid_cubeview The CubeView Class + +The CubeView class is a subclass of Fl_Gl_Window. It has methods for +setting the zoom, the x and y pan, and the rotation angle +about the x and yaxes. + +You can safely skip this section as long as you realize the CubeView +is a sublass of Fl_Gl_Window and will respond to calls from +CubeViewUI, generated by FLUID. + + +\par The CubeView Class Definition + +Here is the CubeView class definition, as given by its header file +"test/CubeView.h": + +\code +class CubeView : public Fl_Gl_Window { + public: + CubeView(int x,int y,int w,int h,const char *l=0); + // this value determines the scaling factor used to draw the cube. + double size; + /* Set the rotation about the vertical (y ) axis. + * + * This function is called by the horizontal roller in CubeViewUI + * and the initialize button in CubeViewUI. + */ + void v_angle(float angle){vAng=angle;}; + // Return the rotation about the vertical (y ) axis. + float v_angle(){return vAng;}; + /* Set the rotation about the horizontal (x ) axis. + * + * This function is called by the vertical roller in CubeViewUI + and the + * initialize button in CubeViewUI. + */ + void h_angle(float angle){hAng=angle;}; + // the rotation about the horizontal (x ) axis. + float h_angle(){return hAng;}; + /* Sets the x shift of the cube view camera. + * + * This function is called by the slider in CubeViewUI and the + * initialize button in CubeViewUI. + */ + void panx(float x){xshift=x;}; + /* Sets the y shift of the cube view camera. + * + * This function is called by the slider in CubeViewUI and the + * initialize button in CubeViewUI. + */ + void pany(float y){yshift=y;}; + /* The widget class draw() override. + * The draw() function initialize Gl for another round of + * drawing then calls specialized functions for drawing each + * of the entities displayed in the cube view. + */ + void draw(); + + private: + /* Draw the cube boundaries + * Draw the faces of the cube using the boxv[] vertices, using + * GL_LINE_LOOP for the faces. The color is #defined by + * CUBECOLOR. + */ + void drawCube(); + + float vAng,hAng; float xshift,yshift; + + float boxv0[3];float boxv1[3]; float boxv2[3];float boxv3[3]; + float boxv4[3];float boxv5[3]; float boxv6[3];float boxv7[3]; +}; +\endcode + + +\par The CubeView Class Implementation + +Here is the CubeView implementation. It is very similar to the +"cube" demo included with FLTK. + +\code +#include "CubeView.h" +#include + +CubeView::CubeView(int x,int y,int w,int h,const char *l) + : Fl_Gl_Window(x,y,w,h,l) +{ + vAng = 0.0; hAng=0.0; size=10.0; + /* The cube definition. These are the vertices of a unit cube + * centered on the origin.*/ + boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5; boxv1[0] = 0.5; + boxv1[1] = -0.5; boxv1[2] = -0.5; boxv2[0] = 0.5; boxv2[1] = 0.5; + boxv2[2] = -0.5; boxv3[0] = -0.5; boxv3[1] = 0.5; boxv3[2] = -0.5; + boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] = 0.5; boxv5[0] = 0.5; + boxv5[1] = -0.5; boxv5[2] = 0.5; boxv6[0] = 0.5; boxv6[1] = 0.5; + boxv6[2] = 0.5; boxv7[0] = -0.5; boxv7[1] = 0.5; boxv7[2] = 0.5; +}; + +// The color used for the edges of the bounding cube. +#define CUBECOLOR 255,255,255,255 + +void CubeView::drawCube() { +/* Draw a colored cube */ +#define ALPHA 0.5 + glShadeModel(GL_FLAT); + + glBegin(GL_QUADS); + glColor4f(0.0, 0.0, 1.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv1); + glVertex3fv(boxv2); + glVertex3fv(boxv3); + + glColor4f(1.0, 1.0, 0.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv4); + glVertex3fv(boxv5); + glVertex3fv(boxv1); + + glColor4f(0.0, 1.0, 1.0, ALPHA); + glVertex3fv(boxv2); + glVertex3fv(boxv6); + glVertex3fv(boxv7); + glVertex3fv(boxv3); + + glColor4f(1.0, 0.0, 0.0, ALPHA); + glVertex3fv(boxv4); + glVertex3fv(boxv5); + glVertex3fv(boxv6); + glVertex3fv(boxv7); + + glColor4f(1.0, 0.0, 1.0, ALPHA); + glVertex3fv(boxv0); + glVertex3fv(boxv3); + glVertex3fv(boxv7); + glVertex3fv(boxv4); + + glColor4f(0.0, 1.0, 0.0, ALPHA); + glVertex3fv(boxv1); + glVertex3fv(boxv5); + glVertex3fv(boxv6); + glVertex3fv(boxv2); + glEnd(); + + glColor3f(1.0, 1.0, 1.0); + glBegin(GL_LINES); + glVertex3fv(boxv0); + glVertex3fv(boxv1); + + glVertex3fv(boxv1); + glVertex3fv(boxv2); + + glVertex3fv(boxv2); + glVertex3fv(boxv3); + + glVertex3fv(boxv3); + glVertex3fv(boxv0); + + glVertex3fv(boxv4); + glVertex3fv(boxv5); + + glVertex3fv(boxv5); + glVertex3fv(boxv6); + + glVertex3fv(boxv6); + glVertex3fv(boxv7); + + glVertex3fv(boxv7); + glVertex3fv(boxv4); + + glVertex3fv(boxv0); + glVertex3fv(boxv4); + + glVertex3fv(boxv1); + glVertex3fv(boxv5); + + glVertex3fv(boxv2); + glVertex3fv(boxv6); + + glVertex3fv(boxv3); + glVertex3fv(boxv7); + glEnd(); +};//drawCube + +void CubeView::draw() { + if (!valid()) { + glLoadIdentity(); glViewport(0,0,w(),h()); + glOrtho(-10,10,-10,10,-20000,10000); glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glPushMatrix(); glTranslatef(xshift, yshift, 0); + glRotatef(hAng,0,1,0); glRotatef(vAng,1,0,0); + glScalef(float(size),float(size),float(size)); drawCube(); + glPopMatrix(); +}; +\endcode + +\subsection fluid_cubevieui The CubeViewUI Class + +We will completely construct a window to display and control the +CubeView defined in the previous section using FLUID. + + +\par Defining the CubeViewUI Class + +Once you have started FLUID, the first step in defining a class is to +create a new class within FLUID using the \em New->Code->Class +menu item. Name the class "CubeViewUI" and leave the +subclass blank. We do not need any inheritance for this +window. You should see the new class declaration in the FLUID +browser window. + +\image html fluid1.gif "Figure 9-3: FLUID file for CubeView" + + +\par Adding the Class Constructor + +Click on the CubeViewUI class in the FLUID window and add a new method +by selecting New->Code->Function/Method. The name of the +function will also be CubeViewUI. FLUID will understands that this will +be the constructor for the class and will generate the appropriate +code. Make sure you declare the constructor public. + +Then add a window to the CubeViewUI class. Highlight the name of +the constructor in the FLUID browser window and click on +New->Group->Window. In a similar manner add the +following to the CubeViewUI constructor: + +\li A horizontal roller named hrot +\li A vertical roller named vrot +\li A horizontal slider named xpan +\li A vertical slider named ypan +\li A horizontal value slider named zoom + +None of these additions need be public. And they shouldn't be +unless you plan to expose them as part of the interface for +CubeViewUI. + +When you are finished you should have something like this: + +\image html fluid2.gif "Figure 9-4: FLUID window containing CubeView demo" + +We will talk about the show() method that is highlighted +shortly. + + +\par Adding the CubeView Widget + +What we have is nice, but does little to show our cube. We have already +defined the CubeView class and we would like to show it within the +CubeViewUI. + +The CubeView class inherits the Fl_Gl_Window class, which +is created in the same way as a Fl_Box widget. Use +New->Other->Box to add a square box to the main window. +This will be no ordinary box, however. + +The Box properties window will appear. The key to letting CubeViewUI +display CubeView is to enter CubeView in the "Class:" text +entry box. This tells FLUID that it is not an Fl_Box, but a +similar widget with the same constructor. + +In the "Extra Code:" field enter \#include "CubeView.h" + +This \#include is important, as we have just included +CubeView as a member of CubeViewUI, so any public CubeView methods are +now available to CubeViewUI. + +\image html fluid3-cxx.gif "Figure 9-5: CubeView methods" + + +\par Defining the Callbacks + +Each of the widgets we defined before adding CubeView can have +callbacks that call CubeView methods. You can call an external +function or put in a short amount of code in the "Callback" +field of the widget panel. For example, the callback for the +ypan slider is: + +\code +cube->pany(((Fl_Slider *)o)->value()); +cube->redraw(); +\endcode + +We call cube->redraw() after changing the value to update +the CubeView window. CubeView could easily be modified to do this, but +it is nice to keep this exposed in the case where you may want to do +more than one view change only redrawing once saves a lot of time. + +There is no reason no wait until after you have added CubeView to +enter these callbacks. FLUID assumes you are smart enough not to refer +to members or functions that don't exist. + + +\par Adding a Class Method + +You can add class methods within FLUID that have nothing to do with the +GUI. An an example add a show function so that CubeViewUI can actually +appear on the screen. + +Make sure the top level CubeViewUI is selected and select +New->Code->Function/Method. Just use the name +show(). We don't need a return value here, and since we will +not be adding any widgets to this method FLUID will assign it a return +type of void. + +\image html fluid4.gif "Figure 9-6: CubeView constructor" + +Once the new method has been added, highlight its name and select +New->Code->Code. Enter the method's code in the code window. + + +\subsection fluid_addconst Adding Constructor Initialization Code + +If you need to add code to initialize class, for example setting +initial values of the horizontal and vertical angles in the +CubeView, you can simply highlight the Constructor and select +New->Code->Code. Add any required code. + + +\subsection fluid_gencode Generating the Code + +Now that we have completely defined the CubeViewUI, we have to generate +the code. There is one last trick to ensure this all works. Open the +preferences dialog from Edit->Preferences. + +At the bottom of the preferences dialog box is the key: "Include +Header from Code". Select that option and set your desired file +extensions and you are in business. You can include the CubeViewUI.h +(or whatever extension you prefer) as you would any other C++ class. + + + + +\section fluid_references FLUID Reference + +The following sections describe each of the windows in FLUID. + +\subsection fluid_browser The Widget Browser + +The main window shows a menu bar and a scrolling browser of +all the defined widgets. The name of the .fl file being +edited is shown in the window title. + +The widgets are stored in a hierarchy. You can open and close a +level by clicking the "triangle" at the left of a widget. +The leftmost widgets are the parents, and all the widgets +listed below them are their children. Parents don't have to have +any children. + +The top level of the hierarchy is composed of functions and +classes. Each of these will produce a single C++ public +function or class in the output .cxx file. Calling the function or +instantiating the class will create all of the child widgets. + +The second level of the hierarchy contains the windows. Each of these +produces an instance of class Fl_Window. + +Below that are either widgets (subclasses of Fl_Widget) or +groups of widgets (including other groups). Plain groups are for +layout, navigation, and resize purposes. Tab groups provide the +well-known file-card tab interface. + +Widgets are shown in the browser by either their name (such +as "main_panel" in the example), or by their type +and label (such as "Button "the green""). + +You select widgets by clicking on their names, which highlights +them (you can also select widgets from any displayed window). You can +select many widgets by dragging the mouse across them, or by using +Shift+Click to toggle them on and off. To select no widgets, click in +the blank area under the last widget. Note that hidden children may +be selected even when there is no visual indication of this. + +You open widgets by double-clicking on them, or (to open several +widgets you have picked) by typing the F1 key. A control panel will appear +so you can change the widget(s). + +\subsection fluid_menu_items Menu Items + +The menu bar at the top is duplicated as a pop-up menu on any +displayed window. The shortcuts for all the menu items work in any +window. The menu items are: + +\par File/Open... (Ctrl+o) + +Discards the current editing session and reads in a different +.fl file. You are asked for confirmation if you have +changed the current file. + +FLUID can also read .fd files produced by the Forms +and XForms "fdesign" programs. It is best to +File/Merge them instead of opening them. FLUID does not +understand everything in a .fd file, and will print a +warning message on the controlling terminal for all data it does +not understand. You will probably need to edit the resulting +setup to fix these errors. Be careful not to save the file +without changing the name, as FLUID will write over the +.fd file with its own format, which fdesign cannot +read! + +\par File/Insert... (Ctrl+i) + +Inserts the contents of another .fl file, without +changing the name of the current .fl file. All the +functions (even if they have the same names as the current ones) +are added, and you will have to use cut/paste to put the widgets +where you want. + +\par File/Save (Ctrl+s) + +Writes the current data to the .fl file. If the +file is unnamed then FLUID will ask for a filename. + +\par File/Save As... (Ctrl+Shift+S) + +Asks for a new filename and saves the file. + +\par File/Write Code (Ctrl+Shift+C) + +"Compiles" the data into a .cxx and .h +file. These are exactly the same as the files you get when you run +FLUID with the -c switch. + +The output file names are the same as the .fl file, with +the leading directory and trailing ".fl" stripped, and +".h" or ".cxx" appended. + +\par File/Write Strings (Ctrl+Shift+W) + +Writes a message file for all of the text labels defined in +the current file. + +The output file name is the same as the .fl file, +with the leading directory and trailing ".fl" +stripped, and ".txt", ".po", or ".msg" appended depending on the +Internationalization Mode. + +\par File/Quit (Ctrl+q) + +Exits FLUID. You are asked for confirmation if you have +changed the current file. + +\par Edit/Undo (Ctrl+z) + +This isn't implemented yet. You should do save often so you can +recover from any mistakes you make. + +\par Edit/Cut (Ctrl+x) + +Deletes the selected widgets and all of their children. +These are saved to a "clipboard" file and can be +pasted back into any FLUID window. + +\par Edit/Copy (Ctrl+c) + +Copies the selected widgets and all of their children to the +"clipboard" file. + +\par Edit/Paste (Ctrl+c) + +Pastes the widgets from the clipboard file. + +If the widget is a window, it is added to whatever function +is selected, or contained in the current selection. + +If the widget is a normal widget, it is added to whatever +window or group is selected. If none is, it is added to the +window or group that is the parent of the current selection. + +To avoid confusion, it is best to select exactly one widget +before doing a paste. + +Cut/paste is the only way to change the parent of a +widget. + +\par Edit/Select All (Ctrl+a) + +Selects all widgets in the same group as the current selection. + +If they are all selected already then this selects all +widgets in that group's parent. Repeatedly typing Ctrl+a will +select larger and larger groups of widgets until everything is +selected. + +\par Edit/Open... (F1 or double click) + +Displays the current widget in the attributes panel. If the +widget is a window and it is not visible then the window is +shown instead. + +\par Edit/Sort + +Sorts the selected widgets into left to right, top to bottom +order. You need to do this to make navigation keys in FLTK work +correctly. You may then fine-tune the sorting with +"Earlier" and "Later". This does not affect +the positions of windows or functions. + +\par Edit/Earlier (F2) + +Moves all of the selected widgets one earlier in order among +the children of their parent (if possible). This will affect +navigation order, and if the widgets overlap it will affect how +they draw, as the later widget is drawn on top of the earlier +one. You can also use this to reorder functions, classes, and +windows within functions. + +\par Edit/Later (F3) + +

Moves all of the selected widgets one later in order among +the children of their parent (if possible). + +\par Edit/Group (F7) + +Creates a new Fl_Group and make all the currently +selected widgets children of it. + +\par Edit/Ungroup (F8) + +Deletes the parent group if all the children of a group are +selected. + +\par Edit/Overlays on/off (Ctrl+Shift+O) + +Toggles the display of the red overlays off, without changing +the selection. This makes it easier to see box borders and how +the layout looks. The overlays will be forced back on if you +change the selection. + +\par Edit/Project Settings... (Ctrl+p) + +Displays the project settings panel. +The output filenames control the extensions or names of the +files the are generated by FLUID. If you check the "Include .h +from .cxx" button the code file will include the header file +automatically. + +The internationalization options are described +later in this chapter. + +\image html fluid_prefs.gif "Figure 9-7: FLUID Preferences Window" + +\par Edit/GUI Settings... (Shift+Ctrl+p) + +Displays the GUI settings panel. This panel is used +to control the user interface settings. + +\par New/Code/Function + +Creates a new C function. You will be asked for a name for +the function. This name should be a legal C++ function +template, without the return type. You can pass arguments which +can be referred to by code you type into the individual widgets. + +If the function contains any unnamed windows, it will be +declared as returning a Fl_Window pointer. The unnamed window +will be returned from it (more than one unnamed window is +useless). If the function contains only named windows, it will +be declared as returning nothing (void). + +It is possible to make the .cxx output be a +self-contained program that can be compiled and executed. This +is done by deleting the function name so +main(argc,argv) is used. The function will call +show() on all the windows it creates and then call +Fl::run(). This can also be used to test resize +behavior or other parts of the user interface. + +You can change the function name by double-clicking on the +function. + +\par New/Window + +Creates a new Fl_Window widget. The window is added +to the currently selected function, or to the function +containing the currently selected item. The window will appear, +sized to 100x100. You can resize it to whatever size you +require. + +The widget panel will also appear and is described later in +this chapter. + +\par New/... + +All other items on the New menu are subclasses of +Fl_Widget. Creating them will add them to the +currently selected group or window, or the group or window +containing the currently selected widget. The initial +dimensions and position are chosen by copying the current +widget, if possible. + +When you create the widget you will get the widget's control +panel, which is described later in this chapter. + +\par Layout/Align/... + +Align all selected widgets to the first widget in the selection. + +\par Layout/Space Evenly/... + +Space all selected widgets evenly inside the selected space. +Widgets will be sorted from first to last. + +\par Layout/Make Same Size/... + +Make all slected widgets the same size as the first selected widget. + +\par Layout/Center in Group/... + +Center all selected widgets relative to their parent widget + +\par Layout/Grid... (Ctrl+g) + +Displays the grid settings panel. +This panel +controls the grid that all widgets snap to when you move and +resize them, and for the "snap" which is how far a widget has to +be dragged from its original position to actually change. + +\par Shell/Execute Command... (Alt+x) + +Displays the shell command panel. The shell command +is commonly used to run a 'make' script to compile the FLTK output. + +\par Shell/Execute Again (Alt+g) + +Run the shell command again. + +\par Help/About FLUID + +Pops up a panel showing the version of FLUID. + +\par Help/On FLUID + +Shows this chapter of the manual. + +\par Help/Manual + +Shows the contents page of the manual + +\subsection fluid_widget_panel The Widget Panel + +When you double-click on a widget or a set of widgets you +will get the "widget attribute panel". + +When you change attributes using this panel, the changes are +reflected immediately in the window. It is useful to hit the +"no overlay" button (or type Ctrl+Shift+O) to hide the +red overlay so you can see the widgets more accurately, +especially when setting the box type. + +If you have several widgets selected, they may have different +values for the fields. In this case the value for one of +the widgets is shown. But if you change this value, all +of the selected widgets are changed to the new value. + +Hitting "OK" makes the changes permanent. +Selecting a different widget also makes the changes permanent. +FLUID checks for simple syntax errors such as mismatched +parenthesis in any code before saving any text. + +"Revert" or "Cancel" put everything back +to when you last brought up the panel or hit OK. However in the +current version of FLUID, changes to "visible" +attributes (such as the color, label, box) are not undone by +revert or cancel. Changes to code like the callbacks are +undone, however. + + + +\image html fluid_widget_gui.gif "Figure 9-8: The FLUID widget GUI attributes" + +\section fluid_widget_attributes GUI Attributes + +\par Label (text field) + +String to print next to or inside the button. You can put +newlines into the string to make multiple lines. The easiest way +is by typing Ctrl+j. + +Symbols +can be added to the label using the at sign ("@"). + +\par Label (pull down menu) + +How to draw the label. Normal, shadowed, engraved, and +embossed change the appearance of the text. + +\par Image + +The active image for the widget. Click on the +Browse... button to pick an image file using the file +chooser. + +\par Inactive + +The inactive image for the widget. Click on the +Browse... button to pick an image file using the file +chooser. + +\par Alignment (buttons) + +Where to draw the label. The arrows put it on that side of +the widget, you can combine the to put it in the corner. The +"box" button puts the label inside the widget, rather +than outside. + +The clip button clips the label to the widget box, the +wrap button wraps any text in the label, and the text +image button puts the text over the image instead of under +the image. + +\par Position (text fields) + +The position fields show the current position and size of the +widget box. Enter new values to move and/or resize a widget. + +\par Values (text fields) + +The values and limits of the current widget. Depending on the +type of widget, some or all of these fields may be inactive. + +\par Shortcut + +The shortcut key to activate the widget. Click on the +shortcut button and press any key sequence to set the shortcut. + +\par Attributes (buttons) + +The Visible button controls whether the widget is +visible (on) or hidden (off) initially. Don't change this for +windows or for the immediate children of a Tabs group. + +The Active button controls whether the widget is +activated (on) or deactivated (off) initially. Most widgets +appear greyed out when deactivated. + +The Resizable button controls whether the window is +resizeable. In addition all the size changes of a window or +group will go "into" the resizable child. If you have +a large data display surrounded by buttons, you probably want +that data area to be resizable. You can get more complex +behavior by making invisible boxes the resizable widget, or by +using hierarchies of groups. Unfortunately the only way to test +it is to compile the program. Resizing the FLUID window is +not the same as what will happen in the user program. + +The Hotspot button causes the parent window to be +positioned with that widget centered on the mouse. This +position is determined when the FLUID function is called, +so you should call it immediately before showing the window. If +you want the window to hide and then reappear at a new position, +you should have your program set the hotspot itself just before +show(). + +The Border button turns the window manager border on +or off. On most window managers you will have to close the +window and reopen it to see the effect. + +\par X Class (text field) + +The string typed into here is passed to the X window manager +as the class. This can change the icon or window decorations. +On most (all?) window managers you will have to close the window +and reopen it to see the effect. + +\image html fluid_widget_style.gif "Figure 9-9: The FLUID widget Style attributes" + +\subsection fluid_style_attributes Style Attributes + +\par Label Font (pulldown menu) + +Font to draw the label in. Ignored by symbols, bitmaps, and +pixmaps. Your program can change the actual font used by these +"slots" in case you want some font other than the 16 +provided. + +\par Label Size (pulldown menu) + +Pixel size (height) for the font to draw the label in. +Ignored by symbols, bitmaps, and pixmaps. To see the result +without dismissing the panel, type the new number and then Tab. + +\par Label Color (button) + +Color to draw the label. Ignored by pixmaps (bitmaps, +however, do use this color as the foreground color). + +\par Box (pulldown menu) + +The boxtype to draw as a background for the widget. + +Many widgets will work, and draw faster, with a +"frame" instead of a "box". A frame does +not draw the colored interior, leaving whatever was already +there visible. Be careful, as FLUID may draw this ok but the +real program may leave unwanted stuff inside the widget. + +If a window is filled with child widgets, you can speed up +redrawing by changing the window's box type to +"NO_BOX". FLUID will display a checkerboard for any +areas that are not colored in by boxes. Note that this +checkerboard is not drawn by the resulting program. Instead +random garbage will be displayed. + +\par Down Box (pulldown menu) + +The boxtype to draw when a button is pressed or for some +parts of other widgets like scrollbars and valuators. + +\par Color (button) + +The color to draw the box with. + +\par Select Color (button) + +Some widgets will use this color for certain parts. FLUID +does not always show the result of this: this is the color +buttons draw in when pushed down, and the color of input fields +when they have the focus. + +\par Text Font, Size, and Color + +Some widgets display text, such as input fields, pull-down +menus, and browsers. + +\image html fluid_widget_cxx.gif "Figure 9-10: The FLUID widget C++ attributes" + +\subsection fluid_cpp_attributes C++ Attributes + +\par Class + +This is how you use your own subclasses of +Fl_Widget. Whatever identifier you type in here will +be the class that is instantiated. + +In addition, no \#include header file is put in the +.h file. You must provide a \#include line as +the first line of the "Extra Code" which declares your +subclass. + +The class must be similar to the class you are spoofing. It +does not have to be a subclass. It is sometimes useful to +change this to another FLTK class. Currently the only way to get +a double-buffered window is to change this field for the window +to "Fl_Double_Window" and to add +\code "#include \endcode +to the extra code. + +\par Type (upper-right pulldown menu) + +Some classes have subtypes that modify their appearance or behavior. +You pick the subtype off of this menu. + +\par Name (text field) + +Name of a variable to declare, and to store a pointer to this +widget into. This variable will be of type "*". If the name is +blank then no variable is created. + +You can name several widgets with "name[0]", "name[1]", "name[2]", +etc. This will cause FLUID to declare an array of pointers. The array +is big enough that the highest number found can be stored. All widgets +that in the array must be the same type. + +\par Public (button) + +Controls whether the widget is publicly accessible. When +embedding widgets in a C++ class, this controls whether the +widget is public or private in the class. +Otherwise is controls whether the widget is declared +static or global (extern). + +\par Extra Code (text fields) + +These four fields let you type in literal lines of code to +dump into the .h or .cxx files. + +If the text starts with a \# or the word +extern then FLUID thinks this is an "include" +line, and it is written to the .h file. If the same +include line occurs several times then only one copy is +written. + +All other lines are "code" lines. The current +widget is pointed to by the local variable o. The +window being constructed is pointed to by the local variable +w. You can also access any arguments passed to the +function here, and any named widgets that are before this +one. + +FLUID will check for matching parenthesis, braces, and +quotes, but does not do much other error checking. Be careful +here, as it may be hard to figure out what widget is producing +an error in the compiler. If you need more than four lines you +probably should call a function in your own .cxx +code. + +\par Callback (text field) + +This can either be the name of a function, or a small snippet +of code. If you enter anything but letters, numbers, and the +underscore then FLUID treats it as code. + +A name names a function in your own code. It must be +declared as void name(*,void*). + +A code snippet is inserted into a static function in the +.cxx output file. The function prototype is void +name(class *o, void *v) so that you can refer to the +widget as o and the user_data() as +v. FLUID will check for matching parenthesis, braces, +and quotes, but does not do much other error checking. Be +careful here, as it may be hard to figure out what widget is +producing an error in the compiler. + +If the callback is blank then no callback is set. + +\par User Data (text field) + +This is a value for the user_data() of the widget. +If blank the default value of zero is used. This can be any +piece of C code that can be cast to a void pointer. + +\par Type (text field) + +The void * in the callback function prototypes is +replaced with this. You may want to use long for old +XForms code. Be warned that anything other than void * +is not guaranteed to work! However on most architectures other +pointer types are ok, and long is usually ok, too. + +\par When (pulldown menu) + +When to do the callback. This can be Never, +Changed, Release, or Enter Key. The value of +Enter Key is only useful for text input fields. + +There are other rare but useful values for the +when() field that are not in the menu. You should use +the extra code fields to put these values in. + +\par No Change (button) + +The No Change button means the callback is done on the +matching event even if the data is not changed. + +\section fluid_selecting_moving Selecting and Moving Widgets + +Double-clicking a window name in the browser will display it, +if not displayed yet. From this display you can select widgets, +sets of widgets, and move or resize them. To close a window +either double-click it or type ESC. + +To select a widget, click it. To select several widgets drag +a rectangle around them. Holding down shift will toggle the +selection of the widgets instead. + +You cannot pick hidden widgets. You also cannot choose some +widgets if they are completely overlapped by later widgets. Use +the browser to select these widgets. + +The selected widgets are shown with a red "overlay" +line around them. You can move the widgets by dragging this +box. Or you can resize them by dragging the outer edges and +corners. Hold down the Alt key while dragging the mouse to +defeat the snap-to-grid effect for fine positioning. + +If there is a tab box displayed you can change which child is +visible by clicking on the file tabs. The child you pick is +selected. + +The arrow, tab, and shift+tab keys "navigate" the +selection. Left, right, tab, or shift+tab move to the next or +previous widgets in the hierarchy. Hit the right arrow enough +and you will select every widget in the window. Up/down widgets +move to the previous/next widgets that overlap horizontally. If +the navigation does not seem to work you probably need to +"Sort" the widgets. This is important if you have +input fields, as FLTK uses the same rules when using arrow keys +to move between input fields. + +To "open" a widget, double click it. To open +several widgets select them and then type F1 or pick +"Edit/Open" off the pop-up menu. + +Type Ctrl+o to temporarily toggle the overlay off without +changing the selection, so you can see the widget borders. + +You can resize the window by using the window manager border +controls. FLTK will attempt to round the window size to the +nearest multiple of the grid size and makes it big enough to +contain all the widgets (it does this using illegal X methods, +so it is possible it will barf with some window managers!). +Notice that the actual window in your program may not be +resizable, and if it is, the effect on child widgets may be +different. + +The panel for the window (which you get by double-clicking +it) is almost identical to the panel for any other Fl_Widget. +There are three extra items: + +\section fluid_images Image Labels + +The contents of the image files in the Image +and Inactive text fields are written to the .cxx +file. If many widgets share the same image then only one copy is +written. Since the image data is embedded in the generated +source code, you need only distribute the C++ code and not the +image files themselves. + +However, the filenames are stored in the .fl +file so you will need the image files as well to read the +.fl file. Filenames are relative to the location of the +.fl file and not necessarily the current directory. We +recommend you either put the images in the same directory as the +.fl file, or use absolute path names. + +\par Notes for All Image Types + +FLUID runs using the default visual of your X server. This +may be 8 bits, which will give you dithered images. You may get +better results in your actual program by adding the code +"Fl::visual(FL_RGB)" to your code right before the +first window is displayed. + +All widgets with the same image on them share the same code +and source X pixmap. Thus once you have put an image on a +widget, it is nearly free to put the same image on many other +widgets. + +If you edit an image at the same time you are using it in FLUID, +the only way to convince FLUID to read the image file again is to +remove the image from all widgets that are using it or re-load the +.fl file. + +Don't rely on how FLTK crops images that are outside the +widget, as this may change in future versions! The cropping of +inside labels will probably be unchanged. + +To more accurately place images, make a new "box" +widget and put the image in that as the label. + +\par XBM (X Bitmap) Files + +FLUID reads X bitmap files which use C source code to define +a bitmap. Sometimes they are stored with the ".h" or +".bm" extension rather than the standard +".xbm" extension. + +FLUID writes code to construct an Fl_Bitmap image and use it +to label the widget. The '1' bits in the bitmap are drawn using +the label color of the widget. You can change this color in the +FLUID widget attributes panel. The '0' bits are transparent. + +The program "bitmap" on the X distribution does an +adequate job of editing bitmaps. + +\par XPM (X Pixmap) Files + +FLUID reads X pixmap files as used by the libxpm +library. These files use C source code to define a pixmap. The +filenames usually have the ".xpm" extension. + +FLUID writes code to construct an Fl_Pixmap image and use it +to label the widget. The label color of the widget is ignored, +even for 2-color images that could be a bitmap. XPM files can +mark a single color as being transparent, and FLTK uses this +information to generate a transparency mask for the image. + +We have not found any good editors for small iconic pictures. +For pixmaps we have used +XPaint +and the KDE icon editor. + +\par BMP Files + +FLUID reads Windows BMP image files which are often used in +WIN32 applications for icons. FLUID converts BMP files into +(modified) XPM format and uses a Fl_BMP_Image image to label the +widget. Transparency is handled the same as for XPM files. All +image data is uncompressed when written to the source file, so +the code may be much bigger than the .bmp file. + +\par GIF Files + +FLUID reads GIF image files which are often used in HTML +documents to make icons. FLUID converts GIF files into +(modified) XPM format and uses a Fl_GIF_Image image to label the +widget. Transparency is handled the same as for XPM files. All +image data is uncompressed when written to the source file, so +the code may be much bigger than the .gif file. Only +the first image of an animated GIF file is used. + +\par JPEG Files + +If FLTK is compiled with JPEG support, FLUID can read JPEG +image files which are often used for digital photos. FLUID uses +a Fl_JPEG_Image image to label the widget, and writes +uncompressed RGB or grayscale data to the source file. + +\par PNG (Portable Network Graphics) Files + +If FLTK is compiled with PNG support, FLUID can read PNG +image files which are often used in HTML documents. FLUID uses a +Fl_PNG_Image image to label the widget, and writes uncompressed +RGB or grayscale data to the source file. PNG images can provide +a full alpha channel for partial transparency, and FLTK supports +this as best as possible on each platform. + + +\section fluid_i18n Internationalization with FLUID + +FLUID supports internationalization (I18N for short) of label +strings used by widgets. The preferences window +(Ctrl+p) provides access to the I18N options. + +\subsection fluid_i18n_methods I18N Methods + +FLUID supports three methods of I18N: use none, use GNU +gettext, and use POSIX catgets. The "use none" method is the +default and just passes the label strings as-is to the widget +constructors. + +The "GNU gettext" method uses GNU gettext (or a similar +text-based I18N library) to retrieve a localized string before +calling the widget constructor. + +The "POSIX catgets" method uses the POSIX catgets function to +retrieve a numbered message from a message catalog before +calling the widget constructor. + +\subsection fluid_gettext_i18n Using GNU gettext for I18N + +FLUID's code support for GNU gettext is limited to calling a +function or macro to retrieve the localized label; you still +need to call setlocale() and textdomain() or +bindtextdomain() to select the appropriate language and +message file. + +To use GNU gettext for I18N, open the preferences window and +choose "GNU gettext" from the "Use" chooser. Two new input +fields will then appear to control the include file and +function/macro name to use when retrieving the localized label +strings. + + \image html fluid-gettext.gif "Figure 9-11: Internationalization using GNU gettext" + +The "\#include" field controls the header file to include for +I18N; by default this is \b , the +standard I18N file for GNU gettext. + +The "Function" field controls the function (or macro) that +will retrieve the localized message; by default the +gettext function will be called. + +\subsection fluid_catgets_i18n Using POSIX catgets for I18N + +FLUID's code support for POSIX catgets allows you to use a +global message file for all interfaces or a file specific to +each .fl file; you still need to call +setlocale() to select the appropriate language. + +To use POSIX catgets for I18N, open the preferences window +and choose "POSIX catgets" from the "Use" chooser. Three new +input fields will then appear to control the include file, +catalog file, and set number for retrieving the localized label +strings. + + \image html fluid-catgets.gif "Figure 9-12: Internationalization using POSIX catgets" + +The "\#include" field controls the header file to include for +I18N; by default this is \b , the +standard I18N file for POSIX catgets. + +The "File" field controls the name of the catalog file +variable to use when retrieving localized messages; by default +the file field is empty which forces a local (static) catalog +file to be used for all of the windows defined in your +.fl file. + +The "Set" field controls the set number in the catalog file. +The default set is 1 and rarely needs to be changed. + + +\section fluid_limitations Known limitations + +Declaration Blocks can be used to temporarily block out already +designed code using \#if 0 and \#endif +type construction. This will effectively avoid compilation of +blocks of code. However, static code and data generated by this +segment (menu items, images, include statements, etc.) will still +be generated and likely cause compile-time warnings. + +\htmlonly +


+[Index]    +[Previous]  8 - Using OpenGL  +[Next]  10 - Advanced FLTK  +\endhtmlonly +*/ diff --git a/documentation/src/fluid1.gif b/documentation/src/fluid1.gif new file mode 100644 index 000000000..cfdefd7a7 Binary files /dev/null and b/documentation/src/fluid1.gif differ diff --git a/documentation/src/fluid2.gif b/documentation/src/fluid2.gif new file mode 100644 index 000000000..e551e84a5 Binary files /dev/null and b/documentation/src/fluid2.gif differ diff --git a/documentation/src/fluid3-cxx.gif b/documentation/src/fluid3-cxx.gif new file mode 100644 index 000000000..420ccaf31 Binary files /dev/null and b/documentation/src/fluid3-cxx.gif differ diff --git a/documentation/src/fluid3-gui.gif b/documentation/src/fluid3-gui.gif new file mode 100644 index 000000000..5f757264c Binary files /dev/null and b/documentation/src/fluid3-gui.gif differ diff --git a/documentation/src/fluid3-style.gif b/documentation/src/fluid3-style.gif new file mode 100644 index 000000000..ecb55b40c Binary files /dev/null and b/documentation/src/fluid3-style.gif differ diff --git a/documentation/src/fluid4.gif b/documentation/src/fluid4.gif new file mode 100644 index 000000000..d9e029273 Binary files /dev/null and b/documentation/src/fluid4.gif differ diff --git a/documentation/src/fluid_prefs.gif b/documentation/src/fluid_prefs.gif new file mode 100644 index 000000000..0bc7d8d11 Binary files /dev/null and b/documentation/src/fluid_prefs.gif differ diff --git a/documentation/src/fluid_widget_cxx.gif b/documentation/src/fluid_widget_cxx.gif new file mode 100644 index 000000000..cb12e76dc Binary files /dev/null and b/documentation/src/fluid_widget_cxx.gif differ diff --git a/documentation/src/fluid_widget_gui.gif b/documentation/src/fluid_widget_gui.gif new file mode 100644 index 000000000..d5ac3c676 Binary files /dev/null and b/documentation/src/fluid_widget_gui.gif differ diff --git a/documentation/src/fluid_widget_style.gif b/documentation/src/fluid_widget_style.gif new file mode 100644 index 000000000..f5bf9b1e2 Binary files /dev/null and b/documentation/src/fluid_widget_style.gif differ diff --git a/documentation/src/forms.dox b/documentation/src/forms.dox new file mode 100644 index 000000000..d48457e60 --- /dev/null +++ b/documentation/src/forms.dox @@ -0,0 +1,247 @@ +/** + + \page forms E - Forms Compatibility + +This appendix describes the Forms compatibility included with FLTK. + +\section forms_importing Importing Forms Layout Files + +FLUID can read the .fd files put out by +all versions of Forms and XForms fdesign. However, it will mangle them +a bit, but it prints a warning message about anything it does not +understand. FLUID cannot write fdesign files, so you should save to a +new name so you don't write over the old one. + +You will need to edit your main code considerably to get it to link +with the output from FLUID. If you are not interested in this you may +have more immediate luck with the forms compatibility header, +. + +\section forms_using Using the Compatibility Header File + +You should be able to compile existing Forms or XForms source code by +changing the include directory switch to your compiler so that the +forms.h file supplied with FLTK is included. Take a look at +forms.h to see how it works, but the basic trick is lots of inline +functions. Most of the XForms demo programs work without changes. + +You will also have to compile your Forms or XForms program using a +C++ compiler. The FLTK library does not provide C bindings or header +files. + +Although FLTK was designed to be compatible with the GL Forms +library (version 0.3 or so), XForms has bloated severely and it's +interface is X-specific. Therefore, XForms compatibility is no longer +a goal of FLTK. Compatibility was limited to things that were free, or +that would add code that would not be linked in if the feature is +unused, or that was not X-specific. + +To use any new features of FLTK, you should rewrite your code to not +use the inline functions and instead use "pure" FLTK. This will make +it a lot cleaner and make it easier to figure out how to call the FLTK +functions. Unfortunately this conversion is harder than expected and +even Digital Domain's inhouse code still uses forms.H a lot. + +\section forms_problems Problems You Will Encounter + +Many parts of XForms use X-specific structures like XEvent +in their interface. I did not emulate these! Unfortunately these +features (such as the "canvas" widget) are needed by most large +programs. You will need to rewrite these to use FLTK subclasses. + +Fl_Free widgets emulate +the old Forms "free" widget. It may be useful for porting +programs that change the handle() function on widgets, but you +will still need to rewrite things. + +Fl_Timer widgets are +provided to emulate the XForms timer. These work, but are quite +inefficient and inaccurate compared to using +Fl::add_timeout(). + +All instance variables are hidden. If you directly refer to +the x, y, w, h, label, or other fields of your Forms widgets you will +have to add empty parenthesis after each reference. The easiest way to +do this is to globally replace "->x" with "->x()", etc. Replace +"boxtype" with "box()". + +const char * arguments to most FLTK methods are simply +stored, while Forms would strdup() the passed string. This is +most noticable with the label of widgets. Your program must always +pass static data such as a string constant or malloc'd buffer to +label(). If you are using labels to display program output you +may want to try the Fl_Output +widget. + +The default fonts and sizes are matched to the older GL version of +Forms, so all labels will draw somewhat larger than an XForms program +does. + +fdesign outputs a setting of a "fdui" instance variable to the main +window. I did not emulate this because I wanted all instance variables +to be hidden. You can store the same information in the user_data() + field of a window. To do this, search through the fdesign output for +all occurances of "->fdui" and edit to use "->user_data()" instead. +This will require casts and is not trivial. + +The prototype for the functions passed to fl_add_timeout() +and fl_set_idle_callback() callback are different. + +All the following XForms calls are missing: + +\li FL_REVISION, fl_library_version() +\li FL_RETURN_DBLCLICK (use Fl::event_clicks()) +\li fl_add_signal_callback() +\li fl_set_form_atactivate() fl_set_form_atdeactivate() +\li fl_set_form_property() +\li fl_set_app_mainform(), fl_get_app_mainform() +\li fl_set_form_minsize(), fl_set_form_maxsize() +\li fl_set_form_event_cmask(), fl_get_form_event_cmask() +\li fl_set_form_dblbuffer(), fl_set_object_dblbuffer() + (use an Fl_Double_Window instead) +\li fl_adjust_form_size() +\li fl_register_raw_callback() +\li fl_set_object_bw(), fl_set_border_width() +\li fl_set_object_resize(), fl_set_object_gravity() +\li fl_set_object_shortcutkey() +\li fl_set_object_automatic() +\li fl_get_object_bbox() (maybe FLTK should do this) +\li fl_set_object_prehandler(), fl_set_object_posthandler() +\li fl_enumerate_fonts() +\li Most drawing functions +\li fl_set_coordunit() (FLTK uses pixels all the time) +\li fl_ringbell() +\li fl_gettime() +\li fl_win*() (all these functions) +\li fl_initialize(argc,argv,x,y,z) ignores last 3 arguments +\li fl_read_bitmapfile(), fl_read_pixmapfile() +\li fl_addto_browser_chars() +\li FL_MENU_BUTTON just draws normally +\li fl_set_bitmapbutton_file(), fl_set_pixmapbutton_file() +\li FL_CANVAS objects +\li FL_DIGITAL_CLOCK (comes out analog) +\li fl_create_bitmap_cursor(), fl_set_cursor_color() +\li fl_set_dial_angles() +\li fl_show_oneliner() +\li fl_set_choice_shortcut(a,b,c) +\li command log +\li Only some of file selector is emulated +\li FL_DATE_INPUT +\li fl_pup*() (all these functions) +\li textbox object (should be easy but I had no sample programs) +\li xyplot object + +\section forms_notes Additional Notes + +These notes were written for porting programs written with the older +IRISGL version of Forms. Most of these problems are the same ones +encountered when going from old Forms to XForms: + +\par Does Not Run In Background + +The IRISGL library always forked when you created the first window, +unless "foreground()" was called. FLTK acts like "foreground()" is +called all the time. If you really want the fork behavior do "if +(fork()) exit(0)" right at the start of your program. + +\par You Cannot Use IRISGL Windows or fl_queue + +If a Forms (not XForms) program if you wanted your own window for +displaying things you would create a IRISGL window and draw in it, +periodically calling Forms to check if the user hit buttons on the +panels. If the user did things to the IRISGL window, you would find +this out by having the value FL_EVENT returned from the call to Forms. + +None of this works with FLTK. Nor will it compile, the necessary +calls are not in the interface. + +You have to make a subclass of +Fl_Gl_Window and write a draw() method and +handle() method. This may require anywhere from a trivial to a +major rewrite. + +If you draw into the overlay planes you will have to also write a +draw_overlay() method and call redraw_overlay() on the +OpenGL window. + +One easy way to hack your program so it works is to make the +draw() and handle() methods on your window set some +static variables, storing what event happened. Then in the main loop +of your program, call Fl::wait() and then check these +variables, acting on them as though they are events read from +fl_queue. + +\par You Must Use OpenGL to Draw Everything + +The file defines replacements for a lot of IRISGL +calls, translating them to OpenGL. There are much better translators +available that you might want to investigate. + +\par You Cannot Make Forms Subclasses + +Programs that call fl_make_object or directly setting the +handle routine will not compile. You have to rewrite them to use a +subclass of Fl_Widget. It is important to note that the +handle() method is not exactly the same as the handle() +function of Forms. Where a Forms handle() returned non-zero, +your handle() must call do_callback(). And your +handle() must return non-zero if it "understood" the event. + +An attempt has been made to emulate the "free" widget. This appears +to work quite well. It may be quicker to modify your subclass into a +"free" widget, since the "handle" functions match. + +If your subclass draws into the overlay you are in trouble and will +have to rewrite things a lot. + +\par You Cannot Use + +If you have written your own "free" widgets you will probably get a +lot of errors about "getvaluator". You should substitute: + +
+ + + + + + + + + + + +
FormsFLTK
MOUSE_XFl::event_x_root()
MOUSE_YFl::event_y_root()
LEFTSHIFTKEY,RIGHTSHIFTKEYFl::event_shift()
CAPSLOCKKEYFl::event_capslock()
LEFTCTRLKEY,RIGHTCTRLKEYFl::event_ctrl()
LEFTALTKEY,RIGHTALTKEYFl::event_alt()
MOUSE1,RIGHTMOUSEFl::event_state()
MOUSE2,MIDDLEMOUSEFl::event_state()
MOUSE3,LEFTMOUSEFl::event_state()
+
+ +Anything else in getvaluator and you are on your own... + +\par Font Numbers Are Different + +The "style" numbers have been changed because I wanted to insert +bold-italic versions of the normal fonts. If you use Times, Courier, +or Bookman to display any text you will get a different font out of +FLTK. If you are really desperate to fix this use the following code: + +\code +fl_font_name(3,"*courier-medium-r-no*"); +fl_font_name(4,"*courier-bold-r-no*"); +fl_font_name(5,"*courier-medium-o-no*"); +fl_font_name(6,"*times-medium-r-no*"); +fl_font_name(7,"*times-bold-r-no*"); +fl_font_name(8,"*times-medium-i-no*"); +fl_font_name(9,"*bookman-light-r-no*"); +fl_font_name(10,"*bookman-demi-r-no*"); +fl_font_name(11,"*bookman-light-i-no*"); +\endcode + +\htmlonly +
+[Index]    +[Previous]  + \ref glut    +[Next]  + \ref osissues + +\endhtmlonly +*/ diff --git a/documentation/src/glut.dox b/documentation/src/glut.dox new file mode 100644 index 000000000..18d4f25bd --- /dev/null +++ b/documentation/src/glut.dox @@ -0,0 +1,248 @@ +/** + + \page glut D - GLUT Compatibility + +This appendix describes the GLUT compatibility header file supplied with +FLTK. FLTK's GLUT compatibility is based on the original GLUT 3.7 and +the follow-on FreeGLUT 2.4.0 libraries. + +\section glut_using Using the GLUT Compatibility Header File + +You should be able to compile existing GLUT source code by including + instead of . This can be +done by editing the source, by changing the -I switches to +the compiler, or by providing a symbolic link from GL/glut.h +to FL/glut.H. + +All files calling GLUT procedures must be compiled with C++. You +may have to alter them slightly to get them to compile without warnings, +and you may have to rename them to get make to use the C++ compiler. + +You must link with the FLTK library. Most of FL/glut.H +is inline functions. You should take a look at it (and maybe at +test/glpuzzle.cxx in the FLTK source) if you are having trouble +porting your GLUT program. + +This has been tested with most of the demo programs that come with +the GLUT and FreeGLUT distributions. + +\section glut_known_problems Known Problems + +The following functions and/or arguments to functions are missing, +and you will have to replace them or comment them out for your code +to compile: + +\li glutGet(GLUT_ELAPSED_TIME) +\li glutGet(GLUT_SCREEN_HEIGHT_MM) +\li glutGet(GLUT_SCREEN_WIDTH_MM) +\li glutGet(GLUT_WINDOW_NUM_CHILDREN) +\li glutInitDisplayMode(GLUT_LUMINANCE) +\li glutLayerGet(GLUT_HAS_OVERLAY) +\li glutLayerGet(GLUT_LAYER_IN_USE) +\li glutPushWindow() +\li glutSetColor(), glutGetColor(), glutCopyColormap() +\li glutVideoResize() missing. +\li glutWarpPointer() +\li glutWindowStatusFunc() +\li Spaceball, buttonbox, dials, and tablet functions + +Most of the symbols/enumerations have different values than GLUT uses. +This will break code that relies on the actual values. The only +symbols guaranteed to have the same values are true/false pairs like +GLUT_DOWN and GLUT_UP, mouse buttons +GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON, and +GLUT_KEY_F1 thru F12. + +The strings passed as menu labels are not copied. + +glutPostRedisplay() does not work if called from inside a +display function. You must use glutIdleFunc() if you want +your display to update continuously. + +glutSwapBuffers() does not work from inside a display +function. This is on purpose, because FLTK swaps the buffers for you. + +glutUseLayer() does not work well, and should only be used +to initialize transformations inside a resize callback. You should +redraw overlays by using glutOverlayDisplayFunc(). + +Overlays are cleared before the overlay display function is called. +glutLayerGet(GLUT_OVERLAY_DAMAGED) always returns true for +compatibility with some GLUT overlay programs. You must rewrite your +code so that gl_color() is used to choose colors in an +overlay, or you will get random overlay colors. + +glutSetCursor(GLUT_CURSOR_FULL_CROSSHAIR) just results in a +small crosshair. + +The fonts used by glutBitmapCharacter() and glutBitmapWidth() +may be different. + +glutInit(argc,argv) will consume different switches than +GLUT does. It accepts the switches recognized by +Fl::args(), and will accept any abbreviation of these +switches (such as "-di" for "-display"). + +\section glut_mixing Mixing GLUT and FLTK Code + +You can make your GLUT window a child of a Fl_Window with the +following scheme. The biggest trick is that GLUT insists on +show()'ing the window at the point it is created, which means the +Fl_Window parent window must already be shown. + +\li Don't call glutInit(). +\li Create your Fl_Window, and any FLTK widgets. Leave a + blank area in the window for your GLUT window. +\li show() the Fl_Window. Perhaps call + show(argc,argv). +\li Call window->begin() so that the GLUT window will be + automatically added to it. +\li Use glutInitWindowSize() and glutInitWindowPosition() + to set the location in the parent window to put the GLUT window. +\li Put your GLUT code next. It probably does not need many changes. + Call window->end() immediately after the + glutCreateWindow()! +\li You can call either glutMainLoop(), Fl::run(), + or loop calling Fl::wait() to run the program. + +
+ + \section glut_Fl_Glut_Window class Fl_Glut_Window +\htmlonly +
+ +\subsection glut_class_hierarchy Class Hierarchy + +\code +Fl_Gl_Window + | + +----Fl_Glut_Window +\endcode + +\subsection glut_include_files Include Files + +\code +#include +\endcode + +\subsection glut_description Description + +Each GLUT window is an instance of this class. You may find it useful +to manipulate instances directly rather than use GLUT window id's. +These may be created without opening the display, and thus can fit +better into FLTK's method of creating windows. + +The current GLUT window is available in the global variable +glut_window.

+ +new Fl_Glut_Window(...) is the same as +glutCreateWindow() except it does not show() the window +or make the window current.

+ +window->make_current() is the same as glutSetWindow(number). +If the window has not had show() called on it yet, some functions +that assumme an OpenGL context will not work. +If you do show() the window, call make_current() +again to set the context.

+ +~Fl_Glut_Window() is the same as glutDestroyWindow(). + +\subsection glut_members Members + +The Fl_Glut_Window class contains several public members that can +be altered directly: + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
memberdescription
displayA pointer to the function to call to draw the normal planes.
entryA pointer to the function to call when the mouse moves into + or out of the window.
keyboardA pointer to the function to call when a regular key is pressed.
menu[3]The menu to post when one of the mouse buttons is pressed.
mouseA pointer to the function to call when a button is pressed or + released.
motionA pointer to the function to call when the mouse is moved with + a button down.
overlaydisplayA pointer to the function to call to draw the overlay planes.
passivemotionA pointer to the function to call when the mouse is moved with + no buttons down.
reshapeA pointer to the function to call when the window is resized.
specialA pointer to the function to call when a special key is pressed.
visibilityA pointer to the function to call when the window is iconified + or restored (made visible.)
+ +\subsection glut_methods Methods + +\li Fl_Glut_Window +\li ~Fl_Glut_Window +\li make_current + + +Fl_Glut_Window::Fl_Glut_Window(int x, int y, int w, int h, const char +*title = 0)
+Fl_Glut_Window::Fl_Glut_Window(int w, int h, const char *title = 0) + +\par +The first constructor takes 4 int arguments to create the window with +a preset position and size. The second constructor with 2 arguments +will create the window with a preset size, but the window manager will +choose the position according to it's own whims. + + +virtual Fl_Glut_Window::~Fl_Glut_Window() + +\par +Destroys the GLUT window. + + +void Fl_Glut_Window::make_current() + +\par +Switches all drawing functions to the GLUT window. + +
+[Index]    +[Previous]  + \ref enumerations    +[Next]  + \ref forms + +\endhtmlonly +*/ diff --git a/documentation/src/hello.C.gif b/documentation/src/hello.C.gif new file mode 100644 index 000000000..559b69520 Binary files /dev/null and b/documentation/src/hello.C.gif differ diff --git a/documentation/src/index.dox b/documentation/src/index.dox new file mode 100644 index 000000000..ffbcb5a04 --- /dev/null +++ b/documentation/src/index.dox @@ -0,0 +1,96 @@ +/** + +\mainpage FLTK Programming Manual + + + + + +
+ \image html FL200.gif + \image latex FL200.eps "" width=4cm +
+ FLTK 1.3.0 Programming Manual +

Revision 8 by Michael Sweet, Craig P. Earls,
+ Matthias Melcher, and Bill Spitzak
+ Copyright 1998-2008 by Bill Spitzak and others.

+
+ + + + +
+ This software and manual are provided under the terms of the GNU + Library General Public License. Permission is granted to reproduce + this manual or any portion for any purpose, provided this copyright + and permission notice are preserved. +
+ + + + + +
+ + \subpage preface + + \subpage intro + + \subpage basics + + \subpage common + \li \ref drawing_colors + \li \ref common_boxtypes + \li \ref common_labels + \li \ref drawing_images + + \subpage editor + + \subpage drawing + + \subpage events + \li \ref events_event_xxx + \li \ref events_propagation + + \subpage subclassing + + \subpage opengl + + \subpage fluid + \li \ref fluid_widget_attributes + \li \ref fluid_selecting_moving + \li \ref fluid_images + + + + \subpage advanced + + \subpage unicode + + A - Class Reference + + B - Function Reference + + \subpage enumerations + + \subpage glut + \li \ref glut_Fl_Glut_Window + + + \subpage forms + + \subpage osissues + + \subpage migration_1_1 + + \subpage migration_1_3 + + \subpage development + + \subpage license + + \subpage examples + +
+ +*/ diff --git a/documentation/src/input_choice.jpg b/documentation/src/input_choice.jpg new file mode 100644 index 000000000..7f7b93f85 Binary files /dev/null and b/documentation/src/input_choice.jpg differ diff --git a/documentation/src/intro.dox b/documentation/src/intro.dox new file mode 100644 index 000000000..2965883c1 --- /dev/null +++ b/documentation/src/intro.dox @@ -0,0 +1,353 @@ +/** + + \page intro 1 - Introduction to FLTK + +The Fast Light Tool Kit ("FLTK", pronounced +"fulltick") is a cross-platform C++ GUI toolkit for +UNIX®/Linux® (X11), Microsoft® Windows®, and +MacOS® X. FLTK provides modern GUI functionality without the +bloat and supports 3D graphics via OpenGL® and its built-in +GLUT emulation. It was originally developed by Mr. Bill Spitzak +and is currently maintained by a small group of developers +across the world with a central repository in the US. + +\section intro_history History of FLTK + +It has always been Bill's belief that the GUI API of all +modern systems is much too high level. Toolkits (even FLTK) are +not what should be provided and documented as part of an +operating system. The system only has to provide arbitrary +shaped but featureless windows, a powerful set of graphics +drawing calls, and a simple unalterable method of +delivering events to the owners of the windows. NeXT (if you +ignored NextStep) provided this, but they chose to hide it and +tried to push their own baroque toolkit instead. + +Many of the ideas in FLTK were developed on a NeXT (but +not using NextStep) in 1987 in a C toolkit Bill called +"views". Here he came up with passing events downward +in the tree and having the handle routine return a value +indicating whether it used the event, and the table-driven menus. In +general he was trying to prove that complex UI ideas could be +entirely implemented in a user space toolkit, with no knowledge +or support by the system. + +After going to film school for a few years, Bill worked at +Sun Microsystems on the (doomed) NeWS project. Here he found an +even better and cleaner windowing system, and he reimplemented +"views" atop that. NeWS did have an unnecessarily +complex method of delivering events which hurt it. But the +designers did admit that perhaps the user could write just as +good of a button as they could, and officially exposed the lower +level interface. + +With the death of NeWS Bill realized that he would have to +live with X. The biggest problem with X is the "window +manager", which means that the toolkit can no longer +control the window borders or drag the window around. + +At Digital Domain Bill discovered another toolkit, +"Forms". Forms was similar to his work, but provided +many more widgets, since it was used in many real applications, +rather then as theoretical work. He decided to use Forms, except +he integrated his table-driven menus into it. Several very large +programs were created using this version of Forms. + +The need to switch to OpenGL and GLX, portability, and a +desire to use C++ subclassing required a rewrite of Forms. +This produced the first version of FLTK. The conversion to C++ +required so many changes it made it impossible to recompile any +Forms objects. Since it was incompatible anyway, Bill decided +to incorporate his older ideas as much as possible by +simplifying the lower level interface and the event passing +mechanisim. + +Bill received permission to release it for free on the +Internet, with the GNU general public license. Response from +Internet users indicated that the Linux market dwarfed the SGI +and high-speed GL market, so he rewrote it to use X for all +drawing, greatly speeding it up on these machines. That is the +version you have now. + +Digital Domain has since withdrawn support for FLTK. While +Bill is no longer able to actively develop it, he still +contributes to FLTK in his free time and is a part of the FLTK +development team. + +\section intro_features Features + +FLTK was designed to be statically linked. This was done by +splitting it into many small objects and designing it so that +functions that are not used do not have pointers to them in the +parts that are used, and thus do not get linked in. This allows +you to make an easy-to-install program or to modify FLTK to +the exact requirements of your application without worrying +about bloat. FLTK works fine as a shared library, though, and +is now included with several Linux distributions. + +Here are some of the core features unique to FLTK: + +\li sizeof(Fl_Widget) == 64 to 92. + +\li The "core" (the "hello" program compiled & linked with a static FLTK + library using gcc on a 486 and then stripped) is 114K. + +\li The FLUID program (which includes every widget) is 538k. + +\li Written directly atop core libraries (Xlib, WIN32 or Carbon) for + maximum speed, and carefully optimized for code size and performance. + +\li Precise low-level compatability between the X11, WIN32 and MacOS + versions - only about 10% of the code is different. + +\li Interactive user interface builder program. Output is human-readable + and editable C++ source code. + +\li Support for overlay hardware, with emulation if none is available. + +\li Very small & fast portable 2-D drawing library to hide Xlib, WIN32, + or QuickDraw. + +\li OpenGL/Mesa drawing area widget. + +\li Support for OpenGL overlay hardware on both X11 and WIN32, with + emulation if none is available. + +\li Text widgets with Emacs key bindings, X cut & paste, and foreign + letter compose! + +\li Compatibility header file for the GLUT library. + +\li Compatibility header file for the XForms library. + +\section intro_licensing Licensing + +FLTK comes with complete free source code. FLTK is available +under the terms of the GNU Library +General Public License with exceptions that allow for static +linking. Contrary to popular belief, it can be used in +commercial software - even Bill Gates could use it! + +\section intro_what What Does "FLTK" Mean? + +FLTK was originally designed to be compatible with the Forms +Library written for SGI machines. In that library all the +functions and structures started with "fl_". This +naming was extended to all new methods and widgets in the C++ +library, and this prefix was taken as the name of the library. +It is almost impossible to search for "FL" on the +Internet, due to the fact that it is also the abbreviation for +Florida. After much debating and searching for a new name for +the toolkit, which was already in use by several people, Bill +came up with "FLTK", including a bogus excuse that it +stands for "The Fast Light Toolkit". + +\section intro_unix Building and Installing FLTK Under UNIX and MacOS X + +In most cases you can just type "make". This will +run configure with the default of no options and then compile +everything. + +FLTK uses GNU autoconf to configure itself for your UNIX +platform. The main things that the configure script will look +for are the X11 and OpenGL (or Mesa) header and library files. +If these cannot be found in the standard include/library +locations you'll need to define the CFLAGS, +CXXFLAGS, and LDFLAGS environment variables. +For the Bourne and Korn shells you'd use: + +\code +CFLAGS=-Iincludedir; export CFLAGS +CXXFLAGS=-Iincludedir; export CXXFLAGS +LDFLAGS=-Llibdir; export LDFLAGS +\endcode + +For C shell and tcsh, use: + +\code +setenv CFLAGS "-Iincludedir" +setenv CXXFLAGS "-Iincludedir" +setenv LDFLAGS "-Llibdir" +\endcode + +By default configure will look for a C++ compiler named +CC, c++, g++, or gcc in that +order. To use another compiler you need to set the CXX +environment variable: + +\code +CXX=xlC; export CXX +setenv CXX "xlC" +\endcode + +The CC environment variable can also be used to +override the default C compiler (cc or gcc), +which is used for a few FLTK source files. + +You can run configure yourself to get the exact setup you need. +Type "./configure ", where options are: + +\par --enable-cygwin +Enable the Cygwin libraries under WIN32 + +\par --enable-debug +Enable debugging code & symbols + +\par --disable-gl +Disable OpenGL support + +\par --enable-shared +Enable generation of shared libraries + +\par --enable-threads +Enable multithreading support + +\par --enable-xdbe +Enable the X double-buffer extension + +\par --enable-xft +Enable the Xft library for anti-aliased fonts under X11 + +\par --bindir=/path +Set the location for executables [default = $prefix/bin] + +\par --datadir=/path +Set the location for data files. [default = $prefix/share] + +\par --libdir=/path +Set the location for libraries [default = $prefix/lib] + +\par --includedir=/path +Set the location for include files. [default = $prefix/include] + +\par --mandir=/path +Set the location for man pages. [default = $prefix/man] + +\par --prefix=/dir +Set the directory prefix for files [default = /usr/local] + +When the configure script is done you can just run the +"make" command. This will build the library, FLUID +tool, and all of the test programs. + +To install the library, become root and type "make +install". This will copy the "fluid" executable +to "bindir", the header files to +"includedir", and the library files to +"libdir". + +\section intro_windows Building FLTK Under Microsoft Windows + +There are three ways to build FLTK under Microsoft Windows. +The first is to use the Visual C++ 5.0 project files under the +"visualc" directory. Just open (or double-click on) +the "fltk.dsw" file to get the whole shebang. + +The second method is to use the configure script +included with the FLTK software; this has only been tested with +the CygWin tools: + +\code +sh configure --prefix=C:/FLTK +make +\endcode + +The final method is to use a GNU-based development tool with +the files in the "makefiles" directory. To build +using one of these tools simply copy the appropriate +makeinclude and config files to the main directory and do a +make: + +\code +copy makefiles\Makefile. Makefile +make +\endcode + +\subsection intro_visualcpp Using the Visual C++ DLL Library + +The "fltkdll.dsp" project file builds a DLL-version +of the FLTK library. Because of name mangling differences +between PC compilers (even between different versions of Visual +C++!) you can only use the DLL that is generated with the same +version compiler that you built it with. + +When compiling an application or DLL that uses the FLTK DLL, +you will need to define the FL_DLL preprocessor symbol +to get the correct linkage commands embedded within the FLTK +header files. + +\section intro_os2 Building FLTK Under OS/2 + +The current OS/2 build requires XFree86 for OS/2 to work. A +native Presentation Manager version has not been implemented +yet (volunteers are welcome!). + +The current set of Makefiles/configuration failes assumes that EMX 0.9d +and libExt (from +posix2.sourceforge.net) +is installed. + +To build the XFree86 version of FLTK for OS/2, copy the appropriate +makeinclude and config files to the main directory and do a make: + +\code +copy makefiles\Makefile.os2x Makefile +make +\endcode + +\section intro_internet Internet Resources + +FLTK is available on the 'net in a bunch of locations: + +\par WWW +http://www.fltk.org/
+http://www.fltk.org/str.php + [for reporting bugs]
+http://www.fltk.org/software.php + [source code] + +\par FTP +California, USA (ftp.fltk.org)
+Maryland, USA (ftp2.fltk.org)
+Espoo, Finland (ftp.funet.fi)
+Germany (linux.mathematik.tu-darmstadt.de)
+Austria (gd.tuwien.ac.at) + +\par EMail +fltk@fltk.org [see instructions below]
+fltk-bugs@fltk.org [for reporting bugs] + +\par NNTP Newsgroups +news.easysw.com + +To send a message to the FLTK mailing list +("fltk@fltk.org") you must first join the list. +Non-member submissions are blocked to avoid problems with +unsolicited email. + +To join the FLTK mailing list, send a message to +"majordomo@fltk.org" with "subscribe fltk" +in the message body. A digest of this list is available by +subscribing to the "fltk-digest" mailing list. + +\section intro_reporting Reporting Bugs + +To report a bug in FLTK, send an email to +"fltk-bugs@fltk.org". Please include the FLTK version, +operating system & version, and compiler that you are using +when describing the bug or problem. We will be unable to provide +any kind of help without that basic information. + +Bugs can also be reported to the "fltk.bugs" newsgroup or on the +SourceForge bug tracker pages. + +For general support and questions, please use the FLTK mailing list +at "fltk@fltk.org" or one of the newsgroups. + +\htmlonly +
+[Index]    +[Previous]  Preface  +[Next]  2 - FLTK Basics  +\endhtmlonly +*/ diff --git a/documentation/src/license.dox b/documentation/src/license.dox new file mode 100644 index 000000000..d90bc8bab --- /dev/null +++ b/documentation/src/license.dox @@ -0,0 +1,502 @@ +/** + + \page license J - Software License + +\par December 11, 2001 + +The FLTK library and included programs are provided under the terms +of the GNU Library General Public License (LGPL) with the following +exceptions: + +-# Modifications to the FLTK configure script, config + header file, and makefiles by themselves to support + a specific platform do not constitute a modified or + derivative work.
+
+ The authors do request that such modifications be + contributed to the FLTK project - send all + contributions to "fltk-bugs@fltk.org".
+
+-# Widgets that are subclassed from FLTK widgets do not + constitute a derivative work.
+
+-# Static linking of applications and widgets to the + FLTK library does not constitute a derivative work + and does not require the author to provide source + code for the application or widget, use the shared + FLTK libraries, or link their applications or + widgets against a user-supplied version of FLTK.
+
+ If you link the application or widget to a modified + version of FLTK, then the changes to FLTK must be + provided under the terms of the LGPL in sections + 1, 2, and 4.
+
+-# You do not have to provide a copy of the FLTK license + with programs that are linked to the FLTK library, nor + do you have to identify the FLTK license in your + program or documentation as required by section 6 + of the LGPL.
+
+ However, programs must still identify their use of FLTK. + The following example statement can be included in user + documentation to satisfy this requirement:
+
+ [program/widget] is based in part on the work of + the FLTK project (http://www.fltk.org). + +\htmlonly +
+ +\par GNU LIBRARY GENERAL PUBLIC LICENSE + +Version 2, June 1991
+Copyright (C) 1991 Free Software Foundation, Inc.
+59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+Everyone is permitted to copy and distribute verbatim copies of +this license document, but changing it is not allowed.
+[This is the first released version of the library GPL. It is +numbered 2 because it goes with version 2 of the ordinary GPL.] + +\par Preamble + +The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public Licenses +are intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. + +This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it in +new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the library, or if you modify it. + +For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + +Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + +Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + +Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License, which was designed for utility +programs. This license, the GNU Library General Public License, +applies to certain designated libraries. This license is quite +different from the ordinary one; be sure to read it in full, and don't +assume that anything in it is the same as in the ordinary license. + +The reason we have a separate public license for some libraries is +that they blur the distinction we usually make between modifying or +adding to a program and simply using it. Linking a program with a +library, without changing the library, is in some sense simply using +the library, and is analogous to running a utility program or +application program. However, in a textual and legal sense, the linked +executable is a combined work, a derivative of the original library, +and the ordinary General Public License treats it as such. + +Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + +However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended +to permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to +achieve this as regards changes in header files, but we have achieved +it as regards changes in the actual functions of the Library.) The +hope is that this will lead to faster development of free libraries. + +The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the libary" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + +Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + +\par TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +\b 0. This License Agreement applies to any software +library which contains a notice placed by the copyright holder or other +authorized party saying it may be distributed under the terms of this +Library General Public License (also called "this License"). +Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does and +what the program that uses the Library does. + +\b 1. You may copy and distribute verbatim copies of +the Library's complete source code as you receive it, in any medium, +provided that you conspicuously and appropriately publish on each copy +an appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + +\b 2. You may modify your copy or copies of the +Library or any portion of it, thus forming a work based on the Library, +and copy and distribute such modifications or work under the terms of +Section 1 above, provided that you also meet all of these conditions: + +\b a) The modified work must itself be a software library. + +\b b) You must cause the files modified to carry +prominent notices stating that you changed the files and the date of +any change. + +\b c) You must cause the whole of the work to be +licensed at no charge to all third parties under the terms of this +License. + +\b d) If a facility in the modified Library refers to +a function or a table of data to be supplied by an application program +that uses the facility, other than as an argument passed when the +facility is invoked, then you must make a good faith effort to ensure +that, in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of its +purpose remains meaningful. + +(For example, a function in a library to compute square roots has a +purpose that is entirely well-defined independent of the application. + Therefore, Subsection 2d requires that any application-supplied +function or table used by this function must be optional: if the +application does not supply it, the square root function must still +compute square roots.) + +These requirements apply to the modified work as a whole. +If identifiable sections of that work are not derived from the +Library, and can be reasonably considered independent and separate +works in themselves, then this License, and its terms, do not apply to +those sections when you distribute them as separate works. But when +you distribute the same sections as part of a whole which is a work +based on the Library, the distribution of the whole must be on the +terms of this License, whose permissions for other licensees extend to +the entire whole, and thus to each and every part regardless of who +wrote it. + +Thus, it is not the intent of this section to claim rights or +contest your rights to work written entirely by you; rather, the intent +is to exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the +Library with the Library (or with a work based on the Library) on a +volume of a storage or distribution medium does not bring the other +work under the scope of this License. + +\b 3. You may opt to apply the terms of the ordinary +GNU General Public License instead of this License to a given copy of +the Library. To do this, you must alter all the notices that refer to +this License, so that they refer to the ordinary GNU General Public +License, version 2, instead of to this License. (If a newer version +than version 2 of the ordinary GNU General Public License has appeared, +then you can specify that version instead if you wish.) Do not make +any other change in these notices. + +Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the +Library into a program that is not a library. + +\b 4. You may copy and distribute the Library (or a +portion or derivative of it, under Section 2) in object code or +executable form under the terms of Sections 1 and 2 above provided that +you accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections 1 +and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to distribute +the source code, even though third parties are not compelled to copy +the source along with the object code. + +\b 5. A program that contains no derivative of any +portion of the Library, but is designed to work with the Library by +being compiled or linked with it, is called a "work that uses the +Library". Such a work, in isolation, is not a derivative work of the +Library, and therefore falls outside the scope of this License. + +However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. Section +6 states terms for distribution of such executables. + +When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, whether +or not they are linked directly with the Library itself. + +\b 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to +produce a work containing portions of the Library, and distribute that +work under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + +\b a) Accompany the work +with the complete corresponding machine-readable source code for the +Library including whatever changes were used in the work (which must +be distributed under Sections 1 and 2 above); and, if the work is an +executable linked with the Library, with the complete machine-readable +"work that uses the Library", as object code and/or source code, so +that the user can modify the Library and then relink to produce a +modified executable containing the modified Library. (It is +understood that the user who changes the contents of definitions files +in the Library will not necessarily be able to recompile the +application to use the modified definitions.) + +\b b) Accompany the work with a written offer, valid +for at least three years, to give the same user the materials +specified in Subsection 6a, above, for a charge no more than the cost +of performing this distribution. + +\b c) If distribution of the work is made by offering +access to copy from a designated place, offer equivalent access to +copy the above specified materials from the same place. + +\b d) Verify that the user has already received a copy +of these materials or that you have already sent this user a copy. + +For an executable, the required form of the "work that +uses the Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the +executable runs, unless that component itself accompanies the +executable. + +It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + +\b 7. You may place library facilities that are a work +based on the Library side-by-side in a single library together with +other library facilities not covered by this License, and distribute +such a combined library, provided that the separate distribution of the +work based on the Library and of the other library facilities is +otherwise permitted, and provided that you do these two things: + +\b a) Accompany the combined library with a copy of the +same work based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the Sections +above. + +\b b) Give prominent notice with the combined library +of the fact that part of it is a work based on the Library, and +explaining where to find the accompanying uncombined form of the same +work. + + +\b 8. You may not copy, modify, sublicense, +link with, or distribute the Library except as expressly provided under +this License. Any attempt otherwise to copy, modify, sublicense, link +with, or distribute the Library is void, and will automatically +terminate your rights under this License. However, parties who have +received copies, or rights, from you under this License will not have +their licenses terminated so long as such parties remain in full +compliance. + +\b 9. You are not required to accept this License, +since you have not signed it. However, nothing else grants you +permission to modify or distribute the Library or its derivative works. +These actions are prohibited by law if you do not accept this License. +Therefore, by modifying or distributing the Library (or any work based +on the Library), you indicate your acceptance of this License to do so, +and all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +\b 10. Each time you redistribute the Library (or any +work based on the Library), the recipient automatically receives a +license from the original licensor to copy, distribute, link with or +modify the Library subject to these terms and conditions. You may not +impose any further restrictions on the recipients' exercise of the +rights granted herein. You are not responsible for enforcing compliance +by third parties to this License. + +\b 11. If, as a consequence of a court judgment or +allegation of patent infringement or for any other reason (not limited +to patent issues), conditions are imposed on you (whether by court +order, agreement or otherwise) that contradict the conditions of this +License, they do not excuse you from the conditions of this License. +If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, +then as a consequence you may not distribute the Library at all. For +example, if a patent license would not permit royalty-free +redistribution of the Library by all those who receive copies directly +or indirectly through you, then the only way you could satisfy both it +and this License would be to refrain entirely from distribution of the +Library. + +If any portion of this section is held invalid or unenforceable +under any particular circumstance, the balance of the section is +intended to apply, and the section as a whole is intended to apply in +other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is implemented +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that +system in reliance on consistent application of that system; it is up +to the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed +to be a consequence of the rest of this License. + +\b 12. If the distribution and/or use of the Library +is restricted in certain countries either by patents or by copyrighted +interfaces, the original copyright holder who places the Library under +this License may add an explicit geographical distribution limitation +excluding those countries, so that distribution is permitted only in or +among countries not thus excluded. In such case, this License +incorporates the limitation as if written in the body of this License. + +\b 13. The Free Software Foundation may publish +revised and/or new versions of the Library General Public License from +time to time. Such new versions will be similar in spirit to the +present version, but may differ in detail to address new problems or +concerns. + +Each version is given a distinguishing version number. If the +Library specifies a version number of this License which applies to it +and "any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + +\b 14. If you wish to incorporate parts of the Library +into other free programs whose distribution conditions are incompatible +with these, write to the author to ask for permission. For software +which is copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + +\par NO WARRANTY + +\b 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, +THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE +OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU +ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +\b 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW +OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY +WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE +LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL +OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +\par END OF TERMS AND CONDITIONS + +
+[Index]    +[Previous]  + \ref development    +[Next]  + \ref examples + +\endhtmlonly +*/ diff --git a/documentation/src/menu.gif b/documentation/src/menu.gif new file mode 100644 index 000000000..6ed0f6d32 Binary files /dev/null and b/documentation/src/menu.gif differ diff --git a/documentation/src/menu_button.gif b/documentation/src/menu_button.gif new file mode 100644 index 000000000..9fc5df0dd Binary files /dev/null and b/documentation/src/menu_button.gif differ diff --git a/documentation/src/menubar.gif b/documentation/src/menubar.gif new file mode 100644 index 000000000..5c6c9442b Binary files /dev/null and b/documentation/src/menubar.gif differ diff --git a/documentation/src/migration_1_1.dox b/documentation/src/migration_1_1.dox new file mode 100644 index 000000000..17a498cc0 --- /dev/null +++ b/documentation/src/migration_1_1.dox @@ -0,0 +1,172 @@ +/** + + \page migration_1_1 G - Migrating Code from FLTK 1.0 to 1.1 + + +This appendix describes the differences between the FLTK +1.0.x and FLTK 1.1.x functions and classes. + +\section migration_1_1_color Color Values + +Color values are now stored in a 32-bit unsigned integer +instead of the unsigned character in 1.0.x. This allows for the +specification of 24-bit RGB values or 8-bit FLTK color indices. + +FL_BLACK and FL_WHITE now remain black and +white, even if the base color of the gray ramp is changed using +Fl::background(). +FL_DARK3 and FL_LIGHT3 can be used instead to +draw a very dark or a very bright background hue. + +Widgets use the new color symbols FL_FORGROUND_COLOR, +FL_BACKGROUND_COLOR, FL_BACKGROUND2_COLOR, +FL_INACTIVE_COLOR, and FL_SELECTION_COLOR. +More details can be found in the chapter +Enumerations. + +\section migration_1_1_cutnpaste Cut and Paste Support + +The FLTK clipboard is now broken into two parts - a local +selection value and a cut-and-paste value. This allows FLTK to +support things like highlighting and replacing text that was +previously cut or copied, which makes FLTK applications behave +like traditional GUI applications. + +\section migration_1_1_file_chooser File Chooser + +The file chooser in FLTK 1.1.x is significantly different +than the one supplied with FLTK 1.0.x. Any code that directly +references the old FCB class or members will need +to be ported to the new +Fl_File_Chooser +class. + +\section migration_1_1_functions Function Names + +Some function names have changed from FLTK 1.0.x to 1.1.x in +order to avoid name space collisions. You can still use the old +function names by defining the FLTK_1_0_COMPAT +symbol on the command-line when you compile +(-DFLTK_1_0_COMPAT) or in your source, e.g.: + +\code +#define FLTK_1_0_COMPAT +#include +#include +#include +\endcode + +The following table shows the old and new function names: + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Old 1.0.x NameNew 1.1.x Name
contrast()fl_contrast()
down()fl_down()
filename_absolute()fl_filename_absolute()
filename_expand()fl_filename_expand()
filename_ext()fl_filename_ext()
filename_isdir()fl_filename_isdir()
filename_list()fl_filename_list()
filename_match()fl_filename_match()
filename_name()fl_filename_name()
filename_relative()fl_filename_relative()
filename_setext()fl_filename_setext()
frame()fl_frame()
inactive()fl_inactive()
numericsort()fl_numericsort()
+
+ +\section migration_1_1_images Image Support + +Image support in FLTK has been significantly revamped in +1.1.x. The Fl_Image class +is now a proper base class, with the core image drawing +functionality in the +Fl_Bitmap, +Fl_Pixmap, +and +Fl_RGB_Image +classes. + +BMP, GIF, JPEG, PNG, XBM, and XPM image files can now be +loaded using the appropriate image classes, and the +Fl_Shared_Image +class can be used to cache images in memory. + +Image labels are no longer provided as an add-on label type. +If you use the old label() methods on an image, the +widget's image() method is called to set the image +as the label. + +Image labels in menu items must still use the old labeltype +mechanism to preserve source compatibility. + +\section migration_1_1_keyboard Keyboard Navigation + +FLTK 1.1.x now supports keyboard navigation and control with +all widgets. To restore the old FLTK 1.0.x behavior so that only +text widgets get keyboard focus, call the +Fl::visible_focus() +method to disable it: + +\code +Fl::visible_focus(0); +\endcode + +\htmlonly +
+[Index]    +[Previous]  + \ref osissues    +[Next]  + \ref migration_1_3 + +\endhtmlonly +*/ diff --git a/documentation/src/migration_1_3.dox b/documentation/src/migration_1_3.dox new file mode 100644 index 000000000..70023b38c --- /dev/null +++ b/documentation/src/migration_1_3.dox @@ -0,0 +1,20 @@ +/** + + \page migration_1_3 H - Migrating Code from FLTK 1.1 to 1.3 + +This appendix describes the differences between the FLTK +1.1.x and FLTK 1.3.x functions and classes. + +If you want to migrate your code from FLTK 1.0 to FLTK 1.3, +then you should also consult Appendix \ref migration_1_1. + +\htmlonly +
+[Index]    +[Previous]  + \ref migration_1_1    +[Next]  + \ref development + +\endhtmlonly +*/ diff --git a/documentation/src/opengl.dox b/documentation/src/opengl.dox new file mode 100644 index 000000000..bed6b5d5c --- /dev/null +++ b/documentation/src/opengl.dox @@ -0,0 +1,459 @@ +/** + + \page opengl 8 - Using OpenGL + +This chapter discusses using FLTK for your OpenGL applications. + +\section opengl_using Using OpenGL in FLTK + +The easiest way to make an OpenGL display is to subclass +Fl_Gl_Window. +Your subclass must implement a draw() method which uses +OpenGL calls to draw the display. Your main program should call +redraw() when the display needs to change, and +(somewhat later) FLTK will call draw(). + +With a bit of care you can also use OpenGL to draw into +normal FLTK windows. This allows you to use Gouraud shading for +drawing your widgets. To do this you use the +gl_start() +and +gl_finish() +functions around your OpenGL code. + +You must include FLTK's header +file. It will include the file , define +some extra drawing functions provided by FLTK, and include the + header file needed by WIN32 +applications. + +\section opengl_subclass Making a Subclass of Fl_Gl_Window + +To make a subclass of Fl_Gl_Window, you must provide: + +\li A class definition. + +\li A draw() method. + +\li A handle() method if you need to receive input from the user. + +If your subclass provides static controls in the window, they +must be redrawn whenever the FL_DAMAGE_ALL bit is set +in the value returned by damage(). For double-buffered +windows you will need to surround the drawing code with the +following code to make sure that both buffers are redrawn: + +\code +#ifndef MESA +glDrawBuffer(GL_FRONT_AND_BACK); +#endif // !MESA +... draw stuff here ... +#ifndef MESA +glDrawBuffer(GL_BACK); +#endif // !MESA +\endcode + +
+ + + + +
Note: + +

If you are using the Mesa graphics library, the call + to glDrawBuffer() is not required and will slow + down drawing considerably. The preprocessor instructions + shown above will optimize your code based upon the + graphics library used. + +

+ +\subsection opengl_defining Defining the Subclass + +To define the subclass you just subclass the Fl_Gl_Window class: + +\code +class MyWindow : public Fl_Gl_Window { + void draw(); + int handle(int); + +public: + MyWindow(int X, int Y, int W, int H, const char *L) + : Fl_Gl_Window(X, Y, W, H, L) {} +}; +\endcode + +The draw() and handle() methods are +described below. Like any widget, you can include additional +private and public data in your class (such as scene graph +information, etc.) + +\subsection opengl_draw The draw() Method + +The draw() method is where you actually do your OpenGL drawing: + +\code +void MyWindow::draw() { + if (!valid()) { + ... set up projection, viewport, etc ... + ... window size is in w() and h(). + ... valid() is turned on by FLTK after draw() returns + } + ... draw ... +} +\endcode + +\subsection opengl_handle The handle() Method + +The handle() method handles mouse and keyboard +events for the window: + +\code +int MyWindow::handle(int event) { + switch(event) { + case FL_PUSH: + ... mouse down event ... + ... position in Fl::event_x() and Fl::event_y() + return 1; + case FL_DRAG: + ... mouse moved while down event ... + return 1; + case FL_RELEASE: + ... mouse up event ... + return 1; + case FL_FOCUS : + case FL_UNFOCUS : + ... Return 1 if you want keyboard events, 0 otherwise + return 1; + case FL_KEYBOARD: + ... keypress, key is in Fl::event_key(), ascii in Fl::event_text() + ... Return 1 if you understand/use the keyboard event, 0 otherwise... + return 1; + case FL_SHORTCUT: + ... shortcut, key is in Fl::event_key(), ascii in Fl::event_text() + ... Return 1 if you understand/use the shortcut event, 0 otherwise... + return 1; + default: + // pass other events to the base class... + return Fl_Gl_Window::handle(event); + } +} +\endcode + +When handle() is called, the OpenGL context is not +set up! If your display changes, you should call +redraw() and let draw() do the work. Don't +call any OpenGL drawing functions from inside handle()! + +You can call some OpenGL stuff like hit detection and texture +loading functions by doing: + +\code + case FL_PUSH: + make_current(); // make OpenGL context current + if (!valid()) { + + ... set up projection exactly the same as draw ... + + valid(1); // stop it from doing this next time + } + ... ok to call NON-DRAWING OpenGL code here, such as hit + detection, loading textures, etc... +\endcode + +Your main program can now create one of your windows by doing +new MyWindow(...). You can also use +FLUID +by: + +-# Putting your class definition in a MyWindow.H file. +
+-# Creating a Fl_Box widget in FLUID. +
+-# In the widget panel fill in the "class" field with MyWindow. + This will make FLUID produce constructors for your new class. +
+-# In the "Extra Code" field put \#include "MyWindow.H", + so that the FLUID output file will compile. + +You must put glwindow->show() in your main code +after calling show() on the window containing the +OpenGL window. + +\section opengl_normal Using OpenGL in Normal FLTK Windows + +You can put OpenGL code into an +Fl_Widget::draw() +method or into the code for a +boxtype +or other places with some care. + +Most importantly, before you show any windows, +including those that don't have OpenGL drawing, you must +initialize FLTK so that it knows it is going to use OpenGL. You +may use any of the symbols described for Fl_Gl_Window::mode() +to describe how you intend to use OpenGL: + +\code +Fl::gl_visual(FL_RGB); +\endcode + +You can then put OpenGL drawing code anywhere you can draw +normally by surrounding it with: + +\code +gl_start(); +... put your OpenGL code here ... +gl_finish(); +\endcode + +gl_start() +and +gl_finish() +set up an OpenGL +context with an orthographic projection so that 0,0 is the +lower-left corner of the window and each pixel is one unit. The +current clipping is reproduced with OpenGL glScissor() +commands. These functions also synchronize the OpenGL graphics stream +with the drawing done by other X, WIN32, or FLTK functions. + +The same context is reused each time. If your code changes +the projection transformation or anything else you should use +glPushMatrix() and glPopMatrix() functions to +put the state back before calling gl_finish(). + +You may want to use Fl_Window::current()->h() to +get the drawable height so that you can flip the Y +coordinates. + +Unfortunately, there are a bunch of limitations you must +adhere to for maximum portability: + +\li You must choose a default visual with Fl::gl_visual(). + +\li You cannot pass FL_DOUBLE to Fl::gl_visual(). + +\li You cannot use Fl_Double_Window or Fl_Overlay_Window. + +Do not call gl_start() or +gl_finish() when drawing into an Fl_Gl_Window ! + +\section opengl_drawing OpenGL Drawing Functions + +FLTK provides some useful OpenGL drawing functions. They can +be freely mixed with any OpenGL calls, and are defined by +including which you should include +instead of the OpenGL header . + +void gl_color(Fl_Color) + +\par +Sets the current OpenGL color to a FLTK color. For +color-index modes it will use fl_xpixel(c), which is +only right if this window uses the default colormap! + +void gl_rect(int x, int y, int w, int h)
+void gl_rectf(int x, int y, int w, int h) + +\par +Outlines or fills a rectangle with the current color. If +Fl_Gl_Window::ortho() has been called, then the rectangle will exactly +fill the pixel rectangle passed. + +void gl_font(Fl_Font fontid, int size) + +\par +Sets the current OpenGL font to the same font you get by calling +fl_font(). + +int gl_height()
+int gl_descent()
+float gl_width(const char *)
+float gl_width(const char *, int n)
+float gl_width(uchar) + +\par +Returns information about the current OpenGL font. + +void gl_draw(const char *)
+void gl_draw(const char *, int n) + +\par +Draws a nul-terminated string or an array of n +characters in the current OpenGL font at the current raster +position. + +void gl_draw(const char *, int x, int y)
+void gl_draw(const char *, int n, int x, int y)
+void gl_draw(const char *, float x, float y)
+void gl_draw(const char *, int n, float x, float y) + +\par +Draws a nul-terminated string or an array of n +characters in the current OpenGL font at the given position. + +void gl_draw(const char *, int x, int y, int w, int h, Fl_Align) + +\par +Draws a string formatted into a box, with newlines and tabs +expanded, other control characters changed to ^X, and aligned +with the edges or center. Exactly the same output as +fl_draw(). + +\section opengl_speed Speeding up OpenGL + +Performance of Fl_Gl_Window may be improved on some types of +OpenGL implementations, in particular MESA and other software +emulators, by setting the GL_SWAP_TYPE environment +variable. This variable declares what is in the backbuffer after +you do a swapbuffers. + +\li setenv GL_SWAP_TYPE COPY
+
+ This indicates that the back buffer is copied to the + front buffer, and still contains it's old data. This is + true of many hardware implementations. Setting this + will speed up emulation of overlays, and widgets that + can do partial update can take advantage of this as + damage() will not be cleared to -1.

+ +\li setenv GL_SWAP_TYPE NODAMAGE
+
+ This indicates that nothing changes the back buffer + except drawing into it. This is true of MESA and Win32 + software emulation and perhaps some hardware emulation + on systems with lots of memory.

+ +\li All other values for GL_SWAP_TYPE, and not + setting the variable, cause FLTK to assume that the + back buffer must be completely redrawn after a swap. + +This is easily tested by running the gl_overlay demo +program and seeing if the display is correct when you drag +another window over it or if you drag the window off the screen +and back on. You have to exit and run the program again for it +to see any changes to the environment variable. + +\section opengl_optimizer Using OpenGL Optimizer with FLTK + +OpenGL Optimizer +is a scene graph toolkit for OpenGL available from +Silicon Graphics for IRIX and Microsoft Windows. It allows you +to view large scenes without writing a lot of OpenGL code. + +\par OptimizerWindow Class Definition + +\par +To use OpenGL Optimizer with FLTK you'll need to create a +subclass of Fl_Gl_Widget that includes several state +variables: + +\code +class OptimizerWindow : public Fl_Gl_Window { + csContext *context_; // Initialized to 0 and set by draw()... + csDrawAction *draw_action_; // Draw action... + csGroup *scene_; // Scene to draw... + csCamara *camera_; // Viewport for scene... + + void draw(); + +public: + OptimizerWindow(int X, int Y, int W, int H, const char *L) + : Fl_Gl_Window(X, Y, W, H, L) { + context_ = (csContext *)0; + draw_action_ = (csDrawAction *)0; + scene_ = (csGroup *)0; + camera_ = (csCamera *)0; + } + + void scene(csGroup *g) { scene_ = g; redraw(); } + + void camera(csCamera *c) { + camera_ = c; + if (context_) { + draw_action_->setCamera(camera_); + camera_->draw(draw_action_); + redraw(); + } + } +}; +\endcode + +\par The camera() Method + +\par +The camera() method sets the camera (projection and +viewpoint) to use when drawing the scene. The scene is redrawn after +this call. + +\par The draw() Method + +\par +The draw() method performs the needed initialization and does +the actual drawing: + +\code +void OptimizerWindow::draw() { + if (!context_) { + // This is the first time we've been asked to draw; create the + // Optimizer context for the scene... + +#ifdef WIN32 + context_ = new csContext((HDC)fl_getHDC()); + context_->ref(); + context_->makeCurrent((HDC)fl_getHDC()); +#else + context_ = new csContext(fl_display, fl_visual); + context_->ref(); + context_->makeCurrent(fl_display, fl_window); +#endif // WIN32 + + ... perform other context setup as desired ... + + // Then create the draw action to handle drawing things... + + draw_action_ = new csDrawAction; + if (camera_) { + draw_action_->setCamera(camera_); + camera_->draw(draw_action_); + } + } else { +#ifdef WIN32 + context_->makeCurrent((HDC)fl_getHDC()); +#else + context_->makeCurrent(fl_display, fl_window); +#endif // WIN32 + } + + if (!valid()) { + // Update the viewport for this context... + context_->setViewport(0, 0, w(), h()); + } + + // Clear the window... + context_->clear(csContext::COLOR_CLEAR | csContext::DEPTH_CLEAR, + 0.0f, // Red + 0.0f, // Green + 0.0f, // Blue + 1.0f); // Alpha + + // Then draw the scene (if any)... + if (scene_) + draw_action_->apply(scene_); +} +\endcode + +\par The scene() Method + +\par +The scene() method sets the scene to be drawn. The scene is +a collection of 3D objects in a csGroup. The scene is redrawn +after this call. + +\htmlonly +


+[Index]    +[Previous]  7 - Adding and Extending Widgets  +[Next]  9 - Programming with FLUID  +\endhtmlonly +*/ diff --git a/documentation/src/osissues.dox b/documentation/src/osissues.dox new file mode 100644 index 000000000..b878d79d3 --- /dev/null +++ b/documentation/src/osissues.dox @@ -0,0 +1,765 @@ +/** + + \page osissues F - Operating System Issues + +This appendix describes the operating system specific interfaces in FLTK. + +\section osissues_accessing Accessing the OS Interfaces + +All programs that need to access the operating system +specific interfaces must include the following header file: + +\code +#include +\endcode + +Despite the name, this header file will define the +appropriate interface for your environment. The pages that +follow describe the functionality that is provided for each +operating system. + +
+ + + + +
WARNING: + + The interfaces provided by this header file may + change radically in new FLTK releases. Use them only + when an existing generic FLTK interface is not + sufficient. + +
+
+ +\section osissues_unit The UNIX (X11) Interface + +The UNIX interface provides access to the X Window System +state information and data structures. + +\subsection osissues_x_events Handling Other X Events + + +void Fl::add_handler(int (*f)(int)) + +Installs a function to parse unrecognized events. If FLTK +cannot figure out what to do with an event, it calls each of +these functions (most recent first) until one of them returns +non-zero. If none of them returns non-zero then the event is +ignored. + +FLTK calls this for any X events it does not recognize, or X +events with a window ID that FLTK does not recognize. You can +look at the X event in the +fl_xevent variable. + +The argument is the FLTK event type that was not handled, or +zero for unrecognized X events. These handlers are also called +for global shortcuts and some other events that the widget they +were passed to did not handle, for example +FL_SHORTCUT. + + +extern XEvent *fl_xvent + +This variable contains the most recent X event. + + +extern ulong fl_event_time + +This variable contains the time stamp from the most recent X +event that reported it; not all events do. Many X calls like cut +and paste need this value. + + +Window fl_xid(const Fl_Window *) + +Returns the XID for a window, or zero if not shown(). + + +Fl_Window *fl_find(ulong xid) + +Returns the Fl_Window that corresponds to the given +XID, or NULL if not found. This function uses a cache +so it is slightly faster than iterating through the windows +yourself. + + +int fl_handle(const XEvent &) + +This call allows you to supply the X events to FLTK, which +may allow FLTK to cooperate with another toolkit or library. The +return value is non-zero if FLTK understood the event. If the +window does not belong to FLTK and the add_handler() +functions all return 0, this function will return false. + +Besides feeding events your code should call +Fl::flush() +periodically so that FLTK redraws its windows. + +This function will call the callback functions. It will not +return until they complete. In particular, if a callback pops up +a modal window by calling +fl_ask(), +for instance, it will not return until the modal function +returns. + +\subsection osissues_drawing_xlib Drawing using Xlib + +The following global variables are set before +Fl_Widget::draw() +is called, or by +Fl_Window::make_current(): + +\code +extern Display *fl_display; +extern Window fl_window; +extern GC fl_gc; +extern int fl_screen; +extern XVisualInfo *fl_visual; +extern Colormap fl_colormap; +\endcode + +You must use them to produce Xlib calls. Don't attempt to change +them. A typical X drawing call is written like this: + +\code +XDrawSomething(fl_display, fl_window, fl_gc, ...); +\endcode + +Other information such as the position or size of the X +window can be found by looking at +Fl_Window::current(), +which returns a pointer to the Fl_Window being drawn. + + +unsigned long fl_xpixel(Fl_Color i)
+unsigned long fl_xpixel(uchar r, uchar g, uchar b) + +Returns the X pixel number used to draw the given FLTK color +index or RGB color. This is the X pixel that +fl_color() would use. + + +int fl_parse_color(const char* p, uchar& r, uchar& g, uchar& b) + +Convert a name into the red, green, and blue values of a color +by parsing the X11 color names. On other systems, fl_parse_color +can only convert names in hexadecimal encoding, for example \#ff8083. + + +extern XFontStruct *fl_xfont + +Points to the font selected by the most recent +fl_font(). +This is not necessarily the current font of fl_gc, +which is not set until +fl_draw() +is called. If FLTK was compiled with Xft support, fl_xfont +will usually be 0 and fl_xftfont will contain a pointer +to the XftFont structure instead. + + +extern void *fl_xftfont + +If FLTK was compiled with Xft support enabled, fl_xftfont +Points to the xft font selected by the most recent +fl_font(). +Otherwise it will be 0. fl_xftfont should be cast to +XftFont*. + +\subsection osissues_xvisual Changing the Display, Screen, or X Visual + +FLTK uses only a single display, screen, X visual, and X +colormap. This greatly simplifies its internal structure and +makes it much smaller and faster. You can change which it uses +by setting global variables before the first +Fl_Window::show() is called. You may also want to call +Fl::visual(), +which is a portable interface to get a full color and/or double buffered +visual. + + +int Fl::display(const char *) + +Set which X display to use. This actually does +putenv("DISPLAY=...") so that child programs +will display on the same screen if called with exec(). +This must be done before the display is opened. This call is +provided under MacOS and WIN32 but it has no effect. + + +extern Display *fl_display + +The open X display. This is needed as an argument to most +Xlib calls. Don't attempt to change it! This is NULL +before the display is opened. + + +void fl_open_display() + +Opens the display. Does nothing if it is already open. This +will make sure fl_display is non-zero. You should call +this if you wish to do X calls and there is a chance that your +code will be called before the first show() of a +window. + +This may call Fl::abort() if there is an error +opening the display. + + +void fl_close_display() + +This closes the X connection. You do not need to call +this to exit, and in fact it is faster to not do so! It may be +useful to call this if you want your program to continue without +the X connection. You cannot open the display again, and +probably cannot call any FLTK functions. + + +extern int fl_screen + +Which screen number to use. This is set by +fl_open_display() to the default screen. You can change +it by setting this to a different value immediately afterwards. +It can also be set by changing the last number in the +Fl::display() string to "host:0.#". + + +extern XVisualInfo *fl_visual
+ +extern Colormap fl_colormap + +The visual and colormap that FLTK will use for all windows. +These are set by fl_open_display() to the default +visual and colormap. You can change them before calling +show() on the first window. Typical code for changing +the default visual is: + +\code +Fl::args(argc, argv); // do this first so $DISPLAY is set +fl_open_display(); +fl_visual = find_a_good_visual(fl_display, fl_screen); +if (!fl_visual) Fl::abort("No good visual"); +fl_colormap = make_a_colormap(fl_display, fl_visual->visual, fl_visual->depth); +// it is now ok to show() windows: +window->show(argc, argv); +\endcode + +\subsection osissues_specialx Using a Subclass of Fl_Window for Special X Stuff + +FLTK can manage an X window on a different screen, visual +and/or colormap, you just can't use FLTK's drawing routines to +draw into it. But you can write your own draw() method +that uses Xlib (and/or OpenGL) calls only. + +FLTK can also manage XID's provided by other libraries or +programs, and call those libraries when the window needs to be +redrawn. + +To do this, you need to make a subclass of +Fl_Window +and override some of these virtual functions: + +virtual void Fl_Window::show() + +If the window is already shown() this must cause it +to be raised, this can usually be done by calling +Fl_Window::show(). If not shown() your +implementation must call either Fl_X::set_xid() or +Fl_X::make_xid(). + +An example: + +\code +void MyWindow::show() { + if (shown()) {Fl_Window::show(); return;} // you must do this! + fl_open_display(); // necessary if this is first window + // we only calcualte the necessary visual colormap once: + static XVisualInfo *visual; + static Colormap colormap; + if (!visual) { + visual = figure_out_visual(); + colormap = XCreateColormap(fl_display, RootWindow(fl_display,fl_screen), + vis->visual, AllocNone); + } + Fl_X::make_xid(this, visual, colormap); +} +\endcode + +Fl_X *Fl_X::set_xid(Fl_Window *, Window xid) + +Allocate a hidden structure called an Fl_X, put the +XID into it, and set a pointer to it from the +Fl_Window. This causes Fl_Window::shown() to +return true. + +void Fl_X::make_xid(Fl_Window *, XVisualInfo *= fl_visual, Colormap = fl_colormap) + +This static method does the most onerous parts of creating an +X window, including setting the label, resize limitations, etc. +It then does Fl_X::set_xid() with this new window and +maps the window. + +virtual void Fl_Window::flush() + +This virtual function is called by Fl::flush() to +update the window. For FLTK's own windows it does this by +setting the global variables fl_window and +fl_gc and then calling the draw() method. For +your own windows you might just want to put all the drawing code +in here. + +The X region that is a combination of all damage() +calls done so far is in Fl_X::i(this)->region. If +NULL then you should redraw the entire window. The +undocumented function fl_clip_region(XRegion) will +initialize the FLTK clip stack with a region or NULL +for no clipping. You must set region to NULL afterwards +as fl_clip_region() will own and delete it when +done. + +If damage() & FL_DAMAGE_EXPOSE then only X +expose events have happened. This may be useful if you have an +undamaged image (such as a backing buffer) around. + +Here is a sample where an undamaged image is kept somewhere: + +\code +void MyWindow::flush() { + fl_clip_region(Fl_X::i(this)->region); + Fl_X::i(this)->region = 0; + if (damage() != 2) {... draw things into backing store ...} + ... copy backing store to window ... +} +\endcode + +virtual void Fl_Window::hide() + +Destroy the window server copy of the window. Usually you +will destroy contexts, pixmaps, or other resources used by the +window, and then call Fl_Window::hide() to get rid of +the main window identified by xid(). If you override +this, you must also override the destructor as shown: + +\code +void MyWindow::hide() { + if (mypixmap) { + XFreePixmap(fl_display,mypixmap); + mypixmap = 0; + } + Fl_Window::hide(); // you must call this +} +\endcode + +virtual void Fl_Window::~Fl_Window() + +Because of the way C++ works, if you override hide() +you must override the destructor as well (otherwise only +the base class hide() is called): + +\code +MyWindow::~MyWindow() { + hide(); +} +\endcode + +\subsection osissues_x_icon Setting the Icon of a Window + +FLTK currently supports setting a window's icon before it +is shown using the Fl_Window::icon() method. + +void Fl_Window::icon(char *) + +Sets the icon for the window to the passed pointer. You will +need to cast the icon Pixmap to a char * when +calling this method. To set a monochrome icon using a bitmap compiled +with your application use: + +\code +#include "icon.xbm" + +fl_open_display(); // needed if display has not been previously opened + +Pixmap p = XCreateBitmapFromData(fl_display, DefaultRootWindow(fl_display), + icon_bits, icon_width, icon_height); + +window->icon((char *)p); +\endcode + +To use a multi-colored icon, the XPM format and library +should be used as follows: + +\code +#include +#include "icon.xpm" + +fl_open_display(); // needed if display has not been previously opened + +Pixmap p, mask; + +XpmCreatePixmapFromData(fl_display, DefaultRootWindow(fl_display), + icon_xpm, &p, &mask, NULL); + +window->icon((char *)p); +\endcode + +When using the Xpm library, be sure to include it in the list +of libraries that are used to link the application (usually "-lXpm"). + +
+ + + + +
NOTE: + + You must call Fl_Window::show(argc, + argv) for the icon to be used. The + Fl_Window::show() method does not bind the icon + to the window. + +
+
+ +\subsection osissues_xresources X Resources + +When the +Fl_Window::show(argc, argv) +method is called, FLTK looks for the following X resources: + +\li background - The default background color + for widgets (color). + +\li dndTextOps - The default setting for + drag and drop text operations (boolean). + +\li foreground - The default foreground (label) + color for widgets (color). + +\li scheme - The default scheme to use (string). + +\li selectBackground - The default selection + color for menus, etc. (color). + +\li Text.background - The default background + color for text fields (color). + +\li tooltips - The default setting for + tooltips (boolean). + +\li visibleFocus - The default setting for + visible keyboard focus on non-text widgets (boolean). + +Resources associated with the first window's +Fl_Window::xclass() +string are queried first, or if no class has been specified then +the class "fltk" is used (e.g. fltk.background). If no +match is found, a global search is done (e.g. +*background). + +\section osissues_win32 The Windows (WIN32) Interface + +The Windows interface provides access to the WIN32 GDI +state information and data structures. + +\subsection osissues_win32_messages Handling Other WIN32 Messages + +By default a single WNDCLASSEX called "FLTK" is +created. All Fl_Window's are of this class unless you +use Fl_Window::xclass(). The window class is created +the first time Fl_Window::show() is called. + +You can probably combine FLTK with other libraries that make +their own WIN32 window classes. The easiest way is to call +Fl::wait(), as it will call DispatchMessage +for all messages to the other windows. If necessary you can let +the other library take over as long as it calls +DispatchMessage(), but you will have to arrange for the +function Fl::flush() to be called regularly so that +widgets are updated, timeouts are handled, and the idle +functions are called. + + +extern MSG fl_msg + +This variable contains the most recent message read by +GetMessage, which is called by Fl::wait(). This may not be the +most recent message sent to an FLTK window, because silly WIN32 +calls the handle procedures directly for some events (sigh). + + +void Fl::add_handler(int (*f)(int)) + +Installs a function to parse unrecognized messages sent to +FLTK windows. If FLTK cannot figure out what to do with a +message, it calls each of these functions (most recent first) +until one of them returns non-zero. The argument passed to the +functions is the FLTK event that was not handled or zero for +unknown messages. If all the handlers return zero then FLTK +calls DefWindowProc(). + + +HWND fl_xid(const Fl_Window *) + +Returns the window handle for a Fl_Window, or zero +if not shown(). + + +Fl_Window *fl_find(HWND xid) + +Returns the Fl_Window that corresponds to the given +window handle, or NULL if not found. This function uses +a cache so it is slightly faster than iterating through the +windows yourself. + + +\subsection osissues_win32_gdi Drawing Things Using the WIN32 GDI + +When the virtual function +Fl_Widget::draw() is +called, FLTK stores all the silly extra arguments you need to +make a proper GDI call in some global variables: + +\code +extern HINSTANCE fl_display; +extern HWND fl_window; +extern HDC fl_gc; +COLORREF fl_RGB(); +HPEN fl_pen(); +HBRUSH fl_brush(); +\endcode + +These global variables are set before draw() is called, or by +Fl_Window::make_current(). +You can refer to them when needed to produce GDI calls, but don't +attempt to change them. The functions return GDI objects for +the current color set by fl_color() and are created as +needed and cached. A typical GDI drawing call is written like +this: + +\code +DrawSomething(fl_gc, ..., fl_brush()); +\endcode + +It may also be useful to refer to +Fl_Window::current() +to get the window's size or position. + +\subsection osissues_icon_windows Setting the Icon of a Window + +FLTK currently supports setting a window's icon *before* it +is shown using the Fl_Window::icon() method. + +void Fl_Window::icon(char *) + +Sets the icon for the window to the passed pointer. You will +need to cast the HICON handle to a char * when +calling this method. To set the icon using an icon resource +compiled with your application use: + +\code +window->icon((char *)LoadIcon(fl_display, MAKEINTRESOURCE(IDI_ICON))); +\endcode + +You can also use the LoadImage() and related +functions to load specific resolutions or create the icon from +bitmap data. + +
+ + + + +
NOTE: + + You must call Fl_Window::show(argc, + argv) for the icon to be used. The + Fl_Window::show() method does not bind the icon + to the window. + +
+
+ +\subsection osissues_msdos_console How to Not Get a MSDOS Console Window + +WIN32 has a really stupid mode switch stored in the +executables that controls whether or not to make a console +window. + +To always get a console window you simply create a console +application (the "/SUBSYSTEM:CONSOLE" option for the +linker). For a GUI-only application create a WIN32 application +(the "/SUBSYSTEM:WINDOWS" option for the linker). + +FLTK includes a WinMain() function that calls the +ANSI standard main() entry point for you. This +function creates a console window when you use the debug version +of the library. + +WIN32 applications without a console cannot write to +stdout or stderr, even if they are run from a +console window. Any output is silently thrown away. +Additionally, WIN32 applications are run in the background by +the console, although you can use "start /wait program" to run +them in the foreground. + +\subsection osissues_win32_problems Known WIN32 Bugs and Problems + +The following is a list of known bugs and problems in the WIN32 +version of FLTK: + +\li If a program is deactivated, Fl::wait() + does not return until it is activated again, even though + many events are delivered to the program. This can cause + idle background processes to stop unexpectedly. This + also happens while the user is dragging or resizing + windows or otherwise holding the mouse down. We were + forced to remove most of the efficiency FLTK uses for + redrawing in order to get windows to update while being + moved. This is a design error in WIN32 and probably + impossible to get around. + +\li Fl_Gl_Window::can_do_overlay() returns true + until the first time it attempts to draw an overlay, and + then correctly returns whether or not there is overlay + hardware. + +\li SetCapture (used by Fl::grab()) + doesn't work, and the main window title bar turns gray + while menus are popped up. + +\li Compilation with gcc 3.4.4 and -Os exposes an + optimisation bug in gcc. The symptom is that when drawing + filled circles only the perimeter is drawn. This can for instance + be seen in the symbols demo. Other optimisation options such + as -O2 and -O3 seem to work OK. More details can be found + in STR#1656 + +\section osissues_macos The MacOS Interface + +FLTK supports MacOS X using the Apple Carbon library. Older +versions of MacOS are not supported. + +\par Control, Option, and Command Modifier Keys + +FLTK maps the Mac 'control' key to FL_CTRL, the +'option' key to FL_ALT and the 'Apple' key to +FL_META. Keyboard events return the key name in +Fl::event_key() and the keystroke translation in +Fl::event_text(). For example, typing Option-Y on a Mac +keyboard will set FL_ALT in Fl::event_state(), +set Fl::event_key() to 'y' and return the Yen symbol in +Fl::event_text(). + +WindowRef fl_xid(const Fl_Window *) + +Returns the window reference for an Fl_Window, or +NULL if the window has not been shown. + +Fl_Window *fl_find(WindowRef xid) + +Returns the Fl_Window that corresponds to the give +window handle, or NULL if not found. FLTK windows that +are children of top-level windows share the WindowRef of the +top-level window. + +\subsection osissues_apple_quit Apple "Quit" Event + +When the user press Cmd-Q or requests a termination of the +application, OS X will send a "Quit" Apple Event. FLTK handles +this event by sending an FL_CLOSE event to all open +windows. If all windows close, the application will terminate. + +\subsection osissues_apple_open Apple "Open" Event + +Whenever the user drops a file onto an application icon, OS X +generates an Apple Event of the type "Open". You can have FLTK +notify you of an Open event by setting the fl_open_callback. + + +void fl_open_callback(void (*cb)(const char *)) + +cb will be called with a single iUnix-style file name and path. +If multiple files were dropped, fl_open_callback will be called +multiple times. + +\subsection osissues_quickdraw Drawing Things Using QuickDraw + +When the virtual function Fl_Widget::draw() is +called, FLTK has prepared the Window and CGrafPort for drawing. +Clipping and offsets are prepared to allow correct subwindow +drawing. + +\subsection osissues_quartz Drawing Things Using Quartz + +If the FLTK library was compiled using the configuration +flag --enable-quartz, all code inside Fl_Widget::draw() +is expected to call Quartz drawing functions instead of +QuickDraw. The Quartz coordinate system is flipped to match +FLTK's coordinate system. The origin for all drawing is in the top +left corner of the enclosing Fl_Window. + +Fl_Double_Window + +OS X double-buffers all windows automatically. On OS X, +Fl_Window and Fl_Double_Window are handled +internally in the same way. + +\subsection osissues_mac_files Mac File System Specifics + +\par Resource Forks + +FLTK does not access the resource fork of an application. +However, a minimal resource fork must be created for OS X +applications + +
+ +
Caution: + +When using UNIX commands to copy or move executables, OS X +will NOT copy any resource forks! For copying and moving use +CpMac and MvMac respectively. For creating a tar archive, all +executables need to be stripped from their Resource Fork before +packing, e.g. "DeRez fluid > fluid.r". After unpacking the +Resource Fork needs to be reattached, e.g. "Rez fluid.r -o +fluid". +
+
+ +It is advisable to use the Finder for moving and copying and +Mac archiving tools like Sit for distribution as they will +handle the Resource Fork correctly. + +\par Mac File Paths + +FLTK uses UNIX-style filenames and paths. + +\subsection osissues_macos_problems Known MacOS Bugs and Problems + +The following is a list of known bugs and problems in the +MacOS version of FLTK: + +\li Line styles are not well supported. This is due to + limitations in the QuickDraw interface. + +\li Nested subwindows are not supported, i.e. you can + have a Fl_Window widget inside a + Fl_Window, but not a Fl_Window inside a + Fl_Window inside a Fl_Window. + +\htmlonly +
+[Index]    +[Previous]  + \ref forms    +[Next]  + \ref migration_1_1 + +\endhtmlonly +*/ diff --git a/documentation/src/positioner.gif b/documentation/src/positioner.gif new file mode 100644 index 000000000..ba9d2694d Binary files /dev/null and b/documentation/src/positioner.gif differ diff --git a/documentation/src/preface.dox b/documentation/src/preface.dox new file mode 100644 index 000000000..ee1e9b6aa --- /dev/null +++ b/documentation/src/preface.dox @@ -0,0 +1,85 @@ +/** + + \page preface Preface + +This manual describes the Fast Light Tool Kit ("FLTK") +version 1.3.0, a C++ Graphical User Interface +("GUI") toolkit for UNIX, Microsoft Windows and MacOS. Each +of the chapters in this manual is designed as a tutorial for +using FLTK, while the appendices provide a convenient reference +for all FLTK widgets, functions, and operating system +interfaces. + +This manual may be printed, modified, and/or used under +the terms of the FLTK license provided in \ref license. + +\section preface_organisation Organization + +This manual is organized into the following chapters and appendices: + +\li \ref intro +\li \ref basics +\li \ref common +\li \ref editor +\li \ref drawing +\li \ref events +\li \ref subclassing +\li \ref opengl +\li \ref fluid +\li \ref advanced +\li \ref unicode +\li A - Class Reference +\li B - Function Reference +\li \ref enumerations +\li \ref glut +\li \ref forms +\li \ref osissues +\li \ref migration_1_1 +\li \ref migration_1_3 +\li \ref development +\li \ref license +\li \ref examples + +\section preface_conventions Conventions + +The following typeface conventions are used in this manual: + +\li Function and constant names are shown in bold courier type +\li Code samples and commands are shown in regular courier type + +\section preface_abbreviations Abbreviations + +The following abbreviations are used in this manual: + +\par X11 +The X Window System version 11. + +\par Xlib +The X Window System interface library. + +\par WIN32 +The Microsoft Windows 32-bit Application Programmer's Interface. + +\par MacOS +The Apple Macintosh OS 8.6 and later, including OS X. + +\section preface_copyrights Copyrights and Trademarks + +FLTK is Copyright 1998-2008 by Bill Spitzak and others. Use and +distribution of FLTK is governed by the GNU Library General Public +License with 4 exceptions, located in \ref license. + +UNIX is a registered trademark of the X Open Group, Inc. +Microsoft and Windows are registered trademarks of Microsoft +Corporation. OpenGL is a registered trademark of Silicon +Graphics, Inc. Apple, Macintosh, MacOS, and Mac OS X are +registered trademarks of Apple Computer, Inc. + +\htmlonly +
+[Index]    +[Next]  + \ref intro + +\endhtmlonly +*/ diff --git a/documentation/src/resizebox1.gif b/documentation/src/resizebox1.gif new file mode 100644 index 000000000..c5e8c300b Binary files /dev/null and b/documentation/src/resizebox1.gif differ diff --git a/documentation/src/resizebox2.gif b/documentation/src/resizebox2.gif new file mode 100644 index 000000000..2083afd0d Binary files /dev/null and b/documentation/src/resizebox2.gif differ diff --git a/documentation/src/round_clock.gif b/documentation/src/round_clock.gif new file mode 100644 index 000000000..939457a1e Binary files /dev/null and b/documentation/src/round_clock.gif differ diff --git a/documentation/src/scrollbar.gif b/documentation/src/scrollbar.gif new file mode 100644 index 000000000..96d0358cf Binary files /dev/null and b/documentation/src/scrollbar.gif differ diff --git a/documentation/src/slider.gif b/documentation/src/slider.gif new file mode 100644 index 000000000..923e25784 Binary files /dev/null and b/documentation/src/slider.gif differ diff --git a/documentation/src/subclassing.dox b/documentation/src/subclassing.dox new file mode 100644 index 000000000..a13e0a011 --- /dev/null +++ b/documentation/src/subclassing.dox @@ -0,0 +1,531 @@ +/** + + \page subclassing 7 - Adding and Extending Widgets + + +This chapter describes how to add your own widgets or extend existing +widgets in FLTK. + +\section subclassing_subclassing Subclassing + +New widgets are created by subclassing an existing FLTK widget, +typically Fl_Widget for controls and Fl_Group for +composite widgets. + +A control widget typically interacts with the user to receive and/or +display a value of some sort. + +A composite widget widget holds a list of child widgets and handles moving, +sizing, showing, or hiding them as needed. Fl_Group is the +main composite widget widget class in FLTK, and all of the other composite +widgets (Fl_Pack, Fl_Scroll, Fl_Tabs, +Fl_Tile, and Fl_Window) are subclasses of it. + +You can also subclass other existing widgets to provide a different +look or user-interface. For example, the button widgets are all +subclasses of Fl_Button since they all interact with the user +via a mouse button click. The only difference is the code that draws +the face of the button. + +\section subclassing_fl_widget Making a Subclass of Fl_Widget + +Your subclasses can directly descend from Fl_Widget or any +subclass of Fl_Widget. Fl_Widget has only four +virtual methods, and overriding some or all of these may be necessary. + +\section subclassing_constructor The Constructor + +The constructor should have the following arguments: + +\code +MyClass(int x, int y, int w, int h, const char *label = 0); +\endcode + +This will allow the class to be used in +FLUID +without problems. + +The constructor must call the constructor for the base class and +pass the same arguments: + +\code +MyClass::MyClass(int x, int y, int w, int h, const char *label) +: Fl_Widget(x, y, w, h, label) { +// do initialization stuff... +} +\endcode + +Fl_Widget's protected constructor sets x(), y(), +w(), h(), and label() to the passed values +and initializes the other instance variables to: + +\code +type(0); +box(FL_NO_BOX); +color(FL_BACKGROUND_COLOR); +selection_color(FL_BACKGROUND_COLOR); +labeltype(FL_NORMAL_LABEL); +labelstyle(FL_NORMAL_STYLE); +labelsize(FL_NORMAL_SIZE); +labelcolor(FL_FOREGROUND_COLOR); +align(FL_ALIGN_CENTER); +callback(default_callback,0); +flags(ACTIVE|VISIBLE); +image(0); +deimage(0); +\endcode + +\section subclassing_protected Protected Methods of Fl_Widget + +The following methods are provided for subclasses to use: + +\li Fl_Widget::clear_visible +\li Fl_Widget::damage +\li Fl_Widget::draw_box +\li Fl_Widget::draw_focus +\li Fl_Widget::draw_label +\li Fl_Widget::set_flag +\li Fl_Widget::set_visible +\li Fl_Widget::test_shortcut +\li Fl_Widget::type + + +void Fl_Widget::damage(uchar mask)
+void Fl_Widget::damage(uchar mask, int x, int y, int w, int h)
+uchar Fl_Widget::damage() + +\par +The first form indicates that a partial update of the object is +needed. The bits in mask are OR'd into damage(). Your +draw() routine can examine these bits to limit what it is +drawing. The public method Fl_Widget::redraw() simply does + Fl_Widget::damage(FL_DAMAGE_ALL), but the implementation of +your widget can call the private damage(n). + +\par +The second form indicates that a region is damaged. If only these +calls are done in a window (no calls to damage(n)) then FLTK +will clip to the union of all these calls before drawing anything. + This can greatly speed up incremental displays. The mask bits are +OR'd into damage() unless this is a Fl_Window widget. + +\par +The third form returns the bitwise-OR of all damage(n) +calls done since the last draw(). + +\par +When redrawing your widgets you should look at the damage bits to +see what parts of your widget need redrawing. The handle() +method can then set individual damage bits to limit the amount of drawing +that needs to be done: +\code +MyClass::handle(int event) { + ... + if (change_to_part1) damage(1); + if (change_to_part2) damage(2); + if (change_to_part3) damage(4); +} + +MyClass::draw() { + if (damage() & FL_DAMAGE_ALL) { + ... draw frame/box and other static stuff ... + } + + if (damage() & (FL_DAMAGE_ALL | 1)) draw_part1(); + if (damage() & (FL_DAMAGE_ALL | 2)) draw_part2(); + if (damage() & (FL_DAMAGE_ALL | 4)) draw_part3(); +} +\endcode + + +void Fl_Widget::draw_box() const
+void Fl_Widget::draw_box(Fl_Boxtype b, ulong c) const + +\par +The first form draws this widget's box(), using the +dimensions of the widget. The second form uses b as the box +type and c as the color for the box. + + +void Fl_Widget::draw_focus() const
+void Fl_Widget::draw_focus(Fl_Boxtype b, int x, int y, int w, int h) const + +\par +Draws a focus box inside the widgets bounding box. The second +form allows you to specify a different bounding box. + + +void Fl_Widget::draw_label() const
+void Fl_Widget::draw_label(int x, int y, int w, int h) const
+void Fl_Widget::draw_label(int x, int y, int w, int h, Fl_Align align) const + +\par +This is the usual function for a draw() method to call to +draw the widget's label. It does not draw the label if it is supposed +to be outside the box (on the assumption that the enclosing group will +draw those labels). + +\par +The second form uses the passed bounding box instead of the widget's +bounding box. This is useful so "centered" labels are aligned with some +feature, like a moving slider. + +\par +The third form draws the label anywhere. It acts as though +FL_ALIGN_INSIDE has been forced on so the label will appear inside +the passed bounding box. This is designed for parent groups to draw +labels with. + + +void Fl_Widget::set_flag(SHORTCUT_LABEL) + +\par +Modifies draw_label() so that '&' characters cause an underscore +to be printed under the next letter. + + + +void Fl_Widget::set_visible()
+void Fl_Widget::clear_visible() + +\par +Fast inline versions of Fl_Widget::hide() and +Fl_Widget::show(). These do not send the FL_HIDE and +FL_SHOW events to the widget. + + +int Fl_Widget::test_shortcut() const
+static int Fl_Widget::test_shortcut(const char *s) + +\par +The first version tests Fl_Widget::label() against the +current event (which should be a FL_SHORTCUT event). If the +label contains a '&' character and the character after it matches the key +press, this returns true. This returns false if the SHORTCUT_LABEL +flag is off, if the label is NULL or does not have a +'&' character in it, or if the keypress does not match the character. + +\par +The second version lets you do this test against an arbitrary string. + + +uchar Fl_Widget::type() const
+void Fl_Widget::type(uchar t) + +\par +The property Fl_Widget::type() can return an arbitrary 8-bit +identifier, and can be set with the protected method type(uchar t). +This value had to be provided for Forms compatibility, but you can +use it for any purpose you want. Try to keep the value less than 100 +to not interfere with reserved values. + +\par +FLTK does not use RTTI (Run Time Typing Infomation), to enhance +portability. But this may change in the near future if RTTI becomes +standard everywhere. + +\par +If you don't have RTTI you can use the clumsy FLTK mechanisim, by +having type() use a unique value. These unique values must +be greater than the symbol FL_RESERVED_TYPE (which is 100). +Look through the header files for FL_RESERVED_TYPE to find an +unused number. If you make a subclass of Fl_Window +you must use FL_WINDOW + n (n must be in the +range 1 to 7). + + +\section subclassing_events Handling Events + +The virtual method int Fl_Widget::handle(int event) is called +to handle each event passed to the widget. It can: + +\li Change the state of the widget. +\li Call + Fl_Widget::redraw() + if the widget needs to be redisplayed. +\li Call + Fl_Widget::damage(n) + if the widget needs a partial-update (assuming you provide support for + this in your + Fl_Widget::draw() + method). +\li Call + Fl_Widget::do_callback() + if a callback should be generated. +\li Call Fl_Widget::handle() on child widgets. + +Events are identified by the integer argument. Other information +about the most recent event is stored in static locations and aquired +by calling the +Fl::event_*() +functions. This information remains valid until another event is +handled. + +Here is a sample handle() method for a widget that acts as +a pushbutton and also accepts the keystroke 'x' to cause the callback: + +\code +int MyClass::handle(int event) { + switch(event) { + case FL_PUSH: + highlight = 1; + redraw(); + return 1; + case FL_DRAG: { + int t = Fl::event_inside(this); + if (t != highlight) { + highlight = t; + redraw(); + } + } + return 1; + case FL_RELEASE: + if (highlight) { + highlight = 0; + redraw(); + do_callback(); + // never do anything after a callback, as the callback + // may delete the widget! + } + return 1; + case FL_SHORTCUT: + if (Fl::event_key() == 'x') { + do_callback(); + return 1; + } + return 0; + default: + return Fl_Widget::handle(event); + } +} +\endcode + +You must return non-zero if your handle() method +uses the event. If you return zero, the parent widget will try +sending the event to another widget. + + +\section subclassing_drawing Drawing the Widget + +The draw() virtual method is called when FLTK wants +you to redraw your widget. It will be called if and only if +damage() is non-zero, and damage() will be +cleared to zero after it returns. The draw() method +should be declared protected so that it can't be called from +non-drawing code. + +The damage() value contains the bitwise-OR of all +the damage(n) calls to this widget since it was last +drawn. This can be used for minimal update, by only redrawing +the parts whose bits are set. FLTK will turn on the +FL_DAMAGE_ALL bit if it thinks the entire widget must +be redrawn, e.g. for an expose event. + +Expose events (and the above damage(b,x,y,w,h)) will cause +draw() to be called with FLTK's +clipping turned on. You can greatly speed up redrawing in some +cases by testing fl_not_clipped(x,y,w,h) or fl_clip_box(...) +and skipping invisible parts. + +Besides the protected methods described above, FLTK provides a large +number of basic drawing functions, which are described +below. + +\section subclassing_resizing Resizing the Widget + +The resize(int x, int y, int w, int h) method is called when +the widget is being resized or moved. The arguments are the new +position, width, and height. x(), y(), w(), +and h() still remain the old size. You must call resize() +on your base class with the same arguments to get the widget size to +actually change. + +This should not call redraw(), at least if only the +x() and y() change. This is because composite widgets like +Fl_Scroll +may have a more efficient way of drawing the new position. + +\section subclassing_composite Making a Composite Widget + +A "composite" widget contains one or more "child" widgets. +To make a composite widget you should subclass +Fl_Group. +It is possible to make a composite object that is not a subclass of +Fl_Group, but you'll have to duplicate the code in Fl_Group +anyways. + +Instances of the child widgets may be included in the parent: + +\code +class MyClass : public Fl_Group { + Fl_Button the_button; + Fl_Slider the_slider; + ... +}; +\endcode + +The constructor has to initialize these instances. They are automatically +add()ed to the group, since the Fl_Group constructor does +Fl_Group::begin(). +Don't forget to call Fl_Group::end() or use the Fl_End pseudo-class: + +\code +MyClass::MyClass(int x, int y, int w, int h) : + Fl_Group(x, y, w, h), + the_button(x + 5, y + 5, 100, 20), + the_slider(x, y + 50, w, 20) +{ + ...(you could add dynamically created child widgets here)... + end(); // don't forget to do this! +} +\endcode + +The child widgets need callbacks. These will be called with a pointer +to the children, but the widget itself may be found in the parent() +pointer of the child. Usually these callbacks can be static private +methods, with a matching private method: + +\code +void MyClass::static_slider_cb(Fl_Widget* v, void *) { // static method + ((MyClass*)(v->parent())->slider_cb(); +} +void MyClass::slider_cb() { // normal method + use(the_slider->value()); +} +\endcode + +If you make the handle() method, you can quickly pass all the +events to the children using the Fl_Group::handle() method. +You don't need to override handle() if your composite widget +does nothing other than pass events to the children: + +\code +int MyClass::handle(int event) { + if (Fl_Group::handle(event)) return 1; + ... handle events that children don't want ... +} +\endcode + +If you override draw() you need to draw all the +children. If redraw() or damage() is called +on a child, damage(FL_DAMAGE_CHILD) is done to the +group, so this bit of damage() can be used to indicate +that a child needs to be drawn. It is fastest if you avoid +drawing anything else in this case: + +\code +int MyClass::draw() { + Fl_Widget *const*a = array(); + if (damage() == FL_DAMAGE_CHILD) { // only redraw some children + for (int i = children(); i --; a ++) update_child(**a); + } else { // total redraw + ... draw background graphics ... + // now draw all the children atop the background: + for (int i = children_; i --; a ++) { + draw_child(**a); + draw_outside_label(**a); // you may not need to do this + } + } +} +\endcode + +Fl_Group provides some protected methods to make drawing +easier: + +\li draw_child +\li draw_outside_label +\li update_child + + +void Fl_Group::draw_child(Fl_Widget&) + +\par +This will force the child's damage() bits all to one and call +draw() on it, then clear the damage(). You should call +this on all children if a total redraw of your widget is requested, or +if you draw something (like a background box) that damages the child. +Nothing is done if the child is not visible() or if it is +clipped. + + +void Fl_Group::draw_outside_label(Fl_Widget&) const + +\par +Draw the labels that are not drawn by +draw_label(). If you want more control over the label +positions you might want to call child->draw_label(x,y,w,h,a). + + +void Fl_Group::update_child(Fl_Widget&) + +\par +Draws the child only if its damage() is non-zero. You +should call this on all the children if your own damage is equal to +FL_DAMAGE_CHILD. Nothing is done if the child is not visible() +or if it is clipped. + +\section subclassing_cutnpaste Cut and Paste Support + +FLTK provides routines to cut and paste 8-bit text (in the future this +may be UTF-8) between applications: + +\li Fl::paste +\li Fl::selection +\li Fl::selection_owner + +It may be possible to cut/paste non-text data by using +Fl::add_handler(). + +\section subclassing_dragndrop Drag And Drop Support + +FLTK provides routines to drag and drop 8-bit text between applications: + +Drag'n'drop operations are are initiated by copying data to the +clipboard and calling the function +Fl::dnd(). + +Drop attempts are handled via events: + +\li FL_DND_ENTER +\li FL_DND_DRAG +\li FL_DND_LEAVE +\li FL_DND_RELEASE +\li FL_PASTE + +\section subclassing_fl_window Making a subclass of Fl_Window + +You may want your widget to be a subclass of +Fl_Window, Fl_Double_Window, or +FL_Gl_Window. This can be useful if your widget wants +to occupy an entire window, and can also be used to take +advantage of system-provided clipping, or to work with a library +that expects a system window ID to indicate where to draw. + +Subclassing Fl_Windowis almost exactly like +subclassing Fl_Group, and in fact you can easily +switch a subclass back and forth. Watch out for the following +differences: + +-# Fl_Window is a subclass of Fl_Group so + make sure your constructor calls end() + unless you actually want children added to your window. + +-# When handling events and drawing, the upper-left corner is at + 0,0, not x(),y() as in other Fl_Widget's. + For instance, to draw a box around the widget, call + draw_box(0, 0, w(), h()), rather than + draw_box(x(), y(), w(), h()). + +You may also want to subclass Fl_Window in order to +get access to different visuals or to change other attributes of +the windows. See +"Appendix F - Operating System Issues" +for more information. + +\htmlonly +
+[Index]    +[Previous]  6 - Handling Events  +[Next]  8 - Using OpenGL  +\endhtmlonly +*/ diff --git a/documentation/src/symbols.gif b/documentation/src/symbols.gif new file mode 100644 index 000000000..54bda5b44 Binary files /dev/null and b/documentation/src/symbols.gif differ diff --git a/documentation/src/tabs.gif b/documentation/src/tabs.gif new file mode 100644 index 000000000..c347cba15 Binary files /dev/null and b/documentation/src/tabs.gif differ diff --git a/documentation/src/text.gif b/documentation/src/text.gif new file mode 100644 index 000000000..65a56da97 Binary files /dev/null and b/documentation/src/text.gif differ diff --git a/documentation/src/tiny.gif b/documentation/src/tiny.gif new file mode 100644 index 000000000..df06e15df Binary files /dev/null and b/documentation/src/tiny.gif differ diff --git a/documentation/src/unicode.dox b/documentation/src/unicode.dox new file mode 100644 index 000000000..9ce998bbb --- /dev/null +++ b/documentation/src/unicode.dox @@ -0,0 +1,82 @@ +/** + + \page unicode 11 - Unicode and utf-8 Support + +This chapter explains how FLTK handles international +text via Unicode and utf-8. + +Unicode support was only recently added to FLTK and is +still incomplete. This chapter is Work in Progress, reflecting +the current state of Unicode support. + +\section unicode_about About Unicode and utf-8 + +The Unicode Standard is a worldwide accepted charatcer encoding +standard. Unicode provides access to over 100,000 characters +used in all the major languages written today. + +Utf-8 encodes all Unicode characters into variable length +sequences of bytes. Unicode characters in the 7-bit ASCII +range map to the same value in utf-8, making the transformation +to Unicode quick and easy. + +Moving from ASCII encoding to Unicode will allow all new FLTK +applications to be easily internationalized and and used all +over the world. By choosing utf-8 encoding, FLTK remains +largely source-code compatible to previous iteration of the +library. + +\section unicode_in_fltk Unicode in FLTK + +FLTK will be entirely converted to Unicode in utf-8 encoding. +If a different encoding is required by the underlying operatings +system, FLTK will convert string as needed. + +\par TODO: + +\li more doc on unicode, add links +\li write something about filename encoding on OS X... +\li explain the fl_utf8_... commands +\li explain issues with Fl_Preferences +\li why FLTK has no Fl_String class + +\par DONE: + +\li initial transfer of the Ian/O'ksi'D patch +\li adapted Makefiles and IDEs for available platforms +\li hacked some Unicode keybard entry for OS X + +\par ISSUES: + +\li IDEs: + - Makefile support: tested on Fedora Core 5 and OS X, but heaven knows + on which platforms this may fail + - Xcode: tested, seems to be working (but see comments below on OS X) + - VisualC (VC6): tested, test/utf8 works, but may have had some issues + during merge. Some additional work needed (imm32.lib) + - VisualStudio2005: tested, test/utf8 works, some addtl. work needed + (imm32.lib) + - VisualCNet: sorry, I have no longer access to that IDE + - Borland and other compiler: sorry, I can't update those + +\li Platforms: + - you will encounter problems on all platforms! + - X11: many characters are missing, but that may be related to bad + fonts on my machine. I also could not do any keyboard tests yet. + Rendering seems to generally work ok. + - Win32: US and German keyboard worked ok, but no compositing was + tested. Rendering looks pretty good. + - OS X: redering looks good. Keyboard is completely messed up, even in + US setting (with Alt key) + - all: while merging I have seen plenty of places that are not + entirley utf8-safe, particularly Fl_Input, Fl_Text_Editor, and + Fl_Help_View. Keycodes from the keyboard conflict with Unicode + characters. Right-to-left rendered text can not be marked or edited, + and probably much more. +\htmlonly +
+[Index]    +[Previous]  10 - Advanced FLTK   +[Next]  A - Class Reference +\endhtmlonly +*/ diff --git a/documentation/src/valuators.gif b/documentation/src/valuators.gif new file mode 100644 index 000000000..a2de73801 Binary files /dev/null and b/documentation/src/valuators.gif differ diff --git a/documentation/src/value_slider.gif b/documentation/src/value_slider.gif new file mode 100644 index 000000000..13fec43ba Binary files /dev/null and b/documentation/src/value_slider.gif differ -- cgit v1.2.3